merge: with dev

This commit is contained in:
ibuler 2025-04-08 19:29:07 +08:00
commit 1b8c5e66bc
14 changed files with 55 additions and 50 deletions

View File

@ -1,4 +1,4 @@
FROM jumpserver/lina-base:20250327_104059 AS stage-build
FROM jumpserver/lina-base:20250408_074136 AS stage-build
ARG VERSION
ENV VERSION=$VERSION

View File

@ -2,7 +2,7 @@
"name": "lina",
"version": "v4.0.0",
"description": "JumpServer Web UI",
"author": "JumpServer Team <support@fit2cloud.com>",
"author": "JumpServer Team <support@lxware.hk>",
"license": "GPL-3.0-or-later",
"scripts": {
"dev": "NODE_OPTIONS=--openssl-legacy-provider vue-cli-service serve",
@ -143,5 +143,6 @@
"src/**/*.{js,vue}": [
"eslint --fix"
]
}
},
"packageManager": "yarn@1.22.22+sha512.a6b2f7906b721bba3d67d4aff083df04dad64c399707841b7acf00f6b133b7ac24255f2652fa22ae3534329dc6180534e98d17432037ff6fd140556e2bb3137e"
}

View File

@ -67,13 +67,13 @@
style="width: 100%; height: 800px;border: none;"
/>
<span v-if="subTypeSelected === 'sms'" style="margin: -1px 0 0 20px;">
<span v-if="subTypeSelected === 'sms' || subTypeSelected === 'email'" style="margin: -1px 0 0 20px;">
<el-button
:disabled="smsBtnDisabled"
size="mini"
style="line-height: 14px; float: right;"
type="primary"
@click="sendSMSCode"
@click="sendCode"
>
{{ smsBtnText }}
</el-button>
@ -204,8 +204,8 @@ export default {
logout() {
window.location.href = `${process.env.VUE_APP_LOGOUT_PATH}?next=${this.$route.fullPath}`
},
sendSMSCode() {
this.$axios.post(`/api/v1/authentication/mfa/select/`, { type: 'sms' }).then(res => {
sendCode() {
this.$axios.post(`/api/v1/authentication/mfa/select/`, { type: this.subTypeSelected }).then(res => {
this.$message.success(this.$tc('VerificationCodeSent'))
let time = 60
this.smsBtnDisabled = true

View File

@ -51,7 +51,7 @@ export default {
window.open(this.URLSite.HELP_SUPPORT_URL, '_blank')
break
case 'enterprise':
window.open('https://jumpserver.org/enterprise.html', '_blank')
window.open('https://www.jumpserver.com/#section-edition', '_blank')
break
case 'about':
this.visible = true

View File

@ -139,7 +139,7 @@ export default {
clearTimeout(this.longPressTimer)
},
handleUpgrade() {
const url = 'http://www.jumpserver.org/support/'
const url = 'https://www.lxware.hk/pages/about'
window.open(url, '_blank')
}
}

View File

@ -41,7 +41,7 @@ export default {
]
},
tableConfig: {
url: `/api/v1/xpack/cloud/sync-instance-tasks/${this.object.task?.id}/instances/`,
url: '',
hasSelection: false,
columns: [
'instance_id',
@ -49,6 +49,10 @@ export default {
prop: 'asset_ip',
label: this.$t('IP')
},
{
prop: 'asset_display',
label: this.$t('Asset')
},
'region',
{
prop: 'status',
@ -76,9 +80,20 @@ export default {
}
}
},
computed: {
dynamicUrl() {
const baseUrl = '/api/v1/xpack/cloud/sync-instance-tasks/instances/'
return this.object ? `${baseUrl}?task_id=${this.object.task.id}` : baseUrl
}
},
mounted() {
this.tableConfig.url = this.dynamicUrl
},
methods: {
DeleteReleasedAssets() {
this.$axios.delete(`/api/v1/xpack/cloud/sync-instance-tasks/${this.object.task?.id}/released-assets/`).then(
const baseUrl = '/api/v1/xpack/cloud/sync-instance-tasks/released-assets/'
const url = this.object ? `${baseUrl}?task_id=${this.object.task.id}` : baseUrl
this.$axios.delete(url).then(
res => {
this.$message.success(this.$tc('DeleteSuccessMsg'))
this.$refs.GenericListTable.$refs.ListTable.reloadTable()

View File

@ -33,7 +33,11 @@ export default {
<ul>
{
newArr.map((r, index) => {
return <li key={index}>{`${r.attr.label} ${r.match.label} ${r.value}`} </li>
return <li>
<el-tag size='mini' key={index}>
{r.attr.label}<strong> {`${r.match.label}`} </strong>{r.value}
</el-tag>
</li>
})
}
</ul>
@ -48,7 +52,11 @@ export default {
<ul>
{
newArr.map((a, index) => {
return <li key={index}>{`${a.attr.label}: ${a.value.label}`} </li>
return <li>
<el-tag size='mini' key={index}>
<strong>{a.attr.label}: </strong>{`${a.value.label}`}
</el-tag>
</li>
})
}
</ul>
@ -58,42 +66,21 @@ export default {
'comment', 'org_name'
]
}
},
computed: {
cardTitle() {
return this.object.name
}
}
}
</script>
<style scoped>
ul {
counter-reset: my-counter;
list-style-type: none;
display: flex;
flex-direction: column;
margin: 0;
padding: 0;
}
li {
counter-increment: my-counter;
position: relative;
padding-left: 20px;
}
li:before {
content: counter(my-counter);
display: block;
position: absolute;
left: 0;
top: 32%;
width: 14px;
height: 14px;
line-height: 12px;
text-align: center;
border: 1px solid;
border-radius: 50%;
background-color: #fff;
list-style: none;
margin: 3px 0;
}
</style>

View File

@ -26,6 +26,12 @@ export default {
name: 'StrategyList',
hidden: () => !this.$hasPerm('xpack.view_strategy'),
component: () => import('@/views/assets/Cloud/Strategy/StrategyList.vue')
},
{
title: this.$t('SyncInstanceTaskHistoryAssetList'),
name: 'TaskSyncAssetList',
hidden: () => !this.$hasLicense() || !this.$hasPerm('xpack.view_syncinstancedetail'),
component: () => import('@/views/assets/Cloud/Account/AccountDetail/TaskSyncAssetList.vue')
}
],
actions: {

View File

@ -18,13 +18,13 @@ export default {
tableConfig: {
url: '/api/v1/audits/jobs/',
columnsShow: {
min: ['name', 'material'],
min: ['name', 'args'],
default: [
'name', 'material', 'type', 'crontab', 'interval', 'created_by', 'is_periodic_display', 'is_periodic'
'name', 'args', 'type', 'crontab', 'interval', 'created_by', 'is_periodic_display', 'is_periodic'
]
},
columns: [
'name', 'args', 'material', 'type', 'crontab', 'interval', 'date_last_run', 'summary',
'name', 'args', 'type', 'crontab', 'interval', 'date_last_run', 'summary',
'created_by', 'is_periodic_display', 'is_periodic'
],
columnsMeta: {
@ -34,10 +34,6 @@ export default {
name: {
formatter: (row) => row.name
},
material: {
width: '200px',
label: this.$t('Command')
},
summary: {
width: '130px',
label: `${this.$t('Success')}/${this.$t('Total')}`,

View File

@ -46,7 +46,7 @@
<script>
import store from '@/store'
import { DEFAULT_ORG_ID, SYSTEM_ORG_ID } from '@/utils/org'
import { DrawerListTable as ListTable } from '@/components'
import ListTable from '@/components/Table/ListTable'
import Dialog from '@/components/Dialog/index.vue'
import Select2 from '@/components/Form/FormFields/Select2.vue'
import getStatusColumnMeta from '@/components/Table/ListTable/TableAction/const'

View File

@ -51,7 +51,7 @@ export default {
[
this.$t('Other'),
[
'AUTH_LDAP_CONNECT_TIMEOUT', 'AUTH_LDAP_SEARCH_PAGED_SIZE',
'AUTH_LDAP_STRICT_SYNC', 'AUTH_LDAP_CONNECT_TIMEOUT', 'AUTH_LDAP_SEARCH_PAGED_SIZE',
'AUTH_LDAP_CACHE_TIMEOUT'
]
]

View File

@ -51,7 +51,7 @@ export default {
[
this.$t('Other'),
[
'AUTH_LDAP_HA_CONNECT_TIMEOUT', 'AUTH_LDAP_HA_SEARCH_PAGED_SIZE',
'AUTH_LDAP_HA_STRICT_SYNC', 'AUTH_LDAP_HA_CONNECT_TIMEOUT', 'AUTH_LDAP_HA_SEARCH_PAGED_SIZE',
'AUTH_LDAP_HA_CACHE_TIMEOUT'
]
]

View File

@ -159,7 +159,7 @@ export default {
this.dialogLicenseImport = true
},
consultAction: function() {
const url = 'http://www.jumpserver.org/support/'
const url = 'https://www.lxware.hk/pages/about'
window.open(url, '_blank')
},
importLicense() {

View File

@ -31,7 +31,7 @@ export default {
'name', 'host', 'actions',
'http_port', 'https_port', 'ssh_port', 'rdp_port', 'vnc_port',
'mysql_port', 'mariadb_port', 'postgresql_port',
'redis_port', 'sqlserver_port', 'oracle_port_range', 'is_active'
'redis_port', 'sqlserver_port', 'oracle_port', 'is_active'
]
},
columnsMeta: {