@kmkf-fe-packages/kmkf-work-order-service-component 2.0.79-beta.63 → 2.0.79-beta.64

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.
@@ -1,5 +1,3 @@
1
1
  import React from 'react';
2
- declare const CustomerServiceToDoList: React.FC<{
3
- onCancel: () => void;
4
- }>;
2
+ declare const CustomerServiceToDoList: React.FC;
5
3
  export default CustomerServiceToDoList;
@@ -1,53 +1,110 @@
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 { Button, Card, Tag, Typography, Badge } from 'antd';
8
- import React, { useMemo, useCallback, useRef } from 'react';
9
- import { useVirtualList } from 'ahooks';
1
+ import { Button, Card, Tag, Typography, Badge, Spin, Empty } from 'antd';
2
+ import React, { useCallback, useRef, useEffect } from 'react';
3
+ import { useInfiniteScroll } from 'ahooks';
10
4
  import { CloseOutlined } from '@ant-design/icons';
5
+ import { useAppDispatch } from "../model/hooks";
6
+ import { nodeWorkOrderPending } from "../model/servers/api";
11
7
  import styles from "./index.module.less";
12
8
  var Title = Typography.Title;
13
- var CustomerServiceToDoList = function CustomerServiceToDoList(props) {
14
- var onCancel = props.onCancel;
9
+ var getTableData = function getTableData(params) {
10
+ return nodeWorkOrderPending(params).then(function (res) {
11
+ var _res$data, _res$data2;
12
+ // console.log('API response:', res?.data);
13
+ return {
14
+ list: (res === null || res === void 0 ? void 0 : (_res$data = res.data) === null || _res$data === void 0 ? void 0 : _res$data.list) || [],
15
+ total: (res === null || res === void 0 ? void 0 : (_res$data2 = res.data) === null || _res$data2 === void 0 ? void 0 : _res$data2.total) || 0
16
+ };
17
+ }).catch(function (error) {
18
+ console.error('API error:', error);
19
+ return {
20
+ list: [],
21
+ total: 0
22
+ };
23
+ });
24
+ };
25
+ var CustomerServiceToDoList = function CustomerServiceToDoList() {
26
+ var _ref, _data$list;
27
+ var dispatch = useAppDispatch();
15
28
  var containerRef = useRef(null);
16
- var wrapperRef = useRef(null);
17
- // 使用 useMemo 缓存模拟数据,避免每次渲染都重新创建
18
- var todoItems = useMemo(function () {
19
- return Array(100).fill(0).map(function (_, index) {
20
- return {
21
- id: index.toString(),
22
- description: 'Lilin有一条 #未发货-超48H 工单需要处理,请及时处理',
23
- timestamp: '2025-07-24 11:05:27',
24
- source: '天猫【花西子官方旗舰店】',
25
- aiAction: 'AI自动建单 - 暂存',
26
- status: 'pending'
27
- };
28
- });
29
- }, []);
30
- var _useVirtualList = useVirtualList(todoItems, {
31
- containerTarget: containerRef,
32
- wrapperTarget: wrapperRef,
33
- itemHeight: 136,
34
- overscan: 10
29
+ var _useInfiniteScroll = useInfiniteScroll(function (d) {
30
+ var page = d ? Math.ceil(d.list.length / 10) + 1 : 1;
31
+ return getTableData({
32
+ pageNo: page,
33
+ pageSize: 10,
34
+ onlyWaitForMe: false,
35
+ onlyCount: false,
36
+ flowTags: ['AI_BUILD']
37
+ });
38
+ }, {
39
+ target: containerRef,
40
+ reloadDeps: [],
41
+ // 添加空的 reloadDeps 避免不必要的重新加载
42
+ isNoMore: function isNoMore(d) {
43
+ // 修复判断逻辑:检查当前页数据是否已经达到总数
44
+ if (!d || !d.list || !d.total) return false;
45
+ return d.list.length >= d.total;
46
+ }
35
47
  }),
36
- _useVirtualList2 = _slicedToArray(_useVirtualList, 1),
37
- list = _useVirtualList2[0];
48
+ data = _useInfiniteScroll.data,
49
+ loading = _useInfiniteScroll.loading,
50
+ reload = _useInfiniteScroll.reload,
51
+ noMore = _useInfiniteScroll.noMore;
52
+ console.log('data', data, noMore);
53
+ var handleProcess = useCallback(function (item) {
54
+ // console.log('处理工单:', item);
38
55
 
39
- // 使用 useCallback 缓存处理函数,避免每次渲染都重新创建
40
- var handleProcess = useCallback(function (itemId) {
41
- console.log('处理工单:', itemId);
42
- // 这里可以添加处理逻辑
56
+ dispatch({
57
+ type: 'customizeWorkOrder/setCurrentCustomizeRecord',
58
+ payload: {
59
+ flowTemplateName: item === null || item === void 0 ? void 0 : item.flowTemplateKey
60
+ }
61
+ });
62
+ dispatch({
63
+ type: 'customizeWorkOrder/setLogicFlowId',
64
+ payload: item.flowTemplateKey
65
+ });
66
+ dispatch({
67
+ type: 'customizeWorkOrder/setFlowWorkOrderId',
68
+ payload: item.flowWorkOrderId
69
+ });
70
+ dispatch({
71
+ type: 'customizeWorkOrder/setFormModalVisible',
72
+ payload: true
73
+ });
43
74
  }, []);
44
-
45
- // 渲染单个待办项
46
- var renderTodoItem = useCallback(function (_ref) {
47
- var index = _ref.index,
48
- data = _ref.data;
75
+ var onCancel = function onCancel() {
76
+ dispatch({
77
+ type: 'customizeWorkOrder/setCustomerServiceToDoListOpen',
78
+ payload: false
79
+ });
80
+ };
81
+ useEffect(function () {
82
+ reload();
83
+ }, []);
84
+ return /*#__PURE__*/React.createElement("div", {
85
+ className: styles.container,
86
+ onClick: onCancel
87
+ }, /*#__PURE__*/React.createElement("div", {
88
+ className: styles.todoSection,
89
+ onClick: function onClick(e) {
90
+ return e.stopPropagation();
91
+ }
92
+ }, /*#__PURE__*/React.createElement("div", {
93
+ className: styles.todoTabs
94
+ }, /*#__PURE__*/React.createElement(Badge, {
95
+ count: data === null || data === void 0 ? void 0 : data.total
96
+ }, /*#__PURE__*/React.createElement("div", {
97
+ className: styles.todoTab
98
+ }, "\u5BA2\u670D\u5F85\u529E")), /*#__PURE__*/React.createElement(CloseOutlined, {
99
+ onClick: onCancel
100
+ })), /*#__PURE__*/React.createElement("main", {
101
+ className: styles.todoList,
102
+ ref: containerRef
103
+ }, ((data === null || data === void 0 ? void 0 : data.list) || []).length > 0 ? /*#__PURE__*/React.createElement(Spin, {
104
+ spinning: loading
105
+ }, (_ref = (data === null || data === void 0 ? void 0 : data.list) || []) === null || _ref === void 0 ? void 0 : _ref.map(function (item) {
49
106
  return /*#__PURE__*/React.createElement(Card, {
50
- key: data.id,
107
+ key: item.id,
51
108
  className: "".concat(styles.todoItem),
52
109
  bodyStyle: {
53
110
  padding: '12px 16px'
@@ -60,47 +117,31 @@ var CustomerServiceToDoList = function CustomerServiceToDoList(props) {
60
117
  className: styles.todoDescription
61
118
  }, /*#__PURE__*/React.createElement(Title, {
62
119
  level: 5
63
- }, data.description)), /*#__PURE__*/React.createElement("div", {
120
+ }, item.scene, " \u5DE5\u5355\u9700\u8981\u5904\u7406\uFF0C\u8BF7\u53CA\u65F6\u5904\u7406")), /*#__PURE__*/React.createElement("div", {
64
121
  className: styles.todoMeta
65
122
  }, /*#__PURE__*/React.createElement("span", {
66
123
  className: styles.timestamp
67
- }, data.timestamp))), /*#__PURE__*/React.createElement("div", {
124
+ }, item.created))), /*#__PURE__*/React.createElement("div", {
68
125
  className: styles.todoAction
69
126
  }, /*#__PURE__*/React.createElement("div", null, /*#__PURE__*/React.createElement("span", {
70
127
  className: styles.source
71
- }, data.source), /*#__PURE__*/React.createElement(Tag, {
128
+ }, item.platformTypeName, "\u3010", item.shopName, "\u3011"), /*#__PURE__*/React.createElement(Tag, {
72
129
  color: "blue",
73
130
  className: styles.aiAction
74
- }, data.aiAction)), /*#__PURE__*/React.createElement(Button, {
131
+ }, "AI\u81EA\u52A8\u5EFA\u5355-".concat(item.currentWorkOrderStatus))), /*#__PURE__*/React.createElement(Button, {
75
132
  type: "primary",
76
133
  size: "small",
77
134
  ghost: true,
78
135
  onClick: function onClick() {
79
- return handleProcess(data.id);
136
+ return handleProcess(item);
80
137
  }
81
138
  }, "\u53BB\u5904\u7406"))));
82
- }, [handleProcess]);
83
- return /*#__PURE__*/React.createElement("div", {
84
- className: styles.container,
85
- onClick: onCancel
86
- }, /*#__PURE__*/React.createElement("div", {
87
- className: styles.todoSection,
88
- onClick: function onClick(e) {
89
- return e.stopPropagation();
90
- }
91
- }, /*#__PURE__*/React.createElement("div", {
92
- className: styles.todoTabs
93
- }, /*#__PURE__*/React.createElement(Badge, {
94
- count: 100
95
- }, /*#__PURE__*/React.createElement("div", {
96
- className: styles.todoTab
97
- }, "\u5BA2\u670D\u5F85\u529E")), /*#__PURE__*/React.createElement(CloseOutlined, {
98
- onClick: onCancel
99
- })), /*#__PURE__*/React.createElement("div", {
100
- className: styles.todoList,
101
- ref: containerRef
102
- }, /*#__PURE__*/React.createElement("div", {
103
- ref: wrapperRef
104
- }, list.map(renderTodoItem)))));
139
+ })) : /*#__PURE__*/React.createElement("div", {
140
+ className: styles.todoEmpty
141
+ }, /*#__PURE__*/React.createElement(Empty, {
142
+ description: "\u6682\u65E0\u6570\u636E"
143
+ })), noMore && data !== null && data !== void 0 && (_data$list = data.list) !== null && _data$list !== void 0 && _data$list.length ? /*#__PURE__*/React.createElement("p", {
144
+ className: styles.todoNoMore
145
+ }, "\u6CA1\u6709\u66F4\u591A\u6570\u636E\u4E86") : null)));
105
146
  };
106
147
  export default CustomerServiceToDoList;
@@ -38,10 +38,9 @@
38
38
  height: calc(100% - 50px);
39
39
  overflow-y: auto;
40
40
  background: #f0f0f0;
41
- padding-top: 12px;
41
+ padding-top: 8px;
42
42
  .todoItem {
43
- margin-bottom: 12px;
44
- // border: 1px solid #f0f0f0;
43
+ margin-bottom: 8px;
45
44
  border-radius: 6px;
46
45
  transition: all 0.3s;
47
46
 
@@ -91,6 +90,20 @@
91
90
  }
92
91
  }
93
92
  }
93
+ .todoEmpty {
94
+ display: flex;
95
+ justify-content: center;
96
+ align-items: center;
97
+ height: 100%;
98
+ }
99
+ .todoNoMore {
100
+ display: flex;
101
+ justify-content: center;
102
+ align-items: center;
103
+ height: 32px;
104
+ color: #999;
105
+ font-size: 14px;
106
+ }
94
107
  }
95
108
  }
96
109
 
@@ -1235,7 +1235,6 @@ var FlowTemplateDetail = function FlowTemplateDetail(props) {
1235
1235
  follow: !follow
1236
1236
  }));
1237
1237
  };
1238
- console.log('currentNodeDetail', currentNodeDetail);
1239
1238
  return /*#__PURE__*/React.createElement(Spin, {
1240
1239
  spinning: loading || orderBackLoading || orderBackKmLoading
1241
1240
  }, /*#__PURE__*/React.createElement("div", {
@@ -143,14 +143,10 @@ var CustomizeWorkOrderList = function CustomizeWorkOrderList(_ref4) {
143
143
  _useState6 = _slicedToArray(_useState5, 2),
144
144
  tab = _useState6[0],
145
145
  setTab = _useState6[1];
146
- var _useState7 = useState(false),
146
+ var _useState7 = useState(null),
147
147
  _useState8 = _slicedToArray(_useState7, 2),
148
- customerServiceToDoListOpen = _useState8[0],
149
- setCustomerServiceToDoListOpen = _useState8[1];
150
- var _useState9 = useState(null),
151
- _useState10 = _slicedToArray(_useState9, 2),
152
- searchTemplateDetails = _useState10[0],
153
- setSearchTemplateDetails = _useState10[1];
148
+ searchTemplateDetails = _useState8[0],
149
+ setSearchTemplateDetails = _useState8[1];
154
150
  var allLogicFlowList = useSelector(selectFlowList);
155
151
  var flowTemplateGroupWorkOrderTemplateList = useSelector(selectFlowTemplateGroupWorkOrderTemplateList);
156
152
  var shopList = useAppSelector(function (state) {
@@ -156,6 +156,7 @@ var WorkOrder = function WorkOrder(props) {
156
156
  dispatch(fetchLogicFlowList);
157
157
  dispatch(fetchQueryCurrentCompanyUser());
158
158
  dispatch(showPayment);
159
+ //工单通AI智能工单功能,监听消息
159
160
  if (platform === PlatForm.XIAOZHI) {
160
161
  xzSDK.receiveTabMsg(dispatch);
161
162
  }
@@ -290,14 +291,7 @@ var WorkOrder = function WorkOrder(props) {
290
291
  onOpenWangWang: onOpenWangWang
291
292
  }), tabActive === 'wdt' && /*#__PURE__*/React.createElement(WdtTradeList, {
292
293
  version: ((_companyUserConfig2 = companyUserConfig) === null || _companyUserConfig2 === void 0 ? void 0 : (_companyUserConfig2$p = _companyUserConfig2.plugins) === null || _companyUserConfig2$p === void 0 ? void 0 : (_companyUserConfig2$p2 = _companyUserConfig2$p.wdt) === null || _companyUserConfig2$p2 === void 0 ? void 0 : _companyUserConfig2$p2.version) || ''
293
- }), customerServiceToDoListOpen && /*#__PURE__*/React.createElement(CustomerServiceToDoList, {
294
- onCancel: function onCancel() {
295
- return dispatch({
296
- type: 'customizeWorkOrder/setCustomerServiceToDoListOpen',
297
- payload: false
298
- });
299
- }
300
- }))), !isEmpower && platform !== PlatForm.WEB && Reminder({
294
+ }), customerServiceToDoListOpen && /*#__PURE__*/React.createElement(CustomerServiceToDoList, null))), !isEmpower && platform !== PlatForm.WEB && Reminder({
301
295
  callback: onEmpowerCallback
302
296
  }));
303
297
  };
@@ -264,50 +264,7 @@ var sendMsgToTab = function sendMsgToTab(dispatch) {
264
264
  dispatch({
265
265
  type: 'customizeWorkOrder/setCurrentCustomizeRecord',
266
266
  payload: {
267
- buyerOpenUid: 'AAHrWpRuABm1B4vZaNGziI0J',
268
- companyKey: 'SZF4ZGWZSNW6PYXMCIFEWBXT',
269
- completedTime: 1755069133702,
270
- created: 1755065338985,
271
- creator: '儿茶',
272
- creatorId: 'SZF4ZGWZSNW6PYXMCIFEWBXT',
273
- currentNodeId: 'FN00432493932429004800',
274
- currentNodeName: '步骤名称2',
275
- flowRecordList: [{
276
- companyKey: 'SZF4ZGWZSNW6PYXMCIFEWBXT',
277
- created: 1755069133597,
278
- deleted: false,
279
- enterCount: 1,
280
- eventNodeType: 'WORK_ORDER_SUBMIT',
281
- flowTemplateId: '676a22dc6291102e2710d0ac',
282
- flowTemplateKey: 'FTU00432476731687092224',
283
- flowVersion: 2,
284
- flowWorkOrderId: 'FW00516616362058788864',
285
- id: 42323,
286
- modified: 1755069133597,
287
- nodeId: 'FN00432476842978754560',
288
- nodeIsAuto: false,
289
- nodeName: '步骤名称1',
290
- nodeType: 'START_NODE',
291
- operateType: 'PASS',
292
- operateTypeDesc: '审核通过',
293
- operator: '儿茶',
294
- operatorId: 'SZF4ZGWZSNW6PYXMCIFEWBXT',
295
- relationBusinessId: 'FNW00516616360408641536'
296
- }],
297
- flowStatus: 'COMPLETED',
298
- flowTags: [],
299
- flowTemplateId: '676a22dc6291102e2710d0ac',
300
- flowTemplateKey: 'FTU00432476731687092224',
301
- flowTemplateName: '会员等级',
302
- flowVersion: 2,
303
- flowWorkOrderId: 'FW00516616362058788864',
304
- markFlag: '',
305
- modified: 1755069133597,
306
- relationBusinessId: '',
307
- shopUniqueKey: 'XX3D53IIDHP76TR7M7XDYP5W',
308
- staffIds: '',
309
- tid: '123',
310
- workOrderList: []
267
+ flowTemplateName: '会员等级'
311
268
  }
312
269
  });
313
270
  dispatch({
@@ -107,3 +107,4 @@ export declare const queryMemberLevel: (data: {
107
107
  }) => Promise<serverProps<Array<string>>>;
108
108
  export declare const queryShopByTid: (data: any) => Promise<any>;
109
109
  export declare const queryTidByOutSid: (data: any) => Promise<any>;
110
+ export declare const nodeWorkOrderPending: (data: any) => Promise<any>;
@@ -609,4 +609,13 @@ export var queryTidByOutSid = function queryTidByOutSid(data) {
609
609
  method: 'post',
610
610
  data: data
611
611
  });
612
+ };
613
+
614
+ //待处理节点工单(客服待办)
615
+ export var nodeWorkOrderPending = function nodeWorkOrderPending(data) {
616
+ return request({
617
+ url: '/qy/flow/workBench/nodeWorkOrder/pending',
618
+ method: 'post',
619
+ data: data
620
+ });
612
621
  };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@kmkf-fe-packages/kmkf-work-order-service-component",
3
- "version": "2.0.79-beta.63",
3
+ "version": "2.0.79-beta.64",
4
4
  "module": "dist/esm/index.js",
5
5
  "typings": "dist/esm/index.d.ts",
6
6
  "files": [
@@ -73,7 +73,7 @@
73
73
  "publishConfig": {
74
74
  "access": "public"
75
75
  },
76
- "gitHead": "ef02cfeac672869b23f3c9fa5a64807ed96ef81b",
76
+ "gitHead": "63ce97873ac0cc11fcd44940db73e20a591370c6",
77
77
  "gitHooks": {
78
78
  "pre-commit": "lint-staged"
79
79
  }