Skip to content

Commit eea55fd

Browse files
committed
add "add" feature in apijson-table
1 parent af5cea0 commit eea55fd

File tree

2 files changed

+62
-2
lines changed

2 files changed

+62
-2
lines changed

demo/apps/tables/settings.ini

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,9 @@ moment = {
1313
{"title":"Date","key":"date","editable":False},
1414
{"title":"Content","key":"content","type":"textarea"},
1515
],
16+
"add_fields" : [
17+
{"title":"Content","key":"content","type":"textarea"},
18+
],
1619
}
1720

1821
comment = {

uliweb_apijson/apijson/templates/vue/inc_apijson_table.html

Lines changed: 59 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,16 @@
33
delimiters: ['{', '}'],
44
props: ["table_name","config"],
55
template: `<div>
6+
<div v-if="config_editable && config_add_fields!=null"><i-button type="primary" @click="add">Add</i-button> <br><br> </div>
67
<i-table stripe border :columns="tcolumns" :data="tlist" @on-sort-change="table_on_sort_change"></i-table>
78
<page :total="total" :page-size="query_count" :current.sync="current_page" :page-size-opts="[10, 20, 50, 100]" show-sizer @on-change="page_on_change" @on-page-size-change="page_on_page_size_change"></page>
9+
<modal v-model="modal_add" title="Add" @on-ok="real_add">
10+
<i-form @submit.native.prevent :label-width="80">
11+
<form-item v-for="item in add_items" :key="item.key" :label="item.title">
12+
<i-input v-if="item.type=='textarea'" v-model="item.value" type="textarea" :autosize="{minRows: 2,maxRows: 5}"></i-input>
13+
</form-item>
14+
</i-form>
15+
</modal>
816
<modal v-model="modal_view" :title="viewedit_label">
917
<i-form @submit.native.prevent :label-width="80">
1018
<form-item v-for="item in viewedit_items" :key="item.key" :label="item.title">
@@ -32,6 +40,9 @@
3240
modal_delete: false,
3341
delete_params: {},
3442

43+
modal_add: false,
44+
add_items : [],
45+
3546
tcolumns: [],
3647
tcolumns_preset: {
3748
"id": {title:'#',key:'id',width:80},
@@ -83,7 +94,8 @@
8394

8495
config_editable: false,
8596
config_table_fields: null,
86-
config_viewedit_fields: null
97+
config_viewedit_fields: null,
98+
config_add_fields: null
8799
}
88100
},
89101
computed: {
@@ -256,7 +268,48 @@
256268
thisp.$Notice.success({
257269
title: 'success remove #'+thisp.delete_params.row.id+' in table '+thisp.table_name,
258270
desc: result.msg
259-
});
271+
})
272+
thisp.update_list()
273+
}
274+
})
275+
},
276+
add: function(){
277+
for (var k in this.add_items){
278+
var d = this.add_items[k]
279+
d.value = null
280+
}
281+
this.modal_add = true
282+
},
283+
real_add: function(){
284+
thisp = this
285+
var params = {
286+
"@tag": thisp.table_name
287+
}
288+
var post_params = {}
289+
for (var k in thisp.add_items) {
290+
var d = thisp.add_items[k]
291+
post_params[d.key] = d.value
292+
}
293+
params[this.table_name] = post_params
294+
295+
$.ajax({
296+
type: "POST",
297+
url: "{{=url_for('uliweb_apijson.apijson.views.ApiJson.post')}}",
298+
contentType: 'application/json',
299+
data: JSON.stringify(params),
300+
success: function (data) {
301+
if (data.code!=200){
302+
thisp.$Notice.error({
303+
title: 'error when add new record in table '+thisp.table_name,
304+
desc: data.msg
305+
})
306+
return
307+
}
308+
var result = data[thisp.table_name]
309+
thisp.$Notice.success({
310+
title: 'success add #'+result.id+' in table '+thisp.table_name,
311+
desc: result.msg
312+
})
260313
thisp.update_list()
261314
}
262315
})
@@ -278,6 +331,10 @@
278331
this.config_editable = this.config.editable || false
279332
this.config_table_fields = this.config.table_fields || null
280333
this.config_viewedit_fields = this.config.viewedit_fields || null
334+
this.config_add_fields = this.config.add_fields || null
335+
if (this.config.add_fields!=null) {
336+
this.add_items = this.config_add_fields
337+
}
281338
}
282339
this.update_list()
283340
}

0 commit comments

Comments
 (0)