Merge branch 'master' of github.com:gcpaas/DataRoom

main
liu.tao3 2 years ago
commit c9248286e2

@ -6,7 +6,7 @@
<parent>
<groupId>com.gccloud</groupId>
<artifactId>dataroom</artifactId>
<version>1.0.1.2023072001.Alpha</version>
<version>1.0.1.2023072401.Alpha</version>
</parent>
<artifactId>dataroom-core</artifactId>

@ -6,7 +6,7 @@
<parent>
<groupId>com.gccloud</groupId>
<artifactId>dataroom</artifactId>
<version>1.0.1.2023072001.Alpha</version>
<version>1.0.1.2023072401.Alpha</version>
</parent>
<artifactId>dataroom-server</artifactId>
@ -22,7 +22,7 @@
<dependency>
<groupId>com.gccloud</groupId>
<artifactId>dataroom-core</artifactId>
<version>1.0.1.2023072001.Alpha</version>
<version>1.0.1.2023072401.Alpha</version>
</dependency>
<dependency>
<groupId>io.springfox</groupId>

@ -12,7 +12,7 @@
<groupId>com.gccloud</groupId>
<artifactId>dataroom</artifactId>
<version>1.0.1.2023072001.Alpha</version>
<version>1.0.1.2023072401.Alpha</version>
<packaging>pom</packaging>
<description>基于G2Plot、Echarts的大屏设计服务端具备设计、预览能力支持MySQL、Oracle、PostgreSQL、Groovy等数据集接入
@ -60,7 +60,7 @@
<clickhouse.version>0.3.2</clickhouse.version>
<commons-io.version>2.2</commons-io.version>
<okhttp3.version>4.9.1</okhttp3.version>
<dataset.core.version>1.0.1.2023072001.Alpha</dataset.core.version>
<dataset.core.version>1.0.1.2023072401.Alpha</dataset.core.version>
</properties>
<dependencyManagement>

@ -1,6 +1,6 @@
{
"name": "@gcpaas/data-room-ui",
"version": "1.0.1-2023071901-Alpha",
"version": "1.0.1-2023072003-Alpha",
"lockfileVersion": 1,
"requires": true,
"dependencies": {
@ -2445,11 +2445,6 @@
"integrity": "sha512-a5Sab1C4/icpTZVzZc5Ghpz88yQtGOyNqYXcZgOssB2uuAr+wF/MvN6bgtW32q7HHrvBki+BsZ0OuNv6EV3K9g==",
"dev": true
},
"@popperjs/core": {
"version": "npm:@sxzz/popperjs-es@2.11.7",
"resolved": "https://registry.npmjs.org/@sxzz/popperjs-es/-/popperjs-es-2.11.7.tgz",
"integrity": "sha512-Ccy0NlLkzr0Ex2FKvh2X+OyERHXJ88XJ1MXtsI9y9fGexlaXaVTPzBCRBwIxFkORuOb+uBqeu+RqnpgYTEZRUQ=="
},
"@sideway/address": {
"version": "4.1.4",
"resolved": "https://registry.npmmirror.com/@sideway/address/-/address-4.1.4.tgz",
@ -3351,27 +3346,6 @@
"whatwg-fetch": "^3.6.2"
},
"dependencies": {
"@vue/vue-loader-v15": {
"version": "npm:vue-loader@15.10.1",
"resolved": "https://registry.npmjs.org/vue-loader/-/vue-loader-15.10.1.tgz",
"integrity": "sha512-SaPHK1A01VrNthlix6h1hq4uJu7S/z0kdLUb6klubo738NeQoLbS6V9/d8Pv19tU0XdQKju3D1HSKuI8wJ5wMA==",
"dev": true,
"requires": {
"@vue/component-compiler-utils": "^3.1.0",
"hash-sum": "^1.0.2",
"loader-utils": "^1.1.0",
"vue-hot-reload-api": "^2.3.0",
"vue-style-loader": "^4.1.0"
},
"dependencies": {
"hash-sum": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/hash-sum/-/hash-sum-1.0.2.tgz",
"integrity": "sha512-fUs4B4L+mlt8/XAtSOGMUO1TXmAelItBPtJG7CyHJfYTdDjwisntGO2JQz7oUsatOY9o68+57eziUVNw/mRHmA==",
"dev": true
}
}
},
"acorn-walk": {
"version": "8.2.0",
"resolved": "https://registry.npmmirror.com/acorn-walk/-/acorn-walk-8.2.0.tgz",
@ -3443,26 +3417,6 @@
"tapable": "^2.0.0"
}
},
"json5": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/json5/-/json5-1.0.2.tgz",
"integrity": "sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==",
"dev": true,
"requires": {
"minimist": "^1.2.0"
}
},
"loader-utils": {
"version": "1.4.2",
"resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.2.tgz",
"integrity": "sha512-I5d00Pd/jwMD2QCduo657+YM/6L3KZu++pmX9VFncxaxvHcru9jx1lBaFft+r4Mt2jK0Yhp41XlRAihzPxHNCg==",
"dev": true,
"requires": {
"big.js": "^5.2.2",
"emojis-list": "^3.0.0",
"json5": "^1.0.1"
}
},
"ms": {
"version": "2.1.2",
"resolved": "https://registry.npmmirror.com/ms/-/ms-2.1.2.tgz",
@ -3779,6 +3733,47 @@
"lodash": "^4.17.4"
}
},
"@vue/vue-loader-v15": {
"version": "npm:vue-loader@15.10.1",
"resolved": "https://registry.npmjs.org/vue-loader/-/vue-loader-15.10.1.tgz",
"integrity": "sha512-SaPHK1A01VrNthlix6h1hq4uJu7S/z0kdLUb6klubo738NeQoLbS6V9/d8Pv19tU0XdQKju3D1HSKuI8wJ5wMA==",
"dev": true,
"requires": {
"@vue/component-compiler-utils": "^3.1.0",
"hash-sum": "^1.0.2",
"loader-utils": "^1.1.0",
"vue-hot-reload-api": "^2.3.0",
"vue-style-loader": "^4.1.0"
},
"dependencies": {
"hash-sum": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/hash-sum/-/hash-sum-1.0.2.tgz",
"integrity": "sha512-fUs4B4L+mlt8/XAtSOGMUO1TXmAelItBPtJG7CyHJfYTdDjwisntGO2JQz7oUsatOY9o68+57eziUVNw/mRHmA==",
"dev": true
},
"json5": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/json5/-/json5-1.0.2.tgz",
"integrity": "sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==",
"dev": true,
"requires": {
"minimist": "^1.2.0"
}
},
"loader-utils": {
"version": "1.4.2",
"resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.2.tgz",
"integrity": "sha512-I5d00Pd/jwMD2QCduo657+YM/6L3KZu++pmX9VFncxaxvHcru9jx1lBaFft+r4Mt2jK0Yhp41XlRAihzPxHNCg==",
"dev": true,
"requires": {
"big.js": "^5.2.2",
"emojis-list": "^3.0.0",
"json5": "^1.0.1"
}
}
}
},
"@vue/vue2-jest": {
"version": "27.0.0",
"resolved": "https://registry.npmmirror.com/@vue/vue2-jest/-/vue2-jest-27.0.0.tgz",
@ -3993,9 +3988,9 @@
}
},
"@wjjj/utils": {
"version": "0.1.2",
"resolved": "https://registry.npmjs.org/@wjjj/utils/-/utils-0.1.2.tgz",
"integrity": "sha512-ha0TIHwBYvvfOxMdeKyr0odWB12Tdv+C2kGUepDh74Ktm6uR5vq25QmMYNt6nMN/bH3KuPH82ynlDvfK+slZfg==",
"version": "0.1.5",
"resolved": "https://registry.npmjs.org/@wjjj/utils/-/utils-0.1.5.tgz",
"integrity": "sha512-TW2m6BXUuP089GBB8BAHpeb+eJoRpMzhiGt1gUibvCQUwze7Coamlio1rHkTnBaRGs0JLhE6ToTMrjqJowfNgQ==",
"requires": {
"element-plus": "^2.3.8",
"npm": "^9.8.0",
@ -7737,6 +7732,11 @@
"normalize-wheel-es": "^1.2.0"
},
"dependencies": {
"@popperjs/core": {
"version": "npm:@sxzz/popperjs-es@2.11.7",
"resolved": "https://registry.npmjs.org/@sxzz/popperjs-es/-/popperjs-es-2.11.7.tgz",
"integrity": "sha512-Ccy0NlLkzr0Ex2FKvh2X+OyERHXJ88XJ1MXtsI9y9fGexlaXaVTPzBCRBwIxFkORuOb+uBqeu+RqnpgYTEZRUQ=="
},
"async-validator": {
"version": "4.2.5",
"resolved": "https://registry.npmjs.org/async-validator/-/async-validator-4.2.5.tgz",

@ -1,6 +1,6 @@
{
"name": "@gcpaas/data-room-ui",
"version": "1.0.1-2023072001-Alpha",
"version": "1.0.1-2023072402-Alpha",
"description": "自定义大屏",
"author": "gcpaas",
"license": "MIT",
@ -53,7 +53,7 @@
"@amap/amap-jsapi-loader": "^1.0.1",
"@antv/g2plot": "2.4.0",
"@jiaminghi/data-view": "2.10.0",
"@wjjj/utils": "^0.1.2",
"@wjjj/utils": "^0.1.5",
"axios": "0.18.1",
"babel-polyfill": "6.26.0",
"echarts": "^5.2.2",

@ -15,7 +15,6 @@ import * as echarts from 'echarts'
import commonMixins from 'data-room-ui/js/mixins/commonMixins.js'
import paramsMixins from 'data-room-ui/js/mixins/paramsMixins'
import linkageMixins from 'data-room-ui/js/mixins/linkageMixins'
import { get } from 'data-room-ui/js/utils/http'
export default {
name: 'MapCharts',
mixins: [paramsMixins, commonMixins, linkageMixins],
@ -60,7 +59,7 @@ export default {
},
methods: {
chartInit () {
let config = this.config
const config = this.config
// keycodelist
if (this.config.code === this.config.key || this.isPreview) {
//
@ -255,20 +254,9 @@ export default {
}
}
const mapUrl = `${window.BS_CONFIG?.httpConfigs?.baseURL}/static/chinaMap/${config.customize.level}/${config.customize.dataMap}`
const map = await get(decodeURI(mapUrl), {}, true)
const map = await this.$dataRoomAxios.get(decodeURI(mapUrl), {}, true)
echarts.registerMap(config.customize.scope, map)
this.charts.setOption(option)
// this.charts.on('click', (params) => {
// get(
// `${window.BS_CONFIG?.httpConfigs?.baseURL}/static/chinaMap/province/${params.name}.json`,
// {},
// true
// ).then((res) => {
// option.geo.map = params.name
// echarts.registerMap(params.name, res)
// this.charts.setOption(option, true)
// })
// })
}
}
}

@ -227,7 +227,6 @@ import SettingTitle from 'data-room-ui/SettingTitle/index.vue'
import { chartSettingMixins } from 'data-room-ui/js/mixins/chartSettingMixins'
import ColorSelect from 'data-room-ui/ColorMultipleSelect/index.vue'
import ColorPicker from 'data-room-ui/ColorPicker/index.vue'
import { get } from 'data-room-ui/js/utils/http'
import PosWhSetting from 'data-room-ui/BigScreenDesign/RightSetting/PosWhSetting.vue'
export default {
name: 'BarSetting',
@ -271,9 +270,7 @@ export default {
},
methods: {
getMapList () {
get(
`${window.BS_CONFIG?.httpConfigs?.baseURL}/bigScreen/design/map/list/${this.config.customize.level}`
).then((res) => {
this.$dataRoomAxios.get(`${window.BS_CONFIG?.httpConfigs?.baseURL}/bigScreen/design/map/list/${this.config.customize.level}`).then((res) => {
this.mapList = res
})
},
@ -286,6 +283,7 @@ export default {
}
},
delColor () {
this.colors = []
this.config.customize.rangeColor = []
},
addColor () {

@ -66,6 +66,7 @@
>
<el-date-picker
v-model="config.endTime"
style="position: relative;"
popper-class="bs-el-date-picker"
type="datetime"
align="left"

@ -1,37 +1,96 @@
<template>
<el-dialog title="组件库" :visible.sync="dialogVisible" width="80%" :modal="true" :modal-append-to-body="false"
:appen-to-body="true" class="bs-dialog-wrap bs-el-dialog" @closed="close">
<el-dialog
title="组件库"
:visible.sync="dialogVisible"
width="80%"
:modal="true"
:modal-append-to-body="false"
:appen-to-body="true"
class="bs-dialog-wrap bs-el-dialog"
@closed="close"
>
<div class="content">
<el-tabs v-model="activeName">
<el-tab-pane label="自定义组件" name="combination">
<el-tab-pane
label="自定义组件"
name="combination"
>
<div class="big-screen-list-wrap">
<div class="top-search-wrap">
<el-input v-model="searchKey" class="bs-el-input" placeholder="请输入组件名称" prefix-icon="el-icon-search"
clearable @clear="reSearch" @keyup.enter.native="reSearch" />
<el-select v-model="code" class="bs-el-select" popper-class="bs-el-select" placeholder="请选择分组" clearable
@change="reSearch">
<el-option v-for="item in options" :key="item.code" :label="item.name" :value="item.code" />
<el-input
v-model="searchKey"
class="bs-el-input"
placeholder="请输入组件名称"
prefix-icon="el-icon-search"
clearable
@clear="reSearch"
@keyup.enter.native="reSearch"
/>
<el-select
v-model="code"
class="bs-el-select"
popper-class="bs-el-select"
placeholder="请选择分组"
clearable
@change="reSearch"
>
<el-option
v-for="item in options"
:key="item.code"
:label="item.name"
:value="item.code"
/>
</el-select>
<el-button size="small" style="margin-right: 20px" type="primary" @click="reSearch">
<el-button
size="small"
style="margin-right: 20px"
type="primary"
@click="reSearch"
>
搜索
</el-button>
</div>
<div v-if="list.length !== 0" v-loading="loading" class="list-wrap bs-scrollbar" element-loading-text=""
<div
v-if="list.length !== 0"
v-loading="loading"
class="list-wrap bs-scrollbar"
element-loading-text="加载中"
:style="{
display: gridComputed ? 'grid' : 'flex',
justifyContent: gridComputed ? 'space-around' : 'flex-start'
}">
}"
>
<!-- <div v-if="list.length !== 0"> -->
<div v-for="screen in list" :key="screen.id" class="big-screen-card-wrap" :style="{
<div
v-for="screen in list"
:key="screen.id"
class="big-screen-card-wrap"
:style="{
width: gridComputed ? 'auto' : '290px'
}" @click="chooseComponent(screen)">
<div :class="focus.id == screen.id ? 'focus' : ''" class="big-screen-card-inner">
}"
@click="chooseComponent(screen)"
>
<div
:class="focus.id == screen.id ? 'focus' : ''"
class="big-screen-card-inner"
>
<div class="big-screen-card-img">
<el-image :src="screen.coverPicture" fit="contain" style="width: 100%; height: 100%">
<div slot="placeholder" class="image-slot">
<el-image
:src="screen.coverPicture"
fit="contain"
style="width: 100%; height: 100%"
>
<div
slot="placeholder"
class="image-slot"
>
加载中···
</div>
<div slot="error" class="image-slot" style="font-size: 20px">
<div
slot="error"
class="image-slot"
style="font-size: 20px"
>
<div class="error-img-text">
{{ screen.name }}
</div>
@ -39,55 +98,122 @@
</el-image>
</div>
<div class="big-screen-bottom">
<div class="left-bigscreen-title" :title="screen.name">
<div
class="left-bigscreen-title"
:title="screen.name"
>
{{ screen.name }}
</div>
</div>
</div>
</div>
</div>
<div v-else class="empty">
<div
v-else
class="empty"
>
暂无数据
</div>
<div class="footer-pagination-wrap">
<div class="bs-pagination">
<el-pagination class="bs-el-pagination" popper-class="bs-el-pagination" background
layout="total, prev, pager, next, sizes" :page-size="size" prev-text="上一页" next-text="下一页"
:total="totalCount" :page-sizes="[10, 20, 50, 100]" :current-page="current"
@current-change="currentChangeHandle" @size-change="sizeChangeHandle" />
<el-pagination
class="bs-el-pagination"
popper-class="bs-el-pagination"
background
layout="total, prev, pager, next, sizes"
:page-size="size"
prev-text="上一页"
next-text="下一页"
:total="totalCount"
:page-sizes="[10, 20, 50, 100]"
:current-page="current"
@current-change="currentChangeHandle"
@size-change="sizeChangeHandle"
/>
</div>
</div>
</div>
</el-tab-pane>
<el-tab-pane label="业务组件" name="bizComponent">
<el-tab-pane
label="业务组件"
name="bizComponent"
>
<div class="big-screen-list-wrap">
<div class="top-search-wrap">
<el-input v-model="name" class="bs-el-input" placeholder="请输入组件名称" prefix-icon="el-icon-search" clearable
@clear="reSearch" @keyup.enter.native="reSearch" />
<el-select v-model="code" class="bs-el-select" popper-class="bs-el-select" placeholder="请选择分组" clearable
@change="reSearch">
<el-option v-for="item in options" :key="item.code" :label="item.name" :value="item.code" />
<el-input
v-model="name"
class="bs-el-input"
placeholder="请输入组件名称"
prefix-icon="el-icon-search"
clearable
@clear="reSearch"
@keyup.enter.native="reSearch"
/>
<el-select
v-model="code"
class="bs-el-select"
popper-class="bs-el-select"
placeholder="请选择分组"
clearable
@change="reSearch"
>
<el-option
v-for="item in options"
:key="item.code"
:label="item.name"
:value="item.code"
/>
</el-select>
<el-button size="small" style="margin-right: 20px" type="primary" @click="reSearch">
<el-button
size="small"
style="margin-right: 20px"
type="primary"
@click="reSearch"
>
搜索
</el-button>
</div>
<div v-if="bizComponentList.length !== 0" v-loading="loading" class="list-wrap bs-scrollbar"
element-loading-text="加载中" :style="{
<div
v-if="bizComponentList.length !== 0"
v-loading="loading"
class="list-wrap bs-scrollbar"
element-loading-text="加载中"
:style="{
display: bizFridComputed ? 'grid' : 'flex',
justifyContent: bizFridComputed ? 'space-around' : 'flex-start'
}">
}"
>
<!-- <div v-if="list.length !== 0"> -->
<div v-for="screen in bizComponentList" :key="screen.id" class="big-screen-card-wrap" :style="{
<div
v-for="screen in bizComponentList"
:key="screen.id"
class="big-screen-card-wrap"
:style="{
width: bizFridComputed ? 'auto' : '290px'
}" @click="chooseComponent(screen)">
<div :class="focus.id == screen.id ? 'focus' : ''" class="big-screen-card-inner">
}"
@click="chooseComponent(screen)"
>
<div
:class="focus.id == screen.id ? 'focus' : ''"
class="big-screen-card-inner"
>
<div class="big-screen-card-img">
<el-image :src="screen.coverPicture" fit="contain" style="width: 100%; height: 100%">
<div slot="placeholder" class="image-slot">
<el-image
:src="screen.coverPicture"
fit="contain"
style="width: 100%; height: 100%"
>
<div
slot="placeholder"
class="image-slot"
>
加载中···
</div>
<div slot="error" class="image-slot" style="font-size: 20px">
<div
slot="error"
class="image-slot"
style="font-size: 20px"
>
<div class="error-img-text">
{{ screen.name }}
</div>
@ -95,68 +221,123 @@
</el-image>
</div>
<div class="big-screen-bottom">
<div class="left-bigscreen-title" :title="screen.name">
<div
class="left-bigscreen-title"
:title="screen.name"
>
{{ screen.name }}
</div>
</div>
</div>
</div>
</div>
<div v-else class="empty">
<div
v-else
class="empty"
>
暂无数据
</div>
<div class="footer-pagination-wrap">
<div class="bs-pagination">
<el-pagination class="bs-el-pagination" popper-class="bs-el-pagination" background
layout="total, prev, pager, next, sizes" :page-size="size" prev-text="上一页" next-text="下一页"
:total="totalCount" :page-sizes="[10, 20, 50, 100]" :current-page="current"
@current-change="currentChangeHandle" @size-change="sizeChangeHandle" />
<el-pagination
class="bs-el-pagination"
popper-class="bs-el-pagination"
background
layout="total, prev, pager, next, sizes"
:page-size="size"
prev-text="上一页"
next-text="下一页"
:total="totalCount"
:page-sizes="[10, 20, 50, 100]"
:current-page="current"
@current-change="currentChangeHandle"
@size-change="sizeChangeHandle"
/>
</div>
</div>
</div>
</el-tab-pane>
<el-tab-pane label="系统组件" name="remote">
<el-tab-pane
label="系统组件"
name="remote"
>
<div class="big-screen-list-wrap">
<div v-if="remoteComponentlist.length !== 0" v-loading="loading" class="list-wrap bs-scrollbar"
element-loading-text="加载中" :style="{
<div
v-if="remoteComponentlist.length !== 0"
v-loading="loading"
class="list-wrap bs-scrollbar"
element-loading-text="加载中"
:style="{
display: remoteComponentsGridComputed ? 'grid' : 'flex',
justifyContent: remoteComponentsGridComputed ? 'space-around' : 'flex-start'
}">
<div v-for="component in remoteComponentlist" :key="component.title" class="big-screen-card-wrap" :style="{
}"
>
<div
v-for="component in remoteComponentlist"
:key="component.title"
class="big-screen-card-wrap"
:style="{
width: remoteComponentsGridComputed ? 'auto' : '290px'
}" @click="chooseComponent(component)">
<div :class="component.title == focus.title ? 'focus' : ''" class="big-screen-card-inner">
}"
@click="chooseComponent(component)"
>
<div
:class="component.title == focus.title ? 'focus' : ''"
class="big-screen-card-inner"
>
<div class="big-screen-card-img">
<el-image :src="component.img" fit="contain" style="width: 100%; height: 100%">
<div slot="placeholder" class="image-slot">
<el-image
:src="component.img"
fit="contain"
style="width: 100%; height: 100%"
>
<div
slot="placeholder"
class="image-slot"
>
加载中···
</div>
</el-image>
</div>
<div class="big-screen-bottom">
<div class="left-bigscreen-title" :title="component.title">
<div
class="left-bigscreen-title"
:title="component.title"
>
{{ component.title }}
</div>
</div>
</div>
</div>
</div>
<div v-else class="empty">
<div
v-else
class="empty"
>
暂无数据
</div>
</div>
</el-tab-pane>
</el-tabs>
</div>
<div slot="footer" class="dialog-footer">
<el-button class="bs-el-button-default" @click="dialogVisible = false">
<div
slot="footer"
class="dialog-footer"
>
<el-button
class="bs-el-button-default"
@click="dialogVisible = false"
>
取消
</el-button>
<el-button type="primary" @click="confirm">
<el-button
type="primary"
@click="confirm"
>
确定
</el-button>
<el-button
type='primary'
type="primary"
@click="jumpto"
>
组件管理
@ -165,7 +346,6 @@
</el-dialog>
</template>
<script>
import { get } from 'data-room-ui/js/utils/http'
import { pageMixins } from 'data-room-ui/js/mixins/page'
import _ from 'lodash'
import innerRemoteComponents, { getRemoteComponents, getRemoteComponentConfig } from 'data-room-ui/RemoteComponents/remoteComponentsList'
@ -174,7 +354,7 @@ export default {
name: 'ComponentDialog',
mixins: [pageMixins],
props: {},
data() {
data () {
return {
dialogVisible: false,
loading: false,
@ -191,34 +371,34 @@ export default {
}
},
computed: {
gridComputed() {
gridComputed () {
return this.list.length > 3
},
remoteComponentsGridComputed() {
remoteComponentsGridComputed () {
return this.remoteComponentlist.length > 3
},
bizFridComputed() {
bizFridComputed () {
return this.bizComponentList.length > 3
}
},
watch: {
activeName() {
activeName () {
this.getCatalogList()
}
},
mounted() {
mounted () {
this.remoteComponentlist = [...innerRemoteComponents, ...getRemoteComponents()]
},
methods: {
jumpto(){
let {href} = this.$router.resolve(`/big-screen-components?edit=1`)
window.open(href,'_blank')
jumpto () {
const { href } = this.$router.resolve('/big-screen-components?edit=1')
window.open(href, '_blank')
},
chooseComponent(component) {
chooseComponent (component) {
this.focus = _.cloneDeep(component)
},
close() { },
init() {
close () { },
init () {
this.dialogVisible = true
this.current = 1
this.searchKey = ''
@ -228,7 +408,7 @@ export default {
this.getCatalogList()
},
//
confirm() {
confirm () {
this.dialogVisible = false
if (this.activeName === 'combination') {
if (Object.keys(this.focus).length) {
@ -250,7 +430,7 @@ export default {
this.$emit('setRemoteComponent', config)
}
},
getDataList() {
getDataList () {
this.loading = true
this.$dataRoomAxios.get('/bigScreen/design/page', {
parentCode: this.code || null,
@ -280,9 +460,9 @@ export default {
})
},
//
getCatalogList() {
getCatalogList () {
const url = this.activeName === 'combination' ? '/bigScreen/type/list/componentCatalog' : '/bigScreen/type/list/bizComponentCatalog'
get(url)
this.$dataRoomAxios.get(url)
.then((data) => {
this.options = data
})

@ -82,7 +82,6 @@
</el-dialog>
</template>
<script>
import { get } from 'data-room-ui/js/utils/http'
export default {
name: 'BgImgDialog',
props: {

@ -1,66 +1,143 @@
<template>
<el-dialog title="资源库" :visible.sync="dialogVisible" width="80%" :modal="true" :modal-append-to-body="false"
:appen-to-body="true" class="bs-dialog-wrap bs-el-dialog" @closed="close">
<el-dialog
title="资源库"
:visible.sync="dialogVisible"
width="80%"
:modal="true"
:modal-append-to-body="false"
:appen-to-body="true"
class="bs-dialog-wrap bs-el-dialog"
@closed="close"
>
<div class="content">
<div class="big-screen-list-wrap">
<div class="top-search-wrap">
<el-input v-model="searchKey" class="bs-el-input" placeholder="请输入图片名称" prefix-icon="el-icon-search" clearable
@clear="reSearch" @keyup.enter.native="reSearch" />
<el-select v-model="code" class="bs-el-select" popper-class="bs-el-select" placeholder="请选择类型" clearable
@change="reSearch">
<el-option v-for="item in options" :key="item.id" :label="item.name" :value="item.code" />
<el-input
v-model="searchKey"
class="bs-el-input"
placeholder="请输入图片名称"
prefix-icon="el-icon-search"
clearable
@clear="reSearch"
@keyup.enter.native="reSearch"
/>
<el-select
v-model="code"
class="bs-el-select"
popper-class="bs-el-select"
placeholder="请选择类型"
clearable
@change="reSearch"
>
<el-option
v-for="item in options"
:key="item.id"
:label="item.name"
:value="item.code"
/>
</el-select>
<el-button size="small" style="margin-right: 20px" type="primary" @click="reSearch">
<el-button
size="small"
style="margin-right: 20px"
type="primary"
@click="reSearch"
>
搜索
</el-button>
</div>
<div v-if="list.length !== 0" v-loading="loading" class="list-wrap bs-scrollbar" element-loading-text=""
<div
v-if="list.length !== 0"
v-loading="loading"
class="list-wrap bs-scrollbar"
element-loading-text="加载中"
:style="{
display: gridComputed ? 'grid' : 'flex',
justifyContent: gridComputed ? 'space-around' : 'flex-start'
}">
}"
>
<!-- <div v-if="list.length !== 0"> -->
<div v-for="screen in list" :key="screen.id" class="big-screen-card-wrap" :style="{
<div
v-for="screen in list"
:key="screen.id"
class="big-screen-card-wrap"
:style="{
width: gridComputed ? 'auto' : '290px'
}" @click="chooseImg(screen)">
<div :class="focus.id == screen.id ? 'focus' : ''" class="big-screen-card-inner">
}"
@click="chooseImg(screen)"
>
<div
:class="focus.id == screen.id ? 'focus' : ''"
class="big-screen-card-inner"
>
<div class="big-screen-card-img">
<el-image :src="screen.url" fit="contain" style="width: 100%; height: 100%">
<div slot="placeholder" class="image-slot">
<el-image
:src="screen.url"
fit="contain"
style="width: 100%; height: 100%"
>
<div
slot="placeholder"
class="image-slot"
>
加载中···
</div>
</el-image>
</div>
<div class="big-screen-bottom">
<div class="left-bigscreen-title" :title="screen.originalName">
<div
class="left-bigscreen-title"
:title="screen.originalName"
>
{{ screen.originalName }}
</div>
</div>
</div>
</div>
</div>
<div v-else class="empty">
<div
v-else
class="empty"
>
暂无数据
</div>
<div class="footer-pagination-wrap">
<div class="bs-pagination">
<el-pagination class="bs-el-pagination" popper-class="bs-el-pagination" background
layout="total, prev, pager, next, sizes" :page-size="size" prev-text="上一页" next-text="下一页"
:total="totalCount" :page-sizes="[10, 20, 50, 100]" :current-page="current"
@current-change="currentChangeHandle" @size-change="sizeChangeHandle" />
<el-pagination
class="bs-el-pagination"
popper-class="bs-el-pagination"
background
layout="total, prev, pager, next, sizes"
:page-size="size"
prev-text="上一页"
next-text="下一页"
:total="totalCount"
:page-sizes="[10, 20, 50, 100]"
:current-page="current"
@current-change="currentChangeHandle"
@size-change="sizeChangeHandle"
/>
</div>
</div>
</div>
</div>
<div slot="footer" class="dialog-footer">
<el-button class="bs-el-button-default" @click="dialogVisible = false">
<div
slot="footer"
class="dialog-footer"
>
<el-button
class="bs-el-button-default"
@click="dialogVisible = false"
>
取消
</el-button>
<el-button type="primary" @click="confirm">
<el-button
type="primary"
@click="confirm"
>
确定
</el-button>
<el-button
type='primary'
type="primary"
@click="jumpto"
>
资源管理
@ -69,14 +146,13 @@
</el-dialog>
</template>
<script>
import { get } from 'data-room-ui/js/utils/http'
import { pageMixins } from 'data-room-ui/js/mixins/page'
import _ from 'lodash'
export default {
name: 'SourceDialog',
mixins: [pageMixins],
props: {},
data() {
data () {
return {
dialogVisible: false,
loading: false,
@ -88,21 +164,21 @@ export default {
}
},
computed: {
gridComputed() {
gridComputed () {
return this.list.length > 3
}
},
mounted() { },
mounted () { },
methods: {
jumpto(){
let {href} = this.$router.resolve(`/big-screen-source?edit=1`)
window.open(href,'_blank')
jumpto () {
const { href } = this.$router.resolve('/big-screen-source?edit=1')
window.open(href, '_blank')
},
chooseImg(img) {
chooseImg (img) {
this.focus = _.cloneDeep(img)
},
close() { },
init() {
close () { },
init () {
this.dialogVisible = true
this.current = 1
this.searchKey = ''
@ -111,13 +187,13 @@ export default {
this.getDataList()
this.getCatalogList()
},
confirm() {
confirm () {
this.dialogVisible = false
if (this.focus !== -1) {
this.$emit('getImg', this.focus)
}
},
getDataList() {
getDataList () {
this.loading = true
this.$dataRoomAxios.get('/bigScreen/file', {
module: this.code,
@ -135,7 +211,7 @@ export default {
})
},
//
getCatalogList() {
getCatalogList () {
this.$dataRoomAxios.get('/bigScreen/type/list/resourceCatalog')
.then((data) => {
this.options = data

@ -239,8 +239,6 @@ import BigScreenRun from 'data-room-ui/BigScreenRun/index.vue'
import Icon from 'data-room-ui/assets/images/pageIcon/export'
import { getPageType } from './utils'
import _ from 'lodash'
// import axios from 'axios'
// import { post } from 'data-room-ui/js/utils/http'
import IconSvg from 'data-room-ui/SvgIcon'
let dashBoardPageCode = null
export default {

@ -34,7 +34,6 @@
<NotPermission v-else />
</template>
<script>
import { get } from 'data-room-ui/js/utils/http'
import RenderCard from 'data-room-ui/Render/RenderCard.vue'
import { mapActions, mapMutations, mapState } from 'vuex'
import { getThemeConfig } from 'data-room-ui/js/api/bigScreenApi'

@ -14,7 +14,7 @@
@change="handleChange"
>
<div slot="prefix">
<span style="float: left">&nbsp; </span>
<span style="float: left"></span>
<span
v-for="(item, index) in colorValue"
:key="index"
@ -27,7 +27,6 @@
v-if="index <= 14"
style="float: left"
>
&nbsp;
</span>
<span
v-if="index === 15"

@ -2,27 +2,63 @@
<div class="big-screen-list-wrap">
<div class="internal-box">
<div class="top-search-wrap">
<el-select v-if="catalogInfo !== 'system'" v-model="catalogCode" class="bs-el-select" popper-class="bs-el-select"
placeholder="请选择分组" clearable @change="reSearch">
<el-option v-for="item in catalogList" :key="item.code" :label="item.name" :value="item.code" />
<el-select
v-if="catalogInfo !== 'system'"
v-model="catalogCode"
class="bs-el-select"
popper-class="bs-el-select"
placeholder="请选择分组"
clearable
@change="reSearch"
>
<el-option
v-for="item in catalogList"
:key="item.code"
:label="item.name"
:value="item.code"
/>
</el-select>
<el-input v-model="searchKey" class="bs-el-input" placeholder="请输入组件名称" prefix-icon="el-icon-search" clearable
@clear="reSearch" @keyup.enter.native="reSearch" />
<el-button type="primary" @click="reSearch">
<el-input
v-model="searchKey"
class="bs-el-input"
placeholder="请输入组件名称"
prefix-icon="el-icon-search"
clearable
@clear="reSearch"
@keyup.enter.native="reSearch"
/>
<el-button
type="primary"
@click="reSearch"
>
搜索
</el-button>
<el-button v-if="catalogInfo !== 'system'" type="primary" @click="catalogManage">
<el-button
v-if="catalogInfo !== 'system'"
type="primary"
@click="catalogManage"
>
分组管理
</el-button>
</div>
<div v-loading="loading" class="list-wrap bs-scrollbar" element-loading-text="" :style="{
<div
v-loading="loading"
class="list-wrap bs-scrollbar"
element-loading-text="加载中"
:style="{
display: gridComputed ? 'grid' : 'flex',
justifyContent: gridComputed ? 'space-around' : 'flex-start'
}">
}"
>
<!-- 第一个是新增大屏卡片 -->
<div v-if="catalogInfo !== 'system'" class="big-screen-card-wrap" :style="{
<div
v-if="catalogInfo !== 'system'"
class="big-screen-card-wrap"
:style="{
width: gridComputed ? 'auto' : '290px'
}" @click="add">
}"
@click="add"
>
<div class="big-screen-card-inner big-screen-card-inner-add">
<div class="add-big-screen-card">
<div class="add-big-screen-card-inner">
@ -34,38 +70,72 @@
</div>
</div>
<!-- 后面遍历 list -->
<div v-for="screen in list" :key="screen.id" class="big-screen-card-wrap" :style="{
<div
v-for="screen in list"
:key="screen.id"
class="big-screen-card-wrap"
:style="{
width: gridComputed ? 'auto' : '290px'
}">
}"
>
<div class="big-screen-card-inner">
<div class="screen-card__hover">
<div class="screen-card__hover-box">
<div class="preview">
<div class="screen-card__oper-label circle" @click="preview(screen)">
<div
class="screen-card__oper-label circle"
@click="preview(screen)"
>
<span>预览</span>
</div>
<div v-if="catalogInfo !== 'system'" class="circle" @click="design(screen)">
<div
v-if="catalogInfo !== 'system'"
class="circle"
@click="design(screen)"
>
<span>设计</span>
</div>
<div v-if="catalogInfo !== 'system'" class="circle" @click="edit(screen)">
<div
v-if="catalogInfo !== 'system'"
class="circle"
@click="edit(screen)"
>
<span>编辑</span>
</div>
<div v-if="catalogInfo !== 'system'" class="circle" @click="copy(screen)">
<div
v-if="catalogInfo !== 'system'"
class="circle"
@click="copy(screen)"
>
<span>复制</span>
</div>
<div v-if="catalogInfo !== 'system'" class="circle" @click="del(screen)">
<div
v-if="catalogInfo !== 'system'"
class="circle"
@click="del(screen)"
>
<span>删除</span>
</div>
</div>
</div>
</div>
<div class="big-screen-card-img">
<el-image :src="catalogInfo !== 'system' ? screen.coverPicture : screen.img" fit="fill"
style="width: 100%; height: 100%">
<div slot="placeholder" class="image-slot">
<el-image
:src="catalogInfo !== 'system' ? screen.coverPicture : screen.img"
fit="fill"
style="width: 100%; height: 100%"
>
<div
slot="placeholder"
class="image-slot"
>
加载中···
</div>
<div slot="error" class="image-slot" style="font-size: 20px">
<div
slot="error"
class="image-slot"
style="font-size: 20px"
>
<div class="error-img-text">
{{ catalogInfo !== 'system' ? screen.name : screen.title }}
</div>
@ -73,29 +143,54 @@
</el-image>
</div>
<div class="big-screen-bottom">
<div class="left-bigscreen-title" :title="catalogInfo !== 'system' ? screen.name : screen.title">
<div
class="left-bigscreen-title"
:title="catalogInfo !== 'system' ? screen.name : screen.title"
>
{{ catalogInfo !== 'system' ? screen.name : screen.title }}
</div>
</div>
</div>
</div>
</div>
<div v-if="catalogInfo !== 'system'" class="footer-pagination-wrap">
<div
v-if="catalogInfo !== 'system'"
class="footer-pagination-wrap"
>
<!-- <div class="footer-pagination-wrap-text">
总共 {{ totalCount }} 个项目
</div> -->
<div class="bs-pagination">
<el-pagination class="bs-el-pagination" popper-class="bs-el-pagination" background
layout="total, prev, pager, next, sizes" :page-size="size" prev-text="上一页" next-text="下一页" :total="totalCount"
:page-sizes="[10, 20, 50, 100]" :current-page="current" @current-change="currentChangeHandle"
@size-change="sizeChangeHandle" />
<el-pagination
class="bs-el-pagination"
popper-class="bs-el-pagination"
background
layout="total, prev, pager, next, sizes"
:page-size="size"
prev-text="上一页"
next-text="下一页"
:total="totalCount"
:page-sizes="[10, 20, 50, 100]"
:current-page="current"
@current-change="currentChangeHandle"
@size-change="sizeChangeHandle"
/>
</div>
</div>
</div>
<!-- 新增或编辑弹窗 -->
<EditForm v-if="catalogInfo !== 'system'" ref="EditForm" :type="catalogInfo" @refreshData="reSearch" />
<CatalogEditForm v-if="catalogInfo !== 'system'" ref="CatalogEditForm" :catalog-type="catalogType"
@updateCatalogList="updateCatalogList" />
<EditForm
v-if="catalogInfo !== 'system'"
ref="EditForm"
:type="catalogInfo"
@refreshData="reSearch"
/>
<CatalogEditForm
v-if="catalogInfo !== 'system'"
ref="CatalogEditForm"
:catalog-type="catalogType"
@updateCatalogList="updateCatalogList"
/>
</div>
</template>
<script>
@ -114,7 +209,7 @@ export default {
}
},
components: { EditForm, CatalogEditForm },
data() {
data () {
return {
name: '',
catalogVisible: false,
@ -128,41 +223,41 @@ export default {
}
},
computed: {
catalogType() {
catalogType () {
if (this.catalogInfo === 'component') {
return 'componentCatalog'
} else {
return 'bizComponentCatalog'
}
},
code() {
code () {
return ''
},
gridComputed() {
gridComputed () {
return this.list.length > 2
}
},
watch: {
catalogInfo() {
catalogInfo () {
this.reset()
this.init()
},
catalogCode(value) {
catalogCode (value) {
this.reSearch()
}
},
mounted() {
mounted () {
this.init()
},
methods: {
reset() {
reset () {
this.searchKey = ''
this.current = 1
this.size = 10
this.catalogCode = ''
this.init()
},
init() {
init () {
if (this.catalogInfo !== 'system') {
this.getDataList()
this.getCatalogList()
@ -171,10 +266,10 @@ export default {
this.list = [...innerRemoteComponents, ...getRemoteComponents()]
}
},
updateCatalogList(list) {
updateCatalogList (list) {
this.catalogList = list
},
reSearch() {
reSearch () {
if (this.catalogInfo !== 'system') {
this.current = 1
this.getDataList()
@ -183,18 +278,18 @@ export default {
this.list = arr?.filter((item) => item.title.indexOf(this.searchKey) !== -1)
}
},
catalogManage() {
catalogManage () {
this.$refs.CatalogEditForm.formVisible = true
},
//
getCatalogList() {
getCatalogList () {
this.$dataRoomAxios.get(`/bigScreen/type/list/${this.catalogType}`)
.then((data) => {
this.catalogList = data
})
.catch(() => { })
},
getDataList() {
getDataList () {
this.loading = true
if (this.catalogInfo === 'component') {
this.$dataRoomAxios.get('/bigScreen/design/page', {
@ -228,7 +323,7 @@ export default {
})
}
},
preview(screen) {
preview (screen) {
let path = ''
let query = {
code: screen.code
@ -249,7 +344,7 @@ export default {
})
window.open(href, '_blank')
},
design(screen) {
design (screen) {
const path = this.catalogInfo === 'component' ? (window.BS_CONFIG?.routers?.designUrl || '/big-screen/design') : (window.BS_CONFIG?.routers?.bizComponentDesignUrl || 'big-screen-biz-component-design')
const { href } = this.$router.resolve({
path,
@ -259,17 +354,17 @@ export default {
})
window.open(href, '_self')
},
add() {
add () {
const page = {
code: '',
type: this.catalogInfo === 'component' ? 'bigScreen' : 'bizComponent'
}
this.$refs.EditForm.init(page, this.catalogCode)
},
edit(screen) {
edit (screen) {
this.$refs.EditForm.init(screen, this.catalogCode)
},
del(screen) {
del (screen) {
this.$confirm('确定删除该组件', '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
@ -278,7 +373,7 @@ export default {
})
.then(async () => {
const url = this.catalogInfo === 'component' ? `/bigScreen/design/delete/${screen.code}` : `/bigScreen/bizComponent/delete/${screen.id}`
post(url)
this.$dataRoomAxios.post(url)
.then(() => {
this.$message({
type: 'success',
@ -295,8 +390,8 @@ export default {
})
.catch()
},
copy(screen) {
const url = this.catalogInfo === 'component' ? `/bigScreen/design/copy/${screen.code}` : `/bigScreen/bizComponent/copy/${screen.code}`
copy (screen) {
const url = this.catalogInfo === 'component' ? `/bigScreen/design/copy/${screen.code}` : `/Component/copy/${screen.code}`
this.$confirm('确定复制该组件', '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
@ -304,7 +399,7 @@ export default {
customClass: 'bs-el-message-box'
})
.then(async () => {
post(url)
this.$dataRoomAxios.post(url)
.then(() => {
this.$message({
type: 'success',

@ -143,6 +143,8 @@
>
<el-select
v-model="dataForm.tableName"
v-loading="selectorLoading"
element-loading-spinner="el-icon-loading"
class="bs-el-select"
popper-class="bs-el-select"
clearable
@ -228,10 +230,10 @@
class="bs-radio-wrap"
:disabled="!isEdit"
>
<el-radio :label="0">
<el-radio :label="1">
</el-radio>
<el-radio :label="1">
<el-radio :label="0">
</el-radio>
</el-radio-group>
@ -551,7 +553,8 @@ export default {
fieldList: [],
isSelectAll: false,
activeName: 'data',
currentCount: 0
currentCount: 0,
selectorLoading: false
}
},
watch: {
@ -665,7 +668,7 @@ export default {
*/
getSql () {
let sql = 'SELECT '
if (this.dataForm.repeatStatus === 0) {
if (this.dataForm.repeatStatus === 1) {
sql += ' DISTINCT '
}
if (this.dataForm.fieldInfo.length > 0) {
@ -754,6 +757,7 @@ export default {
moduleCode: this.appCode
}
datasourceList(params).then(res => {
console.log(res)
this.sourceList = res
})
},
@ -780,10 +784,13 @@ export default {
}).catch(() => {
this.tableList = []
})
this.selectorLoading = true
getSourceView(this.dataForm.sourceId).then(res => {
this.viewList = res
this.selectorLoading = false
}).catch(() => {
this.viewList = []
this.selectorLoading = false
})
},
/**
@ -1021,4 +1028,9 @@ export default {
background: var(--bs-el-background-1);
}
}
// el-select loading
::v-deep .el-loading-spinner{
top: 75%;
}
</style>

@ -4,7 +4,7 @@
<div class="ztree-filter-container filter-container">
<el-input
v-model="queryForm.searchKey"
placeholder="请输入数据集分"
placeholder="请输入数据集分"
clearable
class="ztree-input bs-el-input"
@keyup.enter.native="reSearch()"

@ -596,9 +596,9 @@
}
//el-date-picker
.bs-date-popper-class {
background-color: var(--bs-background-1) !important;
.bs-el-date-picker {
left: -115px !important;
background-color: var(--bs-background-1) !important;
.el-picker-panel__footer {
background-color: var(--bs-background-1) !important;
border-top: 1px solid var(--bs-background-2);

Loading…
Cancel
Save