@kmkf-fe-packages/kmkf-work-order-service-component 2.2.12 → 2.3.0-rc.1

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.
@@ -6,6 +6,8 @@ interface ActionListProps {
6
6
  nodeType: NodeType;
7
7
  handleAction: (s: string) => void;
8
8
  hasPreNode: boolean;
9
+ privilege?: string;
10
+ showShareButton: boolean;
9
11
  }
10
12
  declare const ActionList: (props: ActionListProps) => React.JSX.Element;
11
13
  export default ActionList;
@@ -2,18 +2,39 @@ import React, { useMemo } from 'react';
2
2
  import { Menu, Button, Space, Dropdown } from 'antd';
3
3
  import { DownOutlined } from '@ant-design/icons';
4
4
  import { FlowStatus, FlowType } from "../../../model/flowTemplateDetail/types";
5
+ import { reverse } from 'lodash';
5
6
  import styles from "./index.module.less";
7
+ // const getActionMap = (nodeStatus: FlowStatus, hasPreNode: boolean, flowType: FlowType) => {
8
+ // // 非开始节点看状态
9
+ // if (nodeStatus === FlowStatus.PROCESSING) {
10
+ // if (hasPreNode) return ['forward', 'save', 'submit', 'rejected', 'close', 'stop', 'share'];
11
+ // return flowType === FlowType.SINGLE_PAGE
12
+ // ? ['save', 'forward', 'close', 'stop', 'share', 'submit']
13
+ // : ['forward', 'save', 'submit', 'close', 'stop', 'share'];
14
+ // } else if (nodeStatus === FlowStatus.STOPPING) {
15
+ // return ['open', 'close', 'share'];
16
+ // } else if (
17
+ // [FlowStatus.CLOSE, FlowStatus.COMPLETED, FlowStatus.RETURNING, FlowStatus.FLOWING].includes(
18
+ // nodeStatus,
19
+ // )
20
+ // ) {
21
+ // return [];
22
+ // } else {
23
+ // return ['save', 'share', 'submit'];
24
+ // }
25
+ // };
26
+
6
27
  var getActionMap = function getActionMap(nodeStatus, hasPreNode, flowType) {
7
28
  // 非开始节点看状态
8
29
  if (nodeStatus === FlowStatus.PROCESSING) {
9
- if (hasPreNode) return ['forward', 'save', 'submit', 'rejected', 'close', 'stop'];
10
- return flowType === FlowType.SINGLE_PAGE ? ['save', 'forward', 'close', 'stop', 'submit'] : ['forward', 'save', 'submit', 'close', 'stop'];
30
+ if (hasPreNode) return ['submit', 'save', 'share', 'forward', 'rejected', 'close', 'stop'];
31
+ return flowType === FlowType.SINGLE_PAGE ? ['save', 'forward', 'close', 'stop', 'share', 'submit'] : ['submit', 'save', 'share', 'forward', 'close', 'stop'];
11
32
  } else if (nodeStatus === FlowStatus.STOPPING) {
12
- return ['open', 'close'];
33
+ return ['close', 'open', 'share'];
13
34
  } else if ([FlowStatus.CLOSE, FlowStatus.COMPLETED, FlowStatus.RETURNING, FlowStatus.FLOWING].includes(nodeStatus)) {
14
35
  return [];
15
36
  } else {
16
- return ['save', 'submit'];
37
+ return ['submit', 'save', 'share'];
17
38
  }
18
39
  };
19
40
  var buttonMap = function buttonMap(flowType) {
@@ -26,6 +47,10 @@ var buttonMap = function buttonMap(flowType) {
26
47
  label: flowType === FlowType.SINGLE_PAGE ? '完结' : '提交',
27
48
  type: 'primary'
28
49
  },
50
+ share: {
51
+ label: '分享',
52
+ type: 'default'
53
+ },
29
54
  forward: {
30
55
  label: '转交',
31
56
  type: 'default'
@@ -49,14 +74,31 @@ var buttonMap = function buttonMap(flowType) {
49
74
  };
50
75
  };
51
76
  var ActionList = function ActionList(props) {
52
- var _buttonList$slice;
77
+ var _ref;
53
78
  var _props$flowStatus = props.flowStatus,
54
79
  flowStatus = _props$flowStatus === void 0 ? FlowStatus.NON_START : _props$flowStatus,
55
80
  hasPreNode = props.hasPreNode,
56
81
  _props$flowType = props.flowType,
57
82
  flowType = _props$flowType === void 0 ? FlowType.SINGLE_PAGE : _props$flowType,
58
- handleAction = props.handleAction;
59
- var buttonList = getActionMap(flowStatus, hasPreNode, flowType);
83
+ handleAction = props.handleAction,
84
+ _props$privilege = props.privilege,
85
+ privilege = _props$privilege === void 0 ? '' : _props$privilege,
86
+ _props$showShareButto = props.showShareButton,
87
+ showShareButton = _props$showShareButto === void 0 ? false : _props$showShareButto;
88
+ var buttonList = useMemo(function () {
89
+ var button = getActionMap(flowStatus, hasPreNode, flowType);
90
+ //如果是没有按钮权限 || 分享过来的 则不显示分享按钮
91
+ if (!showShareButton || privilege) {
92
+ button = button.filter(function (item) {
93
+ return item !== 'share';
94
+ });
95
+ }
96
+ //分享新建的只显示提交按钮
97
+ if (privilege === 'created') {
98
+ return ['submit'];
99
+ }
100
+ return button;
101
+ }, [flowStatus, hasPreNode, flowType, privilege, showShareButton]);
60
102
  var sliceLen = useMemo(function () {
61
103
  return flowType === FlowType.SINGLE_PAGE ? 1 : 3;
62
104
  }, [flowType]);
@@ -86,7 +128,7 @@ var ActionList = function ActionList(props) {
86
128
  onClick: function onClick(e) {
87
129
  return e.preventDefault();
88
130
  }
89
- }, /*#__PURE__*/React.createElement(Space, null, "\u66F4\u591A", /*#__PURE__*/React.createElement(DownOutlined, null)))), (_buttonList$slice = buttonList.slice(0, sliceLen)) === null || _buttonList$slice === void 0 ? void 0 : _buttonList$slice.map(function (button, index) {
131
+ }, /*#__PURE__*/React.createElement(Space, null, "\u66F4\u591A", /*#__PURE__*/React.createElement(DownOutlined, null)))), (_ref = reverse(buttonList.slice(0, sliceLen)) || []) === null || _ref === void 0 ? void 0 : _ref.map(function (button, index) {
90
132
  var _buttonMap$button, _buttonMap$button2, _buttonMap$button3, _buttonMap$button4;
91
133
  return /*#__PURE__*/React.createElement(Button, {
92
134
  key: "button".concat(index),
@@ -8,6 +8,8 @@ import React, { useState } from 'react';
8
8
  import { Button, Spin, Tooltip, Typography, Space, Modal, Table } from 'antd';
9
9
  import moment from 'moment';
10
10
  import { useRequest } from 'ahooks';
11
+ import { useSelector } from "../../context/useSelector";
12
+ import { selectPrivilege } from "../../store/selector";
11
13
  import { queryFlowFail } from "../../../model/flowTemplateDetail/api";
12
14
  import { NODE_TYPE } from "../../../common/constant";
13
15
  import styles from "./index.module.less";
@@ -64,6 +66,7 @@ var Header = function Header(props) {
64
66
  _useState2 = _slicedToArray(_useState, 2),
65
67
  visible = _useState2[0],
66
68
  setVisible = _useState2[1];
69
+ var privilege = useSelector(selectPrivilege);
67
70
  var _useRequest = useRequest(function () {
68
71
  return queryFlowFail({
69
72
  flowTemplateKeys: [flowTemplateKey],
@@ -110,7 +113,7 @@ var Header = function Header(props) {
110
113
  onClick: handleRestartAutoTask,
111
114
  "data-spm-click": "\u91CD\u8BD5",
112
115
  "data-spm-param": "\u91CD\u8BD5"
113
- }, "\u91CD\u8BD5")), showWithdraw && /*#__PURE__*/React.createElement(Button, {
116
+ }, "\u91CD\u8BD5")), showWithdraw && !['created', 'edit'].includes(privilege) && /*#__PURE__*/React.createElement(Button, {
114
117
  type: "link",
115
118
  onClick: handleWithdraw,
116
119
  "data-spm-click": "\u64A4\u56DE",
@@ -120,7 +123,7 @@ var Header = function Header(props) {
120
123
  onClick: handleSave,
121
124
  "data-spm-click": "\u786E\u8BA4\u4FEE\u6539",
122
125
  "data-spm-param": "\u786E\u8BA4\u4FEE\u6539"
123
- }, "\u786E\u8BA4\u4FEE\u6539") : /*#__PURE__*/React.createElement(Button, {
126
+ }, "\u786E\u8BA4\u4FEE\u6539") : !['created', 'edit'].includes(privilege) && /*#__PURE__*/React.createElement(Button, {
124
127
  type: "link",
125
128
  onClick: handleEdit,
126
129
  "data-spm-click": "\u4FEE\u6539",
@@ -0,0 +1,3 @@
1
+ import React from 'react';
2
+ declare const ShareLinkModal: React.ForwardRefExoticComponent<Omit<any, "ref"> & React.RefAttributes<any>>;
3
+ export default ShareLinkModal;
@@ -0,0 +1,221 @@
1
+ function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }
2
+ function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
3
+ function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
4
+ function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }
5
+ function _iterableToArrayLimit(arr, i) { var _i = null == arr ? null : "undefined" != typeof Symbol && arr[Symbol.iterator] || arr["@@iterator"]; if (null != _i) { var _s, _e, _x, _r, _arr = [], _n = !0, _d = !1; try { if (_x = (_i = _i.call(arr)).next, 0 === i) { if (Object(_i) !== _i) return; _n = !1; } else for (; !(_n = (_s = _x.call(_i)).done) && (_arr.push(_s.value), _arr.length !== i); _n = !0); } catch (err) { _d = !0, _e = err; } finally { try { if (!_n && null != _i.return && (_r = _i.return(), Object(_r) !== _r)) return; } finally { if (_d) throw _e; } } return _arr; } }
6
+ function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
7
+ import React, { useState, useImperativeHandle, forwardRef } from 'react';
8
+ import { Modal, Button, message, Space, Typography } from 'antd';
9
+ import { CopyToClipboard } from 'react-copy-to-clipboard';
10
+ import { shortLink, createNodeLink, createLink } from "../../../model/flowTemplateDetail/api";
11
+ import QRCode from 'qrcode.react';
12
+ import styles from "./index.module.less";
13
+ var Text = Typography.Text;
14
+ var ShareLinkModal = /*#__PURE__*/forwardRef(function (props, ref) {
15
+ var _useState = useState(false),
16
+ _useState2 = _slicedToArray(_useState, 2),
17
+ visible = _useState2[0],
18
+ setVisible = _useState2[1];
19
+ var _useState3 = useState({
20
+ title: 'PC流程创建链接分享设置',
21
+ name: '',
22
+ mongoId: '',
23
+ url: '',
24
+ shortUrl: '',
25
+ platform: ''
26
+ }),
27
+ _useState4 = _slicedToArray(_useState3, 2),
28
+ info = _useState4[0],
29
+ setInfo = _useState4[1];
30
+ var _useState5 = useState(''),
31
+ _useState6 = _slicedToArray(_useState5, 2),
32
+ url = _useState6[0],
33
+ setUrl = _useState6[1];
34
+ var _useState7 = useState(''),
35
+ _useState8 = _slicedToArray(_useState7, 2),
36
+ shortUrl = _useState8[0],
37
+ setShortUrl = _useState8[1];
38
+ var _useState9 = useState(''),
39
+ _useState10 = _slicedToArray(_useState9, 2),
40
+ showType = _useState10[0],
41
+ setShowType = _useState10[1];
42
+ useImperativeHandle(ref, function () {
43
+ return {
44
+ open: function open(info) {
45
+ initHandle(info);
46
+ }
47
+ };
48
+ }, []);
49
+ var initHandle = function initHandle(info) {
50
+ setInfo(info);
51
+ setShowType((info === null || info === void 0 ? void 0 : info.showType) || 'all');
52
+ if (info.type === 'edit' && info.companyKey && info.flowTemplateKey && info.flowWorkOrderId) {
53
+ createNodeLink({
54
+ companyKey: info.companyKey,
55
+ flowTemplateKey: info.flowTemplateKey,
56
+ flowWorkOrderId: info.flowWorkOrderId,
57
+ flowNodeId: info.flowNodeId
58
+ }).then(function (res) {
59
+ var _res$data, _res$data2;
60
+ if (res.data) {
61
+ setVisible(true);
62
+ }
63
+ setUrl((_res$data = res.data) === null || _res$data === void 0 ? void 0 : _res$data.link);
64
+ setShortUrl((_res$data2 = res.data) === null || _res$data2 === void 0 ? void 0 : _res$data2.shortShareLink);
65
+ });
66
+ return;
67
+ }
68
+ if (info.type === 'create' && info.companyKey && info.flowTemplateKey) {
69
+ createLink({
70
+ companyKey: info.companyKey,
71
+ flowTemplateKey: info.flowTemplateKey
72
+ }).then(function (res) {
73
+ var _res$data3, _res$data4;
74
+ if (res.data) {
75
+ setVisible(true);
76
+ }
77
+ setUrl((_res$data3 = res.data) === null || _res$data3 === void 0 ? void 0 : _res$data3.link);
78
+ setShortUrl((_res$data4 = res.data) === null || _res$data4 === void 0 ? void 0 : _res$data4.shortShareLink);
79
+ });
80
+ return;
81
+ }
82
+ setVisible(true);
83
+ if (info.url) {
84
+ var regex = /^(https?:\/\/)/;
85
+ var formatUrl = info.url.match(regex) ? info.url : "".concat(window.location.protocol, "//").concat(info.url);
86
+ setUrl(formatUrl);
87
+ }
88
+ if ((info === null || info === void 0 ? void 0 : info.showType) !== 'shortUrl') return;
89
+ if (info.shortUrl) {
90
+ setShortUrl(info.shortUrl);
91
+ } else if (info.mongoId && info.url) {
92
+ shortLink({
93
+ mongoId: info.mongoId,
94
+ longUrl: info.url
95
+ }).then(function (res) {
96
+ setShortUrl(res.data);
97
+ });
98
+ }
99
+ };
100
+ var onCancel = function onCancel() {
101
+ setUrl('');
102
+ setShortUrl('');
103
+ setVisible(false);
104
+ };
105
+ var handleDownload = function handleDownload(id) {
106
+ var canvasImg = document.getElementById(id); // 获取canvas类型的二维码
107
+ var a = document.createElement('a');
108
+ a.download = (info === null || info === void 0 ? void 0 : info.name) || '数据分享二维码';
109
+ a.href = canvasImg.toDataURL('image/png');
110
+ document.body.appendChild(a);
111
+ a.click();
112
+ a.remove();
113
+ };
114
+ return /*#__PURE__*/React.createElement(Modal, {
115
+ title: ['url', 'shortUrl'].includes(showType) ? '链接信息' : info === null || info === void 0 ? void 0 : info.title,
116
+ width: 600,
117
+ visible: visible,
118
+ onCancel: onCancel,
119
+ footer: null
120
+ }, /*#__PURE__*/React.createElement("div", {
121
+ className: styles.shareUl
122
+ }, ['url', 'all'].includes(showType) && !!url && /*#__PURE__*/React.createElement("li", {
123
+ className: styles.shareLi
124
+ }, /*#__PURE__*/React.createElement("div", {
125
+ className: styles.shareName
126
+ }, "\u5E38\u7528\u94FE\u63A5\uFF1A"), /*#__PURE__*/React.createElement("div", null, /*#__PURE__*/React.createElement("div", null, /*#__PURE__*/React.createElement(Space, null, /*#__PURE__*/React.createElement(CopyToClipboard, {
127
+ text: url,
128
+ onCopy: function onCopy() {
129
+ message.success('已复制');
130
+ }
131
+ }, /*#__PURE__*/React.createElement(Button, {
132
+ type: "primary"
133
+ }, "\u590D\u5236")), info.platform === 'pc' && /*#__PURE__*/React.createElement(Button, {
134
+ type: "primary",
135
+ onClick: function onClick() {
136
+ window.open(url);
137
+ }
138
+ }, "\u6253\u5F00"))), /*#__PURE__*/React.createElement(Text, null, url))), ['shortUrl', 'all'].includes(showType) && !!shortUrl && /*#__PURE__*/React.createElement("li", {
139
+ className: styles.shareLi
140
+ }, /*#__PURE__*/React.createElement("div", {
141
+ className: styles.shareName
142
+ }, "\u77ED\u94FE\u63A5\uFF1A"), /*#__PURE__*/React.createElement("div", null, /*#__PURE__*/React.createElement("div", null, /*#__PURE__*/React.createElement(Space, null, /*#__PURE__*/React.createElement(CopyToClipboard, {
143
+ text: shortUrl,
144
+ onCopy: function onCopy() {
145
+ message.success('已复制');
146
+ }
147
+ }, /*#__PURE__*/React.createElement(Button, {
148
+ type: "primary"
149
+ }, "\u590D\u5236")), info.platform === 'pc' && /*#__PURE__*/React.createElement(Button, {
150
+ type: "primary",
151
+ onClick: function onClick() {
152
+ window.open("https://".concat(shortUrl));
153
+ }
154
+ }, "\u6253\u5F00"))), /*#__PURE__*/React.createElement(Text, null, shortUrl))), /*#__PURE__*/React.createElement("li", {
155
+ className: styles.shareLi
156
+ }, /*#__PURE__*/React.createElement("div", {
157
+ className: styles.shareName
158
+ }, "\u4E8C\u7EF4\u7801\uFF1A"), /*#__PURE__*/React.createElement("div", {
159
+ className: styles.shareCodeBox
160
+ }, ['url', 'all'].includes(showType) && !!url && /*#__PURE__*/React.createElement("div", {
161
+ className: styles.codeOutBox
162
+ }, /*#__PURE__*/React.createElement("p", null, "\u5E38\u7528\u94FE\u63A5"), info.platform === 'pc' && /*#__PURE__*/React.createElement(Button, {
163
+ type: "primary",
164
+ className: styles.codeBtn,
165
+ onClick: function onClick() {
166
+ return handleDownload('urlCode');
167
+ }
168
+ }, "\u4E0B\u8F7D\u4E8C\u7EF4\u7801"), /*#__PURE__*/React.createElement("div", {
169
+ className: styles.qrcodeBox
170
+ }, /*#__PURE__*/React.createElement(QRCode, {
171
+ id: "urlCode",
172
+ value: url,
173
+ size: 110,
174
+ fgColor: "#000000"
175
+ }))), ['shortUrl', 'all'].includes(showType) && !!shortUrl && /*#__PURE__*/React.createElement("div", {
176
+ className: styles.codeOutBox
177
+ }, /*#__PURE__*/React.createElement("p", null, "\u77ED\u94FE\u63A5"), info.platform === 'pc' && /*#__PURE__*/React.createElement(Button, {
178
+ type: "primary",
179
+ className: styles.codeBtn,
180
+ onClick: function onClick() {
181
+ return handleDownload('shortUrlCode');
182
+ }
183
+ }, "\u4E0B\u8F7D\u4E8C\u7EF4\u7801"), /*#__PURE__*/React.createElement("div", {
184
+ className: styles.qrcodeBox
185
+ }, /*#__PURE__*/React.createElement(QRCode, {
186
+ id: "shortUrlCode",
187
+ value: shortUrl,
188
+ size: 110,
189
+ fgColor: "#000000"
190
+ })))))));
191
+ });
192
+ export default ShareLinkModal;
193
+ // const ShareUl = styled.ul`
194
+ // .share-li {
195
+ // display: flex;
196
+ // padding: 8px 0;
197
+ // .share-name {
198
+ // min-width: 100px;
199
+ // text-align: right;
200
+ // }
201
+ // }
202
+ // `;
203
+ // const CodeBox = styled.div`
204
+ // display: flex;
205
+ // align-items: center;
206
+ // .codeOutBox {
207
+ // display: flex;
208
+ // flex-direction: column;
209
+ // align-items: center;
210
+ // margin-right: 60px;
211
+ // }
212
+ // .codeBtn {
213
+ // margin: 12px 0;
214
+ // }
215
+ // .shareCodeBox {
216
+ // padding: 10px;
217
+ // background-color: #f2f3f5;
218
+ // border: 1px solid #f2f3f5;
219
+ // border-radius: 4px;
220
+ // }
221
+ // `;
@@ -0,0 +1,29 @@
1
+ .shareUl {
2
+ .shareLi {
3
+ display: flex;
4
+ padding: 8px 0;
5
+ .shareName {
6
+ min-width: 100px;
7
+ text-align: right;
8
+ }
9
+ }
10
+ }
11
+ .shareCodeBox {
12
+ display: flex;
13
+ align-items: center;
14
+ .codeOutBox {
15
+ display: flex;
16
+ flex-direction: column;
17
+ align-items: center;
18
+ margin-right: 60px;
19
+ }
20
+ .codeBtn {
21
+ margin: 12px 0;
22
+ }
23
+ .qrcodeBox {
24
+ padding: 10px;
25
+ background-color: #f2f3f5;
26
+ border: 1px solid #f2f3f5;
27
+ border-radius: 4px;
28
+ }
29
+ }