提交 4fb36524 authored 作者: taojinlong's avatar taojinlong

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

...@@ -8,6 +8,13 @@ ...@@ -8,6 +8,13 @@
<result column="childrenCount" jdbcType="VARCHAR" property="childrenCount"/> <result column="childrenCount" jdbcType="VARCHAR" property="childrenCount"/>
</resultMap> </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 id="panelTemplate" resultMap="BaseResultMapDTO">
SELECT SELECT
panel_template.*, panel_template.*,
...@@ -32,7 +39,12 @@ ...@@ -32,7 +39,12 @@
<select id="panelTemplateList" resultMap="BaseResultMapDTO"> <select id="panelTemplateList" resultMap="BaseResultMapDTO">
SELECT SELECT
panel_template.*, <include refid="Base_Column_List" />
,
<if test='withBlobs == "Y"'>
<include refid="Blob_Column_List" />
,
</if>
panel_template.NAME AS label, panel_template.NAME AS label,
ifnull(tempCountInfo.childrenCount,0) as childrenCount ifnull(tempCountInfo.childrenCount,0) as childrenCount
FROM FROM
......
...@@ -12,6 +12,8 @@ import lombok.Data; ...@@ -12,6 +12,8 @@ import lombok.Data;
public class PanelTemplateRequest extends PanelTemplateWithBLOBs { public class PanelTemplateRequest extends PanelTemplateWithBLOBs {
private String sort; private String sort;
private String withBlobs="Y";
private String optType; private String optType;
private Boolean withChildren = false; private Boolean withChildren = false;
...@@ -21,5 +23,6 @@ public class PanelTemplateRequest extends PanelTemplateWithBLOBs { ...@@ -21,5 +23,6 @@ public class PanelTemplateRequest extends PanelTemplateWithBLOBs {
public PanelTemplateRequest(String pid) { public PanelTemplateRequest(String pid) {
super.setPid(pid); super.setPid(pid);
withBlobs="N";
} }
} }
...@@ -39,6 +39,7 @@ public class PanelTemplateService { ...@@ -39,6 +39,7 @@ public class PanelTemplateService {
private ExtPanelTemplateMapper extPanelTemplateMapper; private ExtPanelTemplateMapper extPanelTemplateMapper;
public List<PanelTemplateDTO> templateList(PanelTemplateRequest panelTemplateRequest) { public List<PanelTemplateDTO> templateList(PanelTemplateRequest panelTemplateRequest) {
panelTemplateRequest.setWithBlobs("N");
List<PanelTemplateDTO> panelTemplateList = extPanelTemplateMapper.panelTemplateList(panelTemplateRequest); List<PanelTemplateDTO> panelTemplateList = extPanelTemplateMapper.panelTemplateList(panelTemplateRequest);
if(panelTemplateRequest.getWithChildren()){ if(panelTemplateRequest.getWithChildren()){
getTreeChildren(panelTemplateList); getTreeChildren(panelTemplateList);
......
...@@ -85,10 +85,10 @@ export function getPreviewData(data) { ...@@ -85,10 +85,10 @@ export function getPreviewData(data) {
}) })
} }
export function fieldList(id) { export function fieldList(id, showLoading = true) {
return request({ return request({
url: '/dataset/field/list/' + id, url: '/dataset/field/list/' + id,
loading: true, loading: showLoading,
method: 'post' method: 'post'
}) })
} }
...@@ -102,11 +102,11 @@ export function batchEdit(data) { ...@@ -102,11 +102,11 @@ export function batchEdit(data) {
}) })
} }
export function post(url, data) { export function post(url, data, showLoading = true) {
return request({ return request({
url: url, url: url,
method: 'post', method: 'post',
loading: true, loading: showLoading,
data data
}) })
} }
......
...@@ -18,6 +18,7 @@ export function showTemplateList(data) { ...@@ -18,6 +18,7 @@ export function showTemplateList(data) {
return request({ return request({
url: '/template/templateList', url: '/template/templateList',
data: data, data: data,
loading: true,
method: 'post' method: 'post'
}) })
} }
...@@ -25,6 +26,7 @@ export function showTemplateList(data) { ...@@ -25,6 +26,7 @@ export function showTemplateList(data) {
export function findOne(id) { export function findOne(id) {
return request({ return request({
url: '/template/findOne/' + id, url: '/template/findOne/' + id,
loading: true,
method: 'get' method: 'get'
}) })
} }
......
...@@ -659,6 +659,7 @@ export default { ...@@ -659,6 +659,7 @@ export default {
rose_radius: 'Fillet', rose_radius: 'Fillet',
view_name: 'Chart Name', view_name: 'Chart Name',
name_can_not_empty: 'Name cannot be empty', name_can_not_empty: 'Name cannot be empty',
template_can_not_empty: 'Please check a Template',
custom_count: 'Number of records', custom_count: 'Number of records',
table_title_fontsize: 'Font size of header', table_title_fontsize: 'Font size of header',
table_item_fontsize: 'Table font size', table_item_fontsize: 'Table font size',
......
...@@ -659,6 +659,7 @@ export default { ...@@ -659,6 +659,7 @@ export default {
rose_radius: '園角', rose_radius: '園角',
view_name: '視圖名稱', view_name: '視圖名稱',
name_can_not_empty: '名稱不能為空', name_can_not_empty: '名稱不能為空',
template_can_not_empty: '请选择仪表盘',
custom_count: '記錄數', custom_count: '記錄數',
table_title_fontsize: '表頭字體大小', table_title_fontsize: '表頭字體大小',
table_item_fontsize: '表格字體大小', table_item_fontsize: '表格字體大小',
......
...@@ -659,6 +659,7 @@ export default { ...@@ -659,6 +659,7 @@ export default {
rose_radius: '圆角', rose_radius: '圆角',
view_name: '视图名称', view_name: '视图名称',
name_can_not_empty: '名称不能为空', name_can_not_empty: '名称不能为空',
template_can_not_empty: '请选择仪表盘',
custom_count: '记录数', custom_count: '记录数',
table_title_fontsize: '表头字体大小', table_title_fontsize: '表头字体大小',
table_item_fontsize: '表格字体大小', table_item_fontsize: '表格字体大小',
......
...@@ -161,7 +161,7 @@ export default { ...@@ -161,7 +161,7 @@ export default {
}, },
'table': function() { 'table': function() {
if (this.table && this.table.sceneId) { 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.currGroup = response.data
this.$nextTick(function() { this.$nextTick(function() {
...@@ -213,7 +213,7 @@ export default { ...@@ -213,7 +213,7 @@ export default {
tree(group) { tree(group) {
this.dsLoading = true this.dsLoading = true
post('/dataset/group/tree', group).then(response => { post('/dataset/group/tree', group, false).then(response => {
this.data = response.data this.data = response.data
this.dsLoading = false this.dsLoading = false
}) })
...@@ -227,7 +227,7 @@ export default { ...@@ -227,7 +227,7 @@ export default {
sort: 'type asc,create_time desc,name asc', sort: 'type asc,create_time desc,name asc',
sceneId: this.currGroup.id, sceneId: this.currGroup.id,
mode: this.mode < 0 ? null : this.mode mode: this.mode < 0 ? null : this.mode
}).then(response => { }, false).then(response => {
this.tables = response.data this.tables = response.data
for (let i = 0; i < this.tables.length; i++) { for (let i = 0; i < this.tables.length; i++) {
if (this.tables[i].mode === 1 && this.kettleRunning === false) { if (this.tables[i].mode === 1 && this.kettleRunning === false) {
...@@ -278,7 +278,7 @@ export default { ...@@ -278,7 +278,7 @@ export default {
} }
// check mode=1的数据集是否创建doris表 // check mode=1的数据集是否创建doris表
if (data.mode === 1) { if (data.mode === 1) {
post('/dataset/table/checkDorisTableIsExists/' + data.id, {}).then(response => { post('/dataset/table/checkDorisTableIsExists/' + data.id, {}, false).then(response => {
if (response.data) { if (response.data) {
this.$nextTick(function() { this.$nextTick(function() {
this.$emit('getTable', data) this.$emit('getTable', data)
......
...@@ -67,7 +67,7 @@ export default { ...@@ -67,7 +67,7 @@ export default {
if (this.table.id) { if (this.table.id) {
this.dataLoading = true this.dataLoading = true
this.table.row = 100 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.fields = response.data.fields
this.data = response.data.data this.data = response.data.data
const datas = this.data const datas = this.data
......
...@@ -39,6 +39,7 @@ ...@@ -39,6 +39,7 @@
</template> </template>
<script> <script>
import { findOne } from '@/api/system/template'
export default { export default {
name: 'TemplateAllList', name: 'TemplateAllList',
components: { }, components: { },
...@@ -89,7 +90,9 @@ export default { ...@@ -89,7 +90,9 @@ export default {
return data.label.indexOf(value) !== -1 return data.label.indexOf(value) !== -1
}, },
nodeClick(data, node) { nodeClick(data, node) {
this.$emit('showCurrentTemplateInfo', data) findOne(data.id).then(res => {
this.$emit('showCurrentTemplateInfo', res.data)
})
} }
} }
} }
......
<template> <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-row v-if="editPanel.optType==='new' && editPanel.panelInfo.nodeType==='panel'">
<el-col :span="18" style="height: 40px"> <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="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="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>
<el-col v-if="inputType==='import'" :span="6"> <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> <el-button class="el-icon-upload" size="small" type="primary" @click="goFile">{{ $t('panel.upload_template') }}</el-button>
...@@ -18,12 +18,12 @@ ...@@ -18,12 +18,12 @@
</el-col> </el-col>
</el-row> </el-row>
<el-row v-if="inputType==='copy'" class="preview"> <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" /> <template-all-list :template-list="templateList" @showCurrentTemplateInfo="showCurrentTemplateInfo" />
</el-col> </el-col>
<el-col :span="16" :style="classBackground" class="preview-show" /> <el-col :span="16" :style="classBackground" class="preview-show" />
</el-row> </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-row class="root-class">
<el-button size="mini" @click="cancel()">{{ $t('commons.cancel') }}</el-button> <el-button size="mini" @click="cancel()">{{ $t('commons.cancel') }}</el-button>
<el-button type="primary" size="mini" @click="save()">{{ $t('commons.confirm') }}</el-button> <el-button type="primary" size="mini" @click="save()">{{ $t('commons.confirm') }}</el-button>
...@@ -32,7 +32,8 @@ ...@@ -32,7 +32,8 @@
</template> </template>
<script> <script>
import { post, panelSave } from '@/api/panel/panel' import { panelSave } from '@/api/panel/panel'
import { showTemplateList } from '@/api/system/template'
import TemplateAllList from './TemplateAllList' import TemplateAllList from './TemplateAllList'
export default { export default {
...@@ -76,10 +77,11 @@ export default { ...@@ -76,10 +77,11 @@ export default {
} }
}, },
created() { created() {
this.getTree() // this.getTree()
}, },
methods: { methods: {
showCurrentTemplateInfo(data) { showCurrentTemplateInfo(data) {
debugger
this.editPanel.panelInfo.name = data.name this.editPanel.panelInfo.name = data.name
this.editPanel.panelInfo.panelStyle = data.templateStyle this.editPanel.panelInfo.panelStyle = data.templateStyle
this.editPanel.panelInfo.panelData = data.templateData this.editPanel.panelInfo.panelData = data.templateData
...@@ -90,7 +92,7 @@ export default { ...@@ -90,7 +92,7 @@ export default {
level: '-1', level: '-1',
withChildren: true withChildren: true
} }
post('/template/templateList', request).then(res => { showTemplateList(request).then(res => {
this.templateList = res.data this.templateList = res.data
}) })
}, },
...@@ -104,6 +106,10 @@ export default { ...@@ -104,6 +106,10 @@ export default {
this.$warning(this.$t('chart.name_can_not_empty')) this.$warning(this.$t('chart.name_can_not_empty'))
return false return false
} }
if (!this.editPanel.panelInfo.panelData) {
this.$warning(this.$t('chart.template_can_not_empty'))
return false
}
panelSave(this.editPanel.panelInfo).then(response => { panelSave(this.editPanel.panelInfo).then(response => {
this.$message({ this.$message({
message: this.$t('commons.save_success'), message: this.$t('commons.save_success'),
...@@ -156,13 +162,13 @@ export default { ...@@ -156,13 +162,13 @@ export default {
.preview { .preview {
margin-top: 5px; margin-top: 5px;
border:1px solid #E6E6E6; border:1px solid #E6E6E6;
height:300px !important; height:250px !important;
overflow:hidden; overflow:hidden;
background-size: 100% 100% !important; background-size: 100% 100% !important;
} }
.preview-show { .preview-show {
border-left:1px solid #E6E6E6; border-left:1px solid #E6E6E6;
height:300px; height:250px;
background-size: 100% 100% !important; background-size: 100% 100% !important;
} }
</style> </style>
...@@ -42,8 +42,8 @@ export default { ...@@ -42,8 +42,8 @@ export default {
level: '1', level: '1',
pid: this.pid, pid: this.pid,
name: '', name: '',
templateStyle: '', templateStyle: null,
templateData: '', templateData: null,
snapshot: '' snapshot: ''
} }
} }
...@@ -70,6 +70,10 @@ export default { ...@@ -70,6 +70,10 @@ export default {
this.$warning(this.$t('chart.name_can_not_empty')) this.$warning(this.$t('chart.name_can_not_empty'))
return false return false
} }
if (!this.templateInfo.templateData) {
this.$warning(this.$t('chart.template_can_not_empty'))
return false
}
const nameCheckRequest = { const nameCheckRequest = {
pid: this.templateInfo.pid, pid: this.templateInfo.pid,
name: this.templateInfo.name, name: this.templateInfo.name,
......
...@@ -71,7 +71,7 @@ import DeAsideContainer from '@/components/dataease/DeAsideContainer' ...@@ -71,7 +71,7 @@ import DeAsideContainer from '@/components/dataease/DeAsideContainer'
import TemplateList from './component/TemplateList' import TemplateList from './component/TemplateList'
import TemplateItem from './component/TemplateItem' import TemplateItem from './component/TemplateItem'
import TemplateImport from './component/TemplateImport' import TemplateImport from './component/TemplateImport'
import { save, templateDelete, showTemplateList } from '@/api/system/template' import { save, templateDelete, find } from '@/api/system/template'
export default { export default {
name: 'PanelMain', name: 'PanelMain',
...@@ -108,7 +108,7 @@ export default { ...@@ -108,7 +108,7 @@ export default {
showCurrentTemplate(pid) { showCurrentTemplate(pid) {
this.currentTemplateId = pid this.currentTemplateId = pid
if (this.currentTemplateId) { if (this.currentTemplateId) {
showTemplateList({ pid: this.currentTemplateId }).then(response => { find({ pid: this.currentTemplateId }).then(response => {
this.currentTemplateShowList = response.data this.currentTemplateShowList = response.data
}) })
} }
...@@ -157,7 +157,7 @@ export default { ...@@ -157,7 +157,7 @@ export default {
templateType: this.currentTemplateType, templateType: this.currentTemplateType,
level: '0' level: '0'
} }
showTemplateList(request).then(res => { find(request).then(res => {
this.templateList = res.data this.templateList = res.data
this.showFirst() this.showFirst()
}) })
......
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
<layout-content :header="formType=='add' ? $t('user.create') : $t('user.modify')" back-name="system-user"> <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 ref="createUserForm" :model="form" :rules="rule" size="small" label-width="auto" label-position="right">
<el-form-item label="ID" prop="username"> <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>
<el-form-item :label="$t('commons.phone')" prop="phone"> <el-form-item :label="$t('commons.phone')" prop="phone">
<el-input v-model="form.phone" /> <el-input v-model="form.phone" />
...@@ -27,7 +27,7 @@ ...@@ -27,7 +27,7 @@
</el-radio-group> </el-radio-group>
</el-form-item> </el-form-item>
<el-form-item :label="$t('commons.status')"> <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="1">{{ $t('commons.enable') }}</el-radio>
<el-radio :label="0">{{ $t('commons.disable') }}</el-radio> <el-radio :label="0">{{ $t('commons.disable') }}</el-radio>
</el-radio-group> </el-radio-group>
...@@ -47,6 +47,7 @@ ...@@ -47,6 +47,7 @@
<el-select <el-select
v-model="form.roleIds" v-model="form.roleIds"
style="width: 100%" style="width: 100%"
:disabled="formType !== 'add' && form.isAdmin"
multiple multiple
:placeholder="$t('commons.please_select')" :placeholder="$t('commons.please_select')"
@remove-tag="deleteTag" @remove-tag="deleteTag"
......
...@@ -187,6 +187,7 @@ export default { ...@@ -187,6 +187,7 @@ export default {
show: this.checkPermission(['user:edit']) show: this.checkPermission(['user:edit'])
}, { }, {
label: this.$t('commons.delete'), icon: 'el-icon-delete', type: 'danger', click: this.del, label: this.$t('commons.delete'), icon: 'el-icon-delete', type: 'danger', click: this.del,
disabled: this.btnDisabled,
show: this.checkPermission(['user:del']) show: this.checkPermission(['user:del'])
}, { }, {
label: this.$t('member.edit_password'), icon: 'el-icon-s-tools', type: 'success', click: this.editPassword, label: this.$t('member.edit_password'), icon: 'el-icon-s-tools', type: 'success', click: this.editPassword,
...@@ -489,6 +490,9 @@ export default { ...@@ -489,6 +490,9 @@ export default {
allRoles().then(res => { allRoles().then(res => {
this.roles = res.data this.roles = res.data
}) })
},
btnDisabled(row) {
return row.userId === 1
} }
} }
} }
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论