+
diff --git a/frontend/src/views/panel/filter/FilterDialog.vue b/frontend/src/views/panel/filter/FilterDialog.vue
index 1e201bb583..56a17f654a 100644
--- a/frontend/src/views/panel/filter/FilterDialog.vue
+++ b/frontend/src/views/panel/filter/FilterDialog.vue
@@ -275,7 +275,7 @@
:control-attrs="myAttrs"
:child-views="childViews"
:dataset-params="datasetParams"
- :activeName="activeName"
+ :active-name="activeName"
/>
diff --git a/frontend/src/views/panel/filter/filterMain/FilterControl.vue b/frontend/src/views/panel/filter/filterMain/FilterControl.vue
index 352138253b..ac77d2d6ab 100644
--- a/frontend/src/views/panel/filter/filterMain/FilterControl.vue
+++ b/frontend/src/views/panel/filter/filterMain/FilterControl.vue
@@ -117,7 +117,7 @@
@change="checkedViewsChange"
>
[]
- },
- activeName:{
-
}
+
},
data() {
return {
@@ -310,6 +308,12 @@ export default {
computed: {
fieldIds() {
return this.element.options.attrs.fieldId || []
+ },
+ curTableViews() {
+ const tableIdList = this.element.options.attrs.dragItems.map(item => item.tableId) || []
+
+ const views = this.childViews.viewInfos.filter(view => tableIdList.includes(view.tableId))
+ return views
}
},
watch: {
@@ -344,18 +348,18 @@ export default {
hasParam = true
}
}
- if(!hasParam){
+ if (!hasParam) {
this.allParams.push(this.datasetParams[j])
}
}
}
}
},
- 'activeName':{
+ 'activeName': {
handler(newName, oldName) {
- if(this.activeName === 'assembly'){
+ if (this.activeName === 'assembly') {
this.allParams = JSON.parse(JSON.stringify(this.childViews.datasetParams))
- }else {
+ } else {
if (this.datasetParams.length > 0) {
for (var j = 0; j < this.datasetParams.length; j++) {
var hasParam = false
@@ -364,7 +368,7 @@ export default {
hasParam = true
}
}
- if(!hasParam){
+ if (!hasParam) {
this.allParams.push(this.datasetParams[j])
}
}
diff --git a/frontend/src/views/system/about/index.vue b/frontend/src/views/system/about/index.vue
index 68cca784c8..2afacfda47 100644
--- a/frontend/src/views/system/about/index.vue
+++ b/frontend/src/views/system/about/index.vue
@@ -48,6 +48,18 @@
{{ build }}
+
+ {{ $t('about.serial_no') }} |
+
+ {{ license.serialNo }}
+ |
+
+
+ {{ $t('about.remark') }} |
+
+ {{ license.remark }}
+ |
+
@@ -137,7 +149,9 @@ export default {
expired: result.license ? result.license.expired : '',
count: result.license ? result.license.count : '',
version: result.license ? result.license.version : '',
- edition: result.license ? result.license.edition : ''
+ edition: result.license ? result.license.edition : '',
+ serialNo: result.license ? result.license.serialNo : '',
+ remark: result.license ? result.license.remark : ''
}
},
importLic(file) {
diff --git a/frontend/src/views/system/datasource/DsTree.vue b/frontend/src/views/system/datasource/DsTree.vue
index b3aa20e810..b546ca3449 100644
--- a/frontend/src/views/system/datasource/DsTree.vue
+++ b/frontend/src/views/system/datasource/DsTree.vue
@@ -760,7 +760,7 @@ export default {
params.link = this.$t('datasource.click_to_check')
params.content = this.$t('datasource.cannot_be_deleted_datasource')
params.templateDel = msgContent
- params.linkTo = this.linkTo.bind(this, { queryType, id })
+ params.linkTo = this.linkTo.bind(this, { queryType, id, name: label })
this.withLink(params)
return
}
diff --git a/frontend/src/views/system/plugin/index.vue b/frontend/src/views/system/plugin/index.vue
index 88d169b7c2..4af4b481ae 100644
--- a/frontend/src/views/system/plugin/index.vue
+++ b/frontend/src/views/system/plugin/index.vue
@@ -263,7 +263,7 @@ export default {
},
del(row) {
- if (row.pluginId < 4) return
+ if (this.btnDisabled(row)) return
const options = {
title: 'components.uninstall_the_plugin',
content: 'components.it_takes_effect',
diff --git a/frontend/src/views/system/relationship/index.vue b/frontend/src/views/system/relationship/index.vue
index e94c940330..11e3b7e977 100644
--- a/frontend/src/views/system/relationship/index.vue
+++ b/frontend/src/views/system/relationship/index.vue
@@ -1,11 +1,14 @@
-
+
{{ $t('commons.consanguinity') }}
@@ -15,59 +18,114 @@
>
-
+ />
-
-
+
-
-
-
+
+
+
+
+
+
+ {{ data.name }}
+
+
+
+
+
+
+
+
- {{
- $t('commons.adv_search.search')
- }}
+
+ {{ $t('commons.adv_search.search') }}
+
+ @click="activeQueryType('date')"
+ />
-
+
-
+
-
+
dataSourceName === ele.value) ||
- {}
return {
- queryType,
- num: obj.value,
- label: obj.label
+ queryType: this.formInline.queryType,
+ num: this.formInline.dataSourceName,
+ label: this.nodeData.name
}
},
queryTypeTitle() {
@@ -189,9 +251,9 @@ export default {
},
created() {
this.routerWithParams = this.$route.query
- const { id, queryType } = this.routerWithParams
+ const { id, queryType, name } = this.routerWithParams
if (id && queryType) {
- this.searchDetail(id, queryType)
+ this.searchDetail(id, queryType, name)
return
}
this.listDatasource()
@@ -204,11 +266,12 @@ export default {
this.getChartSize()
},
methods: {
+ data,
activeQueryType(activeIcon) {
this.activeIcon = activeIcon
this.onSubmit()
},
- async searchDetail(id, queryType) {
+ async searchDetail(id, queryType, name) {
switch (queryType) {
case 'datasource':
await this.listDatasource()
@@ -223,6 +286,13 @@ export default {
break
}
this.formInline = { queryType, dataSourceName: id }
+ this.nodeData = { id, name }
+ this.ignoredOptions = [this.nodeData]
+ this.$refs.resourceTree.setCurrentKey(id)
+ const currentParents = this.$refs.resourceTree.getNodePath(this.nodeData)
+ currentParents.forEach((node) => {
+ this.$refs.resourceTree.store.nodesMap[node.id].expanded = true
+ })
this.getChartData()
},
getChartData() {
@@ -270,7 +340,7 @@ export default {
})
},
formatter(row, column, cellValue) {
- return cellValue ? cellValue : '-'
+ return cellValue || '-'
},
initTable() {
this.paginationConfig.total = this.treeData.length
@@ -302,7 +372,7 @@ export default {
}
})
},
- getChartSize: _.debounce(function () {
+ getChartSize: _.debounce(function() {
const dom = document.querySelector(
this.activeIcon === 'date' ? '.consanguinity-table' : '#consanguinity'
)
@@ -313,44 +383,67 @@ export default {
}, 200),
listDatasource() {
return listDatasource().then((res) => {
- const arr = res?.data || []
- this.dataSourceNameList = arr.map((ele) => ({
- value: ele.id,
- label: ele.name
- }))
+ const dsArr = res?.data || []
+ const typeMap = {}
+ dsArr.forEach((item) => {
+ if (!typeMap[item.type]) {
+ typeMap[item.type] = [{ id: item.id, name: item.name, type: 'datasource' }]
+ this.resourceTreeData.push({
+ id: item.type,
+ name: item.typeDesc,
+ type: 'folder',
+ children: typeMap[item.type]
+ })
+ } else {
+ typeMap[item.type].push({ id: item.id, name: item.name, type: 'datasource' })
+ }
+ })
})
},
getDatasetList() {
- return getDatasetList().then((res) => {
- const arr = res?.data || []
- this.dataSourceNameList = arr.map((ele) => ({
- value: ele.id,
- label: ele.name
- }))
+ return queryAuthModel({ modelType: 'dataset' }, false).then((res) => {
+ this.resourceTreeData = res.data
})
},
getPanelGroupList() {
- return getPanelGroupList().then((res) => {
- const arr = res?.data || []
- this.dataSourceNameList = arr.map((ele) => ({
- value: ele.id,
- label: ele.name
- }))
+ return defaultTree({ panelType: 'system' }, true).then((res) => {
+ if (res.data?.length > 0) {
+ const defaultPanelTree = {
+ id: 'defaultPanel',
+ name: this.$t('panel.default_panel'),
+ nodeType: 'folder',
+ children: res.data
+ }
+ this.resourceTreeData.push(defaultPanelTree)
+ }
+ }).then(() => {
+ const form = {
+ panelType: 'self',
+ sort: 'create_time desc,node_type desc,name asc'
+ }
+ groupTree(form, true).then((res) => {
+ this.resourceTreeData = [...this.resourceTreeData, ...res.data]
+ })
})
},
queryTypeChange(val) {
this.formInline.dataSourceName = ''
- this.dataSourceNameList = []
+ this.resourceTreeData = []
+ this.nodeData = {}
+ this.currentNode = {}
switch (val) {
- case 'datasource':
+ case 'datasource': {
this.listDatasource()
break
- case 'dataset':
+ }
+ case 'dataset': {
this.getDatasetList()
break
- case 'panel':
+ }
+ case 'panel': {
this.getPanelGroupList()
break
+ }
default:
break
}
@@ -374,6 +467,88 @@ export default {
handleCurrentChange(currentPage) {
this.paginationConfig.currentPage = currentPage
this.onSubmit()
+ },
+ getIconClass(queryType, nodeData) {
+ switch (queryType) {
+ case 'datasource': {
+ if (nodeData.type === 'folder') {
+ return 'scene'
+ }
+ return 'db-de'
+ }
+ case 'dataset': {
+ if (nodeData.modelInnerType === 'group') {
+ return 'scene'
+ }
+ return `ds-${nodeData.modelInnerType}`
+ }
+ case 'panel':
+ if (nodeData.nodeType === 'panel') {
+ let iconClass = 'panel-'
+ if (nodeData.mobileLayout) {
+ iconClass += 'mobile-'
+ }
+ iconClass += nodeData.status
+ return iconClass
+ }
+ return 'scene'
+ default:
+ break
+ }
+ },
+ getNodeClass(queryType, nodeData) {
+ switch (queryType) {
+ case 'dataset': {
+ if (nodeData.modelInnerType !== 'group') {
+ return `ds-icon-${nodeData.modelInnerType}`
+ }
+ return ''
+ }
+ case 'panel': {
+ if (nodeData.nodeType === 'panel') {
+ return 'ds-icon-scene'
+ }
+ return ''
+ }
+ default: {
+ return ''
+ }
+ }
+ },
+ filterNodeMethod(value, data) {
+ if (!value) {
+ return true
+ }
+ return data.name.toLowerCase().indexOf(value.toLowerCase()) !== -1
+ },
+ filterMethod(filterText) {
+ this.$refs.resourceTree.filter(filterText)
+ },
+ nodeClick(data, node) {
+ if (node.isLeaf) {
+ this.ignoredOptions = [{ id: data.id, name: data.name }]
+ this.formInline.dataSourceName = data.id
+ this.showTree = false
+ this.nodeData = data
+ this.currentNode = node
+ }
+ },
+ resetFilter() {
+ if (this.showTree) {
+ this.showTree = false
+ this.$refs.resourceTree.filter()
+ this.$refs.resourceTree.setCurrentKey(this.formInline.dataSourceName)
+ if (this.formInline.dataSourceName === '') {
+ this.$refs.resourceTree.setCurrentKey(null)
+ }
+ if (this.formInline.dataSourceName) {
+ const currentParents = this.$refs.resourceTree.getNodePath(this.nodeData).map((item) => item.id)
+ const nodesMap = this.$refs.resourceTree.store.nodesMap || {}
+ for (const key in nodesMap) {
+ nodesMap[key].expanded = currentParents.includes(key)
+ }
+ }
+ }
}
}
}
@@ -428,4 +603,31 @@ export default {
}
}
}
+.custom-tree-node {
+ flex: 1;
+ display: flex;
+ align-items: center;
+ justify-content: space-between;
+ font-size: 14px;
+ padding-right: 8px;
+}
+
+.custom-tree-node-list {
+ flex: 1;
+ display: flex;
+ align-items: center;
+ justify-content: space-between;
+ font-size: 14px;
+ padding: 0 8px;
+}
+
+.father .child {
+ /*display: none;*/
+ visibility: hidden;
+}
+
+.father:hover .child {
+ /*display: inline;*/
+ visibility: visible;
+}
diff --git a/frontend/src/views/system/user/index.vue b/frontend/src/views/system/user/index.vue
index cd3b941850..4f9bdb603f 100644
--- a/frontend/src/views/system/user/index.vue
+++ b/frontend/src/views/system/user/index.vue
@@ -285,6 +285,7 @@
{{ $t("member.edit_password") }}
@@ -436,6 +437,9 @@ export default {
bus.$off('reload-user-grid', this.search)
},
methods: {
+ resetPwdDisabled(row) {
+ return ((row.from ?? '') !== '') && row.from > 0
+ },
resizeObserver() {
this.resizeForFilter = new ResizeObserver(entries => {
if (!this.filterTexts.length) return
diff --git a/mobile/pom.xml b/mobile/pom.xml
index 7e1d0d87dc..c565ce5e97 100644
--- a/mobile/pom.xml
+++ b/mobile/pom.xml
@@ -6,7 +6,7 @@
dataease-server
io.dataease
- 1.18.0
+ 1.18.2
4.0.0
diff --git a/pom.xml b/pom.xml
index 062d1ee50e..0fcfa4d2bd 100644
--- a/pom.xml
+++ b/pom.xml
@@ -5,7 +5,7 @@
4.0.0
io.dataease
dataease-server
- 1.18.0
+ 1.18.2
pom