{"version":3,"file":"index.ef298821.js","sources":["../../src/pages/createOrder/components/formInfo/helper.ts","../../src/pages/account/components/goodsDetail/index.tsx","../../src/pages/createOrder/components/skuModal/goodsList/index.tsx"],"sourcesContent":["import {getBoxDtoList, getTotalData} from \"@/pages/createOrder/interface\";\r\n// 默认sku\r\nexport const skuDefault = {\r\n '0-brand-0': \"\",\r\n '0-brandType-0': '境内自主',\r\n '0-cn-0': \"\",\r\n '0-declare-0': \"\",\r\n '0-en-0': \"\",\r\n '0-material-0': \"\",\r\n '0-model-0': \"\",\r\n '0-num-0': \"\",\r\n '0-origin-0': \"CN\",\r\n '0-sku-0': \"\",\r\n '0-usCode-0': \"\",\r\n '0-useage-0': \"\",\r\n '0-weight-0': \"\",\r\n '0-specAddPirce-0': \"\",\r\n '0-goodsId-0': 0,\r\n}\r\n\r\n// form 默认一个箱子\r\nexport const boxDefault = {\r\n '0-high': '',\r\n '0-long': '',\r\n '0-num': 1,\r\n '0-weight': '',\r\n '0-wide': '',\r\n ...skuDefault\r\n}\r\n\r\nconst blurParamsMap: string[] = ['high', 'long', 'num', 'weight', 'wide']\r\nexport const boxBlur = (e: any) => {\r\n if (!Object.keys(e)?.length) {\r\n return\r\n }\r\n const params: string[] = Object.keys(e)[0].split?.('-')\r\n return (params.length === 2 && blurParamsMap.includes(params[1]))\r\n}\r\n\r\n\r\n\r\n//\r\n// @ts-ignore\r\nexport const validGetPrice = (fields: any) => {\r\n const box: any = getBoxDtoList(fields)\r\n return box.reduce((result: any, item: any) => {\r\n blurParamsMap.forEach((key: string) => {\r\n if (!item[key]) {\r\n result = false\r\n }\r\n })\r\n return result\r\n }, true)\r\n}\r\n\r\nexport const getValid = (fld?:string)=>{\r\n if (!fld) {\r\n return undefined\r\n }\r\n if (fld.includes('weight') || fld.includes('declare')) {\r\n return 'money'\r\n } else if (fld.includes('usCode')) {\r\n return 'hsCode'\r\n } else if (fld.includes('num')) {\r\n return 'integer'\r\n } else {\r\n return undefined;\r\n }\r\n}\r\n\r\nexport const validDataMap = (fld?:string)=>{\r\n if(fld){\r\n if(fld.includes('en')){ return '请输入英文'}\r\n if (fld.includes('cn')) {\r\n return '请输入中文'\r\n }\r\n if (fld.includes('sku')) {\r\n return '请输入产品编号'\r\n }\r\n if (fld.includes('usCode')) {\r\n return '请输入海关编码'\r\n }\r\n if (fld.includes('weight')) {\r\n return '输入产品重量'\r\n }\r\n if (fld.includes('declare')) {\r\n return '输入申报单价'\r\n }\r\n if (fld.includes('num')) {\r\n return '单箱件数'\r\n }\r\n if (fld.includes('material')) {\r\n return '输入材质'\r\n }\r\n return\r\n }else{\r\n return '请完善'\r\n }\r\n\r\n}\r\n\r\n\r\n// 获取table属性\r\nexport const getAttr = (params:{superior: any,record: any,field?: string}) => {\r\n const {superior,record,field} = params\r\n return {\r\n hideChart: true,\r\n hideLabel: true,\r\n extra: {bordered: 'none'},\r\n size: 'small',\r\n fld: `${superior.id}-${field}-${record.id}`,\r\n valid: getValid(field) as any,\r\n validMessage: validDataMap(field) as any,\r\n validAlign: 'center' as 'center',\r\n align: 'center' as 'center',\r\n mode: 'table' as 'table'\r\n }\r\n}\r\n\r\n// 添加箱类型\r\nexport const boxAddHelper = (params:{box: any,type?: any}) => {\r\n\r\n const {box, type = boxDefault} = params\r\n let id = Number(box[box.length - 1]?.id) + 1 // 箱子id主键递增\r\n return Object.keys(type).reduce((result: any, i: string) => {\r\n const key: string = i.replace(`0-`, `${id}-`)\r\n result[key] = type[i]\r\n return result\r\n }, {})\r\n}\r\n\r\n// 删除箱\r\nexport const boxDeleteHelper = (params:{fields: any,item: any}) => {\r\n const {fields,item} = params\r\n return Object.keys(fields).reduce((result: any,i: string) => {\r\n if(!i.includes(`${item.id}-`)){\r\n result[i] = fields[i]\r\n }\r\n return result\r\n },{})\r\n}\r\n\r\n// 添加sku\r\nexport const skuAddHelper = (sub: any,item: any) => {\r\n const len = sub[sub.length - 1].id + 1\r\n return Object.keys(skuDefault).reduce((result: any,i: string) => {\r\n const key: string = i.replace('-0',`-${len}`).replace('0-',`${item.id}-`)\r\n result[key] = boxDefault[i]\r\n return result\r\n },{})\r\n}\r\n\r\n// 删除 sku\r\nexport const skuDeleteHelper = (params:{fields: any,item: any,subItem: any}) => {\r\n const {fields, item, subItem} = params;\r\n const json = Object.keys(fields).reduce((result: any, i: string) => {\r\n if (i.includes(`${item.id}-`)) {\r\n if (!i.includes(`-${subItem.id}`)) {\r\n result[i] = fields[i]\r\n }\r\n } else {\r\n result[i] = fields[i]\r\n }\r\n return result\r\n }, {})\r\n return json\r\n}\r\n\r\n// 选择sku\r\nexport const skuSelectHelper = (params: {sku: any,boxList: any,key: number}) => {\r\n\r\n const {sku, boxList, key} = params;\r\n const current = boxList.find((i: any) => i.id === key)\r\n const boxJson = current.productDtos.filter((i: any) => i.sku)\r\n\r\n const skus: string[] = boxJson.reduce((result: string[], item: any) => {\r\n result.push(item.sku)\r\n return result.filter((i: any) => i)\r\n }, [])\r\n\r\n const selectDatas = sku.reduce((result: any, item: any, index: number) => {\r\n if (skus.includes(item.sku)) {\r\n result[index] = {\r\n ...item,\r\n id: boxJson.find((i: any) => i?.sku === item.sku).id\r\n }\r\n } else {\r\n result[index] = {\r\n ...item,\r\n id: skus.length ? Math.max(boxJson[boxJson.length - 1].id, (result[result.length - 1]?.id ?? 0)) + 1 : index\r\n }\r\n }\r\n return result\r\n }, [])\r\n const selectedSkus =\r\n selectDatas.reduce((result: any, i: any) => {\r\n Object.keys(i)?.forEach((j: string) => result[`${key}-${j}-${i.id}`] = i[j])\r\n return result\r\n }, {})\r\n return selectedSkus\r\n}\r\n\r\n// 获取最终报价\r\nexport const onSubmit = (e: any) => {\r\n const json = {...e, ...getTotalData(e)}\r\n const {\r\n box,\r\n phone,\r\n street,\r\n corp,\r\n name,\r\n areaCode,\r\n referenceId,\r\n shipmentId,\r\n weight,\r\n quantity,\r\n deliverType,\r\n templateName,\r\n templateId,\r\n method,\r\n addressId,\r\n wareCode,\r\n memo\r\n } = json\r\n return {\r\n memo,\r\n addressId,\r\n weight,\r\n quantity,\r\n box,\r\n wareCode,\r\n deliverType,\r\n templateName,\r\n templateId,\r\n method,\r\n referenceId,\r\n shipmentId,\r\n topSender: {\r\n phone,\r\n street,\r\n corp,\r\n name,\r\n code: areaCode,\r\n },\r\n boxDtoList: getBoxDtoList(e).reduce((result: any, item: any) => {\r\n result.push(\r\n {\r\n ...item,\r\n high: Math.ceil(Number(item.high)),\r\n wide: Math.ceil(Number(item.wide)),\r\n long: Math.ceil(Number(item.long)),\r\n productDtos: item.productDtos.filter((i: any) => i)\r\n }\r\n )\r\n return result\r\n }, [])\r\n }\r\n}\r\n","import React from \"react\";\r\nimport ZDrawer from \"@/components/Drawer\";\r\nimport FormEx from \"@/components/FormEx\";\r\nimport {FormItemEx} from \"@/components/FormItemEx\";\r\nimport {getValid} from \"@/pages/createOrder/components/formInfo/helper\";\r\nimport {Api} from \"@/api\";\r\nimport ZIcon from \"@/components/Icon\";\r\nimport OrderList from \"@/pages/order/table\";\r\n\r\ninterface Props {\r\n item: any\r\n onFinish?: any\r\n text?: React.ReactNode\r\n visible: boolean\r\n setVisible: any\r\n}\r\n\r\nconst GoodsDetailDrawer = (props: Props) => {\r\n const {\r\n item = {\r\n sku: '',\r\n cn: '',\r\n en: '',\r\n usCode: '',\r\n weight: '',\r\n declare: '',\r\n material: '',\r\n brand: '',\r\n pic: '',\r\n pdf: '',\r\n userRemark: ''\r\n },\r\n text = '新增',\r\n visible = false,\r\n setVisible\r\n } = props\r\n\r\n\r\n // 海关编码\r\n const hsCode = (\r\n \r\n 海关编码\r\n \r\n \r\n )\r\n\r\n const onFinish = (e: any) => {\r\n Api.Goods.SaveGoods({\r\n pdf: e.pdf,\r\n pic: e.pic,\r\n brand: e.brand,\r\n material: e.material || '无',\r\n declare: e.declare || '无',\r\n weight: e.weight,\r\n usCode: e.usCode,\r\n cn: e.cn,\r\n en: e.en,\r\n userRemark: e.userRemark,\r\n sku: e.sku || item.sku,\r\n id: text === '编辑' && item.id || undefined\r\n }).then(() => props?.onFinish?.())\r\n }\r\n\r\n\r\n const upload = (e: any, fn: any) => {\r\n const form: any = new FormData();\r\n form.append('file', e.target.files[0])\r\n form.append('sku', item.sku)\r\n Api.Oss.UploadSkuLabel(form).then((res: any) => fn(res.data))\r\n }\r\n\r\n const uploadImg = (e: any, fn: any) => {\r\n const form: any = new FormData();\r\n form.append('files', e.target.files[0])\r\n form.append('imgType', 1)\r\n Api.Oss.UploadImg(form).then((res: any) => fn(res?.data?.[0]))\r\n }\r\n // attr\r\n const attr = (label: React.ReactNode) => {\r\n return {\r\n width: 335,\r\n labelwidth: 90,\r\n label,\r\n filter: true,\r\n labelAlign: 'left'\r\n }\r\n }\r\n\r\n\r\n return (\r\n setVisible(false)}>\r\n \r\n
\r\n \r\n
\r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n
关联订单
\r\n \r\n
\r\n\r\n
\r\n
\r\n )\r\n}\r\nexport default GoodsDetailDrawer","import React, {useEffect, useState} from \"react\";\r\nimport ZTable from \"@/components/Table\";\r\nimport {IColumn} from \"@/components/Table/interface\";\r\nimport {ISkuData, ISkuItem} from \"@/pages/createOrder/components/skuModal/interface\";\r\nimport ZImage from \"@/components/Image\";\r\nimport {Api} from \"@/api\";\r\nimport {Message} from \"@/components/Messsage\";\r\nimport ZInput from \"@/components/FormItemEx/Input\";\r\nimport ZUpload from \"@/components/Upload\";\r\nimport Popover from \"@/components/PopOver\";\r\nimport './index.less'\r\nimport Modal from \"@/components/Modal\";\r\nimport GoodsDetailDrawer from \"@/pages/account/components/goodsDetail\";\r\n\r\ninterface Props {\r\n visible?: number\r\n setSelects?: any\r\n PageSize?: number\r\n from?: 'account' | 'order'\r\n}\r\n\r\nconst GoodsTable = (props: Props) => {\r\n\r\n const {visible, setSelects, PageSize = 10, from = 'order'} = props\r\n const [data, setData] = useState([])\r\n const [total, setTotal] = useState(0)\r\n const [page, setPage] = useState(1)\r\n const [words, setWords] = useState('')\r\n const [row, setRow] = useState()\r\n const [open, setOpen] = useState(false)\r\n const [mode, setMode] = useState('')\r\n\r\n const initData = (e?: string) => {\r\n const Keyword = e || ''\r\n Api.Goods.GetGoodsList({\r\n PageSize,\r\n Page: page,\r\n Keyword,\r\n }).then((res: ISkuData) => {\r\n if (res.state) {\r\n setData(res.data?.data)\r\n setTotal(res?.data?.total)\r\n }\r\n })\r\n }\r\n\r\n useEffect(() => {\r\n if (visible != -1) {\r\n initData(words);\r\n }\r\n\r\n }, [page, visible])\r\n const onSelectItem = (params: ISkuItem) => {\r\n if (from === 'account') {\r\n setRow(params)\r\n setMode('编辑')\r\n setOpen(true)\r\n } else {\r\n const newData = data.map(item => {\r\n if (item.id == params.id) {\r\n item.isCheck = !item.isCheck;\r\n }\r\n return item;\r\n });\r\n setData(newData)\r\n const skus = newData.filter(item => item.isCheck)?.map((i: any) => {\r\n return {\r\n ...i,\r\n goodsId: i.id\r\n }\r\n })\r\n setSelects?.(skus)\r\n }\r\n }\r\n //\r\n const onCheck = (e: any, row: any) => {\r\n if (from === 'account') {\r\n e.stopPropagation()\r\n const newData = data.map(item => {\r\n if (item.id == row.id) {\r\n item.isCheck = !item.isCheck;\r\n }\r\n return item;\r\n });\r\n setData(newData)\r\n const skus = newData.filter(item => item.isCheck)?.map((i: any) => {\r\n return {\r\n ...i,\r\n goodsId: i.id\r\n }\r\n })\r\n setSelects?.(skus)\r\n }\r\n }\r\n const onDelete = (item: ISkuItem) => {\r\n Modal.confirm({\r\n title: \"确认删除该商品?\",\r\n onOk: () => {\r\n Api.Goods.DeleteGoods({id: item.id as number}).then(() => {\r\n Message.success('操作成功');\r\n initData()\r\n })\r\n }\r\n });\r\n }\r\n const onDeleteBatch = () => {\r\n const ids = data.filter(item => item.isCheck).reduce((result: number[], i: ISkuItem) => {\r\n result.push(i.id as number)\r\n return result\r\n }, []).join(',');\r\n if (!ids) {\r\n return\r\n }\r\n Modal.confirm({\r\n title: \"确认批量删除商品?\",\r\n onOk: () => {\r\n Api.Goods.BatchDelete({ids}).then(() => {\r\n Message.success('操作成功');\r\n initData()\r\n })\r\n }\r\n });\r\n }\r\n\r\n const column: IColumn[] = [\r\n {\r\n width: 60,\r\n render: (item: string, record: ISkuItem) =>\r\n
onCheck(e, record)}>\r\n \r\n
\r\n\r\n },\r\n {\r\n title: '图片', key: 'pic', width: 100, render: (text: string) =>\r\n }>\r\n \r\n \r\n },\r\n {\r\n title: '产品名称',\r\n key: 'cn',\r\n width: 190,\r\n render: (text: string, row: any) =>\r\n
\r\n
{text}
\r\n
{row.en}
\r\n
\r\n },\r\n {\r\n title: '单价 & 重量',\r\n key: 'declare',\r\n width: 120,\r\n render: (text: number, row: any) =>\r\n
\r\n
${text.toFixed(2)}
\r\n
{row.weight.toFixed(2)}kg
\r\n
\r\n },\r\n {\r\n title: '产品编号 & 海关编码',\r\n key: 'sku',\r\n width: 280,\r\n render: (text: string, row: any) =>\r\n
\r\n
{text}
\r\n
{row.usCode}
\r\n
\r\n },\r\n //\r\n {\r\n title: '库存 & 关联订单',\r\n key: 'stock',\r\n render: (text: string, row: any) =>\r\n
\r\n
{text}
\r\n
{row.lastShipment}
\r\n
\r\n },\r\n {\r\n title: '操作', width: 70, key: '', render: (_: any, row: any) =>\r\n \r\n }\r\n ]\r\n\r\n\r\n useEffect(() => {\r\n if (visible === -1) {\r\n const selectDatas = data.reduce((result: ISkuItem[], item: ISkuItem, index: number) => {\r\n result[index] = {\r\n ...item,\r\n isCheck: false\r\n }\r\n return result\r\n }, []);\r\n setData(selectDatas)\r\n }\r\n }, [visible])\r\n\r\n const onChange = (e: any) => {\r\n if (!e && !!e != !!words) {\r\n initData();\r\n }\r\n setWords(e)\r\n }\r\n\r\n const upload = (e: any) => {\r\n const form: any = new FormData();\r\n form.append('file', e.target.files[0])\r\n Api.Goods.UploadGoods(form).then((res: any) => {\r\n const json = res.data.map((item: any) => {\r\n return {\r\n ...item,\r\n new: true\r\n }\r\n })\r\n setData([\r\n ...json,\r\n ...data\r\n ])\r\n Message.success('导入成功');\r\n })\r\n }\r\n const onKeyUp = (e: any) => {\r\n if (e.keyCode === 13 && words) {\r\n initData(words)\r\n }\r\n }\r\n // 新增/编辑\r\n const onEdit = (e: any, mode?: string) => {\r\n setRow(e)\r\n setOpen(true)\r\n setMode(mode as string)\r\n }\r\n return (\r\n <>\r\n
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n 下载模板\r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n e.new && 'goods-import-new' || ''}\r\n onChange={setPage}/>\r\n \r\n \r\n\r\n )\r\n}\r\nexport default GoodsTable"],"names":["skuDefault","boxDefault","blurParamsMap","boxBlur","e","Object","keys","length","params","split","includes","validGetPrice","fields","box","getBoxDtoList","reduce","result","item","forEach","key","getValid","fld","validDataMap","getAttr","superior","record","field","hideChart","hideLabel","extra","bordered","size","id","valid","validMessage","validAlign","align","mode","boxAddHelper","type","Number","i","replace","boxDeleteHelper","skuAddHelper","sub","len","skuDeleteHelper","subItem","skuSelectHelper","sku","boxList","boxJson","current","find","productDtos","filter","skus","push","selectDatas","index","Math","max","j","onSubmit","json","getTotalData","phone","street","corp","name","areaCode","referenceId","shipmentId","weight","quantity","deliverType","templateName","templateId","method","addressId","wareCode","memo","topSender","code","boxDtoList","high","ceil","wide","long","GoodsDetailDrawer","props","cn","en","usCode","declare","material","brand","pic","pdf","userRemark","text","visible","setVisible","hsCode","color","fontWeight","fontSize","onFinish","Goods","SaveGoods","undefined","then","upload","fn","form","FormData","append","target","files","Oss","UploadSkuLabel","res","data","uploadImg","UploadImg","attr","label","width","labelwidth","labelAlign","listType","areaHeight","height","marginLeft","minHeight","borderTop","Goodsid","GoodsTable","setSelects","PageSize","from","setData","useState","total","setTotal","page","setPage","words","setWords","row","setRow","open","setOpen","setMode","initData","Keyword","GetGoodsList","Page","state","onSelectItem","newData","map","isCheck","goodsId","onCheck","stopPropagation","onDelete","confirm","title","onOk","DeleteGoods","success","onDeleteBatch","ids","join","BatchDelete","column","render","zoom","cursor","maxWidth","maxHeight","toFixed","lastShipment","_","onEdit","onChange","UploadGoods","new","onKeyUp","keyCode","borderRadius"],"mappings":"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"}