vue-ant-patterns
Version:
vue-ant-patterns
838 lines (732 loc) • 28.3 kB
JavaScript
'use strict';
Object.defineProperty(exports, "__esModule", {
value: true
});
var _extends2 = require('babel-runtime/helpers/extends');
var _extends3 = _interopRequireDefault(_extends2);
var _moment = require('moment');
var _moment2 = _interopRequireDefault(_moment);
var _extend = require('extend');
var _extend2 = _interopRequireDefault(_extend);
var _antDesignVue = require('ant-design-vue');
var _utils = require('../../lib/_utils');
var _bConstant = require('../b-constant');
var _bConstant2 = _interopRequireDefault(_bConstant);
var _bSearchHelper = require('../b-search-helper');
var _bSearchHelper2 = _interopRequireDefault(_bSearchHelper);
var _bTableCollection = require('../b-table-collection');
var _bTableCollection2 = _interopRequireDefault(_bTableCollection);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }
var TextArea = _antDesignVue.Input.TextArea; /*
* @Author: w.pengfei
* @Date: 2020-06-22 13:29:35
* @LastEditTime: 2021-04-12 15:07:52
* @Description: ''
* @LastEditors: daibing
*/
var inputAttr_err = 'data-___err';
var getElAttr = function getElAttr(el, val) {
if (el && el.nodeType && el.nodeType === 1) {
if (val) {
el.setAttribute(inputAttr_err, val);
return;
}
return el.getAttribute(inputAttr_err);
}
};
exports['default'] = {
name: 'mixin-form-item',
props: {
localeCode: {
type: 'String',
'default': function _default() {
return 'zh-cn';
}
}
},
// inject: ['subFields'],
created: function created() {
// 去掉防抖, 输入框看起来稍微好一点
// this.onFieldInput = debounceHandler(this.onFieldInput);
},
data: function data() {
return {
textareaCache: {}
};
},
methods: {
getDisable: function getDisable(sectionCode, fieldName, rawDis) {
var strConnector = this.strConnector;
var _$props = this.$props,
forceDisableField = _$props.forceDisableField,
forceEnableField = _$props.forceEnableField;
var isDisabled = rawDis;
var fieldId = this.combinationFieldName(null, sectionCode, fieldName);
fieldId = fieldId.replace('null' + strConnector, '');
if (forceDisableField.includes(fieldId)) {
isDisabled = true;
}
if (forceEnableField.includes(fieldId)) {
isDisabled = false;
}
if ((forceEnableField.length || forceDisableField.length) && (forceDisableField.includes(fieldId) || forceEnableField.includes(fieldId))) {
return isDisabled;
}
return isDisabled;
},
getRequired: function getRequired(sectionCode, fieldName, rawReq) {
var strConnector = this.strConnector;
var forceRequiredField = this.forceRequiredField,
forceUnRequiredField = this.forceUnRequiredField;
var isRequired = rawReq;
var fieldId = this.combinationFieldName(null, sectionCode, fieldName);
fieldId = fieldId.replace('null' + strConnector, '');
if (forceRequiredField.includes(fieldId)) {
isRequired = true;
}
if (forceUnRequiredField.includes(fieldId)) {
isRequired = false;
}
if ((forceRequiredField.length || forceUnRequiredField.length) && (forceRequiredField.includes(fieldId) || forceUnRequiredField.includes(fieldId))) {
return isRequired;
}
return isRequired;
},
// 文本框
render$TEXT: function render$TEXT(fieldPropertys) {
var _this = this;
var h = this.$createElement;
var panel = fieldPropertys.panel,
section = fieldPropertys.section,
field = fieldPropertys.field,
nFieldName = fieldPropertys.nFieldName,
fieldName = fieldPropertys.fieldName,
label = fieldPropertys.label,
controlType = fieldPropertys.controlType,
isReadOnly = fieldPropertys.isReadOnly,
isRequired = fieldPropertys.isRequired,
isDisabled = fieldPropertys.isDisabled,
sectionId = fieldPropertys.sectionId,
sectionCode = fieldPropertys.sectionCode,
numFieldMaxValue = fieldPropertys.numFieldMaxValue,
tempDefaultValue = fieldPropertys.tempDefaultValue;
var form = this.form;
var getFieldDecorator = form.getFieldDecorator;
isDisabled = this.getDisable(sectionCode, fieldName, isDisabled);
isRequired = this.getRequired(sectionCode, fieldName, isRequired);
var inpRops = {
props: {
disabled: isDisabled || isReadOnly,
allowClear: true,
placeholder: label,
readonly: true
},
// class: 'ant-input',
// on: null,
on: {
change: function change(e) {
var target = e.target,
type = e.type;
var val = target.value;
if (type === 'click') {
_this.$refs[nFieldName].$emit('blur', val);
}
if (isRequired) {
var fieldRef = _this.$refs[nFieldName];
var err = null;
if (fieldRef) {
if (!val) {
_this.$refs[nFieldName].$emit('blur', '');
err = form.getFieldError(nFieldName);
if (err) {
getElAttr(fieldRef.$el, '[object Object]');
}
} else {
var attr = getElAttr(fieldRef.$el);
if (attr) {
fieldRef.$emit('blur', val);
fieldRef.$el.removeAttribute(inputAttr_err);
}
}
}
}
_this.onFieldInput({
controlType: controlType,
eventType: 'change',
event: e,
value: e.target.value,
fieldName: nFieldName,
panel: (0, _extend2['default'])({}, panel),
section: (0, _extend2['default'])({}, section),
field: (0, _extend2['default'])({}, field)
});
}
},
ref: nFieldName,
key: nFieldName + '-field'
};
var sectionData = this.getSectionData(sectionId);
var value = this.getFieldValue('TEXT', fieldName, sectionData) || tempDefaultValue;
var localeCode = this.$props.localeCode;
var langType = this.langType;
var pleaseEnter = langType[localeCode].pleaseEnter;
var maxLen = langType[localeCode].maxLen;
return getFieldDecorator(nFieldName, {
initialValue: value,
trigger: 'blur',
// validateTrigger: 'change',
rules: [{
required: isRequired,
message: '' + pleaseEnter + label
}]
})(h(_antDesignVue.Input, inpRops));
},
// 数字文本框
render$NUMBER: function render$NUMBER(fieldPropertys) {
var _this2 = this;
var h = this.$createElement;
var panel = fieldPropertys.panel,
section = fieldPropertys.section,
field = fieldPropertys.field,
nFieldName = fieldPropertys.nFieldName,
fieldName = fieldPropertys.fieldName,
label = fieldPropertys.label,
controlType = fieldPropertys.controlType,
isReadOnly = fieldPropertys.isReadOnly,
isRequired = fieldPropertys.isRequired,
isDisabled = fieldPropertys.isDisabled,
sectionId = fieldPropertys.sectionId,
sectionCode = fieldPropertys.sectionCode,
tempDefaultValue = fieldPropertys.tempDefaultValue;
var form = this.form;
var getFieldDecorator = form.getFieldDecorator;
isDisabled = this.getDisable(sectionCode, fieldName, isDisabled);
isRequired = this.getRequired(sectionCode, fieldName, isRequired);
var inpRops = {
props: {
disabled: isDisabled || isReadOnly,
readonly: isReadOnly,
placeholder: label
},
on: {
change: function change(e) {
_this2.onFieldChange({
controlType: controlType,
eventType: 'change',
event: null,
value: e,
fieldName: nFieldName,
panel: (0, _extend2['default'])({}, panel),
section: (0, _extend2['default'])({}, section),
field: (0, _extend2['default'])({}, field)
});
}
},
ref: nFieldName,
key: nFieldName + '-field'
};
var sectionData = this.getSectionData(sectionId);
var value = this.getFieldValue('NUMBER', fieldName, sectionData) || tempDefaultValue;
var localeCode = this.$props.localeCode;
var langType = this.langType;
var pleaseEnter = langType[localeCode].pleaseEnter;
return getFieldDecorator(nFieldName, {
initialValue: value,
rules: [{ required: isRequired, message: '' + pleaseEnter + label }]
})(h(_antDesignVue.InputNumber, inpRops));
},
// 文本域
render$TEXTAREA: function render$TEXTAREA(fieldPropertys) {
var _this3 = this;
var h = this.$createElement;
var panel = fieldPropertys.panel,
section = fieldPropertys.section,
field = fieldPropertys.field,
nFieldName = fieldPropertys.nFieldName,
fieldName = fieldPropertys.fieldName,
label = fieldPropertys.label,
controlType = fieldPropertys.controlType,
isReadOnly = fieldPropertys.isReadOnly,
isRequired = fieldPropertys.isRequired,
isDisabled = fieldPropertys.isDisabled,
sectionId = fieldPropertys.sectionId,
sectionCode = fieldPropertys.sectionCode,
numFieldMaxValue = fieldPropertys.numFieldMaxValue,
tempDefaultValue = fieldPropertys.tempDefaultValue;
var form = this.form,
textareaCache = this.textareaCache,
langType = this.langType,
$props = this.$props;
var localeCode = $props.localeCode,
prefixCls = $props.prefixCls;
var getFieldDecorator = form.getFieldDecorator;
isDisabled = this.getDisable(sectionCode, fieldName, isDisabled);
isRequired = this.getRequired(sectionCode, fieldName, isRequired);
/**
* 获取区段数据
*/
var sectionData = this.getSectionData(sectionId);
/**
* 根据字段, 控件类型, 取值
*/
var value = this.getFieldValue('TEXTAREA', fieldName, sectionData) || tempDefaultValue;
var inpRops = {
props: {
disabled: isDisabled || isReadOnly,
placeholder: label,
allowClear: true,
readonly: isReadOnly,
autoSize: {
minRows: 3,
maxRows: 8
}
},
on: {
change: function change(e) {
var target = e.target,
type = e.type;
var val = target.value;
if (isRequired) {
var fieldRef = _this3.$refs[nFieldName];
var err = null;
if (fieldRef) {
if (!val) {
_this3.$refs[nFieldName].$emit('blur', '');
err = form.getFieldError(nFieldName);
if (err) {
getElAttr(fieldRef.$el, '[object Object]');
}
} else {
var attr = getElAttr(fieldRef.$el);
if (attr) {
fieldRef.$emit('blur', val);
fieldRef.$el.removeAttribute(inputAttr_err);
}
}
}
}
_this3.onFieldInput({
controlType: controlType,
eventType: 'change',
event: e,
value: val,
fieldName: nFieldName,
panel: (0, _extend2['default'])({}, panel),
section: (0, _extend2['default'])({}, section),
field: (0, _extend2['default'])({}, field)
});
}
},
ref: nFieldName,
key: nFieldName + '-field'
};
var pleaseEnter = langType[localeCode].pleaseEnter;
var maxLen = langType[localeCode].maxLen;
return getFieldDecorator(nFieldName, {
initialValue: value,
trigger: 'blur',
rules: [{
required: isRequired,
message: '' + pleaseEnter + label
}]
})(h(TextArea, inpRops));
},
// 日期控件
render$DATE: function render$DATE(fieldPropertys, _time) {
var _this4 = this;
var h = this.$createElement;
var dateFormat = this.$props.dateFormat;
var panel = fieldPropertys.panel,
section = fieldPropertys.section,
field = fieldPropertys.field,
nFieldName = fieldPropertys.nFieldName,
fieldName = fieldPropertys.fieldName,
label = fieldPropertys.label,
controlType = fieldPropertys.controlType,
isReadOnly = fieldPropertys.isReadOnly,
isRequired = fieldPropertys.isRequired,
isDisabled = fieldPropertys.isDisabled,
sectionId = fieldPropertys.sectionId,
sectionCode = fieldPropertys.sectionCode,
tempDefaultValue = fieldPropertys.tempDefaultValue;
var form = this.form,
isEdit = this.isEdit,
vFormat = this.vFormat;
var getFieldDecorator = form.getFieldDecorator;
isDisabled = this.getDisable(sectionCode, fieldName, isDisabled);
isRequired = this.getRequired(sectionCode, fieldName, isRequired);
var inpRops = {
props: {
disabled: isDisabled || isReadOnly,
readonly: isReadOnly,
format: vFormat
},
'class': 'vm-width-full-item',
on: {
change: function change(e) {
var value = _moment2['default'].isMoment(e) ? e.valueOf() : e;
_this4.onFieldChange({
controlType: controlType,
eventType: 'change',
event: null,
value: value,
fieldName: nFieldName,
panel: (0, _extend2['default'])({}, panel),
section: (0, _extend2['default'])({}, section),
field: (0, _extend2['default'])({}, field)
});
}
},
ref: nFieldName,
key: nFieldName + '-field'
};
var sectionData = this.getSectionData(sectionId);
var value = this.getFieldValue(controlType, fieldName, sectionData, tempDefaultValue);
var localeCode = this.$props.localeCode;
var langType = this.langType;
var selectDate = langType[localeCode].selectDate;
return getFieldDecorator(nFieldName, {
initialValue: value,
rules: [{ required: isRequired, message: selectDate }]
})(h(_antDesignVue.DatePicker, inpRops));
},
// 时间控件
render$TIME: function render$TIME(fieldPropertys) {
var _this5 = this;
var h = this.$createElement;
var nFieldName = fieldPropertys.nFieldName,
fieldName = fieldPropertys.fieldName,
label = fieldPropertys.label,
controlType = fieldPropertys.controlType,
isReadOnly = fieldPropertys.isReadOnly,
isRequired = fieldPropertys.isRequired,
isDisabled = fieldPropertys.isDisabled,
sectionId = fieldPropertys.sectionId,
sectionCode = fieldPropertys.sectionCode,
fieldIdKey = fieldPropertys.fieldIdKey,
tempDefaultValue = fieldPropertys.tempDefaultValue;
var form = this.form;
var getFieldDecorator = form.getFieldDecorator;
isDisabled = this.getDisable(sectionCode, fieldName, isDisabled);
isRequired = this.getRequired(sectionCode, fieldName, isRequired);
var inpRops = {
props: {
disabled: isDisabled,
readonly: isReadOnly,
placeholder: label
},
on: {
change: function change(e) {
var value = _moment2['default'].isMoment(e) ? e.valueOf() : e;
_this5.onFieldChange({
controlType: controlType,
eventType: 'change',
event: null,
value: value,
fieldName: nFieldName,
panel: (0, _extend2['default'])({}, panel),
section: (0, _extend2['default'])({}, section),
field: (0, _extend2['default'])({}, field)
});
}
}
};
var localeCode = this.$props.localeCode;
var langType = this.langType;
var selectTime = langType[localeCode].selectTime;
var sectionData = this.getSectionData(sectionId);
var value = this.getFieldValue('TIME', fieldName, sectionData);
return getFieldDecorator(nFieldName, {
initialValue: value,
rules: [{ required: isRequired, message: selectTime }]
})(h(_antDesignVue.TimePicker, inpRops));
},
// 搜索助手
render$SELECTOR: function render$SELECTOR(fieldPropertys) {
var _this6 = this;
var h = this.$createElement;
var panel = fieldPropertys.panel,
section = fieldPropertys.section,
field = fieldPropertys.field,
nFieldName = fieldPropertys.nFieldName,
fieldName = fieldPropertys.fieldName,
label = fieldPropertys.label,
controlType = fieldPropertys.controlType,
isReadOnly = fieldPropertys.isReadOnly,
isRequired = fieldPropertys.isRequired,
isDisabled = fieldPropertys.isDisabled,
sectionId = fieldPropertys.sectionId,
sectionCode = fieldPropertys.sectionCode,
searchHelperCode = fieldPropertys.searchHelperCode,
tempDefaultValue = fieldPropertys.tempDefaultValue;
var form = this.form;
var getFieldDecorator = form.getFieldDecorator;
isDisabled = this.getDisable(sectionCode, fieldName, isDisabled);
isRequired = this.getRequired(sectionCode, fieldName, isRequired);
var componentName = nFieldName + 'SearchHelper';
var inpRops = {
props: {
disabled: isDisabled || isReadOnly,
readonly: isReadOnly || isDisabled,
allowClear: true,
placeholder: label,
code: searchHelperCode
},
on: {
change: function change(val, args) {
_this6.onFieldChange({
controlType: controlType,
eventType: 'select',
event: null,
value: args,
fieldName: nFieldName,
panel: (0, _extend2['default'])({}, panel),
section: (0, _extend2['default'])({}, section),
field: (0, _extend2['default'])({}, field)
});
}
},
key: nFieldName + '-field',
ref: componentName
};
var sectionData = this.getSectionData(sectionId);
var value = this.getFieldValue('SELECTOR', fieldName, sectionData) || tempDefaultValue;
var localeCode = this.$props.localeCode;
var langType = this.langType;
var pleaseSelect = langType[localeCode].pleaseSelect;
return getFieldDecorator(nFieldName, {
initialValue: value,
rules: [{ required: isRequired, message: '' + pleaseSelect + label }]
})(h(_bSearchHelper2['default'], inpRops));
},
// 常数代码
render$CONSTANT: function render$CONSTANT(fieldPropertys) {
var _this7 = this;
var h = this.$createElement;
var panel = fieldPropertys.panel,
section = fieldPropertys.section,
field = fieldPropertys.field,
nFieldName = fieldPropertys.nFieldName,
fieldName = fieldPropertys.fieldName,
label = fieldPropertys.label,
controlType = fieldPropertys.controlType,
isReadOnly = fieldPropertys.isReadOnly,
isRequired = fieldPropertys.isRequired,
isDisabled = fieldPropertys.isDisabled,
sectionId = fieldPropertys.sectionId,
sectionCode = fieldPropertys.sectionCode,
constantType = fieldPropertys.constantType,
tempDefaultValue = fieldPropertys.tempDefaultValue;
var form = this.form;
var getFieldDecorator = form.getFieldDecorator;
isDisabled = this.getDisable(sectionCode, fieldName, isDisabled);
isRequired = this.getRequired(sectionCode, fieldName, isRequired);
var sectionData = this.getSectionData(sectionId);
// 常数代码默认不能用空[]
var value = this.getFieldValue('CONSTANT', fieldName, sectionData) || tempDefaultValue || null;
var typeCode = constantType;
// if (value && value.typeCode) {
// typeCode = value.typeCode;
// }
var componentName = nFieldName + 'Constant';
var inpRops = {
props: {
disabled: isDisabled || isReadOnly,
readonly: isReadOnly,
allowClear: true,
placeholder: label,
typeCode: typeCode
},
on: {
change: function change(e) {
_this7.onFieldChange({
controlType: controlType,
eventType: 'select',
event: null,
value: e,
fieldName: nFieldName,
panel: (0, _extend2['default'])({}, panel),
section: (0, _extend2['default'])({}, section),
field: (0, _extend2['default'])({}, field)
});
}
},
ref: componentName,
key: nFieldName + '-field'
};
var localeCode = this.$props.localeCode;
var langType = this.langType;
var pleaseSelect = langType[localeCode].pleaseSelect;
return getFieldDecorator(nFieldName, {
initialValue: value,
rules: [{ required: isRequired, message: '' + pleaseSelect + label }]
})(h(_bConstant2['default'], inpRops));
},
/**
* 下拉列表控件
* 表集合
*/
render$SETID: function render$SETID(fieldPropertys) {
var _this8 = this;
var h = this.$createElement;
var panel = fieldPropertys.panel,
section = fieldPropertys.section,
field = fieldPropertys.field,
nFieldName = fieldPropertys.nFieldName,
fieldName = fieldPropertys.fieldName,
label = fieldPropertys.label,
controlType = fieldPropertys.controlType,
isReadOnly = fieldPropertys.isReadOnly,
isRequired = fieldPropertys.isRequired,
isDisabled = fieldPropertys.isDisabled,
sectionId = fieldPropertys.sectionId,
sectionCode = fieldPropertys.sectionCode,
constantType = fieldPropertys.constantType,
tempDefaultValue = fieldPropertys.tempDefaultValue;
var form = this.form;
var getFieldDecorator = form.getFieldDecorator;
var _$props2 = this.$props,
tableCollectionQueryParam = _$props2.tableCollectionQueryParam,
tableCollectionKeys = _$props2.tableCollectionKeys;
isDisabled = this.getDisable(sectionCode, fieldName, isDisabled);
isRequired = this.getRequired(sectionCode, fieldName, isRequired);
var sectionData = this.getSectionData(sectionId);
var value = this.getFieldValue('SETID', fieldName, sectionData) || tempDefaultValue || [];
var tableName = section.tableName;
// let typeCode = constantType;
var componentName = nFieldName + 'SETID';
var inpRops = {
props: {
disabled: isDisabled || isReadOnly,
readonly: isReadOnly,
allowClear: true,
placeholder: label,
tableName: tableName,
status: 'edit',
type: 'select',
queryParam: tableCollectionQueryParam,
keys: tableCollectionKeys
// value,
},
on: {
changeValue: function changeValue(_ref) {
var value = _ref.value,
options = _ref.options;
_this8.onFieldChange({
controlType: controlType,
eventType: 'select',
event: null,
value: value,
options: options,
fieldName: nFieldName,
panel: (0, _extend2['default'])({}, panel),
section: (0, _extend2['default'])({}, section),
field: (0, _extend2['default'])({}, field)
});
}
},
ref: componentName,
key: nFieldName + '-field'
};
var localeCode = this.$props.localeCode;
var langType = this.langType;
var pleaseSelect = langType[localeCode].pleaseSelect;
return getFieldDecorator(nFieldName, {
initialValue: value,
rules: [{ required: isRequired, message: '' + pleaseSelect + label }]
})(h(_bTableCollection2['default'], inpRops));
},
render$COMBOBOX: function render$COMBOBOX(fieldPropertys) {
return this.render$CONSTANT(fieldPropertys);
},
// 多选框控件
render$CHECKBOX: function render$CHECKBOX() {
var h = this.$createElement;
return h('span', ['CHECKBOX \u63A7\u4EF6']);
},
// 多选框控件
render$SELECTBOX: function render$SELECTBOX() {
var h = this.$createElement;
return h('span', ['SELECTBOX \u63A7\u4EF6']);
},
// 上传图片控件
render$IMG: function render$IMG() {
var h = this.$createElement;
return h('span', ['IMG \u4E0A\u4F20\u56FE\u7247\u63A7\u4EF6']);
},
// 上传附件控件
render$FILE: function render$FILE() {
var h = this.$createElement;
return h('span', ['FILE \u4E0A\u4F20\u9644\u4EF6\u63A7\u4EF6']);
},
// 货币控件
render$MONEY: function render$MONEY(fieldPropertys) {
return this.render$TEXT(fieldPropertys);
},
// 身份证
render$IDCARD: function render$IDCARD() {
var h = this.$createElement;
return h('span', ['IDCARD \u8EAB\u4EFD\u8BC1']);
},
// CKEDIT 文本编辑器
render$CKEDIT: function render$CKEDIT() {
var h = this.$createElement;
return h('span', ['CKEDIT \u6587\u672C\u7F16\u8F91\u5668']);
},
onFieldChange: function onFieldChange(arg) {
this.$emit('fieldChange', (0, _extends3['default'])({}, arg));
},
onFieldInput: function onFieldInput(arg) {
this.$emit('fieldChange', (0, _extends3['default'])({}, arg));
},
onSearchChange: function onSearchChange(_ref2) {
var arg = _ref2.arg;
this.$emit('searchChange', (0, _extends3['default'])({}, arg));
},
onFieldSelect: function onFieldSelect(arg) {
this.$emit('fieldSelect', (0, _extends3['default'])({}, arg));
},
// onHelperLoading({ event, fieldName, form, searchHelperCode }) {
// this.$emit('helperLoading', { event, fieldName, form, searchHelperCode });
// },
// 树形的常数代码重新组装下数据格式为级联选择器用的
handlerConstantTree: function handlerConstantTree(treeData) {
var _this9 = this;
var tmpObj = void 0;
var treeList = [];
if (treeData.length > 0) {
treeData.map(function (item, index) {
tmpObj = {};
if (_this9.isRoot(item)) {
tmpObj.label = item.name;
tmpObj.children = _this9.findChildren(item, treeData);
treeList.push((0, _extends3['default'])({}, item, tmpObj));
}
});
}
return treeList;
},
isRoot: function isRoot(item) {
return item.parentCode === '-1';
},
findChildren: function findChildren(item, treeData) {
var _this10 = this;
var arr = [];
if (item.subItemCodes.length > 0) {
// 有下级
var its = item.subItemCodes.map(function (subItem, index) {
treeData.find(function (it) {
if (it.code === subItem) {
it.label = it.name;
arr.push(it);
}
});
});
arr.map(function (arritem) {
arritem.children = _this10.findChildren(arritem, treeData);
});
}
return arr;
}
}
};