mirror of
https://github.com/jumpserver/lina.git
synced 2025-11-17 13:11:01 +00:00
Compare commits
11 Commits
pr@dev@k8s
...
v2.4.5
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
683a46071f | ||
|
|
2faf85ccc3 | ||
|
|
04c6e334cd | ||
|
|
740ca74efb | ||
|
|
0c01c5a383 | ||
|
|
04b9b20169 | ||
|
|
052bc03e0e | ||
|
|
025b1a43a0 | ||
|
|
93cbbad672 | ||
|
|
0a8230b7da | ||
|
|
d5ed85f973 |
@@ -20,6 +20,7 @@
|
|||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@ztree/ztree_v3": "3.5.44",
|
"@ztree/ztree_v3": "3.5.44",
|
||||||
"axios": "0.18.1",
|
"axios": "0.18.1",
|
||||||
|
"axios-retry": "^3.1.9",
|
||||||
"deepmerge": "^4.2.2",
|
"deepmerge": "^4.2.2",
|
||||||
"echarts": "^4.7.0",
|
"echarts": "^4.7.0",
|
||||||
"element-ui": "2.13.2",
|
"element-ui": "2.13.2",
|
||||||
|
|||||||
@@ -1,6 +1,9 @@
|
|||||||
<template>
|
<template>
|
||||||
<div>
|
<div>
|
||||||
<div class="treebox">
|
<ul v-show="loading" class="ztree">
|
||||||
|
{{ this.$t('common.tree.Loading') }}...
|
||||||
|
</ul>
|
||||||
|
<div v-show="!loading" class="treebox">
|
||||||
<ul :id="iZTreeID" class="ztree">
|
<ul :id="iZTreeID" class="ztree">
|
||||||
{{ this.$t('common.tree.Loading') }}...
|
{{ this.$t('common.tree.Loading') }}...
|
||||||
</ul>
|
</ul>
|
||||||
@@ -22,6 +25,7 @@
|
|||||||
import $ from '@/utils/jquery-vendor.js'
|
import $ from '@/utils/jquery-vendor.js'
|
||||||
import '@ztree/ztree_v3/js/jquery.ztree.all.min.js'
|
import '@ztree/ztree_v3/js/jquery.ztree.all.min.js'
|
||||||
import '@/styles/ztree.css'
|
import '@/styles/ztree.css'
|
||||||
|
import axiosRetry from 'axios-retry'
|
||||||
|
|
||||||
const defaultObject = {
|
const defaultObject = {
|
||||||
type: Object,
|
type: Object,
|
||||||
@@ -40,7 +44,8 @@ export default {
|
|||||||
iRMenuID: `rMenu_${this._uid}`,
|
iRMenuID: `rMenu_${this._uid}`,
|
||||||
zTree: '',
|
zTree: '',
|
||||||
rMenu: '',
|
rMenu: '',
|
||||||
init: false
|
init: false,
|
||||||
|
loading: false
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
computed: {
|
computed: {
|
||||||
@@ -57,14 +62,26 @@ export default {
|
|||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
initTree: function() {
|
initTree: function() {
|
||||||
|
const vm = this
|
||||||
let treeUrl
|
let treeUrl
|
||||||
|
if (this.init) {
|
||||||
|
this.loading = true
|
||||||
|
}
|
||||||
if (this.init && this.treeSetting.treeUrl.indexOf('/perms/') !== -1 && this.treeSetting.treeUrl.indexOf('rebuild_tree') === -1) {
|
if (this.init && this.treeSetting.treeUrl.indexOf('/perms/') !== -1 && this.treeSetting.treeUrl.indexOf('rebuild_tree') === -1) {
|
||||||
treeUrl = (this.treeSetting.treeUrl.indexOf('?') === -1) ? `${this.treeSetting.treeUrl}?rebuild_tree=1` : `${this.treeSetting.treeUrl}&rebuild_tree=1`
|
treeUrl = (this.treeSetting.treeUrl.indexOf('?') === -1) ? `${this.treeSetting.treeUrl}?rebuild_tree=1` : `${this.treeSetting.treeUrl}&rebuild_tree=1`
|
||||||
} else {
|
} else {
|
||||||
treeUrl = this.treeSetting.treeUrl
|
treeUrl = this.treeSetting.treeUrl
|
||||||
this.init = true
|
|
||||||
}
|
}
|
||||||
this.$axios.get(treeUrl).then(res => {
|
this.$axios.get(treeUrl, {
|
||||||
|
'axios-retry': {
|
||||||
|
retries: 20,
|
||||||
|
retryCondition: e => {
|
||||||
|
return axiosRetry.isNetworkOrIdempotentRequestError(e) || e.response.status === 409
|
||||||
|
},
|
||||||
|
shouldResetTimeout: true,
|
||||||
|
retryDelay: () => { return 5000 }
|
||||||
|
}
|
||||||
|
}).then(res => {
|
||||||
if (!res) {
|
if (!res) {
|
||||||
res = []
|
res = []
|
||||||
}
|
}
|
||||||
@@ -74,6 +91,9 @@ export default {
|
|||||||
})
|
})
|
||||||
}
|
}
|
||||||
this.treeSetting.treeUrl = treeUrl
|
this.treeSetting.treeUrl = treeUrl
|
||||||
|
if (this.init) {
|
||||||
|
vm.zTree.destroy()
|
||||||
|
}
|
||||||
this.zTree = $.fn.zTree.init($(`#${this.iZTreeID}`), this.treeSetting, res)
|
this.zTree = $.fn.zTree.init($(`#${this.iZTreeID}`), this.treeSetting, res)
|
||||||
if (this.treeSetting.showRefresh) {
|
if (this.treeSetting.showRefresh) {
|
||||||
this.rootNodeAddDom(
|
this.rootNodeAddDom(
|
||||||
@@ -88,6 +108,9 @@ export default {
|
|||||||
if (this.treeSetting.otherMenu) {
|
if (this.treeSetting.otherMenu) {
|
||||||
$('.menu-actions').append(this.otherMenu)
|
$('.menu-actions').append(this.otherMenu)
|
||||||
}
|
}
|
||||||
|
}).finally(_ => {
|
||||||
|
vm.loading = false
|
||||||
|
vm.init = true
|
||||||
})
|
})
|
||||||
},
|
},
|
||||||
rootNodeAddDom: function(ztree, callback) {
|
rootNodeAddDom: function(ztree, callback) {
|
||||||
@@ -104,7 +127,6 @@ export default {
|
|||||||
}
|
}
|
||||||
const refreshIconRef = $('#tree-refresh')
|
const refreshIconRef = $('#tree-refresh')
|
||||||
refreshIconRef.bind('click', function() {
|
refreshIconRef.bind('click', function() {
|
||||||
ztree.destroy()
|
|
||||||
const result = callback()
|
const result = callback()
|
||||||
if (result && result.then) {
|
if (result && result.then) {
|
||||||
result.finally(() => {
|
result.finally(() => {
|
||||||
|
|||||||
@@ -170,6 +170,7 @@
|
|||||||
"Auth": "认证",
|
"Auth": "认证",
|
||||||
"BadRequestErrorMsg": "请求错误,请检查填写内容",
|
"BadRequestErrorMsg": "请求错误,请检查填写内容",
|
||||||
"BadRoleErrorMsg": "请求错误,无该操作权限",
|
"BadRoleErrorMsg": "请求错误,无该操作权限",
|
||||||
|
"BadConflictErrorMsg": "正在刷新中,请稍后再试",
|
||||||
"Basic": "基本",
|
"Basic": "基本",
|
||||||
"BasicInfo": "基本信息",
|
"BasicInfo": "基本信息",
|
||||||
"Cancel": "取消",
|
"Cancel": "取消",
|
||||||
|
|||||||
@@ -170,6 +170,7 @@
|
|||||||
"Auth": "Authorization",
|
"Auth": "Authorization",
|
||||||
"BadRequestErrorMsg": "Bad request, please check again",
|
"BadRequestErrorMsg": "Bad request, please check again",
|
||||||
"BadRoleErrorMsg": "Bad request, no permission for this operation",
|
"BadRoleErrorMsg": "Bad request, no permission for this operation",
|
||||||
|
"BadConflictErrorMsg": "Refreshing, please try again later",
|
||||||
"Basic": "Basic",
|
"Basic": "Basic",
|
||||||
"BasicInfo": "Basic info",
|
"BasicInfo": "Basic info",
|
||||||
"Cancel": "Cancel",
|
"Cancel": "Cancel",
|
||||||
|
|||||||
@@ -24,7 +24,7 @@ export default {
|
|||||||
'currentUser'
|
'currentUser'
|
||||||
]),
|
]),
|
||||||
isExpire() {
|
isExpire() {
|
||||||
if (this.currentUser.role !== 'Admin') {
|
if (!this.publicSettings.XPACK_ENABLED || this.currentUser.role !== 'Admin') {
|
||||||
return false
|
return false
|
||||||
}
|
}
|
||||||
const intervalDays = this.getIntervalDays(this.licenseData.date_expired)
|
const intervalDays = this.getIntervalDays(this.licenseData.date_expired)
|
||||||
|
|||||||
@@ -4,6 +4,7 @@ import { getTokenFromCookie } from '@/utils/auth'
|
|||||||
import { refreshSessionIdAge } from '@/api/users'
|
import { refreshSessionIdAge } from '@/api/users'
|
||||||
import { Message, MessageBox } from 'element-ui'
|
import { Message, MessageBox } from 'element-ui'
|
||||||
import store from '@/store'
|
import store from '@/store'
|
||||||
|
import axiosRetry from 'axios-retry'
|
||||||
|
|
||||||
// create an axios instance
|
// create an axios instance
|
||||||
const service = axios.create({
|
const service = axios.create({
|
||||||
@@ -75,6 +76,10 @@ function ifBadRequest({ response, error }) {
|
|||||||
if (response.status === 403) {
|
if (response.status === 403) {
|
||||||
error.message = i18n.t('common.BadRoleErrorMsg')
|
error.message = i18n.t('common.BadRoleErrorMsg')
|
||||||
}
|
}
|
||||||
|
if (response.status === 409) {
|
||||||
|
error.response.status = 409
|
||||||
|
error.message = i18n.t('common.BadConflictErrorMsg')
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
export function flashErrorMsg({ response, error }) {
|
export function flashErrorMsg({ response, error }) {
|
||||||
@@ -141,4 +146,9 @@ service.interceptors.response.use(
|
|||||||
}
|
}
|
||||||
)
|
)
|
||||||
|
|
||||||
|
axiosRetry(service, {
|
||||||
|
// 默认不开启请求重试
|
||||||
|
retries: 0
|
||||||
|
})
|
||||||
|
|
||||||
export default service
|
export default service
|
||||||
|
|||||||
@@ -85,7 +85,12 @@ export default {
|
|||||||
},
|
},
|
||||||
actions: {
|
actions: {
|
||||||
formatterArgs: {
|
formatterArgs: {
|
||||||
updateRoute: 'AssetPermissionUpdate'
|
updateRoute: 'AssetPermissionUpdate',
|
||||||
|
performDelete: ({ row, col }) => {
|
||||||
|
const id = row.id
|
||||||
|
const url = `/api/v1/perms/asset-permissions/${id}/`
|
||||||
|
return this.$axios.delete(url)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -46,7 +46,7 @@ export default {
|
|||||||
}
|
}
|
||||||
],
|
],
|
||||||
tableConfig: {
|
tableConfig: {
|
||||||
url: `/api/v1/orgs/org-memeber-relation/?org_id=${this.object.id}`,
|
url: `/api/v1/orgs/org-member-relation/?org_id=${this.object.id}`,
|
||||||
columns: [
|
columns: [
|
||||||
'user_display', 'role_display', 'delete_action'
|
'user_display', 'role_display', 'delete_action'
|
||||||
],
|
],
|
||||||
@@ -65,7 +65,7 @@ export default {
|
|||||||
objects: 'all',
|
objects: 'all',
|
||||||
formatter: DeleteActionFormatter,
|
formatter: DeleteActionFormatter,
|
||||||
hasBackSlash: true,
|
hasBackSlash: true,
|
||||||
deleteUrl: `/api/v1/orgs/org-memeber-relation/?id=`
|
deleteUrl: `/api/v1/orgs/org-member-relation/?id=`
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
tableAttrs: {
|
tableAttrs: {
|
||||||
@@ -96,7 +96,7 @@ export default {
|
|||||||
hasObjectsId: this.object.users,
|
hasObjectsId: this.object.users,
|
||||||
showHasObjects: false,
|
showHasObjects: false,
|
||||||
performAdd: (items) => {
|
performAdd: (items) => {
|
||||||
const relationUrl = `/api/v1/orgs/org-memeber-relation/`
|
const relationUrl = `/api/v1/orgs/org-member-relation/`
|
||||||
const data = []
|
const data = []
|
||||||
for (const user of items) {
|
for (const user of items) {
|
||||||
data.push({ org: this.object.id, user: user.value, role: this.defaultOrgRole })
|
data.push({ org: this.object.id, user: user.value, role: this.defaultOrgRole })
|
||||||
|
|||||||
Reference in New Issue
Block a user