UNPKG

@kre-form/ant

Version:

1,081 lines 86.2 kB
/** * @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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