|
|
|
@ -7,9 +7,9 @@
|
|
|
|
|
<div class="card" v-if="data.schema">
|
|
|
|
|
<div class="card-body">
|
|
|
|
|
<template v-if="data.errors">
|
|
|
|
|
<div class="form-group" v-for="error in data.errors">
|
|
|
|
|
<div class="el-col-sm-offset-2 col-sm-10 ">
|
|
|
|
|
<div style="color:red">{{error}}</div>
|
|
|
|
|
<div class="form-group" v-for="error in getValidationSummary(true)">
|
|
|
|
|
<div class="offset-sm-2 col-sm-10 ">
|
|
|
|
|
<div style="color:#dc3545;">{{error}}</div>
|
|
|
|
|
</div>
|
|
|
|
|
</div>
|
|
|
|
|
</template>
|
|
|
|
@ -24,7 +24,8 @@
|
|
|
|
|
<template v-else>
|
|
|
|
|
<component :is="getEditComponent(key)" :title="value.title" :name="key" :value.sync="data.model[key]" :data="data.data" :valid="valid(value,key,data.model[key])" :mode="'edit'" v-if="data.model" />
|
|
|
|
|
</template>
|
|
|
|
|
<span class="text-danger field-validation-valid" :data-valmsg-for="key" data-valmsg-replace="true"></span>
|
|
|
|
|
<span class="field-validation-error text-danger" data-valmsg-for="UserName" data-valmsg-replace="true" v-if="hasErrors(key)">{{getErrors(key)}}</span>
|
|
|
|
|
<span class="text-danger field-validation-valid" :data-valmsg-for="key" data-valmsg-replace="true" v-else></span>
|
|
|
|
|
</div>
|
|
|
|
|
<div class="col-sm-4">{{value.description}}</div>
|
|
|
|
|
</div>
|
|
|
|
@ -81,16 +82,33 @@
|
|
|
|
|
var url = this.baseUrl + this.url;
|
|
|
|
|
axios.get(url).then(function (response) {
|
|
|
|
|
vm.data = response.data;
|
|
|
|
|
this.validInit();
|
|
|
|
|
vm.validInit();
|
|
|
|
|
});
|
|
|
|
|
},
|
|
|
|
|
validInit: function () {
|
|
|
|
|
vm.$nextTick(function () {
|
|
|
|
|
$(vm.$refs.form).removeData('validator');
|
|
|
|
|
$(vm.$refs.form).removeData('unobtrusiveValidation');
|
|
|
|
|
$.validator.unobtrusive.parse(vm.$refs.form);
|
|
|
|
|
this.$nextTick(function () {
|
|
|
|
|
$(this.$refs.form).removeData('validator');
|
|
|
|
|
$(this.$refs.form).removeData('unobtrusiveValidation');
|
|
|
|
|
$.validator.unobtrusive.parse(this.$refs.form);
|
|
|
|
|
});
|
|
|
|
|
},
|
|
|
|
|
getValidationSummary: function (excludePropertyErrors) {
|
|
|
|
|
var query = Enumerable.from(this.data.errors);
|
|
|
|
|
if (excludePropertyErrors) {
|
|
|
|
|
query = query.where(o => o.key === '')
|
|
|
|
|
}
|
|
|
|
|
return query.select(o => o.value.errors[0].errorMessage).toArray();
|
|
|
|
|
},
|
|
|
|
|
hasErrors: function (key) {
|
|
|
|
|
key = key.toLowerCase();
|
|
|
|
|
return Enumerable.from(this.data.errors).any(o => o.key.toLowerCase() === key);
|
|
|
|
|
},
|
|
|
|
|
getErrors: function (key) {
|
|
|
|
|
key = key.toLowerCase();
|
|
|
|
|
return Enumerable.from(this.data.errors)
|
|
|
|
|
.firstOrDefault(o => o.key.toLowerCase() === key)
|
|
|
|
|
.value.errors[0].errorMessage;
|
|
|
|
|
},
|
|
|
|
|
hasPermission: function () {
|
|
|
|
|
var permission = this.mode + '-' + this.entity;
|
|
|
|
|
return Enumerable.from(store.state.permissions).any(o => o === permission);
|
|
|
|
|