Former-commit-id: 457692b979f7f76a07de1e17f47729b3ff1df1ec
Former-commit-id: 5df39f3689b4c81195d8d45361528a874b5c5119
TSXN
wanggang 5 years ago
parent fe3a564606
commit 7cb666c5b5

@ -0,0 +1,2 @@
Vue.prototype.valid2 = function () {
}

@ -22,10 +22,10 @@
<component :is="getDisplayComponent(key)" :title="value.title" :name="key" :value="data.model[key]" :data="data.data" v-if="data.model" />
</template>
<template v-else>
<component :is="getEditComponent(key)" mode="'edit'" :title="value.title" :name="key" :value.sync="data.model[key]" @change="change" :data="data.data" />
<component :is="getEditComponent(key)" mode="edit" :title="value.title" :name="key" :value.sync="data.model[key]" :data="data.data" :nullable="value.nullable" @change="change" />
</template>
<div style="height:1em;">
<span v-if="hasErrors(key)" class="field-validation-error text-danger">{{getErrors(key)}}</span>
<span v-if="hasErrors(key)" class="field-validation-error text-danger">{{getErrorList(key)}}</span>
<span v-else class="text-danger field-validation-valid"></span>
</div>
</div>
@ -90,10 +90,21 @@
vm.data = response.data;
});
},
getSchema: function () {
return this.data.schema;
},
getModel: function () {
return this.data.model;
},
getErrors: function () {
return this.data.errors;
},
change: function (name) {
var vm = this;
var value = this.data.model[name];
var property = this.data.schema.properties[name];
var schema = this.getSchema();
var model = this.getModel();
var property = schema.properties[name];
var value = model[name];
var list = [];
list.push(
this.validInternal(property.required, name, o => Promise.resolve(value !== undefined && value !== null))
@ -156,8 +167,9 @@
},
valid: function () {
var vm = this;
var schema = this.getSchema();
var list = [];
_.forIn(this.data.schema.properties, function (value, key) {
_.forIn(schema.properties, function (value, key) {
list.push(vm.change(key));
});
return Promise.all(list);
@ -167,11 +179,33 @@
var vm = this;
message = message || validator.message;
return valid().then(function (value) {
var error = Enumerable.from(vm.data.errors).firstOrDefault(o => o.key.toLowerCase() === name.toLowerCase());
if (value) {
vm.removeError(name, message);
if (error) {
if (Enumerable.from(error.value.errors).any(o => o.errorMessage === message)) {
error.value.errors = Enumerable.from(error.value.errors).where(o => o.errorMessage !== message).toArray();
}
if (error.value.errors.length === 0) {
var index = _.findIndex(vm.data.errors, o => o.key.toLowerCase() === name.toLowerCase());
vm.getErrors().splice(index, 1);
}
}
}
else {
vm.updateError(name, message);
if (!error) {
error = {
key: name,
value: {
errors: [{ errorMessage: message }]
}
};
vm.data.errors.push(error);
}
else {
if (!Enumerable.from(error.value.errors).any(o => o.errorMessage === message)) {
error.value.errors.push({ errorMessage: message });
}
}
}
});
}
@ -180,37 +214,8 @@
camelCased: function (name) {
return name[0].toLowerCase() + name.substr(1);
},
removeError: function (name, message) {
var error = Enumerable.from(this.data.errors).firstOrDefault(o => o.key.toLowerCase() === name.toLowerCase());
if (error) {
if (Enumerable.from(error.value.errors).any(o => o.errorMessage === message)) {
error.value.errors = Enumerable.from(error.value.errors).where(o => o.errorMessage !== message).toArray();
}
if (error.value.errors.length === 0) {
var index = _.findIndex(this.data.errors, o => o.key.toLowerCase() === name.toLowerCase());
this.data.errors.splice(index, 1);
}
}
},
updateError: function (name, message) {
var error = Enumerable.from(this.data.errors).firstOrDefault(o => o.key.toLowerCase() === name.toLowerCase());
if (!error) {
error = {
key: name,
value: {
errors: [{ errorMessage: message }]
}
};
this.data.errors.push(error);
}
else {
if (!Enumerable.from(error.value.errors).any(o => o.errorMessage === message)) {
error.value.errors.push({ errorMessage: message });
}
}
},
getValidationSummary: function (excludePropertyErrors) {
var query = Enumerable.from(this.data.errors);
var query = Enumerable.from(this.getErrors());
if (excludePropertyErrors) {
query = query.where(o => o.key === '')
}
@ -218,11 +223,11 @@
},
hasErrors: function (key) {
key = key.toLowerCase();
return Enumerable.from(this.data.errors).any(o => o.key.toLowerCase() === key);
return Enumerable.from(this.getErrors()).any(o => o.key.toLowerCase() === key);
},
getErrors: function (key) {
getErrorList: function (key) {
key = key.toLowerCase();
return Enumerable.from(this.data.errors)
return Enumerable.from(this.getErrors())
.where(o => o.key.toLowerCase() === key).selectMany(o => o.value.errors).select(o => o.errorMessage).toArray().join(',');
},
hasPermission: function () {

Loading…
Cancel
Save