fix: bug fix

This commit is contained in:
0xJacky 2022-09-23 23:06:41 +08:00
parent 5e89860068
commit 20daf836e9
No known key found for this signature in database
GPG key ID: B6E4A6E4A561BAF0
4 changed files with 55 additions and 15 deletions

View file

@ -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>

View file

@ -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"

View file

@ -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;

View file

@ -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) {