Commit 2505974c47062ab1bddae81fa8ccb92a577d8cde
1 parent
f7393b09
feat: update
Showing
11 changed files
with
402 additions
and
139 deletions
src/components/ButtomConfirm/index.tsx
1 | import { Button, Popconfirm } from 'antd'; | 1 | import { Button, Popconfirm } from 'antd'; |
2 | +import { TooltipPlacement } from 'antd/lib/tooltip'; | ||
2 | 3 | ||
3 | const ButtonConfirm = ({ | 4 | const ButtonConfirm = ({ |
4 | title, | 5 | title, |
@@ -6,16 +7,18 @@ const ButtonConfirm = ({ | @@ -6,16 +7,18 @@ const ButtonConfirm = ({ | ||
6 | text, | 7 | text, |
7 | className, | 8 | className, |
8 | onConfirm, | 9 | onConfirm, |
10 | + placement, | ||
9 | }: { | 11 | }: { |
10 | title: string; | 12 | title: string; |
11 | text: string; | 13 | text: string; |
12 | description?: string; | 14 | description?: string; |
13 | className?: string; | 15 | className?: string; |
14 | onConfirm?: () => void; | 16 | onConfirm?: () => void; |
17 | + placement?: TooltipPlacement; | ||
15 | }) => { | 18 | }) => { |
16 | return ( | 19 | return ( |
17 | <Popconfirm | 20 | <Popconfirm |
18 | - placement="topLeft" | 21 | + placement={placement ? placement : 'topLeft'} |
19 | title={title} | 22 | title={title} |
20 | description={description} | 23 | description={description} |
21 | onConfirm={onConfirm} | 24 | onConfirm={onConfirm} |
src/pages/Order/components/ApplyForInvoicingModal.tsx
1 | import { RESPONSE_CODE } from '@/constants/enum'; | 1 | import { RESPONSE_CODE } from '@/constants/enum'; |
2 | import { postServiceOrderApplyInvoicing } from '@/services'; | 2 | import { postServiceOrderApplyInvoicing } from '@/services'; |
3 | -import { FloatAdd, enumToSelect, getAliYunOSSFileNameFromUrl } from '@/utils'; | 3 | +import { enumToSelect, getAliYunOSSFileNameFromUrl } from '@/utils'; |
4 | import { | 4 | import { |
5 | ModalForm, | 5 | ModalForm, |
6 | ProFormDatePicker, | 6 | ProFormDatePicker, |
@@ -16,13 +16,13 @@ export default ({ | @@ -16,13 +16,13 @@ export default ({ | ||
16 | isEdit, | 16 | isEdit, |
17 | subOrders, | 17 | subOrders, |
18 | isMainOrder, | 18 | isMainOrder, |
19 | + totalPayment, | ||
19 | onClose, | 20 | onClose, |
20 | }) => { | 21 | }) => { |
21 | const [isUrgent, setIsUrgent] = useState(''); | 22 | const [isUrgent, setIsUrgent] = useState(''); |
22 | - let sumPrice = 0; | 23 | + let sumPrice = totalPayment; |
23 | 24 | ||
24 | let ids = subOrders?.map((item) => { | 25 | let ids = subOrders?.map((item) => { |
25 | - sumPrice = FloatAdd(item.subOrderPayment, sumPrice); | ||
26 | return item.id; | 26 | return item.id; |
27 | }); | 27 | }); |
28 | 28 | ||
@@ -180,6 +180,14 @@ export default ({ | @@ -180,6 +180,14 @@ export default ({ | ||
180 | hidden={isUrgent !== 'true'} | 180 | hidden={isUrgent !== 'true'} |
181 | /> | 181 | /> |
182 | 182 | ||
183 | + <ProFormTextArea | ||
184 | + key="invoicingUrgentCause" | ||
185 | + label="加急开票原因" | ||
186 | + name="invoicingUrgentCause" | ||
187 | + rules={[{ required: isUrgent === 'true', message: '加急开票原因' }]} | ||
188 | + hidden={isUrgent !== 'true'} | ||
189 | + /> | ||
190 | + | ||
183 | <ProFormUploadDragger | 191 | <ProFormUploadDragger |
184 | key="2" | 192 | key="2" |
185 | label={ | 193 | label={ |
src/pages/Order/components/CheckModal.tsx
@@ -402,6 +402,9 @@ export default ({ | @@ -402,6 +402,9 @@ export default ({ | ||
402 | if (checkType(CHECK_TYPE.MODIFY_LEADER_AUDIT)) { | 402 | if (checkType(CHECK_TYPE.MODIFY_LEADER_AUDIT)) { |
403 | type = 'modify_leader_audit'; | 403 | type = 'modify_leader_audit'; |
404 | } | 404 | } |
405 | + if (checkType(CHECK_TYPE.URGENT_INVOICE_AUDITING)) { | ||
406 | + type = 'urgent_invoice_audit'; | ||
407 | + } | ||
405 | doCheck({ | 408 | doCheck({ |
406 | pass: false, | 409 | pass: false, |
407 | subOrderIds: subOrderIds, | 410 | subOrderIds: subOrderIds, |
@@ -493,6 +496,9 @@ export default ({ | @@ -493,6 +496,9 @@ export default ({ | ||
493 | if (checkType(CHECK_TYPE.MODIFY_LEADER_AUDIT)) { | 496 | if (checkType(CHECK_TYPE.MODIFY_LEADER_AUDIT)) { |
494 | type = 'modify_leader_audit'; | 497 | type = 'modify_leader_audit'; |
495 | } | 498 | } |
499 | + if (checkType(CHECK_TYPE.URGENT_INVOICE_AUDITING)) { | ||
500 | + type = 'urgent_invoice_audit'; | ||
501 | + } | ||
496 | doCheck({ | 502 | doCheck({ |
497 | pass: true, | 503 | pass: true, |
498 | subOrderIds: subOrderIds, | 504 | subOrderIds: subOrderIds, |
src/pages/Order/components/DeliverModal.tsx
@@ -15,6 +15,7 @@ import { | @@ -15,6 +15,7 @@ import { | ||
15 | import { | 15 | import { |
16 | Button, | 16 | Button, |
17 | Col, | 17 | Col, |
18 | + Flex, | ||
18 | Input, | 19 | Input, |
19 | InputNumber, | 20 | InputNumber, |
20 | Modal, | 21 | Modal, |
@@ -66,16 +67,19 @@ const DeliverModal = ({ | @@ -66,16 +67,19 @@ const DeliverModal = ({ | ||
66 | { | 67 | { |
67 | title: 'ID', | 68 | title: 'ID', |
68 | dataIndex: 'id', | 69 | dataIndex: 'id', |
70 | + width: 120, | ||
69 | render: (_, record) => <Input value={record.id} disabled />, | 71 | render: (_, record) => <Input value={record.id} disabled />, |
70 | }, | 72 | }, |
71 | { | 73 | { |
72 | title: '商品编号', | 74 | title: '商品编号', |
73 | dataIndex: 'productCode', | 75 | dataIndex: 'productCode', |
76 | + width: 120, | ||
74 | render: (_, record) => <Input value={record.productCode} disabled />, | 77 | render: (_, record) => <Input value={record.productCode} disabled />, |
75 | }, | 78 | }, |
76 | { | 79 | { |
77 | title: '商品名称', | 80 | title: '商品名称', |
78 | dataIndex: 'productName', | 81 | dataIndex: 'productName', |
82 | + width: 120, | ||
79 | render: (_, record) => <Input value={record.productName} disabled />, | 83 | render: (_, record) => <Input value={record.productName} disabled />, |
80 | }, | 84 | }, |
81 | { | 85 | { |
@@ -149,7 +153,7 @@ const DeliverModal = ({ | @@ -149,7 +153,7 @@ const DeliverModal = ({ | ||
149 | return ( | 153 | return ( |
150 | <Modal | 154 | <Modal |
151 | open | 155 | open |
152 | - width={900} | 156 | + width={1000} |
153 | title={isSendProduct ? '发货' : '修改发货信息'} | 157 | title={isSendProduct ? '发货' : '修改发货信息'} |
154 | onOk={async () => { | 158 | onOk={async () => { |
155 | //请求体封装 | 159 | //请求体封装 |
@@ -202,7 +206,13 @@ const DeliverModal = ({ | @@ -202,7 +206,13 @@ const DeliverModal = ({ | ||
202 | setVisible(false); | 206 | setVisible(false); |
203 | }} | 207 | }} |
204 | > | 208 | > |
205 | - <strong>将物流方式和物流单号更新到下方所有订单</strong> | 209 | + <Flex vertical> |
210 | + <strong>将物流方式和物流单号更新到下方所有订单</strong> | ||
211 | + <span className="text-[red] py-1"> | ||
212 | + 选择【其他物流方式】时,需要将对应的物流方式填写在备注中。例如:如果发圆通快递,系统上没有这个选项,就需要选【其他物流方式】,然后把“圆通快递”填在备注上。 | ||
213 | + </span> | ||
214 | + </Flex> | ||
215 | + | ||
206 | <ProForm | 216 | <ProForm |
207 | layout="inline" | 217 | layout="inline" |
208 | submitter={false} | 218 | submitter={false} |
src/pages/Order/components/MessageListDrawer.tsx
1 | +import ButtonConfirm from '@/components/ButtomConfirm'; | ||
1 | import { RESPONSE_CODE } from '@/constants/enum'; | 2 | import { RESPONSE_CODE } from '@/constants/enum'; |
2 | import { | 3 | import { |
3 | postOrderErpMessageQueryMyMessage, | 4 | postOrderErpMessageQueryMyMessage, |
4 | postOrderErpMessageRead, | 5 | postOrderErpMessageRead, |
6 | + postOrderErpMessageReadAll, | ||
5 | } from '@/services'; | 7 | } from '@/services'; |
6 | import { formatDateTime, getUserInfo } from '@/utils'; | 8 | import { formatDateTime, getUserInfo } from '@/utils'; |
7 | import { UserOutlined } from '@ant-design/icons'; | 9 | import { UserOutlined } from '@ant-design/icons'; |
@@ -25,7 +27,7 @@ export default ({ setVisible }) => { | @@ -25,7 +27,7 @@ export default ({ setVisible }) => { | ||
25 | const [loading, setLoading] = useState(false); | 27 | const [loading, setLoading] = useState(false); |
26 | const [initLoading, setInitLoading] = useState(true); | 28 | const [initLoading, setInitLoading] = useState(true); |
27 | const [onlyUnread, setOnlyUnread] = useState(false); | 29 | const [onlyUnread, setOnlyUnread] = useState(false); |
28 | - const [unreadNumList, setUnreadNumList] = useState<any[]>([]); //消息未读标识 | 30 | + const [readFlagList, setReadFlagList] = useState<any[]>([]); //消息未读标识 |
29 | 31 | ||
30 | /** | 32 | /** |
31 | * 获取消息列表 | 33 | * 获取消息列表 |
@@ -36,7 +38,7 @@ export default ({ setVisible }) => { | @@ -36,7 +38,7 @@ export default ({ setVisible }) => { | ||
36 | data: { | 38 | data: { |
37 | username: userInfo.username, | 39 | username: userInfo.username, |
38 | current: current, | 40 | current: current, |
39 | - isReaded: onlyUnread, | 41 | + isReaded: onlyUnread ? onlyUnread : null, |
40 | }, | 42 | }, |
41 | }).finally(() => { | 43 | }).finally(() => { |
42 | setLoading(false); | 44 | setLoading(false); |
@@ -44,9 +46,10 @@ export default ({ setVisible }) => { | @@ -44,9 +46,10 @@ export default ({ setVisible }) => { | ||
44 | if (res && res.result === RESPONSE_CODE.SUCCESS) { | 46 | if (res && res.result === RESPONSE_CODE.SUCCESS) { |
45 | setMessageListData([...messageListData, ...res?.data?.data]); | 47 | setMessageListData([...messageListData, ...res?.data?.data]); |
46 | let reqReadNumList = res?.data?.data?.map((item: any) => { | 48 | let reqReadNumList = res?.data?.data?.map((item: any) => { |
47 | - return item.unreadNum; | 49 | + return item.isReaded; |
48 | }); | 50 | }); |
49 | - setUnreadNumList([...unreadNumList, ...reqReadNumList]); | 51 | + |
52 | + setReadFlagList([...readFlagList, ...reqReadNumList]); | ||
50 | setTotal(res?.data?.total); | 53 | setTotal(res?.data?.total); |
51 | } | 54 | } |
52 | } | 55 | } |
@@ -65,7 +68,7 @@ export default ({ setVisible }) => { | @@ -65,7 +68,7 @@ export default ({ setVisible }) => { | ||
65 | setOnlyUnread(!onlyUnread); | 68 | setOnlyUnread(!onlyUnread); |
66 | setCurrent(1); | 69 | setCurrent(1); |
67 | setMessageListData([]); | 70 | setMessageListData([]); |
68 | - setUnreadNumList([]); | 71 | + setReadFlagList([]); |
69 | } | 72 | } |
70 | 73 | ||
71 | /** | 74 | /** |
@@ -84,6 +87,18 @@ export default ({ setVisible }) => { | @@ -84,6 +87,18 @@ export default ({ setVisible }) => { | ||
84 | return false; | 87 | return false; |
85 | } | 88 | } |
86 | 89 | ||
90 | + /** | ||
91 | + * 全部标记为已读 | ||
92 | + */ | ||
93 | + async function readAll() { | ||
94 | + let res = await postOrderErpMessageReadAll(); | ||
95 | + if (res && res.result === RESPONSE_CODE.SUCCESS) { | ||
96 | + message.success(res.message); | ||
97 | + let newReadFlagList = readFlagList.map(() => true); | ||
98 | + setReadFlagList(newReadFlagList); | ||
99 | + } | ||
100 | + } | ||
101 | + | ||
87 | const loadMore = | 102 | const loadMore = |
88 | !initLoading && !loading && messageListData.length < total ? ( | 103 | !initLoading && !loading && messageListData.length < total ? ( |
89 | <div | 104 | <div |
@@ -102,7 +117,7 @@ export default ({ setVisible }) => { | @@ -102,7 +117,7 @@ export default ({ setVisible }) => { | ||
102 | 加载更多 | 117 | 加载更多 |
103 | </Button> | 118 | </Button> |
104 | </div> | 119 | </div> |
105 | - ) : messageListData.length >= total ? ( | 120 | + ) : messageListData.length > 0 && messageListData.length >= total ? ( |
106 | <span>没有更多消息了</span> | 121 | <span>没有更多消息了</span> |
107 | ) : null; | 122 | ) : null; |
108 | 123 | ||
@@ -130,9 +145,13 @@ export default ({ setVisible }) => { | @@ -130,9 +145,13 @@ export default ({ setVisible }) => { | ||
130 | </Checkbox> | 145 | </Checkbox> |
131 | </div> | 146 | </div> |
132 | 147 | ||
133 | - <Button className="p-0" type="link"> | ||
134 | - 全部标为已读 | ||
135 | - </Button> | 148 | + <ButtonConfirm |
149 | + title={'是否全部标记为已读?'} | ||
150 | + text={'全部标记为已读'} | ||
151 | + className="p-0" | ||
152 | + onConfirm={readAll} | ||
153 | + placement="bottomLeft" | ||
154 | + /> | ||
136 | </Flex> | 155 | </Flex> |
137 | 156 | ||
138 | <List | 157 | <List |
@@ -145,7 +164,7 @@ export default ({ setVisible }) => { | @@ -145,7 +164,7 @@ export default ({ setVisible }) => { | ||
145 | <List.Item key={item.id}> | 164 | <List.Item key={item.id}> |
146 | <List.Item.Meta | 165 | <List.Item.Meta |
147 | avatar={ | 166 | avatar={ |
148 | - <Badge dot={unreadNumList[index] > 0}> | 167 | + <Badge dot={!readFlagList[index]}> |
149 | <Avatar shape="square" icon={<UserOutlined />} /> | 168 | <Avatar shape="square" icon={<UserOutlined />} /> |
150 | </Badge> | 169 | </Badge> |
151 | } | 170 | } |
@@ -156,11 +175,11 @@ export default ({ setVisible }) => { | @@ -156,11 +175,11 @@ export default ({ setVisible }) => { | ||
156 | onClick={async () => { | 175 | onClick={async () => { |
157 | toOrderList(item.mainOrderId); | 176 | toOrderList(item.mainOrderId); |
158 | 177 | ||
159 | - let readSuccess = await read([item.id]); | 178 | + let readSuccess = await read([item.mesUsrRelId]); |
160 | if (readSuccess) { | 179 | if (readSuccess) { |
161 | - let newUnreadNumList = [...unreadNumList]; | ||
162 | - newUnreadNumList[index] = 0; | ||
163 | - setUnreadNumList([...newUnreadNumList]); | 180 | + let newUnreadNumList = [...readFlagList]; |
181 | + newUnreadNumList[index] = true; | ||
182 | + setReadFlagList([...newUnreadNumList]); | ||
164 | } | 183 | } |
165 | }} | 184 | }} |
166 | > | 185 | > |
src/pages/Order/components/ModifiedDiffModal.tsx
1 | import { postServiceOrderModifiedDiff } from '@/services'; | 1 | import { postServiceOrderModifiedDiff } from '@/services'; |
2 | -import { enumValueToLabel, getAliYunOSSFileNameFromUrl } from '@/utils'; | 2 | +import { |
3 | + enumValueToLabel, | ||
4 | + getAliYunOSSFileNameFromUrl, | ||
5 | + getUserInfo, | ||
6 | +} from '@/utils'; | ||
3 | import { getReceivingCompanyOptions } from '@/utils/order'; | 7 | import { getReceivingCompanyOptions } from '@/utils/order'; |
4 | import { Button, Divider, Modal, Space, Table, TableProps } from 'antd'; | 8 | import { Button, Divider, Modal, Space, Table, TableProps } from 'antd'; |
5 | import Base64 from 'base-64'; | 9 | import Base64 from 'base-64'; |
@@ -12,6 +16,7 @@ import { | @@ -12,6 +16,7 @@ import { | ||
12 | import '../table.less'; | 16 | import '../table.less'; |
13 | 17 | ||
14 | export default ({ setVisible, subOrders, mainOrder, onClose }) => { | 18 | export default ({ setVisible, subOrders, mainOrder, onClose }) => { |
19 | + const userInfo = getUserInfo(); | ||
15 | let subIds = subOrders?.map((item: any) => { | 20 | let subIds = subOrders?.map((item: any) => { |
16 | return item.id; | 21 | return item.id; |
17 | }); | 22 | }); |
@@ -21,6 +26,31 @@ export default ({ setVisible, subOrders, mainOrder, onClose }) => { | @@ -21,6 +26,31 @@ export default ({ setVisible, subOrders, mainOrder, onClose }) => { | ||
21 | const [subOrderDiffs, setSubOrderDiffs] = useState([]); | 26 | const [subOrderDiffs, setSubOrderDiffs] = useState([]); |
22 | const [mainOrderDiffs, setMainOrderDiffs] = useState([]); | 27 | const [mainOrderDiffs, setMainOrderDiffs] = useState([]); |
23 | 28 | ||
29 | + function isSupplierUnvisibleField(field: any) { | ||
30 | + //主订单字段 | ||
31 | + let unvisibleFields = [ | ||
32 | + 'receivingCompany', | ||
33 | + 'invoiceIdentificationNumber', | ||
34 | + 'bankAccountNumber', | ||
35 | + 'bank', | ||
36 | + 'totalPayment', | ||
37 | + 'institution', | ||
38 | + 'institutionContactName', | ||
39 | + ]; | ||
40 | + //子订单字段 | ||
41 | + unvisibleFields.push( | ||
42 | + ...[ | ||
43 | + 'listAnnex', | ||
44 | + 'shippingWarehouse', | ||
45 | + 'productBelongBusiness', | ||
46 | + 'subOrderPayment', | ||
47 | + 'productPrice', | ||
48 | + ], | ||
49 | + ); | ||
50 | + | ||
51 | + return userInfo?.username === '首能' && unvisibleFields.includes(field); | ||
52 | + } | ||
53 | + | ||
24 | async function loadData() { | 54 | async function loadData() { |
25 | let res = await postServiceOrderModifiedDiff({ | 55 | let res = await postServiceOrderModifiedDiff({ |
26 | data: { | 56 | data: { |
@@ -28,8 +58,11 @@ export default ({ setVisible, subOrders, mainOrder, onClose }) => { | @@ -28,8 +58,11 @@ export default ({ setVisible, subOrders, mainOrder, onClose }) => { | ||
28 | mainOrderId: mainId, | 58 | mainOrderId: mainId, |
29 | }, | 59 | }, |
30 | }); | 60 | }); |
31 | - setSubOrderDiffs(res?.data?.subOrderDiffs); | ||
32 | - setMainOrderDiffs(res?.data?.mainOrderDiffs); | 61 | + let subOrderDiffs = res?.data?.subOrderDiffs; |
62 | + let mainOrderDiffs = res?.data?.mainOrderDiffs; | ||
63 | + | ||
64 | + setSubOrderDiffs(subOrderDiffs); | ||
65 | + setMainOrderDiffs(mainOrderDiffs); | ||
33 | } | 66 | } |
34 | 67 | ||
35 | useEffect(() => { | 68 | useEffect(() => { |
@@ -158,12 +191,15 @@ export default ({ setVisible, subOrders, mainOrder, onClose }) => { | @@ -158,12 +191,15 @@ export default ({ setVisible, subOrders, mainOrder, onClose }) => { | ||
158 | for (let field of visibleFields) { | 191 | for (let field of visibleFields) { |
159 | let filedKey = field[0]; | 192 | let filedKey = field[0]; |
160 | let filedName = field[1]; | 193 | let filedName = field[1]; |
161 | - tableData.push({ | ||
162 | - fieldName: filedName, | ||
163 | - oldValue: oldDatas[filedKey], | ||
164 | - newValue: curDatas[filedKey], | ||
165 | - isDiff: diffFiledNames?.includes(filedKey), | ||
166 | - }); | 194 | + |
195 | + if (!isSupplierUnvisibleField(filedKey)) { | ||
196 | + tableData.push({ | ||
197 | + fieldName: filedName, | ||
198 | + oldValue: oldDatas[filedKey], | ||
199 | + newValue: curDatas[filedKey], | ||
200 | + isDiff: diffFiledNames?.includes(filedKey), | ||
201 | + }); | ||
202 | + } | ||
167 | } | 203 | } |
168 | return ( | 204 | return ( |
169 | <> | 205 | <> |
@@ -207,12 +243,15 @@ export default ({ setVisible, subOrders, mainOrder, onClose }) => { | @@ -207,12 +243,15 @@ export default ({ setVisible, subOrders, mainOrder, onClose }) => { | ||
207 | for (let field of visibleFields) { | 243 | for (let field of visibleFields) { |
208 | let filedKey = field[0]; | 244 | let filedKey = field[0]; |
209 | let filedName = field[1]; | 245 | let filedName = field[1]; |
210 | - tableData.push({ | ||
211 | - fieldName: filedName, | ||
212 | - oldValue: oldDatas[filedKey], | ||
213 | - newValue: curDatas[filedKey], | ||
214 | - isDiff: diffFiledNames?.includes(filedKey), | ||
215 | - }); | 246 | + |
247 | + if (!isSupplierUnvisibleField(filedKey)) { | ||
248 | + tableData.push({ | ||
249 | + fieldName: filedName, | ||
250 | + oldValue: oldDatas[filedKey], | ||
251 | + newValue: curDatas[filedKey], | ||
252 | + isDiff: diffFiledNames?.includes(filedKey), | ||
253 | + }); | ||
254 | + } | ||
216 | } | 255 | } |
217 | return ( | 256 | return ( |
218 | <Table | 257 | <Table |
src/pages/Order/constant.ts
1 | import { postServiceOrderQueryCustomerInformation } from '@/services'; | 1 | import { postServiceOrderQueryCustomerInformation } from '@/services'; |
2 | -import { enumToProTableEnumValue } from '@/utils'; | 2 | +import { enumToProTableEnumValue, getUserInfo } from '@/utils'; |
3 | import { getReceivingCompanyOptions } from '@/utils/order'; | 3 | import { getReceivingCompanyOptions } from '@/utils/order'; |
4 | export const COMFIR_RECEIPT_IMAGES_NUMBER = 3; | 4 | export const COMFIR_RECEIPT_IMAGES_NUMBER = 3; |
5 | 5 | ||
@@ -99,6 +99,7 @@ export const CHECK_TYPE = { | @@ -99,6 +99,7 @@ export const CHECK_TYPE = { | ||
99 | WAITING_FOR_POST_AUDIT: 'WAITING_FOR_POST_AUDIT', | 99 | WAITING_FOR_POST_AUDIT: 'WAITING_FOR_POST_AUDIT', |
100 | NODE_OPERATING_AUDIT: 'NODE_OPERATING_AUDIT', | 100 | NODE_OPERATING_AUDIT: 'NODE_OPERATING_AUDIT', |
101 | MODIFY_LEADER_AUDIT: 'MODIFY_LEADER_AUDIT', | 101 | MODIFY_LEADER_AUDIT: 'MODIFY_LEADER_AUDIT', |
102 | + URGENT_INVOICE_AUDITING: 'URGENT_INVOICE_AUDITING', | ||
102 | }; | 103 | }; |
103 | 104 | ||
104 | /** | 105 | /** |
@@ -157,7 +158,8 @@ export const ORDER_STATUS_OPTIONS = { | @@ -157,7 +158,8 @@ export const ORDER_STATUS_OPTIONS = { | ||
157 | PROCURE_UN_PROCESS: '采购待审核', | 158 | PROCURE_UN_PROCESS: '采购待审核', |
158 | PROCURE_PROCESS: '采购已审核', | 159 | PROCURE_PROCESS: '采购已审核', |
159 | PROCURE_PROCESS_FOR_MINE: '采购待打印', | 160 | PROCURE_PROCESS_FOR_MINE: '采购待打印', |
160 | - PROCURE_WAIT_SHIP: '采购待发货', | 161 | + PROCURE_WAIT_SHIP: |
162 | + getUserInfo()?.username === '首能' ? '待发货' : '采购待发货', | ||
161 | SUPPLIER_WAIT_SHIP: '供应商待发货', | 163 | SUPPLIER_WAIT_SHIP: '供应商待发货', |
162 | WAIT_SHIP: '待发货', | 164 | WAIT_SHIP: '待发货', |
163 | SHIPPED: '已发货', | 165 | SHIPPED: '已发货', |
@@ -202,6 +204,7 @@ export const FINANCIAL_STATUS_OPTIONS = { | @@ -202,6 +204,7 @@ export const FINANCIAL_STATUS_OPTIONS = { | ||
202 | export const AFTER_INVOICING_STATUS = { | 204 | export const AFTER_INVOICING_STATUS = { |
203 | NOT_YET_INVOICED: '尚未开票', | 205 | NOT_YET_INVOICED: '尚未开票', |
204 | APPLY_FOR_INVOICING: '申请开票', | 206 | APPLY_FOR_INVOICING: '申请开票', |
207 | + URGENT_INVOICE_AUDITING: '加急待审核', | ||
205 | PARTIAL_INVOICING: '部分开票', | 208 | PARTIAL_INVOICING: '部分开票', |
206 | COMPLETE_INVOICING: '完全开票', | 209 | COMPLETE_INVOICING: '完全开票', |
207 | }; | 210 | }; |
@@ -239,7 +242,10 @@ export const TAGS_COLOR = new Map<string, string>([ | @@ -239,7 +242,10 @@ export const TAGS_COLOR = new Map<string, string>([ | ||
239 | ['AFTER_SALES_FAILURE', 'red'], | 242 | ['AFTER_SALES_FAILURE', 'red'], |
240 | ['WAITING_FOR_POST_AUDIT', 'purple'], | 243 | ['WAITING_FOR_POST_AUDIT', 'purple'], |
241 | ['POST_AUDITED', 'success'], | 244 | ['POST_AUDITED', 'success'], |
242 | - ['POST_AUDIT_FAIL', 'error'], | 245 | + ['COMPLETE_INVOICING', 'success'], |
246 | + ['PARTIAL_INVOICING', 'processing'], | ||
247 | + ['URGENT_INVOICE_AUDITING', 'warning'], | ||
248 | + ['APPLY_FOR_INVOICING', 'processing'], | ||
243 | ]); | 249 | ]); |
244 | export const SALES_CODE_OPTIONS = [ | 250 | export const SALES_CODE_OPTIONS = [ |
245 | { label: 'D-Linda', value: 'D-Linda' }, | 251 | { label: 'D-Linda', value: 'D-Linda' }, |
src/pages/Order/index.tsx
@@ -15,6 +15,7 @@ import { | @@ -15,6 +15,7 @@ import { | ||
15 | } from '@/services'; | 15 | } from '@/services'; |
16 | import { orderExport } from '@/services/order'; | 16 | import { orderExport } from '@/services/order'; |
17 | import { | 17 | import { |
18 | + FloatAdd, | ||
18 | copyToClipboard, | 19 | copyToClipboard, |
19 | enumToProTableEnumValue, | 20 | enumToProTableEnumValue, |
20 | enumValueToLabel, | 21 | enumValueToLabel, |
@@ -217,17 +218,24 @@ const OrderPage = () => { | @@ -217,17 +218,24 @@ const OrderPage = () => { | ||
217 | text += record?.id; | 218 | text += record?.id; |
218 | text += ',' + record?.salesCode; | 219 | text += ',' + record?.salesCode; |
219 | text += ',' + record?.customerName; | 220 | text += ',' + record?.customerName; |
221 | + | ||
220 | text += ',' + record?.customerContactNumber; | 222 | text += ',' + record?.customerContactNumber; |
223 | + | ||
221 | text += ',' + record?.customerShippingAddress; | 224 | text += ',' + record?.customerShippingAddress; |
222 | - text += ',' + record?.institutionContactName; | ||
223 | - text += ',' + record?.institution; | 225 | + |
226 | + if (userInfo.username !== '首能') { | ||
227 | + text += ',' + record?.institutionContactName; | ||
228 | + text += ',' + record?.institution; | ||
229 | + } | ||
224 | record?.subOrderInformationLists?.forEach((item) => { | 230 | record?.subOrderInformationLists?.forEach((item) => { |
225 | text += '\n'; | 231 | text += '\n'; |
226 | text += item?.productName; | 232 | text += item?.productName; |
227 | text += ' ' + item?.parameters; | 233 | text += ' ' + item?.parameters; |
228 | text += ' ' + item?.quantity; | 234 | text += ' ' + item?.quantity; |
229 | text += ' ' + item?.unit; | 235 | text += ' ' + item?.unit; |
230 | - text += ' ¥' + item?.subOrderPayment; | 236 | + if (userInfo.username !== '首能') { |
237 | + text += ' ¥' + item?.subOrderPayment; | ||
238 | + } | ||
231 | text += ' ' + item?.id; | 239 | text += ' ' + item?.id; |
232 | }); | 240 | }); |
233 | if (copyToClipboard(text)) { | 241 | if (copyToClipboard(text)) { |
@@ -373,7 +381,6 @@ const OrderPage = () => { | @@ -373,7 +381,6 @@ const OrderPage = () => { | ||
373 | * 返回当前操作的子订单集合 | 381 | * 返回当前操作的子订单集合 |
374 | */ | 382 | */ |
375 | function buildSubOrders() { | 383 | function buildSubOrders() { |
376 | - console.log('here'); | ||
377 | if (currentOptMainId === undefined || currentOptMainId === null) { | 384 | if (currentOptMainId === undefined || currentOptMainId === null) { |
378 | message.error('页面错误:当前操作的主订单id不存在,请联系系统管理员'); | 385 | message.error('页面错误:当前操作的主订单id不存在,请联系系统管理员'); |
379 | return; | 386 | return; |
@@ -421,12 +428,41 @@ const OrderPage = () => { | @@ -421,12 +428,41 @@ const OrderPage = () => { | ||
421 | return; | 428 | return; |
422 | } | 429 | } |
423 | 430 | ||
424 | - console.log(cloneSubOrders); | ||
425 | - | ||
426 | return cloneSubOrders; | 431 | return cloneSubOrders; |
427 | } | 432 | } |
428 | 433 | ||
429 | /** | 434 | /** |
435 | + * 获取当前操作申请开票的订单总金额 | ||
436 | + */ | ||
437 | + function getApplyInvoicingTotalPayment() { | ||
438 | + let subOrders = isMainOrder | ||
439 | + ? [...subOrderSelectedMap.values()].flat() | ||
440 | + : buildSubOrders(); | ||
441 | + | ||
442 | + let totalPayment = 0; | ||
443 | + if (subOrders && subOrders.length > 0) { | ||
444 | + let mainIds = subOrders?.map((item: any) => { | ||
445 | + return item.mainOrderId; | ||
446 | + }); | ||
447 | + | ||
448 | + let uniqueMainIds = [...new Set(mainIds)]; | ||
449 | + | ||
450 | + let dataMap = data.reduce((map, obj: any) => { | ||
451 | + map.set(obj.id, obj); | ||
452 | + return map; | ||
453 | + }, new Map()); | ||
454 | + | ||
455 | + uniqueMainIds.forEach((id: any) => { | ||
456 | + let o = dataMap.get(id); | ||
457 | + if (o) { | ||
458 | + totalPayment = FloatAdd(totalPayment, o.totalPayment); | ||
459 | + } | ||
460 | + }); | ||
461 | + } | ||
462 | + return totalPayment; | ||
463 | + } | ||
464 | + | ||
465 | + /** | ||
430 | * 根据主订单id,将该主订单下的所有子订单取消选中 | 466 | * 根据主订单id,将该主订单下的所有子订单取消选中 |
431 | */ | 467 | */ |
432 | const removeSelectedSubOrderKeysByMainOrderId = (id: any) => { | 468 | const removeSelectedSubOrderKeysByMainOrderId = (id: any) => { |
@@ -497,9 +533,6 @@ const OrderPage = () => { | @@ -497,9 +533,6 @@ const OrderPage = () => { | ||
497 | } | 533 | } |
498 | } | 534 | } |
499 | setSelectedMainOrderKeys(newSelectedMainOrderKeys); | 535 | setSelectedMainOrderKeys(newSelectedMainOrderKeys); |
500 | - | ||
501 | - console.log(mainOrderSelectedMap); | ||
502 | - console.log(subOrderSelectedMap); | ||
503 | }; | 536 | }; |
504 | // const handleTableExpand = (mainOrderIds: any) => { | 537 | // const handleTableExpand = (mainOrderIds: any) => { |
505 | // setExpandedRowKeys(mainOrderIds); | 538 | // setExpandedRowKeys(mainOrderIds); |
@@ -1055,12 +1088,25 @@ const OrderPage = () => { | @@ -1055,12 +1088,25 @@ const OrderPage = () => { | ||
1055 | 1088 | ||
1056 | {/* 开票状态 */} | 1089 | {/* 开票状态 */} |
1057 | <div className="overflow-hidden whitespace-no-wrap overflow-ellipsis"> | 1090 | <div className="overflow-hidden whitespace-no-wrap overflow-ellipsis"> |
1058 | - <span className="text-slate-700"> | ||
1059 | - {enumValueToLabel( | ||
1060 | - optRecord.afterInvoicingStatus, | ||
1061 | - AFTER_INVOICING_STATUS, | ||
1062 | - )} | ||
1063 | - </span> | 1091 | + <Tooltip |
1092 | + title={ | ||
1093 | + optRecord.invoicingUrgentCause !== null && | ||
1094 | + optRecord.afterInvoicingStatus === | ||
1095 | + 'URGENT_INVOICE_AUDITING' | ||
1096 | + ? optRecord.invoicingUrgentCause | ||
1097 | + : enumValueToLabel( | ||
1098 | + optRecord.afterInvoicingStatus, | ||
1099 | + AFTER_INVOICING_STATUS, | ||
1100 | + ) | ||
1101 | + } | ||
1102 | + > | ||
1103 | + <Tag color={TAGS_COLOR.get(optRecord.afterInvoicingStatus)}> | ||
1104 | + {enumValueToLabel( | ||
1105 | + optRecord.afterInvoicingStatus, | ||
1106 | + AFTER_INVOICING_STATUS, | ||
1107 | + )} | ||
1108 | + </Tag> | ||
1109 | + </Tooltip> | ||
1064 | </div> | 1110 | </div> |
1065 | 1111 | ||
1066 | {/* 是否加急图标显示 */} | 1112 | {/* 是否加急图标显示 */} |
@@ -1264,6 +1310,25 @@ const OrderPage = () => { | @@ -1264,6 +1310,25 @@ const OrderPage = () => { | ||
1264 | '' | 1310 | '' |
1265 | )} | 1311 | )} |
1266 | 1312 | ||
1313 | + {/* 加急审核 */} | ||
1314 | + {optRecord.subPath?.includes('URGENT_INVOICE_AUDITING') ? ( | ||
1315 | + <Button | ||
1316 | + className="p-0" | ||
1317 | + type="link" | ||
1318 | + onClick={() => { | ||
1319 | + console.log('here'); | ||
1320 | + setCurrentMainId(record.id); | ||
1321 | + setCurretnOptSubId(optRecord.id); | ||
1322 | + setCheckVisible(true); | ||
1323 | + setOrderCheckType(CHECK_TYPE.URGENT_INVOICE_AUDITING); | ||
1324 | + }} | ||
1325 | + > | ||
1326 | + 加急审核 | ||
1327 | + </Button> | ||
1328 | + ) : ( | ||
1329 | + '' | ||
1330 | + )} | ||
1331 | + | ||
1267 | {optRecord.subPath?.includes('postAudit') ? ( | 1332 | {optRecord.subPath?.includes('postAudit') ? ( |
1268 | <Button | 1333 | <Button |
1269 | className="p-0" | 1334 | className="p-0" |
@@ -2122,6 +2187,28 @@ const OrderPage = () => { | @@ -2122,6 +2187,28 @@ const OrderPage = () => { | ||
2122 | </Space> | 2187 | </Space> |
2123 | </Flex> | 2188 | </Flex> |
2124 | </Flex> | 2189 | </Flex> |
2190 | + | ||
2191 | + {userInfo.username === '首能' ? ( | ||
2192 | + <Flex className="pl-6" align="center"> | ||
2193 | + <Flex | ||
2194 | + className="hover:cursor-pointer" | ||
2195 | + onClick={() => { | ||
2196 | + copyToClipboard(record.customerContactNumber); | ||
2197 | + message.info( | ||
2198 | + '联系电话复制成功:' + record.customerContactNumber, | ||
2199 | + ); | ||
2200 | + }} | ||
2201 | + > | ||
2202 | + <span className="text-[#8C8C8C]">联系电话:</span> | ||
2203 | + <span className="text-slate-700"> | ||
2204 | + {record.customerContactNumber + ' '} | ||
2205 | + </span> | ||
2206 | + </Flex> | ||
2207 | + </Flex> | ||
2208 | + ) : ( | ||
2209 | + '' | ||
2210 | + )} | ||
2211 | + | ||
2125 | <Flex className="pl-6" align="center"> | 2212 | <Flex className="pl-6" align="center"> |
2126 | {roleCode === 'finance' ? ( | 2213 | {roleCode === 'finance' ? ( |
2127 | <div | 2214 | <div |
@@ -2183,50 +2270,52 @@ const OrderPage = () => { | @@ -2183,50 +2270,52 @@ const OrderPage = () => { | ||
2183 | <Flex justify="flex-end"> | 2270 | <Flex justify="flex-end"> |
2184 | <Flex wrap="wrap" gap="middle" align="center"> | 2271 | <Flex wrap="wrap" gap="middle" align="center"> |
2185 | {userInfo.username !== '首能' ? ( | 2272 | {userInfo.username !== '首能' ? ( |
2186 | - <> | ||
2187 | - <div> | ||
2188 | - <span className="text-[#8C8C8C]">总金额:¥</span> | ||
2189 | - <span className="text-lg font-medium"> | ||
2190 | - {record.totalPayment} | ||
2191 | - </span> | ||
2192 | - </div> | ||
2193 | - {rolePath?.includes('addOrder') ? ( | ||
2194 | - <Tooltip title="复制"> | ||
2195 | - <CopyTwoTone | ||
2196 | - className="hover:cursor-pointer" | ||
2197 | - onClick={() => { | ||
2198 | - createOptObject(null, record.id); | ||
2199 | - copyOrderToClipboard(record); | ||
2200 | - setOrderOptType('copy'); | ||
2201 | - setOrderDrawerVisible(true); | ||
2202 | - }} | ||
2203 | - /> | ||
2204 | - </Tooltip> | ||
2205 | - ) : ( | ||
2206 | - <Tooltip title="复制文本"> | ||
2207 | - <CopyTwoTone | ||
2208 | - className="hover:cursor-pointer" | ||
2209 | - onClick={() => { | ||
2210 | - copyOrderToClipboard(record); | ||
2211 | - }} | ||
2212 | - /> | ||
2213 | - </Tooltip> | ||
2214 | - )} | 2273 | + <div> |
2274 | + <span className="text-[#8C8C8C]">总金额:¥</span> | ||
2275 | + <span className="text-lg font-medium"> | ||
2276 | + {record.totalPayment} | ||
2277 | + </span> | ||
2278 | + </div> | ||
2279 | + ) : ( | ||
2280 | + '' | ||
2281 | + )} | ||
2215 | 2282 | ||
2216 | - <Tooltip title="历史"> | ||
2217 | - <ClockCircleTwoTone | ||
2218 | - className="hover:cursor-pointer" | ||
2219 | - onClick={() => { | ||
2220 | - setHistoryModalVisible(true); | ||
2221 | - if (subOrderSelectedMap.get(record.id)?.length) { | ||
2222 | - setSelectedRows(subOrderSelectedMap.get(record.id)); | ||
2223 | - } else { | ||
2224 | - setSelectedRows(record.subOrderInformationLists); | ||
2225 | - } | ||
2226 | - }} | ||
2227 | - /> | ||
2228 | - </Tooltip> | ||
2229 | - </> | 2283 | + {rolePath?.includes('addOrder') ? ( |
2284 | + <Tooltip title="复制"> | ||
2285 | + <CopyTwoTone | ||
2286 | + className="hover:cursor-pointer" | ||
2287 | + onClick={() => { | ||
2288 | + createOptObject(null, record.id); | ||
2289 | + copyOrderToClipboard(record); | ||
2290 | + setOrderOptType('copy'); | ||
2291 | + setOrderDrawerVisible(true); | ||
2292 | + }} | ||
2293 | + /> | ||
2294 | + </Tooltip> | ||
2295 | + ) : ( | ||
2296 | + <Tooltip title="复制文本"> | ||
2297 | + <CopyTwoTone | ||
2298 | + className="hover:cursor-pointer" | ||
2299 | + onClick={() => { | ||
2300 | + copyOrderToClipboard(record); | ||
2301 | + }} | ||
2302 | + /> | ||
2303 | + </Tooltip> | ||
2304 | + )} | ||
2305 | + {userInfo.username !== '首能' ? ( | ||
2306 | + <Tooltip title="历史"> | ||
2307 | + <ClockCircleTwoTone | ||
2308 | + className="hover:cursor-pointer" | ||
2309 | + onClick={() => { | ||
2310 | + setHistoryModalVisible(true); | ||
2311 | + if (subOrderSelectedMap.get(record.id)?.length) { | ||
2312 | + setSelectedRows(subOrderSelectedMap.get(record.id)); | ||
2313 | + } else { | ||
2314 | + setSelectedRows(record.subOrderInformationLists); | ||
2315 | + } | ||
2316 | + }} | ||
2317 | + /> | ||
2318 | + </Tooltip> | ||
2230 | ) : ( | 2319 | ) : ( |
2231 | '' | 2320 | '' |
2232 | )} | 2321 | )} |
@@ -2251,6 +2340,22 @@ const OrderPage = () => { | @@ -2251,6 +2340,22 @@ const OrderPage = () => { | ||
2251 | '' | 2340 | '' |
2252 | )} | 2341 | )} |
2253 | 2342 | ||
2343 | + {record.mainPath?.includes('URGENT_INVOICE_AUDITING') ? ( | ||
2344 | + <Button | ||
2345 | + className="p-0" | ||
2346 | + type="link" | ||
2347 | + onClick={() => { | ||
2348 | + createOptObject(null, record.id); | ||
2349 | + setCheckVisible(true); | ||
2350 | + setOrderCheckType(CHECK_TYPE.URGENT_INVOICE_AUDITING); | ||
2351 | + }} | ||
2352 | + > | ||
2353 | + 加急审核 | ||
2354 | + </Button> | ||
2355 | + ) : ( | ||
2356 | + '' | ||
2357 | + )} | ||
2358 | + | ||
2254 | {record.mainPath?.includes('modifiedLeaderAuditRequest') ? ( | 2359 | {record.mainPath?.includes('modifiedLeaderAuditRequest') ? ( |
2255 | <Button | 2360 | <Button |
2256 | className="p-0" | 2361 | className="p-0" |
@@ -3905,6 +4010,7 @@ const OrderPage = () => { | @@ -3905,6 +4010,7 @@ const OrderPage = () => { | ||
3905 | ? [...subOrderSelectedMap.values()].flat() | 4010 | ? [...subOrderSelectedMap.values()].flat() |
3906 | : buildSubOrders() | 4011 | : buildSubOrders() |
3907 | } | 4012 | } |
4013 | + totalPayment={getApplyInvoicingTotalPayment()} | ||
3908 | isMainOrder={isMainOrder} | 4014 | isMainOrder={isMainOrder} |
3909 | isEdit={isEdit} | 4015 | isEdit={isEdit} |
3910 | onClose={() => { | 4016 | onClose={() => { |
@@ -4250,7 +4356,12 @@ const OrderPage = () => { | @@ -4250,7 +4356,12 @@ const OrderPage = () => { | ||
4250 | )} | 4356 | )} |
4251 | 4357 | ||
4252 | {messageListDrawerVisible && ( | 4358 | {messageListDrawerVisible && ( |
4253 | - <MessageListDrawer setVisible={setMessageListDrawerVisible} /> | 4359 | + <MessageListDrawer |
4360 | + setVisible={(val: any) => { | ||
4361 | + setMessageListDrawerVisible(val); | ||
4362 | + getUnreadMessageNum(); | ||
4363 | + }} | ||
4364 | + /> | ||
4254 | )} | 4365 | )} |
4255 | {contextHolder} | 4366 | {contextHolder} |
4256 | </PageContainer> | 4367 | </PageContainer> |
src/pages/OrderReport/index.tsx
1 | -import { postServiceOrderQueryReportFormsInformation } from '@/services'; | 1 | +import { |
2 | + postServiceOrderQueryReportFormsInformation, | ||
3 | + postServiceOrderQuerySalesCode, | ||
4 | +} from '@/services'; | ||
2 | import { enumToSelect } from '@/utils'; | 5 | import { enumToSelect } from '@/utils'; |
3 | import { getUserInfo } from '@/utils/user'; | 6 | import { getUserInfo } from '@/utils/user'; |
4 | import { EllipsisOutlined } from '@ant-design/icons'; | 7 | import { EllipsisOutlined } from '@ant-design/icons'; |
@@ -21,16 +24,30 @@ import { | @@ -21,16 +24,30 @@ import { | ||
21 | Tag, | 24 | Tag, |
22 | } from 'antd'; | 25 | } from 'antd'; |
23 | import { useEffect, useState } from 'react'; | 26 | import { useEffect, useState } from 'react'; |
24 | -import { | ||
25 | - PRODUCT_BELONG_DEPARTMENT_OPTIONS, | ||
26 | - SALES_CODE_OPTIONS, | ||
27 | -} from '../Order/constant'; | 27 | +import { PRODUCT_BELONG_DEPARTMENT_OPTIONS } from '../Order/constant'; |
28 | import OrderDualAxes from './components/OrderDualAxes'; | 28 | import OrderDualAxes from './components/OrderDualAxes'; |
29 | import OrderStatisticCard from './components/OrderStatisticCard'; | 29 | import OrderStatisticCard from './components/OrderStatisticCard'; |
30 | import './index.less'; | 30 | import './index.less'; |
31 | const userInfo = getUserInfo(); | 31 | const userInfo = getUserInfo(); |
32 | 32 | ||
33 | const OrderReportPage = () => { | 33 | const OrderReportPage = () => { |
34 | + const [salesCodeOptions, setSalesCodeOptions] = useState([]); | ||
35 | + | ||
36 | + /** | ||
37 | + * 获取销售代码枚举,在复制和编辑的时候判断是否为旧的代码 | ||
38 | + */ | ||
39 | + const getSalesCodeOptions = async () => { | ||
40 | + const res = await postServiceOrderQuerySalesCode(); | ||
41 | + let options = res.data?.map((item) => { | ||
42 | + return { | ||
43 | + label: item.userName, | ||
44 | + value: item.userName, | ||
45 | + number: item.number, | ||
46 | + }; | ||
47 | + }); | ||
48 | + setSalesCodeOptions(options); | ||
49 | + }; | ||
50 | + | ||
34 | const [form] = Form.useForm<{ | 51 | const [form] = Form.useForm<{ |
35 | salesCode: ''; | 52 | salesCode: ''; |
36 | productBelongBusiness: ''; | 53 | productBelongBusiness: ''; |
@@ -91,6 +108,7 @@ const OrderReportPage = () => { | @@ -91,6 +108,7 @@ const OrderReportPage = () => { | ||
91 | 108 | ||
92 | useEffect(() => { | 109 | useEffect(() => { |
93 | loadData(); | 110 | loadData(); |
111 | + getSalesCodeOptions(); | ||
94 | }, []); | 112 | }, []); |
95 | 113 | ||
96 | // const items: TabsProps['items'] = [ | 114 | // const items: TabsProps['items'] = [ |
@@ -165,10 +183,11 @@ const OrderReportPage = () => { | @@ -165,10 +183,11 @@ const OrderReportPage = () => { | ||
165 | <ProFormSelect | 183 | <ProFormSelect |
166 | name="salesCode" | 184 | name="salesCode" |
167 | key="salesCode" | 185 | key="salesCode" |
186 | + width="lg" | ||
168 | showSearch | 187 | showSearch |
169 | label="销售代表" | 188 | label="销售代表" |
170 | - placeholder="请输入销售代表" | ||
171 | - options={SALES_CODE_OPTIONS} | 189 | + placeholder="请选择销售代表" |
190 | + options={salesCodeOptions} | ||
172 | /> | 191 | /> |
173 | <ProFormSelect | 192 | <ProFormSelect |
174 | key="productBelongBusiness" | 193 | key="productBelongBusiness" |
src/services/definition.ts
@@ -808,6 +808,7 @@ export interface MeasureUnitListResRow { | @@ -808,6 +808,7 @@ export interface MeasureUnitListResRow { | ||
808 | export interface MessageQueryDTO { | 808 | export interface MessageQueryDTO { |
809 | /** @format int32 */ | 809 | /** @format int32 */ |
810 | current?: number; | 810 | current?: number; |
811 | + isReaded?: string; | ||
811 | /** @format int32 */ | 812 | /** @format int32 */ |
812 | pageSize?: number; | 813 | pageSize?: number; |
813 | /** @format int32 */ | 814 | /** @format int32 */ |
src/services/request.ts
@@ -42,6 +42,7 @@ import type { | @@ -42,6 +42,7 @@ import type { | ||
42 | MaterialUnitListRes, | 42 | MaterialUnitListRes, |
43 | MeasureUnitListRes, | 43 | MeasureUnitListRes, |
44 | MessageQueryDTO, | 44 | MessageQueryDTO, |
45 | + ModelAndView, | ||
45 | OrderAddVO, | 46 | OrderAddVO, |
46 | OrderAuditLogQueryVO, | 47 | OrderAuditLogQueryVO, |
47 | OrderBaseInfoQueryVO, | 48 | OrderBaseInfoQueryVO, |
@@ -253,9 +254,7 @@ export interface GetErrorResponse { | @@ -253,9 +254,7 @@ export interface GetErrorResponse { | ||
253 | * @description | 254 | * @description |
254 | * OK | 255 | * OK |
255 | */ | 256 | */ |
256 | - 200: { | ||
257 | - [propertyName: string]: any; | ||
258 | - }; | 257 | + 200: ModelAndView; |
259 | /** | 258 | /** |
260 | * @description | 259 | * @description |
261 | * Unauthorized | 260 | * Unauthorized |
@@ -276,9 +275,9 @@ export interface GetErrorResponse { | @@ -276,9 +275,9 @@ export interface GetErrorResponse { | ||
276 | export type GetErrorResponseSuccess = GetErrorResponse[200]; | 275 | export type GetErrorResponseSuccess = GetErrorResponse[200]; |
277 | /** | 276 | /** |
278 | * @description | 277 | * @description |
279 | - * error | 278 | + * errorHtml |
280 | * @tags basic-error-controller | 279 | * @tags basic-error-controller |
281 | - * @produces * | 280 | + * @produces text/html |
282 | */ | 281 | */ |
283 | export const getError = /* #__PURE__ */ (() => { | 282 | export const getError = /* #__PURE__ */ (() => { |
284 | const method = 'get'; | 283 | const method = 'get'; |
@@ -302,9 +301,7 @@ export interface PutErrorResponse { | @@ -302,9 +301,7 @@ export interface PutErrorResponse { | ||
302 | * @description | 301 | * @description |
303 | * OK | 302 | * OK |
304 | */ | 303 | */ |
305 | - 200: { | ||
306 | - [propertyName: string]: any; | ||
307 | - }; | 304 | + 200: ModelAndView; |
308 | /** | 305 | /** |
309 | * @description | 306 | * @description |
310 | * Created | 307 | * Created |
@@ -330,9 +327,9 @@ export interface PutErrorResponse { | @@ -330,9 +327,9 @@ export interface PutErrorResponse { | ||
330 | export type PutErrorResponseSuccess = PutErrorResponse[200]; | 327 | export type PutErrorResponseSuccess = PutErrorResponse[200]; |
331 | /** | 328 | /** |
332 | * @description | 329 | * @description |
333 | - * error | 330 | + * errorHtml |
334 | * @tags basic-error-controller | 331 | * @tags basic-error-controller |
335 | - * @produces * | 332 | + * @produces text/html |
336 | * @consumes application/json | 333 | * @consumes application/json |
337 | */ | 334 | */ |
338 | export const putError = /* #__PURE__ */ (() => { | 335 | export const putError = /* #__PURE__ */ (() => { |
@@ -357,9 +354,7 @@ export interface PostErrorResponse { | @@ -357,9 +354,7 @@ export interface PostErrorResponse { | ||
357 | * @description | 354 | * @description |
358 | * OK | 355 | * OK |
359 | */ | 356 | */ |
360 | - 200: { | ||
361 | - [propertyName: string]: any; | ||
362 | - }; | 357 | + 200: ModelAndView; |
363 | /** | 358 | /** |
364 | * @description | 359 | * @description |
365 | * Created | 360 | * Created |
@@ -385,9 +380,9 @@ export interface PostErrorResponse { | @@ -385,9 +380,9 @@ export interface PostErrorResponse { | ||
385 | export type PostErrorResponseSuccess = PostErrorResponse[200]; | 380 | export type PostErrorResponseSuccess = PostErrorResponse[200]; |
386 | /** | 381 | /** |
387 | * @description | 382 | * @description |
388 | - * error | 383 | + * errorHtml |
389 | * @tags basic-error-controller | 384 | * @tags basic-error-controller |
390 | - * @produces * | 385 | + * @produces text/html |
391 | * @consumes application/json | 386 | * @consumes application/json |
392 | */ | 387 | */ |
393 | export const postError = /* #__PURE__ */ (() => { | 388 | export const postError = /* #__PURE__ */ (() => { |
@@ -412,9 +407,7 @@ export interface DeleteErrorResponse { | @@ -412,9 +407,7 @@ export interface DeleteErrorResponse { | ||
412 | * @description | 407 | * @description |
413 | * OK | 408 | * OK |
414 | */ | 409 | */ |
415 | - 200: { | ||
416 | - [propertyName: string]: any; | ||
417 | - }; | 410 | + 200: ModelAndView; |
418 | /** | 411 | /** |
419 | * @description | 412 | * @description |
420 | * No Content | 413 | * No Content |
@@ -435,9 +428,9 @@ export interface DeleteErrorResponse { | @@ -435,9 +428,9 @@ export interface DeleteErrorResponse { | ||
435 | export type DeleteErrorResponseSuccess = DeleteErrorResponse[200]; | 428 | export type DeleteErrorResponseSuccess = DeleteErrorResponse[200]; |
436 | /** | 429 | /** |
437 | * @description | 430 | * @description |
438 | - * error | 431 | + * errorHtml |
439 | * @tags basic-error-controller | 432 | * @tags basic-error-controller |
440 | - * @produces * | 433 | + * @produces text/html |
441 | */ | 434 | */ |
442 | export const deleteError = /* #__PURE__ */ (() => { | 435 | export const deleteError = /* #__PURE__ */ (() => { |
443 | const method = 'delete'; | 436 | const method = 'delete'; |
@@ -461,9 +454,7 @@ export interface OptionsErrorResponse { | @@ -461,9 +454,7 @@ export interface OptionsErrorResponse { | ||
461 | * @description | 454 | * @description |
462 | * OK | 455 | * OK |
463 | */ | 456 | */ |
464 | - 200: { | ||
465 | - [propertyName: string]: any; | ||
466 | - }; | 457 | + 200: ModelAndView; |
467 | /** | 458 | /** |
468 | * @description | 459 | * @description |
469 | * No Content | 460 | * No Content |
@@ -484,9 +475,9 @@ export interface OptionsErrorResponse { | @@ -484,9 +475,9 @@ export interface OptionsErrorResponse { | ||
484 | export type OptionsErrorResponseSuccess = OptionsErrorResponse[200]; | 475 | export type OptionsErrorResponseSuccess = OptionsErrorResponse[200]; |
485 | /** | 476 | /** |
486 | * @description | 477 | * @description |
487 | - * error | 478 | + * errorHtml |
488 | * @tags basic-error-controller | 479 | * @tags basic-error-controller |
489 | - * @produces * | 480 | + * @produces text/html |
490 | * @consumes application/json | 481 | * @consumes application/json |
491 | */ | 482 | */ |
492 | export const optionsError = /* #__PURE__ */ (() => { | 483 | export const optionsError = /* #__PURE__ */ (() => { |
@@ -511,9 +502,7 @@ export interface HeadErrorResponse { | @@ -511,9 +502,7 @@ export interface HeadErrorResponse { | ||
511 | * @description | 502 | * @description |
512 | * OK | 503 | * OK |
513 | */ | 504 | */ |
514 | - 200: { | ||
515 | - [propertyName: string]: any; | ||
516 | - }; | 505 | + 200: ModelAndView; |
517 | /** | 506 | /** |
518 | * @description | 507 | * @description |
519 | * No Content | 508 | * No Content |
@@ -534,9 +523,9 @@ export interface HeadErrorResponse { | @@ -534,9 +523,9 @@ export interface HeadErrorResponse { | ||
534 | export type HeadErrorResponseSuccess = HeadErrorResponse[200]; | 523 | export type HeadErrorResponseSuccess = HeadErrorResponse[200]; |
535 | /** | 524 | /** |
536 | * @description | 525 | * @description |
537 | - * error | 526 | + * errorHtml |
538 | * @tags basic-error-controller | 527 | * @tags basic-error-controller |
539 | - * @produces * | 528 | + * @produces text/html |
540 | * @consumes application/json | 529 | * @consumes application/json |
541 | */ | 530 | */ |
542 | export const headError = /* #__PURE__ */ (() => { | 531 | export const headError = /* #__PURE__ */ (() => { |
@@ -561,9 +550,7 @@ export interface PatchErrorResponse { | @@ -561,9 +550,7 @@ export interface PatchErrorResponse { | ||
561 | * @description | 550 | * @description |
562 | * OK | 551 | * OK |
563 | */ | 552 | */ |
564 | - 200: { | ||
565 | - [propertyName: string]: any; | ||
566 | - }; | 553 | + 200: ModelAndView; |
567 | /** | 554 | /** |
568 | * @description | 555 | * @description |
569 | * No Content | 556 | * No Content |
@@ -584,9 +571,9 @@ export interface PatchErrorResponse { | @@ -584,9 +571,9 @@ export interface PatchErrorResponse { | ||
584 | export type PatchErrorResponseSuccess = PatchErrorResponse[200]; | 571 | export type PatchErrorResponseSuccess = PatchErrorResponse[200]; |
585 | /** | 572 | /** |
586 | * @description | 573 | * @description |
587 | - * error | 574 | + * errorHtml |
588 | * @tags basic-error-controller | 575 | * @tags basic-error-controller |
589 | - * @produces * | 576 | + * @produces text/html |
590 | * @consumes application/json | 577 | * @consumes application/json |
591 | */ | 578 | */ |
592 | export const patchError = /* #__PURE__ */ (() => { | 579 | export const patchError = /* #__PURE__ */ (() => { |
@@ -4159,6 +4146,60 @@ export const postOrderErpMessageRead = /* #__PURE__ */ (() => { | @@ -4159,6 +4146,60 @@ export const postOrderErpMessageRead = /* #__PURE__ */ (() => { | ||
4159 | return request; | 4146 | return request; |
4160 | })(); | 4147 | })(); |
4161 | 4148 | ||
4149 | +/** @description response type for postOrderErpMessageReadAll */ | ||
4150 | +export interface PostOrderErpMessageReadAllResponse { | ||
4151 | + /** | ||
4152 | + * @description | ||
4153 | + * OK | ||
4154 | + */ | ||
4155 | + 200: ServerResult; | ||
4156 | + /** | ||
4157 | + * @description | ||
4158 | + * Created | ||
4159 | + */ | ||
4160 | + 201: any; | ||
4161 | + /** | ||
4162 | + * @description | ||
4163 | + * Unauthorized | ||
4164 | + */ | ||
4165 | + 401: any; | ||
4166 | + /** | ||
4167 | + * @description | ||
4168 | + * Forbidden | ||
4169 | + */ | ||
4170 | + 403: any; | ||
4171 | + /** | ||
4172 | + * @description | ||
4173 | + * Not Found | ||
4174 | + */ | ||
4175 | + 404: any; | ||
4176 | +} | ||
4177 | + | ||
4178 | +export type PostOrderErpMessageReadAllResponseSuccess = | ||
4179 | + PostOrderErpMessageReadAllResponse[200]; | ||
4180 | +/** | ||
4181 | + * @description | ||
4182 | + * queryMyMessage | ||
4183 | + * @tags message-controller | ||
4184 | + * @produces * | ||
4185 | + * @consumes application/json | ||
4186 | + */ | ||
4187 | +export const postOrderErpMessageReadAll = /* #__PURE__ */ (() => { | ||
4188 | + const method = 'post'; | ||
4189 | + const url = '/order/erp/message/readAll'; | ||
4190 | + function request(): Promise<PostOrderErpMessageReadAllResponseSuccess> { | ||
4191 | + return requester(request.url, { | ||
4192 | + method: request.method, | ||
4193 | + }) as unknown as Promise<PostOrderErpMessageReadAllResponseSuccess>; | ||
4194 | + } | ||
4195 | + | ||
4196 | + /** http method */ | ||
4197 | + request.method = method; | ||
4198 | + /** request url */ | ||
4199 | + request.url = url; | ||
4200 | + return request; | ||
4201 | +})(); | ||
4202 | + | ||
4162 | /** @description request parameter type for postOrderErpOptLogListByPage */ | 4203 | /** @description request parameter type for postOrderErpOptLogListByPage */ |
4163 | export interface PostOrderErpOptLogListByPageOption { | 4204 | export interface PostOrderErpOptLogListByPageOption { |
4164 | /** | 4205 | /** |