UNPKG

@kre-form/ant

Version:

899 lines 81.5 kB
/** * @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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