UNPKG

vue-ant-patterns

Version:

vue-ant-patterns

838 lines (732 loc) 28.3 kB
'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; } } };