From 673a770f2c4bb7966ccfc18dd24dc83387e0f89f Mon Sep 17 00:00:00 2001 From: krysent <10075251+krysent@user.noreply.gitee.com> Date: Mon, 31 Jul 2023 15:45:17 +0800 Subject: [PATCH] =?UTF-8?q?=E5=87=BA=E5=85=A5=E5=BA=93?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- config/routes.js | 7 +- public/LodopFuncs.js | 15 +- src/components/Footer/index.jsx | 11 +- src/pages/Printer/fields.js | 2 +- src/pages/Task/index.jsx | 69 +- src/pages/insertstore/Instore/fields.js | 523 ++++---- src/pages/insertstore/Instore/index.jsx | 352 +++--- src/pages/insertstore/Instore/printdom.jsx | 37 +- src/pages/insertstore/Otherinstore/fields.js | 1061 +++++++++++++++++ src/pages/insertstore/Otherinstore/index.jsx | 1042 ++++++++++++++++ src/pages/insertstore/Otherinstore/index.less | 10 + .../insertstore/Otherinstore/printdom.jsx | 220 ++++ src/pages/outsetstore/Otheroutstore/index.jsx | 130 +- src/pages/user/Login/index.jsx | 18 +- 14 files changed, 2908 insertions(+), 589 deletions(-) create mode 100644 src/pages/insertstore/Otherinstore/fields.js create mode 100644 src/pages/insertstore/Otherinstore/index.jsx create mode 100644 src/pages/insertstore/Otherinstore/index.less create mode 100644 src/pages/insertstore/Otherinstore/printdom.jsx diff --git a/config/routes.js b/config/routes.js index bfd79fc..a30d049 100644 --- a/config/routes.js +++ b/config/routes.js @@ -38,9 +38,14 @@ export default [ name: "入库管ç†", component: "./insertstore/Instore", }, + { + path: "/wms/otherInstore", + name: "其他入库管ç†", + component: "./insertstore/Otherinstore", + }, { path: "/wms/otherOutstore", - name: "其他出库å•", + name: "其他出库管ç†", component: "./outsetstore/Otheroutstore", }, { diff --git a/public/LodopFuncs.js b/public/LodopFuncs.js index d0b07f7..140f229 100644 --- a/public/LodopFuncs.js +++ b/public/LodopFuncs.js @@ -78,17 +78,8 @@ function getLodop(oOBJECT, oEMBED) { return LODOP; } catch (err) { alert("getLodop出错:" + err); + // alert( + // `getLodop出错,<a href="http://192.168.40.2/staticfile/group1/M00/00/00/CLodop_Setup_for_Win32NT.exe">点击æ¤å¤„ä¸‹è½½æ‰“å°æ’ä»¶</a>` + // ); } } - -/* - * 佛曰: - * 写嗿¥¼é‡Œå†™å—间,写å—间里程åºå‘˜; - * 程åºäººå‘˜å†™ç¨‹åºï¼Œåˆæ‹¿ç¨‹åºæ¢é…’é’± - * 酒醒åªåœ¨ç½‘上å,酒醉还æ¥ç½‘ä¸‹çœ - * é…’é†‰é…’é†’æ—¥å¤æ—¥ï¼Œç½‘上网下年å¤å¹´ - * ä½†æ„¿è€æ»ç”µè„‘é—´ï¼Œä¸æ„¿éž èº¬è€æ¿å‰ - * 奔驰å®é©¬è´µè€…趣,公交自行程åºå‘˜ - * 别人笑我忒疯癫,我笑自己命太贱; - * ä¸è§æ»¡è¡—漂亮妹,哪个归得程åºå‘˜? - */ diff --git a/src/components/Footer/index.jsx b/src/components/Footer/index.jsx index daee09a..cb0b747 100644 --- a/src/components/Footer/index.jsx +++ b/src/components/Footer/index.jsx @@ -9,11 +9,12 @@ const Footer = () => { <DefaultFooter copyright={`${currentYear} 江è‹å—高智能装备创新ä¸å¿ƒå‡ºå“`} links={[ - // { - // key: "Ant Design Pro", - // title: "JiangSuNanGao", - // blankTarget: true, - // }, + { + key: "download", + title: "æ’件下载", + blankTarget: true, + href: 'http://192.168.40.2/staticfile/group1/M00/00/00/CLodop_Setup_for_Win32NT.exe', + }, // { // key: "github", // title: <GithubOutlined />, diff --git a/src/pages/Printer/fields.js b/src/pages/Printer/fields.js index 43843e3..2fe4b7d 100644 --- a/src/pages/Printer/fields.js +++ b/src/pages/Printer/fields.js @@ -16,7 +16,7 @@ export function getColumns(setDrawer, formRef) { if (value) { doFetch({ url: "/ngic-workmanship/pmMaterie/queryById", - params: { id: value }, + params: { materieId: value }, }).then((res) => { console.log(res); const data = res?.data?.data; diff --git a/src/pages/Task/index.jsx b/src/pages/Task/index.jsx index b9d03e8..67d1d3f 100644 --- a/src/pages/Task/index.jsx +++ b/src/pages/Task/index.jsx @@ -118,26 +118,6 @@ function Outstore(props) { title: "物料åç§°", dataIndex: "materieName", key: "materieName", - valueType: "select", - - options: [ - { - label: "生产领料出库", - value: "1", - }, - { - label: "销售出库", - value: "2", - }, - { - label: "报废出库", - value: "3", - }, - { - label: "其他出库", - value: "4", - }, - ], }, { title: "è§„æ ¼åž‹å·", @@ -179,7 +159,26 @@ function Outstore(props) { { title: "任务类型", dataIndex: "taskTypeName", - key: "taskTypeName", + key: "taskType", + valueType: "select", + options: [ + { + label: "ç”Ÿäº§å«æ–™å•", + value: "1", + }, + { + label: "æ¥æ–™å…¥åº“å•", + value: "2", + }, + { + label: "生产退料å•", + value: "3", + }, + { + label: "移库", + value: "4", + }, + ], }, { title: "啿®çжæ€", @@ -241,6 +240,7 @@ function Outstore(props) { title: "任务å•å·", dataIndex: "taskNo", key: "taskNo", + search: false, // render: (dom, record) => { // return ( // <a @@ -280,30 +280,13 @@ function Outstore(props) { title: "物料åç§°", dataIndex: "materieName", key: "materieName", - valueType: "select", - options: [ - { - label: "生产领料出库", - value: "1", - }, - { - label: "销售出库", - value: "2", - }, - { - label: "报废出库", - value: "3", - }, - { - label: "其他出库", - value: "4", - }, - ], + search: false, }, { title: "è§„æ ¼åž‹å·", dataIndex: "specificationModel", key: "specificationModel", + search: false, fieldProps: { allowClear: true, showSearch: true, @@ -322,27 +305,30 @@ function Outstore(props) { title: "批次å·", dataIndex: "materieControlNo", key: "materieControlNo", - search: false, }, { title: "æ¥æºåº“ä½", dataIndex: "sourceStorePositionName", key: "sourceStorePositionName", + search: false, }, { title: "ç›®æ ‡åº“ä½", dataIndex: "targetStorePositionName", key: "targetStorePositionName", + search: false, }, { title: "任务类型", dataIndex: "taskTypeName", key: "taskTypeName", + search: false, }, { title: "啿®çжæ€", dataIndex: "statusName", key: "statusName", + search: false, valueType: "select", options: [ { @@ -367,6 +353,7 @@ function Outstore(props) { title: "䏋呿—¶é—´", dataIndex: "distributeTime", key: "distributeTime", + search: false, }, ]; } diff --git a/src/pages/insertstore/Instore/fields.js b/src/pages/insertstore/Instore/fields.js index a1d978e..d864d7d 100644 --- a/src/pages/insertstore/Instore/fields.js +++ b/src/pages/insertstore/Instore/fields.js @@ -1,13 +1,13 @@ import { factorySelect, shopSelectByFactory } from "@/services/system"; import { doFetch } from "@/utils/doFetch"; import { Button, Table } from "antd"; -import { EditableProTable } from "@ant-design/pro-table"; +import EditTable from "@/components/EditTable"; import { useEffect, useState } from 'react' import { useModel } from 'umi' const EditUpload = ({ record, fid, storeId }) => { const [value, setvalue] = useState({ - [record.id]: record.uploadList + [record.id]: record.downloadList }); const { initialState, setInitialState } = useModel("@@initialState"); useEffect(() => { @@ -19,11 +19,13 @@ const EditUpload = ({ record, fid, storeId }) => { let newArr = value[id]?.filter(it => typeof (it.id) == "number") ?? []; return { id, - uploadList: newArr.map(its => { + downloadList: newArr.map(its => { return { storePositionId: its?.storePositionId, - instroeNum: its?.instroeNum, - remark: its?.remark + outstroeNum: its?.outstroeNum, + stockNum: its?.stockNum, + remark: its?.remark, + materieControlNo: its?.materieControlNo } }) } @@ -31,20 +33,33 @@ const EditUpload = ({ record, fid, storeId }) => { setInitialState(s => { return ({ ...s, - submit: { + submits: { 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) : [] + materialList: (s.submits && s?.submits?.materialList) ? s?.submits?.materialList?.filter(it => newlist.map(item => item.id).indexOf(it.id) == -1)?.concat(newlist)?.filter(it => it.downloadList?.length > 0) : [] } }) }) - }, [value]); - return <EditableProTable - rowKey={"id"} + }, [value]) + + return <EditTable + rowKey="id" maxLength={1000} + linkconfig={{ + urlchangeval: { + database: (params) => doFetch({ url: "/ngic-workmanship/wmsMaterieStore/queryStoreOne", params }), + params: { "storePositionId": "linked", materieControlNo: "linked" }, + effectresult: { + "supplierNo": "supplierNo", + "supplierName": "supplierName", + "stockNum": "stroeNum", + "materieControlNo": "materieControlNo" + } + } + }} style={{ marginLeft: 48 }} columns={[ { - title: <span>库ä½åç§° <b style={{ color: "red" }}>*</b></span>, + title: "库ä½åç§°", dataIndex: "storePositionName", key: "storePositionId", search: false, @@ -64,19 +79,53 @@ const EditUpload = ({ record, fid, storeId }) => { }, }, { - title: <span>ä¸Šæž¶æ•°é‡ <b style={{ color: "red" }}>*</b></span>, - dataIndex: "instroeNum", - key: "instroeNum", + title: "批次å·/SNå·", + dataIndex: "materieControlNo", + key: "materieControlNo", search: false, + valueType: "select", + request: async (params) => { + let res = await doFetch({ url: "/ngic-workmanship/wmsMaterieStore/queryPCList", params: { materieId: params.materieId, storePositionId: params.storePositionId } }); + return res?.data?.dataList + }, editable: (text, record, index) => { return !record.materieOutstoreDetailId }, - valueType: "digit", - "formItemProps": () => { - return { - rules: [{ required: true, message: 'æ¤é¡¹ä¸ºå¿…填项' }], - }; + params: (row) => { + return { materieId: record.materieId, storePositionId: row.storePositionId } + }, + width: 200 + }, + { + title: "下架数é‡", + dataIndex: "outstroeNum", + key: "outstroeNum", + search: false, + editable: (text, record, index) => { + return !record.materieOutstoreDetailId }, + valueType: "digit" + }, + { + title: "供应商编å·", + dataIndex: "supplierNo", + key: "supplierNo", + search: false, + readonly: true + }, + { + title: "供应商åç§°", + dataIndex: "supplierName", + key: "supplierName", + search: false, + readonly: true + }, + { + title: "åº“å˜æ•°é‡", + dataIndex: "stockNum", + key: "stockNum", + search: false, + "readonly": true, }, { title: "备注", @@ -92,52 +141,38 @@ const EditUpload = ({ record, fid, storeId }) => { valueType: "option", width: 70, render: (text, record, _, action) => [ - typeof (record.id) == "number" && <a key="delete" onClick={() => { }}> + <a key="delete" onClick={() => { }}> åˆ é™¤ </a>, ], } ]} 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 - }) - }); - }, + onChange={(vals) => { + setvalue(s => ({ + ...s, + [record.id]: vals + })); }} pagination={false} /> } const one = { - "materieInstoreNo": { + "materieOutstoreNo": { "value": null, "type": "input", - "title": "入库å•å·", + "title": "出库å•å·", "name": [ - "materieInstoreNo" + "materieOutstoreNo" ], "required": false, - placeholder: "ä¸å¡«å†™ç³»ç»Ÿè‡ªåŠ¨ç”Ÿæˆ" + "placeholder": "ä¸å¡«å†™ç³»ç»Ÿè‡ªåŠ¨ç”Ÿæˆ" }, "storeId": { "value": null, "type": "select", - "title": "入库仓库", + "title": "出库仓库", "name": [ "storeId" ], @@ -146,19 +181,7 @@ const one = { database: () => doFetch({ url: "/ngic-auth/sysStore/selectionBox", params: { factoryIdList: [] } }), params: {} }, - }, - "supplierId": { - "value": null, - "type": "select", - "title": "供应商", - "name": [ - "supplierId" - ], - "required": true, - "options": { - database: () => doFetch({ url: "/ngic-auth/sysSupplier/query/selection", params: {} }), - params: {} - }, + "linked": true }, "businessNo": { "value": null, @@ -190,13 +213,13 @@ const one = { required: true, linkconfig: { urlchangeval: {//æ ¹æ®urlæŽ¥å£ æ”¹å˜æŸä¸ªvalue - database: (params) => doFetch({ url: "/ngic-workmanship/pmMaterie/queryUnitByMaterieId", params }), + database: (params) => doFetch({ url: "/ngic-workmanship/wmsMaterieStockStore/queryStoreOne", params }), params: { "materieId": "linked" }, effectresult: { "productionUnit": "productionUnit",//key 为列表更新值 value为response 返回值 "productionUnitName": "productionUnitName", - "materieControlNo": "materialCode", - "instroeNum": "instroeNum" + "usableNum": "usableNum", + "outstroeNum": "outstroeNum" } } }, @@ -206,7 +229,6 @@ const one = { "dataIndex": "materieId", "key": "materieId", "valueType": "select", - "width": 300, "request": async () => { let res = await doFetch({ url: "/ngic-workmanship/pmMaterie/query/selectbox", params: {} }) return res?.data?.dataList @@ -220,29 +242,31 @@ const one = { rules: [{ required: true, message: 'æ¤é¡¹ä¸ºå¿…填项' }], }; }, + editable: true }, { - "title": "批次å·/SNå·", - "dataIndex": "materieControlNo", - "key": "materieControlNo" - }, - { - "title": <span>å…¥åº“æ•°é‡ <b style={{ color: "red" }}>*</b></span>, - "dataIndex": "instroeNum", - "key": "instroeNum", - valueType: "digit", + "title": <span>å‡ºåº“æ•°é‡ <b style={{ color: "red" }}>*</b></span>, + "dataIndex": "outstroeNum", + "key": "outstroeNum", "formItemProps": () => { return { rules: [{ required: true, message: 'æ¤é¡¹ä¸ºå¿…填项' }], }; - } + }, + valueType: "digit", + editable: true + }, + { + "title": "å¯ç”¨åº“å˜", + "dataIndex": "usableNum", + "key": "usableNum", + "readonly": 'usableNum' }, { "title": "库å˜å•ä½", "dataIndex": "productionUnitName", "key": "productionUnitName", - "readonly": 'productionUnitName', - "width": 88 + "readonly": 'productionUnitName' }, { title: "æ“作", @@ -259,12 +283,12 @@ const one = { } }, two = { - "materieInstoreNo": { + "materieOutstoreNo": { "value": null, "type": "input", - "title": "入库å•å·", + "title": "出库å•å·", "name": [ - "materieInstoreNo" + "materieOutstoreNo" ], "required": false, placeholder: "ä¸å¡«å†™ç³»ç»Ÿè‡ªåŠ¨ç”Ÿæˆ" @@ -272,7 +296,7 @@ const one = { "storeId": { "value": null, "type": "select", - "title": "入库仓库", + "title": "出库仓库", "name": [ "storeId" ], @@ -282,22 +306,6 @@ const one = { params: {} }, }, - "supplierId": { - "value": "2022070124566476657", - "type": "select", - "title": "供应商", - "name": [ - "supplierId" - ], - "required": true, - "disabled": true, - "options": [ - { - value: "2022070124566476657", - label: "å—高(默认)" - } - ], - }, "businessNo": { "value": null, "type": "input", @@ -328,13 +336,13 @@ const one = { required: true, linkconfig: { urlchangeval: {//æ ¹æ®urlæŽ¥å£ æ”¹å˜æŸä¸ªvalue - database: (params) => doFetch({ url: "/ngic-workmanship/pmMaterie/queryUnitByMaterieId", params }), + database: (params) => doFetch({ url: "/ngic-workmanship/wmsMaterieStockStore/queryStoreOne", params }), params: { "materieId": "linked" }, effectresult: { "productionUnit": "productionUnit",//key 为列表更新值 value为response 返回值 "productionUnitName": "productionUnitName", - "materieControlNo": "materialCode", - "instroeNum": "instroeNum" + "usableNum": "usableNum", + "outstroeNum": "outstroeNum" } } }, @@ -344,7 +352,6 @@ const one = { "dataIndex": "materieId", "key": "materieId", "valueType": "select", - "width": 300, "request": async () => { let res = await doFetch({ url: "/ngic-workmanship/pmMaterie/query/selectbox", params: {} }) return res?.data?.dataList @@ -360,14 +367,9 @@ const one = { }, }, { - "title": "批次å·/SNå·", - "dataIndex": "materieControlNo", - "key": "materieControlNo" - }, - { - "title": <span>å…¥åº“æ•°é‡ <b style={{ color: "red" }}>*</b></span>, - "dataIndex": "instroeNum", - "key": "instroeNum", + "title": <span>å‡ºåº“æ•°é‡ <b style={{ color: "red" }}>*</b></span>, + "dataIndex": "outstroeNum", + "key": "outstroeNum", "formItemProps": () => { return { rules: [{ required: true, message: 'æ¤é¡¹ä¸ºå¿…填项' }], @@ -375,12 +377,17 @@ const one = { }, valueType: "digit" }, + { + "title": "å¯ç”¨åº“å˜", + "dataIndex": "usableNum", + "key": "usableNum", + "readonly": 'usableNum' + }, { "title": "库å˜å•ä½", "dataIndex": "productionUnitName", "key": "productionUnitName", - "readonly": 'productionUnitName', - "width": 88 + "readonly": 'productionUnitName' }, { title: "æ“作", @@ -397,12 +404,12 @@ const one = { } }, three = { - "materieInstoreNo": { + "materieOutstoreNo": { "value": null, "type": "input", - "title": "入库å•å·", + "title": "出库å•å·", "name": [ - "materieInstoreNo" + "materieOutstoreNo" ], "required": false, placeholder: "ä¸å¡«å†™ç³»ç»Ÿè‡ªåŠ¨ç”Ÿæˆ" @@ -410,7 +417,7 @@ const one = { "storeId": { "value": null, "type": "select", - "title": "入库仓库", + "title": "出库仓库", "name": [ "storeId" ], @@ -450,14 +457,13 @@ const one = { required: true, linkconfig: { urlchangeval: {//æ ¹æ®urlæŽ¥å£ æ”¹å˜æŸä¸ªvalue - database: (params) => doFetch({ url: "/ngic-workmanship/pmMaterie/queryUnitByMaterieId", params }), + database: (params) => doFetch({ url: "/ngic-workmanship/wmsMaterieStockStore/queryStoreOne", params }), params: { "materieId": "linked" }, effectresult: { "productionUnit": "productionUnit",//key 为列表更新值 value为response 返回值 "productionUnitName": "productionUnitName", - "materieControlNo": "materialCode", - "instroeNum": "instroeNum", - "supplierId": "supplierId" + "usableNum": "usableNum", + "outstroeNum": "outstroeNum" } } }, @@ -467,7 +473,6 @@ const one = { "dataIndex": "materieId", "key": "materieId", "valueType": "select", - "width": 300, "request": async () => { let res = await doFetch({ url: "/ngic-workmanship/pmMaterie/query/selectbox", params: {} }) return res?.data?.dataList @@ -483,47 +488,27 @@ const one = { }, }, { - "title": <span>供应商编å·-åç§° <b style={{ color: "red" }}>*</b></span>, - "dataIndex": "supplierId", - "key": "supplierId", - "valueType": "select", - "width": 300, - "request": async () => { - let res = await doFetch({ url: "/ngic-auth/sysSupplier/query/selection/withNo", params: {} }) - return res?.data?.dataList - }, - "fieldProps": { - allowClear: true, - showSearch: true - }, + "title": <span>å‡ºåº“æ•°é‡ <b style={{ color: "red" }}>*</b></span>, + "dataIndex": "outstroeNum", + "key": "outstroeNum", "formItemProps": () => { return { rules: [{ required: true, message: 'æ¤é¡¹ä¸ºå¿…填项' }], }; }, + valueType: "digit" }, { - "title": "批次å·/SNå·", - "dataIndex": "materieControlNo", - "key": "materieControlNo" - }, - { - "title": <span>å…¥åº“æ•°é‡ <b style={{ color: "red" }}>*</b></span>, - "dataIndex": "instroeNum", - "key": "instroeNum", - "formItemProps": () => { - return { - rules: [{ required: true, message: 'æ¤é¡¹ä¸ºå¿…填项' }], - }; - }, - valueType: "digit" + "title": "å¯ç”¨åº“å˜", + "dataIndex": "usableNum", + "key": "usableNum", + "readonly": 'usableNum' }, { "title": "库å˜å•ä½", "dataIndex": "productionUnitName", "key": "productionUnitName", - "readonly": 'productionUnitName', - "width": 88 + "readonly": 'productionUnitName' }, { title: "æ“作", @@ -540,12 +525,12 @@ const one = { } }, four = { - "materieInstoreNo": { + "materieOutstoreNo": { "value": null, "type": "input", - "title": "入库å•å·", + "title": "出库å•å·", "name": [ - "materieInstoreNo" + "materieOutstoreNo" ], "required": false, placeholder: "ä¸å¡«å†™ç³»ç»Ÿè‡ªåŠ¨ç”Ÿæˆ" @@ -553,7 +538,7 @@ const one = { "storeId": { "value": null, "type": "select", - "title": "入库仓库", + "title": "出库仓库", "name": [ "storeId" ], @@ -593,14 +578,13 @@ const one = { required: true, linkconfig: { urlchangeval: {//æ ¹æ®urlæŽ¥å£ æ”¹å˜æŸä¸ªvalue - database: (params) => doFetch({ url: "/ngic-workmanship/pmMaterie/queryUnitByMaterieId", params }), + database: (params) => doFetch({ url: "/ngic-workmanship/wmsMaterieStockStore/queryStoreOne", params }), params: { "materieId": "linked" }, effectresult: { "productionUnit": "productionUnit",//key 为列表更新值 value为response 返回值 "productionUnitName": "productionUnitName", - "materieControlNo": "materialCode", - "instroeNum": "instroeNum", - "supplierId": "supplierId" + "usableNum": "usableNum", + "outstroeNum": "outstroeNum" } } }, @@ -610,7 +594,6 @@ const one = { "dataIndex": "materieId", "key": "materieId", "valueType": "select", - "width": 300, "request": async () => { let res = await doFetch({ url: "/ngic-workmanship/pmMaterie/query/selectbox", params: {} }) return res?.data?.dataList @@ -626,47 +609,27 @@ const one = { }, }, { - "title": <span>供应商编å·-åç§° <b style={{ color: "red" }}>*</b></span>, - "dataIndex": "supplierId", - "key": "supplierId", - "valueType": "select", - "width": 300, - "request": async () => { - let res = await doFetch({ url: "/ngic-auth/sysSupplier/query/selection/withNo", params: {} }) - return res?.data?.dataList - }, - "fieldProps": { - allowClear: true, - showSearch: true - }, + "title": <span>å‡ºåº“æ•°é‡ <b style={{ color: "red" }}>*</b></span>, + "dataIndex": "outstroeNum", + "key": "outstroeNum", "formItemProps": () => { return { rules: [{ required: true, message: 'æ¤é¡¹ä¸ºå¿…填项' }], }; }, + valueType: "digit" }, { - "title": "批次å·/SNå·", - "dataIndex": "materieControlNo", - "key": "materieControlNo" - }, - { - "title": <span>å…¥åº“æ•°é‡ <b style={{ color: "red" }}>*</b></span>, - "dataIndex": "instroeNum", - "key": "instroeNum", - "formItemProps": () => { - return { - rules: [{ required: true, message: 'æ¤é¡¹ä¸ºå¿…填项' }], - }; - }, - valueType: "digit" + "title": "å¯ç”¨åº“å˜", + "dataIndex": "usableNum", + "key": "usableNum", + "readonly": 'usableNum' }, { "title": "库å˜å•ä½", "dataIndex": "productionUnitName", "key": "productionUnitName", - "readonly": 'productionUnitName', - "width": 88 + "readonly": 'productionUnitName' }, { title: "æ“作", @@ -689,15 +652,15 @@ const one = { cardTitle: "基本信æ¯", itemData: [ { - title: "入库å•å·", - key: "materieInstoreNo", + title: "出库å•å·", + key: "materieOutstoreNo", }, { - title: "入库类型", - key: "instoreTypeName", + title: "出库类型", + key: "outstoreTypeName", }, { - title: "入库仓库", + title: "出库仓库", key: "storeName", }, { @@ -711,7 +674,8 @@ const one = { { title: "创建时间", key: "createTime", - }, { + }, + { title: "状æ€", key: "statusName", }, @@ -726,9 +690,9 @@ const one = { }, { title: "工啿¡å½¢ç ", - noshow: true, key: "qrCodeUrl", type: "img", + noshow: true, width: 100, }, ], @@ -752,41 +716,27 @@ const one = { } }, { - title: "ä¾›åº”å•†ç¼–å· - åç§°", - dataIndex: "supplierNo", - key: "supplierNo", - search: false, - render: (dom, row) => { - return (row.supplierNo ?? '') + " - " + (row.supplierName ?? '') - } - }, - { - title: "批次å·/SNå·", - dataIndex: "materieControlNo", - key: "materieControlNo", + title: "出库数é‡", + dataIndex: "outstroeNum", + key: "outstroeNum", search: false, }, { - title: "入库数é‡", - dataIndex: "instroeNum", - key: "instroeNum", + title: "库å˜å•ä½", + dataIndex: "productionUnitName", + key: "productionUnitName", search: false, }, { - title: "未上架数é‡", + title: "未下架数é‡", dataIndex: "remainderNums", key: "remainderNums", search: false, }, - { - title: "库å˜å•ä½", - dataIndex: "productionUnitName", - key: "productionUnitName", - search: false, - }, ], + pagination: "false", + rowKey: "id", expandable: { - defaultExpandAllRows: true, expandedRowRender: record => <Table style={{ marginLeft: 48 }} columns={[ @@ -802,23 +752,32 @@ const one = { }, }, { - title: "上架数é‡", - dataIndex: "instroeNum", - key: "instroeNum", + title: "批次å·/SNå·", + dataIndex: "materieControlNo", + key: "materieControlNo", + search: false, + }, + { + title: "供应商编å·-åç§°", + dataIndex: "supplierNo", + key: "supplierNo", + search: false, + render: (dom, row) => { + return (row?.supplierNo ?? '') + " - " + (row?.supplierName ?? '') + } + }, + { + title: "下架数é‡", + dataIndex: "outstroeNum", + key: "outstroeNum", search: false, - "formItemProps": () => { - return { - rules: [{ required: true, message: 'æ¤é¡¹ä¸ºå¿…填项' }], - }; - }, } + ]} - dataSource={record.uploadList} + dataSource={record.downloadList} pagination={false} />, }, - pagination: "false", - rowKey: "id", rowSelection: { onChange: (selectedRowKeys, selectedRows) => { setselected(selectedRows) @@ -841,11 +800,11 @@ const one = { ], }, { - cardTitle: "上架明细", + cardTitle: "下架明细", noPrint: true, itemData: [ { - key: "materialUploadList", + key: "materialDownloadList", type: "table", col: { span: 24 }, columns: [ @@ -859,24 +818,9 @@ const one = { } }, { - title: "ä¾›åº”å•†ç¼–å· - åç§°", - dataIndex: "supplierNo", - key: "supplierNo", - search: false, - render: (dom, row) => { - return (row.supplierNo ?? '') + " - " + (row.supplierName ?? '') - } - }, - { - title: "批次å·/SNå·", - dataIndex: "materieControlNo", - key: "materieControlNo", - search: false, - }, - { - title: "入库数é‡", - dataIndex: "instroeNum", - key: "instroeNum", + title: "出库数é‡", + dataIndex: "outstroeNum", + key: "outstroeNum", search: false, }, { @@ -903,15 +847,25 @@ const one = { }, }, { - title: "上架数é‡", - dataIndex: "instroeNum", - key: "instroeNum", + title: "批次å·/SNå·", + dataIndex: "materieControlNo", + key: "materieControlNo", + search: false, + }, + { + title: "ä¾›åº”å•†ç¼–å· - åç§°", + dataIndex: "supplierNo", + key: "supplierNo", + search: false, + render: (dom, row) => { + return (row.supplierNo ?? '') + " - " + (row.supplierName ?? '') + } + }, + { + title: "下架数é‡", + dataIndex: "outstroeNum", + key: "outstroeNum", search: false, - "formItemProps": () => { - return { - rules: [{ required: true, message: 'æ¤é¡¹ä¸ºå¿…填项' }], - }; - }, } , { @@ -923,19 +877,19 @@ const one = { , { title: "æ“作人", - dataIndex: "uploadUserName", - key: "uploadUserName", + dataIndex: "downloadUserName", + key: "downloadUserName", search: false, } , { title: "æ“作时间", - dataIndex: "uploadTime", - key: "uploadTime", + dataIndex: "downloadTime", + key: "downloadTime", search: false, } ]} - dataSource={record.uploadList} + dataSource={record.downloadList} pagination={false} />, }, @@ -944,22 +898,23 @@ const one = { ], }, ] - }), doinsert = (fid, storeId) => ({ + }), + dooutside = (fid, storeId) => ({ totalCard: [ //物料详情 { cardTitle: "基本信æ¯", itemData: [ { - title: "入库å•å·", - key: "materieInstoreNo", + title: "出库å•å·", + key: "materieOutstoreNo", }, { - title: "入库类型", - key: "instoreTypeName", + title: "出库类型", + key: "outstoreTypeName", }, { - title: "入库仓库", + title: "出库仓库", key: "storeName", }, { @@ -980,15 +935,15 @@ const one = { }, { title: "状æ€", - key: "statusName", + key: "statusName" } ], }, { cardTitle: "物料信æ¯åˆ—表", extra: true, - extrapath: "/ngic-workmanship/wmsMaterieInstore/upload", - extrakey: "submit",//redux key + extrapath: "/ngic-workmanship/wmsMaterieOutstore/download", + extrakey: "submits",//redux key itemData: [ { key: "materialList", @@ -1005,43 +960,27 @@ const one = { } }, { - title: "ä¾›åº”å•†ç¼–å· - åç§°", - dataIndex: "supplierNo", - key: "supplierNo", + title: "出库数é‡", + dataIndex: "outstroeNum", + key: "outstroeNum", search: false, - render: (dom, row) => { - return (row.supplierNo ?? '') + " - " + (row.supplierName ?? '') - } }, { - title: "批次å·/SNå·", - dataIndex: "materieControlNo", - key: "materieControlNo", + title: "库å˜å•ä½", + dataIndex: "productionUnitName", + key: "productionUnitName", search: false, }, { - title: "入库数é‡", - dataIndex: "instroeNum", - key: "instroeNum", - search: false - }, - { - title: "未上架数é‡", + title: "未下架数é‡", dataIndex: "remainderNums", key: "remainderNums", search: false, - }, - { - title: "库å˜å•ä½", - dataIndex: "productionUnitName", - key: "productionUnitName", - search: false, - }, + } ], expandable: { expandedRowRender: record => <EditUpload record={record} fid={fid} storeId={storeId} />, - }, - rowKey: "id" + } }, ], }, @@ -1057,5 +996,5 @@ export default { three, four, detail, - doinsert + dooutside }; diff --git a/src/pages/insertstore/Instore/index.jsx b/src/pages/insertstore/Instore/index.jsx index bffc8e1..99d48f5 100644 --- a/src/pages/insertstore/Instore/index.jsx +++ b/src/pages/insertstore/Instore/index.jsx @@ -19,29 +19,31 @@ const keytoval = { items = [ { key: "one", - label: <a>采è´å…¥åº“</a>, + label: <a>生产领料出库</a>, }, { key: "two", - label: <a>生产入库</a>, + label: <a>销售出库</a>, }, { key: "three", - label: <a>退料入库</a>, + label: <a>报废出库</a>, }, { key: "four", - label: <a>其他入库</a>, + label: <a>其他出库</a>, }, ], itemz = { - one: "采è´å…¥åº“", - two: "生产入库", - three: "退料入库", - four: "其他入库", + one: "生产领料出库", + two: "销售出库", + three: "报废出库", + four: "其他出库", }; -function Instore(props) { + + +function Outstore(props) { const { initialState, setInitialState } = useModel("@@initialState"); const [activeTabKey, onTabChange] = useState("1"); const [selectKeys, setSelectKeys] = useState([]); @@ -83,7 +85,6 @@ function Instore(props) { const mutiPrint = useReactToPrint({ content: () => mutiPrintRef.current.dom.current, }); - const PrintButton = ( <Button disabled={!selectKeys.length} @@ -113,7 +114,7 @@ function Instore(props) { render: (dom, record) => { return ( <a - onClick={async () => { + onClick={() => { const detail = defaultFields.detail( setSelectKeys, PrintButton @@ -126,7 +127,7 @@ function Instore(props) { title: `查看详情`, ...detail, totalPath: - "/ngic-workmanship/wmsMaterieInstore/getInStoreInfoById", + "/ngic-workmanship/wmsMaterieOutstore/getOutStoreInfoById", totalParams: { id: record.id }, extra: ( <Button @@ -152,11 +153,7 @@ function Instore(props) { valueType: "select", options: [ { - label: "采è´å…¥åº“", - value: "1", - }, - { - label: "生产入库", + label: "æ¥æ–™å…¥åº“", value: "2", }, { @@ -172,29 +169,17 @@ function Instore(props) { { title: "入库仓库", dataIndex: "storeName", + search: false, key: "storeId", fieldProps: { allowClear: true, showSearch: true, }, - options: { - database: () => - doFetch({ - url: "/ngic-auth/sysStore/selectionBox", - params: { factoryIdList: [] }, - }), - params: {}, - }, - valueType: "select", - }, - { - title: "相关å•å·", - dataIndex: "businessNo", - key: "businessNo", }, { title: "备注", dataIndex: "remark", + search: false, key: "remark", search: false, }, @@ -202,11 +187,12 @@ function Instore(props) { title: "创建人", dataIndex: "createUserName", key: "createUserName", + search: false, }, { title: "创建时间", dataIndex: "createTime", - key: "createTime", + key: "createTimeList", valueType: "dateRange", formItemProps: { name: "createTimeList", @@ -219,77 +205,23 @@ function Instore(props) { valueType: "select", options: [ { - label: "待上架", + label: "待下架", value: "0", }, { - label: "上架ä¸", - value: "1", + label: "下架ä¸", + value: "2", + }, + { + label: "待分é…", + value: "5", + }, + { + label: "待执行", + value: "6", }, ], }, - { - 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 == 0 && - 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 [ @@ -301,17 +233,29 @@ function Instore(props) { return ( <a onClick={() => { + const detail = defaultFields.detail( + setSelectKeys, + PrintButton + ); setdrawprops((s) => ({ ...s, visible: true, //查看详情 props val: "detail", title: `查看详情`, - ...defaultFields?.detail, + ...detail, totalPath: - "/ngic-workmanship/wmsMaterieInstoreHis/getInStoreInfoById", + "/ngic-workmanship/wmsMaterieOutstore/getOutStoreInfoById", totalParams: { id: record.id }, - extra: null, + extra: ( + <Button + onClick={async () => { + handlePrint(); + }} + > + æ‰“å° + </Button> + ), })); }} > @@ -327,11 +271,7 @@ function Instore(props) { valueType: "select", options: [ { - label: "采è´å…¥åº“", - value: "1", - }, - { - label: "生产入库", + label: "æ¥æ–™å…¥åº“", value: "2", }, { @@ -347,29 +287,17 @@ function Instore(props) { { title: "入库仓库", dataIndex: "storeName", + search: false, key: "storeId", fieldProps: { allowClear: true, showSearch: true, }, - options: { - database: () => - doFetch({ - url: "/ngic-auth/sysStore/selectionBox", - params: { factoryIdList: [] }, - }), - params: {}, - }, - valueType: "select", - }, - { - title: "相关å•å·", - dataIndex: "businessNo", - key: "businessNo", }, { title: "备注", dataIndex: "remark", + search: false, key: "remark", search: false, }, @@ -377,11 +305,12 @@ function Instore(props) { title: "创建人", dataIndex: "createUserName", key: "createUserName", + search: false, }, { title: "创建时间", dataIndex: "createTime", - key: "createTime", + key: "createTimeList", valueType: "dateRange", formItemProps: { name: "createTimeList", @@ -390,6 +319,7 @@ function Instore(props) { { title: "å®Œæˆæ—¶é—´", dataIndex: "finishTime", + search: false, key: "finishTime", valueType: "dateRange", formItemProps: { @@ -402,14 +332,14 @@ function Instore(props) { key: "status", valueType: "select", options: [ - { - label: "已上架", - value: "2", - }, { label: "已关å•", value: "4", }, + { + label: "已完æˆ", + value: "8", + }, ], }, ]; @@ -418,32 +348,32 @@ function Instore(props) { const tableprops = { ...props, - pageextra: - activeTabKey == "1" ? ( - <Dropdown - placement="bottomRight" - overlay={ - <Menu - onClick={(e) => { - setdrawprops((s) => ({ - ...s, - visible: true, - title: "新增" + itemz[e.key], - fields: defaultFields[e.key], - instoreType: keytoval[e.key], - val: "add", //类型 - extra: null, - })); - }} - items={items} - /> - } - > - <Button type="primary">新增</Button> - </Dropdown> - ) : ( - "none" - ), + // pageextra: + // activeTabKey == "1" ? ( + // <Dropdown + // placement="bottomRight" + // overlay={ + // <Menu + // onClick={(e) => { + // setdrawprops((s) => ({ + // ...s, + // visible: true, + // title: "新增" + itemz[e.key], + // fields: defaultFields[e.key], + // outstoreType: keytoval[e.key], + // val: "add", //类型 + // extra: null, + // })); + // }} + // items={items} + // /> + // } + // > + // <Button type="primary">新增</Button> + // </Dropdown> + // ) : ( + // "none" + // ), tabList: [ { tab: "未完æˆ", @@ -465,14 +395,12 @@ function Instore(props) { return ( <div> - <div style={{ position:"fixed",bottom:-100000 }}> + <div style={{ position: "fixed", bottom: -100000 }}> <PrintDom ref={printRef} {...drawprops} /> </div> - <div style={{ display: "none" }}> <PrintQrCode ref={mutiPrintRef} selectedItems={selectKeys} /> </div> - <AutoTable {...tableprops} actionRef={actionRef} @@ -482,19 +410,131 @@ function Instore(props) { {...drawprops} submitData={async (value) => { if (drawprops.val == "add") { + let newfileds = JSON.parse(JSON.stringify(value)); + newfileds.materialList = newfileds?.materialList?.map((it) => { + delete it.usableNum; + delete it.id; + return it; + }); let res = await doFetch({ - url: "/ngic-workmanship/wmsMaterieInstore/saveInStore", - params: { ...value, instoreType: drawprops.instoreType }, + url: "/ngic-workmanship/wmsMaterieOutstore/saveOutStore", + params: { ...newfileds, outstoreType: drawprops.outstoreType }, }); if (res.code == "0000") { reload(); } } }} + onChange={async (changedValues, allValues) => { + for (let i in changedValues) { + if (i == "storeId") { + let res = await doFetch({ + url: "/ngic-workmanship/wmsMaterieStockStore/selectbox/usableStock", + params: { storeId: changedValues["storeId"] }, + }), + options = res?.data?.dataList; + setdrawprops((s) => { + let fields = JSON.parse(JSON.stringify(s.fields)); + for (let i in fields) { + fields[i].value = allValues[i]; + } + fields["materialList"].linkconfig = { + urlchangeval: { + //æ ¹æ®urlæŽ¥å£ æ”¹å˜æŸä¸ªvalue + database: (params) => + doFetch({ + url: "/ngic-workmanship/wmsMaterieStockStore/queryStoreOne", + params, + }), + params: { materieId: "linked", storeId: changedValues[i] }, + effectresult: { + productionUnit: "productionUnit", //key 为列表更新值 value为response 返回值 + productionUnitName: "productionUnitName", + usableNum: "usableNum", + outstroeNum: "outstroeNum", + }, + }, + }; + fields["materialList"].columns = [ + { + title: ( + <span> + 物料编ç -åç§° <b style={{ color: "red" }}>*</b> + </span> + ), + dataIndex: "materieId", + key: "materieId", + valueType: "select", + fieldProps: { + allowClear: true, + showSearch: true, + options, + }, + formItemProps: () => { + return { + rules: [{ required: true, message: "æ¤é¡¹ä¸ºå¿…填项" }], + }; + }, + editable: true, + }, + { + title: ( + <span> + å‡ºåº“æ•°é‡ <b style={{ color: "red" }}>*</b> + </span> + ), + dataIndex: "outstroeNum", + key: "outstroeNum", + formItemProps: () => { + return { + rules: [{ required: true, message: "æ¤é¡¹ä¸ºå¿…填项" }], + }; + }, + valueType: "digit", + fieldProps: { + precision: 3, + }, + editable: true, + }, + { + title: "å¯ç”¨åº“å˜", + dataIndex: "usableNum", + key: "usableNum", + readonly: "usableNum", + }, + { + title: "库å˜å•ä½", + dataIndex: "productionUnitName", + key: "productionUnitName", + readonly: "productionUnitName", + }, + { + title: "æ“作", + valueType: "option", + width: 70, + render: (text, record, _, action) => [ + <a key="delete" onClick={() => {}}> + åˆ é™¤ + </a>, + ], + }, + ]; + fields["materialList"].value = undefined; + let newfields = { + ...fields, + }; + return { + ...s, + fields: newfields, + }; + }); + } + } + }} reload={reload} /> </div> ); } -export default Instore; +export default Outstore; diff --git a/src/pages/insertstore/Instore/printdom.jsx b/src/pages/insertstore/Instore/printdom.jsx index c2fe036..d3b611e 100644 --- a/src/pages/insertstore/Instore/printdom.jsx +++ b/src/pages/insertstore/Instore/printdom.jsx @@ -53,28 +53,13 @@ let columns = [ key: "materieName", search: false, render: (dom, row) => { - return (row.materieCode ?? " ") + " - " + (row.materieName ?? ""); + return (row.materieCode ?? "") + " - " + (row.materieName ?? ""); }, }, { - title: "ä¾›åº”å•†ç¼–å· - åç§°", - dataIndex: "supplierNo", - key: "supplierNo", - search: false, - render: (dom, row) => { - return (row.supplierNo ?? "") + " - " + (row.supplierName ?? ""); - }, - }, - { - title: "批次å·/SNå·", - dataIndex: "materieControlNo", - key: "materieControlNo", - search: false, - }, - { - title: "入库数é‡", - dataIndex: "instroeNum", - key: "instroeNum", + title: "出库数é‡", + dataIndex: "outstroeNum", + key: "outstroeNum", search: false, }, { @@ -82,10 +67,12 @@ let columns = [ dataIndex: "productionUnitName", key: "productionUnitName", search: false, + width: 60, }, ]; function PrintDom({ totalPath, val, totalParams, totalCard }, ref) { + console.log(totalCard); let printRef = useRef(); const [data, setdata] = useState({}); useImperativeHandle(ref, () => ({ @@ -95,7 +82,9 @@ function PrintDom({ totalPath, val, totalParams, totalCard }, ref) { useEffect(() => { if (val == "detail") { doFetch({ url: totalPath, params: totalParams }).then((res) => { - setdata(res?.data?.data); + if (res.code == "0000") { + setdata(res?.data?.data); + } }); } else { } @@ -141,9 +130,10 @@ function PrintDom({ totalPath, val, totalParams, totalCard }, ref) { style={{ width: "100%", fontSize: 40, + marginTop: "-6px", }} > - å…¥åº“å·¥å• + å‡ºåº“å·¥å• </h1> <img style={{ @@ -154,12 +144,12 @@ function PrintDom({ totalPath, val, totalParams, totalCard }, ref) { alt="" /> </div> - <div style={{ display: "flex", flexWrap: "wrap", paddingLeft: "2%", + marginTop: 24, }} > {totalCard && @@ -175,7 +165,7 @@ function PrintDom({ totalPath, val, totalParams, totalCard }, ref) { marginBottom: 10, padding: "4px", fontSize: 20, - overflow: "inherit", + overflow: "hidden", }} > <b>{it.title}: </b> @@ -184,7 +174,6 @@ function PrintDom({ totalPath, val, totalParams, totalCard }, ref) { ); })} </div> - <div style={{ padding: "4px 2%", diff --git a/src/pages/insertstore/Otherinstore/fields.js b/src/pages/insertstore/Otherinstore/fields.js new file mode 100644 index 0000000..a1d978e --- /dev/null +++ b/src/pages/insertstore/Otherinstore/fields.js @@ -0,0 +1,1061 @@ +import { factorySelect, shopSelectByFactory } from "@/services/system"; +import { doFetch } from "@/utils/doFetch"; +import { Button, Table } from "antd"; +import { EditableProTable } from "@ant-design/pro-table"; +import { useEffect, useState } from 'react' +import { useModel } from 'umi' + +const EditUpload = ({ record, fid, storeId }) => { + const [value, setvalue] = useState({ + [record.id]: record.uploadList + }); + const { initialState, setInitialState } = useModel("@@initialState"); + 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) : [] + } + }) + }) + }, [value]); + return <EditableProTable + rowKey={"id"} + maxLength={1000} + style={{ marginLeft: 48 }} + columns={[ + { + title: <span>库ä½åç§° <b style={{ color: "red" }}>*</b></span>, + dataIndex: "storePositionName", + key: "storePositionId", + search: false, + valueType: "select", + request: async (params) => { + let res = await doFetch({ url: "/ngic-auth/sysStorePosition/queryByStoreId/selection", params: { storeId: params.storeId } }); + return res?.data?.dataList + }, + editable: (text, record, index) => { + return !record.materieOutstoreDetailId + }, + params: { storeId: storeId }, + "formItemProps": () => { + return { + rules: [{ required: true, message: 'æ¤é¡¹ä¸ºå¿…填项' }], + }; + }, + }, + { + title: <span>ä¸Šæž¶æ•°é‡ <b style={{ color: "red" }}>*</b></span>, + 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" && <a key="delete" onClick={() => { }}> + åˆ é™¤ + </a>, + ], + } + ]} + 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} + /> +} + +const one = { + "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/selectionBox", params: { factoryIdList: [] } }), + params: {} + }, + }, + "supplierId": { + "value": null, + "type": "select", + "title": "供应商", + "name": [ + "supplierId" + ], + "required": true, + "options": { + database: () => doFetch({ url: "/ngic-auth/sysSupplier/query/selection", params: {} }), + params: {} + }, + }, + "businessNo": { + "value": null, + "type": "input", + "title": "相关å•å·", + "name": [ + "businessNo" + ], + "required": false + }, + "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/pmMaterie/queryUnitByMaterieId", params }), + params: { "materieId": "linked" }, + effectresult: { + "productionUnit": "productionUnit",//key 为列表更新值 value为response 返回值 + "productionUnitName": "productionUnitName", + "materieControlNo": "materialCode", + "instroeNum": "instroeNum" + } + } + }, + columns: [ + { + "title": <span>物料编ç -åç§° <b style={{ color: "red" }}>*</b></span>, + "dataIndex": "materieId", + "key": "materieId", + "valueType": "select", + "width": 300, + "request": async () => { + let res = await doFetch({ url: "/ngic-workmanship/pmMaterie/query/selectbox", params: {} }) + return res?.data?.dataList + }, + "fieldProps": { + allowClear: true, + showSearch: true + }, + "formItemProps": () => { + return { + rules: [{ required: true, message: 'æ¤é¡¹ä¸ºå¿…填项' }], + }; + }, + }, + { + "title": "批次å·/SNå·", + "dataIndex": "materieControlNo", + "key": "materieControlNo" + }, + { + "title": <span>å…¥åº“æ•°é‡ <b style={{ color: "red" }}>*</b></span>, + "dataIndex": "instroeNum", + "key": "instroeNum", + valueType: "digit", + "formItemProps": () => { + return { + rules: [{ required: true, message: 'æ¤é¡¹ä¸ºå¿…填项' }], + }; + } + }, + { + "title": "库å˜å•ä½", + "dataIndex": "productionUnitName", + "key": "productionUnitName", + "readonly": 'productionUnitName', + "width": 88 + }, + { + title: "æ“作", + valueType: "option", + width: 70, + render: (text, record, _, action) => [ + <a key="delete" onClick={() => { }}> + åˆ é™¤ + </a>, + ], + }, + ], + rowKey: "id", + } +}, + two = { + "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/selectionBox", params: { factoryIdList: [] } }), + params: {} + }, + }, + "supplierId": { + "value": "2022070124566476657", + "type": "select", + "title": "供应商", + "name": [ + "supplierId" + ], + "required": true, + "disabled": true, + "options": [ + { + value: "2022070124566476657", + label: "å—高(默认)" + } + ], + }, + "businessNo": { + "value": null, + "type": "input", + "title": "相关å•å·", + "name": [ + "businessNo" + ], + "required": false + }, + "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/pmMaterie/queryUnitByMaterieId", params }), + params: { "materieId": "linked" }, + effectresult: { + "productionUnit": "productionUnit",//key 为列表更新值 value为response 返回值 + "productionUnitName": "productionUnitName", + "materieControlNo": "materialCode", + "instroeNum": "instroeNum" + } + } + }, + columns: [ + { + "title": <span>物料编ç -åç§° <b style={{ color: "red" }}>*</b></span>, + "dataIndex": "materieId", + "key": "materieId", + "valueType": "select", + "width": 300, + "request": async () => { + let res = await doFetch({ url: "/ngic-workmanship/pmMaterie/query/selectbox", params: {} }) + return res?.data?.dataList + }, + "fieldProps": { + allowClear: true, + showSearch: true + }, + "formItemProps": () => { + return { + rules: [{ required: true, message: 'æ¤é¡¹ä¸ºå¿…填项' }], + }; + }, + }, + { + "title": "批次å·/SNå·", + "dataIndex": "materieControlNo", + "key": "materieControlNo" + }, + { + "title": <span>å…¥åº“æ•°é‡ <b style={{ color: "red" }}>*</b></span>, + "dataIndex": "instroeNum", + "key": "instroeNum", + "formItemProps": () => { + return { + rules: [{ required: true, message: 'æ¤é¡¹ä¸ºå¿…填项' }], + }; + }, + valueType: "digit" + }, + { + "title": "库å˜å•ä½", + "dataIndex": "productionUnitName", + "key": "productionUnitName", + "readonly": 'productionUnitName', + "width": 88 + }, + { + title: "æ“作", + valueType: "option", + width: 70, + render: (text, record, _, action) => [ + <a key="delete" onClick={() => { }}> + åˆ é™¤ + </a>, + ], + }, + ], + rowKey: "id", + } + }, + three = { + "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/selectionBox", params: { factoryIdList: [] } }), + params: {} + }, + }, + "businessNo": { + "value": null, + "type": "input", + "title": "相关å•å·", + "name": [ + "businessNo" + ], + "required": false + }, + "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/pmMaterie/queryUnitByMaterieId", params }), + params: { "materieId": "linked" }, + effectresult: { + "productionUnit": "productionUnit",//key 为列表更新值 value为response 返回值 + "productionUnitName": "productionUnitName", + "materieControlNo": "materialCode", + "instroeNum": "instroeNum", + "supplierId": "supplierId" + } + } + }, + columns: [ + { + "title": <span>物料编ç -åç§° <b style={{ color: "red" }}>*</b></span>, + "dataIndex": "materieId", + "key": "materieId", + "valueType": "select", + "width": 300, + "request": async () => { + let res = await doFetch({ url: "/ngic-workmanship/pmMaterie/query/selectbox", params: {} }) + return res?.data?.dataList + }, + "fieldProps": { + allowClear: true, + showSearch: true + }, + "formItemProps": () => { + return { + rules: [{ required: true, message: 'æ¤é¡¹ä¸ºå¿…填项' }], + }; + }, + }, + { + "title": <span>供应商编å·-åç§° <b style={{ color: "red" }}>*</b></span>, + "dataIndex": "supplierId", + "key": "supplierId", + "valueType": "select", + "width": 300, + "request": async () => { + let res = await doFetch({ url: "/ngic-auth/sysSupplier/query/selection/withNo", params: {} }) + return res?.data?.dataList + }, + "fieldProps": { + allowClear: true, + showSearch: true + }, + "formItemProps": () => { + return { + rules: [{ required: true, message: 'æ¤é¡¹ä¸ºå¿…填项' }], + }; + }, + }, + { + "title": "批次å·/SNå·", + "dataIndex": "materieControlNo", + "key": "materieControlNo" + }, + { + "title": <span>å…¥åº“æ•°é‡ <b style={{ color: "red" }}>*</b></span>, + "dataIndex": "instroeNum", + "key": "instroeNum", + "formItemProps": () => { + return { + rules: [{ required: true, message: 'æ¤é¡¹ä¸ºå¿…填项' }], + }; + }, + valueType: "digit" + }, + { + "title": "库å˜å•ä½", + "dataIndex": "productionUnitName", + "key": "productionUnitName", + "readonly": 'productionUnitName', + "width": 88 + }, + { + title: "æ“作", + valueType: "option", + width: 70, + render: (text, record, _, action) => [ + <a key="delete" onClick={() => { }}> + åˆ é™¤ + </a>, + ], + }, + ], + rowKey: "id", + } + }, + 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/selectionBox", params: { factoryIdList: [] } }), + params: {} + }, + }, + "businessNo": { + "value": null, + "type": "input", + "title": "相关å•å·", + "name": [ + "businessNo" + ], + "required": false + }, + "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/pmMaterie/queryUnitByMaterieId", params }), + params: { "materieId": "linked" }, + effectresult: { + "productionUnit": "productionUnit",//key 为列表更新值 value为response 返回值 + "productionUnitName": "productionUnitName", + "materieControlNo": "materialCode", + "instroeNum": "instroeNum", + "supplierId": "supplierId" + } + } + }, + columns: [ + { + "title": <span>物料编ç -åç§° <b style={{ color: "red" }}>*</b></span>, + "dataIndex": "materieId", + "key": "materieId", + "valueType": "select", + "width": 300, + "request": async () => { + let res = await doFetch({ url: "/ngic-workmanship/pmMaterie/query/selectbox", params: {} }) + return res?.data?.dataList + }, + "fieldProps": { + allowClear: true, + showSearch: true + }, + "formItemProps": () => { + return { + rules: [{ required: true, message: 'æ¤é¡¹ä¸ºå¿…填项' }], + }; + }, + }, + { + "title": <span>供应商编å·-åç§° <b style={{ color: "red" }}>*</b></span>, + "dataIndex": "supplierId", + "key": "supplierId", + "valueType": "select", + "width": 300, + "request": async () => { + let res = await doFetch({ url: "/ngic-auth/sysSupplier/query/selection/withNo", params: {} }) + return res?.data?.dataList + }, + "fieldProps": { + allowClear: true, + showSearch: true + }, + "formItemProps": () => { + return { + rules: [{ required: true, message: 'æ¤é¡¹ä¸ºå¿…填项' }], + }; + }, + }, + { + "title": "批次å·/SNå·", + "dataIndex": "materieControlNo", + "key": "materieControlNo" + }, + { + "title": <span>å…¥åº“æ•°é‡ <b style={{ color: "red" }}>*</b></span>, + "dataIndex": "instroeNum", + "key": "instroeNum", + "formItemProps": () => { + return { + rules: [{ required: true, message: 'æ¤é¡¹ä¸ºå¿…填项' }], + }; + }, + valueType: "digit" + }, + { + "title": "库å˜å•ä½", + "dataIndex": "productionUnitName", + "key": "productionUnitName", + "readonly": 'productionUnitName', + "width": 88 + }, + { + title: "æ“作", + valueType: "option", + width: 70, + render: (text, record, _, action) => [ + <a key="delete" onClick={() => { }}> + åˆ é™¤ + </a>, + ], + }, + ], + rowKey: "id", + } + }, + detail = (setselected, dom) => ({ + totalCard: [ + //物料详情 + { + cardTitle: "基本信æ¯", + itemData: [ + { + title: "入库å•å·", + key: "materieInstoreNo", + }, + { + title: "入库类型", + key: "instoreTypeName", + }, + { + title: "入库仓库", + key: "storeName", + }, + { + title: "相关å•å·", + key: "businessNo", + }, + { + 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: dom, + 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: "批次å·/SNå·", + 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 => <Table + style={{ marginLeft: 48 }} + columns={[ + { + title: "库ä½åç§°", + dataIndex: "storePositionName", + key: "storePositionName", + search: false, + "formItemProps": () => { + 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: "批次å·/SNå·", + 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 => <Table + style={{ marginLeft: 48 }} + columns={[ + { + title: "库ä½åç§°", + dataIndex: "storePositionName", + key: "storePositionName", + search: false, + "formItemProps": () => { + 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/upload", + 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: "批次å·/SNå·", + 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 => <EditUpload record={record} fid={fid} storeId={storeId} />, + }, + rowKey: "id" + }, + ], + }, + ] + }); + + + + +export default { + one, + two, + three, + four, + detail, + doinsert +}; diff --git a/src/pages/insertstore/Otherinstore/index.jsx b/src/pages/insertstore/Otherinstore/index.jsx new file mode 100644 index 0000000..ea2d686 --- /dev/null +++ b/src/pages/insertstore/Otherinstore/index.jsx @@ -0,0 +1,1042 @@ +import React, { useEffect, useMemo, useRef, useState } from "react"; +import { Dropdown, Menu, Button, message } 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"; + +const keytoval = { + one: 1, + two: 2, + three: 3, + four: 4, + }, + items = [ + { + key: "one", + label: <a>采è´å…¥åº“</a>, + }, + { + key: "two", + label: <a>生产入库</a>, + }, + { + key: "three", + label: <a>退料入库</a>, + }, + { + key: "four", + label: <a>其他入库</a>, + }, + ], + itemz = { + one: "采è´å…¥åº“", + two: "生产入库", + three: "退料入库", + four: "其他入库", + }; + +const defaultFields = { + 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/selectionBox", + params: { factoryIdList: [] }, + }), + params: {}, + }, + }, + businessNo: { + value: null, + type: "input", + title: "相关å•å·", + name: ["businessNo"], + required: false, + }, + 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/pmMaterie/queryUnitByMaterieId", + params, + }), + params: { materieId: "linked" }, + effectresult: { + productionUnit: "productionUnit", //key 为列表更新值 value为response 返回值 + productionUnitName: "productionUnitName", + materieControlNo: "materialCode", + instroeNum: "instroeNum", + supplierId: "supplierId", + }, + }, + }, + columns: [ + { + title: ( + <span> + 物料编ç -åç§° <b style={{ color: "red" }}>*</b> + </span> + ), + dataIndex: "materieId", + key: "materieId", + valueType: "select", + width: 300, + request: async () => { + let res = await doFetch({ + url: "/ngic-workmanship/pmMaterie/query/selectbox", + params: {}, + }); + return res?.data?.dataList; + }, + fieldProps: { + allowClear: true, + showSearch: true, + }, + formItemProps: () => { + return { + rules: [{ required: true, message: "æ¤é¡¹ä¸ºå¿…填项" }], + }; + }, + }, + { + title: ( + <span> + 供应商编å·-åç§° <b style={{ color: "red" }}>*</b> + </span> + ), + dataIndex: "supplierId", + key: "supplierId", + valueType: "select", + width: 300, + request: async () => { + let res = await doFetch({ + url: "/ngic-auth/sysSupplier/query/selection/withNo", + params: {}, + }); + return res?.data?.dataList; + }, + fieldProps: { + allowClear: true, + showSearch: true, + }, + formItemProps: () => { + return { + rules: [{ required: true, message: "æ¤é¡¹ä¸ºå¿…填项" }], + }; + }, + }, + { + title: "批次å·/SNå·", + dataIndex: "materieControlNo", + key: "materieControlNo", + }, + { + title: ( + <span> + å…¥åº“æ•°é‡ <b style={{ color: "red" }}>*</b> + </span> + ), + dataIndex: "instroeNum", + key: "instroeNum", + formItemProps: () => { + return { + rules: [{ required: true, message: "æ¤é¡¹ä¸ºå¿…填项" }], + }; + }, + valueType: "digit", + }, + { + title: "库å˜å•ä½", + dataIndex: "productionUnitName", + key: "productionUnitName", + readonly: "productionUnitName", + width: 88, + }, + { + title: "æ“作", + valueType: "option", + width: 70, + render: (text, record, _, action) => [ + <a key="delete" onClick={() => {}}> + åˆ é™¤ + </a>, + ], + }, + ], + rowKey: "id", + }, + }, + detail: (setselected, dom) => ({ + totalCard: [ + //物料详情 + { + cardTitle: "基本信æ¯", + itemData: [ + { + title: "入库å•å·", + key: "materieInstoreNo", + }, + { + title: "入库类型", + key: "instoreTypeName", + }, + { + title: "入库仓库", + key: "storeName", + }, + { + title: "相关å•å·", + key: "businessNo", + }, + { + 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: dom, + 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: "批次å·/SNå·", + 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) => ( + <Table + style={{ marginLeft: 48 }} + columns={[ + { + title: "库ä½åç§°", + dataIndex: "storePositionName", + key: "storePositionName", + search: false, + formItemProps: () => { + 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: "批次å·/SNå·", + 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) => ( + <Table + style={{ marginLeft: 48 }} + columns={[ + { + title: "库ä½åç§°", + dataIndex: "storePositionName", + key: "storePositionName", + search: false, + formItemProps: () => { + 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/upload", + 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: "批次å·/SNå·", + 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) => ( + <EditUpload record={record} fid={fid} storeId={storeId} /> + ), + }, + rowKey: "id", + }, + ], + }, + ], + }), +}; + +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 PrintButton = ( + <Button + disabled={!selectKeys.length} + onClick={() => { + mutiPrint(); + }} + > + æ‰“å° + </Button> + ); + + useEffect(() => { + const detail = defaultFields.detail(setSelectKeys, PrintButton); + setdrawprops((s) => ({ + ...s, + ...detail, + })); + }, [selectKeys]); + + const columns = useMemo(() => { + if (activeTabKey == "1") { + return [ + { + title: "入库å•å·", + dataIndex: "materieInstoreNo", + key: "materieInstoreNo", + render: (dom, record) => { + return ( + <a + onClick={async () => { + 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: ( + <Button + onClick={async () => { + handlePrint(); + }} + > + æ‰“å° + </Button> + ), + })); + }} + > + {dom} + </a> + ); + }, + }, + { + title: "入库类型", + dataIndex: "instoreTypeName", + key: "instoreType", + valueType: "select", + options: [ + { + label: "采è´å…¥åº“", + value: "1", + }, + { + label: "生产入库", + value: "2", + }, + { + label: "退料入库", + value: "3", + }, + { + label: "其他入库", + value: "4", + }, + ], + }, + { + title: "入库仓库", + dataIndex: "storeName", + key: "storeId", + fieldProps: { + allowClear: true, + showSearch: true, + }, + options: { + database: () => + doFetch({ + url: "/ngic-auth/sysStore/selectionBox", + params: { factoryIdList: [] }, + }), + params: {}, + }, + valueType: "select", + }, + { + title: "相关å•å·", + dataIndex: "businessNo", + key: "businessNo", + }, + { + title: "备注", + dataIndex: "remark", + key: "remark", + search: false, + }, + { + title: "创建人", + dataIndex: "createUserName", + key: "createUserName", + }, + { + title: "创建时间", + dataIndex: "createTime", + key: "createTime", + valueType: "dateRange", + formItemProps: { + name: "createTimeList", + }, + }, + { + title: "状æ€", + dataIndex: "statusName", + key: "status", + valueType: "select", + options: [ + { + 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 == 0 && + 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 ( + <a + onClick={() => { + setdrawprops((s) => ({ + ...s, + visible: true, + //查看详情 props + val: "detail", + title: `查看详情`, + ...defaultFields?.detail, + totalPath: + "/ngic-workmanship/wmsMaterieInstoreHis/getInStoreInfoById", + totalParams: { id: record.id }, + extra: null, + })); + }} + > + {dom} + </a> + ); + }, + }, + { + title: "入库类型", + dataIndex: "instoreTypeName", + key: "instoreType", + valueType: "select", + options: [ + { + label: "采è´å…¥åº“", + value: "1", + }, + { + label: "生产入库", + value: "2", + }, + { + label: "退料入库", + value: "3", + }, + { + label: "其他入库", + value: "4", + }, + ], + }, + { + title: "入库仓库", + dataIndex: "storeName", + key: "storeId", + fieldProps: { + allowClear: true, + showSearch: true, + }, + options: { + database: () => + doFetch({ + url: "/ngic-auth/sysStore/selectionBox", + params: { factoryIdList: [] }, + }), + params: {}, + }, + valueType: "select", + }, + { + title: "相关å•å·", + dataIndex: "businessNo", + key: "businessNo", + }, + { + title: "备注", + dataIndex: "remark", + key: "remark", + 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", + key: "status", + valueType: "select", + options: [ + { + label: "已上架", + value: "2", + }, + { + label: "已关å•", + value: "4", + }, + ], + }, + ]; + } + }, [activeTabKey]); + + const tableprops = { + ...props, + pageextra: + activeTabKey == "1" ? ( + <Button + type="primary" + onClick={(e) => { + setdrawprops((s) => ({ + ...s, + visible: true, + title: "新增" + itemz["four"], + fields: defaultFields["four"], + instoreType: keytoval["four"], + val: "add", //类型 + extra: null, + })); + }} + > + 新增 + </Button> + ) : ( + "none" + ), + tabList: [ + { + tab: "未完æˆ", + key: "1", + }, + { + tab: "已完æˆ", + key: "2", + }, + ], + activeTabKey, + onTabChange, + columns, + path: + activeTabKey == "1" + ? "/ngic-workmanship/wmsMaterieInstore/queryList" + : "/ngic-workmanship/wmsMaterieInstoreHis/queryList", + }; + + return ( + <div> + <div style={{ position: "fixed", bottom: -100000 }}> + <PrintDom ref={printRef} {...drawprops} /> + </div> + + <div style={{ display: "none" }}> + <PrintQrCode ref={mutiPrintRef} selectedItems={selectKeys} /> + </div> + + <AutoTable + {...tableprops} + actionRef={actionRef} + onRef={(node) => (ChildRef = node)} + ></AutoTable> + <DrawInitForm + {...drawprops} + submitData={async (value) => { + if (drawprops.val == "add") { + let res = await doFetch({ + url: "/ngic-workmanship/wmsMaterieInstore/saveInStore", + params: { ...value, instoreType: drawprops.instoreType }, + }); + if (res.code == "0000") { + reload(); + } + } + }} + reload={reload} + /> + </div> + ); +} + +export default Instore; diff --git a/src/pages/insertstore/Otherinstore/index.less b/src/pages/insertstore/Otherinstore/index.less new file mode 100644 index 0000000..6c9155a --- /dev/null +++ b/src/pages/insertstore/Otherinstore/index.less @@ -0,0 +1,10 @@ +.sitelayout { + min-height: calc(100vh - 98px) !important; + .sitelayoutbackground { + background: #fff; + } +} + +.title{ + margin: 0px; +} \ No newline at end of file diff --git a/src/pages/insertstore/Otherinstore/printdom.jsx b/src/pages/insertstore/Otherinstore/printdom.jsx new file mode 100644 index 0000000..c2fe036 --- /dev/null +++ b/src/pages/insertstore/Otherinstore/printdom.jsx @@ -0,0 +1,220 @@ +import { doFetch } from "@/utils/doFetch"; +import React, { + useState, + useImperativeHandle, + forwardRef, + useRef, +} from "react"; +import { useEffect } from "react"; +import { ScrollBoard } from "@jiaminghi/data-view-react"; +import { useWindowSize } from "@/utils/windowsize"; +const pageStyle = ` +@media all { + .page-break { + display: none; + } +} + +@media print { + html, body { + height: initial !important; + overflow: initial !important; + position:relative; + -webkit-print-color-adjust: exact; + word-break: break-all; + } + +} + +@media print { + .page-break { + margin-top:0; + display: block; + page-break-before: auto; + } +} + +@media print { + .page-noprint { + display: none !important; + } +} + +@page { + size: auto; + margin: 0px; +} +`; + +let 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: "批次å·/SNå·", + dataIndex: "materieControlNo", + key: "materieControlNo", + search: false, + }, + { + title: "入库数é‡", + dataIndex: "instroeNum", + key: "instroeNum", + search: false, + }, + { + title: "库å˜å•ä½", + dataIndex: "productionUnitName", + key: "productionUnitName", + search: false, + }, +]; + +function PrintDom({ totalPath, val, totalParams, totalCard }, ref) { + let printRef = useRef(); + const [data, setdata] = useState({}); + useImperativeHandle(ref, () => ({ + dom: printRef, + })); + + useEffect(() => { + if (val == "detail") { + doFetch({ url: totalPath, params: totalParams }).then((res) => { + setdata(res?.data?.data); + }); + } else { + } + }, [val]); + + let datas = data?.materialList + ? data?.materialList.map((it) => { + return columns.map((item) => { + if (item.render) { + return item.render(it, it); + } else { + return it[item.dataIndex]; + } + }); + }) + : []; + + return ( + <> + <style type="text/css" media="print"> + {pageStyle} + </style> + {val == "detail" && ( + <div + ref={printRef} + style={{ + width: "100%", + minHeight: "100%", + overflow: "inherit", + position: "relative", + }} + > + <div + style={{ + display: "flex", + justifyContent: "space-between", + alignItems: "center", + padding: "0 2%", + paddingBottom: 12, + }} + > + <h1 + style={{ + width: "100%", + fontSize: 40, + }} + > + å…¥åº“å·¥å• + </h1> + <img + style={{ + width: 300, + height: "auto", + }} + src={data?.qrCodeUrl} + alt="" + /> + </div> + + <div + style={{ + display: "flex", + flexWrap: "wrap", + paddingLeft: "2%", + }} + > + {totalCard && + totalCard[0].itemData + .filter((it) => !(it.noshow === true)) + .map((it) => { + return ( + <div + style={{ + width: it.noshow ?? "32%", + backgroundColor: "#f9f9f9", + marginRight: "1%", + marginBottom: 10, + padding: "4px", + fontSize: 20, + overflow: "inherit", + }} + > + <b>{it.title}: </b> + <span>{data[it.key] || "-"}</span> + </div> + ); + })} + </div> + + <div + style={{ + padding: "4px 2%", + position: "relative", + width: "100%", + overflow: "hidden", + }} + id="large" + > + <div + style={{ + marginBottom: 18, + }} + > + <b>{totalCard && totalCard[1].cardTitle}</b> + </div> + + <ScrollBoard + config={{ + header: columns.map((it) => it.title), + data: datas, + rowNum: datas.length, + hoverPause: false, + }} + /> + </div> + </div> + )} + </> + ); +} + +export default forwardRef(PrintDom); diff --git a/src/pages/outsetstore/Otheroutstore/index.jsx b/src/pages/outsetstore/Otheroutstore/index.jsx index 2d9405f..dacfcf4 100644 --- a/src/pages/outsetstore/Otheroutstore/index.jsx +++ b/src/pages/outsetstore/Otheroutstore/index.jsx @@ -66,13 +66,6 @@ const defaultFields = { params: {}, }, }, - businessNo: { - value: null, - type: "input", - title: "相关å•å·", - name: ["businessNo"], - required: false, - }, remark: { value: null, type: "textarea", @@ -95,13 +88,13 @@ const defaultFields = { //æ ¹æ®urlæŽ¥å£ æ”¹å˜æŸä¸ªvalue database: (params) => doFetch({ - url: "/ngic-workmanship/wmsMaterieStockStore/queryStoreOne", + url: "/ngic-workmanship/pmMaterie/queryById", params, }), params: { materieId: "linked" }, effectresult: { - productionUnit: "productionUnit", //key 为列表更新值 value为response 返回值 - productionUnitName: "productionUnitName", + specificationModel: "specificationModel", //key 为列表更新值 value为response 返回值 + ironLoss: "ironLoss", usableNum: "usableNum", outstroeNum: "outstroeNum", }, @@ -117,13 +110,6 @@ const defaultFields = { dataIndex: "materieId", key: "materieId", valueType: "select", - request: async () => { - let res = await doFetch({ - url: "/ngic-workmanship/pmMaterie/selectboxByStoreId", - params: {storeId:formRef.current}, - }); - return res?.data?.dataList; - }, fieldProps: { allowClear: true, showSearch: true, @@ -133,11 +119,36 @@ const defaultFields = { rules: [{ required: true, message: "æ¤é¡¹ä¸ºå¿…填项" }], }; }, + editable: true, + }, + { + title: <span>è§„æ ¼åž‹å·</span>, + dataIndex: "specificationModel", + key: "specificationModel", + readonly: "specificationModel", + }, + { + title: "铿Ÿ", + dataIndex: "ironLoss", + key: "ironLoss", + readonly: "ironLoss", + }, + { + title: "片厚", + dataIndex: "sheetThickness", + key: "sheetThickness", + // readonly: "sheetThickness", + }, + { + title: "牌å·", + dataIndex: "shopSign", + key: "shopSign", + readonly: "shopSign", }, { title: ( <span> - å‡ºåº“æ•°é‡ <b style={{ color: "red" }}>*</b> + 出库数é‡<b style={{ color: "red" }}>*</b> </span> ), dataIndex: "outstroeNum", @@ -148,9 +159,6 @@ const defaultFields = { }; }, valueType: "digit", - fieldProps: { - precision: 3, - }, }, { title: "å¯ç”¨åº“å˜", @@ -164,6 +172,7 @@ const defaultFields = { key: "productionUnitName", readonly: "productionUnitName", }, + { title: "æ“作", valueType: "option", @@ -645,6 +654,7 @@ function Outstore(props) { dataIndex: "outstoreTypeName", key: "outstoreType", valueType: "select", + search: false, options: [ { label: "生产领料出库", @@ -667,6 +677,7 @@ function Outstore(props) { { title: "出库仓库", dataIndex: "storeName", + search: false, key: "storeId", fieldProps: { allowClear: true, @@ -682,11 +693,6 @@ function Outstore(props) { }, valueType: "select", }, - { - title: "相关å•å·", - dataIndex: "businessNo", - key: "businessNo", - }, { title: "备注", dataIndex: "remark", @@ -820,6 +826,7 @@ function Outstore(props) { { title: "出库类型", dataIndex: "outstoreTypeName", + search: false, key: "outstoreType", valueType: "select", options: [ @@ -843,6 +850,7 @@ function Outstore(props) { }, { title: "出库仓库", + search: false, dataIndex: "storeName", key: "storeId", fieldProps: { @@ -859,11 +867,7 @@ function Outstore(props) { }, valueType: "select", }, - { - title: "相关å•å·", - dataIndex: "businessNo", - key: "businessNo", - }, + { title: "备注", dataIndex: "remark", @@ -887,6 +891,7 @@ function Outstore(props) { { title: "å®Œæˆæ—¶é—´", dataIndex: "finishTime", + search: false, key: "finishTime", valueType: "dateRange", formItemProps: { @@ -896,18 +901,8 @@ function Outstore(props) { { title: "状æ€", dataIndex: "statusName", + search: false, key: "status", - valueType: "select", - options: [ - { - label: "已下架", - value: "2", - }, - { - label: "已关å•", - value: "4", - }, - ], }, ]; } @@ -974,9 +969,10 @@ function Outstore(props) { if (drawprops.val == "add") { let newfileds = JSON.parse(JSON.stringify(value)); newfileds.materialList = newfileds?.materialList?.map((it) => { - delete it.usableNum; - delete it.id; - return it; + return { + materieId: it?.materieId, + outstroeNum: it?.outstroeNum, + }; }); let res = await doFetch({ url: "/ngic-workmanship/wmsMaterieOutstore/saveOutStore", @@ -1005,15 +1001,19 @@ function Outstore(props) { //æ ¹æ®urlæŽ¥å£ æ”¹å˜æŸä¸ªvalue database: (params) => doFetch({ - url: "/ngic-workmanship/wmsMaterieStockStore/queryStoreOne", + url: "/ngic-workmanship/pmMaterie/queryById", params, }), - params: { materieId: "linked", storeId: changedValues[i] }, + params: { materieId: "linked" }, effectresult: { - productionUnit: "productionUnit", //key 为列表更新值 value为response 返回值 - productionUnitName: "productionUnitName", + specificationModel: "specificationModel", //key 为列表更新值 value为response 返回值 + ironLoss: "ironLoss", usableNum: "usableNum", outstroeNum: "outstroeNum", + sheetThickness: "sheetThickness", + shopSign: "shopSign", + usableNum: "usableNum", + productionUnitName: "productionUnitName", }, }, }; @@ -1039,10 +1039,34 @@ function Outstore(props) { }, editable: true, }, + { + title: <span>è§„æ ¼åž‹å·</span>, + dataIndex: "specificationModel", + key: "specificationModel", + readonly: "specificationModel", + }, + { + title: "铿Ÿ", + dataIndex: "ironLoss", + key: "ironLoss", + readonly: "ironLoss", + }, + { + title: "片厚", + dataIndex: "sheetThickness", + key: "sheetThickness", + readonly: "sheetThickness", + }, + { + title: "牌å·", + dataIndex: "shopSign", + key: "shopSign", + readonly: "shopSign", + }, { title: ( <span> - å‡ºåº“æ•°é‡ <b style={{ color: "red" }}>*</b> + 出库数é‡<b style={{ color: "red" }}>*</b> </span> ), dataIndex: "outstroeNum", @@ -1053,10 +1077,6 @@ function Outstore(props) { }; }, valueType: "digit", - fieldProps: { - precision: 3, - }, - editable: true, }, { title: "å¯ç”¨åº“å˜", @@ -1070,6 +1090,7 @@ function Outstore(props) { key: "productionUnitName", readonly: "productionUnitName", }, + { title: "æ“作", valueType: "option", @@ -1085,6 +1106,7 @@ function Outstore(props) { let newfields = { ...fields, }; + console.log("123123123131", newfields); return { ...s, fields: newfields, diff --git a/src/pages/user/Login/index.jsx b/src/pages/user/Login/index.jsx index d2f9711..2624a31 100644 --- a/src/pages/user/Login/index.jsx +++ b/src/pages/user/Login/index.jsx @@ -6,7 +6,7 @@ import { CloseOutlined, } from "@ant-design/icons"; import { Alert, message, Tabs, Row, Col, Button, Input } from "antd"; -import React, { useState, useRef } from "react"; +import React, { useState, useRef, useEffect, useLayoutEffect } from "react"; import { ProFormCaptcha, ProFormCheckbox, @@ -38,7 +38,6 @@ import { import { doFetch } from "@/utils/doFetch"; import { ProDescriptions } from "@ant-design/pro-components"; - const { Search } = Input; const { TabPane } = Tabs; @@ -92,6 +91,20 @@ const Login = () => { const { query } = history.location; const { redirect } = query; history.push(redirect || "/"); + try { + var LODOP = window.getLodop(); + if (LODOP.VERSION) { + if (LODOP.CVERSION) + alert( + "当剿œ‰WEBæ‰“å°æœåŠ¡C-Lodopå¯ç”¨!\n C-Lodop版本:" + + LODOP.CVERSION + + "(内å«Lodop" + + LODOP.VERSION + + ")" + ); + else alert("本机已æˆåŠŸå®‰è£…äº†Lodop控件ï¼\n 版本å·:" + LODOP.VERSION); + } + } catch (err) {} return; } } catch (error) { @@ -614,7 +627,6 @@ const Login = () => { </Link> */} </div> </LoginForm> - </div> <Footer></Footer> </div> -- 2.21.0