mirror of
https://github.com/0xJacky/nginx-ui.git
synced 2025-05-11 02:15:48 +02:00
fix: bug fix
This commit is contained in:
parent
5e89860068
commit
20daf836e9
4 changed files with 55 additions and 15 deletions
|
@ -152,7 +152,7 @@ function edit(id: any) {
|
|||
<a-modal
|
||||
class="std-curd-edit-modal"
|
||||
:mask="false"
|
||||
:title="data.id ? $gettext('Modify') : $gettext('Add')"
|
||||
:title="edit_text?edit_text:(data.id ? $gettext('Modify') : $gettext('Add'))"
|
||||
:visible="visible"
|
||||
:cancel-text="$gettext('Cancel')"
|
||||
:ok-text="$gettext('OK')"
|
||||
|
@ -161,17 +161,24 @@ function edit(id: any) {
|
|||
:width="modalWidth"
|
||||
destroyOnClose
|
||||
>
|
||||
<div class="before-edit" v-if="$slots.beforeEdit">
|
||||
<slot name="beforeEdit" :data="data"/>
|
||||
</div>
|
||||
|
||||
<std-data-entry
|
||||
ref="std_data_entry"
|
||||
:data-list="editableColumns()"
|
||||
v-model:data-source="data"
|
||||
:error="error"
|
||||
/>
|
||||
|
||||
<slot name="edit" :data="data"/>
|
||||
</a-modal>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<style lang="less" scoped>
|
||||
|
||||
.before-edit {
|
||||
margin-bottom: 20px;
|
||||
}
|
||||
</style>
|
||||
|
|
|
@ -70,8 +70,7 @@ const props = defineProps({
|
|||
},
|
||||
size: String,
|
||||
selectedRowKeys: {
|
||||
type: Array,
|
||||
default: []
|
||||
type: Array
|
||||
}
|
||||
})
|
||||
|
||||
|
@ -89,11 +88,14 @@ const params = reactive({
|
|||
...props.get_params
|
||||
})
|
||||
|
||||
const selectedKeysLocalBuffer: any = ref([])
|
||||
|
||||
const selectedRowKeysBuffer = computed({
|
||||
get() {
|
||||
return props?.selectedRowKeys ?? []
|
||||
return props.selectedRowKeys || selectedKeysLocalBuffer.value
|
||||
},
|
||||
set(v) {
|
||||
selectedKeysLocalBuffer.value = v
|
||||
emit('update:selectedRowKeys', v)
|
||||
}
|
||||
})
|
||||
|
@ -182,13 +184,23 @@ function checked(c: any) {
|
|||
params[c.target.value] = c.target.checked
|
||||
}
|
||||
|
||||
function onSelectChange(_selectedRowKeys: any) {
|
||||
const n: any = [..._selectedRowKeys]
|
||||
const t = [...selectedRowKeysBuffer.value].concat(n)
|
||||
const crossPageSelect: any = {}
|
||||
|
||||
async function onSelectChange(_selectedRowKeys: any) {
|
||||
|
||||
const page = params.page || 1
|
||||
|
||||
crossPageSelect[page] = await _selectedRowKeys
|
||||
|
||||
let t: any = []
|
||||
Object.keys(crossPageSelect).forEach(v => {
|
||||
t.push(...crossPageSelect[v])
|
||||
})
|
||||
const n: any = [..._selectedRowKeys]
|
||||
t = await t.concat(n)
|
||||
// console.log(crossPageSelect)
|
||||
const set = new Set(t)
|
||||
selectedRowKeysBuffer.value = Array.from(set)
|
||||
|
||||
emit('onSelected', selectedRowKeysBuffer.value)
|
||||
}
|
||||
|
||||
|
@ -212,14 +224,16 @@ const reset_search = async () => {
|
|||
}
|
||||
|
||||
watch(params, () => {
|
||||
router.push({query: params})
|
||||
if (!props.disable_query_params) {
|
||||
router.push({query: params})
|
||||
}
|
||||
get_list()
|
||||
})
|
||||
|
||||
const rowSelection = computed(() => {
|
||||
if (props.selectionType) {
|
||||
return {
|
||||
selectedRowKeys: selectedRowKeysBuffer, onChange: onSelectChange,
|
||||
selectedRowKeys: selectedRowKeysBuffer.value, onChange: onSelectChange,
|
||||
onSelect: onSelect, type: props.selectionType
|
||||
}
|
||||
} else {
|
||||
|
@ -307,7 +321,7 @@ async function export_csv() {
|
|||
<template>
|
||||
<div class="std-table">
|
||||
<std-data-entry
|
||||
v-if="!disable_search"
|
||||
v-if="!disable_search && searchColumns.length"
|
||||
:data-list="searchColumns"
|
||||
v-model:data-source="params"
|
||||
layout="inline"
|
||||
|
|
|
@ -73,7 +73,7 @@ watch(props, () => {
|
|||
:mask="false"
|
||||
:visible="visible"
|
||||
:cancel-text="$gettext('Cancel')"
|
||||
:ok-text="$gettext('Ok')"
|
||||
:ok-text="$gettext('OK')"
|
||||
:title="$gettext('Selector')"
|
||||
@cancel="visible=false"
|
||||
@ok="ok()"
|
||||
|
@ -102,7 +102,7 @@ watch(props, () => {
|
|||
.std-selector-container {
|
||||
height: 39.9px;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
align-items: flex-start;
|
||||
|
||||
.std-selector {
|
||||
box-sizing: border-box;
|
||||
|
|
|
@ -22,8 +22,27 @@ interface IEdit {
|
|||
generate: boolean
|
||||
}
|
||||
|
||||
function fn(obj: Object, desc: any) {
|
||||
let arr: string[]
|
||||
if (typeof desc === 'string') {
|
||||
arr = desc.split('.')
|
||||
} else {
|
||||
arr = [...desc]
|
||||
}
|
||||
|
||||
while (arr.length) {
|
||||
// @ts-ignore
|
||||
const top = obj[arr.shift()]
|
||||
if (top === undefined) {
|
||||
return null
|
||||
}
|
||||
obj = top
|
||||
}
|
||||
return obj
|
||||
}
|
||||
|
||||
function readonly(edit: IEdit, dataSource: any, dataIndex: any) {
|
||||
return h('p', dataSource[dataIndex])
|
||||
return h('p', fn(dataSource, dataIndex))
|
||||
}
|
||||
|
||||
function input(edit: IEdit, dataSource: any, dataIndex: any) {
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue