Skip to content

Commit 20daf83

Browse files
committed
fix: bug fix
1 parent 5e89860 commit 20daf83

File tree

4 files changed

+55
-15
lines changed

4 files changed

+55
-15
lines changed

frontend/src/components/StdDataDisplay/StdCurd.vue

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -152,7 +152,7 @@ function edit(id: any) {
152152
<a-modal
153153
class="std-curd-edit-modal"
154154
:mask="false"
155-
:title="data.id ? $gettext('Modify') : $gettext('Add')"
155+
:title="edit_text?edit_text:(data.id ? $gettext('Modify') : $gettext('Add'))"
156156
:visible="visible"
157157
:cancel-text="$gettext('Cancel')"
158158
:ok-text="$gettext('OK')"
@@ -161,17 +161,24 @@ function edit(id: any) {
161161
:width="modalWidth"
162162
destroyOnClose
163163
>
164+
<div class="before-edit" v-if="$slots.beforeEdit">
165+
<slot name="beforeEdit" :data="data"/>
166+
</div>
167+
164168
<std-data-entry
165169
ref="std_data_entry"
166170
:data-list="editableColumns()"
167171
v-model:data-source="data"
168172
:error="error"
169173
/>
174+
170175
<slot name="edit" :data="data"/>
171176
</a-modal>
172177
</div>
173178
</template>
174179

175180
<style lang="less" scoped>
176-
181+
.before-edit {
182+
margin-bottom: 20px;
183+
}
177184
</style>

frontend/src/components/StdDataDisplay/StdTable.vue

Lines changed: 24 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -70,8 +70,7 @@ const props = defineProps({
7070
},
7171
size: String,
7272
selectedRowKeys: {
73-
type: Array,
74-
default: []
73+
type: Array
7574
}
7675
})
7776
@@ -89,11 +88,14 @@ const params = reactive({
8988
...props.get_params
9089
})
9190
91+
const selectedKeysLocalBuffer: any = ref([])
92+
9293
const selectedRowKeysBuffer = computed({
9394
get() {
94-
return props?.selectedRowKeys ?? []
95+
return props.selectedRowKeys || selectedKeysLocalBuffer.value
9596
},
9697
set(v) {
98+
selectedKeysLocalBuffer.value = v
9799
emit('update:selectedRowKeys', v)
98100
}
99101
})
@@ -182,13 +184,23 @@ function checked(c: any) {
182184
params[c.target.value] = c.target.checked
183185
}
184186
185-
function onSelectChange(_selectedRowKeys: any) {
186-
const n: any = [..._selectedRowKeys]
187-
const t = [...selectedRowKeysBuffer.value].concat(n)
187+
const crossPageSelect: any = {}
188+
189+
async function onSelectChange(_selectedRowKeys: any) {
190+
191+
const page = params.page || 1
192+
193+
crossPageSelect[page] = await _selectedRowKeys
188194
195+
let t: any = []
196+
Object.keys(crossPageSelect).forEach(v => {
197+
t.push(...crossPageSelect[v])
198+
})
199+
const n: any = [..._selectedRowKeys]
200+
t = await t.concat(n)
201+
// console.log(crossPageSelect)
189202
const set = new Set(t)
190203
selectedRowKeysBuffer.value = Array.from(set)
191-
192204
emit('onSelected', selectedRowKeysBuffer.value)
193205
}
194206
@@ -212,14 +224,16 @@ const reset_search = async () => {
212224
}
213225
214226
watch(params, () => {
215-
router.push({query: params})
227+
if (!props.disable_query_params) {
228+
router.push({query: params})
229+
}
216230
get_list()
217231
})
218232
219233
const rowSelection = computed(() => {
220234
if (props.selectionType) {
221235
return {
222-
selectedRowKeys: selectedRowKeysBuffer, onChange: onSelectChange,
236+
selectedRowKeys: selectedRowKeysBuffer.value, onChange: onSelectChange,
223237
onSelect: onSelect, type: props.selectionType
224238
}
225239
} else {
@@ -307,7 +321,7 @@ async function export_csv() {
307321
<template>
308322
<div class="std-table">
309323
<std-data-entry
310-
v-if="!disable_search"
324+
v-if="!disable_search && searchColumns.length"
311325
:data-list="searchColumns"
312326
v-model:data-source="params"
313327
layout="inline"

frontend/src/components/StdDataEntry/compontents/StdSelector.vue

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -73,7 +73,7 @@ watch(props, () => {
7373
:mask="false"
7474
:visible="visible"
7575
:cancel-text="$gettext('Cancel')"
76-
:ok-text="$gettext('Ok')"
76+
:ok-text="$gettext('OK')"
7777
:title="$gettext('Selector')"
7878
@cancel="visible=false"
7979
@ok="ok()"
@@ -102,7 +102,7 @@ watch(props, () => {
102102
.std-selector-container {
103103
height: 39.9px;
104104
display: flex;
105-
align-items: center;
105+
align-items: flex-start;
106106
107107
.std-selector {
108108
box-sizing: border-box;

frontend/src/components/StdDataEntry/index.tsx

Lines changed: 20 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,8 +22,27 @@ interface IEdit {
2222
generate: boolean
2323
}
2424

25+
function fn(obj: Object, desc: any) {
26+
let arr: string[]
27+
if (typeof desc === 'string') {
28+
arr = desc.split('.')
29+
} else {
30+
arr = [...desc]
31+
}
32+
33+
while (arr.length) {
34+
// @ts-ignore
35+
const top = obj[arr.shift()]
36+
if (top === undefined) {
37+
return null
38+
}
39+
obj = top
40+
}
41+
return obj
42+
}
43+
2544
function readonly(edit: IEdit, dataSource: any, dataIndex: any) {
26-
return h('p', dataSource[dataIndex])
45+
return h('p', fn(dataSource, dataIndex))
2746
}
2847

2948
function input(edit: IEdit, dataSource: any, dataIndex: any) {

0 commit comments

Comments
 (0)