mall-components 1.0.0

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 (122) hide show
  1. package/README.md +128 -0
  2. package/build/_components-raw.css +791 -0
  3. package/build/_shims/antd.js +1 -0
  4. package/build/_shims/icons.js +1 -0
  5. package/build/_shims/moment.js +1 -0
  6. package/build/_shims/react-dom.js +1 -0
  7. package/build/_shims/react.js +1 -0
  8. package/build/adapters/DataSourceAdapter.d.ts +46 -0
  9. package/build/components/AdminLayout/AdminLayout.d.ts +5 -0
  10. package/build/components/AdminLayout/Breadcrumb.d.ts +8 -0
  11. package/build/components/AdminLayout/MainContent.d.ts +17 -0
  12. package/build/components/AdminLayout/Navbar.d.ts +10 -0
  13. package/build/components/AdminLayout/Sidebar.d.ts +14 -0
  14. package/build/components/AdminLayout/TabBar.d.ts +13 -0
  15. package/build/components/AdminLayout/TabPane.d.ts +4 -0
  16. package/build/components/AdminLayout/index.d.ts +3 -0
  17. package/build/components/AdminLayout/types.d.ts +42 -0
  18. package/build/components/CouponCard/CouponCard.d.ts +20 -0
  19. package/build/components/CouponCard/index.d.ts +1 -0
  20. package/build/components/OrderForm/OrderForm.d.ts +18 -0
  21. package/build/components/OrderForm/index.d.ts +1 -0
  22. package/build/components/OrderList/OrderList.d.ts +29 -0
  23. package/build/components/OrderList/index.d.ts +1 -0
  24. package/build/components/ProductForm/ProductForm.d.ts +18 -0
  25. package/build/components/ProductForm/index.d.ts +3 -0
  26. package/build/components/ProductList/ProductList.d.ts +47 -0
  27. package/build/components/ProductList/index.d.ts +3 -0
  28. package/build/components/PromotionCard/PromotionCard.d.ts +22 -0
  29. package/build/components/PromotionCard/index.d.ts +1 -0
  30. package/build/components/RoleCard/RoleCard.d.ts +18 -0
  31. package/build/components/RoleCard/index.d.ts +1 -0
  32. package/build/components/UserCard/UserCard.d.ts +17 -0
  33. package/build/components/UserCard/index.d.ts +1 -0
  34. package/build/entry-meta.d.ts +603 -0
  35. package/build/index.css +1 -0
  36. package/build/index.js +1 -0
  37. package/build/mall-components-meta.js +2563 -0
  38. package/build/mall-components.cdn.umd.css +1 -0
  39. package/build/mall-components.cdn.umd.js +8 -0
  40. package/build/mall-components.codesandbox.combined.js +1094 -0
  41. package/build/mall-components.codesandbox.css +401 -0
  42. package/build/mall-components.codesandbox.js +1080 -0
  43. package/build/mall-components.umd.css +1 -0
  44. package/build/mall-components.umd.js +8 -0
  45. package/build/meta/adminLayoutMeta.d.ts +3 -0
  46. package/build/meta/couponCardMeta.d.ts +128 -0
  47. package/build/meta/icons.d.ts +10 -0
  48. package/build/meta/orderFormMeta.d.ts +111 -0
  49. package/build/meta/orderListMeta.d.ts +170 -0
  50. package/build/meta/productFormMeta.d.ts +3 -0
  51. package/build/meta/productListMeta.d.ts +200 -0
  52. package/build/meta/promotionCardMeta.d.ts +129 -0
  53. package/build/meta/roleCardMeta.d.ts +3 -0
  54. package/build/meta/tabPaneMeta.d.ts +3 -0
  55. package/build/meta/userCardMeta.d.ts +3 -0
  56. package/build/meta.d.ts +605 -0
  57. package/build/setters/RestApiTester.d.ts +11 -0
  58. package/build/types/common.d.ts +17 -0
  59. package/build/types/marketing.d.ts +128 -0
  60. package/build/types/order.d.ts +174 -0
  61. package/build/types/permission.d.ts +101 -0
  62. package/build/types/product.d.ts +47 -0
  63. package/package.json +1 -0
  64. package/src/adapters/DataSourceAdapter.ts +445 -0
  65. package/src/components/AdminLayout/AdminLayout.scss +447 -0
  66. package/src/components/AdminLayout/AdminLayout.tsx +681 -0
  67. package/src/components/AdminLayout/Breadcrumb.tsx +60 -0
  68. package/src/components/AdminLayout/MainContent.tsx +54 -0
  69. package/src/components/AdminLayout/Navbar.tsx +76 -0
  70. package/src/components/AdminLayout/Sidebar.tsx +256 -0
  71. package/src/components/AdminLayout/TabBar.tsx +177 -0
  72. package/src/components/AdminLayout/TabPane.tsx +29 -0
  73. package/src/components/AdminLayout/index.ts +3 -0
  74. package/src/components/AdminLayout/types.ts +46 -0
  75. package/src/components/CouponCard/CouponCard.scss +55 -0
  76. package/src/components/CouponCard/CouponCard.tsx +687 -0
  77. package/src/components/CouponCard/index.ts +1 -0
  78. package/src/components/OrderForm/OrderForm.scss +148 -0
  79. package/src/components/OrderForm/OrderForm.tsx +503 -0
  80. package/src/components/OrderForm/index.ts +1 -0
  81. package/src/components/OrderList/OrderList.scss +160 -0
  82. package/src/components/OrderList/OrderList.tsx +885 -0
  83. package/src/components/OrderList/index.ts +1 -0
  84. package/src/components/ProductForm/ProductForm.scss +23 -0
  85. package/src/components/ProductForm/ProductForm.tsx +442 -0
  86. package/src/components/ProductForm/index.ts +3 -0
  87. package/src/components/ProductList/ProductList.scss +293 -0
  88. package/src/components/ProductList/ProductList.tsx +454 -0
  89. package/src/components/ProductList/index.ts +3 -0
  90. package/src/components/PromotionCard/PromotionCard.scss +71 -0
  91. package/src/components/PromotionCard/PromotionCard.tsx +579 -0
  92. package/src/components/PromotionCard/index.ts +1 -0
  93. package/src/components/RoleCard/RoleCard.scss +77 -0
  94. package/src/components/RoleCard/RoleCard.tsx +463 -0
  95. package/src/components/RoleCard/index.ts +1 -0
  96. package/src/components/UserCard/UserCard.scss +51 -0
  97. package/src/components/UserCard/UserCard.tsx +432 -0
  98. package/src/components/UserCard/index.ts +1 -0
  99. package/src/entry-components.ts +39 -0
  100. package/src/entry-meta.ts +23 -0
  101. package/src/index.scss +4 -0
  102. package/src/index.ts +36 -0
  103. package/src/index.tsx +17 -0
  104. package/src/meta/adminLayoutMeta.ts +154 -0
  105. package/src/meta/couponCardMeta.ts +287 -0
  106. package/src/meta/icons.ts +41 -0
  107. package/src/meta/orderFormMeta.ts +279 -0
  108. package/src/meta/orderListMeta.ts +443 -0
  109. package/src/meta/productFormMeta.ts +253 -0
  110. package/src/meta/productListMeta.ts +434 -0
  111. package/src/meta/promotionCardMeta.ts +276 -0
  112. package/src/meta/roleCardMeta.ts +142 -0
  113. package/src/meta/tabPaneMeta.ts +69 -0
  114. package/src/meta/userCardMeta.ts +128 -0
  115. package/src/meta.ts +25 -0
  116. package/src/setters/RestApiTester.tsx +219 -0
  117. package/src/shims/require.js +8 -0
  118. package/src/types/common.ts +19 -0
  119. package/src/types/marketing.ts +124 -0
  120. package/src/types/order.ts +169 -0
  121. package/src/types/permission.ts +102 -0
  122. package/src/types/product.ts +49 -0
package/build/index.js ADDED
@@ -0,0 +1 @@
1
+ import D,{useMemo as yr,useEffect as Lo,useCallback as Fo}from"react";import{Table as Uo,Input as Mo,Pagination as Bo,Card as vr,Space as Mt,Button as Je,Switch as zo,Select as Cr}from"antd";import{SearchOutlined as xr,ReloadOutlined as _o,PlusOutlined as Yo,DownloadOutlined as Vo,UploadOutlined as jo}from"@ant-design/icons";var Ee=class{static create(r){if(!r)return console.warn("[DataSourceAdapterFactory] config is undefined, using mock adapter"),new Ze({type:"mock",mockData:{code:200,message:"success",data:{pageNum:1,pageSize:10,total:0,list:[]}}});if(!r.type)return console.warn("[DataSourceAdapterFactory] config.type is undefined, using mock adapter"),new Ze({type:"mock",mockData:r.mockData||{code:200,message:"success",data:{pageNum:1,pageSize:10,total:0,list:[]}}});switch(r.type){case"rest":return new Ft(r);case"mock":return new Ze(r);case"variable":return new Ut(r);default:return console.warn(`[DataSourceAdapterFactory] Unsupported data source type: ${r.type}, using mock adapter`),new Ze({type:"mock",mockData:{code:200,message:"success",data:{pageNum:1,pageSize:10,total:0,list:[]}}})}}},Ft=class{constructor(r){this.config=r}async fetch(r){let l=this.buildUrl(r),u=await fetch(l,{method:this.config.method||"GET",headers:{"Content-Type":"application/json",...this.config.headers},body:this.config.method!=="GET"?JSON.stringify(r):void 0});if(!u.ok)throw new Error(`HTTP error! status: ${u.status}`);let x=await u.json();if(this.config.transform)try{x=new Function("data",this.config.transform)(x)}catch(N){console.error("Transform function error:",N)}return x}async submit(r){return(await fetch(this.config.api,{method:"POST",headers:{"Content-Type":"application/json",...this.config.headers},body:JSON.stringify(r)})).json()}async delete(r){return(await fetch(`${this.config.api}/${r}`,{method:"DELETE",headers:this.config.headers})).json()}async update(r,l){return(await fetch(`${this.config.api}/${r}`,{method:"PUT",headers:{"Content-Type":"application/json",...this.config.headers},body:JSON.stringify(l)})).json()}buildUrl(r){if(!r||this.config.method!=="GET")return this.config.api;let l=new URL(this.config.api,window.location.origin);return Object.keys(r).forEach(u=>{r[u]!==void 0&&r[u]!==null&&r[u]!==""&&l.searchParams.append(u,r[u])}),l.toString()}},Ze=class{constructor(r){this.config=r}async fetch(r){console.log("[MockDataAdapter] fetch \u88AB\u8C03\u7528\uFF0Cconfig:",this.config,"params:",r),await new Promise(u=>setTimeout(u,300));let l=this.config.mockData;if(console.log("[MockDataAdapter] \u539F\u59CB mockData:",l,"\u7C7B\u578B:",typeof l),!l||l==="")console.log("[MockDataAdapter] mockData \u4E3A\u7A7A\uFF0C\u4F7F\u7528\u9ED8\u8BA4\u6570\u636E"),l={code:200,message:"success",data:{pageNum:1,pageSize:10,total:50,list:[{id:1,name:"\u65F6\u5C1A\u8FD0\u52A8\u978B",productSn:"PRODUCT001",price:269,stock:100,sale:120,brandName:"\u65F6\u5C1A\u8FD0\u52A8",productCategoryName:"\u978B\u5B50",pic:"https://img.yzcdn.cn/vant/cat.jpeg",publishStatus:1,newStatus:1,recommandStatus:1,verifyStatus:1},{id:2,name:"\u4F11\u95F2T\u6064",productSn:"PRODUCT002",price:99,stock:200,sale:350,brandName:"\u4F11\u95F2\u670D\u9970",productCategoryName:"\u8863\u670D",pic:"https://img.yzcdn.cn/vant/cat.jpeg",publishStatus:1,newStatus:1,recommandStatus:0,verifyStatus:1},{id:3,name:"\u53CC\u80A9\u80CC\u5305",productSn:"PRODUCT003",price:189,stock:80,sale:80,brandName:"\u65C5\u884C\u7BB1\u5305",productCategoryName:"\u914D\u9970",pic:"https://img.yzcdn.cn/vant/cat.jpeg",publishStatus:1,newStatus:0,recommandStatus:1,verifyStatus:1},{id:4,name:"\u8FD0\u52A8\u624B\u8868",productSn:"PRODUCT004",price:499,stock:50,sale:60,brandName:"\u667A\u80FD\u6570\u7801",productCategoryName:"\u6570\u7801",pic:"https://img.yzcdn.cn/vant/cat.jpeg",publishStatus:1,newStatus:1,recommandStatus:1,verifyStatus:1},{id:5,name:"\u725B\u4ED4\u88E4",productSn:"PRODUCT005",price:199,stock:150,sale:280,brandName:"\u65F6\u5C1A\u725B\u4ED4",productCategoryName:"\u8863\u670D",pic:"https://img.yzcdn.cn/vant/cat.jpeg",publishStatus:1,newStatus:0,recommandStatus:0,verifyStatus:1}]}};else try{typeof l=="string"&&(l=JSON.parse(l)),console.log("[MockDataAdapter] JSON \u89E3\u6790\u540E\u7684\u6570\u636E:",l)}catch(u){console.error("[MockDataAdapter] JSON \u89E3\u6790\u5931\u8D25:",u),l={code:200,message:"success",data:{pageNum:1,pageSize:10,total:0,list:[]}}}if(this.config.transform)try{l=new Function("data",this.config.transform)(l)}catch(u){console.error("Transform function error:",u)}if(console.log("[MockDataAdapter] \u6700\u7EC8\u8FD4\u56DE\u6570\u636E:",l),r?.pageNum&&r?.pageSize&&l?.data?.list){let u=(r.pageNum-1)*r.pageSize,x=u+r.pageSize;return{...l,data:{...l.data,list:l.data.list.slice(u,x)}}}return l}async submit(r){return await new Promise(l=>setTimeout(l,300)),{code:200,message:"success",data:r}}async delete(r){return await new Promise(l=>setTimeout(l,300)),{code:200,message:"success"}}async update(r,l){return await new Promise(u=>setTimeout(u,300)),{code:200,message:"success",data:l}}},Ut=class{constructor(r){this.config=r}async fetch(r){if(console.log("[VariableAdapter] fetch \u88AB\u8C03\u7528\uFF0Cconfig:",{variableName:this.config.variableName,dataSource:this.config.dataSource}),this.config.dataSource!==void 0&&this.config.dataSource!==null){console.log("[VariableAdapter] \u4F7F\u7528 dataSource:",this.config.dataSource);let x=this.config.dataSource;if(typeof x=="string")try{x=JSON.parse(x)}catch(N){console.error("[VariableAdapter] dataSource JSON \u89E3\u6790\u5931\u8D25:",N)}return x&&typeof x=="object"?x.code===200&&x.data?x:x.list||Array.isArray(x)?{code:200,message:"success",data:{pageNum:1,pageSize:10,total:Array.isArray(x)?x.length:x.total||0,list:Array.isArray(x)?x:x.list||[]}}:{code:200,message:"success",data:x}:{code:200,message:"success",data:{pageNum:1,pageSize:10,total:0,list:[]}}}let l=this.config.variableName;if(!l)return console.warn("[VariableAdapter] variableName \u548C dataSource \u90FD\u4E3A\u7A7A\uFF0C\u8FD4\u56DE\u7A7A\u6570\u636E"),{code:200,message:"success",data:{pageNum:1,pageSize:10,total:0,list:[]}};let u=window[l];return console.log("[VariableAdapter] \u4ECE window \u83B7\u53D6\u7684\u503C:",u),u==null?(console.warn("[VariableAdapter] \u53D8\u91CF\u4E0D\u5B58\u5728\uFF0C\u8FD4\u56DE\u7A7A\u6570\u636E"),{code:200,message:"success",data:{pageNum:1,pageSize:10,total:0,list:[]}}):{code:200,message:"success",data:u}}async submit(r){let l=this.config.variableName;if(!l)throw new Error("Variable name is required for variable adapter");return window[l]=r,{code:200,message:"success",data:r}}async delete(r){return{code:200,message:"success"}}async update(r,l){return this.submit(l)}};var Ko=({dataSourceType:p="mock",api:r,method:l="GET",mockData:u,variableName:x,dataSource:N,showFilter:U=!0,showAction:K=!0,showSelection:G=!0,showOperation:H=!0,showStatus:j=!0,showPagination:v=!0,filterFields:O=[],actionButtons:J=[],columns:re,batchOperations:W=[],onRowClick:V,onSearch:M,onPageChange:w,onActionClick:ae,onBatchOperation:i,style:L,className:z})=>{let[F,de]=D.useState(!1),[S,X]=D.useState([]),[$,C]=D.useState(0),[_,B]=D.useState(1),[ie,se]=D.useState(10),[oe,ue]=D.useState(""),[ye,ke]=D.useState([]),[ne,Te]=D.useState([]),[ve,g]=D.useState(),c=JSON.stringify({code:200,message:"success",data:{pageNum:1,pageSize:10,total:50,list:[{id:1,name:"\u65F6\u5C1A\u8FD0\u52A8\u978B",productSn:"PRODUCT001",price:269,stock:100,sale:120,brandName:"\u65F6\u5C1A\u8FD0\u52A8",productCategoryName:"\u978B\u5B50",pic:"https://img.yzcdn.cn/vant/cat.jpeg",publishStatus:1,newStatus:1,recommandStatus:1,verifyStatus:1},{id:2,name:"\u4F11\u95F2T\u6064",productSn:"PRODUCT002",price:99,stock:200,sale:350,brandName:"\u4F11\u95F2\u670D\u9970",productCategoryName:"\u8863\u670D",pic:"https://img.yzcdn.cn/vant/cat.jpeg",publishStatus:1,newStatus:0,recommandStatus:1,verifyStatus:1},{id:3,name:"\u53CC\u80A9\u80CC\u5305",productSn:"PRODUCT003",price:189,stock:80,sale:80,brandName:"\u65C5\u884C\u7BB1\u5305",productCategoryName:"\u914D\u9970",pic:"https://img.yzcdn.cn/vant/cat.jpeg",publishStatus:1,newStatus:1,recommandStatus:0,verifyStatus:1},{id:4,name:"\u8FD0\u52A8\u624B\u8868",productSn:"PRODUCT004",price:499,stock:50,sale:60,brandName:"\u667A\u80FD\u6570\u7801",productCategoryName:"\u6570\u7801",pic:"https://img.yzcdn.cn/vant/cat.jpeg",publishStatus:1,newStatus:1,recommandStatus:1,verifyStatus:1},{id:5,name:"\u725B\u4ED4\u88E4",productSn:"PRODUCT005",price:199,stock:150,sale:280,brandName:"\u65F6\u5C1A\u725B\u4ED4",productCategoryName:"\u8863\u670D",pic:"https://img.yzcdn.cn/vant/cat.jpeg",publishStatus:1,newStatus:0,recommandStatus:0,verifyStatus:1}]}}),d=yr(()=>{let I=u;return I||(I=c),console.log("[ProductList] dataSourceConfig \u91CD\u65B0\u8BA1\u7B97:",{dataSourceType:p,mockData:typeof u=="string"?u.substring(0,100)+"...":u,variableName:x,dataSource:typeof N=="object"?"object":N}),{type:p,api:r||"",method:l,mockData:I,variableName:x||"",dataSource:N}},[p,r,l,u,x,N]);console.log("[ProductList] \u7EC4\u4EF6\u6E32\u67D3\uFF0Cprops:",{dataSourceType:p,api:r,method:l,mockData:typeof u=="string"?u.substring(0,100)+"...":u,variableName:x,dataSource:typeof N=="object"?"object":N,showFilter:U,showAction:K,showSelection:G});let f=yr(()=>(console.log("[ProductList] adapter \u91CD\u65B0\u521B\u5EFA, dataSourceType:",p),Ee.create(d)),[d]),E=Fo(async()=>{console.log("[ProductList] fetchData \u5F00\u59CB\uFF0C\u53C2\u6570:",{currentPage:_,pageSize:ie,searchText:oe}),de(!0);try{let I={pageNum:_,pageSize:ie,keyword:oe||void 0};console.log("[ProductList] \u8C03\u7528 adapter.fetch\uFF0C\u53C2\u6570:",I);let R=await f.fetch(I);console.log("[ProductList] adapter.fetch \u8FD4\u56DE\u7ED3\u679C:",R),R.code===200&&(X(R.data.list),C(R.data.total),console.log("[ProductList] \u6570\u636E\u66F4\u65B0\u6210\u529F\uFF0C\u603B\u6570:",R.data.total))}catch(I){console.error("[ProductList] \u83B7\u53D6\u6570\u636E\u5931\u8D25:",I)}finally{de(!1)}},[_,ie,oe,f]);Lo(()=>{console.log("[ProductList] useEffect \u89E6\u53D1\uFF0C\u5F00\u59CB\u83B7\u53D6\u6570\u636E, dataSourceType:",p),E()},[E,p]);let m=()=>{B(1),E(),M?.(oe)},A=(I,R)=>{B(I),se(R),w?.(I,R)},a=()=>{ve&&ne.length>0&&i?.(ve,ne)},e=[{title:"\u5546\u54C1\u56FE\u7247",dataIndex:"pic",key:"pic",width:100,render:I=>D.createElement("img",{src:I,alt:"\u5546\u54C1\u56FE\u7247",style:{width:60,height:60,objectFit:"cover"}})},{title:"\u5546\u54C1\u540D\u79F0",dataIndex:"name",key:"name",width:200},{title:"\u5546\u54C1\u7F16\u53F7",dataIndex:"productSn",key:"productSn",width:150},{title:"\u4EF7\u683C",dataIndex:"price",key:"price",width:100,render:I=>`\xA5${I.toFixed(2)}`},{title:"\u5E93\u5B58",dataIndex:"stock",key:"stock",width:80},{title:"\u9500\u91CF",dataIndex:"sale",key:"sale",width:80},{title:"\u54C1\u724C",dataIndex:"brandName",key:"brandName",width:100},{title:"\u5206\u7C7B",dataIndex:"productCategoryName",key:"productCategoryName",width:100},...j?[{title:"\u72B6\u6001",dataIndex:"publishStatus",key:"publishStatus",width:100,render:I=>D.createElement(zo,{checked:I===1,checkedChildren:"\u4E0A\u67B6",unCheckedChildren:"\u4E0B\u67B6"})}]:[],...H?[{title:"\u64CD\u4F5C",key:"operation",width:150,render:(I,R)=>D.createElement(Mt,{size:"small"},D.createElement(Je,{type:"link",size:"small",onClick:()=>V?.(R)},"\u67E5\u770B"),D.createElement(Je,{type:"link",size:"small"},"\u7F16\u8F91"),D.createElement(Je,{type:"link",size:"small",danger:!0},"\u5220\u9664"))}]:[]],b=G?{selectedRowKeys:ye,onChange:(I,R)=>{ke(I),Te(R)}}:void 0,Y=I=>{switch(I){case"plus":return D.createElement(Yo,null);case"download":return D.createElement(Vo,null);case"upload":return D.createElement(jo,null);default:return null}};return D.createElement("div",{className:`mall-product-list ${z||""}`,style:L},U&&D.createElement(vr,{className:"mall-product-list-filter",size:"small"},D.createElement(Mt,null,D.createElement(Mo,{placeholder:"\u8BF7\u8F93\u5165\u5546\u54C1\u540D\u79F0\u6216\u7F16\u53F7",prefix:D.createElement(xr,null),value:oe,onChange:I=>ue(I.target.value),onPressEnter:m,style:{width:300}}),D.createElement(Je,{type:"primary",icon:D.createElement(xr,null),onClick:m},"\u641C\u7D22"),D.createElement(Je,{icon:D.createElement(_o,null),onClick:()=>E()},"\u5237\u65B0"))),K&&D.createElement(vr,{className:"mall-product-list-action",size:"small"},D.createElement(Mt,null,J.map((I,R)=>D.createElement(Je,{key:R,type:I.type||"default",icon:Y(I.icon),onClick:()=>ae?.(I.onClick||"")},I.text)),G&&W.length>0&&D.createElement(D.Fragment,null,D.createElement(Cr,{placeholder:"\u6279\u91CF\u64CD\u4F5C",value:ve,onChange:g,style:{width:150}},W.map((I,R)=>D.createElement(Cr.Option,{key:R,value:I.value},I.text))),D.createElement(Je,{onClick:a},"\u6267\u884C")))),D.createElement("div",{className:"mall-product-list-table"},D.createElement(Uo,{rowKey:"id",columns:re||e,dataSource:S,loading:F,rowSelection:b,pagination:!1,scroll:{x:1200}})),v&&D.createElement("div",{className:"pagination-wrapper"},D.createElement(Bo,{current:_,pageSize:ie,total:$,showSizeChanger:!0,showQuickJumper:!0,showTotal:I=>`\u5171 ${I} \u6761`,onChange:A})))},Sr=Ko;var Tr=Sr;import o,{useEffect as $o,useState as qo}from"react";import{Form as ee,Input as qe,InputNumber as Qe,Select as Ce,Button as Bt,Card as Go,Space as Jo,message as kr,Switch as lt,Divider as Qo,Row as Ue,Col as ce,Tabs as Ho}from"antd";var Wo=({initialValues:p,mode:r="create",showBasicInfo:l=!0,showPriceInfo:u=!0,showStockInfo:x=!0,showStatusInfo:N=!0,showDescription:U=!0,onSubmit:K,onCancel:G,style:H,className:j})=>{let[v]=ee.useForm(),[O,J]=qo("basic");$o(()=>{if(p){let S=p;if(typeof p=="string")try{S=JSON.parse(p)}catch(X){console.error("Failed to parse initialValues:",X),S={}}v.setFieldsValue(S)}},[p,v]);let re=async()=>{try{let S=await v.validateFields();K?.(S),kr.success("\u63D0\u4EA4\u6210\u529F")}catch(S){console.error("Validation failed:",S),kr.error("\u8BF7\u68C0\u67E5\u8868\u5355\u586B\u5199\u662F\u5426\u6B63\u786E")}},W=()=>{v.resetFields(),G?.()},V=()=>{v.resetFields()},M=()=>{if(typeof p=="string")try{return JSON.parse(p)}catch{return{}}return p||{}},w=r==="view",ae=[o.createElement(Ue,{gutter:16,key:"basic-row-1"},o.createElement(ce,{span:12},o.createElement(ee.Item,{name:"name",label:"\u5546\u54C1\u540D\u79F0",rules:[{required:!0,message:"\u8BF7\u8F93\u5165\u5546\u54C1\u540D\u79F0"}]},o.createElement(qe,{placeholder:"\u8BF7\u8F93\u5165\u5546\u54C1\u540D\u79F0",disabled:w}))),o.createElement(ce,{span:12},o.createElement(ee.Item,{name:"productSn",label:"\u5546\u54C1\u8D27\u53F7",rules:[{required:!0,message:"\u8BF7\u8F93\u5165\u5546\u54C1\u8D27\u53F7"}]},o.createElement(qe,{placeholder:"\u8BF7\u8F93\u5165\u5546\u54C1\u8D27\u53F7",disabled:w})))),o.createElement(Ue,{gutter:16,key:"basic-row-2"},o.createElement(ce,{span:12},o.createElement(ee.Item,{name:"brandName",label:"\u54C1\u724C\u540D\u79F0"},o.createElement(qe,{placeholder:"\u8BF7\u8F93\u5165\u54C1\u724C\u540D\u79F0",disabled:w}))),o.createElement(ce,{span:12},o.createElement(ee.Item,{name:"productCategoryName",label:"\u5546\u54C1\u5206\u7C7B"},o.createElement(Ce,{placeholder:"\u8BF7\u9009\u62E9\u5546\u54C1\u5206\u7C7B",disabled:w},o.createElement(Ce.Option,{value:"\u624B\u673A"},"\u624B\u673A"),o.createElement(Ce.Option,{value:"\u7B14\u8BB0\u672C"},"\u7B14\u8BB0\u672C"),o.createElement(Ce.Option,{value:"\u5E73\u677F"},"\u5E73\u677F"),o.createElement(Ce.Option,{value:"\u8033\u673A"},"\u8033\u673A"),o.createElement(Ce.Option,{value:"\u624B\u8868"},"\u624B\u8868"),o.createElement(Ce.Option,{value:"\u8863\u670D"},"\u8863\u670D"),o.createElement(Ce.Option,{value:"\u978B\u5B50"},"\u978B\u5B50"),o.createElement(Ce.Option,{value:"\u914D\u9970"},"\u914D\u9970"),o.createElement(Ce.Option,{value:"\u6570\u7801"},"\u6570\u7801"))))),o.createElement(ee.Item,{key:"pic",name:"pic",label:"\u5546\u54C1\u56FE\u7247"},o.createElement(qe,{placeholder:"\u8BF7\u8F93\u5165\u5546\u54C1\u56FE\u7247 URL",disabled:w})),o.createElement(Ue,{gutter:16,key:"basic-row-3"},o.createElement(ce,{span:12},o.createElement(ee.Item,{name:"subTitle",label:"\u5546\u54C1\u526F\u6807\u9898"},o.createElement(qe,{placeholder:"\u8BF7\u8F93\u5165\u5546\u54C1\u526F\u6807\u9898",disabled:w}))),o.createElement(ce,{span:12},o.createElement(ee.Item,{name:"keywords",label:"\u5546\u54C1\u5173\u952E\u8BCD"},o.createElement(qe,{placeholder:"\u591A\u4E2A\u5173\u952E\u8BCD\u7528\u9017\u53F7\u5206\u9694",disabled:w}))))],i=[o.createElement(Ue,{gutter:16,key:"price-row-1"},o.createElement(ce,{span:12},o.createElement(ee.Item,{name:"price",label:"\u5546\u54C1\u4EF7\u683C",rules:[{required:!0,message:"\u8BF7\u8F93\u5165\u5546\u54C1\u4EF7\u683C"}]},o.createElement(Qe,{placeholder:"\u8BF7\u8F93\u5165\u5546\u54C1\u4EF7\u683C",style:{width:"100%"},min:0,precision:2,prefix:"\xA5",disabled:w}))),o.createElement(ce,{span:12},o.createElement(ee.Item,{name:"originalPrice",label:"\u539F\u4EF7"},o.createElement(Qe,{placeholder:"\u8BF7\u8F93\u5165\u539F\u4EF7",style:{width:"100%"},min:0,precision:2,prefix:"\xA5",disabled:w})))),o.createElement(Ue,{gutter:16,key:"price-row-2"},o.createElement(ce,{span:12},o.createElement(ee.Item,{name:"promotionPrice",label:"\u4FC3\u9500\u4EF7"},o.createElement(Qe,{placeholder:"\u8BF7\u8F93\u5165\u4FC3\u9500\u4EF7",style:{width:"100%"},min:0,precision:2,prefix:"\xA5",disabled:w}))),o.createElement(ce,{span:12},o.createElement(ee.Item,{name:"unit",label:"\u5546\u54C1\u5355\u4F4D"},o.createElement(Ce,{placeholder:"\u8BF7\u9009\u62E9\u5546\u54C1\u5355\u4F4D",disabled:w},o.createElement(Ce.Option,{value:"\u4EF6"},"\u4EF6"),o.createElement(Ce.Option,{value:"\u53F0"},"\u53F0"),o.createElement(Ce.Option,{value:"\u90E8"},"\u90E8"),o.createElement(Ce.Option,{value:"\u5757"},"\u5757"),o.createElement(Ce.Option,{value:"\u526F"},"\u526F")))))],L=[o.createElement(Ue,{gutter:16,key:"stock-row-1"},o.createElement(ce,{span:12},o.createElement(ee.Item,{name:"stock",label:"\u5546\u54C1\u5E93\u5B58",rules:[{required:!0,message:"\u8BF7\u8F93\u5165\u5546\u54C1\u5E93\u5B58"}]},o.createElement(Qe,{placeholder:"\u8BF7\u8F93\u5165\u5546\u54C1\u5E93\u5B58",style:{width:"100%"},min:0,disabled:w}))),o.createElement(ce,{span:12},o.createElement(ee.Item,{name:"lowStock",label:"\u5E93\u5B58\u9884\u8B66\u503C"},o.createElement(Qe,{placeholder:"\u8BF7\u8F93\u5165\u5E93\u5B58\u9884\u8B66\u503C",style:{width:"100%"},min:0,disabled:w})))),o.createElement(Ue,{gutter:16,key:"stock-row-2"},o.createElement(ce,{span:12},o.createElement(ee.Item,{name:"weight",label:"\u5546\u54C1\u91CD\u91CF(kg)"},o.createElement(Qe,{placeholder:"\u8BF7\u8F93\u5165\u5546\u54C1\u91CD\u91CF",style:{width:"100%"},min:0,precision:2,disabled:w}))),o.createElement(ce,{span:12},o.createElement(ee.Item,{name:"sort",label:"\u6392\u5E8F"},o.createElement(Qe,{placeholder:"\u8BF7\u8F93\u5165\u6392\u5E8F",style:{width:"100%"},min:0,disabled:w}))))],z=[o.createElement(Ue,{gutter:16,key:"status-row-1"},o.createElement(ce,{span:8},o.createElement(ee.Item,{name:"publishStatus",label:"\u4E0A\u67B6\u72B6\u6001",valuePropName:"checked",getValueFromEvent:S=>S?1:0,getValueProps:S=>({checked:S===1})},o.createElement(lt,{checkedChildren:"\u4E0A\u67B6",unCheckedChildren:"\u4E0B\u67B6",disabled:w}))),o.createElement(ce,{span:8},o.createElement(ee.Item,{name:"newStatus",label:"\u65B0\u54C1\u72B6\u6001",valuePropName:"checked",getValueFromEvent:S=>S?1:0,getValueProps:S=>({checked:S===1})},o.createElement(lt,{checkedChildren:"\u662F",unCheckedChildren:"\u5426",disabled:w}))),o.createElement(ce,{span:8},o.createElement(ee.Item,{name:"recommandStatus",label:"\u63A8\u8350\u72B6\u6001",valuePropName:"checked",getValueFromEvent:S=>S?1:0,getValueProps:S=>({checked:S===1})},o.createElement(lt,{checkedChildren:"\u662F",unCheckedChildren:"\u5426",disabled:w})))),o.createElement(Ue,{gutter:16,key:"status-row-2"},o.createElement(ce,{span:12},o.createElement(ee.Item,{name:"verifyStatus",label:"\u5BA1\u6838\u72B6\u6001",valuePropName:"checked",getValueFromEvent:S=>S?1:0,getValueProps:S=>({checked:S===1})},o.createElement(lt,{checkedChildren:"\u5DF2\u5BA1\u6838",unCheckedChildren:"\u672A\u5BA1\u6838",disabled:w}))),o.createElement(ce,{span:12},o.createElement(ee.Item,{name:"deleteStatus",label:"\u5220\u9664\u72B6\u6001",valuePropName:"checked",getValueFromEvent:S=>S?1:0,getValueProps:S=>({checked:S===1})},o.createElement(lt,{checkedChildren:"\u5DF2\u5220\u9664",unCheckedChildren:"\u6B63\u5E38",disabled:w}))))],F=[o.createElement(ee.Item,{key:"description",name:"description",label:"\u5546\u54C1\u63CF\u8FF0"},o.createElement(qe.TextArea,{rows:4,placeholder:"\u8BF7\u8F93\u5165\u5546\u54C1\u63CF\u8FF0",disabled:w})),o.createElement(ee.Item,{key:"note",name:"note",label:"\u5907\u6CE8"},o.createElement(qe.TextArea,{rows:2,placeholder:"\u8BF7\u8F93\u5165\u5907\u6CE8",disabled:w}))],de=[{key:"basic",label:"\u57FA\u672C\u4FE1\u606F",children:l?ae:null},{key:"price",label:"\u4EF7\u683C\u4FE1\u606F",children:u?i:null},{key:"stock",label:"\u5E93\u5B58\u4FE1\u606F",children:x?L:null},{key:"status",label:"\u72B6\u6001\u4FE1\u606F",children:N?z:null},{key:"description",label:"\u63CF\u8FF0\u4FE1\u606F",children:U?F:null}];return o.createElement("div",{className:`mall-product-form ${j||""}`,style:H},o.createElement(Go,null,o.createElement(ee,{form:v,layout:"vertical",initialValues:M(),disabled:w},o.createElement(Ho,{activeKey:O,onChange:J,items:de}),o.createElement(Qo,null),o.createElement(ee.Item,null,o.createElement(Jo,null,!w&&o.createElement(o.Fragment,null,o.createElement(Bt,{type:"primary",onClick:re},r==="create"?"\u521B\u5EFA":"\u4FDD\u5B58"),o.createElement(Bt,{onClick:V},"\u91CD\u7F6E")),o.createElement(Bt,{onClick:W},w?"\u5173\u95ED":"\u53D6\u6D88"))))))},wr=Wo;var Pr=wr;import n,{useEffect as Xo,useState as pe,useMemo as Or}from"react";import{Table as Zo,Card as Ro,Button as Ge,Input as Nr,Select as ge,Space as Ct,Tag as Re,DatePicker as en,Modal as xt,Descriptions as be,message as ze,Dropdown as tn,Menu as et,Tooltip as rn,Row as Ar,Col as tt,Form as zt}from"antd";import{SearchOutlined as on,ReloadOutlined as nn,ExportOutlined as an,EyeOutlined as sn,CloseCircleOutlined as ln,DeleteOutlined as dn,MoreOutlined as mn,CarOutlined as un}from"@ant-design/icons";var Q={PENDING_PAYMENT:0,PENDING_DELIVERY:1,DELIVERED:2,COMPLETED:3,CLOSED:4,INVALID:5},Ie={UNPAID:0,ALIPAY:1,WECHAT:2},Me={PC:0,APP:1},Be={NORMAL:0,SECKILL:1},ht=[{label:"\u5F85\u4ED8\u6B3E",value:Q.PENDING_PAYMENT},{label:"\u5F85\u53D1\u8D27",value:Q.PENDING_DELIVERY},{label:"\u5DF2\u53D1\u8D27",value:Q.DELIVERED},{label:"\u5DF2\u5B8C\u6210",value:Q.COMPLETED},{label:"\u5DF2\u5173\u95ED",value:Q.CLOSED}],Ir=[{label:"\u672A\u652F\u4ED8",value:Ie.UNPAID},{label:"\u652F\u4ED8\u5B9D",value:Ie.ALIPAY},{label:"\u5FAE\u4FE1",value:Ie.WECHAT}],yt=[{label:"PC\u8BA2\u5355",value:Me.PC},{label:"APP\u8BA2\u5355",value:Me.APP}],vt=[{label:"\u6B63\u5E38\u8BA2\u5355",value:Be.NORMAL},{label:"\u79D2\u6740\u8BA2\u5355",value:Be.SECKILL}];var{RangePicker:cn}=en,St={code:200,message:"success",data:{pageNum:1,pageSize:10,total:50,list:[{id:1,orderSn:"202401010001",memberUsername:"user001",totalAmount:599,payAmount:569,freightAmount:0,discountAmount:30,payType:Ie.ALIPAY,sourceType:Me.PC,status:Q.PENDING_DELIVERY,orderType:Be.NORMAL,receiverName:"\u5F20\u4E09",receiverPhone:"13800138000",receiverProvince:"\u5317\u4EAC\u5E02",receiverCity:"\u5317\u4EAC\u5E02",receiverRegion:"\u671D\u9633\u533A",receiverDetailAddress:"\u67D0\u67D0\u8857\u9053\u67D0\u67D0\u5C0F\u533A1\u53F7\u697C",createTime:"2024-01-01 10:00:00",paymentTime:"2024-01-01 10:05:00",deliveryTime:"",receiveTime:"",commentTime:"",promotionInfo:"\u6EE1\u51CF\u4F18\u60E0"},{id:2,orderSn:"202401010002",memberUsername:"user002",totalAmount:1299,payAmount:1299,freightAmount:0,discountAmount:0,payType:Ie.WECHAT,sourceType:Me.APP,status:Q.DELIVERED,orderType:Be.NORMAL,receiverName:"\u674E\u56DB",receiverPhone:"13900139000",receiverProvince:"\u4E0A\u6D77\u5E02",receiverCity:"\u4E0A\u6D77\u5E02",receiverRegion:"\u6D66\u4E1C\u65B0\u533A",receiverDetailAddress:"\u67D0\u67D0\u8DEF\u67D0\u67D0\u53F7",createTime:"2024-01-01 11:00:00",paymentTime:"2024-01-01 11:10:00",deliveryTime:"2024-01-02 09:00:00",receiveTime:"",commentTime:"",promotionInfo:""},{id:3,orderSn:"202401010003",memberUsername:"user003",totalAmount:299,payAmount:299,freightAmount:10,discountAmount:0,payType:Ie.ALIPAY,sourceType:Me.PC,status:Q.COMPLETED,orderType:Be.NORMAL,receiverName:"\u738B\u4E94",receiverPhone:"13700137000",receiverProvince:"\u5E7F\u4E1C\u7701",receiverCity:"\u6DF1\u5733\u5E02",receiverRegion:"\u5357\u5C71\u533A",receiverDetailAddress:"\u67D0\u67D0\u5927\u53A6A\u5EA7",createTime:"2024-01-01 12:00:00",paymentTime:"2024-01-01 12:05:00",deliveryTime:"2024-01-02 10:00:00",receiveTime:"2024-01-05 15:00:00",commentTime:"",promotionInfo:""},{id:4,orderSn:"202401010004",memberUsername:"user004",totalAmount:899,payAmount:0,freightAmount:0,discountAmount:0,payType:Ie.UNPAID,sourceType:Me.APP,status:Q.PENDING_PAYMENT,orderType:Be.SECKILL,receiverName:"\u8D75\u516D",receiverPhone:"13600136000",receiverProvince:"\u6D59\u6C5F\u7701",receiverCity:"\u676D\u5DDE\u5E02",receiverRegion:"\u897F\u6E56\u533A",receiverDetailAddress:"\u67D0\u67D0\u82B1\u56ED\u5C0F\u533A",createTime:"2024-01-01 13:00:00",paymentTime:"",deliveryTime:"",receiveTime:"",commentTime:"",promotionInfo:"\u79D2\u6740\u6D3B\u52A8"},{id:5,orderSn:"202401010005",memberUsername:"user005",totalAmount:4599,payAmount:4599,freightAmount:0,discountAmount:0,payType:Ie.WECHAT,sourceType:Me.PC,status:Q.CLOSED,orderType:Be.NORMAL,receiverName:"\u5B59\u4E03",receiverPhone:"13500135000",receiverProvince:"\u6C5F\u82CF\u7701",receiverCity:"\u5357\u4EAC\u5E02",receiverRegion:"\u9F13\u697C\u533A",receiverDetailAddress:"\u67D0\u67D0\u5E7F\u573AB\u5EA7",createTime:"2024-01-01 14:00:00",paymentTime:"2024-01-01 14:10:00",deliveryTime:"",receiveTime:"",commentTime:"",promotionInfo:""}]}},pn=({dataSourceType:p="mock",api:r,method:l="GET",mockData:u,variableName:x,dataSource:N,showFilter:U=!0,showStatusFilter:K=!0,showSearch:G=!0,showDatePicker:H=!0,showActions:j=!0,showBatchOperations:v=!0,showExport:O=!0,showPagination:J=!0,defaultPageSize:re=10,onRowClick:W,onSearch:V,onPageChange:M,onActionClick:w,onBatchOperation:ae,style:i,className:L})=>{let[z,F]=pe(!1),[de,S]=pe([]),[X,$]=pe(0),[C,_]=pe(1),[B,ie]=pe(re),[se,oe]=pe(""),[ue,ye]=pe([]),[ke,ne]=pe([]),[Te,ve]=pe(),[g,s]=pe(),[c,d]=pe(),[f,E]=pe(),[m,A]=pe(),[a,e]=pe(!1),[b,Y]=pe(),[I,R]=pe(!1),[lr,xo]=pe(),[Et,dr]=pe(""),[Lt,mr]=pe(""),ur=Or(()=>({type:p,api:r,method:l,mockData:u?(()=>{try{return typeof u=="string"?JSON.parse(u):u}catch{return St}})():St,variableName:x,dataSource:N}),[p,r,l,u,x,N]),cr=Or(()=>Ee.create(ur),[ur]);Xo(()=>{Ke()},[C,B,cr]);let Ke=async()=>{F(!0);try{let y={pageNum:C,pageSize:B,orderSn:se||void 0,status:g,orderType:c,sourceType:f,createTime:m?`${m[0]?.format("YYYY-MM-DD")},${m[1]?.format("YYYY-MM-DD")}`:void 0},Z=await cr.fetch(y),we=[],$e=0;Z?.data?.list?(we=Z.data.list,$e=Z.data.total||we.length):Array.isArray(Z?.data)?(we=Z.data,$e=we.length):Array.isArray(Z)&&(we=Z,$e=we.length),S(we),$($e)}catch(y){console.error("Failed to fetch order list:",y),ze.error("\u83B7\u53D6\u8BA2\u5355\u5217\u8868\u5931\u8D25"),S(St.data.list),$(St.data.total)}finally{F(!1)}},pr=()=>{_(1),Ke(),V?.({orderSn:se||void 0,status:g,orderType:c,sourceType:f,createTime:m?`${m[0]?.format("YYYY-MM-DD")},${m[1]?.format("YYYY-MM-DD")}`:void 0})},So=()=>{oe(""),s(void 0),d(void 0),E(void 0),A(void 0),_(1),Ke()},To=()=>{ze.success("\u5BFC\u51FA\u529F\u80FD\u5F00\u53D1\u4E2D...")},ko=()=>{Ke()},wo=()=>{if(!Te){ze.warning("\u8BF7\u9009\u62E9\u6279\u91CF\u64CD\u4F5C\u7C7B\u578B");return}if(ue.length===0){ze.warning("\u8BF7\u9009\u62E9\u8981\u64CD\u4F5C\u7684\u8BA2\u5355");return}ae?.(Te,ue),ze.success(`\u6279\u91CF${Te}\u6210\u529F`),ye([]),ne([]),ve(void 0),Ke()},gr=y=>{Y(y),e(!0),w?.("view",y)},br=y=>{xo(y),R(!0),w?.("deliver",y)},Po=y=>{xt.confirm({title:"\u786E\u8BA4\u5173\u95ED\u8BA2\u5355",content:`\u786E\u5B9A\u8981\u5173\u95ED\u8BA2\u5355 ${y.orderSn} \u5417\uFF1F`,onOk:()=>{w?.("close",y),ze.success("\u8BA2\u5355\u5DF2\u5173\u95ED"),Ke()}})},Io=y=>{xt.confirm({title:"\u786E\u8BA4\u5220\u9664\u8BA2\u5355",content:`\u786E\u5B9A\u8981\u5220\u9664\u8BA2\u5355 ${y.orderSn} \u5417\uFF1F`,onOk:()=>{w?.("delete",y),ze.success("\u8BA2\u5355\u5DF2\u5220\u9664"),Ke()}})},Oo=()=>{if(!Et||!Lt){ze.warning("\u8BF7\u586B\u5199\u7269\u6D41\u516C\u53F8\u548C\u7269\u6D41\u5355\u53F7");return}let y={orderId:lr.id,deliveryCompany:Et,deliverySn:Lt};w?.("deliverSubmit",lr),ze.success("\u53D1\u8D27\u6210\u529F"),R(!1),dr(""),mr(""),Ke()},fr=y=>{let Z={[Q.PENDING_PAYMENT]:{color:"orange",text:"\u5F85\u4ED8\u6B3E"},[Q.PENDING_DELIVERY]:{color:"blue",text:"\u5F85\u53D1\u8D27"},[Q.DELIVERED]:{color:"cyan",text:"\u5DF2\u53D1\u8D27"},[Q.COMPLETED]:{color:"green",text:"\u5DF2\u5B8C\u6210"},[Q.CLOSED]:{color:"default",text:"\u5DF2\u5173\u95ED"},[Q.INVALID]:{color:"red",text:"\u65E0\u6548\u8BA2\u5355"}},{color:we,text:$e}=Z[y]||{color:"default",text:"\u672A\u77E5"};return n.createElement(Re,{color:we},$e)},hr=y=>{let Z={[Ie.UNPAID]:{color:"default",text:"\u672A\u652F\u4ED8"},[Ie.ALIPAY]:{color:"blue",text:"\u652F\u4ED8\u5B9D"},[Ie.WECHAT]:{color:"green",text:"\u5FAE\u4FE1"}},{color:we,text:$e}=Z[y]||{color:"default",text:"\u672A\u77E5"};return n.createElement(Re,{color:we},$e)},No=y=>y===Me.APP?n.createElement(Re,{color:"purple"},"APP"):n.createElement(Re,{color:"geekblue"},"PC"),Ao=y=>y===Be.SECKILL?n.createElement(Re,{color:"red"},"\u79D2\u6740"):n.createElement(Re,null,"\u6B63\u5E38"),Do=[{title:"\u8BA2\u5355\u7F16\u53F7",dataIndex:"orderSn",key:"orderSn",width:180,fixed:"left",render:y=>n.createElement(rn,{title:y},n.createElement("span",{className:"order-sn"},y))},{title:"\u7528\u6237\u8D26\u53F7",dataIndex:"memberUsername",key:"memberUsername",width:120},{title:"\u8BA2\u5355\u91D1\u989D",dataIndex:"totalAmount",key:"totalAmount",width:120,render:y=>n.createElement("span",{className:"order-amount"},"\xA5",y.toFixed(2))},{title:"\u5B9E\u4ED8\u91D1\u989D",dataIndex:"payAmount",key:"payAmount",width:120,render:y=>n.createElement("span",{className:"pay-amount"},"\xA5",y.toFixed(2))},{title:"\u652F\u4ED8\u65B9\u5F0F",dataIndex:"payType",key:"payType",width:100,render:y=>hr(y)},{title:"\u8BA2\u5355\u6765\u6E90",dataIndex:"sourceType",key:"sourceType",width:100,render:y=>No(y)},{title:"\u8BA2\u5355\u7C7B\u578B",dataIndex:"orderType",key:"orderType",width:100,render:y=>Ao(y)},{title:"\u8BA2\u5355\u72B6\u6001",dataIndex:"status",key:"status",width:100,render:y=>fr(y)},{title:"\u6536\u8D27\u4EBA",dataIndex:"receiverName",key:"receiverName",width:100},{title:"\u6536\u8D27\u7535\u8BDD",dataIndex:"receiverPhone",key:"receiverPhone",width:130},{title:"\u4E0B\u5355\u65F6\u95F4",dataIndex:"createTime",key:"createTime",width:180,sorter:!0},{title:"\u64CD\u4F5C",key:"action",width:200,fixed:"right",render:(y,Z)=>{let we=n.createElement(et,null,n.createElement(et.Item,{key:"view",icon:n.createElement(sn,null),onClick:()=>gr(Z)},"\u67E5\u770B\u8BE6\u60C5"),Z.status===Q.PENDING_DELIVERY&&n.createElement(et.Item,{key:"deliver",icon:n.createElement(un,null),onClick:()=>br(Z)},"\u53D1\u8D27"),Z.status!==Q.CLOSED&&n.createElement(et.Item,{key:"close",icon:n.createElement(ln,null),onClick:()=>Po(Z)},"\u5173\u95ED\u8BA2\u5355"),n.createElement(et.Divider,null),n.createElement(et.Item,{key:"delete",icon:n.createElement(dn,null),danger:!0,onClick:()=>Io(Z)},"\u5220\u9664\u8BA2\u5355"));return n.createElement(Ct,{size:"small"},n.createElement(Ge,{type:"link",size:"small",onClick:()=>gr(Z)},"\u8BE6\u60C5"),Z.status===Q.PENDING_DELIVERY&&n.createElement(Ge,{type:"link",size:"small",onClick:()=>br(Z)},"\u53D1\u8D27"),n.createElement(tn,{overlay:we,trigger:["click"]},n.createElement(Ge,{type:"link",size:"small",icon:n.createElement(mn,null)})))}}],Eo={selectedRowKeys:ue,onChange:(y,Z)=>{ye(y),ne(Z)}};return n.createElement("div",{className:`mall-order-list ${L||""}`,style:i},n.createElement(Ro,null,U&&n.createElement("div",{className:"filter-section"},n.createElement(Ar,{gutter:[16,16]},G&&n.createElement(tt,{span:6},n.createElement(Nr,{placeholder:"\u8BA2\u5355\u7F16\u53F7",value:se,onChange:y=>oe(y.target.value),onPressEnter:pr,prefix:n.createElement(on,null)})),K&&n.createElement(tt,{span:4},n.createElement(ge,{placeholder:"\u8BA2\u5355\u72B6\u6001",value:g,onChange:s,style:{width:"100%"},allowClear:!0},ht.map(y=>n.createElement(ge.Option,{key:y.value,value:y.value},y.label)))),n.createElement(tt,{span:4},n.createElement(ge,{placeholder:"\u8BA2\u5355\u7C7B\u578B",value:c,onChange:d,style:{width:"100%"},allowClear:!0},vt.map(y=>n.createElement(ge.Option,{key:y.value,value:y.value},y.label)))),n.createElement(tt,{span:4},n.createElement(ge,{placeholder:"\u8BA2\u5355\u6765\u6E90",value:f,onChange:E,style:{width:"100%"},allowClear:!0},yt.map(y=>n.createElement(ge.Option,{key:y.value,value:y.value},y.label)))),H&&n.createElement(tt,{span:6},n.createElement(cn,{value:m,onChange:A,style:{width:"100%"}}))),n.createElement(Ar,{gutter:[16,16],style:{marginTop:16}},n.createElement(tt,null,n.createElement(Ct,null,n.createElement(Ge,{type:"primary",onClick:pr},"\u67E5\u8BE2"),n.createElement(Ge,{onClick:So},"\u91CD\u7F6E"))))),v&&n.createElement("div",{className:"batch-operation-section"},n.createElement(Ct,null,n.createElement(ge,{placeholder:"\u6279\u91CF\u64CD\u4F5C",value:Te,onChange:ve,style:{width:150},allowClear:!0},n.createElement(ge.Option,{value:"deliver"},"\u6279\u91CF\u53D1\u8D27"),n.createElement(ge.Option,{value:"close"},"\u5173\u95ED\u8BA2\u5355"),n.createElement(ge.Option,{value:"delete"},"\u5220\u9664\u8BA2\u5355")),n.createElement(Ge,{onClick:wo},"\u786E\u5B9A")),ue.length>0&&n.createElement("span",{className:"selected-info"},"\u5DF2\u9009\u62E9 ",n.createElement("strong",null,ue.length)," \u9879")),j&&n.createElement("div",{className:"action-section"},n.createElement(Ct,null,n.createElement(Ge,{icon:n.createElement(nn,null),onClick:ko},"\u5237\u65B0"),O&&n.createElement(Ge,{icon:n.createElement(an,null),onClick:To},"\u5BFC\u51FA"))),n.createElement(Zo,{columns:Do,dataSource:de,rowKey:"id",loading:z,pagination:J?{current:C,pageSize:B,total:X,showSizeChanger:!0,showQuickJumper:!0,showTotal:y=>`\u5171 ${y} \u6761`,onChange:(y,Z)=>{_(y),ie(Z),M?.(y,Z)}}:!1,rowSelection:Eo,scroll:{x:1500},onRow:y=>({onClick:()=>W?.(y)})})),n.createElement(xt,{title:"\u8BA2\u5355\u8BE6\u60C5",visible:a,onCancel:()=>e(!1),footer:null,width:800},b&&n.createElement(be,{bordered:!0,column:2},n.createElement(be.Item,{label:"\u8BA2\u5355\u7F16\u53F7"},b.orderSn),n.createElement(be.Item,{label:"\u7528\u6237\u8D26\u53F7"},b.memberUsername),n.createElement(be.Item,{label:"\u8BA2\u5355\u91D1\u989D"},"\xA5",b.totalAmount.toFixed(2)),n.createElement(be.Item,{label:"\u5B9E\u4ED8\u91D1\u989D"},"\xA5",b.payAmount.toFixed(2)),n.createElement(be.Item,{label:"\u8FD0\u8D39"},"\xA5",b.freightAmount.toFixed(2)),n.createElement(be.Item,{label:"\u4F18\u60E0\u91D1\u989D"},"\xA5",b.discountAmount.toFixed(2)),n.createElement(be.Item,{label:"\u652F\u4ED8\u65B9\u5F0F"},hr(b.payType)),n.createElement(be.Item,{label:"\u8BA2\u5355\u72B6\u6001"},fr(b.status)),n.createElement(be.Item,{label:"\u6536\u8D27\u4EBA"},b.receiverName),n.createElement(be.Item,{label:"\u6536\u8D27\u7535\u8BDD"},b.receiverPhone),n.createElement(be.Item,{label:"\u6536\u8D27\u5730\u5740",span:2},b.receiverProvince,b.receiverCity,b.receiverRegion,b.receiverDetailAddress),n.createElement(be.Item,{label:"\u4E0B\u5355\u65F6\u95F4"},b.createTime),n.createElement(be.Item,{label:"\u652F\u4ED8\u65F6\u95F4"},b.paymentTime||"-"),n.createElement(be.Item,{label:"\u53D1\u8D27\u65F6\u95F4"},b.deliveryTime||"-"),n.createElement(be.Item,{label:"\u5B8C\u6210\u65F6\u95F4"},b.receiveTime||"-"),n.createElement(be.Item,{label:"\u8BA2\u5355\u5907\u6CE8",span:2},b.note||"-"))),n.createElement(xt,{title:"\u8BA2\u5355\u53D1\u8D27",visible:I,onOk:Oo,onCancel:()=>R(!1)},n.createElement(zt,{layout:"vertical"},n.createElement(zt.Item,{label:"\u7269\u6D41\u516C\u53F8",required:!0},n.createElement(ge,{value:Et,onChange:dr,placeholder:"\u8BF7\u9009\u62E9\u7269\u6D41\u516C\u53F8"},n.createElement(ge.Option,{value:"\u987A\u4E30\u901F\u8FD0"},"\u987A\u4E30\u901F\u8FD0"),n.createElement(ge.Option,{value:"\u5706\u901A\u5FEB\u9012"},"\u5706\u901A\u5FEB\u9012"),n.createElement(ge.Option,{value:"\u4E2D\u901A\u5FEB\u9012"},"\u4E2D\u901A\u5FEB\u9012"),n.createElement(ge.Option,{value:"\u97F5\u8FBE\u5FEB\u9012"},"\u97F5\u8FBE\u5FEB\u9012"),n.createElement(ge.Option,{value:"\u7533\u901A\u5FEB\u9012"},"\u7533\u901A\u5FEB\u9012"),n.createElement(ge.Option,{value:"\u90AE\u653FEMS"},"\u90AE\u653FEMS"))),n.createElement(zt.Item,{label:"\u7269\u6D41\u5355\u53F7",required:!0},n.createElement(Nr,{value:Lt,onChange:y=>mr(y.target.value),placeholder:"\u8BF7\u8F93\u5165\u7269\u6D41\u5355\u53F7"})))))},_t=pn;import t,{useEffect as gn,useState as Dr}from"react";import{Form as q,Input as Pe,InputNumber as rt,Select as Ne,Button as Yt,Card as bn,Space as fn,message as Er,Divider as hn,Row as _e,Col as le,Tabs as yn,Table as vn,Tag as Cn}from"antd";var{TextArea:Lr}=Pe,xn=({initialValues:p,mode:r="create",showBasicInfo:l=!0,showReceiverInfo:u=!0,showMoneyInfo:x=!0,showOrderItems:N=!0,showStatusInfo:U=!0,onSubmit:K,onCancel:G,style:H,className:j})=>{let[v]=q.useForm(),[O,J]=Dr("basic"),[re,W]=Dr([]);gn(()=>{if(p){let C=p;if(typeof p=="string")try{C=JSON.parse(p)}catch(_){console.error("Failed to parse initialValues:",_),C={}}v.setFieldsValue(C),C.orderItemList&&W(C.orderItemList)}},[p,v]);let V=async()=>{try{let C=await v.validateFields();K?.(C),Er.success("\u63D0\u4EA4\u6210\u529F")}catch(C){console.error("Validation failed:",C),Er.error("\u8BF7\u68C0\u67E5\u8868\u5355\u586B\u5199\u662F\u5426\u6B63\u786E")}},M=()=>{v.resetFields(),G?.()},w=()=>{v.resetFields()},ae=()=>{if(typeof p=="string")try{return JSON.parse(p)}catch{return{}}return p||{}},i=r==="view",L=C=>{let _={[Q.PENDING_PAYMENT]:{color:"orange",text:"\u5F85\u4ED8\u6B3E"},[Q.PENDING_DELIVERY]:{color:"blue",text:"\u5F85\u53D1\u8D27"},[Q.DELIVERED]:{color:"cyan",text:"\u5DF2\u53D1\u8D27"},[Q.COMPLETED]:{color:"green",text:"\u5DF2\u5B8C\u6210"},[Q.CLOSED]:{color:"default",text:"\u5DF2\u5173\u95ED"},[Q.INVALID]:{color:"red",text:"\u65E0\u6548\u8BA2\u5355"}},{color:B,text:ie}=_[C]||{color:"default",text:"\u672A\u77E5"};return t.createElement(Cn,{color:B},ie)},z=[{title:"\u5546\u54C1\u56FE\u7247",dataIndex:"productPic",key:"productPic",width:80,render:C=>t.createElement("img",{src:C,alt:"\u5546\u54C1\u56FE\u7247",style:{width:50,height:50,objectFit:"cover"}})},{title:"\u5546\u54C1\u540D\u79F0",dataIndex:"productName",key:"productName",width:200},{title:"\u5546\u54C1\u8D27\u53F7",dataIndex:"productSn",key:"productSn",width:120},{title:"\u5546\u54C1\u54C1\u724C",dataIndex:"productBrand",key:"productBrand",width:100},{title:"\u9500\u552E\u4EF7\u683C",dataIndex:"productPrice",key:"productPrice",width:100,render:C=>`\xA5${C.toFixed(2)}`},{title:"\u8D2D\u4E70\u6570\u91CF",dataIndex:"productQuantity",key:"productQuantity",width:100},{title:"\u5C0F\u8BA1",key:"subtotal",width:100,render:(C,_)=>`\xA5${(_.productPrice*_.productQuantity).toFixed(2)}`}],F=[t.createElement(_e,{gutter:16,key:"basic-row-1"},t.createElement(le,{span:12},t.createElement(q.Item,{name:"orderSn",label:"\u8BA2\u5355\u7F16\u53F7",rules:[{required:!0,message:"\u8BF7\u8F93\u5165\u8BA2\u5355\u7F16\u53F7"}]},t.createElement(Pe,{placeholder:"\u8BF7\u8F93\u5165\u8BA2\u5355\u7F16\u53F7",disabled:i}))),t.createElement(le,{span:12},t.createElement(q.Item,{name:"memberUsername",label:"\u7528\u6237\u8D26\u53F7",rules:[{required:!0,message:"\u8BF7\u8F93\u5165\u7528\u6237\u8D26\u53F7"}]},t.createElement(Pe,{placeholder:"\u8BF7\u8F93\u5165\u7528\u6237\u8D26\u53F7",disabled:i})))),t.createElement(_e,{gutter:16,key:"basic-row-2"},t.createElement(le,{span:8},t.createElement(q.Item,{name:"payType",label:"\u652F\u4ED8\u65B9\u5F0F",rules:[{required:!0}]},t.createElement(Ne,{placeholder:"\u8BF7\u9009\u62E9\u652F\u4ED8\u65B9\u5F0F",disabled:i},Ir.map(C=>t.createElement(Ne.Option,{key:C.value,value:C.value},C.label))))),t.createElement(le,{span:8},t.createElement(q.Item,{name:"sourceType",label:"\u8BA2\u5355\u6765\u6E90",rules:[{required:!0}]},t.createElement(Ne,{placeholder:"\u8BF7\u9009\u62E9\u8BA2\u5355\u6765\u6E90",disabled:i},yt.map(C=>t.createElement(Ne.Option,{key:C.value,value:C.value},C.label))))),t.createElement(le,{span:8},t.createElement(q.Item,{name:"orderType",label:"\u8BA2\u5355\u7C7B\u578B",rules:[{required:!0}]},t.createElement(Ne,{placeholder:"\u8BF7\u9009\u62E9\u8BA2\u5355\u7C7B\u578B",disabled:i},vt.map(C=>t.createElement(Ne.Option,{key:C.value,value:C.value},C.label)))))),t.createElement(_e,{gutter:16,key:"basic-row-3"},t.createElement(le,{span:12},t.createElement(q.Item,{name:"createTime",label:"\u4E0B\u5355\u65F6\u95F4"},t.createElement(Pe,{placeholder:"\u4E0B\u5355\u65F6\u95F4",disabled:!0}))),t.createElement(le,{span:12},t.createElement(q.Item,{name:"paymentTime",label:"\u652F\u4ED8\u65F6\u95F4"},t.createElement(Pe,{placeholder:"\u652F\u4ED8\u65F6\u95F4",disabled:!0}))))],de=[t.createElement(_e,{gutter:16,key:"receiver-row-1"},t.createElement(le,{span:12},t.createElement(q.Item,{name:"receiverName",label:"\u6536\u8D27\u4EBA\u59D3\u540D",rules:[{required:!0,message:"\u8BF7\u8F93\u5165\u6536\u8D27\u4EBA\u59D3\u540D"}]},t.createElement(Pe,{placeholder:"\u8BF7\u8F93\u5165\u6536\u8D27\u4EBA\u59D3\u540D",disabled:i}))),t.createElement(le,{span:12},t.createElement(q.Item,{name:"receiverPhone",label:"\u6536\u8D27\u4EBA\u7535\u8BDD",rules:[{required:!0,message:"\u8BF7\u8F93\u5165\u6536\u8D27\u4EBA\u7535\u8BDD"}]},t.createElement(Pe,{placeholder:"\u8BF7\u8F93\u5165\u6536\u8D27\u4EBA\u7535\u8BDD",disabled:i})))),t.createElement(_e,{gutter:16,key:"receiver-row-2"},t.createElement(le,{span:8},t.createElement(q.Item,{name:"receiverProvince",label:"\u7701\u4EFD"},t.createElement(Pe,{placeholder:"\u7701\u4EFD",disabled:i}))),t.createElement(le,{span:8},t.createElement(q.Item,{name:"receiverCity",label:"\u57CE\u5E02"},t.createElement(Pe,{placeholder:"\u57CE\u5E02",disabled:i}))),t.createElement(le,{span:8},t.createElement(q.Item,{name:"receiverRegion",label:"\u533A"},t.createElement(Pe,{placeholder:"\u533A",disabled:i})))),t.createElement(q.Item,{key:"receiverDetailAddress",name:"receiverDetailAddress",label:"\u8BE6\u7EC6\u5730\u5740"},t.createElement(Lr,{rows:2,placeholder:"\u8BF7\u8F93\u5165\u8BE6\u7EC6\u5730\u5740",disabled:i})),t.createElement(_e,{gutter:16,key:"receiver-row-3"},t.createElement(le,{span:12},t.createElement(q.Item,{name:"deliveryCompany",label:"\u7269\u6D41\u516C\u53F8"},t.createElement(Pe,{placeholder:"\u7269\u6D41\u516C\u53F8",disabled:i}))),t.createElement(le,{span:12},t.createElement(q.Item,{name:"deliverySn",label:"\u7269\u6D41\u5355\u53F7"},t.createElement(Pe,{placeholder:"\u7269\u6D41\u5355\u53F7",disabled:i}))))],S=[t.createElement(_e,{gutter:16,key:"money-row-1"},t.createElement(le,{span:8},t.createElement(q.Item,{name:"totalAmount",label:"\u8BA2\u5355\u603B\u91D1\u989D",rules:[{required:!0,message:"\u8BF7\u8F93\u5165\u8BA2\u5355\u603B\u91D1\u989D"}]},t.createElement(rt,{placeholder:"\u8BA2\u5355\u603B\u91D1\u989D",style:{width:"100%"},min:0,precision:2,prefix:"\xA5",disabled:i}))),t.createElement(le,{span:8},t.createElement(q.Item,{name:"payAmount",label:"\u5B9E\u4ED8\u91D1\u989D",rules:[{required:!0,message:"\u8BF7\u8F93\u5165\u5B9E\u4ED8\u91D1\u989D"}]},t.createElement(rt,{placeholder:"\u5B9E\u4ED8\u91D1\u989D",style:{width:"100%"},min:0,precision:2,prefix:"\xA5",disabled:i}))),t.createElement(le,{span:8},t.createElement(q.Item,{name:"freightAmount",label:"\u8FD0\u8D39\u91D1\u989D"},t.createElement(rt,{placeholder:"\u8FD0\u8D39\u91D1\u989D",style:{width:"100%"},min:0,precision:2,prefix:"\xA5",disabled:i})))),t.createElement(_e,{gutter:16,key:"money-row-2"},t.createElement(le,{span:8},t.createElement(q.Item,{name:"discountAmount",label:"\u6298\u6263\u91D1\u989D"},t.createElement(rt,{placeholder:"\u6298\u6263\u91D1\u989D",style:{width:"100%"},min:0,precision:2,prefix:"\xA5",disabled:i}))),t.createElement(le,{span:8},t.createElement(q.Item,{name:"promotionAmount",label:"\u4FC3\u9500\u4F18\u60E0"},t.createElement(rt,{placeholder:"\u4FC3\u9500\u4F18\u60E0",style:{width:"100%"},min:0,precision:2,prefix:"\xA5",disabled:i}))),t.createElement(le,{span:8},t.createElement(q.Item,{name:"couponAmount",label:"\u4F18\u60E0\u5238\u62B5\u6263"},t.createElement(rt,{placeholder:"\u4F18\u60E0\u5238\u62B5\u6263",style:{width:"100%"},min:0,precision:2,prefix:"\xA5",disabled:i}))))],X=[t.createElement(_e,{gutter:16,key:"status-row-1"},t.createElement(le,{span:12},t.createElement(q.Item,{name:"status",label:"\u8BA2\u5355\u72B6\u6001",rules:[{required:!0}]},t.createElement(Ne,{placeholder:"\u8BF7\u9009\u62E9\u8BA2\u5355\u72B6\u6001",disabled:i},ht.map(C=>t.createElement(Ne.Option,{key:C.value,value:C.value},C.label))))),t.createElement(le,{span:12},t.createElement(q.Item,{name:"confirmStatus",label:"\u786E\u8BA4\u6536\u8D27\u72B6\u6001"},t.createElement(Ne,{placeholder:"\u8BF7\u9009\u62E9\u786E\u8BA4\u6536\u8D27\u72B6\u6001",disabled:i},t.createElement(Ne.Option,{value:0},"\u672A\u786E\u8BA4"),t.createElement(Ne.Option,{value:1},"\u5DF2\u786E\u8BA4"))))),t.createElement(q.Item,{key:"promotionInfo",name:"promotionInfo",label:"\u6D3B\u52A8\u4FE1\u606F"},t.createElement(Pe,{placeholder:"\u6D3B\u52A8\u4FE1\u606F",disabled:i})),t.createElement(q.Item,{key:"note",name:"note",label:"\u8BA2\u5355\u5907\u6CE8"},t.createElement(Lr,{rows:3,placeholder:"\u8BF7\u8F93\u5165\u8BA2\u5355\u5907\u6CE8",disabled:i}))],$=[{key:"basic",label:"\u57FA\u672C\u4FE1\u606F",children:l?F:null},{key:"receiver",label:"\u6536\u8D27\u4FE1\u606F",children:u?de:null},{key:"money",label:"\u8D39\u7528\u4FE1\u606F",children:x?S:null},{key:"items",label:"\u5546\u54C1\u4FE1\u606F",children:N?t.createElement(vn,{columns:z,dataSource:re,rowKey:"id",pagination:!1,scroll:{x:900}}):null},{key:"status",label:"\u72B6\u6001\u4FE1\u606F",children:U?X:null}];return t.createElement("div",{className:`mall-order-form ${j||""}`,style:H},t.createElement(bn,null,t.createElement(q,{form:v,layout:"vertical",initialValues:ae(),disabled:i},t.createElement(yn,{activeKey:O,onChange:J,items:$}),t.createElement(hn,null),t.createElement(q.Item,null,t.createElement(fn,null,!i&&t.createElement(t.Fragment,null,t.createElement(Yt,{type:"primary",onClick:V},r==="create"?"\u521B\u5EFA":"\u4FDD\u5B58"),t.createElement(Yt,{onClick:w},"\u91CD\u7F6E")),t.createElement(Yt,{onClick:M},i?"\u5173\u95ED":"\u53D6\u6D88"))))))},Vt=xn;import h,{useState as Le,useEffect as Sn,useMemo as Mr}from"react";import{Card as Tn,Button as dt,Tag as Br,Space as Tt,Modal as zr,Form as De,Input as Kt,InputNumber as kt,Select as ot,DatePicker as kn,Radio as $t,message as wt,Table as wn,Tooltip as Pn,Badge as In,Divider as qt}from"antd";import{PlusOutlined as On,EditOutlined as Nn,DeleteOutlined as An,ClockCircleOutlined as Dn}from"@ant-design/icons";var Ae={FULL_REDUCTION:0,DISCOUNT:1},Oe={ALL:0,MOBILE:1,PC:2,APP:3},He={ALL:0,CATEGORY:1,PRODUCT:2},Fr=[{label:"\u6EE1\u51CF\u5238",value:Ae.FULL_REDUCTION},{label:"\u6298\u6263\u5238",value:Ae.DISCOUNT}],jt=[{label:"\u5168\u5E73\u53F0",value:Oe.ALL},{label:"\u79FB\u52A8\u7AEF",value:Oe.MOBILE},{label:"PC\u7AEF",value:Oe.PC},{label:"APP\u7AEF",value:Oe.APP}],Ki=[{label:"\u5168\u573A\u901A\u7528",value:He.ALL},{label:"\u6307\u5B9A\u5206\u7C7B",value:He.CATEGORY},{label:"\u6307\u5B9A\u5546\u54C1",value:He.PRODUCT}],fe={ENABLED:1,DISABLED:0},Ur=[{label:"\u542F\u7528",value:fe.ENABLED},{label:"\u7981\u7528",value:fe.DISABLED}];var{RangePicker:En}=kn,_r={code:200,message:"success",data:{pageNum:1,pageSize:10,total:3,list:[{id:1,name:"\u65B0\u7528\u6237\u4E13\u4EAB\u5238",type:0,platform:0,count:1e3,amount:50,perLimit:1,minPoint:200,startTime:"2024-01-01",endTime:"2024-12-31",useType:0,note:"\u65B0\u7528\u6237\u9996\u5355\u6EE1200\u51CF50",publishCount:500,useCount:320,receiveCount:450,enableTime:"7",code:"NEWUSER50",memberLevel:0},{id:2,name:"\u9650\u65F6\u6298\u6263\u5238",type:1,platform:3,count:500,amount:8,perLimit:2,minPoint:100,startTime:"2024-01-15",endTime:"2024-02-15",useType:1,note:"APP\u4E13\u4EAB8\u6298\u5238",publishCount:300,useCount:180,receiveCount:280,enableTime:"3",code:"APPDISCOUNT",memberLevel:1},{id:3,name:"\u4F1A\u5458\u4E13\u4EAB\u5238",type:0,platform:0,count:200,amount:100,perLimit:1,minPoint:500,startTime:"2024-01-01",endTime:"2024-06-30",useType:2,note:"\u4F1A\u5458\u4E13\u4EAB\u6EE1500\u51CF100",publishCount:150,useCount:80,receiveCount:120,enableTime:"15",code:"VIP100",memberLevel:2}]}},Ln=({dataSourceType:p="mock",api:r,method:l="GET",mockData:u,variableName:x,showCreateButton:N=!0,showFilter:U=!0,showStatistics:K=!0,onCreateCoupon:G,onEditCoupon:H,onDeleteCoupon:j,style:v,className:O})=>{let[J,re]=Le(!1),[W,V]=Le([]),[M,w]=Le(0),[ae,i]=Le(1),[L,z]=Le(10),[F,de]=Le(""),[S,X]=Le(),[$,C]=Le(),[_,B]=Le(!1),[ie,se]=Le(null),[oe]=De.useForm(),ue=[{id:1,name:"\u65B0\u7528\u6237\u4E13\u4EAB\u5238",type:Ae.FULL_REDUCTION,platform:Oe.ALL,count:1e3,amount:50,perLimit:1,minPoint:200,startTime:"2024-01-01",endTime:"2024-12-31",useType:He.ALL,note:"\u65B0\u7528\u6237\u9996\u5355\u6EE1200\u51CF50",publishCount:500,useCount:320,receiveCount:450,enableTime:"7",code:"NEWUSER50",memberLevel:0},{id:2,name:"\u9650\u65F6\u6298\u6263\u5238",type:Ae.DISCOUNT,platform:Oe.APP,count:500,amount:8,perLimit:2,minPoint:100,startTime:"2024-01-15",endTime:"2024-02-15",useType:He.CATEGORY,note:"APP\u4E13\u4EAB8\u6298\u5238",publishCount:300,useCount:180,receiveCount:280,enableTime:"3",code:"APPDISCOUNT",memberLevel:1},{id:3,name:"\u4F1A\u5458\u4E13\u4EAB\u5238",type:Ae.FULL_REDUCTION,platform:Oe.ALL,count:200,amount:100,perLimit:1,minPoint:500,startTime:"2024-01-01",endTime:"2024-06-30",useType:He.PRODUCT,note:"\u4F1A\u5458\u4E13\u4EAB\u6EE1500\u51CF100",publishCount:150,useCount:80,receiveCount:120,enableTime:"15",code:"VIP100",memberLevel:2}],ye=Mr(()=>({type:p,api:r,method:l,mockData:u?(()=>{try{return typeof u=="string"?JSON.parse(u):u}catch{return _r}})():_r,variableName:x}),[p,r,l,u,x]),ke=Mr(()=>Ee.create(ye),[ye]);Sn(()=>{ne()},[ae,L,ke]);let ne=async()=>{re(!0);try{let a=await ke.fetch({pageNum:ae,pageSize:L,name:F,type:S,platform:$}),e=[],b=0;a?.data?.list?(e=a.data.list,b=a.data.total||e.length):Array.isArray(a?.data)?(e=a.data,b=e.length):Array.isArray(a)&&(e=a,b=e.length),(F||S!==void 0||$!==void 0)&&(e=e.filter(Y=>!(F&&!Y.name.toLowerCase().includes(F.toLowerCase())||S!==void 0&&Y.type!==S||$!==void 0&&Y.platform!==$)),b=e.length),V(e),w(b)}catch(a){console.error("Failed to fetch coupon list:",a),wt.error("\u83B7\u53D6\u4F18\u60E0\u5238\u5217\u8868\u5931\u8D25"),V(ue),w(ue.length)}finally{re(!1)}},Te=()=>{i(1),ne()},ve=()=>{de(""),X(void 0),C(void 0),i(1),ne()},g=()=>{se(null),oe.resetFields(),B(!0)},s=a=>{se(a),oe.setFieldsValue({...a,dateRange:[a.startTime,a.endTime]}),B(!0)},c=a=>{zr.confirm({title:"\u786E\u8BA4\u5220\u9664",content:"\u786E\u5B9A\u8981\u5220\u9664\u8BE5\u4F18\u60E0\u5238\u5417\uFF1F",onOk:()=>{j?.(a),wt.success("\u5220\u9664\u6210\u529F"),ne()}})},d=async()=>{try{let a=await oe.validateFields(),e={...a,startTime:a.dateRange?.[0],endTime:a.dateRange?.[1]};ie?(H?.(ie.id,e),wt.success("\u7F16\u8F91\u6210\u529F")):(G?.(e),wt.success("\u521B\u5EFA\u6210\u529F")),B(!1),ne()}catch(a){console.error("Validation failed:",a)}},f=a=>{let e={[Ae.FULL_REDUCTION]:{color:"red",text:"\u6EE1\u51CF\u5238"},[Ae.DISCOUNT]:{color:"blue",text:"\u6298\u6263\u5238"}},{color:b,text:Y}=e[a]||{color:"default",text:"\u672A\u77E5"};return h.createElement(Br,{color:b},Y)},E=a=>{let e={[Oe.ALL]:{color:"green",text:"\u5168\u5E73\u53F0"},[Oe.MOBILE]:{color:"purple",text:"\u79FB\u52A8\u7AEF"},[Oe.PC]:{color:"geekblue",text:"PC\u7AEF"},[Oe.APP]:{color:"cyan",text:"APP"}},{color:b,text:Y}=e[a]||{color:"default",text:"\u672A\u77E5"};return h.createElement(Br,{color:b},Y)},m=[{title:"\u4F18\u60E0\u5238\u540D\u79F0",dataIndex:"name",key:"name",width:150,render:a=>h.createElement(Pn,{title:a},h.createElement("span",{className:"coupon-name"},a))},{title:"\u7C7B\u578B",dataIndex:"type",key:"type",width:80,render:a=>f(a)},{title:"\u4F18\u60E0\u5185\u5BB9",key:"content",width:120,render:(a,e)=>h.createElement("span",null,e.type===Ae.FULL_REDUCTION?`\u6EE1${e.minPoint}\u51CF${e.amount}`:`${e.amount}\u6298`)},{title:"\u9002\u7528\u5E73\u53F0",dataIndex:"platform",key:"platform",width:80,render:a=>E(a)},{title:"\u53D1\u884C\u91CF",dataIndex:"count",key:"count",width:80,render:a=>h.createElement(In,{count:a,showZero:!0,color:"blue"})},{title:"\u5DF2\u9886\u53D6",dataIndex:"receiveCount",key:"receiveCount",width:80},{title:"\u5DF2\u4F7F\u7528",dataIndex:"useCount",key:"useCount",width:80},{title:"\u6709\u6548\u671F",key:"validity",width:180,render:(a,e)=>h.createElement(Tt,null,h.createElement(Dn,null),h.createElement("span",null,e.startTime," ~ ",e.endTime))},{title:"\u64CD\u4F5C",key:"action",width:150,render:(a,e)=>h.createElement(Tt,null,h.createElement(dt,{type:"link",size:"small",icon:h.createElement(Nn,null),onClick:()=>s(e)},"\u7F16\u8F91"),h.createElement(dt,{type:"link",size:"small",danger:!0,icon:h.createElement(An,null),onClick:()=>c(e.id)},"\u5220\u9664"))}],A={totalCoupons:W.length,activeCoupons:W.filter(a=>a.useCount>0).length,totalUsed:W.reduce((a,e)=>a+e.useCount,0),totalReceived:W.reduce((a,e)=>a+e.receiveCount,0)};return h.createElement("div",{className:`mall-coupon-card ${O||""}`,style:v},h.createElement(Tn,null,K&&h.createElement("div",{className:"statistics-section"},h.createElement(Tt,{size:"large"},h.createElement("div",{className:"stat-item"},h.createElement("div",{className:"stat-value"},A.totalCoupons),h.createElement("div",{className:"stat-label"},"\u4F18\u60E0\u5238\u603B\u6570")),h.createElement(qt,{type:"vertical",style:{height:40}}),h.createElement("div",{className:"stat-item"},h.createElement("div",{className:"stat-value"},A.activeCoupons),h.createElement("div",{className:"stat-label"},"\u6D3B\u8DC3\u4F18\u60E0\u5238")),h.createElement(qt,{type:"vertical",style:{height:40}}),h.createElement("div",{className:"stat-item"},h.createElement("div",{className:"stat-value"},A.totalReceived),h.createElement("div",{className:"stat-label"},"\u5DF2\u9886\u53D6")),h.createElement(qt,{type:"vertical",style:{height:40}}),h.createElement("div",{className:"stat-item"},h.createElement("div",{className:"stat-value"},A.totalUsed),h.createElement("div",{className:"stat-label"},"\u5DF2\u4F7F\u7528")))),U&&h.createElement("div",{className:"filter-section"},h.createElement(Tt,{wrap:!0},h.createElement(Kt,{placeholder:"\u4F18\u60E0\u5238\u540D\u79F0",value:F,onChange:a=>de(a.target.value),style:{width:200}}),h.createElement(ot,{placeholder:"\u4F18\u60E0\u5238\u7C7B\u578B",value:S,onChange:X,style:{width:120},allowClear:!0},Fr.map(a=>h.createElement(ot.Option,{key:a.value,value:a.value},a.label))),h.createElement(ot,{placeholder:"\u9002\u7528\u5E73\u53F0",value:$,onChange:C,style:{width:120},allowClear:!0},jt.map(a=>h.createElement(ot.Option,{key:a.value,value:a.value},a.label))),h.createElement(dt,{type:"primary",onClick:Te},"\u67E5\u8BE2"),h.createElement(dt,{onClick:ve},"\u91CD\u7F6E"))),N&&h.createElement("div",{className:"action-section"},h.createElement(dt,{type:"primary",icon:h.createElement(On,null),onClick:g},"\u521B\u5EFA\u4F18\u60E0\u5238")),h.createElement(wn,{columns:m,dataSource:W,rowKey:"id",loading:J,pagination:{current:ae,pageSize:L,total:M,showSizeChanger:!0,showQuickJumper:!0,showTotal:a=>`\u5171 ${a} \u6761`,onChange:(a,e)=>{i(a),z(e)}}})),h.createElement(zr,{title:ie?"\u7F16\u8F91\u4F18\u60E0\u5238":"\u521B\u5EFA\u4F18\u60E0\u5238",visible:_,onOk:d,onCancel:()=>B(!1),width:600},h.createElement(De,{form:oe,layout:"vertical"},h.createElement(De.Item,{name:"name",label:"\u4F18\u60E0\u5238\u540D\u79F0",rules:[{required:!0,message:"\u8BF7\u8F93\u5165\u4F18\u60E0\u5238\u540D\u79F0"}]},h.createElement(Kt,{placeholder:"\u8BF7\u8F93\u5165\u4F18\u60E0\u5238\u540D\u79F0"})),h.createElement(De.Item,{name:"type",label:"\u4F18\u60E0\u5238\u7C7B\u578B",rules:[{required:!0,message:"\u8BF7\u9009\u62E9\u4F18\u60E0\u5238\u7C7B\u578B"}]},h.createElement($t.Group,null,h.createElement($t,{value:Ae.FULL_REDUCTION},"\u6EE1\u51CF\u5238"),h.createElement($t,{value:Ae.DISCOUNT},"\u6298\u6263\u5238"))),h.createElement(De.Item,{name:"amount",label:"\u4F18\u60E0\u989D\u5EA6",rules:[{required:!0,message:"\u8BF7\u8F93\u5165\u4F18\u60E0\u989D\u5EA6"}]},h.createElement(kt,{placeholder:"\u6EE1\u51CF\u91D1\u989D\u6216\u6298\u6263",min:0,style:{width:"100%"}})),h.createElement(De.Item,{name:"minPoint",label:"\u6700\u4F4E\u6D88\u8D39\u91D1\u989D",rules:[{required:!0,message:"\u8BF7\u8F93\u5165\u6700\u4F4E\u6D88\u8D39\u91D1\u989D"}]},h.createElement(kt,{placeholder:"\u6700\u4F4E\u6D88\u8D39\u91D1\u989D",min:0,style:{width:"100%"}})),h.createElement(De.Item,{name:"platform",label:"\u9002\u7528\u5E73\u53F0",rules:[{required:!0,message:"\u8BF7\u9009\u62E9\u9002\u7528\u5E73\u53F0"}]},h.createElement(ot,{placeholder:"\u8BF7\u9009\u62E9\u9002\u7528\u5E73\u53F0"},jt.map(a=>h.createElement(ot.Option,{key:a.value,value:a.value},a.label)))),h.createElement(De.Item,{name:"count",label:"\u53D1\u884C\u6570\u91CF",rules:[{required:!0,message:"\u8BF7\u8F93\u5165\u53D1\u884C\u6570\u91CF"}]},h.createElement(kt,{placeholder:"\u53D1\u884C\u6570\u91CF",min:1,style:{width:"100%"}})),h.createElement(De.Item,{name:"perLimit",label:"\u6BCF\u4EBA\u9650\u9886",rules:[{required:!0,message:"\u8BF7\u8F93\u5165\u6BCF\u4EBA\u9650\u9886\u6570\u91CF"}]},h.createElement(kt,{placeholder:"\u6BCF\u4EBA\u9650\u9886\u6570\u91CF",min:1,style:{width:"100%"}})),h.createElement(De.Item,{name:"dateRange",label:"\u6709\u6548\u671F",rules:[{required:!0,message:"\u8BF7\u9009\u62E9\u6709\u6548\u671F"}]},h.createElement(En,{style:{width:"100%"}})),h.createElement(De.Item,{name:"note",label:"\u5907\u6CE8"},h.createElement(Kt.TextArea,{rows:3,placeholder:"\u8BF7\u8F93\u5165\u5907\u6CE8"})))))},Gt=Ln;import T,{useState as Ye,useEffect as Fn,useMemo as Yr}from"react";import{Card as Vr,Button as nt,Tag as Un,Space as Jt,Modal as jr,Form as mt,Input as Kr,Select as $r,DatePicker as Mn,Switch as Bn,message as ut,Table as zn,Tooltip as _n,Timeline as Yn,Statistic as Qt,Row as Vn,Col as Ht}from"antd";import{PlusOutlined as jn,EditOutlined as Kn,DeleteOutlined as $n,ThunderboltOutlined as qr,ClockCircleOutlined as qn,CheckCircleOutlined as Gn,CloseCircleOutlined as Jn}from"@ant-design/icons";var{RangePicker:Qn}=Mn,Gr={code:200,message:"success",data:{pageNum:1,pageSize:10,total:4,list:[{id:1,title:"\u53CC\u5341\u4E00\u5927\u4FC3",startDate:"2024-11-01",endDate:"2024-11-11",status:1,createTime:"2024-10-15 10:00:00"},{id:2,title:"618\u5E74\u4E2D\u5927\u4FC3",startDate:"2024-06-01",endDate:"2024-06-18",status:1,createTime:"2024-05-20 09:00:00"},{id:3,title:"\u65B0\u6625\u5B63\u4FC3\u9500",startDate:"2024-01-20",endDate:"2024-02-10",status:0,createTime:"2024-01-10 08:00:00"},{id:4,title:"\u4F1A\u5458\u65E5\u7279\u60E0",startDate:"2024-03-15",endDate:"2024-03-17",status:1,createTime:"2024-03-01 10:00:00"}]}},Hn=({dataSourceType:p="mock",api:r,method:l="GET",mockData:u,variableName:x,showCreateButton:N=!0,showFilter:U=!0,showStatistics:K=!0,showTimeline:G=!0,onCreatePromotion:H,onEditPromotion:j,onDeletePromotion:v,onToggleStatus:O,style:J,className:re})=>{let[W,V]=Ye(!1),[M,w]=Ye([]),[ae,i]=Ye(0),[L,z]=Ye(1),[F,de]=Ye(10),[S,X]=Ye(""),[$,C]=Ye(),[_,B]=Ye(!1),[ie,se]=Ye(null),[oe]=mt.useForm(),ue=[{id:1,title:"\u53CC\u5341\u4E00\u5927\u4FC3",startDate:"2024-11-01",endDate:"2024-11-11",status:fe.ENABLED,createTime:"2024-10-15 10:00:00"},{id:2,title:"618\u5E74\u4E2D\u5927\u4FC3",startDate:"2024-06-01",endDate:"2024-06-18",status:fe.ENABLED,createTime:"2024-05-20 09:00:00"},{id:3,title:"\u65B0\u6625\u5B63\u4FC3\u9500",startDate:"2024-01-20",endDate:"2024-02-10",status:fe.DISABLED,createTime:"2024-01-10 08:00:00"},{id:4,title:"\u4F1A\u5458\u65E5\u7279\u60E0",startDate:"2024-03-15",endDate:"2024-03-17",status:fe.ENABLED,createTime:"2024-03-01 10:00:00"}],ye=Yr(()=>({type:p,api:r,method:l,mockData:u?(()=>{try{return typeof u=="string"?JSON.parse(u):u}catch{return Gr}})():Gr,variableName:x}),[p,r,l,u,x]),ke=Yr(()=>Ee.create(ye),[ye]);Fn(()=>{ne()},[L,F,ke]);let ne=async()=>{V(!0);try{let e=await ke.fetch({pageNum:L,pageSize:F,title:S,status:$}),b=[],Y=0;e?.data?.list?(b=e.data.list,Y=e.data.total||b.length):Array.isArray(e?.data)?(b=e.data,Y=b.length):Array.isArray(e)&&(b=e,Y=b.length),(S||$!==void 0)&&(b=b.filter(I=>!(S&&!I.title.toLowerCase().includes(S.toLowerCase())||$!==void 0&&I.status!==$)),Y=b.length),w(b),i(Y)}catch(e){console.error("Failed to fetch promotion list:",e),ut.error("\u83B7\u53D6\u4FC3\u9500\u6D3B\u52A8\u5217\u8868\u5931\u8D25"),w(ue),i(ue.length)}finally{V(!1)}},Te=()=>{z(1),ne()},ve=()=>{X(""),C(void 0),z(1),ne()},g=()=>{se(null),oe.resetFields(),B(!0)},s=e=>{se(e),oe.setFieldsValue({...e,dateRange:[e.startDate,e.endDate]}),B(!0)},c=e=>{jr.confirm({title:"\u786E\u8BA4\u5220\u9664",content:"\u786E\u5B9A\u8981\u5220\u9664\u8BE5\u4FC3\u9500\u6D3B\u52A8\u5417\uFF1F",onOk:()=>{v?.(e),ut.success("\u5220\u9664\u6210\u529F"),ne()}})},d=e=>{let b=e.status===fe.ENABLED?fe.DISABLED:fe.ENABLED;O?.(e.id,b),ut.success(b===fe.ENABLED?"\u5DF2\u542F\u7528":"\u5DF2\u7981\u7528"),ne()},f=async()=>{try{let e=await oe.validateFields(),b={...e,startDate:e.dateRange?.[0],endDate:e.dateRange?.[1]};ie?(j?.(ie.id,b),ut.success("\u7F16\u8F91\u6210\u529F")):(H?.(b),ut.success("\u521B\u5EFA\u6210\u529F")),B(!1),ne()}catch(e){console.error("Validation failed:",e)}},E=e=>{let b={[fe.ENABLED]:{color:"success",text:"\u5DF2\u542F\u7528",icon:T.createElement(Gn,null)},[fe.DISABLED]:{color:"default",text:"\u5DF2\u7981\u7528",icon:T.createElement(Jn,null)}},{color:Y,text:I,icon:R}=b[e]||{color:"default",text:"\u672A\u77E5",icon:null};return T.createElement(Un,{color:Y,icon:R},I)},m=[{title:"\u6D3B\u52A8\u540D\u79F0",dataIndex:"title",key:"title",width:200,render:e=>T.createElement(_n,{title:e},T.createElement("span",{className:"promotion-title"},T.createElement(qr,{style:{color:"#faad14",marginRight:8}}),e))},{title:"\u6D3B\u52A8\u65F6\u95F4",key:"dateRange",width:220,render:(e,b)=>T.createElement(Jt,null,T.createElement(qn,null),T.createElement("span",null,b.startDate," ~ ",b.endDate))},{title:"\u72B6\u6001",dataIndex:"status",key:"status",width:100,render:e=>E(e)},{title:"\u521B\u5EFA\u65F6\u95F4",dataIndex:"createTime",key:"createTime",width:180},{title:"\u64CD\u4F5C",key:"action",width:200,render:(e,b)=>T.createElement(Jt,null,T.createElement(nt,{type:"link",size:"small",icon:T.createElement(Kn,null),onClick:()=>s(b)},"\u7F16\u8F91"),T.createElement(nt,{type:"link",size:"small",onClick:()=>d(b)},b.status===fe.ENABLED?"\u7981\u7528":"\u542F\u7528"),T.createElement(nt,{type:"link",size:"small",danger:!0,icon:T.createElement($n,null),onClick:()=>c(b.id)},"\u5220\u9664"))}],A={totalPromotions:M.length,activePromotions:M.filter(e=>e.status===fe.ENABLED).length,upcomingPromotions:M.filter(e=>{let b=new Date;return new Date(e.startDate)>b}).length},a=M.filter(e=>e.status===fe.ENABLED).slice(0,5).map(e=>({color:"green",children:T.createElement("div",null,T.createElement("div",{className:"timeline-title"},e.title),T.createElement("div",{className:"timeline-date"},e.startDate," ~ ",e.endDate))}));return T.createElement("div",{className:`mall-promotion-card ${re||""}`,style:J},T.createElement(Vr,null,K&&T.createElement("div",{className:"statistics-section"},T.createElement(Vn,{gutter:16},T.createElement(Ht,{span:8},T.createElement(Qt,{title:"\u4FC3\u9500\u6D3B\u52A8\u603B\u6570",value:A.totalPromotions,prefix:T.createElement(qr,null)})),T.createElement(Ht,{span:8},T.createElement(Qt,{title:"\u8FDB\u884C\u4E2D\u7684\u6D3B\u52A8",value:A.activePromotions,valueStyle:{color:"#3f8600"}})),T.createElement(Ht,{span:8},T.createElement(Qt,{title:"\u5373\u5C06\u5F00\u59CB",value:A.upcomingPromotions,valueStyle:{color:"#faad14"}})))),U&&T.createElement("div",{className:"filter-section"},T.createElement(Jt,{wrap:!0},T.createElement(Kr,{placeholder:"\u6D3B\u52A8\u540D\u79F0",value:S,onChange:e=>X(e.target.value),style:{width:200}}),T.createElement($r,{placeholder:"\u6D3B\u52A8\u72B6\u6001",value:$,onChange:C,style:{width:120},allowClear:!0},Ur.map(e=>T.createElement($r.Option,{key:e.value,value:e.value},e.label))),T.createElement(nt,{type:"primary",onClick:Te},"\u67E5\u8BE2"),T.createElement(nt,{onClick:ve},"\u91CD\u7F6E"))),N&&T.createElement("div",{className:"action-section"},T.createElement(nt,{type:"primary",icon:T.createElement(jn,null),onClick:g},"\u521B\u5EFA\u4FC3\u9500\u6D3B\u52A8")),T.createElement("div",{className:"content-section"},T.createElement("div",{className:"table-section"},T.createElement(zn,{columns:m,dataSource:M,rowKey:"id",loading:W,pagination:{current:L,pageSize:F,total:ae,showSizeChanger:!0,showQuickJumper:!0,showTotal:e=>`\u5171 ${e} \u6761`,onChange:(e,b)=>{z(e),de(b)}}})),G&&a.length>0&&T.createElement("div",{className:"timeline-section"},T.createElement(Vr,{title:"\u6D3B\u52A8\u65F6\u95F4\u7EBF",size:"small"},T.createElement(Yn,{items:a}))))),T.createElement(jr,{title:ie?"\u7F16\u8F91\u4FC3\u9500\u6D3B\u52A8":"\u521B\u5EFA\u4FC3\u9500\u6D3B\u52A8",visible:_,onOk:f,onCancel:()=>B(!1),width:500},T.createElement(mt,{form:oe,layout:"vertical"},T.createElement(mt.Item,{name:"title",label:"\u6D3B\u52A8\u540D\u79F0",rules:[{required:!0,message:"\u8BF7\u8F93\u5165\u6D3B\u52A8\u540D\u79F0"}]},T.createElement(Kr,{placeholder:"\u8BF7\u8F93\u5165\u6D3B\u52A8\u540D\u79F0"})),T.createElement(mt.Item,{name:"dateRange",label:"\u6D3B\u52A8\u65F6\u95F4",rules:[{required:!0,message:"\u8BF7\u9009\u62E9\u6D3B\u52A8\u65F6\u95F4"}]},T.createElement(Qn,{style:{width:"100%"}})),T.createElement(mt.Item,{name:"status",label:"\u6D3B\u52A8\u72B6\u6001",initialValue:fe.ENABLED},T.createElement(Bn,{checkedChildren:"\u542F\u7528",unCheckedChildren:"\u7981\u7528",defaultChecked:!0})))))},Wt=Hn;import k,{useState as Ve,useEffect as Wn}from"react";import{Card as Xn,Button as at,Tag as Hr,Space as ct,Modal as Wr,Form as We,Input as pt,Select as Xr,message as gt,Table as Zn,Avatar as Rn,Divider as Zr,Switch as ea}from"antd";import{PlusOutlined as ta,EditOutlined as ra,DeleteOutlined as oa,UserOutlined as na}from"@ant-design/icons";var xe={DISABLED:0,ENABLED:1},Se={DISABLED:0,ENABLED:1},Xt={DIRECTORY:0,MENU:1,BUTTON:2},Jr=[{label:"\u7981\u7528",value:xe.DISABLED},{label:"\u542F\u7528",value:xe.ENABLED}],Qr=[{label:"\u7981\u7528",value:Se.DISABLED},{label:"\u542F\u7528",value:Se.ENABLED}],hs=[{label:"\u76EE\u5F55",value:Xt.DIRECTORY},{label:"\u83DC\u5355",value:Xt.MENU},{label:"\u6309\u94AE",value:Xt.BUTTON}];var aa=({dataSource:p,showCreateButton:r=!0,showFilter:l=!0,showStatistics:u=!0,onCreateUser:x,onEditUser:N,onDeleteUser:U,onToggleStatus:K,style:G,className:H})=>{let[j,v]=Ve(!1),[O,J]=Ve([]),[re,W]=Ve(0),[V,M]=Ve(1),[w,ae]=Ve(10),[i,L]=Ve(""),[z,F]=Ve(),[de,S]=Ve(!1),[X,$]=Ve(null),[C]=We.useForm(),_=[{id:1,username:"admin",nickName:"\u8D85\u7EA7\u7BA1\u7406\u5458",email:"admin@example.com",phone:"13800138000",status:xe.ENABLED,createTime:"2024-01-01 10:00:00",loginTime:"2024-04-02 09:30:00",roleIds:[1],roleNames:["\u8D85\u7EA7\u7BA1\u7406\u5458"]},{id:2,username:"operator",nickName:"\u8FD0\u8425\u4EBA\u5458",email:"operator@example.com",phone:"13900139000",status:xe.ENABLED,createTime:"2024-01-15 14:00:00",loginTime:"2024-04-01 16:20:00",roleIds:[2],roleNames:["\u8FD0\u8425"]},{id:3,username:"viewer",nickName:"\u8BBF\u5BA2\u7528\u6237",email:"viewer@example.com",phone:"13700137000",status:xe.DISABLED,createTime:"2024-02-01 09:00:00",loginTime:"2024-03-15 10:00:00",roleIds:[3],roleNames:["\u8BBF\u5BA2"]}];Wn(()=>{B()},[V,w]);let B=async()=>{v(!0);try{await new Promise(c=>setTimeout(c,500));let s=[..._];i&&(s=s.filter(c=>c.username.toLowerCase().includes(i.toLowerCase())||c.nickName?.toLowerCase().includes(i.toLowerCase()))),z!==void 0&&(s=s.filter(c=>c.status===z)),J(s),W(s.length)}catch(s){console.error("Failed to fetch user list:",s),gt.error("\u83B7\u53D6\u7528\u6237\u5217\u8868\u5931\u8D25")}finally{v(!1)}},ie=()=>{M(1),B()},se=()=>{L(""),F(void 0),M(1),B()},oe=()=>{$(null),C.resetFields(),S(!0)},ue=s=>{$(s),C.setFieldsValue(s),S(!0)},ye=s=>{Wr.confirm({title:"\u786E\u8BA4\u5220\u9664",content:"\u786E\u5B9A\u8981\u5220\u9664\u8BE5\u7528\u6237\u5417\uFF1F",onOk:()=>{U?.(s),gt.success("\u5220\u9664\u6210\u529F"),B()}})},ke=s=>{let c=s.status===xe.ENABLED?xe.DISABLED:xe.ENABLED;K?.(s.id,c),gt.success(c===xe.ENABLED?"\u5DF2\u542F\u7528":"\u5DF2\u7981\u7528"),B()},ne=async()=>{try{let s=await C.validateFields();X?(N?.(X.id,s),gt.success("\u7F16\u8F91\u6210\u529F")):(x?.(s),gt.success("\u521B\u5EFA\u6210\u529F")),S(!1),B()}catch(s){console.error("Validation failed:",s)}},Te=s=>{let c={[xe.ENABLED]:{color:"success",text:"\u5DF2\u542F\u7528"},[xe.DISABLED]:{color:"default",text:"\u5DF2\u7981\u7528"}},{color:d,text:f}=c[s]||{color:"default",text:"\u672A\u77E5"};return k.createElement(Hr,{color:d},f)},ve=[{title:"\u7528\u6237\u4FE1\u606F",key:"userInfo",width:200,render:(s,c)=>k.createElement(ct,null,k.createElement(Rn,{icon:k.createElement(na,null),style:{backgroundColor:"#1890ff"}}),k.createElement("div",null,k.createElement("div",{className:"user-name"},c.nickName||c.username),k.createElement("div",{className:"user-username"},"@",c.username)))},{title:"\u90AE\u7BB1",dataIndex:"email",key:"email",width:180},{title:"\u624B\u673A\u53F7",dataIndex:"phone",key:"phone",width:130},{title:"\u89D2\u8272",dataIndex:"roleNames",key:"roleNames",width:150,render:s=>k.createElement(ct,{wrap:!0},s?.map((c,d)=>k.createElement(Hr,{key:d,color:"blue"},c)))},{title:"\u72B6\u6001",dataIndex:"status",key:"status",width:80,render:s=>Te(s)},{title:"\u6700\u540E\u767B\u5F55",dataIndex:"loginTime",key:"loginTime",width:160},{title:"\u64CD\u4F5C",key:"action",width:180,render:(s,c)=>k.createElement(ct,null,k.createElement(at,{type:"link",size:"small",icon:k.createElement(ra,null),onClick:()=>ue(c)},"\u7F16\u8F91"),k.createElement(at,{type:"link",size:"small",onClick:()=>ke(c)},c.status===xe.ENABLED?"\u7981\u7528":"\u542F\u7528"),k.createElement(at,{type:"link",size:"small",danger:!0,icon:k.createElement(oa,null),onClick:()=>ye(c.id)},"\u5220\u9664"))}],g={totalUsers:_.length,activeUsers:_.filter(s=>s.status===xe.ENABLED).length,disabledUsers:_.filter(s=>s.status===xe.DISABLED).length};return k.createElement("div",{className:`mall-user-card ${H||""}`,style:G},k.createElement(Xn,null,u&&k.createElement("div",{className:"statistics-section"},k.createElement(ct,{size:"large"},k.createElement("div",{className:"stat-item"},k.createElement("div",{className:"stat-value"},g.totalUsers),k.createElement("div",{className:"stat-label"},"\u7528\u6237\u603B\u6570")),k.createElement(Zr,{type:"vertical",style:{height:40}}),k.createElement("div",{className:"stat-item"},k.createElement("div",{className:"stat-value",style:{color:"#52c41a"}},g.activeUsers),k.createElement("div",{className:"stat-label"},"\u6D3B\u8DC3\u7528\u6237")),k.createElement(Zr,{type:"vertical",style:{height:40}}),k.createElement("div",{className:"stat-item"},k.createElement("div",{className:"stat-value",style:{color:"#8c8c8c"}},g.disabledUsers),k.createElement("div",{className:"stat-label"},"\u5DF2\u7981\u7528")))),l&&k.createElement("div",{className:"filter-section"},k.createElement(ct,{wrap:!0},k.createElement(pt,{placeholder:"\u7528\u6237\u540D/\u6635\u79F0",value:i,onChange:s=>L(s.target.value),style:{width:200}}),k.createElement(Xr,{placeholder:"\u7528\u6237\u72B6\u6001",value:z,onChange:F,style:{width:120},allowClear:!0},Jr.map(s=>k.createElement(Xr.Option,{key:s.value,value:s.value},s.label))),k.createElement(at,{type:"primary",onClick:ie},"\u67E5\u8BE2"),k.createElement(at,{onClick:se},"\u91CD\u7F6E"))),r&&k.createElement("div",{className:"action-section"},k.createElement(at,{type:"primary",icon:k.createElement(ta,null),onClick:oe},"\u521B\u5EFA\u7528\u6237")),k.createElement(Zn,{columns:ve,dataSource:O,rowKey:"id",loading:j,pagination:{current:V,pageSize:w,total:re,showSizeChanger:!0,showQuickJumper:!0,showTotal:s=>`\u5171 ${s} \u6761`,onChange:(s,c)=>{M(s),ae(c)}}})),k.createElement(Wr,{title:X?"\u7F16\u8F91\u7528\u6237":"\u521B\u5EFA\u7528\u6237",visible:de,onOk:ne,onCancel:()=>S(!1),width:500},k.createElement(We,{form:C,layout:"vertical"},k.createElement(We.Item,{name:"username",label:"\u7528\u6237\u540D",rules:[{required:!0,message:"\u8BF7\u8F93\u5165\u7528\u6237\u540D"}]},k.createElement(pt,{placeholder:"\u8BF7\u8F93\u5165\u7528\u6237\u540D",disabled:!!X})),k.createElement(We.Item,{name:"nickName",label:"\u6635\u79F0",rules:[{required:!0,message:"\u8BF7\u8F93\u5165\u6635\u79F0"}]},k.createElement(pt,{placeholder:"\u8BF7\u8F93\u5165\u6635\u79F0"})),k.createElement(We.Item,{name:"email",label:"\u90AE\u7BB1",rules:[{required:!0,message:"\u8BF7\u8F93\u5165\u90AE\u7BB1"},{type:"email",message:"\u8BF7\u8F93\u5165\u6709\u6548\u7684\u90AE\u7BB1\u5730\u5740"}]},k.createElement(pt,{placeholder:"\u8BF7\u8F93\u5165\u90AE\u7BB1"})),k.createElement(We.Item,{name:"phone",label:"\u624B\u673A\u53F7",rules:[{required:!0,message:"\u8BF7\u8F93\u5165\u624B\u673A\u53F7"}]},k.createElement(pt,{placeholder:"\u8BF7\u8F93\u5165\u624B\u673A\u53F7"})),k.createElement(We.Item,{name:"status",label:"\u72B6\u6001",initialValue:xe.ENABLED},k.createElement(ea,{checkedChildren:"\u542F\u7528",unCheckedChildren:"\u7981\u7528",defaultChecked:!0})))))},Zt=aa;import P,{useState as je,useEffect as ia}from"react";import{Card as Rr,Button as it,Tag as eo,Space as Pt,Modal as to,Form as st,Input as It,Select as ro,message as bt,Table as sa,Divider as oo,Switch as la,Tree as da}from"antd";import{PlusOutlined as ma,EditOutlined as ua,DeleteOutlined as ca,TeamOutlined as pa}from"@ant-design/icons";var ga=({dataSource:p,showCreateButton:r=!0,showFilter:l=!0,showStatistics:u=!0,showPermissionTree:x=!0,onCreateRole:N,onEditRole:U,onDeleteRole:K,onToggleStatus:G,style:H,className:j})=>{let[v,O]=je(!1),[J,re]=je([]),[W,V]=je(0),[M,w]=je(1),[ae,i]=je(10),[L,z]=je(""),[F,de]=je(),[S,X]=je(!1),[$,C]=je(null),[_]=st.useForm(),B=[{id:1,name:"\u8D85\u7EA7\u7BA1\u7406\u5458",description:"\u62E5\u6709\u6240\u6709\u6743\u9650",adminCount:2,status:Se.ENABLED,sort:0,createTime:"2024-01-01 10:00:00"},{id:2,name:"\u8FD0\u8425",description:"\u8D1F\u8D23\u5546\u54C1\u548C\u8BA2\u5355\u7BA1\u7406",adminCount:5,status:Se.ENABLED,sort:1,createTime:"2024-01-15 14:00:00"},{id:3,name:"\u5BA2\u670D",description:"\u8D1F\u8D23\u8BA2\u5355\u5904\u7406\u548C\u5BA2\u6237\u670D\u52A1",adminCount:3,status:Se.ENABLED,sort:2,createTime:"2024-02-01 09:00:00"},{id:4,name:"\u8BBF\u5BA2",description:"\u53EA\u8BFB\u6743\u9650",adminCount:10,status:Se.DISABLED,sort:3,createTime:"2024-02-15 11:00:00"}],ie=[{title:"\u5546\u54C1\u7BA1\u7406",key:"product",children:[{title:"\u5546\u54C1\u5217\u8868",key:"product:list"},{title:"\u6DFB\u52A0\u5546\u54C1",key:"product:create"},{title:"\u7F16\u8F91\u5546\u54C1",key:"product:edit"},{title:"\u5220\u9664\u5546\u54C1",key:"product:delete"}]},{title:"\u8BA2\u5355\u7BA1\u7406",key:"order",children:[{title:"\u8BA2\u5355\u5217\u8868",key:"order:list"},{title:"\u8BA2\u5355\u8BE6\u60C5",key:"order:detail"},{title:"\u53D1\u8D27",key:"order:deliver"},{title:"\u5173\u95ED\u8BA2\u5355",key:"order:close"}]},{title:"\u8425\u9500\u7BA1\u7406",key:"marketing",children:[{title:"\u4F18\u60E0\u5238\u7BA1\u7406",key:"marketing:coupon"},{title:"\u4FC3\u9500\u6D3B\u52A8",key:"marketing:promotion"}]},{title:"\u6743\u9650\u7BA1\u7406",key:"permission",children:[{title:"\u7528\u6237\u7BA1\u7406",key:"permission:user"},{title:"\u89D2\u8272\u7BA1\u7406",key:"permission:role"}]}];ia(()=>{se()},[M,ae]);let se=async()=>{O(!0);try{await new Promise(f=>setTimeout(f,500));let d=[...B];L&&(d=d.filter(f=>f.name.toLowerCase().includes(L.toLowerCase())||f.description?.toLowerCase().includes(L.toLowerCase()))),F!==void 0&&(d=d.filter(f=>f.status===F)),re(d),V(d.length)}catch(d){console.error("Failed to fetch role list:",d),bt.error("\u83B7\u53D6\u89D2\u8272\u5217\u8868\u5931\u8D25")}finally{O(!1)}},oe=()=>{w(1),se()},ue=()=>{z(""),de(void 0),w(1),se()},ye=()=>{C(null),_.resetFields(),X(!0)},ke=d=>{C(d),_.setFieldsValue(d),X(!0)},ne=d=>{to.confirm({title:"\u786E\u8BA4\u5220\u9664",content:"\u786E\u5B9A\u8981\u5220\u9664\u8BE5\u89D2\u8272\u5417\uFF1F",onOk:()=>{K?.(d),bt.success("\u5220\u9664\u6210\u529F"),se()}})},Te=d=>{let f=d.status===Se.ENABLED?Se.DISABLED:Se.ENABLED;G?.(d.id,f),bt.success(f===Se.ENABLED?"\u5DF2\u542F\u7528":"\u5DF2\u7981\u7528"),se()},ve=async()=>{try{let d=await _.validateFields();$?(U?.($.id,d),bt.success("\u7F16\u8F91\u6210\u529F")):(N?.(d),bt.success("\u521B\u5EFA\u6210\u529F")),X(!1),se()}catch(d){console.error("Validation failed:",d)}},g=d=>{let f={[Se.ENABLED]:{color:"success",text:"\u5DF2\u542F\u7528"},[Se.DISABLED]:{color:"default",text:"\u5DF2\u7981\u7528"}},{color:E,text:m}=f[d]||{color:"default",text:"\u672A\u77E5"};return P.createElement(eo,{color:E},m)},s=[{title:"\u89D2\u8272\u540D\u79F0",dataIndex:"name",key:"name",width:150,render:d=>P.createElement(Pt,null,P.createElement(pa,{style:{color:"#1890ff"}}),P.createElement("span",{className:"role-name"},d))},{title:"\u63CF\u8FF0",dataIndex:"description",key:"description",width:200},{title:"\u7528\u6237\u6570",dataIndex:"adminCount",key:"adminCount",width:80,render:d=>P.createElement(eo,{color:"blue"},d," \u4EBA")},{title:"\u72B6\u6001",dataIndex:"status",key:"status",width:80,render:d=>g(d)},{title:"\u6392\u5E8F",dataIndex:"sort",key:"sort",width:60},{title:"\u521B\u5EFA\u65F6\u95F4",dataIndex:"createTime",key:"createTime",width:160},{title:"\u64CD\u4F5C",key:"action",width:180,render:(d,f)=>P.createElement(Pt,null,P.createElement(it,{type:"link",size:"small",icon:P.createElement(ua,null),onClick:()=>ke(f)},"\u7F16\u8F91"),P.createElement(it,{type:"link",size:"small",onClick:()=>Te(f)},f.status===Se.ENABLED?"\u7981\u7528":"\u542F\u7528"),P.createElement(it,{type:"link",size:"small",danger:!0,icon:P.createElement(ca,null),onClick:()=>ne(f.id)},"\u5220\u9664"))}],c={totalRoles:B.length,activeRoles:B.filter(d=>d.status===Se.ENABLED).length,totalAdmins:B.reduce((d,f)=>d+f.adminCount,0)};return P.createElement("div",{className:`mall-role-card ${j||""}`,style:H},P.createElement(Rr,null,u&&P.createElement("div",{className:"statistics-section"},P.createElement(Pt,{size:"large"},P.createElement("div",{className:"stat-item"},P.createElement("div",{className:"stat-value"},c.totalRoles),P.createElement("div",{className:"stat-label"},"\u89D2\u8272\u603B\u6570")),P.createElement(oo,{type:"vertical",style:{height:40}}),P.createElement("div",{className:"stat-item"},P.createElement("div",{className:"stat-value",style:{color:"#52c41a"}},c.activeRoles),P.createElement("div",{className:"stat-label"},"\u542F\u7528\u89D2\u8272")),P.createElement(oo,{type:"vertical",style:{height:40}}),P.createElement("div",{className:"stat-item"},P.createElement("div",{className:"stat-value",style:{color:"#1890ff"}},c.totalAdmins),P.createElement("div",{className:"stat-label"},"\u7528\u6237\u603B\u6570")))),l&&P.createElement("div",{className:"filter-section"},P.createElement(Pt,{wrap:!0},P.createElement(It,{placeholder:"\u89D2\u8272\u540D\u79F0/\u63CF\u8FF0",value:L,onChange:d=>z(d.target.value),style:{width:200}}),P.createElement(ro,{placeholder:"\u89D2\u8272\u72B6\u6001",value:F,onChange:de,style:{width:120},allowClear:!0},Qr.map(d=>P.createElement(ro.Option,{key:d.value,value:d.value},d.label))),P.createElement(it,{type:"primary",onClick:oe},"\u67E5\u8BE2"),P.createElement(it,{onClick:ue},"\u91CD\u7F6E"))),r&&P.createElement("div",{className:"action-section"},P.createElement(it,{type:"primary",icon:P.createElement(ma,null),onClick:ye},"\u521B\u5EFA\u89D2\u8272")),P.createElement("div",{className:"content-section"},P.createElement("div",{className:"table-section"},P.createElement(sa,{columns:s,dataSource:J,rowKey:"id",loading:v,pagination:{current:M,pageSize:ae,total:W,showSizeChanger:!0,showQuickJumper:!0,showTotal:d=>`\u5171 ${d} \u6761`,onChange:(d,f)=>{w(d),i(f)}}})),x&&P.createElement("div",{className:"permission-section"},P.createElement(Rr,{title:"\u6743\u9650\u6811",size:"small"},P.createElement(da,{checkable:!0,defaultExpandedKeys:["product","order"],treeData:ie}))))),P.createElement(to,{title:$?"\u7F16\u8F91\u89D2\u8272":"\u521B\u5EFA\u89D2\u8272",visible:S,onOk:ve,onCancel:()=>X(!1),width:500},P.createElement(st,{form:_,layout:"vertical"},P.createElement(st.Item,{name:"name",label:"\u89D2\u8272\u540D\u79F0",rules:[{required:!0,message:"\u8BF7\u8F93\u5165\u89D2\u8272\u540D\u79F0"}]},P.createElement(It,{placeholder:"\u8BF7\u8F93\u5165\u89D2\u8272\u540D\u79F0"})),P.createElement(st.Item,{name:"description",label:"\u63CF\u8FF0"},P.createElement(It.TextArea,{rows:3,placeholder:"\u8BF7\u8F93\u5165\u89D2\u8272\u63CF\u8FF0"})),P.createElement(st.Item,{name:"sort",label:"\u6392\u5E8F",initialValue:0},P.createElement(It,{type:"number",placeholder:"\u6392\u5E8F\u503C"})),P.createElement(st.Item,{name:"status",label:"\u72B6\u6001",initialValue:Se.ENABLED},P.createElement(la,{checkedChildren:"\u542F\u7528",unCheckedChildren:"\u7981\u7528",defaultChecked:!0})))))},Rt=ga;import Xe,{useState as ft,useCallback as Fe,useMemo as vo,useEffect as nr,useRef as Co,Children as $a,isValidElement as qa}from"react";import te,{useState as ba}from"react";import{Menu as lo,Tag as fa}from"antd";import{UserOutlined as ha,SafetyCertificateOutlined as ya,ShoppingOutlined as no,FileTextOutlined as er,TeamOutlined as va,SettingOutlined as ao,TagsOutlined as Ca,InboxOutlined as xa,DollarOutlined as Sa,GiftOutlined as io,ThunderboltOutlined as Ta,FireOutlined as so,DashboardOutlined as ka}from"@ant-design/icons";var wa=!1,{SubMenu:js}=lo,tr=[{key:"dashboard",label:"\u5DE5\u4F5C\u53F0",icon:te.createElement(ka,null),path:"/dashboard"},{key:"permission",label:"\u6743\u9650\u7BA1\u7406",icon:te.createElement(ya,null),children:[{key:"permission/users",label:"\u7528\u6237\u7BA1\u7406",icon:te.createElement(ha,null),path:"/permission/users"},{key:"permission/roles",label:"\u89D2\u8272\u7BA1\u7406",icon:te.createElement(va,null),path:"/permission/roles"},{key:"permission/resources",label:"\u8D44\u6E90\u7BA1\u7406",icon:te.createElement(ao,null),path:"/permission/resources"},{key:"permission/menus",label:"\u83DC\u5355\u7BA1\u7406",icon:te.createElement(er,null),path:"/permission/menus"}]},{key:"product",label:"\u5546\u54C1\u7BA1\u7406",icon:te.createElement(no,null),children:[{key:"product/list",label:"\u5546\u54C1\u5217\u8868",icon:te.createElement(xa,null),path:"/product/list"},{key:"product/add",label:"\u6DFB\u52A0\u5546\u54C1",icon:te.createElement(no,null),path:"/product/add"},{key:"product/category",label:"\u5546\u54C1\u5206\u7C7B",icon:te.createElement(Ca,null),path:"/product/category"},{key:"product/brand",label:"\u54C1\u724C\u7BA1\u7406",path:"/product/brand"},{key:"product/attribute",label:"\u5546\u54C1\u5C5E\u6027",path:"/product/attribute"}]},{key:"order",label:"\u8BA2\u5355\u7BA1\u7406",icon:te.createElement(er,null),children:[{key:"order/list",label:"\u8BA2\u5355\u5217\u8868",icon:te.createElement(er,null),path:"/order/list"},{key:"order/setting",label:"\u8BA2\u5355\u8BBE\u7F6E",icon:te.createElement(ao,null),path:"/order/setting"},{key:"order/return",label:"\u9000\u8D27\u7533\u8BF7",path:"/order/return"},{key:"order/reason",label:"\u9000\u8D27\u539F\u56E0",path:"/order/reason"}]},{key:"marketing",label:"\u8425\u9500\u7BA1\u7406",icon:te.createElement(io,null),children:[{key:"marketing/coupon",label:"\u4F18\u60E0\u5238\u7BA1\u7406",icon:te.createElement(io,null),path:"/marketing/coupon"},{key:"marketing/promotion",label:"\u4FC3\u9500\u6D3B\u52A8",icon:te.createElement(Sa,null),path:"/marketing/promotion"},{key:"marketing/flash",label:"\u79D2\u6740\u6D3B\u52A8",icon:te.createElement(Ta,null),path:"/marketing/flash"},{key:"marketing/new",label:"\u65B0\u54C1\u63A8\u8350",icon:te.createElement(so,null),path:"/marketing/new"},{key:"marketing/hot",label:"\u4EBA\u6C14\u63A8\u8350",icon:te.createElement(so,null),path:"/marketing/hot"},{key:"marketing/advertise",label:"\u5E7F\u544A\u7BA1\u7406",path:"/marketing/advertise"},{key:"marketing/subject",label:"\u4E13\u9898\u7BA1\u7406",path:"/marketing/subject"},{key:"marketing/brand",label:"\u54C1\u724C\u63A8\u8350",path:"/marketing/brand"}]}],Pa=({collapsed:p,selectedKey:r,openKeys:l,onMenuClick:u,onOpenChange:x,menuItems:N})=>{let U=N||tr,[K,G]=ba(U.filter(v=>v.children).map(v=>v.key)),H=v=>{let O=v[v.length-1];O&&U.some(J=>J.key===O)?(G(v),x(v)):(G(O?[O]:[]),x(O?[O]:[]))},j=({key:v})=>{u(v)};return te.createElement("div",{className:`sidebar-container ${p?"collapsed":""}`},te.createElement("div",{className:"sidebar-logo"},!p&&te.createElement("span",{className:"logo-text"},"Mall Admin@",wa&&te.createElement(fa,{color:"orange",style:{marginLeft:8,fontSize:10}},"CDN")),p&&te.createElement("span",{className:"logo-icon"},"M")),te.createElement(lo,{mode:"inline",theme:"dark",inlineCollapsed:p,selectedKeys:[r],defaultOpenKeys:K,openKeys:l.length>0?l:K,onClick:j,onOpenChange:H,items:U.map(v=>v.children&&v.children.length>0?{key:v.key,icon:v.icon,label:v.label,children:v.children.map(O=>({key:O.key,icon:O.icon,label:O.label}))}:{key:v.key,icon:v.icon,label:v.label})}))},mo=Pa;import he from"react";import{Dropdown as Na,Avatar as Aa,Space as Da,Menu as Ea}from"antd";import{MenuFoldOutlined as La,MenuUnfoldOutlined as Fa,UserOutlined as po,SettingOutlined as Ua,LogoutOutlined as Ma}from"@ant-design/icons";import rr from"react";import{Breadcrumb as uo}from"antd";var Ia={dashboard:"\u5DE5\u4F5C\u53F0",permission:"\u6743\u9650\u7BA1\u7406",product:"\u5546\u54C1\u7BA1\u7406",order:"\u8BA2\u5355\u7BA1\u7406",marketing:"\u8425\u9500\u7BA1\u7406",users:"\u7528\u6237\u7BA1\u7406",roles:"\u89D2\u8272\u7BA1\u7406",resources:"\u8D44\u6E90\u7BA1\u7406",menus:"\u83DC\u5355\u7BA1\u7406",list:"\u5217\u8868",add:"\u6DFB\u52A0",category:"\u5206\u7C7B",brand:"\u54C1\u724C",attribute:"\u5C5E\u6027",setting:"\u8BBE\u7F6E",return:"\u9000\u8D27",reason:"\u539F\u56E0",coupon:"\u4F18\u60E0\u5238",promotion:"\u4FC3\u9500",flash:"\u79D2\u6740",new:"\u65B0\u54C1",hot:"\u4EBA\u6C14",advertise:"\u5E7F\u544A",subject:"\u4E13\u9898"},Oa=({items:p,onNavigate:r})=>{let l=u=>u.split("/").map(N=>Ia[N]||N).join(" / ");return!p||p.length===0?null:rr.createElement(uo,null,p.map(u=>rr.createElement(uo.Item,{key:u.key},rr.createElement("a",{onClick:()=>r(u.key)},u.label||l(u.key)))))},co=Oa;var Ba=({collapsed:p,onToggleCollapse:r,breadcrumbItems:l,onNavigate:u})=>he.createElement("div",{className:"navbar-container"},he.createElement("div",{className:"navbar-left"},he.createElement("button",{className:"hamburger-btn",onClick:r},p?he.createElement(Fa,null):he.createElement(La,null)),he.createElement(co,{items:l,onNavigate:u})),he.createElement("div",{className:"navbar-right"},he.createElement(Na,{overlay:he.createElement(Ea,{items:[{key:"profile",icon:he.createElement(po,null),label:"\u4E2A\u4EBA\u4E2D\u5FC3"},{key:"settings",icon:he.createElement(Ua,null),label:"\u7CFB\u7EDF\u8BBE\u7F6E"},{type:"divider"},{key:"logout",icon:he.createElement(Ma,null),label:"\u9000\u51FA\u767B\u5F55",danger:!0}],onClick:({key:K})=>{K==="logout"&&console.log("User logged out")}}),placement:"bottomRight"},he.createElement("div",{className:"user-info"},he.createElement(Aa,{size:32,icon:he.createElement(po,null),className:"user-avatar"}),he.createElement(Da,{size:4,className:"username"},he.createElement("span",null,"\u7BA1\u7406\u5458")))))),go=Ba;import Nt from"react";import me,{useState as Ot,useRef as za,useEffect as bo}from"react";import{Dropdown as _a,Menu as Ya}from"antd";import{CloseOutlined as fo,ReloadOutlined as Va,CloseCircleOutlined as or}from"@ant-design/icons";var ja=({tabs:p,activeTabKey:r,onTabClick:l,onCloseTab:u,onCloseOther:x,onCloseAll:N,closableTabs:U=!0})=>{let[K,G]=Ot(null),[H,j]=Ot(!1),[v,O]=Ot(""),[J,re]=Ot({x:0,y:0}),W=za(null);bo(()=>{if(W.current&&r){let i=W.current.querySelector(`[data-tab-key="${r}"]`);i&&i.scrollIntoView({behavior:"smooth",block:"nearest",inline:"center"})}},[r]),bo(()=>{let i=()=>j(!1);if(H)return document.addEventListener("click",i),()=>document.removeEventListener("click",i)},[H]);let V=(i,L)=>{i.preventDefault(),i.stopPropagation(),O(L),re({x:i.clientX,y:i.clientY}),j(!0)},M=i=>{switch(j(!1),i){case"close":u(v);break;case"closeOther":x(v);break;case"closeAll":N();break;case"refresh":window.location.reload();break}};if(!p||p.length===0)return null;let w=[{key:"refresh",icon:me.createElement(Va,null),label:"\u5237\u65B0\u5F53\u524D\u9875"},{key:"close",icon:me.createElement(fo,null),label:"\u5173\u95ED\u5F53\u524D",disabled:!U||p.find(i=>i.key===v)?.closable===!1},{type:"divider"},{key:"closeOther",icon:me.createElement(or,null),label:"\u5173\u95ED\u5176\u4ED6",disabled:p.length<=1},{key:"closeAll",icon:me.createElement(or,null),label:"\u5173\u95ED\u6240\u6709"}],ae=me.createElement(Ya,{items:w,onClick:({key:i})=>M(i)});return me.createElement(me.Fragment,null,me.createElement("div",{className:"tab-bar-container"},me.createElement("div",{className:"tab-bar-scroll",ref:W},p.map(i=>me.createElement("div",{key:i.key,"data-tab-key":i.key,className:`tab-item ${r===i.key?"active":""} ${K===i.key?"hovered":""}`,onClick:()=>l(i.key),onMouseEnter:()=>G(i.key),onMouseLeave:()=>G(null),onContextMenu:L=>V(L,i.key)},i.icon&&me.createElement("span",{className:"tab-icon"},i.icon),me.createElement("span",{className:"tab-label"},i.label),U&&i.closable&&me.createElement("span",{className:`tab-close-btn ${K===i.key||r===i.key?"visible":""}`,onClick:L=>{L.stopPropagation(),u(i.key)}},me.createElement(fo,{style:{fontSize:10}}))))),U&&p.length>1&&me.createElement("div",{className:"tab-actions"},me.createElement("button",{className:"close-all-btn",onClick:N,title:"\u5173\u95ED\u5168\u90E8\u6807\u7B7E"},me.createElement(or,null)))),H&&me.createElement("div",{style:{position:"fixed",left:J.x,top:J.y,zIndex:1e3}},me.createElement(_a,{overlay:ae,visible:H,onVisibleChange:j,trigger:["click"]},me.createElement("div",{style:{width:0,height:0}}))))},ho=ja;var Ka=({children:p,pageKey:r,tabs:l,activeTabKey:u,onTabClick:x,onCloseTab:N,onCloseOther:U,onCloseAll:K,enableTabs:G=!0,closableTabs:H=!0,className:j=""})=>Nt.createElement("main",{className:`main-content ${j}`},G&&l.length>0&&Nt.createElement(ho,{tabs:l,activeTabKey:u,onTabClick:x,onCloseTab:N,onCloseOther:U,onCloseAll:K,closableTabs:H}),Nt.createElement("div",{className:"content-wrapper"},Nt.createElement("div",{className:"page-container",key:r},p))),yo=Ka;var Ga="general",ar=()=>{try{let p=window.AliLowCodeEngine;if(!p?.project)return;let r=p.project.exportSchema("save"),l=`${Ga}:projectSchema`;localStorage.setItem(l,JSON.stringify(r)),console.log("[AdminLayout] \u{1F4BE} Schema saved to localStorage")}catch(p){console.error("[AdminLayout] Failed to save schema:",p)}},Dt=(p,r)=>{for(let l of p){if(l.key===r)return l;if(l.children){let u=Dt(l.children,r);if(u)return u}}},At=p=>{let r=p.split("/");return{dashboard:"\u5DE5\u4F5C\u53F0",permission:"\u6743\u9650\u7BA1\u7406",product:"\u5546\u54C1\u7BA1\u7406",order:"\u8BA2\u5355\u7BA1\u7406",marketing:"\u8425\u9500\u7BA1\u7406",users:"\u7528\u6237\u7BA1\u7406",roles:"\u89D2\u8272\u7BA1\u7406",resources:"\u8D44\u6E90\u7BA1\u7406",menus:"\u83DC\u5355\u7BA1\u7406",list:"\u5217\u8868",add:"\u6DFB\u52A0",category:"\u5206\u7C7B",brand:"\u54C1\u724C",attribute:"\u5C5E\u6027",setting:"\u8BBE\u7F6E",return:"\u9000\u8D27\u7533\u8BF7",reason:"\u9000\u8D27\u539F\u56E0",coupon:"\u4F18\u60E0\u5238\u7BA1\u7406",promotion:"\u4FC3\u9500\u6D3B\u52A8",flash:"\u79D2\u6740\u6D3B\u52A8",new:"\u65B0\u54C1\u63A8\u8350",hot:"\u4EBA\u6C14\u63A8\u8350",advertise:"\u5E7F\u544A\u7BA1\u7406",subject:"\u4E13\u9898\u7BA1\u7406"}[r[r.length-1]]||r[r.length-1]},Ja=({defaultSelectedKey:p="dashboard",defaultOpenKeys:r,collapsible:l=!0,enableTabs:u=!0,maxTabs:x=10,closableTabs:N=!0,logoText:U="Mall Admin@",menuItems:K,style:G,className:H,children:j,__designMode:v,componentId:O})=>{let J=K||tr,[re,W]=ft(!1),[V,M]=ft(p),[w,ae]=ft(r||[]),[i,L]=ft(()=>{let g=Dt(J,p);return[{key:p,label:g?.label||At(p),icon:g?.icon,closable:!1,path:g?.path||`/${p}`}]}),[z,F]=ft(p),de=Co(z);de.current=z;let S=Co(!1);nr(()=>{if(v!=="design"||!O||S.current)return;let g=setTimeout(()=>{try{let s=window.AliLowCodeEngine;if(!s?.project?.currentDocument)return;let c=s.project.currentDocument,d=c.getNodeById(O);if(!d){console.log("[AdminLayout] \u26A0\uFE0F AdminLayout node not found");return}let f=d.schema?.children||[];console.log("[AdminLayout] \u{1F50D} Schema children:",f.length,f.map(m=>m.componentName));let E=f.filter(m=>m.componentName==="TabPane");if(console.log("[AdminLayout] \u{1F50D} Found existing TabPanes:",E.length),E.length>0){let m=E.map(a=>{let e=a.props?.tabKey||"unknown",b=a.props?.tab||At(e),Y=Dt(J,e);return console.log("[AdminLayout] \u{1F4CB} Restoring tab:",e,b),{key:e,label:b,icon:Y?.icon,closable:e!=="dashboard",path:Y?.path||`/${e}`}});console.log("[AdminLayout] \u{1F4CB} Restored tabs from schema:",m.map(a=>a.key)),L(m);let A=m[m.length-1];A&&(F(A.key),M(A.key))}else{console.log("[AdminLayout] \u{1F4CB} No TabPane found, creating default dashboard TabPane");let m=c.createNode({componentName:"TabPane",props:{tab:"\u5DE5\u4F5C\u53F0",tabKey:"dashboard",activeTabKey:"dashboard"}});m&&(c.insertNode(d,m),console.log("[AdminLayout] \u2705 Created default TabPane for dashboard"))}S.current=!0}catch(s){console.error("[AdminLayout] Init TabPane error:",s)}},100);return()=>clearTimeout(g)},[O,v,J]),nr(()=>{if(v!=="design")return;let g=window.AliLowCodeEngine;if(!g?.project?.currentDocument)return;let s=g.project.currentDocument,c=null,d=()=>{c&&clearTimeout(c),c=setTimeout(()=>{ar()},500)},f=s.onAddNode?.(()=>{console.log("[AdminLayout] \u{1F4CC} onAddNode triggered"),d()}),E=s.onRemoveNode?.(()=>{console.log("[AdminLayout] \u{1F4CC} onRemoveNode triggered"),d()}),m=s.onMountNode?.(()=>{console.log("[AdminLayout] \u{1F4CC} onMountNode triggered"),d()});return()=>{c&&clearTimeout(c),f?.(),E?.(),m?.()}},[v]),nr(()=>{if(!(v!=="design"||!O))try{let g=window.AliLowCodeEngine;if(!g?.project?.currentDocument)return;let c=g.project.currentDocument.getNodeById(O);c?.children&&(Array.isArray(c.children)?c.children:c.children.toArray?c.children.toArray():[]).forEach(f=>{f.componentName==="TabPane"&&f.setPropValue("activeTabKey",z)})}catch{}},[z,O,v]);let X=Fe(()=>{l&&W(g=>!g)},[l]),$=Fe((g,s)=>{if(typeof window>"u")return!1;try{let c=window.AliLowCodeEngine;if(!c?.project?.currentDocument)return!1;let d=c.project.currentDocument,f=O?d.getNodeById(O):null;if(!f)return!1;let E=Array.isArray(f.children)?f.children:f.children?.toArray?f.children.toArray():[];console.log("[AdminLayout] \u{1F50D} All children before create:",E.map(A=>({id:A.id,name:A.componentName,tabKey:A.props?.tabKey})));for(let A of E){let a=A.props?.tabKey||A.getPropValue?.("tabKey");if(A.componentName==="TabPane"&&a===g){if(console.log("[AdminLayout] \u26A0\uFE0F Found existing TabPane, removing first:",A.id),A.children){let e=Array.isArray(A.children)?[...A.children]:A.children.toArray?[...A.children.toArray()]:[];console.log("[AdminLayout] \u{1F5D1}\uFE0F Removing",e.length,"children from existing TabPane");for(let b of e)try{d.removeNode(b)}catch{}}d.removeNode(A);break}}let m=d.createNode({componentName:"TabPane",props:{tab:s,tabKey:g,activeTabKey:de.current}});return m?(d.insertNode(f,m),console.log("[AdminLayout] \u2705 Created new TabPane:",g,"nodeId:",m.id),setTimeout(()=>ar(),100),!0):!1}catch(c){return console.error("[AdminLayout] createTabPane error:",c),!1}},[O]),C=Fe(g=>{if(typeof window>"u")return!1;let s=!1;try{let c=window.AliLowCodeEngine;if(!c?.project?.currentDocument)return!1;let d=c.project.currentDocument,f=O?d.getNodeById(O):null;if(console.log("[AdminLayout] \u{1F5D1}\uFE0F removeTabPane called:",g),console.log("[AdminLayout] componentId:",O),console.log("[AdminLayout] adminLayoutNode:",f?"found":"NOT FOUND"),console.log("[AdminLayout] adminLayoutNode.id:",f?.id),console.log("[AdminLayout] adminLayoutNode.componentName:",f?.componentName),!f)return!1;let E=[];if(f.children&&(Array.isArray(f.children)?E=f.children:typeof f.children.toArray=="function"?E=f.children.toArray():typeof f.children.map=="function"&&(E=f.children.map(m=>m))),E.length===0&&f.schema?.children){console.log("[AdminLayout] Trying schema.children...");let m=f.schema.children;Array.isArray(m)&&(E=m.map(A=>d.getNodeById(A.id)).filter(Boolean))}if(E.length===0){console.log("[AdminLayout] Trying documentModel.getRoot()...");let m=d.getRoot();console.log("[AdminLayout] Root node:",m?.componentName);let A=(e,b)=>{if(!b)return null;if(e.id===b)return e;if(e.children){let Y=Array.isArray(e.children)?e.children:e.children.toArray?e.children.toArray():[];for(let I of Y){let R=A(I,b);if(R)return R}}return null},a=A(m,O);a&&a.children&&(E=Array.isArray(a.children)?a.children:a.children.toArray?a.children.toArray():[])}console.log("[AdminLayout] Final children count:",E.length),console.log("[AdminLayout] Children details:",E.map(m=>({id:m?.id,name:m?.componentName,tabKey:m?.props?.tabKey||m?.getPropValue?.("tabKey"),childrenCount:m?.children?Array.isArray(m.children)?m.children.length:m.children.toArray?m.children.toArray().length:0:0}))),E.forEach((m,A)=>{if(console.log(`[AdminLayout] Child[${A}] ${m?.componentName}:`,{id:m?.id,tabKey:m?.props?.tabKey||m?.getPropValue?.("tabKey"),hasChildren:!!m?.children,childrenType:m?.children?Array.isArray(m.children)?"array":typeof m.children.toArray=="function"?"array-like":typeof m.children:"none"}),m?.componentName==="TabPane"&&m?.children){let a=Array.isArray(m.children)?m.children:m.children.toArray?m.children.toArray():[];if(console.log("[AdminLayout] TabPane children:",a.map(e=>({id:e?.id,name:e?.componentName}))),a.length===0){if(console.log("[AdminLayout] Trying alternative methods..."),m.schema?.children&&console.log("[AdminLayout] schema.children:",m.schema.children),typeof m.getChildren=="function"){let e=m.getChildren();console.log("[AdminLayout] getChildren():",e)}m.slots&&console.log("[AdminLayout] slots:",m.slots)}}m?.componentName!=="TabPane"&&console.log("[AdminLayout] \u26A0\uFE0F Found non-TabPane child! This might be a dragged component.")});for(let m of E){if(!m)continue;let A=m.props?.tabKey||m.getPropValue?.("tabKey");if(m.componentName==="TabPane"&&A===g){console.log("[AdminLayout] \u2705 Found TabPane to remove:",m.id);let a=m.schema?.children;if(a&&Array.isArray(a)&&a.length>0){console.log("[AdminLayout] Removing",a.length,"grandchildren from schema.children");for(let e=a.length-1;e>=0;e--){let b=a[e],Y=d.getNodeById(b.id);if(Y)try{d.removeNode(Y),console.log("[AdminLayout] \u2713 Removed grandchild:",Y.id,Y.componentName)}catch(I){console.warn("[AdminLayout] \u2717 Failed to remove grandchild:",I)}}}else console.log("[AdminLayout] No grandchildren to remove");try{d.removeNode(m),s=!0,console.log("[AdminLayout] \u2705 Removed TabPane node:",g),setTimeout(()=>ar(),100)}catch(e){console.error("[AdminLayout] Failed to remove TabPane:",e)}break}}return s||console.warn("[AdminLayout] \u26A0\uFE0F TabPane not found for key:",g),s}catch(c){return console.error("[AdminLayout] removeTabPane error:",c),!1}},[O]),_=Fe(g=>{if(M(g),!i.find(c=>c.key===g)){let c=Dt(J,g),d={key:g,label:c?.label||At(g),icon:c?.icon,closable:g!=="dashboard",path:c?.path||`/${g}`};L(f=>{if(f.length>=x){let E=f.filter(m=>m.closable);if(E.length>0)return[...f.filter(m=>m.key!==E[0].key),d]}return[...f,d]}),v==="design"&&setTimeout(()=>$(g,c?.label||At(g)),0)}F(g)},[i,J,x,v,$]),B=Fe(g=>ae(g),[]),ie=Fe(g=>{M(g),F(g)},[]),se=Fe(g=>{M(g),F(g)},[]),oe=Fe(g=>{if(g!=="dashboard"&&(C(g),L(s=>s.filter(c=>c.key!==g)),g===z)){let s=i.filter(c=>c.key!==g);if(s.length>0){let c=i.findIndex(f=>f.key===g),d=s[c]||s[s.length-1];M(d.key),F(d.key)}}},[i,z,C]),ue=Fe(g=>{i.forEach(s=>{s.key!==g&&s.key!=="dashboard"&&C(s.key)}),L(s=>s.filter(c=>c.key===g||c.key==="dashboard")),M(g),F(g)},[i,C]),ye=Fe(()=>{i.forEach(s=>{s.key!=="dashboard"&&C(s.key)});let g=i.find(s=>s.key==="dashboard");g&&(L([g]),M("dashboard"),F("dashboard"))},[i,C]),ke=vo(()=>V==="dashboard"?[]:V.split("/").length===1?[{key:V,label:"",path:V}]:[{key:V,label:"",path:V}],[V]),ve=vo(()=>j?v==="design"?$a.toArray(j).find(c=>qa(c)?c.props?.tabKey===z:!1)||null:j:null,[j,z,v])||Xe.createElement("div",{style:{padding:24,color:"#999"}},"\u70B9\u51FB\u4FA7\u8FB9\u680F\u83DC\u5355\u521B\u5EFA\u9009\u9879\u5361\uFF0C\u7136\u540E\u62D6\u62FD\u7EC4\u4EF6\u5230\u5BF9\u5E94\u9762\u677F");return Xe.createElement("div",{className:`admin-layout ${re?"is-collapse":""} ${H||""}`,style:G,"data-active-tab":z},Xe.createElement(mo,{collapsed:re,selectedKey:V,openKeys:w,onMenuClick:_,onOpenChange:B,menuItems:J}),Xe.createElement("div",{className:"layout-right"},Xe.createElement(go,{collapsed:re,onToggleCollapse:X,breadcrumbItems:ke,onNavigate:ie}),Xe.createElement(yo,{pageKey:V,tabs:i,activeTabKey:z,onTabClick:se,onCloseTab:oe,onCloseOther:ue,onCloseAll:ye,enableTabs:u,closableTabs:N,className:re?"collapsed":""},ve)),l&&Xe.createElement("div",{className:`mobile-overlay ${re?"":"visible"}`,onClick:X}))},ir=Ja;import Qa from"react";var Ha=({tab:p,tabKey:r,activeTabKey:l,children:u,className:x,style:N})=>{let U=l===r;return Qa.createElement("div",{className:`tab-pane ${U?"tab-pane--active":""} ${x||""}`,style:{...N,display:U?void 0:"none"},"data-tab-key":r,"data-active":U?"true":"false"},u)},sr=Ha;var Wa={ProductList:Tr,ProductForm:Pr,OrderList:_t,OrderForm:Vt,CouponCard:Gt,PromotionCard:Wt,UserCard:Zt,RoleCard:Rt,AdminLayout:ir,TabPane:sr},Nl=Wa;export{ir as AdminLayout,Gt as CouponCard,Vt as OrderForm,_t as OrderList,Pr as ProductForm,Tr as ProductList,Wt as PromotionCard,Rt as RoleCard,sr as TabPane,Zt as UserCard,Nl as default};