fmui-base 2.3.28 → 2.3.30

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,8 @@
3
3
  ---npm publish
4
4
 
5
5
  ## 更新日志
6
+ - 2.3.30:移动端日期型字段日期格式(xx年xx月xx日)移动端办理后丢失
7
+ - 2.3.29:移动端办理宏值签名丢失
6
8
  - 2.3.28:传阅支持群发控制,支持禁选组织、职务、群组,管理员跳转选泽的用户用户替换跳转所在的节点办理人,指定办理的环节且后续节点是固定的办理人员的情况下支持无参与者自动通过,流程办理支持多次撤回
7
9
  - 2.3.27:批示意见附件样式调整
8
10
  - 2.3.26:月日字符时间类型不回显,办理后丢失问题修复
package/lib/form/form.js CHANGED
@@ -367,6 +367,7 @@ var PageHome = function (_React$Component) {
367
367
  var subTbl = data.subTbl; //子表
368
368
  var readOnly = false;
369
369
  var value = '';
370
+ var signPicSaveValue = null; //当前用户签名落库值(xxx_sinPic),与展示 URL 分离
370
371
  var fuzhiFields = '';
371
372
  console.log("loadComponet===");
372
373
  if (key != "") {
@@ -707,12 +708,30 @@ var PageHome = function (_React$Component) {
707
708
  value = form.defaultValue;
708
709
  }
709
710
  }
710
- if (itemParam.dataAttr && itemParam.dataAttr.dataSrc == '2' && itemParam.dataAttr.fromMacro.value == 'currentUserSignPic') {
711
-
711
+ // 当前用户签名:展示用预览 URL,落库必须保留 xxx_sinPic(与 PC TextProcessor 一致)
712
+ if (itemParam.dataAttr && itemParam.dataAttr.dataSrc == '2' && itemParam.dataAttr.fromMacro && itemParam.dataAttr.fromMacro.value == 'currentUserSignPic') {
712
713
  if (value) {
713
- value = value.split('_')[0];
714
- value = context + '/api/m/plugin/attachment/mobile/viewImage?token=' + token + '&fid=' + value;
715
- //alert("value==="+value);
714
+ var rawSignVal = value + '';
715
+ var signFid = '';
716
+ if (rawSignVal.indexOf('_sinPic') > -1) {
717
+ signFid = rawSignVal.substring(0, rawSignVal.indexOf('_sinPic'));
718
+ signPicSaveValue = rawSignVal;
719
+ } else if (rawSignVal.indexOf('fid=') > -1) {
720
+ // 历史脏数据:曾把预览 URL 写进业务表,提交时纠正回 xxx_sinPic
721
+ var fidMatch = rawSignVal.match(/[?&]fid=([^&]+)/);
722
+ signFid = fidMatch ? decodeURIComponent(fidMatch[1]) : '';
723
+ if (signFid) {
724
+ signPicSaveValue = signFid + '_sinPic';
725
+ }
726
+ } else {
727
+ signFid = rawSignVal.split('_')[0];
728
+ if (signFid) {
729
+ signPicSaveValue = signFid + '_sinPic';
730
+ }
731
+ }
732
+ if (signFid) {
733
+ value = context + '/api/m/plugin/attachment/mobile/viewImage?token=' + token + '&fid=' + signFid;
734
+ }
716
735
  }
717
736
  }
718
737
  var calculateExpList = data.calculateExpList; //计算公式列表
@@ -1129,6 +1148,14 @@ var PageHome = function (_React$Component) {
1129
1148
  });
1130
1149
  } else if (typeof value === 'number' && !isNaN(value)) {
1131
1150
  // 接口偶发返回时间戳:保留数字供组件展示,提交值在下方 sync 时格式化
1151
+ } else if (dateFormatShow == 'zhDate' && value && typeof value === 'string' && /年/.test(value)) {
1152
+ // zhDate 兜底:只读回显/脏数据可能是「yyyy年MM月dd日」,勿当无效值清空
1153
+ var zhInitYmd = this.parseZhDateToYmd(value);
1154
+ if (zhInitYmd) {
1155
+ value = new Date(zhInitYmd.replace(/-/g, "/")).getTime();
1156
+ } else {
1157
+ value = null;
1158
+ }
1132
1159
  } else if (value && typeof value === 'string' && value.length >= 10) {
1133
1160
  value = value.substring(0, 19);
1134
1161
  value = new Date(value.replace(/-/g, "/")).getTime();
@@ -1585,7 +1612,10 @@ var PageHome = function (_React$Component) {
1585
1612
  }
1586
1613
  if (itemType == 'text' || itemType == 'textarea' || itemType == 'datetime') {
1587
1614
  var syncValue = value;
1588
- if (itemType == 'datetime') {
1615
+ // 签名宏:提交/落库用 xxx_sinPic,不要写预览 URL(PC 端只认 _sinPic)
1616
+ if (signPicSaveValue) {
1617
+ syncValue = signPicSaveValue;
1618
+ } else if (itemType == 'datetime') {
1589
1619
  syncValue = t.getDatetimeSaveValue(value, itemParam.dateFormat, itemParam.dateFormatShow);
1590
1620
  }
1591
1621
  for (var i = 0; i < data.mainTblData.length; i++) {
@@ -1593,6 +1623,16 @@ var PageHome = function (_React$Component) {
1593
1623
  data.mainTblData[i].value = syncValue;
1594
1624
  }
1595
1625
  }
1626
+ if (data.relatedTbl && data.relatedTbl.length) {
1627
+ for (var ri = 0; ri < data.relatedTbl.length; ri++) {
1628
+ var relatedMainTblData = data.relatedTbl[ri].relatedMainTblData || [];
1629
+ for (var rj = 0; rj < relatedMainTblData.length; rj++) {
1630
+ if (relatedMainTblData[rj].key == itemParam.key) {
1631
+ relatedMainTblData[rj].value = syncValue;
1632
+ }
1633
+ }
1634
+ }
1635
+ }
1596
1636
  }
1597
1637
 
1598
1638
  //项目开发扩展
@@ -2918,6 +2958,24 @@ var PageHome = function (_React$Component) {
2918
2958
  return weekdays[dayIndex];
2919
2959
  }
2920
2960
 
2961
+ // 中文日期「yyyy年MM月dd日」→「yyyy-MM-dd」(zhDate 只读回显用,落库禁止中文)
2962
+
2963
+ }, {
2964
+ key: 'parseZhDateToYmd',
2965
+ value: function parseZhDateToYmd(str) {
2966
+ if (str == null || str === '') {
2967
+ return '';
2968
+ }
2969
+ var m = String(str).trim().match(/^(\d{4})年(\d{1,2})月(\d{1,2})日/);
2970
+ if (!m) {
2971
+ return '';
2972
+ }
2973
+ var zy = m[1];
2974
+ var zm = m[2].length === 1 ? '0' + m[2] : m[2];
2975
+ var zd = m[3].length === 1 ? '0' + m[3] : m[3];
2976
+ return zy + '-' + zm + '-' + zd;
2977
+ }
2978
+
2921
2979
  // 时间字段提交值:统一格式化为字符串,避免 mainTblData 存入时间戳
2922
2980
 
2923
2981
  }, {
@@ -2958,6 +3016,13 @@ var PageHome = function (_React$Component) {
2958
3016
  return mPad + '-' + dPad;
2959
3017
  }
2960
3018
  }
3019
+ // zhDate:展示「xxxx年xx月xx日」,落库必须 yyyy-MM-dd(与 PC data-showtype=zhDate 一致)
3020
+ if (dateFormatShow === 'zhDate' && typeof raw === 'string') {
3021
+ var zhYmd = this.parseZhDateToYmd(raw);
3022
+ if (zhYmd) {
3023
+ return zhYmd;
3024
+ }
3025
+ }
2961
3026
  if (typeof raw === 'string') {
2962
3027
  if (raw.length >= 10 && raw.indexOf('-') >= 0) {
2963
3028
  // 时分字段提交仍只需 HH:mm
@@ -2968,6 +3033,10 @@ var PageHome = function (_React$Component) {
2968
3033
  if (dateFormatShow === 'MonthDay' || dateFormat === 'MD') {
2969
3034
  return this.dateFormat(new Date(raw.replace(/-/g, '/')).getTime(), dateFormat, dateFormatShow) || '';
2970
3035
  }
3036
+ // zhDate / 普通日期:取 yyyy-MM-dd
3037
+ if (dateFormatShow === 'zhDate' || dateFormat === 'YMD') {
3038
+ return raw.substring(0, 10);
3039
+ }
2971
3040
  return raw.substring(0, 19);
2972
3041
  }
2973
3042
  if (/^\d+$/.test(raw)) {
@@ -2975,10 +3044,17 @@ var PageHome = function (_React$Component) {
2975
3044
  }
2976
3045
  }
2977
3046
  if (typeof raw === 'number' && !isNaN(raw)) {
3047
+ // zhDate 落库不要中文展示串
3048
+ if (dateFormatShow === 'zhDate') {
3049
+ return this.dateFormat(raw, 'YMD') || '';
3050
+ }
2978
3051
  return this.dateFormat(raw, dateFormat, dateFormatShow) || '';
2979
3052
  }
2980
3053
  var d = new Date(raw);
2981
3054
  if (!isNaN(d.getTime())) {
3055
+ if (dateFormatShow === 'zhDate') {
3056
+ return this.dateFormat(d.getTime(), 'YMD') || '';
3057
+ }
2982
3058
  return this.dateFormat(d.getTime(), dateFormat, dateFormatShow) || '';
2983
3059
  }
2984
3060
  return '';
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "fmui-base",
3
- "version": "2.3.28",
3
+ "version": "2.3.30",
4
4
  "title": "fmui-base",
5
5
  "description": "fmui移动端组件",
6
6
  "main": "lib/index.js",