fmui-base 2.3.57 → 2.3.59

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.59:移动端不通过的流程允许作废,移动端支持关联流程
7
+ - 2.3.58:移动端数据表设置字段的关联值支持用户岗位
6
8
  - 2.3.57:移动端自动通过返回后打开表单报错
7
9
  - 2.3.56:移动端再次发起自动编号重新生成
8
10
  - 2.3.55:作废、结束、不通过弹框样式修改
package/lib/db/db.js CHANGED
@@ -383,6 +383,29 @@ context.create('FlowModuleAPI', {
383
383
  });
384
384
  }
385
385
  },
386
+ getRelationProcessList: {
387
+ url: _variables2.default.URLS.getRelationProcessList,
388
+ method: 'GET',
389
+ header: {
390
+ Authorization: 'Bearer ' + getLoginUserInfo().token
391
+ },
392
+ willFetch: function willFetch() {}
393
+ },
394
+ deleteRelation: {
395
+ url: _variables2.default.URLS.deleteRelation,
396
+ method: 'POST',
397
+ postDataFomat: 'FORM',
398
+ header: {
399
+ Authorization: 'Bearer ' + getLoginUserInfo().token
400
+ },
401
+ willFetch: function willFetch() {
402
+ _Toast2.default.show({
403
+ content: _react2.default.createElement(_loading2.default, null),
404
+ hasMask: true,
405
+ duration: 800
406
+ });
407
+ }
408
+ },
386
409
  startFlowTest: {
387
410
  url: _variables2.default.URLS.startFlowTest,
388
411
  method: 'POST',
@@ -72,6 +72,8 @@ exports.default = {
72
72
  getComponentInfoList: urlBasicPrefix + 'mobilehall/mobileoffice/getComponentInfoList' + '?', //获取关联表单字段
73
73
 
74
74
  insertBatchRelation: approveUrlPrefix + 'insertBatchRelation' + '?', // 关联流程
75
+ getRelationProcessList: approveUrlPrefix + 'getRelationProcessList' + '?', // 可选关联流程列表
76
+ deleteRelation: approveUrlPrefix + 'deleteRelation' + '?', // 删除关联流程
75
77
  startFlowTest: approveUrlPrefix + 'startFlowTest' + '?', // 检验间隔时间
76
78
  startProcess: approveUrlPrefix + 'startProcess' + '?', // 启动流程的接口
77
79
  claimTask: approveUrlPrefix + 'claimTask' + '?', //校验流程
package/lib/form/form.js CHANGED
@@ -3503,6 +3503,8 @@ var PageHome = function (_React$Component) {
3503
3503
  mainTblDataItem.value = userInfo.userTelephone;
3504
3504
  } else if (relatepopuservalue == 'relateuserdutyname') {
3505
3505
  mainTblDataItem.value = userInfo.dutyName;
3506
+ } else if (relatepopuservalue == 'relateuserstationname') {
3507
+ mainTblDataItem.value = userInfo.stationName || '';
3506
3508
  } else if (relatepopuservalue == 'relateusercardid') {
3507
3509
  mainTblDataItem.value = userInfo.cardId;
3508
3510
  } else if (relatepopuservalue == 'relateusersex') {
@@ -3531,6 +3533,8 @@ var PageHome = function (_React$Component) {
3531
3533
  mainTblDataItem.value = userInfo.userTelephone;
3532
3534
  } else if (relatepopuservalue == 'relateuserdutyname') {
3533
3535
  mainTblDataItem.value = userInfo.dutyName;
3536
+ } else if (relatepopuservalue == 'relateuserstationname') {
3537
+ mainTblDataItem.value = userInfo.stationName || '';
3534
3538
  } else if (relatepopuservalue == 'relateusercardid') {
3535
3539
  mainTblDataItem.value = userInfo.cardId;
3536
3540
  } else if (relatepopuservalue == 'relateusersex') {
@@ -15,6 +15,14 @@ var _Boxs = require('saltui/lib/Boxs');
15
15
 
16
16
  var _Boxs2 = _interopRequireDefault(_Boxs);
17
17
 
18
+ var _Dialog = require('saltui/lib/Dialog');
19
+
20
+ var _Dialog2 = _interopRequireDefault(_Dialog);
21
+
22
+ var _Toast = require('saltui/lib/Toast');
23
+
24
+ var _Toast2 = _interopRequireDefault(_Toast);
25
+
18
26
  var _AngleRight = require('salt-icon/lib/AngleRight');
19
27
 
20
28
  var _AngleRight2 = _interopRequireDefault(_AngleRight);
@@ -50,34 +58,119 @@ var Page = function (_React$Component) {
50
58
  _this.state = {
51
59
  relationList: []
52
60
  };
53
-
54
61
  return _this;
55
62
  }
56
63
 
57
64
  _createClass(Page, [{
58
65
  key: 'componentDidMount',
59
66
  value: function componentDidMount() {
67
+ this.reload();
68
+ }
69
+ }, {
70
+ key: 'componentDidUpdate',
71
+ value: function componentDidUpdate(prevProps) {
72
+ if (prevProps.processInstanceId !== this.props.processInstanceId && this.props.processInstanceId) {
73
+ this.reload();
74
+ }
75
+ }
76
+ }, {
77
+ key: 'reload',
78
+ value: function reload() {
60
79
  var t = this;
61
- t.setState({
62
- relationList: []
63
- });
64
80
  var processInstanceId = this.props.processInstanceId;
81
+ if (!processInstanceId || processInstanceId === '-99' || processInstanceId === 'undefined') {
82
+ t.setState({ relationList: [] });
83
+ if (typeof t.props.onCountChange === 'function') {
84
+ t.props.onCountChange(0);
85
+ }
86
+ return;
87
+ }
65
88
  _db2.default.FlowModuleAPI.getRelationProcess({ processInstanceId: processInstanceId }).then(function (content) {
89
+ var list = [];
90
+ if (Array.isArray(content)) {
91
+ list = content;
92
+ } else if (content && Array.isArray(content.data)) {
93
+ list = content.data;
94
+ } else if (content && Array.isArray(content.content)) {
95
+ list = content.content;
96
+ } else if (content && content.list && Array.isArray(content.list)) {
97
+ list = content.list;
98
+ }
66
99
  t.setState({
67
- relationList: content
100
+ relationList: list
101
+ }, function () {
102
+ if (typeof t.props.onCountChange === 'function') {
103
+ t.props.onCountChange(list.length);
104
+ }
68
105
  });
69
- }).catch(function (error) {});
106
+ }).catch(function () {
107
+ t.setState({ relationList: [] });
108
+ if (typeof t.props.onCountChange === 'function') {
109
+ t.props.onCountChange(0);
110
+ }
111
+ });
70
112
  }
71
113
  }, {
72
114
  key: 'clickDetail',
73
115
  value: function clickDetail(item) {
74
116
  var processInstanceId = item.processInstanceId;
75
- var formId = item.formId;
76
- var module = item.module;
77
- var url = "process/processDetails/-99/" + formId + "/-99/-99/0/" + processInstanceId + "/" + module;
117
+ var formId = item.formId || '-99';
118
+ var module = item.module || 'approve';
119
+ var url = 'process/processDetails/-99/' + formId + '/-99/-99/0/' + processInstanceId + '/' + module;
78
120
  decodeURI(url);
79
121
  location.hash = url;
80
- //location.reload();
122
+ }
123
+ }, {
124
+ key: 'canDelete',
125
+ value: function canDelete(item) {
126
+ var canManage = this.props.canManage === true || this.props.canManage === '1';
127
+ if (!canManage) {
128
+ return false;
129
+ }
130
+ if (String(item.canDel) !== '1') {
131
+ return false;
132
+ }
133
+ var currentActivityId = this.props.activityId;
134
+ if (currentActivityId == null || currentActivityId === '') {
135
+ return false;
136
+ }
137
+ return String(item.activityId) === String(currentActivityId);
138
+ }
139
+ }, {
140
+ key: 'deleteRelation',
141
+ value: function deleteRelation(item, e) {
142
+ if (e && e.stopPropagation) {
143
+ e.stopPropagation();
144
+ }
145
+ var t = this;
146
+ var processInstanceId = t.props.processInstanceId;
147
+ var relationId = item.processInstanceId;
148
+ _Dialog2.default.confirm({
149
+ locale: 'zh_CN',
150
+ title: '提示',
151
+ content: '确定删除该关联流程吗?',
152
+ onConfirm: function onConfirm() {
153
+ _db2.default.FlowModuleAPI.deleteRelation({
154
+ processInstanceId: processInstanceId,
155
+ relationId: relationId
156
+ }).then(function () {
157
+ _Toast2.default.show({
158
+ type: 'success',
159
+ content: '删除成功'
160
+ });
161
+ t.reload();
162
+ if (typeof t.props.onDeleted === 'function') {
163
+ t.props.onDeleted();
164
+ }
165
+ }).catch(function () {
166
+ _Toast2.default.show({
167
+ type: 'error',
168
+ content: '删除失败'
169
+ });
170
+ });
171
+ },
172
+ onCancel: function onCancel() {}
173
+ });
81
174
  }
82
175
  }, {
83
176
  key: 'render',
@@ -89,10 +182,10 @@ var Page = function (_React$Component) {
89
182
  t.state.relationList.map(function (item, i) {
90
183
  return _react2.default.createElement(
91
184
  HBox,
92
- { className: 't-BCf t-P16 t-PR12 dd-bottom-border', onClick: t.clickDetail.bind(this, item) },
185
+ { key: (item.processInstanceId || '') + '_' + i, className: 't-BCf t-P16 t-PR12 dd-bottom-border', vAlign: 'center' },
93
186
  _react2.default.createElement(
94
187
  Box,
95
- { flex: 1 },
188
+ { flex: 1, onClick: t.clickDetail.bind(t, item) },
96
189
  _react2.default.createElement(
97
190
  'div',
98
191
  { className: 't-omit t-FC3 t-FS16 t-LH1_3 t-MR8' },
@@ -134,16 +227,21 @@ var Page = function (_React$Component) {
134
227
  )
135
228
  )
136
229
  ),
230
+ t.canDelete(item) ? _react2.default.createElement(
231
+ Box,
232
+ { className: 't-PL8 t-PR8 t-FCred t-FS14', onClick: t.deleteRelation.bind(t, item) },
233
+ '\u5220\u9664'
234
+ ) : null,
137
235
  _react2.default.createElement(
138
236
  Box,
139
- null,
237
+ { onClick: t.clickDetail.bind(t, item) },
140
238
  _react2.default.createElement(_AngleRight2.default, { width: 20, fill: '#ccc', className: 'demo-t-list-arrow' })
141
239
  )
142
240
  );
143
241
  }.bind(this)),
144
242
  _react2.default.createElement(
145
243
  'div',
146
- { className: t.state.relationList.length == 0 ? "nodata-wrapper" : "t-DN" },
244
+ { className: t.state.relationList.length == 0 ? 'nodata-wrapper' : 't-DN' },
147
245
  _react2.default.createElement(
148
246
  VBox,
149
247
  { vAlign: 'center', hAlign: 'center', className: 'nodata' },
@@ -0,0 +1,509 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = undefined;
7
+
8
+ var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };
9
+
10
+ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; };
11
+
12
+ var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
13
+
14
+ var _react = require('react');
15
+
16
+ var _react2 = _interopRequireDefault(_react);
17
+
18
+ var _SearchBar = require('saltui/lib/SearchBar');
19
+
20
+ var _SearchBar2 = _interopRequireDefault(_SearchBar);
21
+
22
+ var _Button = require('saltui/lib/Button');
23
+
24
+ var _Button2 = _interopRequireDefault(_Button);
25
+
26
+ var _Toast = require('saltui/lib/Toast');
27
+
28
+ var _Toast2 = _interopRequireDefault(_Toast);
29
+
30
+ var _Boxs = require('saltui/lib/Boxs');
31
+
32
+ var _Boxs2 = _interopRequireDefault(_Boxs);
33
+
34
+ var _db = require('../db/db');
35
+
36
+ var _db2 = _interopRequireDefault(_db);
37
+
38
+ var _variables = require('../db/variables');
39
+
40
+ var _variables2 = _interopRequireDefault(_variables);
41
+
42
+ var _ScrollList = require('../ScrollList/ScrollList');
43
+
44
+ var _ScrollList2 = _interopRequireDefault(_ScrollList);
45
+
46
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
47
+
48
+ function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
49
+
50
+ function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }
51
+
52
+ function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
53
+
54
+ var HBox = _Boxs2.default.HBox,
55
+ Box = _Boxs2.default.Box;
56
+
57
+
58
+ var PAGE_SIZE = 10;
59
+
60
+ /** 列表项:已关联则禁用多选框,但仍展示 */
61
+ function RelationPickItem(props) {
62
+ var item = props.data || props;
63
+ if (item._hidden) {
64
+ return null;
65
+ }
66
+ var pid = String(item.processInstanceId || item.id || '');
67
+ var disabled = !!item._relatedDisabled;
68
+ var checked = !!props.isChecked;
69
+ var createTime = item.createTime || item.startTime || '';
70
+ return _react2.default.createElement(
71
+ HBox,
72
+ {
73
+ className: 't-BCf t-P16 t-PR12 dd-bottom-border' + (disabled ? ' relation-pick-item-disabled' : ''),
74
+ vAlign: 'center',
75
+ onClick: function onClick() {
76
+ if (disabled) {
77
+ return;
78
+ }
79
+ if (typeof props.onToggle === 'function') {
80
+ props.onToggle(item);
81
+ }
82
+ }
83
+ },
84
+ _react2.default.createElement(
85
+ Box,
86
+ {
87
+ className: disabled ? 't-checkbox-field-icon-list un-checked disabled' : checked ? 't-checkbox-field-icon checked t-checkbox-field-icon-list' : 't-checkbox-field-icon-list un-checked',
88
+ style: disabled ? { opacity: 0.4, background: 'rgba(31,56,88,.15)' } : undefined
89
+ },
90
+ _react2.default.createElement('i', { className: 'iconfont icon-checked t-FCf t-FS14' })
91
+ ),
92
+ _react2.default.createElement(
93
+ Box,
94
+ { flex: 1, className: 't-PL12', style: { minWidth: 0 } },
95
+ _react2.default.createElement(
96
+ 'div',
97
+ { className: 't-omit t-FS16 t-LH1_3 ' + (disabled ? 't-FCc' : 't-FC3') },
98
+ item.title || '',
99
+ disabled ? _react2.default.createElement(
100
+ 'span',
101
+ { className: 't-FS12 t-ML8 t-FCc' },
102
+ '\uFF08\u5DF2\u5173\u8054\uFF09'
103
+ ) : null
104
+ ),
105
+ _react2.default.createElement(
106
+ HBox,
107
+ { className: 't-FCddfontblue-40 t-LH1_3 t-PT8 t-FS14', vAlign: 'center' },
108
+ _react2.default.createElement(
109
+ Box,
110
+ null,
111
+ _react2.default.createElement(
112
+ 'span',
113
+ { className: 't-omit t-MR16' },
114
+ item.startUserName || ''
115
+ )
116
+ ),
117
+ _react2.default.createElement(
118
+ Box,
119
+ { flex: 1, style: { minWidth: 0 } },
120
+ _react2.default.createElement(
121
+ 'span',
122
+ { className: 't-omit' },
123
+ createTime
124
+ )
125
+ )
126
+ )
127
+ )
128
+ );
129
+ }
130
+
131
+ /**
132
+ * 移动端关联流程选择:标题搜索 + ScrollList 触底分页
133
+ * 已关联:展示但禁用勾选;分页按服务端 count 判断,避免过滤后误判「没有更多了」
134
+ */
135
+
136
+ var RelationProcessPicker = function (_React$Component) {
137
+ _inherits(RelationProcessPicker, _React$Component);
138
+
139
+ function RelationProcessPicker(props) {
140
+ _classCallCheck(this, RelationProcessPicker);
141
+
142
+ var _this = _possibleConstructorReturn(this, (RelationProcessPicker.__proto__ || Object.getPrototypeOf(RelationProcessPicker)).call(this, props));
143
+
144
+ _this.state = {
145
+ title: '',
146
+ selectedMap: {},
147
+ list: [],
148
+ page: 1,
149
+ total: 0,
150
+ fetchedCount: 0,
151
+ loading: false,
152
+ refreshing: false,
153
+ dataGetted: false,
154
+ noMore: false,
155
+ hasError: false
156
+ };
157
+ _this.searchTimer = null;
158
+ return _this;
159
+ }
160
+
161
+ _createClass(RelationProcessPicker, [{
162
+ key: 'componentDidMount',
163
+ value: function componentDidMount() {
164
+ this.fetchPage(1, true);
165
+ }
166
+ }, {
167
+ key: 'componentWillUnmount',
168
+ value: function componentWillUnmount() {
169
+ if (this.searchTimer) {
170
+ clearTimeout(this.searchTimer);
171
+ }
172
+ }
173
+ }, {
174
+ key: 'getExcludeIdSet',
175
+ value: function getExcludeIdSet() {
176
+ var excludeIds = this.props.excludeIds || [];
177
+ var set = {};
178
+ for (var i = 0; i < excludeIds.length; i++) {
179
+ if (excludeIds[i]) {
180
+ set[String(excludeIds[i])] = true;
181
+ }
182
+ }
183
+ var currentId = this.props.processInstanceId;
184
+ if (currentId) {
185
+ set[String(currentId)] = true;
186
+ }
187
+ return set;
188
+ }
189
+ }, {
190
+ key: 'isRelated',
191
+ value: function isRelated(item) {
192
+ var excludeSet = this.getExcludeIdSet();
193
+ var pid = item.processInstanceId || item.id;
194
+ return !!(pid && excludeSet[String(pid)]);
195
+ }
196
+ }, {
197
+ key: 'markList',
198
+ value: function markList(rawList) {
199
+ var selfId = String(this.props.processInstanceId || '');
200
+ var marked = [];
201
+ if (!rawList || !rawList.length) {
202
+ return marked;
203
+ }
204
+ for (var i = 0; i < rawList.length; i++) {
205
+ var row = Object.assign({}, rawList[i]);
206
+ var pid = String(row.processInstanceId || row.id || '');
207
+ // 当前流程标记隐藏(不删数组项,避免影响分页长度判断;渲染时跳过)
208
+ if (pid && selfId && pid === selfId) {
209
+ row._hidden = true;
210
+ }
211
+ row._relatedDisabled = this.isRelated(row);
212
+ marked.push(row);
213
+ }
214
+ return marked;
215
+ }
216
+ }, {
217
+ key: 'parsePayload',
218
+ value: function parsePayload(content) {
219
+ var payload = content;
220
+ // 兼容 DB 解包后 / 未解包 / 再包一层 content
221
+ if (content && content.content && _typeof(content.content) === 'object' && !Array.isArray(content.content)) {
222
+ var inner = content.content;
223
+ if (inner.data || inner.count != null || inner.content) {
224
+ payload = inner;
225
+ }
226
+ }
227
+ if (payload && payload.content && _typeof(payload.content) === 'object' && !Array.isArray(payload.content) && (payload.content.data || payload.content.count != null)) {
228
+ payload = payload.content;
229
+ }
230
+ var list = [];
231
+ if (payload && Array.isArray(payload.data)) {
232
+ list = payload.data;
233
+ } else if (Array.isArray(payload)) {
234
+ list = payload;
235
+ }
236
+ var total = 0;
237
+ if (payload && payload.count != null && payload.count !== '') {
238
+ total = Number(payload.count);
239
+ } else if (payload && payload.totalElements != null) {
240
+ total = Number(payload.totalElements);
241
+ } else if (payload && payload.total != null) {
242
+ total = Number(payload.total);
243
+ }
244
+ if (isNaN(total) || total < 0) {
245
+ total = 0;
246
+ }
247
+ return { list: list, total: total };
248
+ }
249
+ }, {
250
+ key: 'fetchPage',
251
+ value: function fetchPage(page, replace) {
252
+ var t = this;
253
+ if (t.state.loading) {
254
+ return;
255
+ }
256
+ t.setState(replace ? { refreshing: true, loading: true } : { loading: true, hasError: false });
257
+ _db2.default.FlowModuleAPI.getRelationProcessList({
258
+ title: t.state.title || '',
259
+ page: page,
260
+ limit: PAGE_SIZE,
261
+ pageSize: PAGE_SIZE
262
+ }).then(function (content) {
263
+ var parsed = t.parsePayload(content);
264
+ var marked = t.markList(parsed.list);
265
+ // 累计「原始返回条数」判断是否还有下一页;隐藏当前流程不缩短累计长度
266
+ var fetchedLen = (replace ? 0 : t.state.fetchedCount || 0) + parsed.list.length;
267
+ var nextList = replace ? marked : t.state.list.concat(marked);
268
+ var total = parsed.total;
269
+ // 仅按服务端 count 判断;绝不能用过滤/隐藏后的 list.length < pageSize
270
+ var noMore = false;
271
+ if (total > 0) {
272
+ noMore = fetchedLen >= total;
273
+ } else {
274
+ noMore = parsed.list.length === 0;
275
+ }
276
+ t.setState({
277
+ list: nextList,
278
+ page: page,
279
+ total: total,
280
+ fetchedCount: fetchedLen,
281
+ loading: false,
282
+ refreshing: false,
283
+ dataGetted: true,
284
+ noMore: noMore,
285
+ hasError: false
286
+ });
287
+ }).catch(function () {
288
+ t.setState({
289
+ loading: false,
290
+ refreshing: false,
291
+ dataGetted: true,
292
+ hasError: true
293
+ });
294
+ _Toast2.default.show({
295
+ type: 'error',
296
+ content: '加载可选流程失败'
297
+ });
298
+ });
299
+ }
300
+ }, {
301
+ key: 'onSearchChange',
302
+ value: function onSearchChange(value) {
303
+ var t = this;
304
+ t.setState({ title: value });
305
+ if (t.searchTimer) {
306
+ clearTimeout(t.searchTimer);
307
+ }
308
+ t.searchTimer = setTimeout(function () {
309
+ t.fetchPage(1, true);
310
+ }, 400);
311
+ }
312
+ }, {
313
+ key: 'onSearch',
314
+ value: function onSearch(value) {
315
+ var _this2 = this;
316
+
317
+ this.setState({ title: value }, function () {
318
+ _this2.fetchPage(1, true);
319
+ });
320
+ }
321
+ }, {
322
+ key: 'onRefresh',
323
+ value: function onRefresh() {
324
+ this.fetchPage(1, true);
325
+ }
326
+ }, {
327
+ key: 'onLoad',
328
+ value: function onLoad() {
329
+ if (this.state.noMore || this.state.loading) {
330
+ return;
331
+ }
332
+ this.fetchPage(this.state.page + 1, false);
333
+ }
334
+ }, {
335
+ key: 'toggleSelect',
336
+ value: function toggleSelect(item) {
337
+ if (!item || item._hidden || item._relatedDisabled || this.isRelated(item)) {
338
+ return;
339
+ }
340
+ var pid = String(item.processInstanceId || item.id || '');
341
+ if (!pid) {
342
+ return;
343
+ }
344
+ var selectedMap = Object.assign({}, this.state.selectedMap);
345
+ if (selectedMap[pid]) {
346
+ delete selectedMap[pid];
347
+ } else {
348
+ selectedMap[pid] = item;
349
+ }
350
+ this.setState({ selectedMap: selectedMap });
351
+ }
352
+ }, {
353
+ key: 'closePage',
354
+ value: function closePage() {
355
+ if (typeof this.props.onClose === 'function') {
356
+ this.props.onClose();
357
+ return;
358
+ }
359
+ if (typeof this.props.onCancel === 'function') {
360
+ this.props.onCancel();
361
+ }
362
+ }
363
+ }, {
364
+ key: 'handleCancel',
365
+ value: function handleCancel() {
366
+ this.closePage();
367
+ }
368
+ }, {
369
+ key: 'handleConfirm',
370
+ value: function handleConfirm() {
371
+ var t = this;
372
+ var keys = Object.keys(t.state.selectedMap);
373
+ if (!keys.length) {
374
+ _Toast2.default.show({
375
+ type: 'error',
376
+ content: '请选择记录'
377
+ });
378
+ return;
379
+ }
380
+ var processInstanceId = t.props.processInstanceId;
381
+ if (!processInstanceId) {
382
+ _Toast2.default.show({
383
+ type: 'error',
384
+ content: '请先保存/提交生成流程后再关联'
385
+ });
386
+ return;
387
+ }
388
+ _db2.default.FlowModuleAPI.insertBatchRelation({
389
+ processInstanceId: processInstanceId,
390
+ relationIds: keys.join(','),
391
+ activityId: t.props.activityId || '',
392
+ dataInherit: ''
393
+ }).then(function () {
394
+ _Toast2.default.show({
395
+ type: 'success',
396
+ content: '关联成功'
397
+ });
398
+ t.closePage();
399
+ if (typeof t.props.onSuccess === 'function') {
400
+ t.props.onSuccess();
401
+ }
402
+ }).catch(function () {
403
+ _Toast2.default.show({
404
+ type: 'error',
405
+ content: '关联失败'
406
+ });
407
+ });
408
+ }
409
+ }, {
410
+ key: 'render',
411
+ value: function render() {
412
+ var t = this;
413
+ var selectedMap = t.state.selectedMap;
414
+ var selectedCount = Object.keys(selectedMap).length;
415
+ var searchBarProps = {
416
+ locale: 'zh_CN',
417
+ placeholder: '搜索流程标题',
418
+ instantSearch: true,
419
+ hasHistory: false,
420
+ searchDelay: 400,
421
+ onChange: t.onSearchChange.bind(t),
422
+ onSearch: t.onSearch.bind(t)
423
+ };
424
+ var winH = typeof window !== 'undefined' && window.innerHeight ? window.innerHeight : 600;
425
+ var listH = Math.max(winH - 160, 240);
426
+ return _react2.default.createElement(
427
+ 'div',
428
+ {
429
+ className: 't-W100 t-BCf relation-process-picker',
430
+ style: {
431
+ width: '100%',
432
+ height: winH + 'px',
433
+ display: 'flex',
434
+ flexDirection: 'column',
435
+ boxSizing: 'border-box'
436
+ }
437
+ },
438
+ _react2.default.createElement(
439
+ HBox,
440
+ { vAlign: 'center', className: 't-PL16 t-PR16 t-PT12 t-PB12 t-BB1', style: { flexShrink: 0 } },
441
+ _react2.default.createElement(
442
+ Box,
443
+ { flex: 1, className: 't-FS16 t-FAC' },
444
+ '\u5173\u8054\u6D41\u7A0B'
445
+ )
446
+ ),
447
+ _react2.default.createElement(
448
+ 'div',
449
+ { className: 't-BCf', style: { flexShrink: 0 } },
450
+ _react2.default.createElement(_SearchBar2.default, _extends({}, searchBarProps, { value: t.state.title }))
451
+ ),
452
+ _react2.default.createElement(
453
+ 'div',
454
+ { style: { flex: 1, minHeight: 0, height: listH + 'px' }, className: 'relation-process-picker-scroll' },
455
+ _react2.default.createElement(
456
+ _ScrollList2.default,
457
+ {
458
+ dataGetted: t.state.dataGetted,
459
+ data: t.state.list,
460
+ loading: t.state.loading,
461
+ refreshing: t.state.refreshing,
462
+ noMore: t.state.noMore,
463
+ hasError: t.state.hasError,
464
+ onRefresh: t.onRefresh.bind(t),
465
+ onLoad: t.onLoad.bind(t),
466
+ scrollLoad: true,
467
+ scrollRefresh: true,
468
+ noDataImage: _variables2.default.nodataIcon,
469
+ noDataTip: '\u6682\u65E0\u6570\u636E',
470
+ noMoreDataTip: '\u6CA1\u6709\u66F4\u591A\u4E86'
471
+ },
472
+ function (item, i) {
473
+ var pid = String(item.processInstanceId || item.id || '');
474
+ return _react2.default.createElement(RelationPickItem, {
475
+ key: pid + '_' + i,
476
+ data: item,
477
+ isChecked: !!selectedMap[pid],
478
+ onToggle: t.toggleSelect.bind(t)
479
+ });
480
+ }
481
+ )
482
+ ),
483
+ _react2.default.createElement(
484
+ 'div',
485
+ { className: 't-P0', style: { flexShrink: 0 } },
486
+ _react2.default.createElement(
487
+ _Button2.default.Group,
488
+ null,
489
+ _react2.default.createElement(
490
+ _Button2.default,
491
+ { type: 'secondary', display: 'banner', onClick: t.handleCancel.bind(t) },
492
+ '\u53D6\u6D88'
493
+ ),
494
+ _react2.default.createElement(
495
+ _Button2.default,
496
+ { type: 'primary', display: 'banner', onClick: t.handleConfirm.bind(t) },
497
+ '\u786E\u5B9A',
498
+ selectedCount > 0 ? '(' + selectedCount + ')' : ''
499
+ )
500
+ )
501
+ )
502
+ );
503
+ }
504
+ }]);
505
+
506
+ return RelationProcessPicker;
507
+ }(_react2.default.Component);
508
+
509
+ exports.default = RelationProcessPicker;
@@ -100,6 +100,10 @@ var _RelationProcess = require('./RelationProcess');
100
100
 
101
101
  var _RelationProcess2 = _interopRequireDefault(_RelationProcess);
102
102
 
103
+ var _RelationProcessPicker = require('./RelationProcessPicker');
104
+
105
+ var _RelationProcessPicker2 = _interopRequireDefault(_RelationProcessPicker);
106
+
103
107
  var _MessageBoard = require('./MessageBoard');
104
108
 
105
109
  var _MessageBoard2 = _interopRequireDefault(_MessageBoard);
@@ -534,6 +538,8 @@ var PageHome = function (_React$Component) {
534
538
  mobileSubTblDefault: '1', //移动端子表默认 1展开 0收起;未设置按展开
535
539
  enableMessageBoard: '0', //流程启用留言板
536
540
  enableAttachmentArea: '0', //流程启用附件区
541
+ relationCount: 0, //关联流程数量
542
+ hasRelationBtn: false, //当前是否具备关联流程按钮权限
537
543
  readScopeId: '',
538
544
  readScopeList: [],
539
545
  readRangeType: '', //传阅范围 0全部 2本组织及下属组织 4自定义
@@ -1616,6 +1622,7 @@ var PageHome = function (_React$Component) {
1616
1622
  defaultValue: defaultValue,
1617
1623
  commentId: commentId,
1618
1624
  buttons: buttons,
1625
+ hasRelationBtn: (',' + (buttons || '') + ',').indexOf(',OTHER_RELATION,') !== -1,
1619
1626
  startButtons: startButtons,
1620
1627
  code: content.code,
1621
1628
  formItem: formItem,
@@ -1685,6 +1692,11 @@ var PageHome = function (_React$Component) {
1685
1692
  startUserOrgId: content.startUserOrgId || content.startUserGroupId || '',
1686
1693
  taskAssignOrgId: content.taskAssignOrgId || ''
1687
1694
  }, function () {
1695
+ // 进页即拉取关联数量(显式传当前实例 id,避免 state 未齐)
1696
+ try {
1697
+ var pidForRelation = t.state.processInstanceId || t.props.processInstanceId;
1698
+ t.loadRelationCount(pidForRelation);
1699
+ } catch (eCount) {}
1688
1700
  if (t._pendingCommentRestore != null && t._pendingCommentRestore !== '') {
1689
1701
  var restoredComment = t._pendingCommentRestore;
1690
1702
  t._pendingCommentRestore = null;
@@ -1857,11 +1869,12 @@ var PageHome = function (_React$Component) {
1857
1869
  continue;
1858
1870
  }
1859
1871
  //PAGE_SAVE保存按钮只有当新建时才有,HELP_ADDLOTS加签只有在会签和串签才有,RADOM_FINISH随机流程完成按钮去掉
1860
- if (buttonCode == 'OTHER_RELATION' || buttonCode == 'FLOW_REVOKE' || buttonCode == 'RADOM_FINISH' || buttonCode == 'FLOW_CANCEL' || buttonCode == 'FLOW_RECOVER' || buttonCode == 'PAGE_PRINT' || buttonCode == 'PAGE_URGE' || buttonCode == 'PAGE_REDSET' || buttonCode == 'PAGE_FEEDBACK' || buttonCode == 'RECORD' || buttonCode == 'HELP_ADDLOTS' && participantMode == '0') {
1872
+ // OTHER_RELATION 移动端已支持,不再跳过
1873
+ if (buttonCode == 'FLOW_REVOKE' || buttonCode == 'RADOM_FINISH' || buttonCode == 'FLOW_CANCEL' || buttonCode == 'FLOW_RECOVER' || buttonCode == 'PAGE_PRINT' || buttonCode == 'PAGE_URGE' || buttonCode == 'PAGE_REDSET' || buttonCode == 'PAGE_FEEDBACK' || buttonCode == 'RECORD' || buttonCode == 'HELP_ADDLOTS' && participantMode == '0') {
1861
1874
  continue;
1862
1875
  } else {
1863
1876
  if (isStart == true && permissionCode == 'start' || isDraft == '1') {
1864
- if (buttonCode == 'PAGE_SAVE' || buttonCode == 'BASE_SUMBIT') {
1877
+ if (buttonCode == 'PAGE_SAVE' || buttonCode == 'BASE_SUMBIT' || buttonCode == 'OTHER_RELATION') {
1865
1878
  buttonArrayNew.push(buttonCode);
1866
1879
  }
1867
1880
  // 发起人已配置作废,且流程已有数据(退回/撤回到发起人)时显示作废
@@ -1907,6 +1920,7 @@ var PageHome = function (_React$Component) {
1907
1920
  buttonList.push({ name: t.state.finalButtons.get("HELP_FORWARD"), type: 'secondary', display: 'inline', no: 20 });
1908
1921
  } else if (listType == "4") {
1909
1922
  //我的
1923
+ var processStatusNow = String(content.processStatus != null ? content.processStatus : content.status != null ? content.status : '');
1910
1924
  if (this.state.processIsComplete == "0") {
1911
1925
  //当流程未结束时,
1912
1926
  if (buttons.indexOf('FLOW_CANCEL') >= 0) {
@@ -1919,7 +1933,6 @@ var PageHome = function (_React$Component) {
1919
1933
  buttonList.push({ name: t.state.finalButtons.get("FLOW_REVOKE"), type: 'secondary', display: 'inline', no: 7 });
1920
1934
  }
1921
1935
  // 与 PC 一致:发起人配置作废 + 进行中 + 当前待办在发起节点
1922
- var processStatusNow = String(content.processStatus != null ? content.processStatus : content.status != null ? content.status : '');
1923
1936
  var backToInitiator = isStart == true || isStart == 'true';
1924
1937
  if (!backToInitiator && content.processLogList && content.processLogList.length > 0 && content.doingUserList && content.doingUserList.length > 0) {
1925
1938
  var startActId = content.processLogList[0].curactivityid;
@@ -1940,6 +1953,18 @@ var PageHome = function (_React$Component) {
1940
1953
  buttonList.push({ name: t.state.finalButtons.get("PAGE_URGE"), type: 'secondary', display: 'inline', no: 12 });
1941
1954
  }
1942
1955
  }
1956
+ // 不通过(status=6):与 PC 一致,点开详情允许作废(发起人节点配置了 BASE_INVALID)
1957
+ if (processStatusNow == '6' && startButtons && startButtons.indexOf('BASE_INVALID') >= 0) {
1958
+ var hasInvalidBtn = false;
1959
+ for (var bi = 0; bi < buttonList.length; bi++) {
1960
+ if (buttonList[bi] && buttonList[bi].no == 9) {
1961
+ hasInvalidBtn = true;break;
1962
+ }
1963
+ }
1964
+ if (!hasInvalidBtn) {
1965
+ buttonList.push({ name: t.state.finalButtons.get("BASE_INVALID"), type: 'danger', display: 'inline', no: 9 });
1966
+ }
1967
+ }
1943
1968
  if (startButtons) {
1944
1969
  if (startButtons.indexOf('HELP_CIRCULATE') >= 0) {
1945
1970
  //传阅
@@ -2630,6 +2655,9 @@ var PageHome = function (_React$Component) {
2630
2655
  case 'MAILSEND':
2631
2656
  t.handleSubmit(18);
2632
2657
  break;
2658
+ case 'OTHER_RELATION':
2659
+ t.handleSubmit('OTHER_RELATION');
2660
+ break;
2633
2661
  default:
2634
2662
  t.handleSubmit(actionSheetButtonOpt[index]);
2635
2663
  break;
@@ -3599,6 +3627,9 @@ var PageHome = function (_React$Component) {
3599
3627
  $(window).scrollTop(0);
3600
3628
  });
3601
3629
  }
3630
+ } else if (operate == 'OTHER_RELATION') {
3631
+ //关联流程
3632
+ this.openRelationPicker();
3602
3633
  } else {
3603
3634
  //其他按钮
3604
3635
  if (typeof FlowCommon[operate] === "function") {
@@ -4652,6 +4683,162 @@ var PageHome = function (_React$Component) {
4652
4683
  this.startSubProcess();
4653
4684
  }
4654
4685
  }
4686
+
4687
+ // 打开关联流程选择(标题搜索多选)
4688
+
4689
+ }, {
4690
+ key: 'openRelationPicker',
4691
+ value: function openRelationPicker() {
4692
+ var t = this;
4693
+ var processInstanceId = t.state.processInstanceId;
4694
+ if (!processInstanceId || processInstanceId === '-99' || processInstanceId === 'undefined' || processInstanceId === 'null') {
4695
+ _Toast2.default.show({
4696
+ type: 'error',
4697
+ content: '请先保存/提交生成流程后再关联'
4698
+ });
4699
+ return;
4700
+ }
4701
+ // 先拉已关联列表再打开,保证已关联流程不可选;关闭必须用本层 Popup 实例 close
4702
+ _db2.default.FlowModuleAPI.getRelationProcess({
4703
+ processInstanceId: processInstanceId
4704
+ }).then(function (content) {
4705
+ var excludeIds = [processInstanceId];
4706
+ var list = [];
4707
+ if (Array.isArray(content)) {
4708
+ list = content;
4709
+ } else if (content && Array.isArray(content.data)) {
4710
+ list = content.data;
4711
+ }
4712
+ for (var i = 0; i < list.length; i++) {
4713
+ var rid = list[i].processInstanceId || list[i].id;
4714
+ if (rid) {
4715
+ excludeIds.push(String(rid));
4716
+ }
4717
+ }
4718
+ var relationRef = t.refs.relationProcess_list;
4719
+ if (relationRef && relationRef.state && relationRef.state.relationList) {
4720
+ for (var j = 0; j < relationRef.state.relationList.length; j++) {
4721
+ var rid2 = relationRef.state.relationList[j].processInstanceId;
4722
+ if (rid2) {
4723
+ excludeIds.push(String(rid2));
4724
+ }
4725
+ }
4726
+ }
4727
+ var popupInst = null;
4728
+ var closePicker = function closePicker() {
4729
+ try {
4730
+ if (popupInst && typeof popupInst.close === 'function') {
4731
+ popupInst.close();
4732
+ } else {
4733
+ _Popup2.default.hide();
4734
+ }
4735
+ } catch (e) {
4736
+ try {
4737
+ _Popup2.default.hide();
4738
+ } catch (e2) {}
4739
+ }
4740
+ };
4741
+ popupInst = _Popup2.default.show(_react2.default.createElement(_RelationProcessPicker2.default, {
4742
+ processInstanceId: processInstanceId,
4743
+ activityId: t.state.activityId,
4744
+ excludeIds: excludeIds,
4745
+ onClose: closePicker,
4746
+ onSuccess: function onSuccess() {
4747
+ t.refreshRelationTab();
4748
+ }
4749
+ }), {
4750
+ animationType: 'slide-left',
4751
+ className: 'relation-process-picker-popup',
4752
+ maskClosable: true
4753
+ });
4754
+ }).catch(function () {
4755
+ _Toast2.default.show({
4756
+ type: 'error',
4757
+ content: '获取已关联流程失败'
4758
+ });
4759
+ });
4760
+ }
4761
+
4762
+ // 刷新关联流程页签数量与列表
4763
+
4764
+ }, {
4765
+ key: 'refreshRelationTab',
4766
+ value: function refreshRelationTab() {
4767
+ var t = this;
4768
+ var relationRef = t.refs.relationProcess_list;
4769
+ if (relationRef && typeof relationRef.reload === 'function') {
4770
+ relationRef.reload();
4771
+ }
4772
+ t.loadRelationCount();
4773
+ }
4774
+
4775
+ // 仅刷新页签数量(不依赖 RelationProcess 是否已挂载);可显式传入 processInstanceId
4776
+
4777
+ }, {
4778
+ key: 'loadRelationCount',
4779
+ value: function loadRelationCount(forceProcessInstanceId) {
4780
+ var t = this;
4781
+ var processInstanceId = forceProcessInstanceId || t.state.processInstanceId || t.props.processInstanceId;
4782
+ if (!processInstanceId || processInstanceId === '-99' || processInstanceId === 'undefined' || processInstanceId === 'null') {
4783
+ t.setState({ relationCount: 0 });
4784
+ return;
4785
+ }
4786
+ _db2.default.FlowModuleAPI.getRelationProcess({
4787
+ processInstanceId: processInstanceId
4788
+ }).then(function (content) {
4789
+ var list = t.normalizeRelationList(content);
4790
+ t.setState({ relationCount: list.length });
4791
+ }).catch(function () {
4792
+ t.setState({ relationCount: 0 });
4793
+ });
4794
+ }
4795
+
4796
+ // 配合详情页 flex:0.25,完整展示「关联流程(N)」
4797
+
4798
+ }, {
4799
+ key: 'getRelationTabTitle',
4800
+ value: function getRelationTabTitle() {
4801
+ var n = parseInt(this.state.relationCount, 10);
4802
+ if (isNaN(n) || n < 0) {
4803
+ n = 0;
4804
+ }
4805
+ return n > 0 ? '关联流程(' + n + ')' : '关联流程';
4806
+ }
4807
+ }, {
4808
+ key: 'normalizeRelationList',
4809
+ value: function normalizeRelationList(content) {
4810
+ if (Array.isArray(content)) {
4811
+ return content;
4812
+ }
4813
+ if (content && Array.isArray(content.data)) {
4814
+ return content.data;
4815
+ }
4816
+ if (content && Array.isArray(content.content)) {
4817
+ return content.content;
4818
+ }
4819
+ if (content && content.list && Array.isArray(content.list)) {
4820
+ return content.list;
4821
+ }
4822
+ return [];
4823
+ }
4824
+ }, {
4825
+ key: 'onRelationCountChange',
4826
+ value: function onRelationCountChange(count) {
4827
+ var n = parseInt(count, 10);
4828
+ if (isNaN(n) || n < 0) {
4829
+ n = 0;
4830
+ }
4831
+ // 与列表回写对齐,始终刷新页签数字
4832
+ if (n !== this.state.relationCount) {
4833
+ this.setState({
4834
+ relationCount: n
4835
+ });
4836
+ } else if (n > 0) {
4837
+ // 同值也强制一次,避免 Tab 标题未重绘
4838
+ this.forceUpdate();
4839
+ }
4840
+ }
4841
+
4655
4842
  //子流程自动关联
4656
4843
 
4657
4844
  }, {
@@ -7292,6 +7479,8 @@ var PageHome = function (_React$Component) {
7292
7479
  buttonCodeListNew.push({ name: buttonName, type: 'secondary', display: 'inline', no: 'distributeFlow' });
7293
7480
  } else if (buttonCode == 'MAILSEND') {
7294
7481
  buttonCodeListNew.push({ name: buttonName, type: 'secondary', display: 'inline', no: 18 });
7482
+ } else if (buttonCode == 'OTHER_RELATION') {
7483
+ buttonCodeListNew.push({ name: buttonName, type: 'secondary', display: 'inline', no: 'OTHER_RELATION' });
7295
7484
  } else {
7296
7485
  buttonCodeListNew.push({ name: buttonName, type: 'secondary', display: 'inline', no: buttonCode });
7297
7486
  }
@@ -7349,6 +7538,8 @@ var PageHome = function (_React$Component) {
7349
7538
  buttonList.push({ name: buttonName, type: 'secondary', display: 'inline', no: 20 });
7350
7539
  } else if (buttonCode == 'MAILSEND') {
7351
7540
  buttonList.push({ name: buttonName, type: 'secondary', display: 'inline', no: 18 });
7541
+ } else if (buttonCode == 'OTHER_RELATION') {
7542
+ buttonList.push({ name: buttonName, type: 'secondary', display: 'inline', no: 'OTHER_RELATION' });
7352
7543
  } else {
7353
7544
  buttonList.push({ name: buttonName, type: 'secondary', display: 'inline', no: buttonCode });
7354
7545
  }
@@ -7923,11 +8114,19 @@ var PageHome = function (_React$Component) {
7923
8114
  key: 'handleChange',
7924
8115
  value: function handleChange(obj) {
7925
8116
  var t = this;
7926
- this.setState({ activeItemIndex: obj.active });
8117
+ this.setState({ activeItemIndex: obj.active }, function () {
8118
+ if (String(obj.active) === '3') {
8119
+ t.loadRelationCount();
8120
+ }
8121
+ });
7927
8122
  if (obj.active == '2') {
7928
8123
  t.refs.flowChart_list.componentDidMount();
7929
8124
  } else if (obj.active == '3') {
7930
- t.refs.relationProcess_list.componentDidMount();
8125
+ if (t.refs.relationProcess_list && typeof t.refs.relationProcess_list.reload === 'function') {
8126
+ t.refs.relationProcess_list.reload();
8127
+ } else if (t.refs.relationProcess_list && typeof t.refs.relationProcess_list.componentDidMount === 'function') {
8128
+ t.refs.relationProcess_list.componentDidMount();
8129
+ }
7931
8130
  }
7932
8131
  }
7933
8132
 
@@ -9127,14 +9326,26 @@ var PageHome = function (_React$Component) {
9127
9326
  ),
9128
9327
  _react2.default.createElement(
9129
9328
  _Tab2.default.Item,
9130
- { key: '3', title: '\u5173\u8054\u6D41\u7A0B' },
9329
+ {
9330
+ key: '3',
9331
+ title: this.getRelationTabTitle()
9332
+ },
9131
9333
  _react2.default.createElement(
9132
9334
  _Group2.default.List,
9133
9335
  null,
9134
9336
  _react2.default.createElement(
9135
9337
  'div',
9136
9338
  { className: this.state.activeItemIndex == 3 ? '' : 't-DN' },
9137
- _react2.default.createElement(_RelationProcess2.default, { ref: "relationProcess_list", taskId: this.state.taskId, processInstanceId: this.state.processInstanceId, listType: this.state.listType })
9339
+ _react2.default.createElement(_RelationProcess2.default, {
9340
+ ref: "relationProcess_list",
9341
+ taskId: this.state.taskId,
9342
+ processInstanceId: this.state.processInstanceId,
9343
+ listType: this.state.listType,
9344
+ activityId: this.state.activityId,
9345
+ canManage: this.state.hasRelationBtn && (this.state.listType == '0' || this.state.isDraft == '1' || this.state.permissionCode == 'start' || this.state.isStart === true),
9346
+ onCountChange: this.onRelationCountChange.bind(this),
9347
+ onDeleted: this.refreshRelationTab.bind(this)
9348
+ })
9138
9349
  )
9139
9350
  )
9140
9351
  ),
@@ -6,6 +6,38 @@
6
6
  background: #fff;
7
7
  }
8
8
 
9
+ /* 关联流程选择弹层:slide-left 默认无 left/width,需强制全屏,否则变成右侧窄条 */
10
+ .relation-process-picker-popup {
11
+ left: 0 !important;
12
+ right: 0 !important;
13
+ width: 100% !important;
14
+ background: #fff;
15
+ }
16
+ .relation-process-picker-popup .t-popup-content {
17
+ width: 100%;
18
+ height: 100%;
19
+ }
20
+ .relation-process-picker {
21
+ width: 100%;
22
+ box-sizing: border-box;
23
+ }
24
+ .relation-process-picker-scroll {
25
+ overflow: hidden;
26
+ }
27
+ .relation-process-picker-scroll .t-scroll-list,
28
+ .relation-process-picker-scroll .t-scrollview-list {
29
+ height: 100%;
30
+ }
31
+ .relation-pick-item-disabled {
32
+ background: #f7f8fa;
33
+ }
34
+
35
+ /* 详情页签略加宽(0.2→0.25),保证「关联流程(N)」完整显示,仍比均分整行紧凑 */
36
+ .approve-content .approval-details .t-tab-bar .t-tab-tab,
37
+ .approval-details .t-tab-bar .t-tab-tab {
38
+ flex: 0.25 !important;
39
+ }
40
+
9
41
  /* 结束/不通过/作废「提醒对象」:已选文字勿压住右侧箭头(slot 模式 class 在 Field 根上) */
10
42
  .remind-object-field {
11
43
  .t-checkbox-field-value-wrap,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "fmui-base",
3
- "version": "2.3.57",
3
+ "version": "2.3.59",
4
4
  "title": "fmui-base",
5
5
  "description": "fmui移动端组件",
6
6
  "main": "lib/index.js",