Compare commits

...

11 Commits

Author SHA1 Message Date
xinwen
683a46071f Merge pull request #476 from jumpserver/pr@v2.4@add_tree_retry
fix: 添加Tree加载重试组件
2020-11-04 14:57:30 +08:00
Orange
2faf85ccc3 fix: 添加Tree加载重试组件 2020-11-04 12:00:39 +08:00
Orange
04c6e334cd fix: 添加Tree加载重试组件 2020-11-03 21:21:29 +08:00
Orange
740ca74efb fix: 添加Tree加载重试组件 2020-11-03 21:13:38 +08:00
Orange
0c01c5a383 fix: 添加Tree加载重试组件 2020-11-03 19:54:03 +08:00
Orange
04b9b20169 fix: 修复组织url拼写错误 2020-11-03 18:15:48 +08:00
xinwen
052bc03e0e fix(perms): 用户授权树重建冲突时弹出提示信息,并保留之前的树 2020-11-02 21:11:43 +08:00
xinwen
025b1a43a0 Merge pull request #469 from jumpserver/pr@v2.4@add_error_message_409
fix: 添加409错误信息
2020-11-02 17:49:34 +08:00
Orange
93cbbad672 fix: 添加409错误信息 2020-11-02 17:45:27 +08:00
Orange
0a8230b7da fix: 修复删除节点下资产授权报错的问题 2020-10-23 16:57:01 +08:00
jym503558564
d5ed85f973 perf(licenseTip):修复license过期提醒,开源版本出现split提示问题 2020-10-21 12:59:59 +08:00
8 changed files with 50 additions and 10 deletions

View File

@@ -20,6 +20,7 @@
"dependencies": {
"@ztree/ztree_v3": "3.5.44",
"axios": "0.18.1",
"axios-retry": "^3.1.9",
"deepmerge": "^4.2.2",
"echarts": "^4.7.0",
"element-ui": "2.13.2",

View File

@@ -1,6 +1,9 @@
<template>
<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">
{{ this.$t('common.tree.Loading') }}...
</ul>
@@ -22,6 +25,7 @@
import $ from '@/utils/jquery-vendor.js'
import '@ztree/ztree_v3/js/jquery.ztree.all.min.js'
import '@/styles/ztree.css'
import axiosRetry from 'axios-retry'
const defaultObject = {
type: Object,
@@ -40,7 +44,8 @@ export default {
iRMenuID: `rMenu_${this._uid}`,
zTree: '',
rMenu: '',
init: false
init: false,
loading: false
}
},
computed: {
@@ -57,14 +62,26 @@ export default {
},
methods: {
initTree: function() {
const vm = this
let treeUrl
if (this.init) {
this.loading = true
}
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`
} else {
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) {
res = []
}
@@ -74,6 +91,9 @@ export default {
})
}
this.treeSetting.treeUrl = treeUrl
if (this.init) {
vm.zTree.destroy()
}
this.zTree = $.fn.zTree.init($(`#${this.iZTreeID}`), this.treeSetting, res)
if (this.treeSetting.showRefresh) {
this.rootNodeAddDom(
@@ -88,6 +108,9 @@ export default {
if (this.treeSetting.otherMenu) {
$('.menu-actions').append(this.otherMenu)
}
}).finally(_ => {
vm.loading = false
vm.init = true
})
},
rootNodeAddDom: function(ztree, callback) {
@@ -104,7 +127,6 @@ export default {
}
const refreshIconRef = $('#tree-refresh')
refreshIconRef.bind('click', function() {
ztree.destroy()
const result = callback()
if (result && result.then) {
result.finally(() => {

View File

@@ -170,6 +170,7 @@
"Auth": "认证",
"BadRequestErrorMsg": "请求错误,请检查填写内容",
"BadRoleErrorMsg": "请求错误,无该操作权限",
"BadConflictErrorMsg": "正在刷新中,请稍后再试",
"Basic": "基本",
"BasicInfo": "基本信息",
"Cancel": "取消",

View File

@@ -170,6 +170,7 @@
"Auth": "Authorization",
"BadRequestErrorMsg": "Bad request, please check again",
"BadRoleErrorMsg": "Bad request, no permission for this operation",
"BadConflictErrorMsg": "Refreshing, please try again later",
"Basic": "Basic",
"BasicInfo": "Basic info",
"Cancel": "Cancel",

View File

@@ -24,7 +24,7 @@ export default {
'currentUser'
]),
isExpire() {
if (this.currentUser.role !== 'Admin') {
if (!this.publicSettings.XPACK_ENABLED || this.currentUser.role !== 'Admin') {
return false
}
const intervalDays = this.getIntervalDays(this.licenseData.date_expired)

View File

@@ -4,6 +4,7 @@ import { getTokenFromCookie } from '@/utils/auth'
import { refreshSessionIdAge } from '@/api/users'
import { Message, MessageBox } from 'element-ui'
import store from '@/store'
import axiosRetry from 'axios-retry'
// create an axios instance
const service = axios.create({
@@ -75,6 +76,10 @@ function ifBadRequest({ response, error }) {
if (response.status === 403) {
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 }) {
@@ -141,4 +146,9 @@ service.interceptors.response.use(
}
)
axiosRetry(service, {
// 默认不开启请求重试
retries: 0
})
export default service

View File

@@ -85,7 +85,12 @@ export default {
},
actions: {
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)
}
}
}
}

View File

@@ -46,7 +46,7 @@ export default {
}
],
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: [
'user_display', 'role_display', 'delete_action'
],
@@ -65,7 +65,7 @@ export default {
objects: 'all',
formatter: DeleteActionFormatter,
hasBackSlash: true,
deleteUrl: `/api/v1/orgs/org-memeber-relation/?id=`
deleteUrl: `/api/v1/orgs/org-member-relation/?id=`
}
},
tableAttrs: {
@@ -96,7 +96,7 @@ export default {
hasObjectsId: this.object.users,
showHasObjects: false,
performAdd: (items) => {
const relationUrl = `/api/v1/orgs/org-memeber-relation/`
const relationUrl = `/api/v1/orgs/org-member-relation/`
const data = []
for (const user of items) {
data.push({ org: this.object.id, user: user.value, role: this.defaultOrgRole })