Skip to content
项目
群组
代码片段
帮助
当前项目
正在载入...
登录 / 注册
切换导航面板
A
admin-ci-test
概览
概览
详情
活动
周期分析
版本库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
统计图
问题
0
议题
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
日程表
图表
维基
Wiki
代码片段
代码片段
成员
成员
折叠边栏
关闭边栏
活动
图像
聊天
创建新问题
作业
提交
问题看板
Open sidebar
test-ci
admin-ci-test
Commits
cbe2f726
提交
cbe2f726
authored
6月 08, 2023
作者:
翁进城
浏览文件
操作
浏览文件
下载
差异文件
Merge remote-tracking branch 'origin/master' into 分类管理
上级
23f61049
48449285
全部展开
隐藏空白字符变更
内嵌
并排
正在显示
39 个修改的文件
包含
1996 行增加
和
213 行删除
+1996
-213
.env.development
env/.env.development
+1
-1
interface.ts
src/api/interface.ts
+2
-2
categoryManage.ts
src/api/interface/categoryManage.ts
+26
-0
industryManageType.ts
src/api/interface/industryManageType.ts
+135
-0
orderManageType.ts
src/api/interface/orderManageType.ts
+56
-0
produceManageType.ts
src/api/interface/produceManageType.ts
+35
-0
categoryManage.ts
src/api/modules/categoryManage.ts
+6
-2
industryManageAPI.ts
src/api/modules/industryManageAPI.ts
+41
-36
orderManage.ts
src/api/modules/orderManage.ts
+20
-0
produceManageAPI.ts
src/api/modules/produceManageAPI.ts
+10
-6
index.ts
src/common/interface/PaginationEntity/index.ts
+0
-10
index.tsx
src/components/uploader/index.tsx
+1
-1
index.tsx
...ge/industryDetail/components/addOrEditSpecModal/index.tsx
+246
-0
index.tsx
...e/industryDetail/components/connectProduceModal/index.tsx
+292
-0
index.tsx
...ge/industryDetail/components/designateSpecModal/index.tsx
+133
-0
index.tsx
...nage/industryDetail/components/productListModal/index.tsx
+102
-0
index.tsx
src/pages/mallManage/industryManage/industryDetail/index.tsx
+0
-0
index.tsx
.../industryList/components/addOrEditIndustryModal/index.tsx
+46
-56
index.tsx
src/pages/mallManage/industryManage/industryList/index.tsx
+0
-0
propsType.ts
...pages/mallManage/industryManage/industryList/propsType.ts
+0
-18
index.tsx
...keManage/makeList/components/addOrEditMakeModal/index.tsx
+61
-0
index.tsx
src/pages/mallManage/makeManage/makeList/index.tsx
+45
-0
index.tsx
...oods/goodsAddOrEditOrDetail/components/stockSku/index.tsx
+66
-2
index.tsx
...ge/produceList/components/addOrEditProduceModal/index.tsx
+22
-23
index.tsx
src/pages/mallManage/produceManage/produceList/index.tsx
+0
-0
index.tsx
...Goods/rentAddOrEditOrDetail/components/stockSku/index.tsx
+66
-1
index.tsx
.../orderManage/equipmentOrder/comp/detailTimeLine/index.tsx
+55
-0
index.tsx
...ges/orderManage/equipmentOrder/comp/orderClosed/index.tsx
+100
-0
index.tsx
...es/orderManage/equipmentOrder/comp/orderConfirm/index.tsx
+190
-0
index.tsx
...es/orderManage/equipmentOrder/comp/orderDeliver/index.tsx
+3
-3
index.scss
src/pages/orderManage/equipmentOrder/detail/index.scss
+25
-0
index.tsx
src/pages/orderManage/equipmentOrder/detail/index.tsx
+4
-2
index.tsx
src/pages/orderManage/equipmentOrder/index.tsx
+31
-2
index.tsx
...es/orderManage/productOrder/comp/detailDelivery/index.tsx
+64
-25
index.tsx
...orderManage/productOrder/comp/detailInformation/index.tsx
+46
-17
index.tsx
...s/orderManage/productOrder/comp/detailPurchaser/index.tsx
+44
-3
router.tsx
src/router/router.tsx
+12
-2
index.ts
src/utils/index.ts
+9
-0
vite.config.ts
vite.config.ts
+1
-1
没有找到文件。
env/.env.development
浏览文件 @
cbe2f726
...
...
@@ -7,7 +7,7 @@ VITE_REQUEST_BASE_URL='/api'
#VITE_REQUEST_BASE_URL='https://test.iuav.mmcuav.cn'
#本地测试
#VITE_REQUEST_BASE_URL='http://192.168.3.22:10001'
#VITE_REQUEST_BASE_URL='http://192.168.3.
22
:8099'
#VITE_REQUEST_BASE_URL='http://192.168.3.
17
:8099'
#VITE_REQUEST_BASE_URL='http://192.168.3.23:35150'
#版本
NODE_ENV='development'
...
...
src/api/interface.ts
浏览文件 @
cbe2f726
// 分页通用接口
export
interface
PaginationProps
{
pageSize
?
:
number
;
pageNo
?
:
number
;
pageSize
:
number
;
pageNo
:
number
;
}
// 通用返回接口(分页)
...
...
src/api/interface/categoryManage.ts
浏览文件 @
cbe2f726
// 分类详情
import
{
InterFunction
,
InterItemFunction
}
from
'~/api/interface'
;
export
interface
GoodsInfo
{
goodsId
:
number
;
goodsImg
:
string
;
...
...
@@ -31,3 +33,27 @@ export interface categoryDec {
"type"
:
number
,
directoryType
:
string
}
//分类列表类型
type
categoryReposeType
=
{
id
:
number
;
classifyName
:
string
;
icon
:
string
;
createTime
:
string
;
children
:
categoryReposeType
[];
directoryId
:
number
;
remark
:
string
;
};
export
type
categoryListType
=
InterItemFunction
<
{
directoryId
?:
number
;
type
?:
number
},
categoryReposeType
[]
>
;
//目录列表类型-不分页
export
type
directoryListType
=
InterFunction
<
{
type
:
number
},
{
id
:
number
;
directoryName
:
string
;
type
:
number
;
}[]
>
;
src/api/interface/industryManageType.ts
浏览文件 @
cbe2f726
// 行业方案-列表
import
{
InterFunction
,
InterItemFunction
}
from
'~/api/interface'
;
//行业方案-列表
export
type
listIndustryType
=
InterItemFunction
<
{
categoryId
?:
number
;
solutionName
?:
string
},
{
categoryId
:
number
;
categoryName
:
string
;
createTime
:
string
;
description
:
string
;
id
:
number
;
solutionName
:
string
;
}[]
>
;
//行业方案-新增
export
type
industryAddType
=
InterFunction
<
{
categoryId
:
number
;
description
:
string
;
solutionName
:
string
},
null
>
;
//行业方案-编辑
export
type
industryEditType
=
InterFunction
<
{
categoryId
:
number
;
description
:
string
;
solutionName
:
string
;
id
?:
number
},
null
>
;
//行业方案-删除
export
type
industryDeleteType
=
InterFunction
<
{
id
:
number
},
null
>
;
//行业方案-详情
export
type
industryDetailType
=
InterFunction
<
{
id
:
number
},
{
categoryId
:
number
;
description
:
string
;
solutionName
:
string
;
categoryName
:
string
;
id
:
number
;
}
>
;
//行业方案-方案规格列表
export
type
industrySpecList
=
InterItemFunction
<
{
productSkuId
:
number
},
any
>
;
//行业方案-方案规格-新增
export
type
industrySpecAdd
=
InterFunction
<
{
industrySkuId
:
number
;
specImage
:
string
;
specName
:
string
;
productInventoryList
:
{
productSku
:
{
id
:
number
;
productName
:
string
;
productBrandId
:
number
;
productBrand
:
string
;
model
:
string
;
goodsTypeId
:
number
;
directoryId
:
number
;
directoryName
:
string
;
};
productSpecList
:
{
id
:
number
;
partNo
:
string
;
specImage
:
string
;
specName
:
string
;
versionDesc
:
string
;
productSkuId
:
number
;
}[];
select
:
number
;
}[];
},
null
>
;
//行业方案-方案规格-删除
export
type
removeIndustrySpecType
=
InterFunction
<
{
id
:
number
},
any
>
;
//行业方案-方案规格-详情
export
type
industrySpecDetailType
=
InterFunction
<
{
industrySpecId
:
number
},
{
id
:
number
;
industrySkuId
:
number
;
specImage
:
string
;
specName
:
string
;
productInventoryList
:
{
productSku
:
{
id
:
number
;
productName
:
string
;
productBrandId
:
number
;
productBrand
:
string
;
model
:
string
;
goodsTypeId
:
number
;
directoryId
:
number
;
categoryName
:
string
;
};
productSkuId
:
number
;
productSpecList
:
{
id
:
number
;
partNo
:
string
;
specImage
:
string
;
specName
:
string
;
versionDesc
:
string
;
productSkuId
:
number
;
}[];
select
:
number
;
}[];
}
>
;
//行业-方案规格-编辑
export
type
editIndustrySpecType
=
InterFunction
<
{
id
:
number
;
industrySkuId
:
number
;
specImage
:
string
;
specName
:
string
;
productInventoryList
:
{
productSku
:
{
id
:
number
;
productName
:
string
;
productBrandId
:
number
;
productBrand
:
string
;
model
:
string
;
goodsTypeId
:
number
;
directoryId
:
number
;
directoryName
:
string
;
};
productSpecList
:
{
id
:
number
;
partNo
:
string
;
specImage
:
string
;
specName
:
string
;
versionDesc
:
string
;
productSkuId
:
number
;
}[];
select
:
number
;
}[];
},
null
>
;
src/api/interface/orderManageType.ts
浏览文件 @
cbe2f726
...
...
@@ -339,3 +339,59 @@ export type listExpressInfoType = InterFunction<
exCode
:
string
;
}[]
>
;
// web/小程序 确认收货-订单
export
type
renterTakeOrderType
=
InterFunction
<
{
authPwd
:
string
;
imgs
:
Array
<
string
>
;
orderInfoId
:
number
;
orderRefundId
:
number
;
remark
:
string
;
renAddress
:
string
;
renName
:
string
;
renPhone
:
string
;
sendAddress
:
string
;
sendExCode
:
string
;
sendExNo
:
string
;
vcuSatus
:
number
;
videoUrl
:
string
;
},
NonNullable
<
unknown
>
>
;
// 后台管理——平台确认归还
export
type
pfConfirmOrderWareType
=
InterFunction
<
{
authPwd
:
string
;
imgs
:
Array
<
string
>
;
orderInfoId
:
number
;
orderRefundId
:
number
;
remark
:
string
;
renAddress
:
string
;
renName
:
string
;
renPhone
:
string
;
sendAddress
:
string
;
sendExCode
:
string
;
sendExNo
:
string
;
vcuSatus
:
number
;
videoUrl
:
string
;
},
NonNullable
<
unknown
>
>
;
// web-小程序——订单详情相关图片信息
export
type
orderImageDetailType
=
InterFunction
<
{
orderInfoId
:
number
},
{
id
:
number
;
orderInfoId
:
number
;
vcuType
:
number
;
vcuSatus
:
number
;
remark
:
string
;
imgs
:
Array
<
string
>
;
videoUrl
:
string
;
}[]
>
;
// 后台管理关闭订单
export
type
platFormCloseOrderType
=
InterFunction
<
{
orderInfoId
:
number
;
shutReason
:
string
},
NonNullable
<
unknown
>
>
;
src/api/interface/produceManageType.ts
浏览文件 @
cbe2f726
...
...
@@ -8,3 +8,38 @@ export type MakeListType = InterItemFunction<
id
:
number
;
}[]
>
;
//产品-列表
export
type
productListType
=
InterItemFunction
<
{
categoryId
?:
number
;
directoryId
?:
number
;
productName
?:
string
},
{
id
:
number
;
productName
:
string
;
productBrandId
:
number
;
productBrand
:
string
;
model
:
string
;
categoriesId
:
number
;
categoryName
:
string
;
directoryId
:
number
;
directoryName
:
string
;
productSpecList
:
{
id
:
number
;
partNo
:
string
;
specImage
:
string
;
specName
:
string
;
versionDesc
:
string
;
productSkuId
:
number
;
}[];
}[]
>
;
//产品-规格-列表
export
type
ProductSpecListType
=
InterItemFunction
<
{
productSkuId
:
number
},
{
id
:
number
;
partNo
:
string
;
specImage
:
string
;
specName
:
string
;
versionDesc
:
string
;
productSkuId
:
number
;
}[]
>
;
src/api/modules/categoryManage.ts
浏览文件 @
cbe2f726
import
axios
from
'../request'
;
import
{
PaginationEntity
}
from
'~/common/interface/PaginationEntity'
;
import
{
categoryListType
,
directoryListType
}
from
'~/api/interface/categoryManage'
;
export
class
CategoryManageAPI
{
// 分类管理
// 分类目录
static
directoryList
=
(
params
)
=>
{
return
axios
.
get
(
"pms/classify/directoryList"
,
{
params
});
}
;
}
//目录列表不含分页
static
getDirectoryList
=
(
params
)
=>
{
...
...
@@ -36,6 +36,10 @@ export class CategoryManageAPI {
// 分类列表
static
getClassificationList
=
(
data
:
object
):
any
=>
{
return
axios
.
post
(
`/pms/classify/getClassificationList`
,
data
);
}
static
getCategoryList
:
categoryListType
=
(
data
)
=>
{
return
axios
.
post
(
'/pms/classify/getClassificationList'
,
data
);
};
// PC端-根据分类信息新增自定义规格-下拉选项 (只查产品类型)
...
...
src/api/modules/industryManageAPI.ts
浏览文件 @
cbe2f726
import
axios
from
'../request'
;
import
{
industryAddType
,
industryDeleteType
,
industryDetailType
,
industryEditType
,
industrySpecAdd
,
industrySpecDetailType
,
industrySpecList
,
listIndustryType
,
removeIndustrySpecType
,
editIndustrySpecType
,
}
from
'~/api/interface/industryManageType'
;
export
class
IndustryManageAPI
{
// 行业列表
static
get
FirstIndustryTypeInfo
=
(
params
:
unknown
)
=>
{
return
axios
.
get
(
'uavgoods/appgoods/getFirstGoodsTypeInfo/2'
,
{
params
}
);
static
get
IndustryList
:
listIndustryType
=
(
data
)
=>
{
return
axios
.
post
(
'/pms/industry/spec/listPageIndustrySku'
,
data
);
};
// 行业sku管理-方案规格管理-分页列表
static
listPageIndustrySpec
=
(
params
:
unknown
)
=>
{
return
axios
.
get
(
'uavgoods/industry/spec/listPageIndustrySpec'
,
{
params
,
});
};
// 行业sku管理---分页列表
static
listPageIndustrySku
=
(
data
:
unknown
)
=>
{
return
axios
.
post
(
'uavgoods/industry/spec/listPageIndustrySku'
,
data
);
// 行业-新增
static
addIndustryRequest
:
industryAddType
=
(
data
)
=>
{
return
axios
.
post
(
'/pms/industry/spec/addIndustrySku'
,
data
);
};
// 行业
sku管理---新增行业sku
static
addIndustrySku
=
(
data
:
unknown
)
=>
{
return
axios
.
post
(
'
uavgoods/industry/spec/add
IndustrySku'
,
data
);
// 行业
---编辑
static
editIndustryRequest
:
industryEditType
=
(
data
)
=>
{
return
axios
.
post
(
'
/pms/industry/spec/edit
IndustrySku'
,
data
);
};
// 行业
sku管理---编辑行业sku
static
editIndustrySku
=
(
data
:
unknown
)
=>
{
return
axios
.
post
(
'uavgoods/industry/spec/editIndustrySku'
,
data
);
// 行业
--删除
static
removeIndustryRequest
:
industryDeleteType
=
(
params
)
=>
{
return
axios
.
get
(
'/pms/industry/spec/removeIndustrySku'
,
{
params
}
);
};
// 行业sku管理---删除行业sku
static
removeIndustrySku
=
(
params
:
unknown
)
=>
{
return
axios
.
get
(
'uavgoods/industry/spec/removeIndustrySku'
,
{
params
});
// 行业-详情
static
getIndustryDetail
:
industryDetailType
=
(
params
)
=>
{
return
axios
.
get
(
'/pms/industry/spec/getIndustrySkuDetail'
,
{
params
,
});
};
// 行业sku管理-详情-基本信息
static
getIndustrySkuDetail
=
(
params
:
unknown
)
=>
{
return
axios
.
get
(
'uavgoods/industry/spec/getIndustrySkuDetail'
,
{
// 行业-方案规格-列表
static
getIndustrySpecList
:
industrySpecList
=
(
params
)
=>
{
return
axios
.
get
(
'/pms/industry/spec/listPageIndustrySpec'
,
{
params
,
});
};
// 行业sku管理---方案规格管理---新增方案规格
static
addIndustrySpec
=
(
data
:
unknown
)
=>
{
return
axios
.
post
(
'uavgoods/industry/spec/addIndustrySpec'
,
data
);
// 行业---方案规格管理---新增方案规格
static
addIndustrySpec
:
industrySpecAdd
=
(
data
)
=>
{
return
axios
.
post
(
'/pms/industry/spec/addIndustrySpec'
,
data
);
};
// 行业sku管理---方案规格管理---编辑行业规格
static
editIndustrySpec
=
(
data
:
unknown
)
=>
{
return
axios
.
post
(
'
uavgood
s/industry/spec/editIndustrySpec'
,
data
);
static
editIndustrySpec
:
editIndustrySpecType
=
(
data
)
=>
{
return
axios
.
post
(
'
/pm
s/industry/spec/editIndustrySpec'
,
data
);
};
// 行业
sku管理
---方案规格管理---删除行业规格
static
removeIndustrySpec
=
(
params
:
unknown
)
=>
{
return
axios
.
get
(
'
uavgood
s/industry/spec/removeIndustrySpec'
,
{
params
});
// 行业---方案规格管理---删除行业规格
static
removeIndustrySpec
:
removeIndustrySpecType
=
(
params
)
=>
{
return
axios
.
get
(
'
/pm
s/industry/spec/removeIndustrySpec'
,
{
params
});
};
// 行业sku管理---方案规格管理---获取价格配置信息 (获取价格配置)
...
...
@@ -69,8 +74,8 @@ export class IndustryManageAPI {
};
// 行业sku管理---方案规格管理---单个方案规格回显 (查看产品清单)
static
getIndustrySpecDetail
=
(
params
:
unknown
)
=>
{
return
axios
.
get
(
'
uavgood
s/industry/spec/getIndustrySpecDetail'
,
{
static
getIndustrySpecDetail
:
industrySpecDetailType
=
(
params
)
=>
{
return
axios
.
get
(
'
/pm
s/industry/spec/getIndustrySpecDetail'
,
{
params
,
});
};
...
...
src/api/modules/orderManage.ts
浏览文件 @
cbe2f726
...
...
@@ -5,6 +5,10 @@ import {
listPcWechatOrderType
,
listTranStatusType
,
orderDetailType
,
orderImageDetailType
,
pfConfirmOrderWareType
,
platFormCloseOrderType
,
renterTakeOrderType
,
sendOrderWareType
,
}
from
'~/api/interface/orderManageType'
;
...
...
@@ -29,7 +33,23 @@ export class OrderManageAPI {
static
sendOrderWare
:
sendOrderWareType
=
(
params
)
=>
axios
.
post
(
'/oms/RentalOrders/sendOrderWare'
,
params
);
// web/小程序 确认收货-订单
static
renterTakeOrder
:
renterTakeOrderType
=
(
params
)
=>
axios
.
post
(
'/oms/RentalOrders/renterTakeOrder'
,
params
);
// web/小程序 确认收货-订单
static
pfConfirmOrderWare
:
pfConfirmOrderWareType
=
(
params
)
=>
axios
.
post
(
'/oms/RentalOrders/pfConfirmOrderWare'
,
params
);
// v1.0.1 物流公司列表-字典
static
listExpressInfo
:
listExpressInfoType
=
(
params
)
=>
axios
.
get
(
'/oms/express/listExpressInfo'
,
{
params
});
// web-小程序——订单详情相关图片信息
static
orderImageDetail
:
orderImageDetailType
=
(
params
)
=>
axios
.
get
(
'/oms/RentalOrders/orderImageDetail'
,
{
params
});
// 后台管理关闭订单
static
platFormCloseOrder
:
platFormCloseOrderType
=
(
params
)
=>
axios
.
get
(
'/oms/RentalOrders/platFormCloseOrder'
,
{
params
});
}
src/api/modules/produceManageAPI.ts
浏览文件 @
cbe2f726
import
axios
from
'../request'
;
import
{
MakeListType
}
from
'~/api/interface/produceManageType'
;
import
{
MakeListType
,
productListType
,
ProductSpecListType
,
}
from
'~/api/interface/produceManageType'
;
export
class
ProduceManageAPI
{
// 产品
sku
管理-分页列表
static
listPageProductSku
=
(
data
:
unknown
)
=>
{
return
axios
.
post
(
'
uavgood
s/product/spec/listPageProductSku'
,
data
);
// 产品管理-分页列表
static
listPageProductSku
:
productListType
=
(
data
)
=>
{
return
axios
.
post
(
'
/pm
s/product/spec/listPageProductSku'
,
data
);
};
// 产品sku管理-删除产品sku
static
removeProductSku
=
(
params
:
unknown
)
=>
{
...
...
@@ -41,7 +45,7 @@ export class ProduceManageAPI {
};
// 产品sku管理-产品规格管理-分页列表
static
listPageProductSpec
=
(
params
:
unknown
)
=>
{
return
axios
.
get
(
'
uavgood
s/product/spec/listPageProductSpec'
,
{
params
});
static
listPageProductSpec
:
ProductSpecListType
=
(
params
)
=>
{
return
axios
.
get
(
'
/pm
s/product/spec/listPageProductSpec'
,
{
params
});
};
}
src/common/interface/PaginationEntity/index.ts
浏览文件 @
cbe2f726
/*
* @Author: 龚洪江
* @Date: 2022-07-26 11:43:44
* @LastEditors: 龚洪江
* @LastEditTime: 2022-07-26 11:45:29
* @FilePath: \code\mmc-store\src\common\PaginationEntity\index.ts
* @Description:
*
* Copyright (c) 2022 by 龚洪江 2238959530@qq.com, All Rights Reserved.
*/
export
interface
PaginationEntity
{
pageNo
:
number
;
pageSize
:
number
;
...
...
src/components/uploader/index.tsx
浏览文件 @
cbe2f726
...
...
@@ -112,7 +112,7 @@ export const Uploader: React.FC<PropsType> = (props) => {
if
(
defaultFileList
?.
length
)
{
setFileList
(
defaultFileList
);
}
},
[]);
},
[
defaultFileList
]);
return
(
<
div
className=
'uploader-view'
>
{
listType
===
'text'
?
(
...
...
src/pages/mallManage/industryManage/industryDetail/components/addOrEditSpecModal/index.tsx
0 → 100644
浏览文件 @
cbe2f726
import
React
,
{
FC
,
useEffect
,
useState
}
from
'react'
;
import
{
Form
,
Input
,
Modal
,
message
,
Table
,
Button
,
ModalProps
}
from
'antd'
;
import
{
ColumnsType
}
from
'antd/es/table'
;
import
{
InterDataType
,
PaginationProps
}
from
'~/api/interface'
;
import
{
Uploader
}
from
'~/components/uploader'
;
import
{
UploadOutlined
}
from
'@ant-design/icons'
;
import
{
productListType
}
from
'~/api/interface/produceManageType'
;
import
{
IndustryManageAPI
}
from
'~/api'
;
import
{
filterObjAttr
}
from
'~/utils'
;
import
{
industrySpecDetailType
}
from
'~/api/interface/industryManageType'
;
//自定义产品返回类型
type
selfProduceItemType
=
InterDataType
<
productListType
>
[
'list'
][
0
]
&
{
radio
?:
number
;
};
//方案规格详情返回类型
type
specDetailType
=
InterDataType
<
industrySpecDetailType
>
;
interface
PropsType
{
produceSpecList
:
selfProduceItemType
[];
close
:
()
=>
void
;
connectSpecModalShow
:
()
=>
void
;
industrySkuId
:
number
;
handleSuccess
:
()
=>
void
;
specDetail
:
specDetailType
;
}
const
AddOrEditSpecModal
:
FC
<
ModalProps
&
PropsType
>
=
({
open
,
produceSpecList
,
close
,
connectSpecModalShow
,
industrySkuId
,
specDetail
,
handleSuccess
,
})
=>
{
// 表格事件
const
[
form
]
=
Form
.
useForm
<
{
specName
:
string
;
specImage
:
string
;
list
:
any
}
>
();
//图片
const
[
fileList
,
setFileList
]
=
useState
<
{
id
:
number
;
name
:
string
;
uid
:
number
;
url
:
string
;
}[]
>
([]);
// 表格结构
const
columns
:
ColumnsType
<
selfProduceItemType
>
=
[
{
title
:
'序号'
,
align
:
'center'
,
render
:
(
text
:
string
,
record
:
selfProduceItemType
,
index
:
number
)
=>
{
return
(
pagination
.
pageNo
-
1
)
*
pagination
.
pageSize
+
index
+
1
;
},
},
{
title
:
'产品名称'
,
dataIndex
:
'productName'
,
align
:
'center'
},
{
title
:
'产品类型'
,
dataIndex
:
'categoryName'
,
align
:
'center'
},
{
title
:
'型号'
,
dataIndex
:
'model'
,
align
:
'center'
},
{
title
:
'产品品牌'
,
dataIndex
:
'productBrand'
,
align
:
'center'
},
{
title
:
'产品规格'
,
// align: "left",
width
:
300
,
ellipsis
:
true
,
render
:
(
record
:
selfProduceItemType
)
=>
{
if
(
record
.
radio
===
0
)
{
return
'不指定'
;
}
return
record
.
productSpecList
.
map
((
i
:
any
,
index
:
number
)
=>
(
<
div
key=
{
index
}
>
{
i
.
specName
}
(
{
i
.
partNo
}
)
</
div
>
));
},
onHeaderCell
:
()
=>
{
return
{
style
:
{
textAlign
:
'center'
,
},
};
},
},
];
// 分页
const
[
pagination
,
setPagination
]
=
useState
<
PaginationProps
>
({
pageNo
:
1
,
pageSize
:
10
,
});
// 关闭弹窗
const
handleClosed
=
async
()
=>
{
setFileList
([]);
form
.
resetFields
();
close
();
};
// 打开关联产品弹窗
const
handleConnectSpecModalShow
=
()
=>
{
connectSpecModalShow
();
};
//图片上传成功
const
uploadFileSuccess
=
(
fileList
:
{
id
:
number
;
name
:
string
;
uid
:
number
;
url
:
string
;
}[],
)
=>
{
form
.
setFieldsValue
({
specImage
:
fileList
[
0
].
url
,
});
};
// 触发表单验证
const
handleSubmit
=
()
=>
{
form
.
validateFields
()
.
then
((
values
)
=>
{
const
productInventoryList
:
any
=
produceSpecList
.
map
((
v
)
=>
({
productSku
:
{
id
:
v
.
id
,
directoryId
:
v
.
directoryId
,
goodsTypeId
:
v
.
categoriesId
,
model
:
v
.
model
,
productBrand
:
v
.
productBrand
,
productBrandId
:
v
.
productBrandId
,
productName
:
v
.
productName
,
},
select
:
v
.
radio
,
productSpecList
:
v
.
productSpecList
,
}));
IndustryManageAPI
[
specDetail
.
id
?
'editIndustrySpec'
:
'addIndustrySpec'
]({
...
filterObjAttr
(
values
,
[
'list'
]),
productInventoryList
,
industrySkuId
,
id
:
specDetail
.
id
?
specDetail
.
id
:
undefined
,
}).
then
(({
code
})
=>
{
if
(
code
===
'200'
)
{
message
.
success
(
specDetail
.
id
?
'编辑成功'
:
'新增成功'
);
form
.
resetFields
();
handleSuccess
();
}
});
})
.
catch
((
err
)
=>
{
message
.
warning
(
err
.
errorFields
[
0
].
errors
[
0
]).
then
();
});
};
const
paginationChange
=
(
pageNo
:
number
,
pageSize
:
number
)
=>
{
pagination
.
pageNo
=
pageNo
;
pagination
.
pageSize
=
pageSize
;
setPagination
({
...
pagination
});
};
// componentsDidMounted
useEffect
(()
=>
{
form
.
setFieldsValue
({
list
:
produceSpecList
.
length
!==
0
?
produceSpecList
:
undefined
,
});
},
[
produceSpecList
]);
useEffect
(()
=>
{
form
.
setFieldsValue
({
specName
:
specDetail
.
specName
||
undefined
,
specImage
:
specDetail
.
specImage
||
undefined
,
});
if
(
specDetail
.
specImage
)
{
setFileList
([
{
id
:
Math
.
random
(),
name
:
'img'
,
uid
:
Math
.
random
(),
url
:
specDetail
.
specImage
,
},
]);
}
else
{
setFileList
([]);
}
},
[
specDetail
]);
return
(
<>
<
Modal
open=
{
open
}
title=
'新增'
onCancel=
{
handleClosed
}
onOk=
{
handleSubmit
}
destroyOnClose
width=
{
800
}
>
<
Form
name=
'form'
form=
{
form
}
layout=
'horizontal'
>
<
Form
.
Item
name=
'specName'
label=
'规格名称'
rules=
{
[{
required
:
true
,
message
:
'请输入方案产品名称'
}]
}
>
<
Input
placeholder=
'请输入规格名称'
allowClear
style=
{
{
width
:
'400px'
}
}
maxLength=
{
30
}
/>
</
Form
.
Item
>
<
Form
.
Item
name=
'specImage'
label=
'规格图片'
rules=
{
[{
required
:
true
,
message
:
'请上传规格图片'
}]
}
>
<
Uploader
listType=
'picture-card'
fileUpload
onChange=
{
uploadFileSuccess
}
defaultFileList=
{
fileList
}
>
<
UploadOutlined
/>
</
Uploader
>
</
Form
.
Item
>
<
Form
.
Item
label=
'产品清单'
name=
'list'
rules=
{
[{
required
:
true
,
message
:
'请选择产品清单'
}]
}
>
<
Button
type=
'primary'
onClick=
{
handleConnectSpecModalShow
}
>
添加关联
</
Button
>
</
Form
.
Item
>
<
Form
.
Item
>
<
Table
size=
'small'
dataSource=
{
produceSpecList
}
columns=
{
columns
}
rowKey=
'id'
style=
{
{
width
:
'100%'
}
}
pagination=
{
{
pageSize
:
pagination
.
pageSize
,
current
:
pagination
.
pageNo
,
onChange
:
(
page
:
number
,
pageSize
:
number
)
=>
paginationChange
(
page
,
pageSize
),
}
}
bordered
/>
</
Form
.
Item
>
</
Form
>
</
Modal
>
</>
);
};
export
default
AddOrEditSpecModal
;
src/pages/mallManage/industryManage/industryDetail/components/connectProduceModal/index.tsx
0 → 100644
浏览文件 @
cbe2f726
import
React
,
{
FC
,
useEffect
,
useState
}
from
'react'
;
import
{
Button
,
Form
,
Input
,
message
,
Modal
,
ModalProps
,
Radio
,
Select
,
Table
}
from
'antd'
;
import
{
ColumnsType
}
from
'antd/es/table'
;
import
{
CategoryManageAPI
,
ProduceManageAPI
}
from
'~/api'
;
import
{
InterDataType
,
PaginationProps
}
from
'~/api/interface'
;
import
{
productListType
}
from
'~/api/interface/produceManageType'
;
import
{
categoryListType
}
from
'~/api/interface/categoryManage'
;
//自定义产品返回类型
type
selfProduceItemType
=
InterDataType
<
productListType
>
[
'list'
][
0
]
&
{
radio
?:
number
;
};
//分类通用类型
type
categoryResponseType
=
InterDataType
<
categoryListType
>
[
'list'
];
const
{
Option
}
=
Select
;
interface
PropsType
{
close
:
()
=>
void
;
data
:
selfProduceItemType
[];
//已被关联产品
connectProduceSubmit
:
(
data
:
selfProduceItemType
[])
=>
void
;
toDesignateSpec
:
(
id
:
number
)
=>
void
;
}
// 表单提交
interface
FormType
{
keyword
?:
string
;
userType
?:
number
;
roleId
?:
number
;
accountStatus
?:
number
;
}
// 当前选择的参数
const
ConnectProduceModal
:
FC
<
ModalProps
&
PropsType
>
=
({
open
,
close
,
connectProduceSubmit
,
data
,
toDesignateSpec
,
})
=>
{
// 表格数据
const
[
tableData
,
setTableData
]
=
useState
<
selfProduceItemType
[]
>
([]);
// 所有表格数据
const
[
allTableData
,
setAllTableData
]
=
useState
<
selfProduceItemType
[]
>
([]);
// 产品类型列表
const
[
productTypeList
,
setProductTypeList
]
=
useState
<
categoryResponseType
>
([]);
// 表格结构
const
columns
:
ColumnsType
<
selfProduceItemType
>
=
[
{
title
:
'产品名称'
,
dataIndex
:
'productName'
,
align
:
'center'
},
{
title
:
'产品类型'
,
dataIndex
:
'categoryName'
,
align
:
'center'
,
width
:
'100px'
,
},
{
title
:
'型号'
,
dataIndex
:
'model'
,
align
:
'center'
},
{
title
:
'产品品牌'
,
dataIndex
:
'productBrand'
,
align
:
'center'
},
{
title
:
'产品规格'
,
align
:
'center'
,
width
:
'250px'
,
render
:
(
record
)
=>
{
return
(
<
div
>
<
Radio
.
Group
onChange=
{
(
e
)
=>
{
const
{
value
}
=
e
.
target
;
// 通过index生成新tableData
const
list
=
tableData
.
map
((
i
)
=>
{
if
(
i
.
id
===
record
.
id
)
{
return
{
...
i
,
radio
:
value
,
};
}
return
i
;
});
setTableData
(
list
);
const
allList
=
allTableData
.
map
((
i
)
=>
{
if
(
i
.
id
===
record
.
id
)
{
return
{
...
i
,
radio
:
value
,
};
}
return
i
;
});
setAllTableData
(
allList
);
}
}
value=
{
record
.
radio
}
disabled=
{
getTableDisable
(
record
.
id
)
}
>
<
Radio
value=
{
0
}
>
不指定
</
Radio
>
<
Radio
value=
{
1
}
>
指定
</
Radio
>
</
Radio
.
Group
>
<
Button
disabled=
{
getTableDisable
(
record
.
id
)
||
record
.
radio
===
0
}
onClick=
{
()
=>
toDesignateSpecClick
(
record
.
id
)
}
type=
'link'
>
去指定
</
Button
>
</
div
>
);
},
},
];
// 表格分页配置
const
[
pagination
,
setPagination
]
=
useState
<
PaginationProps
&
{
totalCount
:
number
;
totalPage
:
number
}
>
({
totalCount
:
0
,
pageSize
:
10
,
pageNo
:
1
,
totalPage
:
0
,
});
// 表格多选
const
[
selectedRowKeys
,
setSelectedRowKeys
]
=
useState
<
React
.
Key
[]
>
([]);
// 表格多选事件
const
onSelectChange
=
(
newSelectedRowKeys
:
React
.
Key
[],
selectedRows
:
selfProduceItemType
[])
=>
{
// 新增
const
isAdd
:
boolean
=
newSelectedRowKeys
.
some
((
v
:
React
.
Key
)
=>
!
selectedRowKeys
.
includes
(
v
));
// 删除
const
isDelete
:
boolean
=
selectedRowKeys
.
some
(
(
v
:
React
.
Key
)
=>
!
newSelectedRowKeys
.
includes
(
v
),
);
let
rowKeys
:
React
.
Key
[]
=
[];
if
(
isAdd
)
{
const
filterList
:
selfProduceItemType
[]
=
selectedRows
.
filter
(
(
v
:
selfProduceItemType
)
=>
!
selectedRowKeys
.
includes
(
v
.
id
),
);
const
obj
:
selfProduceItemType
|
undefined
=
filterList
.
find
(
(
v
:
selfProduceItemType
)
=>
!
v
.
productSpecList
,
);
const
currentKeys
:
React
.
Key
[]
=
filterList
.
filter
((
v
:
selfProduceItemType
)
=>
v
.
productSpecList
)
.
map
((
v
:
selfProduceItemType
)
=>
v
.
id
);
rowKeys
=
[...
selectedRowKeys
,
...
currentKeys
];
if
(
obj
)
{
message
.
warning
(
`请先为产品
${
obj
?.
productName
}
添加规格
`);
}
} else if (isDelete) {
rowKeys = selectedRowKeys.filter((v: React.Key) => {
const bol: boolean = tableData.every((i: selfProduceItemType) => i.id !== v);
return bol || newSelectedRowKeys.includes(v);
});
}
setSelectedRowKeys(rowKeys);
};
// 根据id判断是否有操作的权限
const getTableDisable = (id: number) => {
return !selectedRowKeys.includes(id);
};
//获取产品列表
const getListPageProductSku = (value?: any, tip?: string) => {
ProduceManageAPI.listPageProductSku({
pageNo: pagination.pageNo,
pageSize: pagination.pageSize,
...value,
}).then(({ result: { list, totalPage, totalCount } }) => {
pagination.totalCount = totalCount;
pagination.totalPage = totalPage;
setPagination(pagination);
// 设置产品规格默认项
if (!list) {
return setTableData([]);
}
const arr = list.map((i) => {
return {
...i,
radio: 0,
};
});
const brr = arr.map((i) => {
const item = data.find((j) => j.id === i.id);
if (item?.id === i.id) {
return {
...i,
radio: item.radio,
};
}
return i;
});
setTableData(brr);
if (tip === 'all') {
setAllTableData(brr);
}
});
};
// 翻页
const paginationChange = (pageNo: number, pageSize: number) => {
pagination.pageNo = pageNo;
pagination.pageSize = pageSize;
getListPageProductSku();
};
// 表单提交
const onFinish = (val: FormType) => {
// 在这里对提交的数据做处理,如range转为开始和结束时间
const data = Object.fromEntries(
// 过滤为空项
Object.entries({
...val,
}).filter((i) => i[1] !== '' && i[1] !== undefined && i[1] !== null),
);
getListPageProductSku(data);
};
// 获取产品类型
const getProduceTypeList = () => {
CategoryManageAPI.getCategoryList({ directoryId: 1, type: 4, pageNo: 1, pageSize: 99999 }).then(
({ result }) => {
setProductTypeList(result.list || []);
},
);
};
// 关联产品的数据提交
const handleSubmit = () => {
if (selectedRowKeys.length === 0) {
return message.warning('请选择关联产品');
}
const connectProduceList = allTableData.filter((i) => selectedRowKeys.includes(i.id));
connectProduceSubmit(connectProduceList);
};
// componentsDidMounted
useEffect(() => {
getListPageProductSku();
getListPageProductSku({ pageNo: 1, pageSize: 99999 }, 'all');
getProduceTypeList();
if (data.length !== 0) {
setSelectedRowKeys(data.map((v) => v.id));
}
}, [data]);
//去指定
const toDesignateSpecClick = (id: number) => {
toDesignateSpec(id);
};
return (
<>
<Modal
open={open}
title='关联产品'
onCancel={() => close()}
onOk={handleSubmit}
destroyOnClose
width={860}
>
<Form name='basic' layout='inline' onFinish={onFinish} style={{ marginBottom: '20px' }}>
<Form.Item name='productName' label='产品名称'>
<Input placeholder='请输入产品名称' allowClear />
</Form.Item>
<Form.Item name='goodsTypeId' label='产品类型'>
<Select placeholder='请选择产品类型' allowClear>
{productTypeList.map((i, j) => (
<Option value={i.id} key={j}>
{i.classifyName}
</Option>
))}
</Select>
</Form.Item>
<Form.Item>
<Button type='primary' htmlType='submit'>
搜索
</Button>
</Form.Item>
</Form>
<Table
size='small'
dataSource={tableData}
columns={columns}
rowKey='id'
scroll={{ x: '100%' }}
bordered
rowSelection={{
selectedRowKeys,
onChange: onSelectChange,
}}
pagination={{
total: pagination.totalCount,
pageSize: pagination.pageSize,
current: pagination.pageNo,
showSizeChanger: true,
showQuickJumper: true,
onChange: (page: number, pageSize: number) => paginationChange(page, pageSize),
showTotal: (total, range) => `
当前
$
{
range
[
0
]}
-
$
{
range
[
1
]}
条记录
/
共
$
{
total
}
条数据
`,
}}
/>
</Modal>
</>
);
};
export default ConnectProduceModal;
src/pages/mallManage/industryManage/industryDetail/components/designateSpecModal/index.tsx
0 → 100644
浏览文件 @
cbe2f726
import
React
,
{
FC
,
useEffect
,
useState
}
from
'react'
;
import
{
Image
,
message
,
Modal
,
ModalProps
,
Table
}
from
'antd'
;
import
{
ColumnsType
}
from
'antd/es/table'
;
import
{
ProduceManageAPI
}
from
'~/api'
;
import
{
InterDataType
,
PaginationProps
}
from
'~/api/interface'
;
import
{
ProductSpecListType
}
from
'~/api/interface/produceManageType'
;
//产品sku返回类型
type
produceSpecType
=
InterDataType
<
ProductSpecListType
>
[
'list'
];
interface
PropsType
{
data
:
produceSpecType
;
produceSpecSelectEvent
:
(
data
:
produceSpecType
)
=>
void
;
productId
:
number
;
onCancel
:
()
=>
void
;
}
const
DesignateSpecModal
:
FC
<
ModalProps
&
PropsType
>
=
({
open
,
onCancel
,
data
,
produceSpecSelectEvent
,
productId
,
})
=>
{
// 表格多选
const
[
selectedRowKeys
,
setSelectedRowKeys
]
=
useState
<
React
.
Key
[]
>
([]);
// 表格多选事件
const
onSelectChange
=
(
newSelectedRowKeys
:
React
.
Key
[])
=>
{
setSelectedRowKeys
(
newSelectedRowKeys
);
};
// 产品sku列表
const
[
productSpecList
,
setProductSpecList
]
=
useState
<
produceSpecType
>
([]);
// 表格结构
const
columns
:
ColumnsType
<
{
id
:
number
}
>
=
[
{
title
:
'规格名称'
,
dataIndex
:
'specName'
,
align
:
'center'
},
{
title
:
'规格图片'
,
dataIndex
:
'specImage'
,
align
:
'center'
,
render
:
(
record
)
=>
{
return
<
Image
width=
{
50
}
height=
{
50
}
src=
{
record
.
specImage
}
alt=
'图片'
/>;
},
},
{
title
:
'版本描述'
,
dataIndex
:
'versionDesc'
,
align
:
'center'
},
{
title
:
'料号'
,
dataIndex
:
'partNo'
,
align
:
'center'
},
];
// 表格分页配置
const
[
pagination
,
setPagination
]
=
useState
<
PaginationProps
&
{
totalCount
:
number
;
totalPage
:
number
}
>
({
totalCount
:
0
,
pageSize
:
5
,
pageNo
:
1
,
totalPage
:
0
,
});
// 翻页
const
paginationChange
=
(
pageNo
:
number
,
pageSize
:
number
)
=>
{
pagination
.
pageNo
=
pageNo
;
pagination
.
pageSize
=
pageSize
;
getProduceSpecList
(
productId
);
};
// 提交数据到父组件
const
handleSubmit
=
()
=>
{
if
(
selectedRowKeys
.
length
===
0
)
{
return
message
.
warning
(
'请选择产品规格'
);
}
const
selectProductSpecList
=
productSpecList
.
filter
((
i
)
=>
selectedRowKeys
.
includes
(
i
.
id
));
if
(
selectProductSpecList
.
length
===
0
)
{
return
message
.
warning
(
'请选择产品规格'
);
}
produceSpecSelectEvent
(
selectProductSpecList
);
};
//取消
const
handleCancel
=
()
=>
{
setSelectedRowKeys
([]);
onCancel
();
};
//获取产品-sku
const
getProduceSpecList
=
(
productSkuId
:
number
)
=>
{
ProduceManageAPI
.
listPageProductSpec
({
productSkuId
,
pageSize
:
pagination
.
pageSize
,
pageNo
:
pagination
.
pageNo
,
}).
then
(({
result
})
=>
{
setProductSpecList
(
result
.
list
||
[]);
pagination
.
totalPage
=
result
.
totalPage
;
pagination
.
totalCount
=
result
.
totalCount
;
setPagination
(
pagination
);
setSelectedRowKeys
(
data
.
map
((
v
)
=>
v
.
id
));
});
};
useEffect
(()
=>
{
if
(
productId
)
{
getProduceSpecList
(
productId
);
}
},
[
productId
]);
return
(
<
div
>
<
Modal
title=
'指定产品规格'
open=
{
open
}
onCancel=
{
handleCancel
}
width=
{
768
}
zIndex=
{
1010
}
onOk=
{
handleSubmit
}
>
<
Table
dataSource=
{
productSpecList
}
columns=
{
columns
}
rowKey=
'id'
style=
{
{
width
:
'100%'
}
}
size=
'small'
bordered
rowSelection=
{
{
selectedRowKeys
,
onChange
:
onSelectChange
,
}
}
pagination=
{
{
total
:
pagination
.
totalCount
,
pageSize
:
pagination
.
pageSize
,
current
:
pagination
.
pageNo
,
showSizeChanger
:
true
,
showQuickJumper
:
true
,
onChange
:
(
page
:
number
,
pageSize
:
number
)
=>
paginationChange
(
page
,
pageSize
),
showTotal
:
(
total
,
range
)
=>
`当前 ${range[0]}-${range[1]} 条记录 / 共 ${total} 条数据`
,
}
}
/>
</
Modal
>
</
div
>
);
};
export
default
DesignateSpecModal
;
src/pages/mallManage/industryManage/industryDetail/components/productListModal/index.tsx
0 → 100644
浏览文件 @
cbe2f726
import
React
,
{
FC
}
from
'react'
;
import
{
Modal
,
ModalProps
,
Table
}
from
'antd'
;
import
{
ColumnsType
}
from
'antd/es/table'
;
import
{
InterDataType
}
from
'~/api/interface'
;
import
{
industrySpecDetailType
}
from
'~/api/interface/industryManageType'
;
//方案规格详情返回类型
type
productInventoryListType
=
InterDataType
<
industrySpecDetailType
>
[
'productInventoryList'
];
interface
PropsType
{
data
:
productInventoryListType
;
onCancel
:
()
=>
void
;
}
const
ProductListModal
:
FC
<
ModalProps
&
PropsType
>
=
({
open
,
onCancel
,
data
})
=>
{
// 表格结构
const
columns
:
ColumnsType
<
productInventoryListType
[
0
]
>
=
[
{
title
:
'序号'
,
align
:
'center'
,
width
:
'50px'
,
render
:
(
text
:
string
,
record
:
productInventoryListType
[
0
],
index
:
number
)
=>
{
return
index
+
1
;
},
},
{
title
:
'产品名称'
,
dataIndex
:
'productName'
,
align
:
'center'
,
width
:
'100px'
,
render
:
(
text
:
string
,
record
:
productInventoryListType
[
0
])
=>
{
return
record
.
productSku
.
productName
;
},
},
{
title
:
'产品类型'
,
dataIndex
:
'typeName'
,
align
:
'center'
,
width
:
'100px'
,
render
:
(
text
:
string
,
record
:
productInventoryListType
[
0
])
=>
{
return
record
.
productSku
.
goodsTypeId
;
},
},
{
title
:
'型号'
,
dataIndex
:
'model'
,
align
:
'center'
,
width
:
'100px'
,
render
:
(
text
:
string
,
record
:
productInventoryListType
[
0
])
=>
{
return
record
.
productSku
.
model
;
},
},
{
title
:
'产品品牌'
,
dataIndex
:
'productBrand'
,
align
:
'center'
,
width
:
'100px'
,
render
:
(
text
:
string
,
record
:
productInventoryListType
[
0
])
=>
{
return
record
.
productSku
.
productName
;
},
},
{
title
:
'产品规格'
,
// align: "left",
width
:
'200px'
,
render
:
(
text
:
string
,
record
)
=>
{
if
(
record
.
select
===
0
)
{
return
'不指定'
;
}
return
record
.
productSpecList
.
map
((
i
:
any
,
index
:
number
)
=>
(
<
div
key=
{
index
}
>
{
i
.
specName
}
(
{
i
.
partNo
}
)
</
div
>
));
},
onHeaderCell
:
()
=>
{
return
{
style
:
{
textAlign
:
'center'
,
},
};
},
},
];
// 关闭
const
onClose
=
()
=>
{
onCancel
();
};
return
(
<
Modal
open=
{
open
}
title=
'产品清单'
onCancel=
{
onClose
}
destroyOnClose
footer=
{
null
}
width=
{
800
}
>
<
Table
size=
'small'
dataSource=
{
data
}
columns=
{
columns
}
rowKey=
'id'
style=
{
{
width
:
'100%'
}
}
bordered
pagination=
{
false
}
/>
</
Modal
>
);
};
export
default
ProductListModal
;
src/pages/mallManage/industryManage/industryDetail/index.tsx
浏览文件 @
cbe2f726
差异被折叠。
点击展开。
src/pages/mallManage/industryManage/industryList/components/addOrEditIndustryModal/index.tsx
浏览文件 @
cbe2f726
import
React
,
{
useEffect
,
useState
}
from
'react'
;
import
{
Form
,
Input
,
Modal
,
message
,
Select
}
from
'antd'
;
import
React
,
{
FC
,
useEffect
}
from
'react'
;
import
{
Form
,
Input
,
Modal
,
message
,
Select
,
ModalProps
}
from
'antd'
;
import
{
IndustryManageAPI
}
from
'~/api'
;
import
{
IndustrySkuType
}
from
'../../propsType'
;
import
'./index.scss'
;
import
{
InterDataType
,
InterReqType
}
from
'~/api/interface'
;
import
{
categoryListType
}
from
'~/api/interface/categoryManage'
;
import
{
industryAddType
,
listIndustryType
}
from
'~/api/interface/industryManageType'
;
type
categoryResponseType
=
InterDataType
<
categoryListType
>
[
'list'
];
type
industryListType
=
InterDataType
<
listIndustryType
>
[
'list'
];
type
industryFormType
=
InterReqType
<
industryAddType
>
;
interface
PropsType
{
visible
:
boolean
;
closed
:
any
;
data
:
IndustrySkuType
;
categoryIndustryList
:
categoryResponseType
;
industryItem
:
Partial
<
industryListType
[
0
]
>
|
undefined
;
close
:
()
=>
void
;
addOrEditSuccess
:
()
=>
void
;
}
const
{
Option
}
=
Select
;
function
AddOrEditIndustryModal
(
props
:
PropsType
)
{
// 父组件传参
const
{
visible
,
closed
,
data
}
=
props
;
const
AddOrEditIndustryModal
:
FC
<
ModalProps
&
PropsType
>
=
({
open
,
categoryIndustryList
,
industryItem
,
close
,
addOrEditSuccess
,
})
=>
{
// 表格事件
const
[
form
]
=
Form
.
useForm
();
// 所属行业列表
const
[
industryType
,
setIndustryType
]
=
useState
<
{
label
:
string
;
val
:
number
}[]
>
([]);
const
[
form
]
=
Form
.
useForm
<
industryFormType
>
();
// 关闭弹窗
const
handleClosed
=
async
()
=>
{
form
.
setFieldsValue
({
goodsTypeId
:
undefined
,
description
:
undefined
,
solutionName
:
undefined
,
id
:
undefined
,
});
closed
();
};
// 获取所属行业列表
const
getFirstIndustryTypeInfo
=
async
()
=>
{
const
res
:
any
=
await
IndustryManageAPI
.
getFirstIndustryTypeInfo
({});
if
(
res
&&
res
.
code
===
'200'
)
{
const
arr
=
res
.
result
.
map
((
i
:
{
goodsMasterType
:
string
;
goodsMasterTypeId
:
number
})
=>
{
return
{
label
:
i
.
goodsMasterType
,
val
:
i
.
goodsMasterTypeId
,
};
});
setIndustryType
(
arr
);
}
const
handleClosed
=
()
=>
{
form
.
resetFields
();
close
();
};
// 触发表单验证
const
handleSubmit
=
()
=>
{
form
.
validateFields
()
.
then
(
async
(
values
)
=>
{
const
obj
=
{
...
data
,
...
values
};
const
res
:
any
=
await
IndustryManageAPI
[
!
obj
.
id
?
'addIndustrySku'
:
'editIndustrySku'
](
obj
,
);
const
res
:
any
=
await
IndustryManageAPI
[
industryItem
?
'editIndustryRequest'
:
'addIndustryRequest'
]({
...
values
,
id
:
industryItem
?
industryItem
.
id
:
undefined
});
if
(
res
&&
res
.
code
===
'200'
)
{
message
.
success
(
'操作成功'
);
await
handleClosed
();
handleClosed
();
addOrEditSuccess
();
}
else
{
message
.
warning
(
res
.
message
);
}
...
...
@@ -62,19 +52,19 @@ function AddOrEditIndustryModal(props: PropsType) {
message
.
warning
(
err
.
errorFields
[
0
].
errors
[
0
]).
then
();
});
};
// componentsDidMounted
useEffect
(()
=>
{
if
(
!
data
)
return
;
// console.log("新增编辑弹窗 -->", data);
form
.
setFieldsValue
({
...
data
,
});
getFirstIndustryTypeInfo
().
then
();
},
[
data
]);
if
(
industryItem
)
{
form
.
setFieldsValue
({
solutionName
:
industryItem
.
solutionName
,
categoryId
:
industryItem
.
categoryId
,
description
:
industryItem
.
description
,
});
}
},
[
industryItem
]);
return
(
<
Modal
open=
{
visible
}
title=
{
data
.
id
?
'修改'
:
'新增'
}
open=
{
open
}
title=
{
industryItem
?
'修改'
:
'新增'
}
onCancel=
{
handleClosed
}
onOk=
{
handleSubmit
}
destroyOnClose
...
...
@@ -96,15 +86,15 @@ function AddOrEditIndustryModal(props: PropsType) {
<
Input
placeholder=
'请输入方案名称'
allowClear
maxLength=
{
30
}
/>
</
Form
.
Item
>
<
Form
.
Item
name=
'
goodsType
Id'
name=
'
category
Id'
label=
'所属行业'
rules=
{
[{
required
:
true
,
message
:
'请选择所属行业'
}]
}
>
<
Select
placeholder=
'请选择所属行业'
allowClear
>
{
industryType
.
map
((
i
,
j
)
=>
(
<
Option
value=
{
i
.
val
}
key=
{
j
}
>
{
i
.
label
}
</
Option
>
{
categoryIndustryList
.
map
((
i
,
j
)
=>
(
<
Select
.
Option
value=
{
i
.
id
}
key=
{
j
}
>
{
i
.
classifyName
}
</
Select
.
Option
>
))
}
</
Select
>
</
Form
.
Item
>
...
...
@@ -124,5 +114,5 @@ function AddOrEditIndustryModal(props: PropsType) {
</
Form
>
</
Modal
>
);
}
}
;
export
default
AddOrEditIndustryModal
;
src/pages/mallManage/industryManage/industryList/index.tsx
浏览文件 @
cbe2f726
差异被折叠。
点击展开。
src/pages/mallManage/industryManage/industryList/propsType.ts
浏览文件 @
cbe2f726
// 行业sku管理-分页列表
export
interface
IndustrySkuType
{
goodsTypeId
:
number
|
undefined
;
description
:
string
;
solutionName
:
string
;
id
:
number
;
createTime
:
string
;
}
// 行业sku管理-行业规格管理-分页列表
export
interface
IndustrySpecType
{
createTime
?:
string
;
productSkuId
?:
number
;
id
:
number
;
industrySkuId
?:
number
;
list
:
inventoryType
[];
specImage
:
string
;
specName
:
string
;
}
// 行业sku管理-行业规格管理-清单列表
export
interface
inventoryType
{
productSku
:
productSkuType
;
...
...
src/pages/mallManage/makeManage/makeList/components/addOrEditMakeModal/index.tsx
0 → 100644
浏览文件 @
cbe2f726
import
{
FC
,
useEffect
}
from
'react'
;
import
{
Form
,
Input
,
Modal
,
message
,
ModalProps
}
from
'antd'
;
import
{
MakeManageAPI
}
from
'~/api'
;
interface
selfProps
{
makeItem
:
any
;
onOk
:
()
=>
void
;
handleCancel
:
()
=>
void
;
}
const
AddOrEditModal
:
FC
<
ModalProps
&
selfProps
>
=
({
open
,
handleCancel
,
onOk
,
title
,
makeItem
,
})
=>
{
const
[
form
]
=
Form
.
useForm
<
{
brandName
:
string
}
>
();
const
submit
=
()
=>
{
form
.
validateFields
().
then
((
value
)
=>
{
MakeManageAPI
[
makeItem
?
'editBrandInfo'
:
'addBrandInfo'
]({
...
value
,
id
:
makeItem
?.
id
,
}).
then
(({
code
,
message
:
msg
})
=>
{
if
(
code
===
'200'
)
{
message
.
success
(
makeItem
?
'编辑成功'
:
'新增成功'
);
onOk
();
form
.
resetFields
();
}
else
{
message
.
error
(
msg
);
}
});
});
};
const
onCancel
=
()
=>
{
form
.
resetFields
();
handleCancel
();
};
useEffect
(()
=>
{
if
(
makeItem
)
{
form
.
setFieldsValue
({
brandName
:
makeItem
.
brandName
,
});
}
},
[
makeItem
]);
return
(
<
Modal
open=
{
open
}
onOk=
{
submit
}
onCancel=
{
onCancel
}
title=
{
title
}
>
<
Form
form=
{
form
}
>
<
Form
.
Item
label=
'品牌名称'
name=
'brandName'
rules=
{
[{
required
:
true
,
message
:
'请输入品牌名称!'
}]
}
>
<
Input
placeholder=
'请输入品牌名称'
maxLength=
{
10
}
/>
</
Form
.
Item
>
</
Form
>
</
Modal
>
);
};
export
default
AddOrEditModal
;
src/pages/mallManage/makeManage/makeList/index.tsx
0 → 100644
浏览文件 @
cbe2f726
import
{
Button
,
Table
}
from
'antd'
;
import
{
PlusOutlined
}
from
'@ant-design/icons'
;
import
{
ColumnsType
}
from
'antd/es/table'
;
// import AddOrEditMakeModal from './components/addOrEditMakeModal';
const
MakeList
=
()
=>
{
const
columns
:
ColumnsType
<
any
>
=
[
{
title
:
'品牌名称'
,
align
:
'center'
,
dataIndex
:
'brandName'
,
},
{
title
:
'创建时间'
,
align
:
'center'
,
dataIndex
:
'createTime'
,
},
{
title
:
'操作'
,
align
:
'center'
,
render
:
()
=>
(
<>
<
Button
type=
'link'
>
编辑
</
Button
>
<
Button
type=
'link'
danger
>
删除
</
Button
>
</>
),
},
];
return
(
<
div
className=
'make-list'
>
<
div
className=
'make-list-operate'
>
<
Button
type=
'primary'
icon=
{
<
PlusOutlined
/>
}
>
新增
</
Button
>
</
div
>
<
div
className=
'make-list-content'
style=
{
{
marginTop
:
'10px'
}
}
>
<
Table
bordered
columns=
{
columns
}
/>
</
div
>
{
/*<AddOrEditMakeModal />*/
}
</
div
>
);
};
export
default
MakeList
;
src/pages/mallManage/mallGoods/goodsAddOrEditOrDetail/components/stockSku/index.tsx
浏览文件 @
cbe2f726
...
...
@@ -2,7 +2,71 @@ import React from 'react';
import
{
Table
,
Button
}
from
'antd'
;
import
{
PlusOutlined
}
from
'@ant-design/icons'
;
import
'./index.scss'
;
import
{
ColumnsType
}
from
'antd/es/table'
;
const
columns
:
ColumnsType
<
any
>
=
[
{
title
:
'序号'
,
align
:
'center'
,
render
:
()
=>
<
div
>
--
</
div
>,
},
{
title
:
`产品类型`
,
align
:
'center'
,
// dataIndex: "goodsTypeId",
render
:
()
=>
<
div
>
--
</
div
>,
},
{
title
:
'规格名称'
,
align
:
'center'
,
dataIndex
:
'goodsSpecName'
,
},
{
title
:
`方案`
,
align
:
'center'
,
dataIndex
:
'skuName'
,
},
{
title
:
'选项来源'
,
align
:
'center'
,
dataIndex
:
'specIds'
,
render
:
()
=>
<
div
>
--
</
div
>,
},
{
title
:
'选择方式'
,
align
:
'center'
,
dataIndex
:
'chooseType'
,
render
:
()
=>
<
div
>
--
</
div
>,
},
{
title
:
'是否必选'
,
align
:
'center'
,
dataIndex
:
'must'
,
render
:
()
=>
<
div
>
--
</
div
>,
},
{
title
:
'规格单位'
,
align
:
'center'
,
dataIndex
:
'skuUnitId'
,
render
:
()
=>
{
return
<
div
>
--
</
div
>;
},
},
{
title
:
'操作'
,
align
:
'center'
,
width
:
'20%'
,
render
:
()
=>
{
return
(
<
div
>
<
Button
type=
'link'
style=
{
{
marginRight
:
'10px'
}
}
>
编辑
</
Button
>
<
Button
type=
'link'
>
删除
</
Button
>
</
div
>
);
},
},
];
const
StockSku
:
React
.
FC
<
any
>
=
()
=>
{
return
(
<
div
className=
'stock-sku'
>
...
...
@@ -13,7 +77,7 @@ const StockSku: React.FC<any> = () => {
添加规格
</
Button
>
</
div
>
<
Table
size=
'small'
bordered
rowKey=
'id'
pagination=
{
false
}
/>
<
Table
size=
'small'
bordered
rowKey=
'id'
pagination=
{
false
}
columns=
{
columns
}
/>
</
div
>
</
div
>
);
...
...
src/pages/mallManage/produceManage/produceList/components/addOrEditProduceModal/index.tsx
浏览文件 @
cbe2f726
import
React
,
{
useEffect
,
useState
}
from
'react'
;
import
{
Form
,
Input
,
Modal
,
message
,
Select
}
from
'antd'
;
import
{
ProduceManageAPI
}
from
'~/api'
;
import
{
CategoryManageAPI
,
ProduceManageAPI
}
from
'~/api'
;
import
{
ProductSkuType
,
MakeItemEntity
}
from
'../../propsType'
;
// import { categoryDec } from '@/api/modules/goods';
import
{
InterDataType
}
from
'~/api/interface'
;
import
{
categoryListType
,
directoryListType
}
from
'~/api/interface/categoryManage'
;
//目录返回类型
type
directoryType
=
InterDataType
<
directoryListType
>
;
//分类返回类型
type
categoryType
=
InterDataType
<
categoryListType
>
[
'list'
];
interface
PropsType
{
visible
:
boolean
;
closed
:
any
;
data
:
ProductSkuType
|
undefined
;
makeList
:
MakeItemEntity
[];
decList
:
any
;
decList
:
directoryType
;
}
const
{
Option
}
=
Select
;
...
...
@@ -18,9 +24,7 @@ function AddOrEditProduceModal(props: PropsType) {
// 父组件传参
const
{
visible
,
closed
,
data
,
makeList
,
decList
}
=
props
;
// 产品类型下拉列表
const
[
productTypeSelectList
,
setProductTypeSelectList
]
=
useState
<
{
label
:
string
;
val
:
number
}[]
>
([]);
const
[
productTypeSelectList
,
setProductTypeSelectList
]
=
useState
<
categoryType
>
([]);
// 表格事件
const
[
form
]
=
Form
.
useForm
();
// 关闭弹窗
...
...
@@ -46,28 +50,23 @@ function AddOrEditProduceModal(props: PropsType) {
message
.
warning
(
err
.
errorFields
[
0
].
errors
[
0
]).
then
();
});
};
// 获取产品类型列表
const
getListGoodsTypeList
=
async
(
type
:
number
)
=>
{
const
res
:
any
=
await
ProduceManageAPI
.
getListGoodsTypeList
(
type
);
if
(
res
&&
res
.
code
===
'200'
)
{
const
arr
=
res
.
result
.
map
((
i
:
{
goodsMasterType
:
string
;
goodsMasterTypeId
:
number
})
=>
{
return
{
label
:
i
.
goodsMasterType
,
val
:
i
.
goodsMasterTypeId
,
};
});
setProductTypeSelectList
(
arr
);
}
//根据目录获取分类
const
getCategoryListByDirectory
=
(
directoryId
:
number
)
=>
{
CategoryManageAPI
.
getCategoryList
({
pageNo
:
1
,
pageSize
:
99999
,
directoryId
,
type
:
4
}).
then
(
({
result
})
=>
{
setProductTypeSelectList
(
result
.
list
||
[]);
},
);
};
// 目录修改
const
decSelectChange
=
(
value
:
number
)
=>
{
form
.
setFieldValue
(
'goodsTypeId'
,
undefined
);
get
ListGoodsTypeList
(
value
);
get
CategoryListByDirectory
(
value
);
};
// componentsDidMounted
useEffect
(()
=>
{
if
(
!
data
)
return
;
get
ListGoodsTypeList
(
data
.
directoryId
);
get
CategoryListByDirectory
(
data
.
directoryId
);
form
.
setFieldsValue
({
...
data
,
});
...
...
@@ -103,7 +102,7 @@ function AddOrEditProduceModal(props: PropsType) {
<
Select
placeholder=
'请选择产品目录'
onChange=
{
decSelectChange
}
>
{
decList
.
map
((
v
:
any
,
index
:
number
)
=>
(
<
Select
.
Option
value=
{
v
.
id
}
key=
{
index
}
>
{
v
.
sort
Name
}
{
v
.
directory
Name
}
</
Select
.
Option
>
))
}
</
Select
>
...
...
@@ -122,8 +121,8 @@ function AddOrEditProduceModal(props: PropsType) {
}
>
{
productTypeSelectList
.
map
((
i
,
j
)
=>
(
<
Option
value=
{
i
.
val
}
key=
{
j
}
>
{
i
.
label
}
<
Option
value=
{
i
.
id
}
key=
{
j
}
>
{
i
.
classifyName
}
</
Option
>
))
}
</
Select
>
...
...
src/pages/mallManage/produceManage/produceList/index.tsx
浏览文件 @
cbe2f726
差异被折叠。
点击展开。
src/pages/mallManage/rentGoods/rentAddOrEditOrDetail/components/stockSku/index.tsx
浏览文件 @
cbe2f726
...
...
@@ -2,8 +2,73 @@ import React from 'react';
import
{
Table
,
Button
}
from
'antd'
;
import
{
PlusOutlined
}
from
'@ant-design/icons'
;
import
'./index.scss'
;
import
{
ColumnsType
}
from
'antd/es/table'
;
const
StockSku
:
React
.
FC
<
any
>
=
()
=>
{
const
columns
:
ColumnsType
<
any
>
=
[
{
title
:
'序号'
,
align
:
'center'
,
render
:
()
=>
<
div
>
--
</
div
>,
},
{
title
:
`产品类型`
,
align
:
'center'
,
// dataIndex: "goodsTypeId",
render
:
()
=>
<
div
>
--
</
div
>,
},
{
title
:
'规格名称'
,
align
:
'center'
,
dataIndex
:
'goodsSpecName'
,
},
{
title
:
`方案`
,
align
:
'center'
,
dataIndex
:
'skuName'
,
},
{
title
:
'选项来源'
,
align
:
'center'
,
dataIndex
:
'specIds'
,
render
:
()
=>
<
div
>
--
</
div
>,
},
{
title
:
'选择方式'
,
align
:
'center'
,
dataIndex
:
'chooseType'
,
render
:
()
=>
<
div
>
--
</
div
>,
},
{
title
:
'是否必选'
,
align
:
'center'
,
dataIndex
:
'must'
,
render
:
()
=>
<
div
>
--
</
div
>,
},
{
title
:
'规格单位'
,
align
:
'center'
,
dataIndex
:
'skuUnitId'
,
render
:
()
=>
{
return
<
div
>
--
</
div
>;
},
},
{
title
:
'操作'
,
align
:
'center'
,
width
:
'20%'
,
render
:
()
=>
{
return
(
<
div
>
<
Button
type=
'link'
style=
{
{
marginRight
:
'10px'
}
}
>
编辑
</
Button
>
<
Button
type=
'link'
>
删除
</
Button
>
</
div
>
);
},
},
];
return
(
<
div
className=
'stock-sku'
>
<
div
className=
'stock-sku-title'
>
库存规格
</
div
>
...
...
@@ -13,7 +78,7 @@ const StockSku: React.FC<any> = () => {
添加规格
</
Button
>
</
div
>
<
Table
size=
'small'
bordered
rowKey=
'id'
pagination=
{
false
}
/>
<
Table
size=
'small'
bordered
rowKey=
'id'
pagination=
{
false
}
columns=
{
columns
}
/>
</
div
>
</
div
>
);
...
...
src/pages/orderManage/equipmentOrder/comp/detailTimeLine/index.tsx
0 → 100644
浏览文件 @
cbe2f726
import
{
OrderManageAPI
}
from
'~/api'
;
import
React
,
{
useEffect
,
useState
}
from
'react'
;
import
{
Timeline
}
from
'antd'
;
import
{
orderDetailType
}
from
'~/api/interface/orderManageType'
;
import
{
InterDataType
}
from
'~/api/interface'
;
// 接口返回的类型
type
DataType
=
InterDataType
<
orderDetailType
>
;
// 参数类型
type
PropsType
=
{
detail
:
DataType
;
};
const
DetailTimeLine
:
React
.
FC
<
PropsType
>
=
(
props
)
=>
{
const
{
detail
}
=
props
;
// 流程列表
const
[
timeLineList
,
setTimeLineList
]
=
useState
<
{
label
:
string
;
color
:
string
}[]
>
([]);
// 获取订单流程
const
getOrderStatus
=
async
()
=>
{
const
res
=
await
OrderManageAPI
.
listTranStatus
({});
if
(
res
&&
res
.
code
===
'200'
)
{
// 转换列表数据(区分完成和未完)
const
list
=
res
.
result
.
map
((
i
)
=>
{
if
(
Number
(
i
.
status
)
<
Number
(
detail
?.
tranStatus
))
{
return
{
label
:
i
.
doing
,
color
:
'#1890ff'
,
};
}
else
{
return
{
label
:
i
.
waiting
,
color
:
'#ccc'
,
};
}
});
// 将当前项目变绿
const
current
=
list
.
findIndex
((
i
)
=>
i
.
color
===
'#ccc'
);
list
[
current
].
color
=
'#52c41a'
;
setTimeLineList
(
list
);
}
};
// componentDidMount
useEffect
(()
=>
{
if
(
!
detail
)
return
;
getOrderStatus
().
then
();
},
[
detail
]);
return
(
<
div
className=
{
'detail-timeline'
}
style=
{
{
width
:
'200px'
}
}
>
<
div
className=
{
'detail-title'
}
>
订单流程
</
div
>
<
Timeline
items=
{
timeLineList
}
mode=
{
'right'
}
/>
</
div
>
);
};
export
default
DetailTimeLine
;
src/pages/orderManage/equipmentOrder/comp/orderClosed/index.tsx
0 → 100644
浏览文件 @
cbe2f726
import
{
InterListType
,
InterReqType
}
from
'~/api/interface'
;
import
{
listPcWechatOrderType
,
platFormCloseOrderType
}
from
'~/api/interface/orderManageType'
;
import
React
from
'react'
;
import
{
Form
,
message
,
Modal
,
Select
}
from
'antd'
;
import
{
OrderManageAPI
}
from
'~/api'
;
// 表格数据类型
type
TableType
=
InterListType
<
listPcWechatOrderType
>
;
// 请求数据的类型
type
ReqType
=
InterReqType
<
platFormCloseOrderType
>
;
// 传参类型
interface
propType
{
title
:
string
;
open
:
boolean
;
closed
:
any
;
data
?:
TableType
[
0
];
}
const
OrderClosed
:
React
.
FC
<
propType
>
=
(
props
)
=>
{
OrderClosed
.
defaultProps
=
{
data
:
undefined
,
};
// 参数
const
{
title
,
open
,
closed
,
data
}
=
props
;
// 表单钩子
const
[
form
]
=
Form
.
useForm
<
ReqType
>
();
// 关闭弹窗
const
handleCancel
=
()
=>
{
form
.
resetFields
();
closed
();
};
// 确认事件
const
handleOk
=
()
=>
{
form
.
validateFields
()
.
then
(
async
(
values
)
=>
{
// console.log('确认事件 --->', values);
await
handleSubmit
(
values
);
})
.
catch
((
err
)
=>
{
message
.
warning
({
content
:
err
.
errorFields
[
0
].
errors
[
0
],
})
.
then
();
});
};
// 提交事件
const
handleSubmit
=
async
(
values
:
ReqType
)
=>
{
const
res
=
await
OrderManageAPI
.
platFormCloseOrder
({
...
values
,
orderInfoId
:
Number
(
data
?.
id
),
});
if
(
res
&&
res
.
code
===
'200'
)
{
message
.
success
(
'操作成功'
);
handleCancel
();
}
};
return
(
<
Modal
open=
{
open
}
title=
{
title
}
onCancel=
{
handleCancel
}
onOk=
{
handleOk
}
destroyOnClose
width=
{
400
}
>
<
Form
name=
'addForm'
form=
{
form
}
labelAlign=
'right'
labelCol=
{
{
span
:
6
}
}
wrapperCol=
{
{
span
:
12
}
}
>
<
Form
.
Item
label=
'关闭理由'
name=
'shutReason'
rules=
{
[{
required
:
true
,
message
:
'请选择关闭理由'
}]
}
>
<
Select
placeholder=
{
'请选择关闭理由'
}
options=
{
[
{
label
:
'未及时付款'
},
{
label
:
'买家不想买'
},
{
label
:
'买家信息填写错误,重新下单'
},
{
label
:
'恶意买家,同行捣乱'
},
{
label
:
'缺货'
},
{
label
:
'买家拍错了'
},
{
label
:
'其他原因'
},
].
map
((
i
)
=>
({
label
:
i
.
label
,
value
:
i
.
label
}))
}
allowClear
/>
</
Form
.
Item
>
</
Form
>
</
Modal
>
);
};
export
default
OrderClosed
;
src/pages/orderManage/equipmentOrder/comp/orderConfirm/index.tsx
0 → 100644
浏览文件 @
cbe2f726
import
{
InterListType
,
InterReqType
}
from
'~/api/interface'
;
import
{
listPcWechatOrderType
,
pfConfirmOrderWareType
}
from
'~/api/interface/orderManageType'
;
import
React
,
{
useEffect
}
from
'react'
;
import
{
Col
,
Form
,
Input
,
message
,
Modal
,
Radio
,
Row
}
from
'antd'
;
import
{
Uploader
}
from
'~/components/uploader'
;
import
{
PlusOutlined
}
from
'@ant-design/icons'
;
import
{
OrderManageAPI
}
from
'~/api'
;
// 表格数据类型
type
TableType
=
InterListType
<
listPcWechatOrderType
>
;
// 请求数据的类型
type
ReqType
=
InterReqType
<
pfConfirmOrderWareType
>
;
// 传参类型
interface
propType
{
title
:
string
;
open
:
boolean
;
closed
:
any
;
data
?:
TableType
[
0
];
}
const
OrderConfirm
:
React
.
FC
<
propType
>
=
(
props
)
=>
{
OrderConfirm
.
defaultProps
=
{
data
:
undefined
,
};
// 参数
const
{
title
,
open
,
closed
,
data
}
=
props
;
// 物流列表
const
[
expressList
,
setExpressList
]
=
React
.
useState
<
{
label
:
string
;
value
:
string
}[]
>
([]);
// 表单钩子
const
[
form
]
=
Form
.
useForm
<
ReqType
>
();
// 关闭弹窗
const
handleCancel
=
()
=>
{
form
.
resetFields
();
closed
();
};
// 确认事件
const
handleOk
=
()
=>
{
form
.
validateFields
()
.
then
(
async
(
values
)
=>
{
// console.log('确认事件 --->', values);
await
handleSubmit
(
values
);
})
.
catch
((
err
)
=>
{
message
.
warning
({
content
:
err
.
errorFields
[
0
].
errors
[
0
],
})
.
then
();
});
};
// 提交事件
const
handleSubmit
=
async
(
values
:
ReqType
)
=>
{
const
res
=
await
OrderManageAPI
.
pfConfirmOrderWare
({
...
values
,
orderInfoId
:
Number
(
data
?.
id
),
});
if
(
res
&&
res
.
code
===
'200'
)
{
message
.
success
(
'操作成功'
);
handleCancel
();
}
};
// 获取物流信息
const
getListExpressInfo
=
async
()
=>
{
const
res
=
await
OrderManageAPI
.
listExpressInfo
({});
if
(
res
&&
res
.
code
===
'200'
)
{
setExpressList
(
res
.
result
.
map
((
item
)
=>
({
label
:
item
.
exName
,
value
:
item
.
exCode
})));
// console.log(res);
}
};
// 转换物流信息
const
getExpressInfo
=
(
code
:
string
|
undefined
|
null
)
=>
{
return
expressList
.
find
((
item
)
=>
item
.
value
===
code
)?.
label
||
code
;
};
// componentDidMount
useEffect
(()
=>
{
if
(
!
open
)
return
;
if
(
!
data
)
return
;
getListExpressInfo
().
then
();
console
.
log
(
'data --->'
,
data
);
},
[
open
]);
return
(
<
Modal
open=
{
open
}
title=
{
title
}
onCancel=
{
handleCancel
}
onOk=
{
handleOk
}
destroyOnClose
width=
{
600
}
>
<
Form
name=
'addForm'
form=
{
form
}
labelAlign=
'right'
labelCol=
{
{
span
:
8
}
}
wrapperCol=
{
{
span
:
16
}
}
>
<
Form
.
Item
label=
'收货方式'
labelCol=
{
{
span
:
4
}
}
>
物流归还
</
Form
.
Item
>
<
Form
.
Item
label=
'物流单号'
labelCol=
{
{
span
:
4
}
}
>
{
data
?.
receipt
?.
sendExNo
}
</
Form
.
Item
>
<
Form
.
Item
label=
'物流公司'
labelCol=
{
{
span
:
4
}
}
>
{
getExpressInfo
(
data
?.
receipt
?.
sendExCode
)
}
</
Form
.
Item
>
<
Row
gutter=
{
{
xs
:
8
,
sm
:
16
,
md
:
24
}
}
>
<
Col
span=
{
11
}
>
<
Form
.
Item
label=
'质检照片'
name=
'imgs'
rules=
{
[{
required
:
true
,
message
:
'请上传质检照片'
}]
}
>
<
Uploader
listType=
{
'picture-card'
}
fileUpload
fileLength=
{
3
}
onChange=
{
(
e
)
=>
{
form
.
setFieldValue
(
'imgs'
,
e
.
map
((
item
)
=>
item
.
url
),
);
}
}
>
<
PlusOutlined
/>
</
Uploader
>
</
Form
.
Item
>
</
Col
>
<
Col
span=
{
11
}
>
<
Form
.
Item
label=
'质检视频'
name=
'videoUrl'
rules=
{
[{
required
:
true
,
message
:
'请上传质检视频'
}]
}
>
<
Uploader
listType=
{
'picture-card'
}
fileUpload
fileLength=
{
1
}
fileType=
{
[
'video/mp4'
,
'video/avi'
,
'video/wmv'
,
'video/rmvb'
]
}
fileSize=
{
10
}
onChange=
{
(
e
)
=>
{
form
.
setFieldValue
(
'videoUrl'
,
e
[
0
].
url
);
}
}
>
<
PlusOutlined
/>
</
Uploader
>
</
Form
.
Item
>
</
Col
>
</
Row
>
<
Row
gutter=
{
{
xs
:
8
,
sm
:
16
,
md
:
24
}
}
>
<
Col
span=
{
11
}
>
<
Form
.
Item
label=
'设备状态'
name=
'vcuSatus'
rules=
{
[{
required
:
true
,
message
:
'请选择设备状态'
}]
}
initialValue=
{
0
}
>
<
Radio
.
Group
options=
{
[
{
label
:
'正常'
,
value
:
0
},
{
label
:
'故障'
,
value
:
1
},
]
}
onChange=
{
(
e
)
=>
{
form
.
setFieldValue
(
'vcuSatus'
,
e
.
target
.
value
);
}
}
/>
</
Form
.
Item
>
</
Col
>
<
Col
span=
{
11
}
>
<
Form
.
Item
label=
'操作密码'
name=
'authPwd'
rules=
{
[{
required
:
true
,
message
:
'请输入操作密码'
}]
}
>
<
Input
.
Password
placeholder=
{
'请输入操作密码'
}
maxLength=
{
20
}
allowClear
autoComplete=
'new-password'
/>
</
Form
.
Item
>
</
Col
>
</
Row
>
</
Form
>
</
Modal
>
);
};
export
default
OrderConfirm
;
src/pages/orderManage/equipmentOrder/comp/
detail
Deliver/index.tsx
→
src/pages/orderManage/equipmentOrder/comp/
order
Deliver/index.tsx
浏览文件 @
cbe2f726
...
...
@@ -19,8 +19,8 @@ interface propType {
data
?:
TableType
[
0
];
}
const
Detail
Deliver
:
React
.
FC
<
propType
>
=
(
props
)
=>
{
Detail
Deliver
.
defaultProps
=
{
const
Order
Deliver
:
React
.
FC
<
propType
>
=
(
props
)
=>
{
Order
Deliver
.
defaultProps
=
{
data
:
undefined
,
};
// 参数
...
...
@@ -247,4 +247,4 @@ const DetailDeliver: React.FC<propType> = (props) => {
);
};
export
default
Detail
Deliver
;
export
default
Order
Deliver
;
src/pages/orderManage/equipmentOrder/detail/index.scss
浏览文件 @
cbe2f726
...
...
@@ -41,6 +41,18 @@
flex
:
1
;
}
.detail-timeline
{
overflow
:
hidden
;
.ant-timeline
{
transform
:
translateX
(
-90px
)
translateY
(
10px
);
}
.ant-timeline
.ant-timeline-item
{
padding-bottom
:
36px
;
}
}
.detail-title
{
font-size
:
13px
;
font-weight
:
600
;
...
...
@@ -61,12 +73,24 @@
}
}
.detail-price
{
text-align
:
right
;
padding-right
:
30px
;
width
:
100%
;
font-size
:
16px
;
.num
{
color
:
orangered
;
}
}
.detail-image
{
display
:
flex
;
justify-content
:
flex-start
;
margin-left
:
56px
;
margin-top
:
-20px
;
margin-bottom
:
10px
;
flex-wrap
:
wrap
;
.image
{
width
:
68px
;
...
...
@@ -76,6 +100,7 @@
.ant-image
{
margin-right
:
10px
;
margin-bottom
:
10px
;
}
}
}
...
...
src/pages/orderManage/equipmentOrder/detail/index.tsx
浏览文件 @
cbe2f726
...
...
@@ -8,6 +8,7 @@ import DetailInformation from '~/pages/orderManage/productOrder/comp/detailInfor
import
{
OrderManageAPI
}
from
'~/api'
;
import
{
InterDataType
}
from
'~/api/interface'
;
import
{
orderDetailType
}
from
'~/api/interface/orderManageType'
;
import
DetailTimeLine
from
'~/pages/orderManage/equipmentOrder/comp/detailTimeLine'
;
// import DetailMessageBox from '~/pages/orderManage/equipmentOrder/comp/detailMessageBox';
// 接口返回的类型
...
...
@@ -59,9 +60,10 @@ function EquipmentOrderDetail() {
</
div
>
<
div
className=
{
'detail-wrap'
}
>
<
DetailPurchaser
detail=
{
orderDetail
}
/>
<
DetailDelivery
/>
<
DetailDelivery
detail=
{
orderDetail
}
/>
<
DetailTimeLine
detail=
{
orderDetail
}
/>
{
/*<DetailMessageBox />*/
}
<
DetailInformation
/>
<
DetailInformation
detail=
{
orderDetail
}
/>
</
div
>
</
div
>
);
...
...
src/pages/orderManage/equipmentOrder/index.tsx
浏览文件 @
cbe2f726
...
...
@@ -7,7 +7,9 @@ import qs from 'query-string';
import
{
InterListType
,
InterReqType
}
from
'~/api/interface'
;
import
{
listPcWechatOrderType
}
from
'~/api/interface/orderManageType'
;
import
{
OrderManageAPI
}
from
'~/api'
;
import
DetailDeliver
from
'~/pages/orderManage/equipmentOrder/comp/detailDeliver'
;
import
OrderDeliver
from
'src/pages/orderManage/equipmentOrder/comp/orderDeliver'
;
import
OrderConfirm
from
'~/pages/orderManage/equipmentOrder/comp/orderConfirm'
;
import
OrderClosed
from
'~/pages/orderManage/equipmentOrder/comp/orderClosed'
;
// 表格数据类型
type
TableType
=
InterListType
<
listPcWechatOrderType
>
;
...
...
@@ -33,6 +35,10 @@ function EquipmentOrderView() {
const
navigate
=
useNavigate
();
// 发货弹窗是否显示
const
[
deliverVisible
,
setDeliverVisible
]
=
useState
<
boolean
>
(
false
);
// 收货弹窗是否显示
const
[
confirmVisible
,
setConfirmVisible
]
=
useState
<
boolean
>
(
false
);
// 关闭弹窗是否显示
const
[
closedVisible
,
setClosedVisible
]
=
useState
<
boolean
>
(
false
);
// 当前选择的是第几个按钮
const
[
statusCodeButtonIndex
,
setStatusCodeButtonIndex
]
=
useState
<
number
>
(
0
);
// 订单状态搜索列表
...
...
@@ -120,14 +126,23 @@ function EquipmentOrderView() {
const
handleAction
=
(
data
:
TableType
[
0
])
=>
{
const
{
tranStatus
}
=
data
;
setEditData
(
data
);
if
(
tranStatus
===
'100'
)
{
setClosedVisible
(
true
);
}
if
(
tranStatus
===
'200'
)
{
setDeliverVisible
(
true
);
}
if
(
tranStatus
===
'500'
)
{
setConfirmVisible
(
true
);
}
};
// 关闭弹窗
const
handleClosed
=
()
=>
{
setEditData
(
undefined
);
setDeliverVisible
(
false
);
setConfirmVisible
(
false
);
setClosedVisible
(
false
);
paginationChange
(
pagination
.
current
,
pagination
.
pageSize
);
};
// componentDidMount
useEffect
(()
=>
{
...
...
@@ -310,7 +325,21 @@ function EquipmentOrderView() {
// rowSelection={{ selectedRowKeys, onChange: onSelectChange }}
/>
{
/*发货弹窗*/
}
<
DetailDeliver
open=
{
deliverVisible
}
title=
{
'发货'
}
data=
{
editData
}
closed=
{
handleClosed
}
/>
<
OrderDeliver
open=
{
deliverVisible
}
title=
{
'卖家发货'
}
data=
{
editData
}
closed=
{
handleClosed
}
/>
{
/*收货弹窗*/
}
<
OrderConfirm
open=
{
confirmVisible
}
title=
{
'确认收货'
}
data=
{
editData
}
closed=
{
handleClosed
}
/>
{
/*关闭订单*/
}
<
OrderClosed
open=
{
closedVisible
}
title=
{
'关闭订单'
}
data=
{
editData
}
closed=
{
handleClosed
}
/>
</>
);
}
...
...
src/pages/orderManage/productOrder/comp/detailDelivery/index.tsx
浏览文件 @
cbe2f726
import
React
from
'react'
;
import
React
,
{
useEffect
,
useState
}
from
'react'
;
import
{
Image
}
from
'antd'
;
import
{
orderDetailType
,
orderImageDetailType
}
from
'~/api/interface/orderManageType'
;
import
{
InterDataType
}
from
'~/api/interface'
;
import
{
OrderManageAPI
}
from
'~/api'
;
function
DetailDelivery
()
{
// 接口返回的类型
type
DataType
=
InterDataType
<
orderDetailType
>
;
// 参数类型
type
PropsType
=
{
detail
:
DataType
;
};
// 列表的类型
type
ListType
=
InterDataType
<
orderImageDetailType
>
;
// 设备状态列表
const
vcuSatusList
=
[
{
label
:
'正常'
,
value
:
0
},
{
label
:
'故障'
,
value
:
1
},
];
// 0:发货 1:收货 2:归还 3:平台收货
const
vcuTypeList
=
[
{
label
:
'发货验收'
,
value
:
0
},
{
label
:
'收货验收'
,
value
:
1
},
{
label
:
'归还验收'
,
value
:
2
},
{
label
:
'平台收货'
,
value
:
3
},
];
const
DetailDelivery
:
React
.
FC
<
PropsType
>
=
(
props
)
=>
{
const
{
detail
}
=
props
;
// 验收信息列表
const
[
orderImageList
,
setOrderImageList
]
=
useState
<
ListType
>
([]);
// 获取订单验收信息
const
getOrderImageDetail
=
async
()
=>
{
const
res
=
await
OrderManageAPI
.
orderImageDetail
({
orderInfoId
:
detail
?.
id
});
if
(
res
&&
res
.
code
===
'200'
)
{
setOrderImageList
(
res
.
result
);
console
.
log
(
'获取订单验收信息 --->'
,
res
.
result
);
}
};
// 转换设备状态
const
getVcuSatus
=
(
code
:
number
)
=>
{
return
vcuSatusList
.
find
((
item
)
=>
item
.
value
===
code
)?.
label
||
code
;
};
// 转换标题
const
getVcuType
=
(
code
:
number
)
=>
{
return
vcuTypeList
.
find
((
item
)
=>
item
.
value
===
code
)?.
label
||
code
;
};
// componentDidMount
useEffect
(()
=>
{
if
(
!
detail
)
return
;
getOrderImageDetail
().
then
();
},
[
detail
]);
return
(
<
div
className=
{
'detail-delivery detail-half'
}
>
<
div
className=
{
'detail-title'
}
>
收货信息
</
div
>
<
div
className=
{
'detail-text'
}
>
收货人:测试
</
div
>
<
div
className=
{
'detail-text'
}
>
手机号:15889328503
</
div
>
<
div
className=
{
'detail-text'
}
>
收货地址:广东省深圳市南山区仙鼓路(南山区万科云城(仙鼓路西50米))
</
div
>
<
div
className=
{
'detail-title'
}
>
物流信息
</
div
>
<
div
className=
{
'detail-text'
}
>
物流单号:YT6732436785799
</
div
>
<
div
className=
{
'detail-text'
}
>
物流进度:--
</
div
>
<
div
className=
{
'detail-title'
}
>
验收信息
</
div
>
<
div
className=
{
'detail-text'
}
>
验收状态:已验收
</
div
>
<
div
className=
{
'detail-text'
}
>
验收凭证:
</
div
>
<
div
className=
{
'detail-image'
}
>
{
[
'https://pad-video-x.oss-cn-shenzhen.aliyuncs.com/file/infrastructure-05-05.png'
,
'https://pad-video-x.oss-cn-shenzhen.aliyuncs.com/file/infrastructure-05-05.png'
,
].
map
((
i
,
j
)
=>
(
<
Image
key=
{
j
}
className=
{
'image'
}
src=
{
i
}
alt=
'付款凭证'
/>
))
}
</
div
>
{
orderImageList
.
map
((
i
,
j
)
=>
(
<
div
key=
{
j
}
>
<
div
className=
{
'detail-title'
}
>
{
getVcuType
(
i
.
vcuType
)
}
</
div
>
<
div
className=
{
'detail-text'
}
>
验收状态:
{
getVcuSatus
(
i
.
vcuSatus
)
}
</
div
>
<
div
className=
{
'detail-text'
}
>
验收描述:
{
i
.
remark
||
'无'
}
</
div
>
<
div
className=
{
'detail-text'
}
>
验收凭证:
</
div
>
<
div
className=
{
'detail-image'
}
>
{
i
.
imgs
?.
map
((
i
,
j
)
=>
(
<
Image
key=
{
j
}
className=
{
'image'
}
src=
{
i
}
alt=
'付款凭证'
/>
))
}
{
!
i
.
imgs
&&
<
div
style=
{
{
height
:
'30px'
}
}
></
div
>
}
</
div
>
</
div
>
))
}
</
div
>
);
}
}
;
export
default
DetailDelivery
;
src/pages/orderManage/productOrder/comp/detailInformation/index.tsx
浏览文件 @
cbe2f726
import
{
useState
}
from
'react'
;
import
React
,
{
useEffect
,
useState
}
from
'react'
;
import
{
Table
}
from
'antd'
;
import
{
ColumnsType
}
from
'antd/es/table'
;
import
{
InterDataType
}
from
'~/api/interface'
;
import
{
orderDetailType
}
from
'~/api/interface/orderManageType'
;
import
dayjs
from
'dayjs'
;
// 表格数据类型
type
TableType
=
any
;
// 接口返回的类型
type
DataType
=
InterDataType
<
orderDetailType
>
;
// 参数类型
type
PropsType
=
{
detail
:
DataType
;
};
function
DetailInformation
()
{
const
DetailInformation
:
React
.
FC
<
PropsType
>
=
(
props
)
=>
{
const
{
detail
}
=
props
;
// 表格数据
const
[
tableData
]
=
useState
<
TableType
>
([{
id
:
1
}
]);
const
[
tableData
,
setTableData
]
=
useState
<
TableType
>
([
]);
// 表格结构
const
columns
:
ColumnsType
<
TableType
[
0
]
>
=
[
{
title
:
'商品'
,
dataIndex
:
'
userNam
e'
,
dataIndex
:
'
wareTitl
e'
,
align
:
'center'
,
render
:
(
_text
,
_record
)
=>
`--`
,
},
{
title
:
'单价(元)'
,
dataIndex
:
'u
serNam
e'
,
dataIndex
:
'u
nitPric
e'
,
align
:
'center'
,
render
:
(
_text
,
_record
)
=>
`--
`
,
render
:
(
text
)
=>
`¥
${
text
.
toLocaleString
()}
`
,
},
{
title
:
'数量'
,
dataIndex
:
'
userName
'
,
dataIndex
:
'
wareNum
'
,
align
:
'center'
,
render
:
(
_text
,
_record
)
=>
`--`
,
},
{
title
:
'订单状态'
,
dataIndex
:
'
userName
'
,
dataIndex
:
'
waiting
'
,
align
:
'center'
,
render
:
(
_text
,
_record
)
=>
`--`
,
},
{
title
:
'
实
收款'
,
dataIndex
:
'
userName
'
,
title
:
'
应
收款'
,
dataIndex
:
'
shouldPay
'
,
align
:
'center'
,
render
:
(
_text
,
_record
)
=>
`--
`
,
render
:
(
text
)
=>
`¥
${
text
.
toLocaleString
()}
`
,
},
];
useEffect
(()
=>
{
if
(
!
detail
)
return
;
setTableData
([
{
id
:
1
,
wareTitle
:
detail
?.
wareTitle
,
unitPrice
:
detail
?.
unitPrice
,
wareNum
:
detail
?.
wareNum
,
waiting
:
detail
?.
waiting
,
shouldPay
:
detail
?.
shouldPay
,
},
]);
},
[
detail
]);
return
(
<
div
className=
{
'detail-information'
}
>
<
div
className=
{
'detail-title'
}
>
订单明细
</
div
>
<
div
className=
{
'detail-text'
}
>
<
span
className=
{
'item'
}
>
订单编号:UD202302181041156087
</
span
>
<
span
className=
{
'item'
}
>
创建时间:2023-02-18 10:41:16
</
span
>
<
span
className=
{
'item'
}
>
订单编号:
{
detail
?.
orderNo
}
</
span
>
<
span
className=
{
'item'
}
style=
{
{
display
:
'none'
}
}
>
合同编号:UAV202334741131
</
span
>
<
span
className=
{
'item'
}
>
订单租期:
{
dayjs
(
detail
?.
startDate
).
format
(
'YYYY-MM-DD'
)
}
{
' ~ '
}
{
dayjs
(
detail
?.
endDate
).
format
(
'YYYY-MM-DD'
)
}
</
span
>
<
span
className=
{
'item'
}
>
创建时间:
{
detail
?.
createTime
}
</
span
>
</
div
>
<
Table
style=
{
{
margin
:
'20px auto'
,
width
:
'90%'
}
}
...
...
@@ -61,8 +87,11 @@ function DetailInformation() {
pagination=
{
false
}
// rowSelection={{ selectedRowKeys, onChange: onSelectChange }}
/>
<
div
className=
'detail-price'
>
实收款
<
span
className=
{
'num'
}
>
¥
{
detail
?.
actualPay
}
</
span
>
元
</
div
>
</
div
>
);
}
}
;
export
default
DetailInformation
;
src/pages/orderManage/productOrder/comp/detailPurchaser/index.tsx
浏览文件 @
cbe2f726
import
React
from
'react'
;
import
React
,
{
useEffect
}
from
'react'
;
import
{
Button
,
Image
}
from
'antd'
;
import
{
orderDetailType
}
from
'~/api/interface/orderManageType'
;
import
{
InterDataType
}
from
'~/api/interface'
;
import
{
OrderManageAPI
}
from
'~/api'
;
// 接口返回的类型
type
DataType
=
InterDataType
<
orderDetailType
>
;
...
...
@@ -12,11 +13,31 @@ type PropsType = {
const
DetailPurchaser
:
React
.
FC
<
PropsType
>
=
(
props
)
=>
{
const
{
detail
}
=
props
;
// 物流列表
const
[
expressList
,
setExpressList
]
=
React
.
useState
<
{
label
:
string
;
value
:
string
}[]
>
([]);
// 获取物流信息
const
getListExpressInfo
=
async
()
=>
{
const
res
=
await
OrderManageAPI
.
listExpressInfo
({});
if
(
res
&&
res
.
code
===
'200'
)
{
setExpressList
(
res
.
result
.
map
((
item
)
=>
({
label
:
item
.
exName
,
value
:
item
.
exCode
})));
// console.log(res);
}
};
// 转换物流信息
const
getExpressInfo
=
(
code
:
string
|
undefined
|
null
)
=>
{
return
expressList
.
find
((
item
)
=>
item
.
value
===
code
)?.
label
||
code
;
};
// componentDidMount
useEffect
(()
=>
{
getListExpressInfo
().
then
();
},
[]);
return
(
<
div
className=
{
'detail-purchaser detail-half'
}
>
<
div
className=
{
'detail-title'
}
>
买家信息
</
div
>
<
div
className=
{
'detail-text'
}
>
UID:
{
detail
?.
uid
}
</
div
>
<
div
className=
{
'detail-text'
}
>
企业: 浙江科比特创新科技有限公司
</
div
>
<
div
className=
{
'detail-text'
}
>
UID:
{
detail
?.
uid
}
</
div
>
<
div
className=
{
'detail-text'
}
>
姓名:
{
detail
?.
buyerName
}
</
div
>
<
div
className=
{
'detail-text'
}
>
手机号:
{
detail
?.
buyerPhone
}
</
div
>
{
/*<div className={'detail-text'}>企业: 浙江科比特创新科技有限公司</div>*/
}
<
div
className=
{
'detail-text'
}
>
备注:
{
detail
?.
remark
}
</
div
>
<
div
style=
{
{
display
:
'none'
}
}
>
...
...
@@ -61,6 +82,26 @@ const DetailPurchaser: React.FC<PropsType> = (props) => {
))
}
</
div
>
</
div
>
<
div
className=
{
'detail-title'
}
>
发货信息
</
div
>
<
div
className=
{
'detail-text'
}
>
收货人:
{
detail
?.
receipt
?.
takeName
}
</
div
>
<
div
className=
{
'detail-text'
}
>
手机号:
{
detail
?.
receipt
?.
takePhone
}
</
div
>
<
div
className=
{
'detail-text'
}
>
收货地址:
{
detail
?.
receipt
?.
detailAddress
}
</
div
>
<
div
className=
{
'detail-text'
}
>
物流单号:
{
detail
?.
receipt
?.
sendExNo
}
</
div
>
<
div
className=
{
'detail-text'
}
>
物流公司:
{
getExpressInfo
(
detail
?.
receipt
?.
sendExCode
)
}
</
div
>
<
div
className=
{
'detail-text'
}
>
物流进度:--
<
Button
type=
{
'link'
}
>
查看详情
</
Button
>
</
div
>
<
div
className=
{
'detail-title'
}
>
归还信息
</
div
>
<
div
className=
{
'detail-text'
}
>
收货人:
{
detail
?.
receipt
?.
renName
}
</
div
>
<
div
className=
{
'detail-text'
}
>
手机号:
{
detail
?.
receipt
?.
renPhone
}
</
div
>
<
div
className=
{
'detail-text'
}
>
收货地址:
{
detail
?.
receipt
?.
renAddress
}
</
div
>
<
div
className=
{
'detail-text'
}
>
物流单号:
{
detail
?.
receipt
?.
renExNo
}
</
div
>
<
div
className=
{
'detail-text'
}
>
物流公司:
{
getExpressInfo
(
detail
?.
receipt
?.
renExCode
)
}
</
div
>
<
div
className=
{
'detail-text'
}
>
物流进度:--
<
Button
type=
{
'link'
}
>
查看详情
</
Button
>
</
div
>
</
div
>
);
};
...
...
src/router/router.tsx
浏览文件 @
cbe2f726
...
...
@@ -68,6 +68,7 @@ const ProduceListView = React.lazy(() => import('~/pages/mallManage/produceManag
const
ProduceDetailView
=
React
.
lazy
(
()
=>
import
(
'~/pages/mallManage/produceManage/produceDetail'
),
);
//产品详情
const
MakeListView
=
React
.
lazy
(()
=>
import
(
'~/pages/mallManage/makeManage/makeList'
));
const
IndustryListView
=
React
.
lazy
(()
=>
import
(
'~/pages/mallManage/industryManage/industryList'
));
//行业列表
const
IndustryDetailView
=
React
.
lazy
(
()
=>
import
(
'~/pages/mallManage/industryManage/industryDetail'
),
...
...
@@ -312,10 +313,19 @@ export const routerList: Array<RouteObjectType> = [
},
},
{
path
:
'/mallManage/makeList'
,
element
:
withLoadingComponent
(<
MakeListView
/>),
meta
:
{
id
:
10170
,
icon
:
<
SmileOutlined
/>,
title
:
'品牌管理'
,
},
},
{
path
:
'/mallManage/industryList'
,
element
:
withLoadingComponent
(<
IndustryListView
/>),
meta
:
{
id
:
101
7
0
,
id
:
101
8
0
,
icon
:
<
SmileOutlined
/>,
title
:
'行业方案'
,
},
...
...
@@ -324,7 +334,7 @@ export const routerList: Array<RouteObjectType> = [
path
:
'/mallManage/industryDetail'
,
element
:
withLoadingComponent
(<
IndustryDetailView
/>),
meta
:
{
id
:
101
8
0
,
id
:
101
9
0
,
icon
:
<
SmileOutlined
/>,
title
:
'行业详情'
,
hidden
:
true
,
...
...
src/utils/index.ts
浏览文件 @
cbe2f726
...
...
@@ -33,3 +33,12 @@ export const urlToBase64 = (url: string) => {
};
});
};
// 过滤对象属性
export
const
filterObjAttr
=
(
obj
:
any
,
key
:
string
[])
=>
{
return
Object
.
keys
(
obj
).
reduce
((
pre
:
any
,
cur
:
string
)
=>
{
if
(
!
key
.
includes
(
cur
))
{
pre
[
cur
]
=
obj
[
cur
];
}
return
pre
;
},
{});
};
vite.config.ts
浏览文件 @
cbe2f726
...
...
@@ -11,7 +11,7 @@ export default defineConfig({
host
:
'0.0.0.0'
,
proxy
:
{
'/api'
:
{
// target: 'http://192.168.3.111:8077',
后端女
// target: 'http://192.168.3.111:8077',
// 后端女oms
target
:
'https://test.iuav.shop'
,
changeOrigin
:
true
,
rewrite
:
(
path
)
=>
path
.
replace
(
/^
\/
api/
,
''
),
...
...
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论