Commit de64c07ce292073ea70e9cc2f73cc5953235b045

Authored by 曾国涛
2 parents ed8e5348 80bcdb56

Merge branch 'znh' of http://39.108.227.113:8001/zhusen/canrd-erp-front into znh

# Conflicts:
#	src/pages/Order/index.tsx
src/pages/Order/components/DeliverModal.tsx
... ... @@ -208,7 +208,6 @@ const DeliverModal = ({
208 208 footer={[
209 209 <Button
210 210 key="back"
211   - size="large"
212 211 onClick={() => {
213 212 setVisible(false);
214 213 }}
... ... @@ -218,7 +217,6 @@ const DeliverModal = ({
218 217 <Button
219 218 key="selfDeliver"
220 219 type="primary"
221   - size="large"
222 220 onClick={async () => {
223 221 //请求体封装
224 222 let list = data.map((item) => {
... ... @@ -253,7 +251,6 @@ const DeliverModal = ({
253 251 <Button
254 252 key="submit"
255 253 type="primary"
256   - size="large"
257 254 onClick={async () => {
258 255 //请求体封装
259 256 let list = data.map((item) => {
... ...
src/pages/Order/constant.ts
... ... @@ -51,20 +51,20 @@ export const INVOCING_STATUS_OPTIONS_OLD = {
51 51 };
52 52  
53 53 export const PAYEE_OPTIONS = {
54   - ZHUGUANG_PUBLIC_ACCOUNT: '烛光公账',
55   - EXPERIMENT_PUBLIC_ACCOUNT: '实验公账',
56   - NEW_ENERGY_PUBLIC_ACCOUNT: '新能源公账',
57   - INNOVATION_PUBLIC_ACCOUNT: '创新公账',
58   - JIANTU_PUBLIC_ACCOUNT: '坚途公账',
59   - KNOWLEDGE_PUBLIC_ACCOUNT: '知识公账',
60   - ZHUGUANG_ACCEPTANCE_DRAFT: '烛光承兑汇票',
  54 + ZHUGUANG_PUBLIC_ACCOUNT: '广东烛光新能源科技有限公司',
  55 + EXPERIMENT_PUBLIC_ACCOUNT: '东莞市科路得实验器材科技有限公司',
  56 + NEW_ENERGY_PUBLIC_ACCOUNT: '东莞市科路得新能源科技有限公司',
  57 + INNOVATION_PUBLIC_ACCOUNT: '东莞科路得创新科技有限公司',
  58 + JIANTU_PUBLIC_ACCOUNT: '东莞市坚途新材料科技有限公司',
  59 + KNOWLEDGE_PUBLIC_ACCOUNT: '东莞市科路得知识产权代理有限公司',
  60 + // ZHUGUANG_ACCEPTANCE_DRAFT: '烛光承兑汇票',
61 61 LIUPING_ACCOUNT: '刘平账户',
62 62 INNOVATION_ALIPAY: '创新支付宝',
63 63 ZHUGUANG_ALIPAY: '烛光支付宝',
64   - ZHUGUANG_WISE_COLLECTION: '烛光慧收款',
65   - EXPERIMENT_QR_CODE: '实验二维码',
66   - INNOVATION_QR_CODE: '创新二维码',
67   - NEW_ENERGY_QR_CODE: '新能源二维码',
  64 + // ZHUGUANG_WISE_COLLECTION: '烛光慧收款',
  65 + // EXPERIMENT_QR_CODE: '实验二维码',
  66 + // INNOVATION_QR_CODE: '创新二维码',
  67 + // NEW_ENERGY_QR_CODE: '新能源二维码',
68 68 };
69 69  
70 70 export const PROCURE_ORDER_STATUS = {
... ...
src/pages/Order/index.tsx
... ... @@ -26,8 +26,13 @@ import {
26 26 } from '@/utils';
27 27 import {
28 28 getReceivingCompanyOptions,
  29 + isAdmin,
29 30 isExaminer,
  31 + isFinance,
  32 + isProcure,
  33 + isSales,
30 34 isSupplier,
  35 + isWarehousekeeper,
31 36 } from '@/utils/order';
32 37 import { getUserInfo } from '@/utils/user';
33 38 import {
... ... @@ -882,110 +887,6 @@ const OrderPage = () =&gt; {
882 887 参数:{optRecord.parameters}
883 888 </span>
884 889 </div>
885   -
886   - <Flex title={optRecord.notes}>
887   - <div
888   - className="max-w-[375px] whitespace-no-wrap overflow-hidden overflow-ellipsis hover:cursor-pointer"
889   - onClick={() => {
890   - copyToClipboard(optRecord.notes);
891   - message.info('备注复制成功:' + optRecord.notes);
892   - }}
893   - >
894   - <span className="text-[#8C8C8C]">
895   - 备注:
896   - {optRecord.notes === null ? '暂无备注' : optRecord.notes}
897   - </span>
898   - </div>
899   - {!isSupplier() ? (
900   - <EditTwoTone
901   - className="pl-1 hover:curcor-pointer"
902   - onClick={() => {
903   - setNotesEditVisible(true);
904   - setSelectedRows([optRecord.id]);
905   - setNotes(optRecord.notes);
906   - setNotesType(1);
907   - }}
908   - />
909   - ) : (
910   - ''
911   - )}
912   - </Flex>
913   -
914   - {(roleCode === 'procure' ||
915   - roleCode === 'warehouseKeeper' ||
916   - roleCode === 'admin') &&
917   - !isSupplier() ? (
918   - <>
919   - <Flex title={optRecord.supplierName}>
920   - <div className="max-w-[90%] whitespace-no-wrap overflow-hidden overflow-ellipsis">
921   - <span className="text-[#8C8C8C]">
922   - 所属采购:
923   - {optRecord.supplierName === null
924   - ? '暂无'
925   - : optRecord.supplierName}
926   - </span>
927   - </div>
928   -
929   - <Divider type="vertical" />
930   -
931   - <div className="max-w-[90%] whitespace-no-wrap overflow-hidden overflow-ellipsis">
932   - <span className="text-[#8C8C8C]">
933   - 采购备注:
934   - {optRecord.procureNotes === null
935   - ? '暂无备注'
936   - : optRecord.procureNotes}
937   - </span>
938   - </div>
939   - {/* 编辑备注按钮 */}
940   - <EditTwoTone
941   - className="pl-1 hover:curcor-pointer"
942   - onClick={() => {
943   - setSelectedRows([optRecord.id]);
944   - setNotes(optRecord.procureNotes);
945   - setNotesEditVisible(true);
946   - setNotesType(2);
947   - }}
948   - />
949   - </Flex>
950   -
951   - <Flex title={optRecord.supplierNotes}>
952   - <div className="max-w-[90%] whitespace-no-wrap overflow-hidden overflow-ellipsis">
953   - <span className="text-[#8C8C8C]">
954   - 供应商备注:
955   - {optRecord.supplierNotes === null
956   - ? '暂无备注'
957   - : optRecord.supplierNotes}
958   - </span>
959   - </div>
960   - {/* 编辑备注按钮 */}
961   - <EditTwoTone
962   - className="pl-1 hover:curcor-pointer"
963   - onClick={() => {
964   - setSelectedRows([optRecord.id]);
965   - setNotes(optRecord.supplierNotes);
966   - setNotesEditVisible(true);
967   - setNotesType(3);
968   - }}
969   - />
970   - </Flex>
971   - </>
972   - ) : (
973   - ''
974   - )}
975   -
976   - {/* {optRecord.applyInvoicingNotes !== undefined &&
977   - optRecord.applyInvoicingNotes !== null ? (
978   - <Flex title={optRecord.notes}>
979   - <div className="max-w-[90%] whitespace-no-wrap overflow-hidden overflow-ellipsis">
980   - <span className="text-[#8C8C8C]">
981   - 开票备注:
982   - {optRecord.applyInvoicingNotes}
983   - </span>
984   - </div>
985   - </Flex>
986   - ) : (
987   - ''
988   - )} */}
989 890 </Flex>
990 891 <Flex className="w-[13%]" vertical gap="small">
991 892 {!isSupplier() ? (
... ... @@ -2002,11 +1903,98 @@ const OrderPage = () =&gt; {
2002 1903 </Flex>
2003 1904 </Flex>
2004 1905  
2005   - {roleCode === 'admin' ||
2006   - roleCode === 'salesManager' ||
2007   - roleCode === 'salesRepresentative' ||
2008   - roleCode === 'finance' ? (
2009   - <Flex title={optRecord.notes}>
  1906 + <Flex title={optRecord.notes}>
  1907 + <div
  1908 + className="overflow-hidden whitespace-normal overflow-ellipsis hover:cursor-pointer"
  1909 + onClick={() => {
  1910 + copyToClipboard(optRecord.notes);
  1911 + message.info('备注复制成功:' + optRecord.notes);
  1912 + }}
  1913 + >
  1914 + <span className="text-[#8C8C8C]">
  1915 + 备注:
  1916 + {optRecord.notes === null ? '暂无备注' : optRecord.notes}
  1917 + </span>
  1918 + </div>
  1919 + {!isSupplier() && (isSales() || isWarehousekeeper() || isAdmin()) && (
  1920 + <EditTwoTone
  1921 + className="pl-1 pr-1 hover:curcor-pointer"
  1922 + onClick={() => {
  1923 + setNotesEditVisible(true);
  1924 + setSelectedRows([optRecord.id]);
  1925 + setNotes(optRecord.notes);
  1926 + setNotesType(1);
  1927 + }}
  1928 + />
  1929 + )}
  1930 + </Flex>
  1931 +
  1932 + {(isProcure() || isWarehousekeeper() || isSales() || isAdmin()) &&
  1933 + !isSupplier() ? (
  1934 + <div className="pt-2">
  1935 + <Flex title={optRecord.supplierName}>
  1936 + <div>
  1937 + <span className="text-[#8C8C8C]">
  1938 + 所属采购:
  1939 + {optRecord.supplierName === null
  1940 + ? '暂无'
  1941 + : optRecord.supplierName}
  1942 + </span>
  1943 + </div>
  1944 +
  1945 + <Divider type="vertical" />
  1946 +
  1947 + <div className="overflow-hidden whitespace-normal overflow-ellipsis hover:cursor-pointer">
  1948 + <span className="text-[#8C8C8C]">
  1949 + 采购备注:
  1950 + {optRecord.procureNotes === null
  1951 + ? '暂无备注'
  1952 + : optRecord.procureNotes}
  1953 + </span>
  1954 + </div>
  1955 + {/* 编辑备注按钮 */}
  1956 + {(isProcure() || isAdmin()) && (
  1957 + <EditTwoTone
  1958 + className="pl-1 pr-1 hover:curcor-pointer"
  1959 + onClick={() => {
  1960 + setSelectedRows([optRecord.id]);
  1961 + setNotes(optRecord.procureNotes);
  1962 + setNotesEditVisible(true);
  1963 + setNotesType(2);
  1964 + }}
  1965 + />
  1966 + )}
  1967 + </Flex>
  1968 +
  1969 + {(isAdmin() || isProcure()) && (
  1970 + <Flex title={optRecord.supplierNotes}>
  1971 + <div className="max-w-[90%] whitespace-no-wrap overflow-hidden overflow-ellipsis">
  1972 + <span className="text-[#8C8C8C]">
  1973 + 供应商备注:
  1974 + {optRecord.supplierNotes === null
  1975 + ? '暂无备注'
  1976 + : optRecord.supplierNotes}
  1977 + </span>
  1978 + </div>
  1979 + {/* 编辑备注按钮 */}
  1980 + <EditTwoTone
  1981 + className="pl-1 hover:curcor-pointer"
  1982 + onClick={() => {
  1983 + setSelectedRows([optRecord.id]);
  1984 + setNotes(optRecord.supplierNotes);
  1985 + setNotesEditVisible(true);
  1986 + setNotesType(3);
  1987 + }}
  1988 + />
  1989 + </Flex>
  1990 + )}
  1991 + </div>
  1992 + ) : (
  1993 + ''
  1994 + )}
  1995 +
  1996 + {isAdmin() || isSales() || isFinance() ? (
  1997 + <Flex title={optRecord.notes} className="pt-2">
2010 1998 <div className="flex items-center">
2011 1999 <div className="flex items-center max-w-[500px]">
2012 2000 <div className="max-w-md overflow-hidden whitespace-no-wrap overflow-ellipsis">
... ... @@ -2267,22 +2255,19 @@ const OrderPage = () =&gt; {
2267 2255 }}
2268 2256 >
2269 2257 <span className="text-[#8C8C8C]">收货人:</span>
  2258 + {!isSupplier() && (
  2259 + <Tooltip className="order-tooltip" title="详情">
  2260 + <ContainerTwoTone
  2261 + className="px-1 hover:curcor-pointer"
  2262 + onClick={() => {
  2263 + createOptObject(null, record.id);
  2264 + setDeliverInfoDrawerVisible(true);
  2265 + }}
  2266 + />
  2267 + </Tooltip>
  2268 + )}
2270 2269 <span className="text-slate-700">
2271 2270 {record.customerName + ' '}
2272   -
2273   - {!isSupplier() ? (
2274   - <Tooltip className="order-tooltip" title="详情">
2275   - <ContainerTwoTone
2276   - className="hover:curcor-pointer"
2277   - onClick={() => {
2278   - createOptObject(null, record.id);
2279   - setDeliverInfoDrawerVisible(true);
2280   - }}
2281   - />
2282   - </Tooltip>
2283   - ) : (
2284   - ''
2285   - )}
2286 2271 </span>
2287 2272 </span>
2288 2273 </div>
... ... @@ -2356,34 +2341,33 @@ const OrderPage = () =&gt; {
2356 2341  
2357 2342 {roleCode === 'finance' ? <Divider type="vertical" /> : ''}
2358 2343  
  2344 + <div title={record.notes}>
  2345 + <div
  2346 + className="max-w-[850px] whitespace-normal overflow-hidden overflow-ellipsis hover:cursor-pointer"
  2347 + onClick={() => {
  2348 + copyToClipboard(record.notes);
  2349 + message.info('备注复制成功:' + record.notes);
  2350 + }}
  2351 + >
  2352 + <span className="text-[#8C8C8C]">备注:</span>
  2353 + <span className="ml-2">
  2354 + {record.notes === null ? '暂无备注' : record.notes}
  2355 + </span>
  2356 + </div>
  2357 + </div>
  2358 +
2359 2359 {!isSupplier() ? (
2360   - <>
2361   - <div title={record.notes}>
2362   - <div
2363   - className="max-w-md overflow-hidden whitespace-no-wrap overflow-ellipsis hover:cursor-pointer"
2364   - onClick={() => {
2365   - copyToClipboard(record.notes);
2366   - message.info('备注复制成功:' + record.notes);
2367   - }}
2368   - >
2369   - <span className="text-[#8C8C8C]">备注:</span>
2370   - <span className="ml-2">
2371   - {record.notes === null ? '暂无备注' : record.notes}
2372   - </span>
2373   - </div>
2374   - </div>
2375   - <Tooltip title="编辑">
2376   - <EditTwoTone
2377   - className="pl-1 hover:curcor-pointer"
2378   - onClick={() => {
2379   - setNotesEditVisible(true);
2380   - setSelectedRows([record.id]);
2381   - setNotes(record.notes);
2382   - setNotesType(0);
2383   - }}
2384   - />
2385   - </Tooltip>
2386   - </>
  2360 + <Tooltip title="编辑">
  2361 + <EditTwoTone
  2362 + className="pl-1 hover:curcor-pointer"
  2363 + onClick={() => {
  2364 + setNotesEditVisible(true);
  2365 + setSelectedRows([record.id]);
  2366 + setNotes(record.notes);
  2367 + setNotesType(0);
  2368 + }}
  2369 + />
  2370 + </Tooltip>
2387 2371 ) : (
2388 2372 ''
2389 2373 )}
... ... @@ -3666,6 +3650,29 @@ const OrderPage = () =&gt; {
3666 3650 }
3667 3651  
3668 3652 /**
  3653 + * 排除采购
  3654 + */
  3655 + if ((roleCode === 'procure' || roleCode === 'admin') && !isSupplier()) {
  3656 + mainOrdersColumns.push({
  3657 + title: '采购排除',
  3658 + width: 120,
  3659 + dataIndex: 'excludeProcureNames',
  3660 + fieldProps: {
  3661 + mode: 'multiple',
  3662 + },
  3663 + valueType: 'select',
  3664 + request: async () => {
  3665 + const res = await postServiceOrderProvideProcurementRoles();
  3666 + let options = res.data?.map((item) => {
  3667 + return { label: item, value: item };
  3668 + });
  3669 + return options;
  3670 + },
  3671 + hideInTable: true,
  3672 + });
  3673 + }
  3674 +
  3675 + /**
3669 3676 * 仓库可以筛选发货仓库
3670 3677 */
3671 3678 if (roleCode === 'warehouseKeeper' || roleCode === 'admin') {
... ...
src/utils/order.ts
... ... @@ -9,7 +9,7 @@ export function getReceivingCompanyOptions(PAYEE_OPTIONS: any) {
9 9 export function isSupplier() {
10 10 let userInfo = getUserInfo();
11 11 if (userInfo) {
12   - return ['首能', '枭源'].includes(userInfo.username);
  12 + return ['首能', '枭源'].includes(userInfo?.username);
13 13 }
14 14 return false;
15 15 }
... ... @@ -17,7 +17,49 @@ export function isSupplier() {
17 17 export function isExaminer() {
18 18 let userInfo = getUserInfo();
19 19 if (userInfo) {
20   - return userInfo.roleSmallVO?.code === 'examiner';
  20 + return ['examiner'].includes(userInfo?.roleSmallVO?.code);
  21 + }
  22 + return false;
  23 +}
  24 +
  25 +export function isSales() {
  26 + let userInfo = getUserInfo();
  27 + if (userInfo) {
  28 + return ['salesRepresentative', 'salesManager'].includes(
  29 + userInfo?.roleSmallVO?.code,
  30 + );
  31 + }
  32 + return false;
  33 +}
  34 +
  35 +export function isProcure() {
  36 + let userInfo = getUserInfo();
  37 + if (userInfo) {
  38 + return ['procure'].includes(userInfo?.roleSmallVO?.code);
  39 + }
  40 + return false;
  41 +}
  42 +
  43 +export function isWarehousekeeper() {
  44 + let userInfo = getUserInfo();
  45 + if (userInfo) {
  46 + return ['warehouseKeeper'].includes(userInfo?.roleSmallVO?.code);
  47 + }
  48 + return false;
  49 +}
  50 +
  51 +export function isAdmin() {
  52 + let userInfo = getUserInfo();
  53 + if (userInfo) {
  54 + return ['admin'].includes(userInfo?.roleSmallVO?.code);
  55 + }
  56 + return false;
  57 +}
  58 +
  59 +export function isFinance() {
  60 + let userInfo = getUserInfo();
  61 + if (userInfo) {
  62 + return ['finance'].includes(userInfo?.roleSmallVO?.code);
21 63 }
22 64 return false;
23 65 }
... ...