From 3a7e22ce713122ba623bf5d50462fbf6cda97388 Mon Sep 17 00:00:00 2001 From: qianlishi <1432731663@qq.com> Date: Thu, 1 Jul 2021 12:53:57 +0800 Subject: [PATCH] update upload --- report-ui/src/assets/styles/index.scss | 184 ++++++------ .../bigscreen/designer/form/customUpload.vue | 60 ++++ .../bigscreen/designer/form/dynamicForm.vue | 14 +- .../views/report/bigscreen/designer/index.vue | 272 ++++++++++-------- .../views/report/bigscreen/designer/tools.js | 4 +- .../bigscreen/designer/widget/widgetImage.vue | 87 +++--- 6 files changed, 372 insertions(+), 249 deletions(-) create mode 100644 report-ui/src/views/report/bigscreen/designer/form/customUpload.vue diff --git a/report-ui/src/assets/styles/index.scss b/report-ui/src/assets/styles/index.scss index 4611a1f5..480a6ef0 100644 --- a/report-ui/src/assets/styles/index.scss +++ b/report-ui/src/assets/styles/index.scss @@ -1,15 +1,16 @@ -@import './variables.scss'; -@import './mixin.scss'; -@import './transition.scss'; -@import './element-ui.scss'; -@import './sidebar.scss'; +@import "./variables.scss"; +@import "./mixin.scss"; +@import "./transition.scss"; +@import "./element-ui.scss"; +@import "./sidebar.scss"; body { height: 100%; -moz-osx-font-smoothing: grayscale; -webkit-font-smoothing: antialiased; text-rendering: optimizeLegibility; - font-family: Helvetica Neue, Helvetica, PingFang SC, Hiragino Sans GB, Microsoft YaHei, Arial, sans-serif; + font-family: Helvetica Neue, Helvetica, PingFang SC, Hiragino Sans GB, + Microsoft YaHei, Arial, sans-serif; } label { @@ -21,7 +22,7 @@ html { box-sizing: border-box; } -#app{ +#app { height: 100%; } @@ -40,9 +41,9 @@ a:hover { text-decoration: none; } -div:focus{ +div:focus { outline: none; - } +} a:focus, a:active { @@ -69,8 +70,8 @@ a:hover { } //main-container全局样式 -.app-main{ - min-height: 100% +.app-main { + min-height: 100%; } .app-container { @@ -85,27 +86,27 @@ a:hover { margin-bottom: 10px; } } -.float-r{ +.float-r { float: right; } -.float-l{ +.float-l { float: left; } /*日志折叠面板定制*/ -.log .el-collapse{ - border-top:0; - border-bottom:0; +.log .el-collapse { + border-top: 0; + border-bottom: 0; } .log .el-collapse-item__header { height: 40px; line-height: 40px; cursor: pointer; border: 1px solid #fff; - background:rgba(145,163,177,.15); + background: rgba(145, 163, 177, 0.15); font-size: 14px; color: #666; - -webkit-transition: border-bottom-color .3s; - transition: border-bottom-color .3s; + -webkit-transition: border-bottom-color 0.3s; + transition: border-bottom-color 0.3s; outline: 0; padding: 0 20px; } @@ -115,90 +116,92 @@ a:hover { -webkit-box-sizing: border-box; box-sizing: border-box; border-bottom: 1px solid #fff; - background: #263C7C; - + background: #263c7c; } -.log .el-collapse-item__content{ +.log .el-collapse-item__content { font-size: 14px; - color: #FFFFFF; + color: #ffffff; padding: 20px; } -.log .el-collapse-item__arrow{ +.log .el-collapse-item__arrow { margin-top: 14px; float: right; margin-right: -77px; } -.log .icon-btn_style, .log .icon-btn_style:hover { +.log .icon-btn_style, +.log .icon-btn_style:hover { background: none; border: 0; padding: 0; } //大屏展示的一些样式 -.my-dialog{ - .el-dialog{ - background: #062B69; - border:1px solid #5DDAF6 +.my-dialog { + .el-dialog { + background: #062b69; + border: 1px solid #5ddaf6; } - .el-dialog__header{ - border-bottom:1px solid #5DDAF6; + .el-dialog__header { + border-bottom: 1px solid #5ddaf6; text-align: center; } - .el-dialog__title{ - color: #5CDCF9; + .el-dialog__title { + color: #5cdcf9; } - .el-input__inner{ - background:#091E43; - border-color: #254E97; + .el-input__inner { + background: #091e43; + border-color: #254e97; } - .el-date-editor .el-range__icon{ - color: #5CDCF9; + .el-date-editor .el-range__icon { + color: #5cdcf9; } input { - background:#091E43; + background: #091e43; } - .el-date-editor .el-range-input{ - color: #5CDCF9; + .el-date-editor .el-range-input { + color: #5cdcf9; } - .form-handle{ - .el-form-item__label{ - color: #5CDCF9; + .form-handle { + .el-form-item__label { + color: #5cdcf9; font-weight: 500; } } - .el-form-item{ + .el-form-item { margin-bottom: 10px; } - .el-textarea__inner,.el-select:hover .el-input__inner{ - background-color: #091E43; - border-color: #254E97; - border-bottom:1px solid #254E97; + .el-textarea__inner, + .el-select:hover .el-input__inner { + background-color: #091e43; + border-color: #254e97; + border-bottom: 1px solid #254e97; } - .el-button--blue{ - color: #FFF; + .el-button--blue { + color: #fff; background-color: #224788; border-color: #224788; } - .el-button--green{ - color: #FFF; - background-color: #2092AD; - border-color: #2092AD; + .el-button--green { + color: #fff; + background-color: #2092ad; + border-color: #2092ad; } } -.el-input--prefix .el-input__inner{ +.el-input--prefix .el-input__inner { padding-left: 45px; } -.el-input-group__append, .el-input-group__prepend{ +.el-input-group__append, +.el-input-group__prepend { color: #333; } //avue -.preview-form{ - height: auto!important; - overflow-y: auto!important; +.preview-form { + height: auto !important; + overflow-y: auto !important; } -.x-spreadsheet-toolbar-btns{ +.x-spreadsheet-toolbar-btns { margin-left: 30px !important; } -.ml10{ +.ml10 { margin-left: 10px; } @@ -208,77 +211,80 @@ a:hover { color: black; direction: ltr; } -.jsoneditor-vue{ +.jsoneditor-vue { height: 100%; } .printSet { - background-image: url('../images/bianzu.png') !important; + background-image: url("../images/bianzu.png") !important; background-size: 19px; background-position: left top; background-repeat: no-repeat; position: absolute; - opacity: 1!important; + opacity: 1 !important; } .qrCodes { - background-image: url('../images/qrcode.png') !important; + background-image: url("../images/qrcode.png") !important; background-size: 19px; background-position: left top; background-repeat: no-repeat; position: absolute; - opacity: 1!important; + opacity: 1 !important; } .barCodes { - background-image: url('../images/tiaoxingma.png') !important; + background-image: url("../images/tiaoxingma.png") !important; background-size: 19px; background-position: left top; background-repeat: no-repeat; position: absolute; - opacity: 1!important; + opacity: 1 !important; } .collapse-input-style { - .el-input__inner ,.el-textarea__inner{ + .el-input__inner, + .el-textarea__inner { background: #263445 !important; border: 1px solid #3f5673; - color:#a8e3ff + color: #a8e3ff; } - .el-slider__runway{ + .el-slider__runway { height: 2px; - background-color:#5e6b82 + background-color: #5e6b82; } - .el-slider__bar{ + .el-slider__bar { height: 2px; } - .el-slider__button-wrapper{ + .el-slider__button-wrapper { top: -17px; } - .el-slider__button{ + .el-slider__button { width: 14px; height: 14px; } - .el-switch__core{ - background-color:#5e6b82; + .el-switch__core { + background-color: #5e6b82; border: 1px solid #3f5673; } - .el-input-group__append, .el-input-group__prepend{ + .el-input-group__append, + .el-input-group__prepend { background: #5e6b82 !important; border: 1px solid #3f5673; - color:#a8e3ff + color: #a8e3ff; } - .el-input-number__increase, .el-input-number__decrease{ + .el-input-number__increase, + .el-input-number__decrease { background: #5e6b82 !important; border: 1px solid #3f5673; - color:#a8e3ff + color: #a8e3ff; } - .el-input-number.is-controls-right .el-input-number__increase{ + .el-input-number.is-controls-right .el-input-number__increase { height: 15px; border-bottom: 1px solid #3f5673; } - .el-input-number.is-controls-right .el-input-number__decrease{ + .el-input-number.is-controls-right .el-input-number__decrease { border-left: 1px solid #3f5673; } .el-form-item__label { font-size: 12px; - color: #bfcbd9!important; + color: #bfcbd9 !important; font-weight: normal !important; } } @@ -286,7 +292,7 @@ a:hover { line-height: 30px !important; height: 30px; } -.el-form-item__content { - line-height: 30px !important; - height: 30px; -} \ No newline at end of file +// .el-form-item__content { +// line-height: 30px !important; +// height: 30px; +// } diff --git a/report-ui/src/views/report/bigscreen/designer/form/customUpload.vue b/report-ui/src/views/report/bigscreen/designer/form/customUpload.vue new file mode 100644 index 00000000..656dc6a9 --- /dev/null +++ b/report-ui/src/views/report/bigscreen/designer/form/customUpload.vue @@ -0,0 +1,60 @@ + + + diff --git a/report-ui/src/views/report/bigscreen/designer/form/dynamicForm.vue b/report-ui/src/views/report/bigscreen/designer/form/dynamicForm.vue index 6adb843c..2cf7479c 100644 --- a/report-ui/src/views/report/bigscreen/designer/form/dynamicForm.vue +++ b/report-ui/src/views/report/bigscreen/designer/form/dynamicForm.vue @@ -61,12 +61,10 @@ v-model="formData[item.name]" @change="val => changed(val, item.name)" /> - - @@ -192,7 +227,7 @@ export default { dynamicForm, contentMenu }, - data () { + data() { return { layerWidget: [], widgetTools: widgetTools, // 左侧工具栏的组件图标,将js变量加入到当前作用域 @@ -259,7 +294,7 @@ export default { }, computed: { // 左侧折叠切换时,动态计算中间区的宽度 - middleWidth () { + middleWidth() { var widthLeftAndRight = 0; if (this.toolIsShow) { widthLeftAndRight += this.widthLeftForTools; // 左侧工具栏宽度 @@ -270,36 +305,37 @@ export default { var middleWidth = this.bodyWidth - widthLeftAndRight; return middleWidth; }, - middleHeight () { + middleHeight() { return this.bodyHeight; }, // 设计台按大屏的缩放比例 - bigscreenScaleInWorkbench () { + bigscreenScaleInWorkbench() { var widthScale = this.middleWidth / this.bigscreenWidth; var heightScale = this.middleHeight / this.bigscreenHeight; return Math.min(widthScale, heightScale); }, - workbenchTransform () { - return `scale(${this.bigscreenScaleInWorkbench}, ${this.bigscreenScaleInWorkbench - })`; + workbenchTransform() { + return `scale(${this.bigscreenScaleInWorkbench}, ${ + this.bigscreenScaleInWorkbench + })`; }, // 大屏在设计模式的大小 - bigscreenWidthInWorkbench () { + bigscreenWidthInWorkbench() { return this.getPXUnderScale(this.bigscreenWidth); }, - bigscreenHeightInWorkbench () { + bigscreenHeightInWorkbench() { return this.getPXUnderScale(this.bigscreenHeight); } }, watch: { widgets: { - handler (val) { + handler(val) { this.handlerLayerWidget(val); }, deep: true } }, - mounted () { + mounted() { // 一进入时,加载屏幕配置属性 this.setOptionsOnClickScreen(); @@ -308,7 +344,7 @@ export default { this.widgets = []; }, methods: { - handlerLayerWidget (val) { + handlerLayerWidget(val) { const layerWidgetArr = []; for (let i = 0; i < val.length; i++) { const obj = {}; @@ -323,7 +359,7 @@ export default { } this.layerWidget = layerWidgetArr; }, - async initEchartData () { + async initEchartData() { const reportCode = this.$route.query.reportCode; const { code, data } = await detailDashboard(reportCode); if (code != 200) return; @@ -332,7 +368,7 @@ export default { this.widgets = processData; this.dashboard = screenData; }, - handleBigScreen (data) { + handleBigScreen(data) { const optionScreen = this.deepClone(getToolByCode("screen").options); const setup = optionScreen.setup; for (const key in data) { @@ -350,7 +386,7 @@ export default { width: data.width }; }, - handleInitEchartsData (data) { + handleInitEchartsData(data) { const widgets = data.dashboard.widgets; const widgetsData = []; for (let i = 0; i < widgets.length; i++) { @@ -370,7 +406,7 @@ export default { } return widgetsData; }, - handleOptionsData (data, option) { + handleOptionsData(data, option) { for (const key in data.setup) { for (let i = 0; i < option.setup.length; i++) { let item = option.setup[i]; @@ -409,7 +445,7 @@ export default { return option; }, // 保存数据 - async saveData () { + async saveData() { if (!this.widgets || this.widgets.length == 0) { this.$message.error("请添加组件"); return; @@ -431,7 +467,7 @@ export default { } }, // 预览 - viewScreen () { + viewScreen() { var routeUrl = this.$router.resolve({ path: "/bigscreen/viewer", query: { reportCode: this.$route.query.reportCode } @@ -439,12 +475,12 @@ export default { window.open(routeUrl.href, "_blank"); }, // 在缩放模式下的大小 - getPXUnderScale (px) { + getPXUnderScale(px) { return this.bigscreenScaleInWorkbench * px; }, // 拖动一个组件放到工作区中去,在拖动结束时,放到工作区对应的坐标点上去 - widgetOnDragged (evt, widgetCode) { + widgetOnDragged(evt, widgetCode) { var widgetType = widgetCode; // 获取结束坐标和列名 @@ -485,7 +521,7 @@ export default { }, // 对组件默认值处理 - handleDefaultValue (widgetJson) { + handleDefaultValue(widgetJson) { for (const key in widgetJson) { if (key == "options") { // collapse、data、position、setup @@ -525,12 +561,12 @@ export default { } return widgetJson; }, - layerClick (index) { + layerClick(index) { this.widgetIndex = index; this.widgetsClick(index); }, // 如果是点击大屏设计器中的底层,加载大屏底层属性 - setOptionsOnClickScreen () { + setOptionsOnClickScreen() { this.screenCode = "screen"; // 选中不同的组件 右侧都显示第一栏 this.activeName = "first"; @@ -538,7 +574,7 @@ export default { }, // 如果是点击某个组件,获取该组件的配置项 - setOptionsOnClickWidget (obj) { + setOptionsOnClickWidget(obj) { this.screenCode = ""; if (typeof obj == "number") { this.widgetOptions = this.deepClone(this.widgets[obj]["options"]); @@ -558,7 +594,7 @@ export default { }); this.widgetOptions = this.deepClone(this.widgets[obj.index]["options"]); }, - widgetsClick (index) { + widgetsClick(index) { const draggableArr = this.$refs.widgets; for (let i = 0; i < draggableArr.length; i++) { if (i == index) { @@ -569,14 +605,14 @@ export default { } this.setOptionsOnClickWidget(index); }, - handleMouseDown () { + handleMouseDown() { const draggableArr = this.$refs.widgets; for (let i = 0; i < draggableArr.length; i++) { this.$refs.widgets[i].$refs.draggable.setActive(false); } }, // 将当前选中的组件,右侧属性值更新 - widgetValueChanged (key, val) { + widgetValueChanged(key, val) { if (this.screenCode == "screen") { this.dashboard = this.deepClone(val); } else { @@ -588,7 +624,7 @@ export default { } } }, - rightClick (event, index) { + rightClick(event, index) { this.rightClickIndex = index; const left = event.clientX; const top = event.clientY; @@ -602,10 +638,10 @@ export default { this.visibleContentMenu = true; return false; }, - deletelayer () { + deletelayer() { this.widgets.splice(this.rightClickIndex, 1); }, - setDefaultValue (options, val) { + setDefaultValue(options, val) { for (let i = 0; i < options.length; i++) { if (Object.prototype.toString.call(options[i]) == "[object Object]") { for (const k in val) { diff --git a/report-ui/src/views/report/bigscreen/designer/tools.js b/report-ui/src/views/report/bigscreen/designer/tools.js index 5aed4c27..17f20bf4 100644 --- a/report-ui/src/views/report/bigscreen/designer/tools.js +++ b/report-ui/src/views/report/bigscreen/designer/tools.js @@ -666,12 +666,12 @@ const widgetTools = [ value: '0' }, { - type: 'el-input-text', + type: 'custom-upload', label: '图片地址', name: 'imageAdress', required: false, placeholder: '', - value: 'http://pic.ik123.com/uploads/allimg/190813/12-1ZQ3095508.jpg', + value: [{url: 'http://pic.ik123.com/uploads/allimg/190813/12-1ZQ3095508.jpg'}], }, { type: 'vue-color', diff --git a/report-ui/src/views/report/bigscreen/designer/widget/widgetImage.vue b/report-ui/src/views/report/bigscreen/designer/widget/widgetImage.vue index 1abf8667..bab0c0ce 100644 --- a/report-ui/src/views/report/bigscreen/designer/widget/widgetImage.vue +++ b/report-ui/src/views/report/bigscreen/designer/widget/widgetImage.vue @@ -1,5 +1,12 @@