@kre-form/ant
Version:
1,081 lines • 86.2 kB
JavaScript
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/
import { Injectable } from "@angular/core";
var KreToFormFieldService = /** @class */ (function () {
function KreToFormFieldService() {
}
/**
* @param {?} tableField
* @return {?}
*/
KreToFormFieldService.prototype.getKreFiledFunction = /**
* @param {?} tableField
* @return {?}
*/
function (tableField) {
/** @type {?} */
var field = {};
/** @type {?} */
var fun;
switch (tableField.dataType) {
case "text":
field = this.text(tableField);
break;
case "texti18n":
field = this.textI18N(tableField);
break;
case "textarea":
field = this.textArea(tableField);
break;
case "numbers":
field = this.number(tableField);
break;
case "password":
field = this.passWord(tableField);
break;
case "radio":
field = this.radio(tableField);
break;
case "radiogroup":
field = this.radioGroup(tableField);
break;
case "checkbox":
field = this.checkbox(tableField);
break;
case "checkboxgroup":
field = this.checkboxGroup(tableField);
break;
case "select":
field = this.select(tableField);
break;
case "datetime":
field = this.datetime(tableField);
break;
case "image":
field = this.image(tableField);
break;
case "upload":
field = this.upload(tableField);
break;
case "line":
field = this.line(tableField);
break;
case "repeat":
field = this.repeat(tableField);
break;
case "lookup":
field = this.lookup(tableField);
break;
case "employee":
case "position":
case "organizational":
case "area":
case "legal":
case "job":
case "district":
field = this.lookup2(tableField);
field = this.lookup2(tableField);
break;
case "tree":
field = this.tree(tableField);
break;
case "table":
field = this.table(tableField);
break;
case "refer":
field = this.refer(tableField);
break;
case "editor":
field = this.editor(tableField);
case "avatar":
field = this.avatar(tableField);
break;
case "switch":
field = this.switch(tableField);
break;
case "referProcess":
field = this.referProcess(tableField);
break;
}
return field;
};
//1、字符串
//1、字符串
/**
* @param {?} field
* @return {?}
*/
KreToFormFieldService.prototype.text =
//1、字符串
/**
* @param {?} field
* @return {?}
*/
function (field) {
/** @type {?} */
var config = {
type: "text",
key: field.fieldCode,
defaultValue: field.defaultValue,
templateOptions: {
label: field.fieldName,
required: field.allowNull == false ? true : false,
maxLength: field.maxLength || 500,
minLength: field.minLength || 0,
placeholder: field.placeholder,
isButintin: field.isButintin,
tips: field.tips,
pattern: field.pattern,
},
primitiveProperty: {
maxLength: field.maxLength || 500,
minLength: field.minLength || 0,
},
hide: false,
show: true,
status: 1,
editor: true,
tableCode: field.tableCode,
};
return config;
};
//2、多语言
//2、多语言
/**
* @param {?} field
* @return {?}
*/
KreToFormFieldService.prototype.textI18N =
//2、多语言
/**
* @param {?} field
* @return {?}
*/
function (field) {
/** @type {?} */
var config = {
type: "texti18n",
key: field.fieldCode,
defaultValue: field.defaultValue,
templateOptions: {
label: field.fieldName,
required: field.allowNull == false ? true : false,
maxLength: field.maxLength || 500,
minLength: field.minLength || 0,
placeholder: field.placeholder,
isButintin: field.isButintin,
tips: field.tips,
pattern: field.pattern,
},
primitiveProperty: {
maxLength: field.maxLength || 500,
minLength: field.minLength || 0,
},
status: 1,
hide: false,
show: true,
editor: true,
tableCode: field.tableCode,
};
return config;
};
//3、多行文本
//3、多行文本
/**
* @param {?} field
* @return {?}
*/
KreToFormFieldService.prototype.textArea =
//3、多行文本
/**
* @param {?} field
* @return {?}
*/
function (field) {
/** @type {?} */
var config = {
type: "textarea",
key: field.fieldCode,
defaultValue: field.defaultValue,
templateOptions: {
label: field.fieldName,
required: field.allowNull == false ? true : false,
maxLength: field.maxLength,
minLength: field.minLength || 0,
placeholder: field.placeholder,
isButintin: field.isButintin,
tips: field.tips,
pattern: field.pattern,
},
primitiveProperty: {
maxLength: field.maxLength,
minLength: field.minLength || 0,
},
status: 1,
hide: false,
show: true,
editor: true,
tableCode: field.tableCode,
};
return config;
};
//4、数字
//4、数字
/**
* @param {?} field
* @return {?}
*/
KreToFormFieldService.prototype.number =
//4、数字
/**
* @param {?} field
* @return {?}
*/
function (field) {
/** @type {?} */
var config = {
type: "numbers",
key: field.fieldCode,
defaultValue: field.defaultValue,
templateOptions: {
label: field.fieldName,
required: field.allowNull == false ? true : false,
max: field.max,
min: field.min,
placeholder: field.placeholder,
isButintin: field.isButintin,
tips: field.tips,
pattern: field.pattern,
precision: field.accuracy,
},
primitiveProperty: {
min: field.min || -999999,
max: field.max || 999999,
precision: field.accuracy,
},
status: 1,
hide: false,
show: true,
editor: true,
tableCode: field.tableCode,
};
return config;
};
//5、密码
//5、密码
/**
* @param {?} field
* @return {?}
*/
KreToFormFieldService.prototype.passWord =
//5、密码
/**
* @param {?} field
* @return {?}
*/
function (field) {
/** @type {?} */
var config = {
type: "password",
key: field.fieldCode,
defaultValue: field.defaultValue,
templateOptions: {
label: field.fieldName,
required: field.allowNull == false ? true : false,
maxLength: field.maxLength,
minLength: field.minLength,
placeholder: field.placeholder,
isButintin: field.isButintin,
tips: field.tips,
pattern: field.pattern,
},
primitiveProperty: {
maxLength: field.maxLength,
minLength: field.minLength || 0,
},
status: 1,
hide: false,
show: true,
editor: true,
tableCode: field.tableCode,
};
return config;
};
//6、单选
//6、单选
/**
* @param {?} field
* @return {?}
*/
KreToFormFieldService.prototype.radio =
//6、单选
/**
* @param {?} field
* @return {?}
*/
function (field) {
/** @type {?} */
var config = {
type: "radio",
key: field.fieldCode,
defaultValue: field.defaultValue,
templateOptions: {
type: field.showType,
label: field.fieldName,
required: field.allowNull == false ? true : false,
placeholder: field.placeholder,
isButintin: field.isButintin,
tips: field.tips,
pattern: field.pattern,
},
status: 1,
hide: false,
show: true,
editor: true,
tableCode: field.tableCode,
};
return config;
};
//7、单选组
//7、单选组
/**
* @param {?} field
* @return {?}
*/
KreToFormFieldService.prototype.radioGroup =
//7、单选组
/**
* @param {?} field
* @return {?}
*/
function (field) {
/** @type {?} */
var config = {
type: "radiogroup",
key: field.fieldCode,
defaultValue: field.defaultValue,
templateOptions: {
type: field.showType,
label: field.fieldName,
required: field.allowNull == false ? true : false,
placeholder: field.placeholder,
isButintin: field.isButintin,
tips: field.tips,
pattern: field.pattern,
},
status: 1,
hide: false,
show: true,
editor: true,
tableCode: field.tableCode,
};
return config;
};
//8、复选
//8、复选
/**
* @param {?} field
* @return {?}
*/
KreToFormFieldService.prototype.checkbox =
//8、复选
/**
* @param {?} field
* @return {?}
*/
function (field) {
/** @type {?} */
var config = {
type: "checkbox",
key: field.fieldCode,
defaultValue: field.defaultValue,
templateOptions: {
type: field.showType,
label: field.fieldName,
required: field.allowNull == false ? true : false,
placeholder: field.placeholder,
isButintin: field.isButintin,
tips: field.tips,
pattern: field.pattern,
},
status: 1,
hide: false,
show: true,
editor: true,
tableCode: field.tableCode,
};
return config;
};
//9、复选组
//9、复选组
/**
* @param {?} field
* @return {?}
*/
KreToFormFieldService.prototype.checkboxGroup =
//9、复选组
/**
* @param {?} field
* @return {?}
*/
function (field) {
/** @type {?} */
var config = {
type: "checkboxgroup",
key: field.fieldCode,
defaultValue: field.defaultValue,
templateOptions: {
type: field.showType,
label: field.fieldName,
required: field.allowNull == false ? true : false,
placeholder: field.placeholder,
isButintin: field.isButintin,
tips: field.tips,
pattern: field.pattern,
},
status: 1,
hide: false,
show: true,
editor: true,
tableCode: field.tableCode,
};
return config;
};
//10、下拉
//10、下拉
/**
* @param {?} field
* @return {?}
*/
KreToFormFieldService.prototype.select =
//10、下拉
/**
* @param {?} field
* @return {?}
*/
function (field) {
/** @type {?} */
var config = {
type: "select",
key: field.fieldCode,
defaultValue: field.defaultValue,
templateOptions: {
type: field.showType,
label: field.fieldName,
required: field.allowNull == false ? true : false,
selectType: field.selectType,
parameterId: field.parameterId,
options: field.parameterData,
placeholder: field.placeholder,
isButintin: field.isButintin,
tips: field.tips,
pattern: field.pattern,
},
status: 1,
hide: false,
show: true,
editor: true,
tableCode: field.tableCode,
};
return config;
};
//11、日期
//11、日期
/**
* @param {?} field
* @return {?}
*/
KreToFormFieldService.prototype.datetime =
//11、日期
/**
* @param {?} field
* @return {?}
*/
function (field) {
/** @type {?} */
var config = {
type: "datetime",
key: field.fieldCode,
defaultValue: field.defaultValue,
templateOptions: {
type: field.secondType,
label: field.fieldName,
required: field.allowNull == false ? true : false,
placeholder: field.placeholder,
isButintin: field.isButintin,
tips: field.tips,
pattern: field.pattern,
format: field.format,
},
primitiveProperty: {
maxDate: field.maxDate || "2050-12-31",
minDate: field.minDate || "1900-01-01",
},
status: 1,
hide: false,
show: true,
editor: true,
tableCode: field.tableCode,
};
return config;
};
//12、图片
//12、图片
/**
* @param {?} field
* @return {?}
*/
KreToFormFieldService.prototype.image =
//12、图片
/**
* @param {?} field
* @return {?}
*/
function (field) {
/** @type {?} */
var config = {
type: "image",
key: field.fieldCode,
defaultValue: field.defaultValue,
templateOptions: {
label: field.fieldName,
required: field.allowNull == false ? true : false,
placeholder: field.placeholder,
isButintin: field.isButintin,
tips: field.tips,
pattern: field.pattern,
},
status: 1,
hide: false,
show: true,
editor: true,
tableCode: field.tableCode,
};
return config;
};
//13、附件
//13、附件
/**
* @param {?} field
* @return {?}
*/
KreToFormFieldService.prototype.upload =
//13、附件
/**
* @param {?} field
* @return {?}
*/
function (field) {
/** @type {?} */
var config = {
type: "upload",
key: field.fieldCode,
defaultValue: field.defaultValue,
templateOptions: {
label: field.fieldName,
required: field.allowNull == false ? true : false,
// attachment: {
// size: field.attachmentsize,
// type: field.attachmenttype,
// limit: field.attachmentlimit,
// },
placeholder: field.placeholder,
isButintin: field.isButintin,
tips: field.tips,
pattern: field.pattern,
},
status: 1,
hide: false,
show: true,
editor: true,
tableCode: field.tableCode,
};
return config;
};
//14、line
//14、line
/**
* @param {?} field
* @return {?}
*/
KreToFormFieldService.prototype.line =
//14、line
/**
* @param {?} field
* @return {?}
*/
function (field) {
/** @type {?} */
var config = {
type: "line",
key: field.fieldCode,
status: 1,
hide: false,
show: true,
editor: true,
tableCode: field.tableCode,
};
return config;
};
//15、repeat
//15、repeat
/**
* @param {?} field
* @return {?}
*/
KreToFormFieldService.prototype.repeat =
//15、repeat
/**
* @param {?} field
* @return {?}
*/
function (field) {
/** @type {?} */
var type = "card";
if (field.secondType &&
field.secondType !== null &&
field.secondType !== "") {
type = field.secondType;
}
/** @type {?} */
var config = {
type: "repeat",
key: field.fieldCode,
defaultValue: field.defaultValue,
defaultText: field.defaultText,
templateOptions: {
type: type,
label: field.fieldName,
required: field.allowNull == false ? true : false,
placeholder: field.placeholder,
isButintin: field.isButintin,
tips: field.tips,
pattern: field.pattern,
minLength: field.minLength,
maxLength: field.maxLength,
},
primitiveProperty: {
maxLength: field.maxLength,
minLength: field.minLength || 0,
},
status: 1,
hide: false,
show: true,
editor: true,
tableCode: field.tableCode,
};
return config;
};
//16、弹框
//16、弹框
/**
* @param {?} field
* @return {?}
*/
KreToFormFieldService.prototype.lookup =
//16、弹框
/**
* @param {?} field
* @return {?}
*/
function (field) {
/** @type {?} */
var config = {
type: "lookup",
key: field.fieldCode,
defaultValue: field.defaultValue,
defaultText: field.defaultText,
templateOptions: {
type: field.showType,
label: field.fieldName,
required: field.allowNull == false ? true : false,
placeholder: field.placeholder,
isButintin: field.isButintin,
tips: field.tips,
pattern: field.pattern,
selectType: field.selectType,
},
status: 1,
hide: false,
show: true,
editor: true,
tableCode: field.tableCode,
};
return config;
};
//17、人员employee | 职位position | 组织organizational | 地区area
//17、人员employee | 职位position | 组织organizational | 地区area
/**
* @param {?} field
* @return {?}
*/
KreToFormFieldService.prototype.lookup2 =
//17、人员employee | 职位position | 组织organizational | 地区area
/**
* @param {?} field
* @return {?}
*/
function (field) {
/** @type {?} */
var config = {
type: field.dataType,
key: field.fieldCode,
defaultValue: field.defaultValue,
defaultText: field.defaultText,
templateOptions: {
type: field.showType,
label: field.fieldName,
required: field.allowNull == false ? true : false,
placeholder: field.placeholder,
isButintin: field.isButintin,
tips: field.tips,
pattern: field.pattern,
minLength: field.minLength,
maxLength: field.maxLength,
selectType: field.selectType,
parameterId: field.parameterId,
},
primitiveProperty: {
maxLength: field.maxLength,
minLength: field.minLength || 0,
},
status: 1,
hide: false,
show: true,
editor: true,
tableCode: field.tableCode,
};
return config;
};
//18、tree
//18、tree
/**
* @param {?} field
* @return {?}
*/
KreToFormFieldService.prototype.tree =
//18、tree
/**
* @param {?} field
* @return {?}
*/
function (field) {
/** @type {?} */
var config = {
type: "tree",
key: field.fieldCode,
defaultValue: field.defaultValue,
defaultText: field.defaultText,
templateOptions: {
type: field.showType,
label: field.fieldName,
required: field.allowNull == false ? true : false,
placeholder: field.placeholder,
isButintin: field.isButintin,
tips: field.tips,
pattern: field.pattern,
minLength: field.minLength,
maxLength: field.maxLength,
selectType: field.selectType,
parameterId: field.parameterId,
},
primitiveProperty: {
maxLength: field.maxLength,
minLength: field.minLength || 0,
},
status: 1,
hide: false,
show: true,
editor: true,
tableCode: field.tableCode,
};
return config;
};
//19、table
//19、table
/**
* @param {?} field
* @return {?}
*/
KreToFormFieldService.prototype.table =
//19、table
/**
* @param {?} field
* @return {?}
*/
function (field) {
/** @type {?} */
var config = {
type: "table",
key: field.fieldCode,
defaultValue: field.defaultValue,
defaultText: field.defaultText,
templateOptions: {
type: field.showType,
label: field.fieldName,
required: field.allowNull == false ? true : false,
placeholder: field.placeholder,
isButintin: field.isButintin,
tips: field.tips,
pattern: field.pattern,
minLength: field.minLength,
maxLength: field.maxLength,
selectType: field.selectType,
parameterId: field.parameterId,
},
primitiveProperty: {
maxLength: field.maxLength,
minLength: field.minLength || 0,
},
status: 1,
hide: false,
show: true,
editor: true,
tableCode: field.tableCode,
};
return config;
};
//20、job
//20、job
/**
* @param {?} field
* @return {?}
*/
KreToFormFieldService.prototype.job =
//20、job
/**
* @param {?} field
* @return {?}
*/
function (field) {
/** @type {?} */
var config = {
type: "job",
key: field.fieldCode,
defaultValue: field.defaultValue,
defaultText: field.defaultText,
templateOptions: {
label: field.fieldName,
required: field.allowNull == false ? true : false,
placeholder: field.placeholder,
isButintin: field.isButintin,
tips: field.tips,
pattern: field.pattern,
minLength: field.minLength,
maxLength: field.maxLength,
selectType: field.selectType,
parameterId: field.parameterId,
},
primitiveProperty: {
maxLength: field.maxLength,
minLength: field.minLength || 0,
},
status: 1,
hide: false,
show: true,
editor: true,
tableCode: field.tableCode,
};
return config;
};
//21、refer
//21、refer
/**
* @param {?} field
* @return {?}
*/
KreToFormFieldService.prototype.refer =
//21、refer
/**
* @param {?} field
* @return {?}
*/
function (field) {
/** @type {?} */
var config = {
type: "refer",
key: field.fieldCode,
defaultValue: field.defaultValue,
defaultText: field.defaultText,
templateOptions: {
label: field.fieldName,
required: field.allowNull == false ? true : false,
placeholder: field.placeholder,
isButintin: field.isButintin,
tips: field.tips,
pattern: field.pattern,
minLength: field.minLength,
maxLength: field.maxLength,
selectType: field.selectType,
parameterId: field.parameterId,
},
primitiveProperty: {
maxLength: field.maxLength,
minLength: field.minLength || 0,
},
status: 1,
hide: false,
show: true,
editor: true,
tableCode: field.tableCode,
};
return config;
};
//22、editor
//22、editor
/**
* @param {?} field
* @return {?}
*/
KreToFormFieldService.prototype.editor =
//22、editor
/**
* @param {?} field
* @return {?}
*/
function (field) {
/** @type {?} */
var config = {
type: "editor",
key: field.fieldCode,
defaultValue: field.defaultValue,
defaultText: field.defaultText,
templateOptions: {
type: field.showType,
label: field.fieldName,
required: field.allowNull == false ? true : false,
placeholder: field.placeholder,
isButintin: field.isButintin,
tips: field.tips,
pattern: field.pattern,
minLength: field.minLength,
maxLength: field.maxLength,
selectType: field.selectType,
parameterId: field.parameterId,
},
primitiveProperty: {
maxLength: field.maxLength,
minLength: field.minLength || 0,
},
status: 1,
hide: false,
show: true,
editor: true,
tableCode: field.tableCode,
};
return config;
};
//23
//23
/**
* @param {?} field
* @return {?}
*/
KreToFormFieldService.prototype.avatar =
//23
/**
* @param {?} field
* @return {?}
*/
function (field) {
/** @type {?} */
var config = {
type: "avatar",
key: field.fieldCode,
defaultValue: field.defaultValue,
templateOptions: {
label: field.fieldName,
required: field.allowNull == false ? true : false,
placeholder: field.placeholder,
isButintin: field.isButintin,
tips: field.tips,
pattern: field.pattern,
},
status: 1,
hide: false,
show: true,
editor: true,
tableCode: field.tableCode,
};
return config;
};
//24
//24
/**
* @param {?} field
* @return {?}
*/
KreToFormFieldService.prototype.switch =
//24
/**
* @param {?} field
* @return {?}
*/
function (field) {
/** @type {?} */
var config = {
type: "switch",
key: field.fieldCode,
defaultValue: field.defaultValue,
templateOptions: {
label: field.fieldName,
required: field.allowNull == false ? true : false,
placeholder: field.placeholder,
isButintin: field.isButintin,
tips: field.tips,
pattern: field.pattern,
},
status: 1,
hide: false,
show: true,
editor: true,
tableCode: field.tableCode,
};
return config;
};
//25
//25
/**
* @param {?} field
* @return {?}
*/
KreToFormFieldService.prototype.referProcess =
//25
/**
* @param {?} field
* @return {?}
*/
function (field) {
/** @type {?} */
var config = {
type: "referProcess",
key: field.fieldCode,
defaultValue: field.defaultValue,
templateOptions: {
label: field.fieldName,
required: field.allowNull == false ? true : false,
placeholder: field.placeholder,
isButintin: field.isButintin,
tips: field.tips,
pattern: field.pattern,
},
status: 1,
hide: false,
show: true,
referProcessList: [],
editor: true,
tableCode: field.tableCode,
};
return config;
};
KreToFormFieldService.decorators = [
{ type: Injectable }
];
/** @nocollapse */
KreToFormFieldService.ctorParameters = function () { return []; };
return KreToFormFieldService;
}());
export { KreToFormFieldService };
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybUZpZWxkU2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BrcmUtZm9ybS9hbnQvIiwic291cmNlcyI6WyJsaWIvdG9vbHMvZm9ybUZpZWxkU2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7O0FBQUEsT0FBTyxFQUFFLFVBQVUsRUFBZ0IsTUFBTSxlQUFlLENBQUM7QUFHekQ7SUFFRTtJQUFlLENBQUM7Ozs7O0lBRWhCLG1EQUFtQjs7OztJQUFuQixVQUFvQixVQUErQjs7WUFDN0MsS0FBSyxHQUF1QixFQUFFOztZQUM5QixHQUFRO1FBQ1osUUFBUSxVQUFVLENBQUMsUUFBUSxFQUFFO1lBQzNCLEtBQUssTUFBTTtnQkFDVCxLQUFLLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztnQkFDOUIsTUFBTTtZQUNSLEtBQUssVUFBVTtnQkFDYixLQUFLLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxVQUFVLENBQUMsQ0FBQztnQkFDbEMsTUFBTTtZQUNSLEtBQUssVUFBVTtnQkFDYixLQUFLLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxVQUFVLENBQUMsQ0FBQztnQkFDbEMsTUFBTTtZQUNSLEtBQUssU0FBUztnQkFDWixLQUFLLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQztnQkFDaEMsTUFBTTtZQUNSLEtBQUssVUFBVTtnQkFDYixLQUFLLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxVQUFVLENBQUMsQ0FBQztnQkFDbEMsTUFBTTtZQUNSLEtBQUssT0FBTztnQkFDVixLQUFLLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMsQ0FBQztnQkFDL0IsTUFBTTtZQUNSLEtBQUssWUFBWTtnQkFDZixLQUFLLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxVQUFVLENBQUMsQ0FBQztnQkFDcEMsTUFBTTtZQUNSLEtBQUssVUFBVTtnQkFDYixLQUFLLEdBQUcsSUFBSSxDQUFD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