import React, { useEffect, useMemo, useRef, useState } from "react"; import { Dropdown, Menu, Button, message, Table } from "antd"; import AutoTable from "@/components/AutoTable"; // import defaultFields from "./fields"; import { doFetch } from "@/utils/doFetch"; import DrawInitForm from "@/components/DrawInitForm"; import getPrem from "@/utils/getPrem"; //权限判断fn import { useReactToPrint } from "react-to-print"; import { useModel } from "umi"; import PrintDom from "./printdom"; import { PrintQrCode } from "@/components/PrintCode"; import { EditableProTable } from "@ant-design/pro-table"; const keytoval = { one: 1, two: 2, three: 3, four: 4, }, items = [ { key: "one", label: 采购入库, }, { key: "two", label: 生产入库, }, { key: "three", label: 退料入库, }, { key: "four", label: 其他入库, }, ], itemz = { one: "采购入库", two: "生产入库", three: "退料入库", four: "其他入库", }; const EditUpload = ({ record, fid, storeId }) => { console.log(123); const [value, setvalue] = useState({ [record.id]: record.uploadList, }); const { initialState, setInitialState } = useModel("@@initialState"); const [kcList, setkcList] = useState([]); const fetchRequest = async (params) => { let newParams = JSON.parse(JSON.stringify(params)); let res = await doFetch({ url: "/ngic-auth/sysStorePosition/queryUseAbleSelection", params: { storeId: newParams.storeId }, }); setkcList(res?.data?.dataList); }; useEffect(() => { if (!value) { return; } let newlist = Object.keys(value)?.map?.((it) => { let id = it; let newArr = value[id]?.filter((it) => typeof it.id == "number") ?? []; return { id, uploadList: newArr.map((its) => { return { storePositionId: its?.storePositionId, instroeNum: its?.instroeNum, remark: its?.remark, }; }), }; }) ?? []; setInitialState((s) => { return { ...s, submit: { id: fid, materialList: s.submit && s?.submit?.materialList ? s?.submit?.materialList ?.filter( (it) => newlist.map((item) => item.id).indexOf(it.id) == -1 ) ?.concat(newlist) ?.filter((it) => it.uploadList?.length > 0) : [], }, }; }); // fetchRequest(params); }, [value]); useEffect(() => { fetchRequest({ storeId, }); }, []); return ( 库位名称 * ), dataIndex: "storePositionName", key: "storePositionId", search: false, valueType: "select", // params: {}, // request: async (params) => { // let newParams = JSON.parse(JSON.stringify(params)); // let res = await doFetch({ // url: "/ngic-auth/sysStorePosition/queryUseAbleSelection", // params: { storeId: newParams.storeId }, // }); // return res?.data?.dataList; // }, fieldProps: { options: kcList, }, editable: (text, record, index) => { return !record.materieOutstoreDetailId; }, params: { storeId: storeId }, formItemProps: () => { return { rules: [{ required: true, message: "此项为必填项" }], }; }, }, { title: ( 上架数量 * ), dataIndex: "instroeNum", key: "instroeNum", search: false, editable: (text, record, index) => { return !record.materieOutstoreDetailId; }, valueType: "digit", formItemProps: () => { return { rules: [{ required: true, message: "此项为必填项" }], }; }, }, { title: "备注", dataIndex: "remark", key: "remark", search: false, editable: (text, record, index) => { return !record.materieOutstoreDetailId; }, }, { title: "操作", valueType: "option", width: 70, render: (text, record, _, action) => [ typeof record.id == "number" && ( {}}> 删除 ), ], }, ]} value={value[record.id]} recordCreatorProps={{ newRecordType: "dataSource", record: () => ({ id: Date.now(), }), }} editable={{ type: "multiple", actionRender: (row, config, defaultDoms) => { return [defaultDoms.delete]; }, onValuesChange: async (records, recordList) => { setvalue((s) => { return { ...s, [record.id]: recordList, }; }); }, }} pagination={false} /> ); }; function Instore(props) { const { initialState, setInitialState } = useModel("@@initialState"); const [activeTabKey, onTabChange] = useState("1"); const [selectKeys, setSelectKeys] = useState([]); let [drawprops, setdrawprops] = useState({ title: "", visible: false, onClose: () => { setdrawprops((s) => ({ ...s, visible: false, fields: {}, })); }, fields: {}, width: 1200, }), actionRef = useRef(), ChildRef = null, printRef = useRef(), mutiPrintRef = useRef(); //操作完成后刷新 function reload() { actionRef.current.reload(); ChildRef?.onRefresh(); message.success("操作成功"); setdrawprops((s) => ({ ...s, visible: false, fields: {}, })); } const handlePrint = useReactToPrint({ content: () => printRef.current.dom.current, }); const mutiPrint = useReactToPrint({ content: () => mutiPrintRef.current.dom.current, }); // const [PchList, setPchList] = useState(); // useEffect(() => { // if (drawprops?.visible) { // doFetch({ // url: "/ngic-workmanship/wmsMaterieLabel/selectionByStatus", // params: { status: "1" }, // }).then((res) => { // setPchList(res?.data?.dataList); // }); // } // }, [drawprops?.visible]); const defaultFields = useMemo(() => { // let option = { // options: PchList, // allowClear: true, // showSearch: true, // }; // console.log("pchlist:", option); return { four: { materieInstoreNo: { value: null, type: "input", title: "入库单号", name: ["materieInstoreNo"], required: false, placeholder: "不填写系统自动生成", }, storeId: { value: null, type: "select", title: "入库仓库", name: ["storeId"], required: true, options: { database: () => doFetch({ url: "/ngic-auth/sysStore/selectionBoxAll", params: {}, }), params: {}, }, }, remark: { value: null, type: "textarea", title: "备注", name: ["remark"], required: false, col: { span: 24, }, }, materialList: { value: [], title: "物料信息", type: "table", col: { span: 24 }, name: ["materialList"], required: true, linkconfig: { urlchangeval: { //根据url接口 改变某个value database: (params) => doFetch({ url: "/ngic-workmanship/wmsMaterieLabel/queryByLabelId", params, }), params: { labelId: "linked" }, effectresult: { productionUnitName: "productionUnitName", materieCode: "materieCode", supplierId: "supplierId", supplierName: "supplierName", width: "width", ironLoss: "ironLoss", sheetThickness: "sheetThickness", shopSign: "shopSign", weight: "weight", specificationModel: "specificationModel", materieName: "materieName", }, }, }, columns: [ { title: ( 批次号 * ), dataIndex: "labelId", key: "labelId", valueType: "select", width: 180, params: {}, request: async (params) => { let res = await doFetch({ url: "/ngic-workmanship/wmsMaterieLabel/selectionByStatus", params: { status: "1" }, }); return res?.data?.dataList; }, formItemProps: () => { return { rules: [{ required: true, message: "此项为必填项" }], }; }, }, { title: ( 物料编码-名称 * ), dataIndex: "materieCode", key: "materieCode", width: 200, valueType: "select", readonly: true, renderFormItem: ({ entry }) => { return ( {entry?.materieCode}-{entry?.materieName} ); }, }, { title: "规格型号", dataIndex: "specificationModel", key: "specificationModel", readonly: true, width: 140, }, { title: "供应商", dataIndex: "supplierName", key: "supplierName", readonly: "supplierName", }, { title: "宽度", dataIndex: "width", key: "width", readonly: "width", }, { title: "铁损", dataIndex: "ironLoss", key: "ironLoss", readonly: "ironLoss", }, { title: "片厚", dataIndex: "sheetThickness", key: "sheetThickness", readonly: "sheetThickness", }, { title: "牌号", dataIndex: "shopSign", key: "shopSign", readonly: "shopSign", }, { title: "入库数量", dataIndex: "weight", key: "weight", readonly: "weight", }, { title: "库存单位", dataIndex: "productionUnitName", key: "productionUnitName", readonly: "productionUnitName", }, { title: "操作", valueType: "option", width: 70, render: (text, record, _, action) => [ {}}> 删除 , ], }, ], rowKey: "id", }, }, detail: (setselected, dom) => ({ totalCard: [ //物料详情 { cardTitle: "基本信息", itemData: [ { title: "入库单号", key: "materieInstoreNo", }, { title: "入库类型", key: "instoreTypeName", }, { title: "入库仓库", key: "storeName", }, { title: "创建人", key: "createUserName", }, { title: "创建时间", key: "createTime", }, { title: "状态", key: "statusName", }, { title: "完成时间", key: "finishTime", }, { title: "备注", key: "remark", noshow: "100%", }, { title: "工单条形码", noshow: true, key: "qrCodeUrl", type: "img", width: 100, }, ], }, { cardTitle: "物料信息列表", extraContent: "", itemData: [ { key: "materialList", type: "table", col: { span: 24 }, columns: [ { title: "物料编码 - 名称", dataIndex: "materieName", key: "materieName", search: false, render: (dom, row) => { return ( (row.materieCode ?? "") + " - " + (row.materieName ?? "") ); }, }, { title: "供应商编号 - 名称", dataIndex: "supplierNo", key: "supplierNo", search: false, render: (dom, row) => { return ( (row.supplierNo ?? "") + " - " + (row.supplierName ?? "") ); }, }, { title: "批次号", dataIndex: "materieControlNo", key: "materieControlNo", search: false, }, { title: "入库数量", dataIndex: "instroeNum", key: "instroeNum", search: false, }, { title: "未上架数量", dataIndex: "remainderNums", key: "remainderNums", search: false, }, { title: "库存单位", dataIndex: "productionUnitName", key: "productionUnitName", search: false, }, ], // expandable: { // defaultExpandAllRows: true, // expandedRowRender: (record) => ( // { // return { // rules: [ // { required: true, message: "此项为必填项" }, // ], // }; // }, // }, // { // title: "上架数量", // dataIndex: "instroeNum", // key: "instroeNum", // search: false, // formItemProps: () => { // return { // rules: [ // { required: true, message: "此项为必填项" }, // ], // }; // }, // }, // ]} // dataSource={record.uploadList} // pagination={false} // /> // ), // }, // pagination: "false", // rowKey: "id", // rowSelection: { // onChange: (selectedRowKeys, selectedRows) => { // setselected(selectedRows); // }, // }, }, ], }, { cardTitle: "强制关单信息", itemData: [ { title: "关单人", key: "closeUserName", }, { title: "关单时间", key: "closeTime", }, ], }, { cardTitle: "上架明细", noPrint: true, itemData: [ { key: "materialUploadList", type: "table", col: { span: 24 }, columns: [ { title: "物料编码 - 名称", dataIndex: "materieName", key: "materieName", search: false, render: (dom, row) => { return ( (row.materieCode ?? "") + " - " + (row.materieName ?? "") ); }, }, { title: "供应商编号 - 名称", dataIndex: "supplierNo", key: "supplierNo", search: false, render: (dom, row) => { return ( (row.supplierNo ?? "") + " - " + (row.supplierName ?? "") ); }, }, { title: "批次号", dataIndex: "materieControlNo", key: "materieControlNo", search: false, }, { title: "入库数量", dataIndex: "instroeNum", key: "instroeNum", search: false, }, { title: "库存单位", dataIndex: "productionUnitName", key: "productionUnitName", search: false, }, ], expandable: { defaultExpandAllRows: true, expandedRowRender: (record) => (
{ return { rules: [ { required: true, message: "此项为必填项" }, ], }; }, }, { title: "上架数量", dataIndex: "instroeNum", key: "instroeNum", search: false, formItemProps: () => { return { rules: [ { required: true, message: "此项为必填项" }, ], }; }, }, { title: "备注", dataIndex: "remark", key: "remark", search: false, }, { title: "操作人", dataIndex: "uploadUserName", key: "uploadUserName", search: false, }, { title: "操作时间", dataIndex: "uploadTime", key: "uploadTime", search: false, }, ]} dataSource={record.uploadList} pagination={false} /> ), }, pagination: "false", }, ], }, ], }), doinsert: (fid, storeId) => ({ totalCard: [ //物料详情 { cardTitle: "基本信息", itemData: [ { title: "入库单号", key: "materieInstoreNo", }, { title: "入库类型", key: "instoreTypeName", }, { title: "入库仓库", key: "storeName", }, { title: "相关单号", key: "businessNo", }, { title: "备注", key: "remark", }, { title: "创建人", key: "createUserName", }, { title: "创建时间", key: "createTime", }, { title: "状态", key: "statusName", }, ], }, { cardTitle: "物料信息", extra: true, extrapath: "/ngic-workmanship/wmsMaterieInstore/uploadOtherInstore", extrakey: "submit", //redux key itemData: [ { key: "materialList", type: "table", col: { span: 24 }, columns: [ { title: "物料编码 - 名称", dataIndex: "materieName", key: "materieName", search: false, render: (dom, row) => { return ( (row.materieCode ?? "") + " - " + (row.materieName ?? "") ); }, }, { title: "供应商编号 - 名称", dataIndex: "supplierNo", key: "supplierNo", search: false, render: (dom, row) => { return ( (row.supplierNo ?? "") + " - " + (row.supplierName ?? "") ); }, }, { title: "批次号", dataIndex: "materieControlNo", key: "materieControlNo", search: false, }, { title: "入库数量", dataIndex: "instroeNum", key: "instroeNum", search: false, }, { title: "未上架数量", dataIndex: "remainderNums", key: "remainderNums", search: false, }, { title: "库存单位", dataIndex: "productionUnitName", key: "productionUnitName", search: false, }, ], expandable: { expandedRowRender: (record) => ( ), }, rowKey: "id", }, ], }, ], }), }; }, [drawprops?.visible]); // const defaultFields = useMemo(() => { // console.log(PchList); // return // }, [PchList]); const PrintButton = ( ); useEffect(() => { const detail = defaultFields.detail(setSelectKeys, PrintButton); setdrawprops((s) => ({ ...s, ...detail, })); }, [selectKeys]); const columns = useMemo(() => { if (activeTabKey == "1") { return [ { title: "入库单号", dataIndex: "materieInstoreNo", key: "materieInstoreNo", search: false, render: (dom, record) => { return ( { const detail = defaultFields.detail( setSelectKeys, PrintButton ); setdrawprops((s) => ({ ...s, visible: true, //查看详情 props val: "detail", title: `查看详情`, ...detail, totalPath: "/ngic-workmanship/wmsMaterieInstore/getInStoreInfoById", totalParams: { id: record.id }, extra: ( ), })); }} > {dom} ); }, }, { title: "入库类型", dataIndex: "instoreTypeName", key: "instoreType", search: false, valueType: "select", options: [ { label: "采购入库", value: "1", }, { label: "生产入库", value: "2", }, { label: "退料入库", value: "3", }, { label: "其他入库", value: "4", }, ], }, { title: "入库仓库", search: false, dataIndex: "storeName", key: "storeId", fieldProps: { allowClear: true, showSearch: true, }, options: { database: () => doFetch({ url: "/ngic-auth/sysStore/selectionBox", params: { factoryIdList: [] }, }), params: {}, }, valueType: "select", }, { title: "备注", dataIndex: "remark", key: "remark", search: false, }, { title: "创建人", dataIndex: "createUserName", search: false, key: "createUserName", }, { title: "创建时间", dataIndex: "createTime", key: "createTime", valueType: "dateRange", formItemProps: { name: "createTimeList", }, }, { title: "状态", dataIndex: "statusName", search: false, key: "status", valueType: "select", options: [ { label: "待分配", value: "3", }, { label: "待执行", value: "0", }, { label: "执行中", value: "1", }, ], }, { title: "操作", valueType: "option", width: 240, render: (text, record, _, action) => { return [ getPrem( "equipmentCustomer_save", action, "上架采集", async () => { let extra = defaultFields.doinsert(record.id, record.storeId); setdrawprops((s) => ({ ...s, visible: true, //查看详情 props val: "detail", title: `上架采集`, totalPath: "/ngic-workmanship/wmsMaterieInstore/getInStoreInfoById", totalParams: { id: record.id }, extra: null, ...extra, })); setInitialState((s) => { return { ...s, submit: {}, }; }); } ), getPrem("equipmentCustomer_deleteById", action, "关单", null, { title: "确认关单?", onConfirm: () => { doFetch({ url: "/ngic-workmanship/wmsMaterieInstore/close", params: { id: record.id }, }).then((res) => { if (res.code == "0000") { reload(); } }); }, }), record?.status === 7 ? null : getPrem( "equipmentCustomer_deleteById", action, "删除", null, { title: "确认删除?", onConfirm: () => { doFetch({ url: "/ngic-workmanship/wmsMaterieInstore/deleteById", params: { id: record.id }, }).then((res) => { if (res.code == "0000") { reload(); } }); }, } ), ]; }, }, ]; } else { return [ { title: "入库单号", dataIndex: "materieInstoreNo", key: "materieInstoreNo", render: (dom, record) => { return ( { setdrawprops((s) => ({ ...s, visible: true, //查看详情 props val: "detail", title: `查看详情`, ...defaultFields?.detail, totalPath: "/ngic-workmanship/wmsMaterieInstoreHis/getInStoreInfoById", totalParams: { id: record.id }, extra: null, })); }} > {dom} ); }, }, { title: "入库类型", dataIndex: "instoreTypeName", search: false, key: "instoreType", valueType: "select", options: [ { label: "采购入库", value: "1", }, { label: "生产入库", value: "2", }, { label: "退料入库", value: "3", }, { label: "其他入库", value: "4", }, ], }, { title: "入库仓库", search: false, dataIndex: "storeName", key: "storeId", fieldProps: { allowClear: true, showSearch: true, }, options: { database: () => doFetch({ url: "/ngic-auth/sysStore/selectionBox", params: { factoryIdList: [] }, }), params: {}, }, valueType: "select", }, { title: "备注", dataIndex: "remark", key: "remark", search: false, }, { search: false, title: "创建人", dataIndex: "createUserName", key: "createUserName", }, { title: "创建时间", dataIndex: "createTime", key: "createTime", valueType: "dateRange", formItemProps: { name: "createTimeList", }, }, { title: "完成时间", dataIndex: "finishTime", key: "finishTime", valueType: "dateRange", formItemProps: { name: "finishTimeList", }, }, { title: "状态", dataIndex: "statusName", search: false, key: "status", valueType: "select", options: [ { label: "已上架", value: "2", }, { label: "已关单", value: "4", }, ], }, ]; } }, [activeTabKey]); const tableprops = { ...props, pageextra: activeTabKey == "1" ? ( ) : ( "none" ), tabList: [ { tab: "未完成", key: "1", }, { tab: "已完成", key: "2", }, ], activeTabKey, onTabChange, columns, path: activeTabKey == "1" ? "/ngic-workmanship/wmsMaterieInstore/queryOtherList" : "/ngic-workmanship/wmsMaterieInstoreHis/queryOtherList", }; return (
(ChildRef = node)} > { if (drawprops.val == "add") { const data = JSON.parse(JSON.stringify(value)); const materialList = data?.materialList?.map((it) => { return { labelId: it?.labelId, }; }); let res = await doFetch({ url: "/ngic-workmanship/wmsMaterieInstore/saveOtherInstore", params: { materieInstoreNo: data.materieInstoreNo, storeId: data.storeId, remark: data.remark, materialList: materialList, }, }); if (res.code == "0000") { reload(); } } }} reload={reload} />
); } export default Instore;