fmui-base 2.3.40 → 2.3.41

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -3,6 +3,7 @@
3
3
  ---npm publish
4
4
 
5
5
  ## 更新日志
6
+ - 2.3.41:移动端支持表单字段校验属性
6
7
  - 2.3.40:表单html字段增加className="ueditor-content"
7
8
  - 2.3.39:表单说明组件附件允许下载
8
9
  - 2.3.38:选人组件增加参数noSelectRoot,为1时根组织不可选,默认根组织可选
@@ -0,0 +1,127 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.checkCompareRegular = checkCompareRegular;
7
+ exports.isDateTimeValue = isDateTimeValue;
8
+ /**
9
+ * 表单校验工具(与 PC form.runtime.util.api.js compare 逻辑对齐)
10
+ */
11
+
12
+ function isDateTimeLikeValue(value) {
13
+ if (value === null || value === undefined || value === '') {
14
+ return false;
15
+ }
16
+ return (/^\d{4}-\d{1,2}-\d{1,2}/.test(String(value).trim())
17
+ );
18
+ }
19
+
20
+ function shouldParseAsDateTime(itemType, inputFormat, fieldType, value) {
21
+ if (itemType === 'datetime' || itemType === 'datetimeStep') {
22
+ return true;
23
+ }
24
+ if (fieldType === 'date' || inputFormat === 'date') {
25
+ return true;
26
+ }
27
+ return isDateTimeLikeValue(value);
28
+ }
29
+
30
+ function parseCompareValue(value, meta) {
31
+ if (value === null || value === undefined || value === '') {
32
+ return 0;
33
+ }
34
+ var itemType = meta && meta.itemType;
35
+ var inputFormat = meta && meta.inputFormat;
36
+ var fieldType = meta && meta.fieldType;
37
+ if (shouldParseAsDateTime(itemType, inputFormat, fieldType, value)) {
38
+ var time = new Date(String(value).replace(/-/g, '/')).getTime();
39
+ return isNaN(time) ? 0 : time;
40
+ }
41
+ var num = parseFloat(value);
42
+ if (!isNaN(num) && String(value).trim() !== '') {
43
+ return num;
44
+ }
45
+ return value;
46
+ }
47
+
48
+ function getFieldMeta(saveItem, key, mainTblData, index) {
49
+ var row = mainTblData[index] || {};
50
+ var formItem = null;
51
+ if (saveItem && saveItem.length) {
52
+ for (var i = 0; i < saveItem.length; i++) {
53
+ if (saveItem[i].itemCode === key) {
54
+ formItem = saveItem[i];
55
+ break;
56
+ }
57
+ }
58
+ }
59
+ return {
60
+ itemType: row.itemType || formItem && formItem.itemType,
61
+ inputFormat: row.inputFormat || formItem && formItem.inputFormat,
62
+ fieldType: row.fieldType || formItem && formItem.fieldType
63
+ };
64
+ }
65
+
66
+ function resolveOtherCompareValue(otherId, mainTblName, mainTblData, saveItem) {
67
+ if (!otherId) {
68
+ return 0;
69
+ }
70
+ if (otherId.indexOf('+') > -1) {
71
+ var plusArr = otherId.split('+');
72
+ var leftVal = resolveOtherCompareValue(plusArr[0], mainTblName, mainTblData, saveItem);
73
+ return eval(leftVal + '+' + plusArr[1]);
74
+ }
75
+ if (otherId.indexOf('-') > -1 && otherId.indexOf('_') > -1) {
76
+ var minusParts = otherId.split('-');
77
+ if (minusParts.length === 2 && /^\d+(\.\d+)?$/.test(minusParts[1])) {
78
+ var baseVal = resolveOtherCompareValue(minusParts[0], mainTblName, mainTblData, saveItem);
79
+ return eval(baseVal + '-' + minusParts[1]);
80
+ }
81
+ }
82
+ if (otherId.indexOf('*') > -1) {
83
+ var mulArr = otherId.split('*');
84
+ var mulLeft = resolveOtherCompareValue(mulArr[0], mainTblName, mainTblData, saveItem);
85
+ return eval(mulLeft + '*' + mulArr[1]);
86
+ }
87
+ if (otherId.indexOf('/') > -1) {
88
+ var divArr = otherId.split('/');
89
+ var divLeft = resolveOtherCompareValue(divArr[0], mainTblName, mainTblData, saveItem);
90
+ return eval(divLeft + '/' + divArr[1]);
91
+ }
92
+ for (var f = 0; f < mainTblData.length; f++) {
93
+ if (mainTblName + '_' + mainTblData[f].key === otherId) {
94
+ return parseCompareValue(mainTblData[f].value, getFieldMeta(saveItem, mainTblData[f].key, mainTblData, f));
95
+ }
96
+ }
97
+ return 0;
98
+ }
99
+
100
+ /**
101
+ * compare|>|表名_字段名 字段比较校验,失败返回提示,成功返回空字符串
102
+ */
103
+ function checkCompareRegular(regular, tips, currentValue, currentMeta, mainTblName, mainTblData, saveItem) {
104
+ if (!regular || regular.indexOf('compare') === -1) {
105
+ return '';
106
+ }
107
+ var regularArr = regular.split('|');
108
+ if (regularArr.length < 3 || !regularArr[1] || !regularArr[2]) {
109
+ return '';
110
+ }
111
+ var compareMark = regularArr[1];
112
+ var otherUniqueName = regularArr[2];
113
+ var thisValue = parseCompareValue(currentValue, currentMeta);
114
+ var otherValue = resolveOtherCompareValue(otherUniqueName, mainTblName, mainTblData, saveItem);
115
+ try {
116
+ if (eval(thisValue + compareMark + otherValue)) {
117
+ return tips || '';
118
+ }
119
+ } catch (e) {
120
+ return tips || '';
121
+ }
122
+ return '';
123
+ }
124
+
125
+ function isDateTimeValue(value, meta) {
126
+ return shouldParseAsDateTime(meta && meta.itemType, meta && meta.inputFormat, meta && meta.fieldType, value);
127
+ }
package/lib/form/form.js CHANGED
@@ -2368,6 +2368,7 @@ var PageHome = function (_React$Component) {
2368
2368
  mainTblData[i].inputFormat = itemParam.inputFormat;
2369
2369
  mainTblData[i].fieldType = itemParam.fieldType;
2370
2370
  mainTblData[i].decimalPlace = itemParam.decimalPlace;
2371
+ mainTblData[i].itemType = itemParam.itemType;
2371
2372
  // if(item.showValue){
2372
2373
  // value = item.showValue;
2373
2374
  // item.showValue = null;
@@ -78,6 +78,8 @@ var _table2 = _interopRequireDefault(_table);
78
78
 
79
79
  var _filterEmptySubTblRows = require('../form/filterEmptySubTblRows');
80
80
 
81
+ var _formValidUtil = require('../common/formValidUtil');
82
+
81
83
  var _FlowChart = require('./FlowChart');
82
84
 
83
85
  var _FlowChart2 = _interopRequireDefault(_FlowChart);
@@ -1091,6 +1093,7 @@ var PageHome = function (_React$Component) {
1091
1093
  key: 'checkRegularSubmit',
1092
1094
  value: function checkRegularSubmit(saveTable, saveItem) {
1093
1095
  var mainTblData = saveTable.mainTblData;
1096
+ var mainTblName = saveTable.mainTblName || '';
1094
1097
  var subTbl = saveTable.subTbl;
1095
1098
  for (var i = 0; i < mainTblData.length; i++) {
1096
1099
  var key = mainTblData[i].key;
@@ -1110,6 +1113,16 @@ var PageHome = function (_React$Component) {
1110
1113
  if (!s.test(value)) {
1111
1114
  return saveItem[j].itemTitle + ':' + tips;
1112
1115
  }
1116
+ } else if (regular.indexOf('compare') != -1) {
1117
+ var currentMeta = {
1118
+ itemType: mainTblData[i].itemType || saveItem[j].itemType,
1119
+ inputFormat: mainTblData[i].inputFormat || saveItem[j].inputFormat,
1120
+ fieldType: mainTblData[i].fieldType || saveItem[j].fieldType
1121
+ };
1122
+ var compareMsg = (0, _formValidUtil.checkCompareRegular)(regular, tips, value, currentMeta, mainTblName, mainTblData, saveItem);
1123
+ if (compareMsg) {
1124
+ return saveItem[j].itemTitle + ':' + compareMsg;
1125
+ }
1113
1126
  } else {
1114
1127
  var extRegex = /^(.+?)(\d+)-(\d+)$/; //判断是否为 *1-2或n1-2等默认属性的形式
1115
1128
  var mac = regular.match(extRegex),
@@ -90,6 +90,8 @@ var _formExtHelper = require('../form/formExtHelper');
90
90
 
91
91
  var _filterEmptySubTblRows = require('../form/filterEmptySubTblRows');
92
92
 
93
+ var _formValidUtil = require('../common/formValidUtil');
94
+
93
95
  var _FlowChart = require('./FlowChart');
94
96
 
95
97
  var _FlowChart2 = _interopRequireDefault(_FlowChart);
@@ -2079,34 +2081,14 @@ var PageHome = function (_React$Component) {
2079
2081
  return saveItem[j].itemTitle + ':' + tips;
2080
2082
  }
2081
2083
  } else if (regular.indexOf('compare') != -1) {
2082
- var regularArr = regular.split('|');
2083
- if (regularArr.length == 3) {
2084
- var compareMark = regularArr[1];
2085
- var otherUniqueName = regularArr[2];
2086
- var otherValue = 0;
2087
- var thisValue = 0;
2088
- for (var f = 0; f < mainTblData.length; f++) {
2089
- if (mainTblName + '_' + mainTblData[f].key == otherUniqueName) {
2090
-
2091
- if (value != '') {
2092
- if (mainTblData[i].itemType == 'datetime') {
2093
- thisValue = new Date(value).getTime();
2094
- } else {
2095
- thisValue = value;
2096
- }
2097
- }
2098
- if (mainTblData[f].value != '') {
2099
- if (mainTblData[f].itemType == 'datetime') {
2100
- otherValue = new Date(mainTblData[f].value).getTime();
2101
- } else {
2102
- otherValue = mainTblData[f].value;
2103
- }
2104
- }
2105
- }
2106
- }
2107
- if (eval(thisValue + compareMark + otherValue)) {
2108
- return saveItem[j].itemTitle + ':' + tips;
2109
- }
2084
+ var currentMeta = {
2085
+ itemType: mainTblData[i].itemType || saveItem[j].itemType,
2086
+ inputFormat: mainTblData[i].inputFormat || saveItem[j].inputFormat,
2087
+ fieldType: mainTblData[i].fieldType || saveItem[j].fieldType
2088
+ };
2089
+ var compareMsg = (0, _formValidUtil.checkCompareRegular)(regular, tips, value, currentMeta, mainTblName, mainTblData, saveItem);
2090
+ if (compareMsg) {
2091
+ return saveItem[j].itemTitle + ':' + compareMsg;
2110
2092
  }
2111
2093
  } else {
2112
2094
  var extRegex = /^(.+?)(\d+)-(\d+)$/; //判断是否为 *1-2或n1-2等默认属性的形式
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "fmui-base",
3
- "version": "2.3.40",
3
+ "version": "2.3.41",
4
4
  "title": "fmui-base",
5
5
  "description": "fmui移动端组件",
6
6
  "main": "lib/index.js",