Merge branch 'main' of github.com:dataease/dataease into main

This commit is contained in:
taojinlong 2021-06-02 18:27:34 +08:00
commit 4fb3652486
16 changed files with 67 additions and 28 deletions

View File

@ -8,6 +8,13 @@
<result column="childrenCount" jdbcType="VARCHAR" property="childrenCount"/>
</resultMap>
<sql id="Base_Column_List">
panel_template.id, panel_template.`name`, panel_template.pid, panel_template.`level`, panel_template.node_type, panel_template.create_by, panel_template.create_time, panel_template.template_type
</sql>
<sql id="Blob_Column_List">
panel_template.snapshot, panel_template.template_style, panel_template.template_data, panel_template.dynamic_data
</sql>
<select id="panelTemplate" resultMap="BaseResultMapDTO">
SELECT
panel_template.*,
@ -32,7 +39,12 @@
<select id="panelTemplateList" resultMap="BaseResultMapDTO">
SELECT
panel_template.*,
<include refid="Base_Column_List" />
,
<if test='withBlobs == "Y"'>
<include refid="Blob_Column_List" />
,
</if>
panel_template.NAME AS label,
ifnull(tempCountInfo.childrenCount,0) as childrenCount
FROM

View File

@ -12,6 +12,8 @@ import lombok.Data;
public class PanelTemplateRequest extends PanelTemplateWithBLOBs {
private String sort;
private String withBlobs="Y";
private String optType;
private Boolean withChildren = false;
@ -21,5 +23,6 @@ public class PanelTemplateRequest extends PanelTemplateWithBLOBs {
public PanelTemplateRequest(String pid) {
super.setPid(pid);
withBlobs="N";
}
}

View File

@ -39,6 +39,7 @@ public class PanelTemplateService {
private ExtPanelTemplateMapper extPanelTemplateMapper;
public List<PanelTemplateDTO> templateList(PanelTemplateRequest panelTemplateRequest) {
panelTemplateRequest.setWithBlobs("N");
List<PanelTemplateDTO> panelTemplateList = extPanelTemplateMapper.panelTemplateList(panelTemplateRequest);
if(panelTemplateRequest.getWithChildren()){
getTreeChildren(panelTemplateList);

View File

@ -85,10 +85,10 @@ export function getPreviewData(data) {
})
}
export function fieldList(id) {
export function fieldList(id, showLoading = true) {
return request({
url: '/dataset/field/list/' + id,
loading: true,
loading: showLoading,
method: 'post'
})
}
@ -102,11 +102,11 @@ export function batchEdit(data) {
})
}
export function post(url, data) {
export function post(url, data, showLoading = true) {
return request({
url: url,
method: 'post',
loading: true,
loading: showLoading,
data
})
}

View File

@ -18,6 +18,7 @@ export function showTemplateList(data) {
return request({
url: '/template/templateList',
data: data,
loading: true,
method: 'post'
})
}
@ -25,6 +26,7 @@ export function showTemplateList(data) {
export function findOne(id) {
return request({
url: '/template/findOne/' + id,
loading: true,
method: 'get'
})
}

View File

@ -659,6 +659,7 @@ export default {
rose_radius: 'Fillet',
view_name: 'Chart Name',
name_can_not_empty: 'Name cannot be empty',
template_can_not_empty: 'Please check a Template',
custom_count: 'Number of records',
table_title_fontsize: 'Font size of header',
table_item_fontsize: 'Table font size',

View File

@ -659,6 +659,7 @@ export default {
rose_radius: '園角',
view_name: '視圖名稱',
name_can_not_empty: '名稱不能為空',
template_can_not_empty: '请选择仪表盘',
custom_count: '記錄數',
table_title_fontsize: '表頭字體大小',
table_item_fontsize: '表格字體大小',

View File

@ -659,6 +659,7 @@ export default {
rose_radius: '圆角',
view_name: '视图名称',
name_can_not_empty: '名称不能为空',
template_can_not_empty: '请选择仪表盘',
custom_count: '记录数',
table_title_fontsize: '表头字体大小',
table_item_fontsize: '表格字体大小',

View File

@ -161,7 +161,7 @@ export default {
},
'table': function() {
if (this.table && this.table.sceneId) {
post('dataset/group/getScene/' + this.table.sceneId, {}).then(response => {
post('dataset/group/getScene/' + this.table.sceneId, {}, false).then(response => {
this.currGroup = response.data
this.$nextTick(function() {
@ -213,7 +213,7 @@ export default {
tree(group) {
this.dsLoading = true
post('/dataset/group/tree', group).then(response => {
post('/dataset/group/tree', group, false).then(response => {
this.data = response.data
this.dsLoading = false
})
@ -227,7 +227,7 @@ export default {
sort: 'type asc,create_time desc,name asc',
sceneId: this.currGroup.id,
mode: this.mode < 0 ? null : this.mode
}).then(response => {
}, false).then(response => {
this.tables = response.data
for (let i = 0; i < this.tables.length; i++) {
if (this.tables[i].mode === 1 && this.kettleRunning === false) {
@ -278,7 +278,7 @@ export default {
}
// check mode=1doris
if (data.mode === 1) {
post('/dataset/table/checkDorisTableIsExists/' + data.id, {}).then(response => {
post('/dataset/table/checkDorisTableIsExists/' + data.id, {}, false).then(response => {
if (response.data) {
this.$nextTick(function() {
this.$emit('getTable', data)

View File

@ -67,7 +67,7 @@ export default {
if (this.table.id) {
this.dataLoading = true
this.table.row = 100
post('/dataset/table/getPreviewData/1/100', this.table).then(response => {
post('/dataset/table/getPreviewData/1/100', this.table, false).then(response => {
this.fields = response.data.fields
this.data = response.data.data
const datas = this.data

View File

@ -24,7 +24,7 @@
<span slot-scope="{ node, data }" class="custom-tree-node">
<span style="display: flex; flex: 1 1 0%; width: 0px;">
<span v-if="data.nodeType==='template'">
<svg-icon icon-class="panel" class="ds-icon-scene" />
<svg-icon icon-class="panel" class="ds-icon-scene" />
</span>
<span v-if="data.nodeType==='folder'">
<i class="el-icon-folder" />
@ -39,6 +39,7 @@
</template>
<script>
import { findOne } from '@/api/system/template'
export default {
name: 'TemplateAllList',
components: { },
@ -89,7 +90,9 @@ export default {
return data.label.indexOf(value) !== -1
},
nodeClick(data, node) {
this.$emit('showCurrentTemplateInfo', data)
findOne(data.id).then(res => {
this.$emit('showCurrentTemplateInfo', res.data)
})
}
}
}

View File

@ -1,10 +1,10 @@
<template>
<el-row>
<el-row v-loading="$store.getters.loadingMap[$store.getters.currentPath]">
<el-row v-if="editPanel.optType==='new' && editPanel.panelInfo.nodeType==='panel'">
<el-col :span="18" style="height: 40px">
<el-radio v-model="inputType" label="self"> {{ $t('panel.custom') }}</el-radio>
<!-- <el-radio v-model="inputType" label="import">{{ $t('panel.import_template') }} </el-radio>-->
<el-radio v-model="inputType" label="copy">{{ $t('panel.copy_template') }} </el-radio>
<el-radio v-model="inputType" label="copy" @click.native="getTree">{{ $t('panel.copy_template') }} </el-radio>
</el-col>
<el-col v-if="inputType==='import'" :span="6">
<el-button class="el-icon-upload" size="small" type="primary" @click="goFile">{{ $t('panel.upload_template') }}</el-button>
@ -18,12 +18,12 @@
</el-col>
</el-row>
<el-row v-if="inputType==='copy'" class="preview">
<el-col :span="8" style="overflow-y: auto">
<el-col :span="8" style="height:100%;overflow-y: auto">
<template-all-list :template-list="templateList" @showCurrentTemplateInfo="showCurrentTemplateInfo" />
</el-col>
<el-col :span="16" :style="classBackground" class="preview-show" />
</el-row>
<el-row v-if="inputType==='import'" class="preview" :style="classBackground" />
<!-- <el-row v-if="inputType==='import'" class="preview" :style="classBackground" />-->
<el-row class="root-class">
<el-button size="mini" @click="cancel()">{{ $t('commons.cancel') }}</el-button>
<el-button type="primary" size="mini" @click="save()">{{ $t('commons.confirm') }}</el-button>
@ -32,7 +32,8 @@
</template>
<script>
import { post, panelSave } from '@/api/panel/panel'
import { panelSave } from '@/api/panel/panel'
import { showTemplateList } from '@/api/system/template'
import TemplateAllList from './TemplateAllList'
export default {
@ -76,10 +77,11 @@ export default {
}
},
created() {
this.getTree()
// this.getTree()
},
methods: {
showCurrentTemplateInfo(data) {
debugger
this.editPanel.panelInfo.name = data.name
this.editPanel.panelInfo.panelStyle = data.templateStyle
this.editPanel.panelInfo.panelData = data.templateData
@ -90,7 +92,7 @@ export default {
level: '-1',
withChildren: true
}
post('/template/templateList', request).then(res => {
showTemplateList(request).then(res => {
this.templateList = res.data
})
},
@ -104,6 +106,10 @@ export default {
this.$warning(this.$t('chart.name_can_not_empty'))
return false
}
if (!this.editPanel.panelInfo.panelData) {
this.$warning(this.$t('chart.template_can_not_empty'))
return false
}
panelSave(this.editPanel.panelInfo).then(response => {
this.$message({
message: this.$t('commons.save_success'),
@ -156,13 +162,13 @@ export default {
.preview {
margin-top: 5px;
border:1px solid #E6E6E6;
height:300px !important;
height:250px !important;
overflow:hidden;
background-size: 100% 100% !important;
}
.preview-show {
border-left:1px solid #E6E6E6;
height:300px;
height:250px;
background-size: 100% 100% !important;
}
</style>

View File

@ -42,8 +42,8 @@ export default {
level: '1',
pid: this.pid,
name: '',
templateStyle: '',
templateData: '',
templateStyle: null,
templateData: null,
snapshot: ''
}
}
@ -70,6 +70,10 @@ export default {
this.$warning(this.$t('chart.name_can_not_empty'))
return false
}
if (!this.templateInfo.templateData) {
this.$warning(this.$t('chart.template_can_not_empty'))
return false
}
const nameCheckRequest = {
pid: this.templateInfo.pid,
name: this.templateInfo.name,

View File

@ -71,7 +71,7 @@ import DeAsideContainer from '@/components/dataease/DeAsideContainer'
import TemplateList from './component/TemplateList'
import TemplateItem from './component/TemplateItem'
import TemplateImport from './component/TemplateImport'
import { save, templateDelete, showTemplateList } from '@/api/system/template'
import { save, templateDelete, find } from '@/api/system/template'
export default {
name: 'PanelMain',
@ -108,7 +108,7 @@ export default {
showCurrentTemplate(pid) {
this.currentTemplateId = pid
if (this.currentTemplateId) {
showTemplateList({ pid: this.currentTemplateId }).then(response => {
find({ pid: this.currentTemplateId }).then(response => {
this.currentTemplateShowList = response.data
})
}
@ -157,7 +157,7 @@ export default {
templateType: this.currentTemplateType,
level: '0'
}
showTemplateList(request).then(res => {
find(request).then(res => {
this.templateList = res.data
this.showFirst()
})

View File

@ -2,7 +2,7 @@
<layout-content :header="formType=='add' ? $t('user.create') : $t('user.modify')" back-name="system-user">
<el-form ref="createUserForm" :model="form" :rules="rule" size="small" label-width="auto" label-position="right">
<el-form-item label="ID" prop="username">
<el-input v-model="form.username" />
<el-input v-model="form.username" :disabled="formType !== 'add'" />
</el-form-item>
<el-form-item :label="$t('commons.phone')" prop="phone">
<el-input v-model="form.phone" />
@ -27,7 +27,7 @@
</el-radio-group>
</el-form-item>
<el-form-item :label="$t('commons.status')">
<el-radio-group v-model="form.enabled" style="width: 140px">
<el-radio-group v-model="form.enabled" :disabled="formType !== 'add' && form.isAdmin" style="width: 140px">
<el-radio :label="1">{{ $t('commons.enable') }}</el-radio>
<el-radio :label="0">{{ $t('commons.disable') }}</el-radio>
</el-radio-group>
@ -47,6 +47,7 @@
<el-select
v-model="form.roleIds"
style="width: 100%"
:disabled="formType !== 'add' && form.isAdmin"
multiple
:placeholder="$t('commons.please_select')"
@remove-tag="deleteTag"

View File

@ -187,6 +187,7 @@ export default {
show: this.checkPermission(['user:edit'])
}, {
label: this.$t('commons.delete'), icon: 'el-icon-delete', type: 'danger', click: this.del,
disabled: this.btnDisabled,
show: this.checkPermission(['user:del'])
}, {
label: this.$t('member.edit_password'), icon: 'el-icon-s-tools', type: 'success', click: this.editPassword,
@ -489,6 +490,9 @@ export default {
allRoles().then(res => {
this.roles = res.data
})
},
btnDisabled(row) {
return row.userId === 1
}
}
}