@kre-form/ant
Version:
899 lines • 81.5 kB
JavaScript
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/
import { Injectable } from "@angular/core";
export class KreToFormFieldService {
constructor() { }
/**
* @param {?} tableField
* @return {?}
*/
getKreFiledFunction(tableField) {
/** @type {?} */
let field = {};
/** @type {?} */
let 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、字符串
/**
* @param {?} field
* @return {?}
*/
text(field) {
/** @type {?} */
let 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、多语言
/**
* @param {?} field
* @return {?}
*/
textI18N(field) {
/** @type {?} */
let 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、多行文本
/**
* @param {?} field
* @return {?}
*/
textArea(field) {
/** @type {?} */
let 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、数字
/**
* @param {?} field
* @return {?}
*/
number(field) {
/** @type {?} */
let 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、密码
/**
* @param {?} field
* @return {?}
*/
passWord(field) {
/** @type {?} */
let 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、单选
/**
* @param {?} field
* @return {?}
*/
radio(field) {
/** @type {?} */
let 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、单选组
/**
* @param {?} field
* @return {?}
*/
radioGroup(field) {
/** @type {?} */
let 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、复选
/**
* @param {?} field
* @return {?}
*/
checkbox(field) {
/** @type {?} */
let 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、复选组
/**
* @param {?} field
* @return {?}
*/
checkboxGroup(field) {
/** @type {?} */
let 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、下拉
/**
* @param {?} field
* @return {?}
*/
select(field) {
/** @type {?} */
let 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、日期
/**
* @param {?} field
* @return {?}
*/
datetime(field) {
/** @type {?} */
let 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、图片
/**
* @param {?} field
* @return {?}
*/
image(field) {
/** @type {?} */
let 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、附件
/**
* @param {?} field
* @return {?}
*/
upload(field) {
/** @type {?} */
let 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
/**
* @param {?} field
* @return {?}
*/
line(field) {
/** @type {?} */
let config = {
type: "line",
key: field.fieldCode,
status: 1,
hide: false,
show: true,
editor: true,
tableCode: field.tableCode,
};
return config;
}
//15、repeat
/**
* @param {?} field
* @return {?}
*/
repeat(field) {
/** @type {?} */
let type = "card";
if (field.secondType &&
field.secondType !== null &&
field.secondType !== "") {
type = field.secondType;
}
/** @type {?} */
let 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、弹框
/**
* @param {?} field
* @return {?}
*/
lookup(field) {
/** @type {?} */
let 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
/**
* @param {?} field
* @return {?}
*/
lookup2(field) {
/** @type {?} */
let 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
/**
* @param {?} field
* @return {?}
*/
tree(field) {
/** @type {?} */
let 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
/**
* @param {?} field
* @return {?}
*/
table(field) {
/** @type {?} */
let 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
/**
* @param {?} field
* @return {?}
*/
job(field) {
/** @type {?} */
let 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
/**
* @param {?} field
* @return {?}
*/
refer(field) {
/** @type {?} */
let 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
/**
* @param {?} field
* @return {?}
*/
editor(field) {
/** @type {?} */
let 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
/**
* @param {?} field
* @return {?}
*/
avatar(field) {
/** @type {?} */
let 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
/**
* @param {?} field
* @return {?}
*/
switch(field) {
/** @type {?} */
let 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
/**
* @param {?} field
* @return {?}
*/
referProcess(field) {
/** @type {?} */
let 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 = () => [];
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybUZpZWxkU2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BrcmUtZm9ybS9hbnQvIiwic291cmNlcyI6WyJsaWIvdG9vbHMvZm9ybUZpZWxkU2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7O0FBQUEsT0FBTyxFQUFFLFVBQVUsRUFBZ0IsTUFBTSxlQUFlLENBQUM7QUFJekQsTUFBTSxPQUFPLHFCQUFxQjtJQUNoQyxnQkFBZSxDQUFDOzs7OztJQUVoQixtQkFBbUIsQ0FBQyxVQUErQjs7WUFDN0MsS0FBSyxHQUF1QixFQUFFOztZQUM5QixHQUFRO1FBQ1osUUFBUSxVQUFVLENBQUMsUUFBUSxFQUFFO1lBQzNCLEtBQUssTUFBTTtnQkFDVCxLQUFLLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztnQkFDOUIsTUFBTTtZQUNSLEtBQUssVUFBVTtnQkFDYixLQUFLLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxVQUFVLENBQUMsQ0FBQztnQkFDbEMsTUFBTTtZQUNSLEtBQUssVUFBVTtnQkFDYixLQUFLLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxVQUFVLENBQUMsQ0FBQztnQkFDbEMsTUFBTTtZQUNSLEtBQUssU0FBUztnQkFDWixLQUFLLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQztnQkFDaEMsTUFBTTtZQUNSLEtBQUssVUFBVTtnQkFDYixLQUFLLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxVQUFVLENBQUMsQ0FBQztnQkFDbEMsTUFBTTtZQUNSLEtBQUssT0FBTztnQkFDVixLQUFLLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMsQ0FBQztnQkFDL0IsTUFBTTtZQUNSLEtBQUssWUFBWTtnQkFDZixLQUFLLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxVQUFVLENBQUMsQ0FBQztnQkFDcEMsTUFBTTtZQUNSLEtBQUssVUFBVTtnQkFDYixLQUFLLEdBQUcs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