|
3 | 3 | delimiters: ['{', '}'],
|
4 | 4 | props: ["table_name","config"],
|
5 | 5 | template: `<div>
|
| 6 | + <div v-if="config_editable && config_add_fields!=null"><i-button type="primary" @click="add">Add</i-button> <br><br> </div> |
6 | 7 | <i-table stripe border :columns="tcolumns" :data="tlist" @on-sort-change="table_on_sort_change"></i-table>
|
7 | 8 | <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> |
8 | 16 | <modal v-model="modal_view" :title="viewedit_label">
|
9 | 17 | <i-form @submit.native.prevent :label-width="80">
|
10 | 18 | <form-item v-for="item in viewedit_items" :key="item.key" :label="item.title">
|
|
32 | 40 | modal_delete: false,
|
33 | 41 | delete_params: {},
|
34 | 42 |
|
| 43 | + modal_add: false, |
| 44 | + add_items : [], |
| 45 | + |
35 | 46 | tcolumns: [],
|
36 | 47 | tcolumns_preset: {
|
37 | 48 | "id": {title:'#',key:'id',width:80},
|
|
83 | 94 |
|
84 | 95 | config_editable: false,
|
85 | 96 | config_table_fields: null,
|
86 |
| - config_viewedit_fields: null |
| 97 | + config_viewedit_fields: null, |
| 98 | + config_add_fields: null |
87 | 99 | }
|
88 | 100 | },
|
89 | 101 | computed: {
|
|
256 | 268 | thisp.$Notice.success({
|
257 | 269 | title: 'success remove #'+thisp.delete_params.row.id+' in table '+thisp.table_name,
|
258 | 270 | 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 | + }) |
260 | 313 | thisp.update_list()
|
261 | 314 | }
|
262 | 315 | })
|
|
278 | 331 | this.config_editable = this.config.editable || false
|
279 | 332 | this.config_table_fields = this.config.table_fields || null
|
280 | 333 | 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 | + } |
281 | 338 | }
|
282 | 339 | this.update_list()
|
283 | 340 | }
|
|
0 commit comments