Commit 7755761528e7ba4794ae1b3c05a4afcb2971039c

Authored by zhongnanhuang
2 parents e9031308 80bcdb56

Merge branch 'znh' into develop

src/pages/Order/components/DeliverModal.tsx
@@ -208,7 +208,6 @@ const DeliverModal = ({ @@ -208,7 +208,6 @@ const DeliverModal = ({
208 footer={[ 208 footer={[
209 <Button 209 <Button
210 key="back" 210 key="back"
211 - size="large"  
212 onClick={() => { 211 onClick={() => {
213 setVisible(false); 212 setVisible(false);
214 }} 213 }}
@@ -218,7 +217,6 @@ const DeliverModal = ({ @@ -218,7 +217,6 @@ const DeliverModal = ({
218 <Button 217 <Button
219 key="selfDeliver" 218 key="selfDeliver"
220 type="primary" 219 type="primary"
221 - size="large"  
222 onClick={async () => { 220 onClick={async () => {
223 //请求体封装 221 //请求体封装
224 let list = data.map((item) => { 222 let list = data.map((item) => {
@@ -253,7 +251,6 @@ const DeliverModal = ({ @@ -253,7 +251,6 @@ const DeliverModal = ({
253 <Button 251 <Button
254 key="submit" 252 key="submit"
255 type="primary" 253 type="primary"
256 - size="large"  
257 onClick={async () => { 254 onClick={async () => {
258 //请求体封装 255 //请求体封装
259 let list = data.map((item) => { 256 let list = data.map((item) => {
src/pages/Order/index.tsx
@@ -25,8 +25,13 @@ import { @@ -25,8 +25,13 @@ import {
25 } from '@/utils'; 25 } from '@/utils';
26 import { 26 import {
27 getReceivingCompanyOptions, 27 getReceivingCompanyOptions,
  28 + isAdmin,
28 isExaminer, 29 isExaminer,
  30 + isFinance,
  31 + isProcure,
  32 + isSales,
29 isSupplier, 33 isSupplier,
  34 + isWarehousekeeper,
30 } from '@/utils/order'; 35 } from '@/utils/order';
31 import { getUserInfo } from '@/utils/user'; 36 import { getUserInfo } from '@/utils/user';
32 import { 37 import {
@@ -871,110 +876,6 @@ const OrderPage = () =&gt; { @@ -871,110 +876,6 @@ const OrderPage = () =&gt; {
871 参数:{optRecord.parameters} 876 参数:{optRecord.parameters}
872 </span> 877 </span>
873 </div> 878 </div>
874 -  
875 - <Flex title={optRecord.notes}>  
876 - <div  
877 - className="max-w-[375px] whitespace-no-wrap overflow-hidden overflow-ellipsis hover:cursor-pointer"  
878 - onClick={() => {  
879 - copyToClipboard(optRecord.notes);  
880 - message.info('备注复制成功:' + optRecord.notes);  
881 - }}  
882 - >  
883 - <span className="text-[#8C8C8C]">  
884 - 备注:  
885 - {optRecord.notes === null ? '暂无备注' : optRecord.notes}  
886 - </span>  
887 - </div>  
888 - {!isSupplier() ? (  
889 - <EditTwoTone  
890 - className="pl-1 hover:curcor-pointer"  
891 - onClick={() => {  
892 - setNotesEditVisible(true);  
893 - setSelectedRows([optRecord.id]);  
894 - setNotes(optRecord.notes);  
895 - setNotesType(1);  
896 - }}  
897 - />  
898 - ) : (  
899 - ''  
900 - )}  
901 - </Flex>  
902 -  
903 - {(roleCode === 'procure' ||  
904 - roleCode === 'warehouseKeeper' ||  
905 - roleCode === 'admin') &&  
906 - !isSupplier() ? (  
907 - <>  
908 - <Flex title={optRecord.supplierName}>  
909 - <div className="max-w-[90%] whitespace-no-wrap overflow-hidden overflow-ellipsis">  
910 - <span className="text-[#8C8C8C]">  
911 - 所属采购:  
912 - {optRecord.supplierName === null  
913 - ? '暂无'  
914 - : optRecord.supplierName}  
915 - </span>  
916 - </div>  
917 -  
918 - <Divider type="vertical" />  
919 -  
920 - <div className="max-w-[90%] whitespace-no-wrap overflow-hidden overflow-ellipsis">  
921 - <span className="text-[#8C8C8C]">  
922 - 采购备注:  
923 - {optRecord.procureNotes === null  
924 - ? '暂无备注'  
925 - : optRecord.procureNotes}  
926 - </span>  
927 - </div>  
928 - {/* 编辑备注按钮 */}  
929 - <EditTwoTone  
930 - className="pl-1 hover:curcor-pointer"  
931 - onClick={() => {  
932 - setSelectedRows([optRecord.id]);  
933 - setNotes(optRecord.procureNotes);  
934 - setNotesEditVisible(true);  
935 - setNotesType(2);  
936 - }}  
937 - />  
938 - </Flex>  
939 -  
940 - <Flex title={optRecord.supplierNotes}>  
941 - <div className="max-w-[90%] whitespace-no-wrap overflow-hidden overflow-ellipsis">  
942 - <span className="text-[#8C8C8C]">  
943 - 供应商备注:  
944 - {optRecord.supplierNotes === null  
945 - ? '暂无备注'  
946 - : optRecord.supplierNotes}  
947 - </span>  
948 - </div>  
949 - {/* 编辑备注按钮 */}  
950 - <EditTwoTone  
951 - className="pl-1 hover:curcor-pointer"  
952 - onClick={() => {  
953 - setSelectedRows([optRecord.id]);  
954 - setNotes(optRecord.supplierNotes);  
955 - setNotesEditVisible(true);  
956 - setNotesType(3);  
957 - }}  
958 - />  
959 - </Flex>  
960 - </>  
961 - ) : (  
962 - ''  
963 - )}  
964 -  
965 - {/* {optRecord.applyInvoicingNotes !== undefined &&  
966 - optRecord.applyInvoicingNotes !== null ? (  
967 - <Flex title={optRecord.notes}>  
968 - <div className="max-w-[90%] whitespace-no-wrap overflow-hidden overflow-ellipsis">  
969 - <span className="text-[#8C8C8C]">  
970 - 开票备注:  
971 - {optRecord.applyInvoicingNotes}  
972 - </span>  
973 - </div>  
974 - </Flex>  
975 - ) : (  
976 - ''  
977 - )} */}  
978 </Flex> 879 </Flex>
979 <Flex className="w-[13%]" vertical gap="small"> 880 <Flex className="w-[13%]" vertical gap="small">
980 {!isSupplier() ? ( 881 {!isSupplier() ? (
@@ -1941,11 +1842,98 @@ const OrderPage = () =&gt; { @@ -1941,11 +1842,98 @@ const OrderPage = () =&gt; {
1941 </Flex> 1842 </Flex>
1942 </Flex> 1843 </Flex>
1943 1844
1944 - {roleCode === 'admin' ||  
1945 - roleCode === 'salesManager' ||  
1946 - roleCode === 'salesRepresentative' ||  
1947 - roleCode === 'finance' ? (  
1948 - <Flex title={optRecord.notes}> 1845 + <Flex title={optRecord.notes}>
  1846 + <div
  1847 + className="overflow-hidden whitespace-normal overflow-ellipsis hover:cursor-pointer"
  1848 + onClick={() => {
  1849 + copyToClipboard(optRecord.notes);
  1850 + message.info('备注复制成功:' + optRecord.notes);
  1851 + }}
  1852 + >
  1853 + <span className="text-[#8C8C8C]">
  1854 + 备注:
  1855 + {optRecord.notes === null ? '暂无备注' : optRecord.notes}
  1856 + </span>
  1857 + </div>
  1858 + {!isSupplier() && (isSales() || isWarehousekeeper() || isAdmin()) && (
  1859 + <EditTwoTone
  1860 + className="pl-1 pr-1 hover:curcor-pointer"
  1861 + onClick={() => {
  1862 + setNotesEditVisible(true);
  1863 + setSelectedRows([optRecord.id]);
  1864 + setNotes(optRecord.notes);
  1865 + setNotesType(1);
  1866 + }}
  1867 + />
  1868 + )}
  1869 + </Flex>
  1870 +
  1871 + {(isProcure() || isWarehousekeeper() || isSales() || isAdmin()) &&
  1872 + !isSupplier() ? (
  1873 + <div className="pt-2">
  1874 + <Flex title={optRecord.supplierName}>
  1875 + <div>
  1876 + <span className="text-[#8C8C8C]">
  1877 + 所属采购:
  1878 + {optRecord.supplierName === null
  1879 + ? '暂无'
  1880 + : optRecord.supplierName}
  1881 + </span>
  1882 + </div>
  1883 +
  1884 + <Divider type="vertical" />
  1885 +
  1886 + <div className="overflow-hidden whitespace-normal overflow-ellipsis hover:cursor-pointer">
  1887 + <span className="text-[#8C8C8C]">
  1888 + 采购备注:
  1889 + {optRecord.procureNotes === null
  1890 + ? '暂无备注'
  1891 + : optRecord.procureNotes}
  1892 + </span>
  1893 + </div>
  1894 + {/* 编辑备注按钮 */}
  1895 + {(isProcure() || isAdmin()) && (
  1896 + <EditTwoTone
  1897 + className="pl-1 pr-1 hover:curcor-pointer"
  1898 + onClick={() => {
  1899 + setSelectedRows([optRecord.id]);
  1900 + setNotes(optRecord.procureNotes);
  1901 + setNotesEditVisible(true);
  1902 + setNotesType(2);
  1903 + }}
  1904 + />
  1905 + )}
  1906 + </Flex>
  1907 +
  1908 + {(isAdmin() || isProcure()) && (
  1909 + <Flex title={optRecord.supplierNotes}>
  1910 + <div className="max-w-[90%] whitespace-no-wrap overflow-hidden overflow-ellipsis">
  1911 + <span className="text-[#8C8C8C]">
  1912 + 供应商备注:
  1913 + {optRecord.supplierNotes === null
  1914 + ? '暂无备注'
  1915 + : optRecord.supplierNotes}
  1916 + </span>
  1917 + </div>
  1918 + {/* 编辑备注按钮 */}
  1919 + <EditTwoTone
  1920 + className="pl-1 hover:curcor-pointer"
  1921 + onClick={() => {
  1922 + setSelectedRows([optRecord.id]);
  1923 + setNotes(optRecord.supplierNotes);
  1924 + setNotesEditVisible(true);
  1925 + setNotesType(3);
  1926 + }}
  1927 + />
  1928 + </Flex>
  1929 + )}
  1930 + </div>
  1931 + ) : (
  1932 + ''
  1933 + )}
  1934 +
  1935 + {isAdmin() || isSales() || isFinance() ? (
  1936 + <Flex title={optRecord.notes} className="pt-2">
1949 <div className="flex items-center"> 1937 <div className="flex items-center">
1950 <div className="flex items-center max-w-[500px]"> 1938 <div className="flex items-center max-w-[500px]">
1951 <div className="max-w-md overflow-hidden whitespace-no-wrap overflow-ellipsis"> 1939 <div className="max-w-md overflow-hidden whitespace-no-wrap overflow-ellipsis">
@@ -2206,22 +2194,19 @@ const OrderPage = () =&gt; { @@ -2206,22 +2194,19 @@ const OrderPage = () =&gt; {
2206 }} 2194 }}
2207 > 2195 >
2208 <span className="text-[#8C8C8C]">收货人:</span> 2196 <span className="text-[#8C8C8C]">收货人:</span>
  2197 + {!isSupplier() && (
  2198 + <Tooltip className="order-tooltip" title="详情">
  2199 + <ContainerTwoTone
  2200 + className="px-1 hover:curcor-pointer"
  2201 + onClick={() => {
  2202 + createOptObject(null, record.id);
  2203 + setDeliverInfoDrawerVisible(true);
  2204 + }}
  2205 + />
  2206 + </Tooltip>
  2207 + )}
2209 <span className="text-slate-700"> 2208 <span className="text-slate-700">
2210 {record.customerName + ' '} 2209 {record.customerName + ' '}
2211 -  
2212 - {!isSupplier() ? (  
2213 - <Tooltip className="order-tooltip" title="详情">  
2214 - <ContainerTwoTone  
2215 - className="hover:curcor-pointer"  
2216 - onClick={() => {  
2217 - createOptObject(null, record.id);  
2218 - setDeliverInfoDrawerVisible(true);  
2219 - }}  
2220 - />  
2221 - </Tooltip>  
2222 - ) : (  
2223 - ''  
2224 - )}  
2225 </span> 2210 </span>
2226 </span> 2211 </span>
2227 </div> 2212 </div>
@@ -2297,7 +2282,7 @@ const OrderPage = () =&gt; { @@ -2297,7 +2282,7 @@ const OrderPage = () =&gt; {
2297 2282
2298 <div title={record.notes}> 2283 <div title={record.notes}>
2299 <div 2284 <div
2300 - className="max-w-md overflow-hidden whitespace-no-wrap overflow-ellipsis hover:cursor-pointer" 2285 + className="max-w-[850px] whitespace-normal overflow-hidden overflow-ellipsis hover:cursor-pointer"
2301 onClick={() => { 2286 onClick={() => {
2302 copyToClipboard(record.notes); 2287 copyToClipboard(record.notes);
2303 message.info('备注复制成功:' + record.notes); 2288 message.info('备注复制成功:' + record.notes);
@@ -3570,6 +3555,29 @@ const OrderPage = () =&gt; { @@ -3570,6 +3555,29 @@ const OrderPage = () =&gt; {
3570 } 3555 }
3571 3556
3572 /** 3557 /**
  3558 + * 排除采购
  3559 + */
  3560 + if ((roleCode === 'procure' || roleCode === 'admin') && !isSupplier()) {
  3561 + mainOrdersColumns.push({
  3562 + title: '采购排除',
  3563 + width: 120,
  3564 + dataIndex: 'excludeProcureNames',
  3565 + fieldProps: {
  3566 + mode: 'multiple',
  3567 + },
  3568 + valueType: 'select',
  3569 + request: async () => {
  3570 + const res = await postServiceOrderProvideProcurementRoles();
  3571 + let options = res.data?.map((item) => {
  3572 + return { label: item, value: item };
  3573 + });
  3574 + return options;
  3575 + },
  3576 + hideInTable: true,
  3577 + });
  3578 + }
  3579 +
  3580 + /**
3573 * 仓库可以筛选发货仓库 3581 * 仓库可以筛选发货仓库
3574 */ 3582 */
3575 if (roleCode === 'warehouseKeeper' || roleCode === 'admin') { 3583 if (roleCode === 'warehouseKeeper' || roleCode === 'admin') {
src/utils/order.ts
@@ -9,7 +9,7 @@ export function getReceivingCompanyOptions(PAYEE_OPTIONS: any) { @@ -9,7 +9,7 @@ export function getReceivingCompanyOptions(PAYEE_OPTIONS: any) {
9 export function isSupplier() { 9 export function isSupplier() {
10 let userInfo = getUserInfo(); 10 let userInfo = getUserInfo();
11 if (userInfo) { 11 if (userInfo) {
12 - return ['首能', '枭源'].includes(userInfo.username); 12 + return ['首能', '枭源'].includes(userInfo?.username);
13 } 13 }
14 return false; 14 return false;
15 } 15 }
@@ -17,7 +17,49 @@ export function isSupplier() { @@ -17,7 +17,49 @@ export function isSupplier() {
17 export function isExaminer() { 17 export function isExaminer() {
18 let userInfo = getUserInfo(); 18 let userInfo = getUserInfo();
19 if (userInfo) { 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 return false; 64 return false;
23 } 65 }