Former-commit-id: 7885803e16f1ec65869039a376c9e4ed2bb92de7
Former-commit-id: 6262509d53a0d6b13538392c3f85ff247d78c12e
TSXN
wanggang 5 years ago
parent d770402680
commit 0e71c9ba7f

@ -56,13 +56,7 @@ namespace Infrastructure.Web.Mvc
.ToList()); .ToList());
ViewData["EntityTypeExt"] = typeof(TEntity); ViewData["EntityTypeExt"] = typeof(TEntity);
ViewData["ModelTypeExt"] = typeof(TDisplayModel); ViewData["ModelTypeExt"] = typeof(TDisplayModel);
if (this.Request.Headers["accept"].ToString().Contains("json", StringComparison.OrdinalIgnoreCase)) return Result(model);
{
model.ViewData = ViewData;
model.Schema = this.GetSchema();
return Json(model, new JsonSerializerSettings { ContractResolver = new CamelCasePropertyNamesContractResolver() });
}
return View(model);
} }
[HttpGet] [HttpGet]
@ -81,7 +75,7 @@ namespace Infrastructure.Web.Mvc
{ {
var model = Activator.CreateInstance<TEditModel>(); var model = Activator.CreateInstance<TEditModel>();
this.ToEditModel(null, model); this.ToEditModel(null, model);
return View(model); return Result(model);
} }
[HttpPost] [HttpPost]
@ -105,7 +99,7 @@ namespace Infrastructure.Web.Mvc
} }
} }
this.ToEditModel(null, model); this.ToEditModel(null, model);
return View(model); return Result(model);
} }
[HttpGet] [HttpGet]
@ -116,7 +110,7 @@ namespace Infrastructure.Web.Mvc
var entity = query.FirstOrDefault(o => o.Id == id); var entity = query.FirstOrDefault(o => o.Id == id);
var model = entity.To<TEditModel>(); var model = entity.To<TEditModel>();
this.ToEditModel(entity, model); this.ToEditModel(entity, model);
return View(model); return Result(model);
} }
[HttpPost] [HttpPost]
@ -142,7 +136,7 @@ namespace Infrastructure.Web.Mvc
} }
} }
this.ToEditModel(entity, model); this.ToEditModel(entity, model);
return View(model); return Result(model);
} }
[HttpPost] [HttpPost]
@ -295,14 +289,14 @@ namespace Infrastructure.Web.Mvc
{ {
if (this.Request.Headers["accept"].ToString().Contains("json", StringComparison.OrdinalIgnoreCase)) if (this.Request.Headers["accept"].ToString().Contains("json", StringComparison.OrdinalIgnoreCase))
{ {
return Json(model); return Json(new
{
schema = this.GetJsonSchema<TEditModel>(),
model,
data = ViewData
}, new JsonSerializerSettings { ContractResolver = new CamelCasePropertyNamesContractResolver() });
} }
return View(model); return View(model);
} }
public object GetSchema()
{
return this.GetJsonSchema<TEditModel>();
}
} }
} }

@ -10,9 +10,9 @@
<div class="row"> <div class="row">
<div class="col-12 col-sm-6 col-md-4 col-lg-3" v-for="(value,key,index) in data.schema.properties" v-if="showForQuery(key,value)"> <div class="col-12 col-sm-6 col-md-4 col-lg-3" v-for="(value,key,index) in data.schema.properties" v-if="showForQuery(key,value)">
<div class="form-group row"> <div class="form-group row">
<label class="col-sm-3 col-form-label" :for="key" :title="value.type+value.format">{{value.title}}:</label> <label class="col-sm-3 col-form-label" :for="key">{{value.title}}:</label>
<div class="col-sm-9"> <div class="col-sm-9">
<component :is="getQueryComponent(value)" :title="value.title" :name="'query.'+key" :value="data.query[key]" v-if="data.query" /> <component :is="getQueryComponent(value)" :title="value.title" :name="'model.query.'+key" :value="data.model.query[key]" v-if="data.model.query" />
</div> </div>
</div> </div>
</div> </div>
@ -44,12 +44,12 @@
</tr> </tr>
</thead> </thead>
<tbody> <tbody>
<tr v-for="item in data.list"> <tr v-for="item in data.model.list">
<td> <td>
<input type="checkbox" name="list[]" :value="item.Id" /> <input type="checkbox" name="list[]" :value="item.Id" />
</td> </td>
<td v-for="(value,key,index) in data.schema.properties" v-if="key!=='id'"> <td v-for="(value,key,index) in data.schema.properties" v-if="key!=='id'">
<component :is="getDisplayComponent(key)" v-bind:key="key" v-bind:value="item[key]" v-bind:data="data.viewData" /> <component :is="getDisplayComponent(key)" v-bind:key="key" v-bind:value="item[key]" v-bind:data="data.data" />
</td> </td>
<td v-if="hasPermission('Edit')"> <td v-if="hasPermission('Edit')">
<a href="javascript:;" class="btn btn-sm btn-info">编辑</a> <a href="javascript:;" class="btn btn-sm btn-info">编辑</a>
@ -60,7 +60,7 @@
</div> </div>
</div> </div>
<!--page list--> <!--page list-->
<pagination :nav="load" :index="data.pageIndex" :size="data.pageSize" :total="data.totalCount" /> <pagination :nav="load" :index="data.model.pageIndex" :size="data.model.pageSize" :total="data.model.totalCount" />
</div> </div>
</div> </div>
</div> </div>
@ -76,28 +76,33 @@
url: '/IoTCenter/Admin/' + this.$route.query.entity + '/Index', url: '/IoTCenter/Admin/' + this.$route.query.entity + '/Index',
entity: this.$route.query.entity, entity: this.$route.query.entity,
data: { data: {
schema: {
title: ''
},
model: {
pageIndex: 1, pageIndex: 1,
pageSize: 20, pageSize: 20,
list: [], list: [],
schema: {} },
data: {}
} }
} }
}, },
mounted: function () { mounted: function () {
this.load(this.data.pageIndex, this.data.pageSize); this.load(this.data.model.pageIndex, this.data.model.pageSize);
}, },
methods: { methods: {
load: function (index, size) { load: function (index, size) {
if (index) { if (index) {
this.data.pageIndex = index; this.data.model.pageIndex = index;
} }
if (size) { if (size) {
this.data.pageSize = size; this.data.model.pageSize = size;
} }
var vm = this; var vm = this;
var url = config.baseUrl + this.url; var url = config.baseUrl + this.url;
var query = $("form.query").serialize(); var query = $("form.query").serialize();
var page = 'pageIndex=' + this.data.pageIndex + '&pageSize=' + this.data.pageSize; var page = 'pageIndex=' + this.data.model.pageIndex + '&pageSize=' + this.data.model.pageSize;
if (query) { if (query) {
url += '?' + query + '&' + page; url += '?' + query + '&' + page;
} }

Loading…
Cancel
Save