uepay-ops2 4.0.16-beta → 4.0.16-beta.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.
@@ -0,0 +1,21 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = void 0;
7
+ var _react = _interopRequireDefault(require("react"));
8
+ var _userNotify = _interopRequireDefault(require("../../../userMgr/userNotify"));
9
+ function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
10
+ function MessageWrapper(_ref) {
11
+ let {
12
+ visible,
13
+ onClose,
14
+ onOpen
15
+ } = _ref;
16
+ return /*#__PURE__*/_react.default.createElement(_userNotify.default, {
17
+ visible: visible,
18
+ onClose: onClose
19
+ });
20
+ }
21
+ var _default = exports.default = MessageWrapper;
@@ -16,7 +16,7 @@ var _userInfo = require("../../userMgr/userInfo");
16
16
  var _token = require("../../../util/token");
17
17
  var _localDefined = _interopRequireDefault(require("../../../data/localDefined"));
18
18
  var _userSetting = _interopRequireDefault(require("../../setting/userSetting"));
19
- var _MenuFoldOutlined = _interopRequireDefault(require("@ant-design/icons/lib/icons/MenuFoldOutlined"));
19
+ var _userNotify = _interopRequireDefault(require("../../userMgr/userNotify"));
20
20
  var _mobileAble = require("../mobileAble");
21
21
  function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
22
22
  function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }
@@ -42,7 +42,8 @@ class Head extends _react.default.Component {
42
42
  constructor() {
43
43
  super(...arguments);
44
44
  _defineProperty(this, "state", {
45
- visible: false
45
+ settingVisible: false,
46
+ notifyVisible: false
46
47
  });
47
48
  _defineProperty(this, "handleLogout", () => {
48
49
  const _this = this;
@@ -62,16 +63,21 @@ class Head extends _react.default.Component {
62
63
  });
63
64
  _defineProperty(this, "handleSettings", () => {
64
65
  this.setState({
65
- visible: true
66
+ settingVisible: true
66
67
  });
67
68
  });
68
- _defineProperty(this, "hideSettings", () => {
69
- this.setState({
70
- visible: false
71
- });
69
+ }
70
+ componentDidMount() {
71
+ (0, _appUrl.hasNotify)().then(res => {
72
+ if (res && 0 < res.code && true === res.data) {
73
+ this.setState({
74
+ notifyVisible: true
75
+ });
76
+ }
77
+ }).catch(err => {
78
+ console.log(err);
72
79
  });
73
80
  }
74
- componentDidMount() {}
75
81
  handleFullScreen() {
76
82
  if (document.documentElement.requestFullscreen) {
77
83
  document.documentElement.requestFullscreen();
@@ -106,6 +112,12 @@ class Head extends _react.default.Component {
106
112
  }, /*#__PURE__*/_react.default.createElement(_icons.SettingOutlined, null), /*#__PURE__*/_react.default.createElement("span", {
107
113
  className: "uepay-ops-header-oper-name"
108
114
  }, 'cn' === locale ? '修改密碼' : 'changePassword'))), /*#__PURE__*/_react.default.createElement(_antd.Menu.Item, null, /*#__PURE__*/_react.default.createElement("a", {
115
+ onClick: () => this.setState({
116
+ notifyVisible: true
117
+ })
118
+ }, /*#__PURE__*/_react.default.createElement(_icons.MessageOutlined, null), /*#__PURE__*/_react.default.createElement("span", {
119
+ className: "uepay-ops-header-oper-name"
120
+ }, 'cn' === locale ? '信 息' : 'message'))), /*#__PURE__*/_react.default.createElement(_antd.Menu.Item, null, /*#__PURE__*/_react.default.createElement("a", {
109
121
  onClick: this.handleLogout
110
122
  }, /*#__PURE__*/_react.default.createElement(_icons.LogoutOutlined, null), /*#__PURE__*/_react.default.createElement("span", {
111
123
  className: "uepay-ops-header-oper-name"
@@ -122,7 +134,7 @@ class Head extends _react.default.Component {
122
134
  onClick: props.onCollapse
123
135
  })) : /*#__PURE__*/_react.default.createElement(_antd.Tooltip, {
124
136
  title: "\u6536\u8D77\u83DC\u55AE"
125
- }, /*#__PURE__*/_react.default.createElement(_MenuFoldOutlined.default, {
137
+ }, /*#__PURE__*/_react.default.createElement(_icons.MenuFoldOutlined, {
126
138
  onClick: props.onCollapse
127
139
  }))), (0, _mobileAble.isMobile)() ? null : /*#__PURE__*/_react.default.createElement("a", {
128
140
  className: "ops-collapse"
@@ -138,9 +150,17 @@ class Head extends _react.default.Component {
138
150
  }, /*#__PURE__*/_react.default.createElement("span", {
139
151
  id: "uepay-frame-avatar"
140
152
  }, /*#__PURE__*/_react.default.createElement("span", null, _userInfo.user.getName()))), /*#__PURE__*/_react.default.createElement(_userSetting.default, {
141
- visible: this.state.visible,
142
- onCancel: this.hideSettings,
153
+ visible: this.state.settingVisible,
154
+ onCancel: () => this.setState({
155
+ settingVisible: false
156
+ }),
143
157
  onLogout: this.handleLogout
158
+ }), /*#__PURE__*/_react.default.createElement(_userNotify.default, {
159
+ visible: this.state.notifyVisible,
160
+ onClose: () => this.setState({
161
+ notifyVisible: false
162
+ }),
163
+ onModifyPwd: this.handleSettings
144
164
  })));
145
165
  }
146
166
  }
@@ -25,23 +25,79 @@ class MultiPage extends _react.default.Component {
25
25
  _defineProperty(this, "tabs", {});
26
26
  _defineProperty(this, "comps", []);
27
27
  _defineProperty(this, "key", false);
28
+ _defineProperty(this, "prevKey", null);
29
+ _defineProperty(this, "dragKey", null);
28
30
  _defineProperty(this, "handleClick", key => {
31
+ if (this.key !== key) {
32
+ this.prevKey = this.key;
33
+ }
29
34
  this.props.router.push(key);
30
35
  });
31
36
  _defineProperty(this, "handleEdit", (key, action) => {
37
+ if (action !== 'remove') {
38
+ return;
39
+ }
32
40
  const {
33
41
  router
34
42
  } = this.props;
35
- if (this.key === key && 1 < this.comps.length) {
36
- delete this.tabs[key];
37
- this.comps = this.comps.filter(i => i.key !== key);
38
- router.replace(this.comps[0].key);
43
+ const isClosingActiveTab = this.key === key;
44
+ delete this.tabs[key];
45
+ this.comps = this.comps.filter(i => i.key !== key);
46
+ if (this.prevKey === key) {
47
+ this.prevKey = null;
48
+ }
49
+ if (!this.comps.length) {
50
+ return;
51
+ }
52
+ if (isClosingActiveTab) {
53
+ const fallbackKey = this.prevKey && this.tabs[this.prevKey] ? this.prevKey : this.comps[0].key;
54
+ this.prevKey = null;
55
+ router.replace(fallbackKey);
39
56
  } else {
40
- delete this.tabs[key];
41
- this.comps = this.comps.filter(i => i.key !== key);
42
57
  router.replace(this.key);
43
58
  }
44
59
  });
60
+ _defineProperty(this, "handleDragStart", (e, key) => {
61
+ this.dragKey = key;
62
+ if (e && e.dataTransfer) {
63
+ e.dataTransfer.effectAllowed = 'move';
64
+ e.dataTransfer.setData('text/plain', key);
65
+ }
66
+ });
67
+ _defineProperty(this, "handleDragOver", e => {
68
+ if (e && e.preventDefault) {
69
+ e.preventDefault();
70
+ }
71
+ });
72
+ _defineProperty(this, "handleDrop", (e, targetKey) => {
73
+ if (e && e.preventDefault) {
74
+ e.preventDefault();
75
+ }
76
+ const sourceKey = this.dragKey;
77
+ this.dragKey = null;
78
+ if (!sourceKey || sourceKey === targetKey) {
79
+ return;
80
+ }
81
+ const sourceIndex = this.comps.findIndex(item => item.key === sourceKey);
82
+ const targetIndex = this.comps.findIndex(item => item.key === targetKey);
83
+ if (sourceIndex < 0 || targetIndex < 0) {
84
+ return;
85
+ }
86
+ const moved = this.comps[sourceIndex];
87
+ this.comps.splice(sourceIndex, 1);
88
+ this.comps.splice(targetIndex, 0, moved);
89
+ this.forceUpdate();
90
+ });
91
+ _defineProperty(this, "handleDragEnd", () => {
92
+ this.dragKey = null;
93
+ });
94
+ _defineProperty(this, "renderTabBar", (tabBarProps, DefaultTabBar) => /*#__PURE__*/_react.default.createElement(DefaultTabBar, tabBarProps, node => /*#__PURE__*/_react.default.cloneElement(node, {
95
+ draggable: true,
96
+ onDragStart: e => this.handleDragStart(e, node.key),
97
+ onDragOver: this.handleDragOver,
98
+ onDrop: e => this.handleDrop(e, node.key),
99
+ onDragEnd: this.handleDragEnd
100
+ })));
45
101
  }
46
102
  addMenuCache(key, menu, router, Component, pageProps) {
47
103
  const comp = /*#__PURE__*/_react.default.createElement(Component, _extends({}, pageProps, {
@@ -90,6 +146,7 @@ class MultiPage extends _react.default.Component {
90
146
  size: "small",
91
147
  onTabClick: this.handleClick,
92
148
  onEdit: this.handleEdit,
149
+ renderTabBar: this.renderTabBar,
93
150
  animated: false
94
151
  }, list.map(i => i.Comp));
95
152
  }
@@ -8,6 +8,7 @@ exports.default = void 0;
8
8
  require("core-js/modules/es6.symbol.js");
9
9
  var _react = _interopRequireWildcard(require("react"));
10
10
  var _antd = require("antd");
11
+ var _icons = require("@ant-design/icons");
11
12
  var _appUrl = require("../../data/appUrl");
12
13
  function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(e) { return e ? t : r; })(e); }
13
14
  function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
@@ -18,7 +19,8 @@ class UserSettings extends _react.Component {
18
19
  constructor() {
19
20
  super(...arguments);
20
21
  _defineProperty(this, "state", {
21
- value: ''
22
+ value: '',
23
+ newPasswd: ''
22
24
  });
23
25
  _defineProperty(this, "hideSetting", () => {
24
26
  const {
@@ -53,8 +55,49 @@ class UserSettings extends _react.Component {
53
55
  _defineProperty(this, "onFinishFailed", errorInfo => {
54
56
  console.log('Failed:', errorInfo);
55
57
  });
58
+ _defineProperty(this, "onValuesChange", changedValues => {
59
+ if (Object.prototype.hasOwnProperty.call(changedValues, 'newPasswd')) {
60
+ this.setState({
61
+ newPasswd: changedValues.newPasswd || ''
62
+ });
63
+ }
64
+ });
65
+ _defineProperty(this, "getPasswordStrengthStatus", function () {
66
+ let value = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';
67
+ return {
68
+ hasMinLength: value.length >= 8,
69
+ hasMixedCaseLetter: /[A-Z]/.test(value) && /[a-z]/.test(value),
70
+ hasNumber: /\d/.test(value),
71
+ hasSpecial: /[^A-Za-z0-9]/.test(value)
72
+ };
73
+ });
74
+ _defineProperty(this, "renderRuleHint", (passed, text) => {
75
+ const color = passed ? '#52c41a' : '#ff4d4f';
76
+ return /*#__PURE__*/_react.default.createElement("div", {
77
+ style: {
78
+ color,
79
+ lineHeight: '20px'
80
+ }
81
+ }, passed ? /*#__PURE__*/_react.default.createElement(_icons.CheckOutlined, null) : /*#__PURE__*/_react.default.createElement(_icons.CloseOutlined, null), /*#__PURE__*/_react.default.createElement("span", {
82
+ style: {
83
+ marginLeft: 6
84
+ }
85
+ }, text));
86
+ });
87
+ _defineProperty(this, "renderPasswordRuleHints", value => {
88
+ const {
89
+ hasMinLength,
90
+ hasMixedCaseLetter,
91
+ hasNumber,
92
+ hasSpecial
93
+ } = this.getPasswordStrengthStatus(value);
94
+ return /*#__PURE__*/_react.default.createElement("div", null, this.renderRuleHint(hasMinLength, '長度至少 8 位'), this.renderRuleHint(hasMixedCaseLetter, '包含大小寫英文'), this.renderRuleHint(hasNumber, '包含數字'), this.renderRuleHint(hasSpecial, '包含特殊符號'));
95
+ });
56
96
  }
57
97
  render() {
98
+ const {
99
+ newPasswd
100
+ } = this.state;
58
101
  return this.props.visible ? /*#__PURE__*/_react.default.createElement("div", {
59
102
  className: "usr-setting"
60
103
  }, /*#__PURE__*/_react.default.createElement("div", {
@@ -75,6 +118,7 @@ class UserSettings extends _react.Component {
75
118
  remember: true
76
119
  },
77
120
  onFinish: this.onFinish,
121
+ onValuesChange: this.onValuesChange,
78
122
  onFinishFailed: this.onFinishFailed
79
123
  }, /*#__PURE__*/_react.default.createElement(_antd.Form.Item, {
80
124
  width: "80%",
@@ -100,10 +144,27 @@ class UserSettings extends _react.Component {
100
144
  }, /*#__PURE__*/_react.default.createElement(_antd.Input.Password, null)), /*#__PURE__*/_react.default.createElement(_antd.Form.Item, {
101
145
  name: "newPasswd",
102
146
  label: "\u65B0\u7684\u5BC6\u78BC",
147
+ extra: this.renderPasswordRuleHints(newPasswd),
103
148
  rules: [{
104
149
  required: true,
105
150
  message: '請輸入新的密碼!'
106
- }],
151
+ }, () => ({
152
+ validator: (rule, value) => {
153
+ if (!value) {
154
+ return Promise.resolve();
155
+ }
156
+ const {
157
+ hasMinLength,
158
+ hasMixedCaseLetter,
159
+ hasNumber,
160
+ hasSpecial
161
+ } = this.getPasswordStrengthStatus(value);
162
+ if (hasMinLength && hasMixedCaseLetter && hasNumber && hasSpecial) {
163
+ return Promise.resolve();
164
+ }
165
+ return Promise.reject('新密碼未滿足強度要求,請參考下方提示。');
166
+ }
167
+ })],
107
168
  hasFeedback: true
108
169
  }, /*#__PURE__*/_react.default.createElement(_antd.Input.Password, null)), /*#__PURE__*/_react.default.createElement(_antd.Form.Item, {
109
170
  name: "verifyPasswd",
@@ -0,0 +1,310 @@
1
+ "use strict";
2
+
3
+ require("core-js/modules/es6.symbol.js");
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports.default = void 0;
8
+ require("core-js/modules/web.dom.iterable.js");
9
+ require("core-js/modules/es7.promise.finally.js");
10
+ var _react = _interopRequireWildcard(require("react"));
11
+ var _antd = require("antd");
12
+ var _router = require("next/router");
13
+ var _loading = _interopRequireDefault(require("../spin/loading"));
14
+ var _appUrl = require("../../data/appUrl");
15
+ function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
16
+ function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(e) { return e ? t : r; })(e); }
17
+ function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
18
+ function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
19
+ function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
20
+ function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }
21
+ function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : i + ""; }
22
+ function _toPrimitive(t, r) { if ("object" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != typeof i) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
23
+ function UserNotify(_ref) {
24
+ let {
25
+ visible,
26
+ onClose,
27
+ onModifyPwd: onModifyPwdOpen
28
+ } = _ref;
29
+ const router = (0, _router.useRouter)();
30
+ const [loading, setLoading] = (0, _react.useState)(true);
31
+ const [result, setResult] = (0, _react.useState)([]);
32
+ const [pagination, setPagination] = (0, _react.useState)({
33
+ current: 1,
34
+ pageSize: 5,
35
+ total: 0
36
+ });
37
+ const [activityMode, setActivityMode] = (0, _react.useState)('0');
38
+ const [unActivityLoadingMap, setUnActivityLoadingMap] = (0, _react.useState)({});
39
+ function onModifyPwd(item) {
40
+ onUnActivity(item);
41
+ onClose && onClose();
42
+ onModifyPwdOpen && onModifyPwdOpen(item);
43
+ }
44
+ function onInnerOpenUrl(item) {
45
+ if (!item || !item.url) {
46
+ _antd.notification.warning({
47
+ message: '通知链接不存在'
48
+ });
49
+ return;
50
+ }
51
+ router.push(item.url);
52
+ onClose && onClose();
53
+ onUnActivity(item);
54
+ }
55
+ function onOuterOpenUrl(item) {
56
+ if (!item || !item.url) {
57
+ _antd.notification.warning({
58
+ message: '通知链接不存在'
59
+ });
60
+ return;
61
+ }
62
+ window.open(item.url, '_blank', 'noopener,noreferrer');
63
+ onUnActivity(item);
64
+ }
65
+ function onUnActivity(item) {
66
+ if (!item || !item.id) {
67
+ return;
68
+ }
69
+ if (unActivityLoadingMap[item.id]) {
70
+ return;
71
+ }
72
+ setUnActivityLoadingMap(prev => _objectSpread(_objectSpread({}, prev), {}, {
73
+ [item.id]: true
74
+ }));
75
+ (0, _appUrl.closeNotify)(item.id).then(res => {
76
+ if (res && 0 < res.code) {
77
+ setResult(prev => prev.map(notify => {
78
+ if (notify.id !== item.id) {
79
+ return notify;
80
+ }
81
+ return _objectSpread(_objectSpread({}, notify), {}, {
82
+ isActivity: false
83
+ });
84
+ }));
85
+ return;
86
+ }
87
+ _antd.notification.error({
88
+ message: res && res.msg || '关闭通知失败'
89
+ });
90
+ }).catch(() => {
91
+ _antd.notification.error({
92
+ message: '网络故障,请稍后再试!'
93
+ });
94
+ }).finally(() => {
95
+ setUnActivityLoadingMap(prev => _objectSpread(_objectSpread({}, prev), {}, {
96
+ [item.id]: false
97
+ }));
98
+ });
99
+ }
100
+ (0, _react.useEffect)(() => {
101
+ if (!visible) {
102
+ setPagination(prev => _objectSpread(_objectSpread({}, prev), {}, {
103
+ current: 1
104
+ }));
105
+ setActivityMode('0');
106
+ return;
107
+ }
108
+ let mounted = true;
109
+ setLoading(true);
110
+ (0, _appUrl.getNotify)(pagination.current, pagination.pageSize, activityMode).then(res => {
111
+ if (!mounted) {
112
+ return;
113
+ }
114
+ if (res && 0 < res.code) {
115
+ const list = res.data && Array.isArray(res.data.list) ? res.data.list : [];
116
+ const data = res.data || {};
117
+ const totalCandidate = data.total !== undefined ? data.total : data.totalCount !== undefined ? data.totalCount : data.count;
118
+ const total = Number.isNaN(Number(totalCandidate)) ? list.length : Number(totalCandidate);
119
+ setResult(list);
120
+ setPagination(prev => _objectSpread(_objectSpread({}, prev), {}, {
121
+ total
122
+ }));
123
+ } else {
124
+ setResult([]);
125
+ setPagination(prev => _objectSpread(_objectSpread({}, prev), {}, {
126
+ total: 0
127
+ }));
128
+ _antd.notification.error({
129
+ message: res && res.msg || '读取通知失败'
130
+ });
131
+ }
132
+ }).catch(() => {
133
+ if (!mounted) {
134
+ return;
135
+ }
136
+ setResult([]);
137
+ setPagination(prev => _objectSpread(_objectSpread({}, prev), {}, {
138
+ total: 0
139
+ }));
140
+ _antd.notification.error({
141
+ message: '网络故障,请稍后再试!'
142
+ });
143
+ }).finally(() => {
144
+ if (mounted) {
145
+ setLoading(false);
146
+ }
147
+ });
148
+ return () => {
149
+ mounted = false;
150
+ };
151
+ }, [visible, pagination.current, pagination.pageSize, activityMode]);
152
+ function onTabChange(key) {
153
+ setActivityMode(key);
154
+ setPagination(prev => _objectSpread(_objectSpread({}, prev), {}, {
155
+ current: 1,
156
+ total: 0
157
+ }));
158
+ }
159
+ const listNode = 0 < result.length ? /*#__PURE__*/_react.default.createElement(_antd.List, {
160
+ dataSource: result,
161
+ pagination: {
162
+ current: pagination.current,
163
+ pageSize: pagination.pageSize,
164
+ total: pagination.total,
165
+ showSizeChanger: false,
166
+ showQuickJumper: true,
167
+ showTotal: total => "\u5171 ".concat(total, " \u6761"),
168
+ onChange: page => {
169
+ setPagination(prev => _objectSpread(_objectSpread({}, prev), {}, {
170
+ current: page
171
+ }));
172
+ }
173
+ },
174
+ renderItem: (item, index) => renderByType(item, onModifyPwd, onInnerOpenUrl, onOuterOpenUrl, onUnActivity, id => !!unActivityLoadingMap[id], activityMode === '1')
175
+ }) : /*#__PURE__*/_react.default.createElement("div", null, "\u6682\u65E0\u901A\u77E5......");
176
+ const comps = loading ? /*#__PURE__*/_react.default.createElement(_loading.default, null) : /*#__PURE__*/_react.default.createElement("div", {
177
+ className: "user-notify"
178
+ }, /*#__PURE__*/_react.default.createElement(_antd.Tabs, {
179
+ activeKey: activityMode,
180
+ onChange: onTabChange
181
+ }, /*#__PURE__*/_react.default.createElement(_antd.Tabs.TabPane, {
182
+ tab: "\u672A\u8BFB",
183
+ key: "0"
184
+ }, listNode), /*#__PURE__*/_react.default.createElement(_antd.Tabs.TabPane, {
185
+ tab: "\u5DF2\u8BFB",
186
+ key: "1"
187
+ }, listNode)));
188
+ return /*#__PURE__*/_react.default.createElement(_antd.Modal, {
189
+ title: "\u4FE1\u606F\u901A\u77E5",
190
+ width: 1000,
191
+ open: visible,
192
+ onCancel: onClose,
193
+ footer: null,
194
+ maskClosable: false,
195
+ style: {
196
+ top: 24
197
+ },
198
+ bodyStyle: {
199
+ paddingTop: 0
200
+ }
201
+ }, comps);
202
+ }
203
+ var _default = exports.default = UserNotify;
204
+ const Item = _antd.List.Item;
205
+ const NotifyType = {
206
+ MESSAGE: 'MESSAGE',
207
+ OUTERURL: 'OUTERURL',
208
+ INNERURL: 'INNERURL',
209
+ PSWDEDIT: 'PSWDEDIT'
210
+ };
211
+ const ActivityStyle = {
212
+ backgroundColor: '#fffbe6',
213
+ borderLeft: '3px solid #faad14',
214
+ paddingLeft: 12
215
+ };
216
+ const ItemContentStyle = {
217
+ display: 'inline-block',
218
+ maxWidth: '100%',
219
+ overflow: 'hidden',
220
+ textOverflow: 'ellipsis',
221
+ whiteSpace: 'nowrap',
222
+ verticalAlign: 'bottom'
223
+ };
224
+ function renderByType(item, onModifyPwd, onInnerOpenUrl, onOuterOpenUrl, onUnActivity, isUnActivityLoading, hideReadAction) {
225
+ const isActive = true === item.isActivity;
226
+ const unActivityLoading = isUnActivityLoading ? isUnActivityLoading(item.id) : false;
227
+ const activeRowStyle = isActive ? ActivityStyle : undefined;
228
+ const activeHint = isActive ? /*#__PURE__*/_react.default.createElement("span", {
229
+ style: {
230
+ color: '#d48806',
231
+ marginRight: 8
232
+ }
233
+ }, "[\u672A\u8655\u7406]") : null;
234
+ const fullText = "".concat(isActive ? '[未處理] ' : '').concat(item.message || '');
235
+ const contentNode = /*#__PURE__*/_react.default.createElement(_antd.Tooltip, {
236
+ title: fullText
237
+ }, /*#__PURE__*/_react.default.createElement("span", {
238
+ style: ItemContentStyle
239
+ }, activeHint, item.message));
240
+ switch (item.type) {
241
+ case NotifyType.PSWDEDIT:
242
+ return /*#__PURE__*/_react.default.createElement(Item, {
243
+ key: item.id,
244
+ style: activeRowStyle,
245
+ extra: item.createTime,
246
+ actions: [/*#__PURE__*/_react.default.createElement(_antd.Button, {
247
+ key: "modify",
248
+ type: "link",
249
+ onClick: () => onModifyPwd(item)
250
+ }, "\u4FEE\u6539\u5BC6\u7801")]
251
+ }, contentNode);
252
+ case NotifyType.MESSAGE:
253
+ return /*#__PURE__*/_react.default.createElement(Item, {
254
+ key: item.id,
255
+ style: activeRowStyle,
256
+ extra: item.createTime,
257
+ actions: hideReadAction ? [] : [/*#__PURE__*/_react.default.createElement(_antd.Button, {
258
+ key: "modify",
259
+ type: "link",
260
+ loading: unActivityLoading,
261
+ disabled: unActivityLoading,
262
+ onClick: () => onUnActivity(item)
263
+ }, "\u6A19\u8A18\u5DF2\u8B80")]
264
+ }, contentNode);
265
+ case NotifyType.OUTERURL:
266
+ return /*#__PURE__*/_react.default.createElement(Item, {
267
+ key: item.id,
268
+ style: activeRowStyle,
269
+ extra: item.createTime,
270
+ actions: hideReadAction ? [/*#__PURE__*/_react.default.createElement(_antd.Button, {
271
+ key: "outer",
272
+ type: "link",
273
+ onClick: () => onOuterOpenUrl(item)
274
+ }, "\u6253\u958B\u93C8\u63A5")] : [/*#__PURE__*/_react.default.createElement(_antd.Button, {
275
+ key: "outer",
276
+ type: "link",
277
+ onClick: () => onOuterOpenUrl(item)
278
+ }, "\u6253\u958B\u93C8\u63A5"), /*#__PURE__*/_react.default.createElement(_antd.Button, {
279
+ key: "modify",
280
+ type: "link",
281
+ loading: unActivityLoading,
282
+ disabled: unActivityLoading,
283
+ onClick: () => onUnActivity(item)
284
+ }, "\u6A19\u8A18\u5DF2\u8B80")]
285
+ }, contentNode);
286
+ case NotifyType.INNERURL:
287
+ return /*#__PURE__*/_react.default.createElement(Item, {
288
+ key: item.id,
289
+ style: activeRowStyle,
290
+ extra: item.createTime,
291
+ actions: hideReadAction ? [/*#__PURE__*/_react.default.createElement(_antd.Button, {
292
+ key: "inner",
293
+ type: "link",
294
+ onClick: () => onInnerOpenUrl(item)
295
+ }, "\u524D\u5F80\u9801\u9762")] : [/*#__PURE__*/_react.default.createElement(_antd.Button, {
296
+ key: "inner",
297
+ type: "link",
298
+ onClick: () => onInnerOpenUrl(item)
299
+ }, "\u524D\u5F80\u9801\u9762"), /*#__PURE__*/_react.default.createElement(_antd.Button, {
300
+ key: "modify",
301
+ type: "link",
302
+ loading: unActivityLoading,
303
+ disabled: unActivityLoading,
304
+ onClick: () => onUnActivity(item)
305
+ }, "\u6A19\u8A18\u5DF2\u8B80")]
306
+ }, contentNode);
307
+ default:
308
+ return null;
309
+ }
310
+ }
@@ -3,7 +3,7 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- exports.logout = exports.login = exports.getSts = exports.getMenus = exports.checkLogin = exports.changePassword = exports.captcha = void 0;
6
+ exports.logout = exports.login = exports.hasNotify = exports.getSts = exports.getNotify = exports.getMenus = exports.closeNotify = exports.checkLogin = exports.changePassword = exports.captcha = void 0;
7
7
  var _ctx = require("./ctx");
8
8
  var _net = require("../util/net");
9
9
  /**
@@ -96,4 +96,37 @@ const changePassword = (oldPasswd, newPasswd, verifyPasswd, captcha) => {
96
96
  };
97
97
  return (0, _net.post)("".concat((0, _ctx.getHost)(), "/api/authority/service/usr/passwd"), params);
98
98
  };
99
- exports.changePassword = changePassword;
99
+
100
+ /**
101
+ * 查询活跃通知
102
+ * @param pageNum 页码,默认 1
103
+ * @param pageSize 每页条数,默认 20
104
+ * @param activityMode 活跃模式,默认 0(只查活跃)
105
+ * @returns {Promise<Response>}
106
+ */
107
+ exports.changePassword = changePassword;
108
+ const getNotify = exports.getNotify = function getNotify() {
109
+ let pageNum = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 1;
110
+ let pageSize = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 10;
111
+ let activityMode = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 0;
112
+ return (0, _net.get)("".concat((0, _ctx.getHost)(), "/api/authority/service/signin/notify?pageNum=").concat(pageNum, "&pageSize=").concat(pageSize, "&activityMode=").concat(activityMode));
113
+ };
114
+
115
+ /**
116
+ * 查询当前用户是否有活跃通知
117
+ * @returns {Promise<Response>}
118
+ */
119
+ const hasNotify = () => {
120
+ return (0, _net.get)("".concat((0, _ctx.getHost)(), "/api/authority/service/signin/notify/has"));
121
+ };
122
+
123
+ /**
124
+ * 关闭单条通知
125
+ * @param id 通知ID
126
+ * @returns {Promise<Response>}
127
+ */
128
+ exports.hasNotify = hasNotify;
129
+ const closeNotify = id => {
130
+ return (0, _net.remove)("".concat((0, _ctx.getHost)(), "/api/authority/service/signin/notify?id=").concat(id));
131
+ };
132
+ exports.closeNotify = closeNotify;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "uepay-ops2",
3
- "version": "4.0.16-beta",
3
+ "version": "4.0.16-beta.1",
4
4
  "description": "",
5
5
  "main": "index.js",
6
6
  "typings": "index.d.ts",