109 lines
2.7 KiB
JavaScript
109 lines
2.7 KiB
JavaScript
|
import { useRouter, useCallback } from "next/router";
|
|||
|
import "antd/dist/antd.css";
|
|||
|
|
|||
|
import { Image } from "antd";
|
|||
|
|
|||
|
import React, { useEffect, useMemo, useState } from "react";
|
|||
|
import {
|
|||
|
getShotImgByProductBatchNo,
|
|||
|
getShotImg,
|
|||
|
} from "../../../reportUtils/getQueryData";
|
|||
|
const { config: { mesUrl } = {} } = global;
|
|||
|
import _ from "lodash";
|
|||
|
|
|||
|
const ListItem = React.memo((props) => {
|
|||
|
const { itemData } = props;
|
|||
|
return (
|
|||
|
<div className="border-t-[1px] border-[#D2D2D2] px-4 pb-2">
|
|||
|
<div className=" flex flex-row space-x-7 py-2">
|
|||
|
<div>
|
|||
|
<label>工序:</label>
|
|||
|
<label>{itemData.operationName}</label>
|
|||
|
</div>
|
|||
|
<div>
|
|||
|
<label>质检单模板名称:</label>
|
|||
|
<label>{itemData.templateName}</label>
|
|||
|
</div>
|
|||
|
<div>
|
|||
|
<label>拍照时间:</label>
|
|||
|
<label>{itemData.imgShotTime}</label>
|
|||
|
</div>
|
|||
|
</div>
|
|||
|
<div className="flex flex-row space-x-7 ">
|
|||
|
<Imag imgurls={itemData.imgPath}></Imag>
|
|||
|
</div>
|
|||
|
</div>
|
|||
|
);
|
|||
|
});
|
|||
|
function Imag(props) {
|
|||
|
const { imgurls } = props;
|
|||
|
const [imglist, setImgList] = useState([]);
|
|||
|
useEffect(() => {
|
|||
|
setImgList([]);
|
|||
|
imgurls.map((imgsrc) => {
|
|||
|
getShotImg(mesUrl + imgsrc).then((rep) => {
|
|||
|
setImgList((prev) => {
|
|||
|
return [...prev, URL.createObjectURL(rep)];
|
|||
|
});
|
|||
|
});
|
|||
|
});
|
|||
|
}, []);
|
|||
|
return imglist.map((imgsrc) => {
|
|||
|
return (
|
|||
|
<Image
|
|||
|
width={200}
|
|||
|
height={240}
|
|||
|
// className=" w-24 h-32 border"
|
|||
|
src={imgsrc ?? "../img/noImg.png"}
|
|||
|
/>
|
|||
|
);
|
|||
|
});
|
|||
|
}
|
|||
|
|
|||
|
const List = React.memo((props) => {
|
|||
|
const { dataSource } = props;
|
|||
|
return (
|
|||
|
<div className=" ">
|
|||
|
{dataSource?.map((item) => {
|
|||
|
return <ListItem itemData={item}></ListItem>;
|
|||
|
})}
|
|||
|
</div>
|
|||
|
);
|
|||
|
});
|
|||
|
const Header = React.memo((props) => {
|
|||
|
const { productBatchNo } = props;
|
|||
|
return (
|
|||
|
<div className=" py-6 px-4">
|
|||
|
<label className=" ">批次生产单:</label>
|
|||
|
<label>{productBatchNo}</label>
|
|||
|
</div>
|
|||
|
);
|
|||
|
});
|
|||
|
const getQueryVariable = (name) => {
|
|||
|
var reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)", "i");
|
|||
|
var r = window.location.search.substr(1).match(reg);
|
|||
|
if (r != null) return decodeURI(r[2]);
|
|||
|
return null;
|
|||
|
};
|
|||
|
|
|||
|
export default function PicView() {
|
|||
|
const [data, setData] = useState([]);
|
|||
|
const [productBatchNo, setProductBatchNo] = useState([]);
|
|||
|
useEffect(() => {
|
|||
|
setProductBatchNo(getQueryVariable("productBatchNo"));
|
|||
|
}, []);
|
|||
|
useEffect(() => {
|
|||
|
getShotImgByProductBatchNo(productBatchNo).then((json) => {
|
|||
|
setData(json);
|
|||
|
});
|
|||
|
}, [productBatchNo]);
|
|||
|
|
|||
|
return (
|
|||
|
<div className="font-bold">
|
|||
|
|
|||
|
<Header productBatchNo={data.productBatchNo}></Header>
|
|||
|
<List dataSource={data.imgItemList}></List>
|
|||
|
</div>
|
|||
|
);
|
|||
|
}
|