提交 0b24ec1d 作者: 曹云

Merge branch 'master' of ssh://git.mmcuav.cn:8222/iuav/csf-web into caoyun

......@@ -23,7 +23,6 @@ export default function PublishModal(props: Props) {
const position = useGeolocation();
const { reloadRequirements, setReloadRequirements } =
useContext(CommonContext);
console.log("position", position);
useEffect(() => {
api.listType().then((res) => {
......
......@@ -21,9 +21,13 @@ import Router from "next/router";
import { UserContext } from "~/lib/userProvider";
const beforeUpload = (file: RcFile) => {
const isJpgOrPng = file.type === "image/jpeg" || file.type === "image/png";
const isJpgOrPng =
file.type === "image/jpeg" ||
file.type === "image/png" ||
file.type === "image/bmp" ||
file.type === "image/gif"
if (!isJpgOrPng) {
message.error("You can only upload JPG/PNG file!");
message.error("请上传10M以内的JPG、JPEG、BMP、GIF、PNG格式图片");
}
//限制上传10M
const isLt2M = file.size / 1024 / 1024 < 10;
......
import {
Button,
Col,
Image,
message,
Modal,
Row,
Space,
InputNumber,
} from 'antd'
import { Dispatch, SetStateAction, useEffect, useState } from 'react'
import errImg from '~/assets/errImg'
import { GetLeaseGoodsDetailResp, ProductSpecList } from '../../api'
import styles from './index.module.scss'
import api from './api'
import Item from 'antd/es/list/Item'
import { Button, Col, Image, message, Modal, Row, Space } from "antd";
import { useEffect, useState } from "react";
import errImg from "~/assets/errImg";
import { GetLeaseGoodsDetailResp, ProductSpecList } from "../../api";
import styles from "./index.module.scss";
import api from "./api";
import Item from "antd/es/list/Item";
type Props = {
open?: boolean
onOk?: () => void
onCancel: () => void
detail: GetLeaseGoodsDetailResp | null
setIsorderForGoods: Dispatch<SetStateAction<boolean>>
setMallDetail: Dispatch<SetStateAction<any>>
}
open?: boolean;
onOk?: () => void;
onCancel: () => void;
detail: GetLeaseGoodsDetailResp | null;
onChange?: (checkItems: ProductSpecList[]) => void;
};
export default function IntentionModal(props: Props) {
const [checkedMap, setCheckedMap] = useState<{ string?: boolean }>({}) //通过索引记录选中的产品规格 例: {'1,1': true|false} props.detail?.goodsSpec[1].productSpecList[1]
const [checkItems, setCheckItems] = useState<ProductSpecList[]>([]) //选中的规格
const [loading, setLoading] = useState(false) //下单中
const [numValue, setNumValue] = useState<number | null>(1) //数量
const [checkedMap, setCheckedMap] = useState<{ string?: boolean }>({}); //通过索引记录选中的产品规格 例: {'1,1': true|false} props.detail?.goodsSpec[1].productSpecList[1]
const [checkItems, setCheckItems] = useState<ProductSpecList[]>([]); //选中的规格
const [loading, setLoading] = useState(false); //下单中
useEffect(() => {
let list: ProductSpecList[] = []
let list: ProductSpecList[] = [];
Object.keys(checkedMap).forEach((key) => {
if (checkedMap[key as keyof typeof checkedMap]) {
let arr = key.split(',')
let arr = key.split(",");
let item =
props.detail?.goodsSpec[Number(arr[0])].productSpecList[
Number(arr[1])
]
];
if (item) {
list.push(item)
list.push(item);
}
}
})
setCheckItems(list)
setNumValue(1)
}, [checkedMap])
});
setCheckItems(list);
props.onChange && props.onChange(list);
}, [checkedMap]);
//添加规格到购物车
function addProductSpec(goodsSpecIndex: number, productSpecIndex: number) {
let temp = {}
let temp = {};
//@ts-ignore
temp[`${goodsSpecIndex},${productSpecIndex}`] =
//@ts-ignore
!checkedMap[`${goodsSpecIndex},${productSpecIndex}`]
!checkedMap[`${goodsSpecIndex},${productSpecIndex}`];
setCheckedMap({
...checkedMap,
...temp,
})
}
//数量
const onChangeNum = (value: number | null) => {
console.log('changed', value)
setNumValue(value)
});
}
//提交
function onSubmit() {
let buyNum = 0
let mallSpecIds: number[] = []
let buyNum = 0;
let mallSpecIds: number[] = [];
Object.keys(checkedMap).forEach((key) => {
if (checkedMap[key as keyof typeof checkedMap]) {
buyNum++
let arr = key.split(',')
buyNum++;
let arr = key.split(",");
let specId =
props.detail?.goodsSpec[Number(arr[0])].productSpecList[
Number(arr[1])
].id
].id;
if (specId) {
mallSpecIds.push(specId)
mallSpecIds.push(specId);
}
}
})
});
if (buyNum > 0) {
setLoading(true)
setLoading(true);
api
.commitMallOrder({
buyNum: numValue || 1,
buyNum,
directoryId: 1,
goodsInfoId: props.detail!.id,
mallSpecIds,
userAddressId: 1,
})
.then((res) => {
if (res.code == '200') {
message.success('提交意向成功')
if (res.code == "200") {
message.success("提交意向成功");
//重置为未选中
let temp = {
...checkedMap,
}
};
Object.keys(temp).forEach((key) => {
temp[key as keyof typeof temp] = false
})
setCheckedMap(temp)
props.onCancel()
props.setIsorderForGoods(true)
props.setMallDetail({
...res.result,
buyNum: numValue || 1,
directoryId: 1,
goodsInfoId: props.detail!.id,
mallSpecIds,
userAddressId: 1,
})
temp[key as keyof typeof temp] = false;
});
setCheckedMap(temp);
props.onCancel();
} else {
}
setLoading(false)
setLoading(false);
})
.catch((err) => {
message.error('提交意向失败')
console.log('err', err)
setLoading(false)
})
message.error("提交意向失败");
console.log("err", err);
setLoading(false);
});
}
}
......@@ -136,20 +111,21 @@ export default function IntentionModal(props: Props) {
style={{ padding: 0 }}
className={styles.model}
footer={
<div style={{ padding: '13px 36px' }}>
<div style={{ padding: "13px 36px" }}>
<Button
type="primary"
className={styles.font5}
style={{ width: '100%', height: 44 }}
style={{ width: "100%", height: 44 }}
onClick={onSubmit}
loading={loading}
disabled={checkItems.length == 0}
>
提交意向
</Button>
</div>
}
>
<Row style={{ padding: '22px 39px 12px 39px' }} wrap={false}>
<Row style={{ padding: "22px 39px 12px 39px" }} wrap={false}>
<Col>
<Image
width={100}
......@@ -170,12 +146,12 @@ export default function IntentionModal(props: Props) {
className={`${styles.font2} ${styles.ellipsis2}`}
style={{ marginTop: 7 }}
>
已选:{' '}
已选:{" "}
{checkItems
.map((item) => {
return item.specName
return item.specName;
})
.join('+')}
.join("+")}
</div>
</Col>
</Row>
......@@ -193,7 +169,7 @@ export default function IntentionModal(props: Props) {
>
{item.goodsSpecName}
</div>
<Space size={10} direction="vertical" style={{ width: '100%' }}>
<Space size={10} direction="vertical" style={{ width: "100%" }}>
{item.productSpecList?.map((product, productSpecIndex) => {
return (
<Row
......@@ -206,10 +182,10 @@ export default function IntentionModal(props: Props) {
border: checkedMap[
`${goodsSpecIndex},${productSpecIndex}`
]
? '1px solid #FF552D'
: '1px solid #d6d6d6',
? "1px solid #FF552D"
: "1px solid #d6d6d6",
height: 50,
cursor: 'pointer',
cursor: "pointer",
}}
onClick={() =>
addProductSpec(goodsSpecIndex, productSpecIndex)
......@@ -231,27 +207,14 @@ export default function IntentionModal(props: Props) {
{product.specName}
</Col>
</Row>
)
);
})}
</Space>
</div>
)
);
})}
<div className={styles.numBox}>
<div className={styles.numLeft}>
<div className={styles.label}>租赁数量</div>
</div>
<div className={styles.numRight}>
<InputNumber
min={1}
max={100}
value={numValue}
onChange={onChangeNum}
/>
</div>
</div>
</div>
</div>
</Modal>
)
);
}
......@@ -177,7 +177,7 @@ export default function OrderForGoods(props: PropsBox) {
</div>
</div>
{mallDetail.orderGoodsProdDetailDTOS.map((item: any) => (
<div className="table-body">
<div className="table-body" key={item.id}>
<div className="body-item article" style={{ width: 290 }}>
<div className="image">
<Image
......
......@@ -26,15 +26,15 @@ const items: MenuItem[] = [
getItem("服务订单", "/personalCenter/servicesOrders"),
getItem("租赁订单", "/personalCenter/leasingOrders"),
getItem("商城订单", "/personalCenter/mallOrders"),
getItem("培训订单", "/personalCenter/trainOrders"),
// getItem("培训订单", "/personalCenter/trainOrders"),
]),
getItem("账户信息", "2"),
/* getItem("账户信息", "2"),
getItem("优惠券卡包", "3"),
getItem("福利活动", "4"),
getItem("身份认证", "5"),
getItem("客服中心", "6"),
getItem("推广海报", "7"),
getItem("副业赚钱", "8"),
getItem("副业赚钱", "8"), */
];
type MenuItem = Required<MenuProps>["items"][number];
......
......@@ -20,6 +20,7 @@ import api, { LeasingList, ListTranStatusResp } from "./api";
import moment from "moment";
import PayModal from "./components/payModal";
import RefundModal from "./components/refundModal";
import Moment from 'moment';
const items: TabsProps["items"] = [
{
......@@ -221,7 +222,15 @@ export default function LeasingOrders() {
background: "#EBF8FF",
}}
>
<div className={styles.font2}>2021-10-21 12:21:10</div>
<div className={styles.font2}>
<Space size={10}>
<div>
{Moment(item.startDate).format("YYYY-MM-DD")}{" "}
{Moment(item.endDate).format("YYYY-MM-DD")}
</div>
<div>订单编号: {item.orderNo}</div>
</Space>{" "}
</div>
<div className={styles.font3}>
{
tranStatusMap.find(
......
......@@ -141,8 +141,19 @@ export default function LeasingOrder() {
background: "#EBF8FF",
}}
>
<div className={styles.font2}>{item.createTime}</div>
<div className={styles.font3}>{tranStatusMap.find(status => status.code === item.statusCode)?.status}</div>
<div className={styles.font2}>
<Space size={10}>
<div>{item.createTime}</div>
<div>订单编号: {item.orderNo}</div>
</Space>
</div>
<div className={styles.font3}>
{
tranStatusMap.find(
(status) => status.code === item.statusCode
)?.status
}
</div>
</Row>
<Row
style={{ minHeight: 100, border: "1px solid #D0EAF5" }}
......
......@@ -15,6 +15,7 @@ export interface QueryOrderTaskListResp {
}
export interface OrderList {
id: number;
address: string;
city: string;
endTime: string;
......@@ -29,6 +30,7 @@ export interface OrderList {
province: string;
startTime: string;
taskDescription: string;
coverPlan: string;
}
......
......@@ -18,7 +18,7 @@ import LayoutView from "~/components/layout";
import Sider from "../components/sider";
import api, { OrderList, GetServiceOrderStatusResp } from "./api";
import styles from "./index.module.scss";
import Moment from 'moment';
import Moment from "moment";
const items: TabsProps["items"] = [
{
......@@ -55,7 +55,9 @@ export default function ServicesOrder() {
const [orderList, setOrderList] = useState<OrderList[]>([]);
const [loading, setLoading] = useState(false);
const [orderNo, setOrderNo] = useState<string | undefined>();
const [tranStatusMap, setTranStatusMap] = useState<GetServiceOrderStatusResp[]>([]); //订单状态字典
const [tranStatusMap, setTranStatusMap] = useState<
GetServiceOrderStatusResp[]
>([]); //订单状态字典
//获取订单状态字典
useEffect(() => {
......@@ -87,6 +89,7 @@ export default function ServicesOrder() {
}
)
.then((res) => {
console.log(", res.result?.list", res.result?.list);
setOrderList(res.result?.list || []);
setTotal(res.result?.totalCount || 0);
setLoading(false);
......@@ -132,7 +135,7 @@ export default function ServicesOrder() {
<ul className={styles.orderList} style={{ minHeight: 650 }}>
{orderList.map((item) => {
return (
<li key={item.inspectionId} className={styles.orderItem}>
<li key={item.id} className={styles.orderItem}>
<Row
justify="space-between"
align="middle"
......@@ -143,8 +146,13 @@ export default function ServicesOrder() {
}}
>
<div className={styles.font2}>
{Moment(item.startTime).format("YYYY/MM/DD")} -{" "}
{Moment(item.endTime).format("YYYY/MM/DD")}
<Space size={10}>
<div>
{Moment(item.startTime).format("YYYY-MM-DD")}{" "}
{Moment(item.endTime).format("YYYY-MM-DD")}
</div>
<div>订单编号: {item.orderNo}</div>
</Space>
</div>
<div className={styles.font3}>
{
......@@ -165,7 +173,7 @@ export default function ServicesOrder() {
height={80}
preview={false}
fallback={errImg}
src={item.images[0]}
src={item.coverPlan}
></Image>
</div>
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论