@kmkf-fe-packages/kmkf-work-order-service-component 2.2.9 → 2.2.11

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.
Files changed (35) hide show
  1. package/dist/esm/CustomerServiceToDoList/index.d.ts +3 -0
  2. package/dist/esm/CustomerServiceToDoList/index.js +155 -0
  3. package/dist/esm/CustomerServiceToDoList/index.module.less +134 -0
  4. package/dist/esm/FlowTemplateDetailV2/common.js +1 -0
  5. package/dist/esm/FlowTemplateDetailV2/components/FormRender/index.js +313 -228
  6. package/dist/esm/FlowTemplateDetailV2/components/FormRender/onBlur.d.ts +12 -0
  7. package/dist/esm/FlowTemplateDetailV2/components/FormRender/onBlur.js +130 -0
  8. package/dist/esm/FlowTemplateDetailV2/index.js +41 -23
  9. package/dist/esm/FlowTemplateDetailV2/store/reducers.d.ts +2 -0
  10. package/dist/esm/FlowTemplateDetailV2/store/reducers.js +9 -2
  11. package/dist/esm/FlowTemplateDetailV2/store/selector.d.ts +1 -0
  12. package/dist/esm/FlowTemplateDetailV2/store/selector.js +3 -0
  13. package/dist/esm/WorkOrder/components/CustomerServiceToDoCard/index.d.ts +3 -0
  14. package/dist/esm/WorkOrder/components/CustomerServiceToDoCard/index.js +76 -0
  15. package/dist/esm/WorkOrder/components/CustomerServiceToDoCard/index.module.less +20 -0
  16. package/dist/esm/WorkOrder/components/WorkOrderList/components/CustomizeWorkOrderCard/index.js +6 -0
  17. package/dist/esm/WorkOrder/components/WorkOrderList/index.js +7 -2
  18. package/dist/esm/WorkOrder/components/WorkOrderList/index.less +4 -3
  19. package/dist/esm/WorkOrder/index.js +21 -1
  20. package/dist/esm/common/constant.d.ts +5 -0
  21. package/dist/esm/common/constant.js +3 -2
  22. package/dist/esm/common/imgs/ai.png +0 -0
  23. package/dist/esm/common/imgs/notification.png +0 -0
  24. package/dist/esm/common/utils/tools.js +20 -13
  25. package/dist/esm/common/utils/xzSDK.d.ts +2 -0
  26. package/dist/esm/common/utils/xzSDK.js +45 -1
  27. package/dist/esm/index.d.ts +1 -0
  28. package/dist/esm/index.js +1 -0
  29. package/dist/esm/model/customizeWorkOrder/index.d.ts +1 -1
  30. package/dist/esm/model/customizeWorkOrder/index.js +17 -3
  31. package/dist/esm/model/customizeWorkOrder/types.d.ts +2 -0
  32. package/dist/esm/model/flowTemplateDetail/types.d.ts +1 -0
  33. package/dist/esm/model/servers/api.d.ts +1 -0
  34. package/dist/esm/model/servers/api.js +8 -0
  35. package/package.json +5 -5
@@ -0,0 +1,3 @@
1
+ import React from 'react';
2
+ declare const CustomerServiceToDoList: React.FC;
3
+ export default CustomerServiceToDoList;
@@ -0,0 +1,155 @@
1
+ import { Button, Card, Tag, Badge, Spin, Empty } from 'antd';
2
+ import React, { useRef, useEffect } from 'react';
3
+ import { useInfiniteScroll } from 'ahooks';
4
+ import { CloseOutlined } from '@ant-design/icons';
5
+ import { useAppDispatch, useAppSelector } from "../model/hooks";
6
+ import { nodeWorkOrderPending } from "../model/servers/api";
7
+ import moment from 'moment';
8
+ import { setWorkOrderProcessStatus } from "../model/customizeWorkOrder";
9
+ import { WORK_ORDER_STATUS_AI_BUILD } from "../common/constant";
10
+ import styles from "./index.module.less";
11
+ var getTableData = function getTableData(params) {
12
+ return nodeWorkOrderPending(params).then(function (res) {
13
+ var _res$data, _res$data2;
14
+ // console.log('API response:', res?.data);
15
+ return {
16
+ list: (res === null || res === void 0 ? void 0 : (_res$data = res.data) === null || _res$data === void 0 ? void 0 : _res$data.list) || [],
17
+ total: (res === null || res === void 0 ? void 0 : (_res$data2 = res.data) === null || _res$data2 === void 0 ? void 0 : _res$data2.total) || 0
18
+ };
19
+ }).catch(function (error) {
20
+ console.error('API error:', error);
21
+ return {
22
+ list: [],
23
+ total: 0
24
+ };
25
+ });
26
+ };
27
+ var CustomerServiceToDoList = function CustomerServiceToDoList(props) {
28
+ var _ref, _data$list;
29
+ var shopUniqueKey = props.shopUniqueKey;
30
+ var dispatch = useAppDispatch();
31
+ var workOrderProcessStatus = useAppSelector(function (state) {
32
+ var _state$customizeWorkO;
33
+ return (_state$customizeWorkO = state.customizeWorkOrder) === null || _state$customizeWorkO === void 0 ? void 0 : _state$customizeWorkO.workOrderProcessStatus;
34
+ });
35
+ var containerRef = useRef(null);
36
+ var _useInfiniteScroll = useInfiniteScroll(function (d) {
37
+ var page = d ? Math.ceil(d.list.length / 10) + 1 : 1;
38
+ return getTableData({
39
+ pageNo: page,
40
+ pageSize: 10,
41
+ onlyWaitForMe: true,
42
+ onlyCount: false,
43
+ onlyStartNode: true,
44
+ flowTags: ['AI_BUILD'],
45
+ shopUniqueKeyList: [shopUniqueKey]
46
+ });
47
+ }, {
48
+ target: containerRef,
49
+ reloadDeps: [],
50
+ // 添加空的 reloadDeps 避免不必要的重新加载
51
+ isNoMore: function isNoMore(d) {
52
+ var _d$list;
53
+ return (d === null || d === void 0 ? void 0 : d.total) <= (d === null || d === void 0 ? void 0 : (_d$list = d.list) === null || _d$list === void 0 ? void 0 : _d$list.length);
54
+ }
55
+ }),
56
+ data = _useInfiniteScroll.data,
57
+ loading = _useInfiniteScroll.loading,
58
+ reload = _useInfiniteScroll.reload,
59
+ noMore = _useInfiniteScroll.noMore;
60
+ var handleProcess = function handleProcess(item) {
61
+ dispatch({
62
+ type: 'customizeWorkOrder/setCurrentCustomizeRecord',
63
+ payload: {
64
+ flowTemplateName: item === null || item === void 0 ? void 0 : item.flowTemplateName
65
+ }
66
+ });
67
+ dispatch({
68
+ type: 'customizeWorkOrder/setLogicFlowId',
69
+ payload: item.flowTemplateKey
70
+ });
71
+ dispatch({
72
+ type: 'customizeWorkOrder/setFlowWorkOrderId',
73
+ payload: item.flowWorkOrderId
74
+ });
75
+ dispatch({
76
+ type: 'customizeWorkOrder/setFormModalVisible',
77
+ payload: true
78
+ });
79
+ };
80
+ var onCancel = function onCancel() {
81
+ dispatch({
82
+ type: 'customizeWorkOrder/setCustomerServiceToDoListOpen',
83
+ payload: false
84
+ });
85
+ };
86
+ useEffect(function () {
87
+ reload();
88
+ }, []);
89
+ useEffect(function () {
90
+ if (['submit'].includes(workOrderProcessStatus)) {
91
+ reload();
92
+ dispatch(setWorkOrderProcessStatus(''));
93
+ }
94
+ }, [workOrderProcessStatus, dispatch]);
95
+ return /*#__PURE__*/React.createElement("div", {
96
+ className: styles.container,
97
+ onClick: onCancel
98
+ }, /*#__PURE__*/React.createElement("div", {
99
+ className: styles.todoSection,
100
+ onClick: function onClick(e) {
101
+ return e.stopPropagation();
102
+ }
103
+ }, /*#__PURE__*/React.createElement("div", {
104
+ className: styles.todoTabs
105
+ }, /*#__PURE__*/React.createElement(Badge, {
106
+ count: data === null || data === void 0 ? void 0 : data.total
107
+ }, /*#__PURE__*/React.createElement("div", {
108
+ className: styles.todoTab
109
+ }, "\u5BA2\u670D\u5F85\u529E")), /*#__PURE__*/React.createElement(CloseOutlined, {
110
+ onClick: onCancel
111
+ })), /*#__PURE__*/React.createElement("main", {
112
+ className: styles.todoList,
113
+ ref: containerRef
114
+ }, ((data === null || data === void 0 ? void 0 : data.list) || []).length > 0 ? /*#__PURE__*/React.createElement(Spin, {
115
+ spinning: loading
116
+ }, (_ref = (data === null || data === void 0 ? void 0 : data.list) || []) === null || _ref === void 0 ? void 0 : _ref.map(function (item) {
117
+ var _item$jsonMap;
118
+ return /*#__PURE__*/React.createElement(Card, {
119
+ key: item.id,
120
+ className: "".concat(styles.todoItem),
121
+ bodyStyle: {
122
+ padding: '12px 16px'
123
+ }
124
+ }, /*#__PURE__*/React.createElement("div", {
125
+ className: styles.todoContent
126
+ }, /*#__PURE__*/React.createElement("div", {
127
+ className: styles.todoMain
128
+ }, /*#__PURE__*/React.createElement("div", {
129
+ className: styles.todoDescription
130
+ }, item.buyerNick ? "".concat(item.buyerNick, "\u6709\u4E00\u6761") : '', item === null || item === void 0 ? void 0 : (_item$jsonMap = item.jsonMap) === null || _item$jsonMap === void 0 ? void 0 : _item$jsonMap.scene, " \u5DE5\u5355\u9700\u8981\u5904\u7406\uFF0C\u8BF7\u53CA\u65F6\u5904\u7406"), /*#__PURE__*/React.createElement("div", {
131
+ className: styles.todoMeta
132
+ }, /*#__PURE__*/React.createElement("span", {
133
+ className: styles.timestamp
134
+ }, moment(item.created).format('YYYY-MM-DD HH:mm:ss')))), /*#__PURE__*/React.createElement("div", {
135
+ className: styles.todoAction
136
+ }, /*#__PURE__*/React.createElement("div", null, /*#__PURE__*/React.createElement(Tag, {
137
+ color: "blue",
138
+ className: styles.aiAction
139
+ }, "AI\u81EA\u52A8\u5EFA\u5355-".concat(WORK_ORDER_STATUS_AI_BUILD[item.flowStatus]))), /*#__PURE__*/React.createElement(Button, {
140
+ type: "primary",
141
+ size: "small",
142
+ ghost: true,
143
+ onClick: function onClick() {
144
+ return handleProcess(item);
145
+ }
146
+ }, "\u53BB\u5904\u7406"))));
147
+ })) : /*#__PURE__*/React.createElement("div", {
148
+ className: styles.todoEmpty
149
+ }, /*#__PURE__*/React.createElement(Empty, {
150
+ description: "\u6682\u65E0\u6570\u636E"
151
+ })), noMore && data !== null && data !== void 0 && (_data$list = data.list) !== null && _data$list !== void 0 && _data$list.length ? /*#__PURE__*/React.createElement("p", {
152
+ className: styles.todoNoMore
153
+ }, "\u6CA1\u6709\u66F4\u591A\u6570\u636E\u4E86") : null)));
154
+ };
155
+ export default CustomerServiceToDoList;
@@ -0,0 +1,134 @@
1
+ .container {
2
+ position: fixed;
3
+ top: 0;
4
+ left: 0;
5
+ width: 100%;
6
+ height: 100%;
7
+ background: rgba(0, 0, 0, 0.5);
8
+ z-index: 90;
9
+ }
10
+ .todoTabs {
11
+ display: flex;
12
+ justify-content: space-between;
13
+ align-items: center;
14
+ padding: 0 16px;
15
+ height: 45px;
16
+ .todoTab {
17
+ display: flex;
18
+ align-items: center;
19
+ justify-content: center;
20
+ width: 90px;
21
+ height: 45px;
22
+ font-size: 16px;
23
+ font-weight: 500;
24
+ color: #1890ff;
25
+ border-bottom: 2px solid #1890ff;
26
+ }
27
+ }
28
+ .todoSection {
29
+ position: absolute;
30
+ bottom: 0;
31
+ left: 0;
32
+ right: 0;
33
+ width: 100%;
34
+ height: 80%;
35
+ background: #fff;
36
+
37
+ .todoList {
38
+ height: calc(100% - 50px);
39
+ overflow-y: auto;
40
+ background: #f0f0f0;
41
+ padding-top: 8px;
42
+ .todoItem {
43
+ margin-bottom: 8px;
44
+ border-radius: 6px;
45
+ transition: all 0.3s;
46
+
47
+ &:hover {
48
+ box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1);
49
+ }
50
+
51
+ &.highlighted {
52
+ border: 2px dashed #ff4d4f;
53
+ background: #fff2f0;
54
+ }
55
+
56
+ .todoContent {
57
+ height: 90px;
58
+
59
+ .todoMain {
60
+ flex: 1;
61
+
62
+ .todoDescription {
63
+ display: -webkit-box;
64
+ -webkit-box-orient: vertical;
65
+ -webkit-line-clamp: 2;
66
+ overflow: hidden;
67
+ text-overflow: ellipsis;
68
+ white-space: normal;
69
+ height: 48px;
70
+ font-size: 14px;
71
+ font-weight: 500;
72
+ }
73
+
74
+ .todoMeta {
75
+ display: flex;
76
+ align-items: center;
77
+ gap: 12px;
78
+ flex-wrap: wrap;
79
+
80
+ .timestamp {
81
+ font-size: 12px;
82
+ color: #999;
83
+ }
84
+
85
+ .source {
86
+ font-size: 12px;
87
+ color: #666;
88
+ background: #f5f5f5;
89
+ padding: 2px 6px;
90
+ border-radius: 3px;
91
+ }
92
+
93
+ .aiAction {
94
+ font-size: 11px;
95
+ margin: 0;
96
+ }
97
+ }
98
+ }
99
+ }
100
+ }
101
+ .todoEmpty {
102
+ display: flex;
103
+ justify-content: center;
104
+ align-items: center;
105
+ height: 100%;
106
+ }
107
+ .todoNoMore {
108
+ display: flex;
109
+ justify-content: center;
110
+ align-items: center;
111
+ height: 32px;
112
+ color: #999;
113
+ font-size: 14px;
114
+ }
115
+ }
116
+ }
117
+
118
+ // 响应式设计
119
+ @media (max-width: 768px) {
120
+ .filterOptions {
121
+ gap: 8px;
122
+ }
123
+
124
+ .todoContent {
125
+ flex-direction: column;
126
+ gap: 12px;
127
+
128
+ .todoAction {
129
+ width: 100%;
130
+ display: flex;
131
+ justify-content: space-between;
132
+ }
133
+ }
134
+ }
@@ -24,6 +24,7 @@ export var getFlowOperate = {
24
24
  MODIFY_WORK_ORDER: '修改',
25
25
  WITHDRAW: '撤回',
26
26
  REMINDER: '催单',
27
+ AI_BUILD: 'AI自动建单',
27
28
  CANCEL_REMINDER: '取消催单',
28
29
  AUTO_TASK_RETRY: '自动任务重试'
29
30
  };