提交 9ca00270 作者: 翁进城

商城接口更新1.0.1

上级 1ab84db7
import request, { Response } from '~/api/request';
export interface ListPageGoodsInfoParams {
"brandId"?: number,
"districtId"?: number,
"modelId"?: number,
"pageNo": number,
"pageSize": number,
"partsId"?: number,
"productCategoryId"?: number,
"qualityId"?: number
export interface DeviceListParams {
categoryId?: any[];
pageNo: number;
pageSize: number;
provinceId?: number;
type: number;
}
export interface Goods {
"createTime": string,
"directoryId": number,
"directoryName": string,
"goodsName": string,
"goodsOneLevelTypeName": string,
"goodsTwoLevelTypeName": string,
"id": number,
"imgUrl": string,
"isCoupons": number,
"status": number
id: number;
goodsName: string;
images: string;
price?: any;
}
export interface ListPageGoodsInfoResp {
export interface DeviceListResp {
"pageNo": 1,
"pageSize": 10,
"list": Array<Goods>,
......@@ -39,8 +30,8 @@ export interface Ad {
export default {
//web-商品信息-分页
listPageGoodsInfo: (params: ListPageGoodsInfoParams, options = {}): Promise<Response<ListPageGoodsInfoResp>> => {
return request('/pms/webProductMall/listPageGoodsInfo', 'post', params, options)
deviceList: (params: DeviceListParams, options = {}): Promise<Response<DeviceListResp>> => {
return request('/pms/product/mall/deviceList', 'post', params, options)
},
//产品商城广告位
ad: (): Promise<Response<Array<Ad>>> => {
......
......@@ -13,7 +13,7 @@ import { Navigation } from "swiper";
// Import Swiper styles
import "swiper/css";
import "swiper/css/navigation";
import api, { GetAppGoodsInfoDetailResult } from "./api";
import api, { GetLeaseGoodsDetailResp } from "./api";
import IntentionModal from "./components/intentionModal";
import { UserContext } from "~/lib/userProvider";
......@@ -22,7 +22,7 @@ export default function MallDetail() {
const [visible, setVisible] = useState(false); //商品图预览
const router = useRouter();
const [id, setId] = useState<number | null>(null);
const [detail, setDetail] = useState<GetAppGoodsInfoDetailResult | null>(
const [detail, setDetail] = useState<GetLeaseGoodsDetailResp | null>(
null
); //详情数据
const [intentionModalOpen, setIntentionModalOpen] = useState(false); //意向弹窗
......@@ -53,8 +53,8 @@ export default function MallDetail() {
useEffect(() => {
if (id) {
api
.getAppGoodsInfoDetail({
id: id,
.getLeaseGoodsDetail({
goodsId: id,
})
.then((res) => {
setDetail(res.result || null);
......@@ -132,7 +132,7 @@ export default function MallDetail() {
className={`${styles.font2} ${styles.ellipsis}`}
style={{ height: 22 }}
>
{detail?.goodsDesc}
{detail?.goodsDetail?.goodsDesc}
</div>
<Space
size={24}
......
import request, { Response } from "~/api/request"
export interface GetAppGoodsInfoDetailParams {
id: number
export interface GetLeaseGoodsDetailParams {
goodsId: number
}
export interface GetAppGoodsInfoDetailResult {
export interface GetLeaseGoodsDetailResp {
id: number;
pid?: number;
goodsName?: string;
shareFlyServiceId?: number;
repoId?: number;
goodsSpec?: GoodsSpec[];
images?: Image[];
goodsVideo?: string;
goodsVideoId?: number;
goodsDetail?: GoodsDetail;
sortTypeId?: number;
masterTypeId?: number;
slaveTypeId?: number;
tag?: string;
shelfStatus?: number;
otherService?: OtherService[];
question?: Question[];
goodsDesc?: string
images: Image[];
goodsVideo?: any;
goodsVideoId?: any;
goodsName: string;
goodsNo: string;
goodsDetail: GoodsDetail;
directoryId: number;
categoryByOne: number;
categoryByTwo?: any;
tag?: any;
shelfStatus: number;
goodsSpec: GoodsSpec[];
otherService: OtherService[];
price?: any;
}
export interface GoodsDetail {
id: number;
goodsDesc: string;
content: string;
remark?: any;
}
export interface Image {
export interface OtherService {
id: number;
imgUrl: string;
imgType: number;
saleServiceId: number;
serviceName: string;
}
export interface GoodsSpec {
id: number;
goodsSpecName: string;
goodsTypeId: number;
categoryId: number;
typeName: string;
skuId: number;
brandInfoId: number;
brandInfoId?: any;
skuName: string;
productSpecList: ProductSpec[];
productSpecList: ProductSpecList[];
industrySpecList?: any;
chooseType: number;
skuUnitId: number;
unitName: string;
must: number;
flag?: any;
flag: number;
}
export interface ProductSpec {
export interface ProductSpecList {
id: number;
productSpec: number;
productSkuId: number;
......@@ -64,26 +54,33 @@ export interface ProductSpec {
partNo: string;
versionDesc: string;
createTime?: any;
productSpecCPQVO?: any;
productSpecCPQVO: ProductSpecCPQVO;
}
export interface Question {
answer: string,
id: number,
question: string
export interface ProductSpecCPQVO {
productSpecId: number;
type: number;
leaseTerm?: any;
specPrice: any[];
}
//其他服务: 1:免费配送,2:专业飞手培训2日, 3:半年保修, 4:一年保修
export interface OtherService {
id: number,
saleServiceId: number,
serviceName: string
export interface GoodsDetail {
id: number;
goodsDesc: string;
content: string;
remark?: any;
}
export interface Image {
id: number;
imgUrl: string;
imgType: number;
}
export default {
//web-获取商品详细信息--共多少种选择
getAppGoodsInfoDetail(params: GetAppGoodsInfoDetailParams): Promise<Response<GetAppGoodsInfoDetailResult>> {
return request('/pms/webProductMall/getAppGoodsInfoDetail', 'get', params)
getLeaseGoodsDetail(params: GetLeaseGoodsDetailParams): Promise<Response<GetLeaseGoodsDetailResp>> {
return request('/pms/product/mall/getLeaseGoodsDetail', 'get', params)
}
}
\ No newline at end of file
import { Button, Col, Image, Modal, Row, Space } from "antd";
import { useState } from "react";
import errImg from "~/assets/errImg";
import { GetAppGoodsInfoDetailResult } from "../../api";
import { GetLeaseGoodsDetailResp } from "../../api";
import styles from "./index.module.scss";
type Props = {
open?: boolean;
onOk?: (e: React.MouseEvent<HTMLButtonElement>) => void;
onCancel: (e: React.MouseEvent<HTMLButtonElement>) => void;
detail: GetAppGoodsInfoDetailResult | null;
detail: GetLeaseGoodsDetailResp | null;
};
export default function IntentionModal(props: Props) {
const [checkedMap, setCheckedMap] = useState<{ string?: boolean }>({}); //通过索引记录选中的产品规格 例: {'1,1': true|false}
......
......@@ -4,7 +4,7 @@ import Layout from "~/components/layout";
import styles from "./index.module.scss";
import { useRouter } from "next/router";
import Filter, { AdapterResult, FilterResult } from "~/components/filter";
import api, { Ad, Goods, ListPageGoodsInfoParams } from "./api";
import api, { Ad, Goods } from "./api";
import errImg from "~/assets/errImg";
// 此函数在构建时被调用
......@@ -35,16 +35,17 @@ export default function Mall(props: Props) {
setAbort(new AbortController());
}, [filterResult, pageParams]);
//端口列表请求
//商品列表请求
useEffect(() => {
if (!abort) {
return;
}
setLoading(true);
api
.listPageGoodsInfo(
.deviceList(
{
...filterResult,
provinceId: filterResult.districtId,
type: 0,
...pageParams,
},
{
......@@ -83,7 +84,7 @@ export default function Mall(props: Props) {
<Layout>
<div className="page" style={{ paddingTop: "18px" }}>
<Filter
types={["类目", "地域", "品牌", "部件",/* "型号", "成色" */]}
types={["类目", "地域", "品牌", "部件" /* "型号", "成色" */]}
showResultItem
onChange={onFilterChange}
></Filter>
......@@ -91,6 +92,7 @@ export default function Mall(props: Props) {
<div className={styles.productList}>
<div className={styles.main}>
<div className={styles.listContent}>
<Spin spinning={loading} delay={500}>
<ul className={styles.listWrap}>
{productList.map((item, i) => {
return (
......@@ -102,7 +104,7 @@ export default function Mall(props: Props) {
<div className={styles.imgBox}>
<Image
alt=""
src={item.imgUrl}
src={item.images}
className={styles.img}
width={116}
height={116}
......@@ -127,6 +129,8 @@ export default function Mall(props: Props) {
></Empty>
)}
</ul>
</Spin>
<div className={styles.paginationPage}>
<Pagination
current={pageParams.pageNo}
......
import request, { Response } from "~/api/request"
export interface listPageParams {
export interface ListPageParams {
keyword?: string,
showType: number,
pageNo: number;
pageSize: number;
}
export interface listPageResp {
export interface ListPageResp {
pageNo: number;
pageSize: number;
list: OrderList[];
......@@ -78,21 +78,20 @@ interface OgSkuSpecDTOList {
}
export interface ListTranStatusResp {
export interface ListStatusResp {
status: string;
doing: string;
waiting: string;
leaseOrderStatus: string;
code: number;
nextCode: number;
}
export default {
//v1.0.0订单列表-查询
listPage(params: listPageParams, options: any): Promise<Response<listPageResp>> {
listPage(params: ListPageParams, options: any): Promise<Response<ListPageResp>> {
return request('/oms/app-order/listPage', 'get', params, options)
},
//订单状态-字典
listTranStatus(): Promise<Response<ListTranStatusResp[]>> {
return request('/oms/RentalOrders/listTranStatus', 'get');
listStatus(): Promise<Response<ListStatusResp[]>> {
return request('/oms/mallorder/listStatus', 'get');
}
}
\ No newline at end of file
......@@ -16,7 +16,7 @@ import errImg from "~/assets/errImg";
import Right from "~/components/contentBox/right";
import LayoutView from "~/components/layout";
import Sider from "../components/sider";
import api, { OrderList, ListTranStatusResp } from "./api";
import api, { OrderList, MallorderResp } from "./api";
import styles from "./index.module.scss";
const items: TabsProps["items"] = [
......@@ -54,6 +54,14 @@ export default function LeasingOrder() {
const [orderList, setOrderList] = useState<OrderList[]>([]);
const [loading, setLoading] = useState(false);
const [orderNo, setOrderNo] = useState<string | undefined>();
const [tranStatusMap, setTranStatusMap] = useState<ListStatusResp[]>([]); //订单状态字典
//获取订单状态字典
useEffect(() => {
api.listStatus().then((res) => {
setTranStatusMap(res.result || []);
});
}, []);
useEffect(() => {
//中断前一次列表请求
......@@ -134,7 +142,7 @@ export default function LeasingOrder() {
}}
>
<div className={styles.font2}>{item.createTime}</div>
<div className={styles.font3}>待分配运营</div>
<div className={styles.font3}>{tranStatusMap.find(status => status.code === item.statusCode)?.status}</div>
</Row>
<Row
style={{ minHeight: 100, border: "1px solid #D0EAF5" }}
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论