From d20c04c88f55e1581bb2054d99483aba95f04fee Mon Sep 17 00:00:00 2001
From: skyouc
Date: 星期四, 13 三月 2025 13:17:51 +0800
Subject: [PATCH] Merge branch 'front' into devlop
---
rsf-admin/src/page/components/MyExportButton.jsx | 145 +--
rsf-admin/src/page/asnOrder/AsnOrderEdit.jsx | 10
rsf-admin/src/page/asnOrderItem/AsnOrderItemCreate.jsx | 4
rsf-admin/src/page/asnOrderItem/AsnOrderItemList.jsx | 321 ++++----
rsf-admin/src/page/qlyInspect/QlyInspectPanel.jsx | 30
rsf-admin/src/page/components/MyCreateButton.jsx | 100 +-
rsf-admin/src/page/components/ImportModal.jsx | 36
rsf-admin/src/page/asnOrder/AsnOrderCreate.jsx | 14
rsf-admin/src/page/system/dicts/dictType/DictTypeCreate.jsx | 3
rsf-admin/src/page/system/dicts/dictData/DictDataEdit.jsx | 5
rsf-admin/src/i18n/zh.js | 38
rsf-admin/src/page/system/dicts/dictData/DictDataCreate.jsx | 9
rsf-admin/src/i18n/en.js | 36
rsf-admin/src/page/ResourceContent.js | 4
rsf-admin/src/page/qlyInspect/QlyInspectEdit.jsx | 31
rsf-admin/src/page/asnOrder/AsnOrderList.jsx | 317 ++++---
rsf-admin/src/page/purchaseItem/PurchaseItemCreate.jsx | 4
rsf-admin/src/page/qlyInspect/QlyInspectList.jsx | 10
rsf-admin/src/i18n/core/chineseMessages.js | 412 +++++-----
rsf-admin/src/page/system/operationRecord/OperationRecordList.jsx | 3
rsf-admin/src/page/purchase/PurchaseEdit.jsx | 4
rsf-admin/src/page/system/dicts/dictData/DictDataList.jsx | 13
rsf-admin/src/page/purchaseItem/PurchaseItemList.jsx | 298 ++++---
rsf-admin/src/page/system/serialRule/SerialRuleDetail.jsx | 2
rsf-admin/src/config/MyDataProvider.js | 1
rsf-admin/src/page/qlyInspect/QlyInspectCreate.jsx | 31
rsf-admin/src/page/purchase/PurchaseList.jsx | 296 ++++---
rsf-admin/src/page/system/dicts/dictType/DictTypeList.jsx | 4
rsf-admin/src/page/purchase/PurchaseCreate.jsx | 4
29 files changed, 1,202 insertions(+), 983 deletions(-)
diff --git a/rsf-admin/src/config/MyDataProvider.js b/rsf-admin/src/config/MyDataProvider.js
index 2255bbc..cfc312f 100644
--- a/rsf-admin/src/config/MyDataProvider.js
+++ b/rsf-admin/src/config/MyDataProvider.js
@@ -135,7 +135,6 @@
// export excel from all data
export: async (resource, params) => {
- console.log("export", resource, params);
const _params = Common.integrateParams(params);
try {
const res = await request.post(`${resource}/export`, _params, {
diff --git a/rsf-admin/src/i18n/core/chineseMessages.js b/rsf-admin/src/i18n/core/chineseMessages.js
index f6eafa3..0dc0430 100644
--- a/rsf-admin/src/i18n/core/chineseMessages.js
+++ b/rsf-admin/src/i18n/core/chineseMessages.js
@@ -1,213 +1,205 @@
const chineseMessages = {
- ra: {
- action: {
- add_filter: '杩囨护鏉′欢',
- add: '娣诲姞',
- back: '杩斿洖',
- bulk_actions: '1 item selected |||| %{smart_count} items selected',
- cancel: '鍙栨秷',
- clear_array_input: '鎯呯┖鍒楄〃',
- clear_input_value: '娓呯┖',
- clone: '鍏嬮殕',
- confirm: '纭畾',
- create: '娣诲姞',
- create_item: '娣诲姞 %{item}',
- delete: '鍒犻櫎',
- edit: '缂栬緫',
- export: '瀵煎嚭',
- list: '鍒楄〃',
- refresh: '鍒锋柊',
- remove_filter: 'Remove this filter',
- remove_all_filters: '绉婚櫎鎵�鏈�',
- remove: '绉婚櫎',
- save: '淇濆瓨',
- search: '鎼滅储',
- select_all: '鍏ㄩ儴閫変腑',
- select_row: '閫変腑涓�琛�',
- show: '鏄剧ず',
- sort: '鎺掑簭',
- undo: '鎾ら攢',
- unselect: '鍙栨秷閫夋嫨',
- expand: '灞曞紑',
- close: '鍏抽棴',
- open_menu: 'Open menu',
- close_menu: 'Close menu',
- update: '淇敼',
- move_up: 'Move up',
- move_down: 'Move down',
- open: 'Open',
- toggle_theme: 'Toggle light/dark mode',
- select_columns: '绛涢�夊垪',
- update_application: 'Reload Application',
- },
- boolean: {
- true: '鏄�',
- false: '鍚�',
- null: '鈥�',
- },
- page: {
- create: 'Create %{name}',
- dashboard: 'Dashboard',
- edit: '%{name} %{recordRepresentation}',
- error: 'Something went wrong',
- list: '%{name}',
- loading: 'Loading',
- not_found: 'Not Found',
- show: '%{name} %{recordRepresentation}',
- empty: 'No %{name} yet.',
- invite: 'Do you want to add one?',
- },
- input: {
- file: {
- upload_several:
- '鎷栨斁涓�浜涜涓婁紶鐨勬枃浠讹紝鎴栧崟鍑讳互閫夋嫨涓�涓�',
- upload_single: '鎷栨斁瑕佷笂浼犵殑鏂囦欢锛屾垨鍗曞嚮浠ラ�夋嫨瀹�',
- },
- image: {
- upload_several:
- 'Drop some pictures to upload, or click to select one.',
- upload_single:
- 'Drop a picture to upload, or click to select it.',
- },
- references: {
- all_missing: 'Unable to find references data.',
- many_missing:
- 'At least one of the associated references no longer appears to be available.',
- single_missing:
- 'Associated reference no longer appears to be available.',
- },
- password: {
- toggle_visible: 'Hide password',
- toggle_hidden: 'Show password',
- },
- },
- message: {
- about: 'About',
- are_you_sure: 'Are you sure?',
- auth_error:
- 'An error occurred while validating the authentication token.',
- bulk_delete_content:
- 'Are you sure you want to delete this %{name}? |||| Are you sure you want to delete these %{smart_count} items?',
- bulk_delete_title:
- '鍒犻櫎 %{name} |||| 鍒犻櫎 %{smart_count} %{name}',
- bulk_update_content:
- 'Are you sure you want to update this %{name}? |||| Are you sure you want to update these %{smart_count} items?',
- bulk_update_title:
- '淇敼 %{name} |||| 淇敼 %{smart_count} %{name}',
- clear_array_input: 'Are you sure you want to clear the whole list?',
- delete_content: '鎮ㄧ‘瀹炶鍒犻櫎姝ら」鍚楋紵',
- delete_title: '鍒犻櫎 %{name} #%{id}',
- details: 'Details',
- error: "A client error occurred and your request couldn't be completed.",
-
- invalid_form: '琛ㄥ崟鏃犳晥 璇锋鏌ユ槸鍚︽湁閿欒!',
- loading: 'Please wait',
- no: 'No',
- not_found:
- 'Either you typed a wrong URL, or you followed a bad link.',
- yes: 'Yes',
- unsaved_changes:
- "Some of your changes weren't saved. Are you sure you want to ignore them?",
- },
- navigation: {
- no_results: '娌℃湁鎵惧埌鏁版嵁',
- no_more_results:
- 'The page number %{page} is out of boundaries. Try the previous page.',
- page_out_of_boundaries: 'Page number %{page} out of boundaries',
- page_out_from_end: 'Cannot go after last page',
- page_out_from_begin: 'Cannot go before page 1',
- page_range_info: '%{offsetBegin}-%{offsetEnd} of %{total}',
- partial_page_range_info:
- '%{offsetBegin}-%{offsetEnd} of more than %{offsetEnd}',
- current_page: 'Page %{page}',
- page: 'Go to page %{page}',
- first: 'Go to first page',
- last: 'Go to last page',
- next: 'Go to next page',
- previous: 'Go to previous page',
- page_rows_per_page: '姣忛〉鏁伴噺:',
- skip_nav: 'Skip to content',
- },
- sort: {
- sort_by: 'Sort by %{field} %{order}',
- ASC: 'ascending',
- DESC: 'descending',
- },
- auth: {
- auth_check_error: 'Please login to continue',
- user_menu: 'Profile',
- username: 'Username',
- password: 'Password',
- sign_in: 'Sign in',
- sign_in_error: 'Authentication failed, please retry',
- logout: 'Logout',
- },
- notification: {
- updated: '淇敼鎴愬姛 |||| %{smart_count} 椤� 淇敼鎴愬姛',
- created: '娣诲姞鎴愬姛',
- deleted: '鍒犻櫎鎴愬姛 |||| %{smart_count} 椤� 鍒犻櫎鎴愬姛',
- bad_item: 'Incorrect element',
- item_doesnt_exist: 'Element does not exist',
- http_error: 'Server communication error',
- data_provider_error:
- 'dataProvider error. Check the console for details.',
- i18n_error:
- 'Cannot load the translations for the specified language',
- canceled: 'Action cancelled',
- logged_out: 'Your session has ended, please reconnect.',
- not_authorized: "You're not authorized to access this resource.",
- application_update_available: 'A new version is available.',
- },
- validation: {
- required: '蹇呭~椤�',
- minLength: 'Must be %{min} characters at least',
- maxLength: 'Must be %{max} characters or less',
- minValue: 'Must be at least %{min}',
- maxValue: 'Must be %{max} or less',
- number: 'Must be a number',
- email: 'Must be a valid email',
- oneOf: 'Must be one of: %{options}',
- regex: 'Must match a specific format (regexp): %{pattern}',
- unique: 'Must be unique',
- },
- saved_queries: {
- label: '淇濆瓨杩囨护',
- query_name: 'Query name',
- new_label: '淇濆瓨杩囨护鏉′欢...',
- new_dialog_title: 'Save current query as',
- remove_label: '绉婚櫎杩囨护鏉′欢',
- remove_label_with_name: 'Remove query "%{name}"',
- remove_dialog_title: '绉婚櫎杩囨护鏉′欢?',
- remove_message:
- '鎮ㄧ‘瀹氳绉婚櫎宸蹭繚瀛樿繃婊ゆ潯浠跺悧锛�',
- help: 'Filter the list and save this query for later',
- },
- configurable: {
- customize: 'Customize',
- configureMode: 'Configure this page',
- inspector: {
- title: 'Inspector',
- content: 'Hover the application UI elements to configure them',
- reset: 'Reset Settings',
- hideAll: 'Hide All',
- showAll: 'Show All',
- },
- Datagrid: {
- title: 'Datagrid',
- unlabeled: 'Unlabeled column #%{column}',
- },
- SimpleForm: {
- title: 'Form',
- unlabeled: 'Unlabeled input #%{input}',
- },
- SimpleList: {
- title: 'List',
- primaryText: 'Primary text',
- secondaryText: 'Secondary text',
- tertiaryText: 'Tertiary text',
- },
- },
+ ra: {
+ action: {
+ add_filter: "杩囨护鏉′欢",
+ add: "娣诲姞",
+ back: "杩斿洖",
+ bulk_actions: "1 item selected |||| %{smart_count} items selected",
+ cancel: "鍙栨秷",
+ clear_array_input: "鎯呯┖鍒楄〃",
+ clear_input_value: "娓呯┖",
+ clone: "鍏嬮殕",
+ confirm: "纭畾",
+ create: "娣诲姞",
+ create_item: "娣诲姞 %{item}",
+ delete: "鍒犻櫎",
+ edit: "缂栬緫",
+ export: "瀵煎嚭",
+ import: "瀵煎叆",
+ list: "鍒楄〃",
+ refresh: "鍒锋柊",
+ remove_filter: "Remove this filter",
+ remove_all_filters: "绉婚櫎鎵�鏈�",
+ remove: "绉婚櫎",
+ save: "淇濆瓨",
+ search: "鎼滅储",
+ select_all: "鍏ㄩ儴閫変腑",
+ select_row: "閫変腑涓�琛�",
+ show: "鏄剧ず",
+ sort: "鎺掑簭",
+ undo: "鎾ら攢",
+ unselect: "鍙栨秷閫夋嫨",
+ expand: "灞曞紑",
+ close: "鍏抽棴",
+ open_menu: "Open menu",
+ close_menu: "Close menu",
+ update: "淇敼",
+ move_up: "Move up",
+ move_down: "Move down",
+ open: "Open",
+ toggle_theme: "Toggle light/dark mode",
+ select_columns: "绛涢�夊垪",
+ update_application: "Reload Application",
},
-}
+ boolean: {
+ true: "鏄�",
+ false: "鍚�",
+ null: "鈥�",
+ },
+ page: {
+ create: "Create %{name}",
+ dashboard: "Dashboard",
+ edit: "%{name} %{recordRepresentation}",
+ error: "Something went wrong",
+ list: "%{name}",
+ loading: "Loading",
+ not_found: "Not Found",
+ show: "%{name} %{recordRepresentation}",
+ empty: "No %{name} yet.",
+ invite: "Do you want to add one?",
+ },
+ input: {
+ file: {
+ upload_several: "鎷栨斁涓�浜涜涓婁紶鐨勬枃浠讹紝鎴栧崟鍑讳互閫夋嫨涓�涓�",
+ upload_single: "鎷栨斁瑕佷笂浼犵殑鏂囦欢锛屾垨鍗曞嚮浠ラ�夋嫨瀹�",
+ },
+ image: {
+ upload_several: "Drop some pictures to upload, or click to select one.",
+ upload_single: "Drop a picture to upload, or click to select it.",
+ },
+ references: {
+ all_missing: "Unable to find references data.",
+ many_missing:
+ "At least one of the associated references no longer appears to be available.",
+ single_missing:
+ "Associated reference no longer appears to be available.",
+ },
+ password: {
+ toggle_visible: "Hide password",
+ toggle_hidden: "Show password",
+ },
+ },
+ message: {
+ about: "About",
+ are_you_sure: "Are you sure?",
+ auth_error:
+ "An error occurred while validating the authentication token.",
+ bulk_delete_content:
+ "Are you sure you want to delete this %{name}? |||| Are you sure you want to delete these %{smart_count} items?",
+ bulk_delete_title: "鍒犻櫎 %{name} |||| 鍒犻櫎 %{smart_count} %{name}",
+ bulk_update_content:
+ "Are you sure you want to update this %{name}? |||| Are you sure you want to update these %{smart_count} items?",
+ bulk_update_title: "淇敼 %{name} |||| 淇敼 %{smart_count} %{name}",
+ clear_array_input: "Are you sure you want to clear the whole list?",
+ delete_content: "鎮ㄧ‘瀹炶鍒犻櫎姝ら」鍚楋紵",
+ delete_title: "鍒犻櫎 %{name} #%{id}",
+ details: "Details",
+ error: "A client error occurred and your request couldn't be completed.",
-export default chineseMessages;
\ No newline at end of file
+ invalid_form: "琛ㄥ崟鏃犳晥 璇锋鏌ユ槸鍚︽湁閿欒!",
+ loading: "Please wait",
+ no: "No",
+ not_found: "Either you typed a wrong URL, or you followed a bad link.",
+ yes: "Yes",
+ unsaved_changes:
+ "Some of your changes weren't saved. Are you sure you want to ignore them?",
+ },
+ navigation: {
+ no_results: "娌℃湁鎵惧埌鏁版嵁",
+ no_more_results:
+ "The page number %{page} is out of boundaries. Try the previous page.",
+ page_out_of_boundaries: "Page number %{page} out of boundaries",
+ page_out_from_end: "Cannot go after last page",
+ page_out_from_begin: "Cannot go before page 1",
+ page_range_info: "%{offsetBegin}-%{offsetEnd} of %{total}",
+ partial_page_range_info:
+ "%{offsetBegin}-%{offsetEnd} of more than %{offsetEnd}",
+ current_page: "Page %{page}",
+ page: "Go to page %{page}",
+ first: "Go to first page",
+ last: "Go to last page",
+ next: "Go to next page",
+ previous: "Go to previous page",
+ page_rows_per_page: "姣忛〉鏁伴噺:",
+ skip_nav: "Skip to content",
+ },
+ sort: {
+ sort_by: "Sort by %{field} %{order}",
+ ASC: "ascending",
+ DESC: "descending",
+ },
+ auth: {
+ auth_check_error: "Please login to continue",
+ user_menu: "Profile",
+ username: "Username",
+ password: "Password",
+ sign_in: "Sign in",
+ sign_in_error: "Authentication failed, please retry",
+ logout: "Logout",
+ },
+ notification: {
+ updated: "淇敼鎴愬姛 |||| %{smart_count} 椤� 淇敼鎴愬姛",
+ created: "娣诲姞鎴愬姛",
+ deleted: "鍒犻櫎鎴愬姛 |||| %{smart_count} 椤� 鍒犻櫎鎴愬姛",
+ bad_item: "Incorrect element",
+ item_doesnt_exist: "Element does not exist",
+ http_error: "Server communication error",
+ data_provider_error: "dataProvider error. Check the console for details.",
+ i18n_error: "Cannot load the translations for the specified language",
+ canceled: "Action cancelled",
+ logged_out: "Your session has ended, please reconnect.",
+ not_authorized: "You're not authorized to access this resource.",
+ application_update_available: "A new version is available.",
+ },
+ validation: {
+ required: "蹇呭~椤�",
+ minLength: "Must be %{min} characters at least",
+ maxLength: "Must be %{max} characters or less",
+ minValue: "Must be at least %{min}",
+ maxValue: "Must be %{max} or less",
+ number: "Must be a number",
+ email: "Must be a valid email",
+ oneOf: "Must be one of: %{options}",
+ regex: "Must match a specific format (regexp): %{pattern}",
+ unique: "Must be unique",
+ },
+ saved_queries: {
+ label: "淇濆瓨杩囨护",
+ query_name: "Query name",
+ new_label: "淇濆瓨杩囨护鏉′欢...",
+ new_dialog_title: "Save current query as",
+ remove_label: "绉婚櫎杩囨护鏉′欢",
+ remove_label_with_name: 'Remove query "%{name}"',
+ remove_dialog_title: "绉婚櫎杩囨护鏉′欢?",
+ remove_message: "鎮ㄧ‘瀹氳绉婚櫎宸蹭繚瀛樿繃婊ゆ潯浠跺悧锛�",
+ help: "Filter the list and save this query for later",
+ },
+ configurable: {
+ customize: "Customize",
+ configureMode: "Configure this page",
+ inspector: {
+ title: "Inspector",
+ content: "Hover the application UI elements to configure them",
+ reset: "Reset Settings",
+ hideAll: "Hide All",
+ showAll: "Show All",
+ },
+ Datagrid: {
+ title: "Datagrid",
+ unlabeled: "Unlabeled column #%{column}",
+ },
+ SimpleForm: {
+ title: "Form",
+ unlabeled: "Unlabeled input #%{input}",
+ },
+ SimpleList: {
+ title: "List",
+ primaryText: "Primary text",
+ secondaryText: "Secondary text",
+ tertiaryText: "Tertiary text",
+ },
+ },
+ },
+};
+
+export default chineseMessages;
diff --git a/rsf-admin/src/i18n/en.js b/rsf-admin/src/i18n/en.js
index 7b12baf..c0a1107 100644
--- a/rsf-admin/src/i18n/en.js
+++ b/rsf-admin/src/i18n/en.js
@@ -142,6 +142,7 @@
whMat: 'Warehouse Mat',
fields: 'Extend Fields',
fieldsItem: 'Extend Fields Items',
+ warehouseAreasItem: 'WarehouseAreasItem',
},
table: {
field: {
@@ -303,6 +304,25 @@
flagLabelMange: "flagLabelMange",
flagMix: "flagMix",
},
+ warehouseAreasItem: {
+ areaId: "areaId",
+ areaName: "areaName",
+ matnrId: "matnrId",
+ matnrName: "matnrName",
+ matnrCode: "matnrCode",
+ fieldsIndex: "fieldsIndex",
+ barcode: "barcode",
+ anfme: "anfme",
+ batch: "batch",
+ unit: "unit",
+ stockUnit: "stockUnit",
+ brand: "brand",
+ shipperId: "shipperId",
+ splrId: "splrId",
+ weight: "weight",
+ prodTime: "prodTime",
+ splrBtch: "splrBtch",
+ },
loc: {
warehouseId: "Warehouse",
areaId: "Area",
@@ -346,8 +366,13 @@
projectName: "ProjectName",
},
qlyInspect: {
- code: "Code",
- name: "Name",
+ code: "code",
+ name: "name",
+ barcode: "barcode",
+ asnItemId: "asnItemId",
+ poItemId: "poItemId",
+ safeQty: "safeQty",
+ disQty: "disQty",
},
dictType: {
code: "Code",
@@ -553,7 +578,12 @@
shipper: 'shipper is required',
groupId: 'groupId is required',
}
- }
+ },
+ toolbar: {
+ inspection: "Inspection",
+ creatcode: "creatcode",
+ print: "print",
+ },
};
export default customEnglishMessages;
diff --git a/rsf-admin/src/i18n/zh.js b/rsf-admin/src/i18n/zh.js
index 1551bc2..1f2cd1e 100644
--- a/rsf-admin/src/i18n/zh.js
+++ b/rsf-admin/src/i18n/zh.js
@@ -141,6 +141,7 @@
whMat: '搴撳尯鐗╂枡鍏崇郴',
fields: '鎵╁睍瀛楁',
fieldsItem: '鎵╁睍瀛楁鏄庣粏',
+ warehouseAreasItem: '搴撳尯搴撳瓨淇℃伅',
},
table: {
field: {
@@ -302,6 +303,25 @@
flagLabelMange: "鏍囩绠$悊",
flagMix: "娣锋斁",
},
+ warehouseAreasItem: {
+ areaId: "浠撳簱鍖哄煙",
+ areaName: "鍖哄煙鍚嶇О ",
+ matnrId: "鐗╂枡鏍囪瘑",
+ matnrName: "鐗╂枡鍚嶇О",
+ matnrCode: "鐗╂枡缂栫爜",
+ fieldsIndex: "鎵╁睍瀛楁鍞竴鏍囪瘑",
+ barcode: "鏉″舰鐮�",
+ anfme: "鏁伴噺",
+ batch: "鎵规鍙�",
+ unit: "璁¢噺鍗曚綅",
+ stockUnit: "搴撳瓨鍗曚綅",
+ brand: "鍝佺墝",
+ shipperId: "璐т富鏍囪瘑",
+ splrId: "渚涘簲鍟嗘爣璇�",
+ weight: "鏀惰揣閲嶉噺",
+ prodTime: "鐢熶骇鏃ユ湡",
+ splrBtch: "渚涘簲鍟嗘壒娆�",
+ },
loc: {
warehouseId: "浠撳簱",
areaId: "搴撳尯",
@@ -348,11 +368,16 @@
qlyInspect: {
code: "缂栫爜",
name: "鍚嶇О",
+ barcode: "鏍囩鐮�",
+ asnItemId: "閫氱煡鍗曟槑缁嗘爣璇�",
+ poItemId: "PO鍗曟槑缁嗘爣璇�",
+ safeQty: "鍚堟牸鏁伴噺",
+ disQty: "涓嶅悎鏍兼暟閲�",
},
dictType: {
code: "瀛楀吀缂栫爜",
name: "瀛楀吀鍚嶇О",
- description: "鍐呭鎻忚堪",
+ description: "鍐呭",
},
dictData: {
dictTypeId: "瀛楀吀鏍囪瘑",
@@ -411,7 +436,7 @@
wkType: "涓氬姟绫诲瀷",
anfme: "鏁伴噺",
qty: "宸插畬鎴愭暟閲�",
- logisNo: "logisNo",
+ logisNo: "鐗╂祦鍗曞彿",
arrTime: "棰勮鍒拌揪鏃堕棿",
rleStatus: "閲婃斁鐘舵��",
ntyStatus: "璐ㄦ涓婃姤鐘舵��",
@@ -460,7 +485,7 @@
anfme: "鏁伴噺",
qty: "宸插畬鎴�",
nromQty: "鏍囧寘鏁伴噺",
- asnQty: "鍗曟嵁鏁伴噺",
+ asnQty: "鍗曟嵁鏁伴噺",
printQty: "鎵撳嵃鏁伴噺",
splrName: "渚涘簲鍟嗗悕绉�",
splrCode: "渚涘簲鍟嗙紪鐮�",
@@ -555,7 +580,12 @@
shipper: '璐т富涓嶈兘涓虹┖',
groupId: '鍒嗙粍涓嶈兘涓虹┖',
}
- }
+ },
+ toolbar: {
+ inspection: "鎶ユ",
+ creatcode: "鐢熸垚鏉$爜",
+ print: "鎵撳嵃",
+ },
};
export default customChineseMessages;
diff --git a/rsf-admin/src/page/ResourceContent.js b/rsf-admin/src/page/ResourceContent.js
index 6f35cdf..1c808a1 100644
--- a/rsf-admin/src/page/ResourceContent.js
+++ b/rsf-admin/src/page/ResourceContent.js
@@ -33,7 +33,7 @@
import purchase from './purchase';
import fields from './fields';
import fieldsItem from './fieldsItem';
-
+import warehouseAreasItem from './warehouseAreasItem';
const ResourceContent = (node) => {
switch (node.component) {
@@ -63,6 +63,8 @@
return warehouse;
case 'warehouseAreas':
return warehouseAreas;
+ case 'warehouseAreasItem':
+ return warehouseAreasItem;
case 'loc':
return loc;
case 'container':
diff --git a/rsf-admin/src/page/asnOrder/AsnOrderCreate.jsx b/rsf-admin/src/page/asnOrder/AsnOrderCreate.jsx
index 8f98e05..6ace1c2 100644
--- a/rsf-admin/src/page/asnOrder/AsnOrderCreate.jsx
+++ b/rsf-admin/src/page/asnOrder/AsnOrderCreate.jsx
@@ -84,14 +84,14 @@
</DialogTitle>
<DialogContent sx={{ mt: 2 }}>
<Grid container rowSpacing={2} columnSpacing={2}>
- <Grid item xs={6} display="flex" gap={1}>
+ {/* <Grid item xs={6} display="flex" gap={1}>
<TextInput
label="table.field.asnOrder.code"
source="code"
parse={v => v}
autoFocus
/>
- </Grid>
+ </Grid> */}
<Grid item xs={6} display="flex" gap={1}>
<TextInput
label="table.field.asnOrder.poCode"
@@ -121,20 +121,20 @@
validate={required()}
/>
</Grid>
- <Grid item xs={6} display="flex" gap={1}>
+ {/* <Grid item xs={6} display="flex" gap={1}>
<NumberInput
label="table.field.asnOrder.anfme"
source="anfme"
validate={required()}
/>
- </Grid>
- <Grid item xs={6} display="flex" gap={1}>
+ </Grid> */}
+ {/* <Grid item xs={6} display="flex" gap={1}>
<NumberInput
label="table.field.asnOrder.qty"
source="qty"
validate={required()}
/>
- </Grid>
+ </Grid> */}
<Grid item xs={6} display="flex" gap={1}>
<TextInput
label="table.field.asnOrder.logisNo"
@@ -154,7 +154,7 @@
source="rleStatus"
choices={[
{ id: 0, name: ' 姝e父' },
- { id: 1, name: ' 宸查噴鏀�' },
+ { id: 1, name: ' 宸查噴鏀�' },
]}
/>
</Grid>
diff --git a/rsf-admin/src/page/asnOrder/AsnOrderEdit.jsx b/rsf-admin/src/page/asnOrder/AsnOrderEdit.jsx
index 5cba002..92753d8 100644
--- a/rsf-admin/src/page/asnOrder/AsnOrderEdit.jsx
+++ b/rsf-admin/src/page/asnOrder/AsnOrderEdit.jsx
@@ -63,14 +63,14 @@
<Typography variant="h6" gutterBottom>
{translate('common.edit.title.main')}
</Typography>
- <Stack direction='row' gap={2}>
+ {/* <Stack direction='row' gap={2}>
<TextInput
label="table.field.asnOrder.code"
source="code"
parse={v => v}
autoFocus
/>
- </Stack>
+ </Stack> */}
<Stack direction='row' gap={2}>
<TextInput
label="table.field.asnOrder.poCode"
@@ -100,7 +100,7 @@
validate={required()}
/>
</Stack>
- <Stack direction='row' gap={2}>
+ {/* <Stack direction='row' gap={2}>
<NumberInput
label="table.field.asnOrder.anfme"
source="anfme"
@@ -113,7 +113,7 @@
source="qty"
validate={required()}
/>
- </Stack>
+ </Stack> */}
<Stack direction='row' gap={2}>
<TextInput
label="table.field.asnOrder.logisNo"
@@ -133,7 +133,7 @@
source="rleStatus"
choices={[
{ id: 0, name: ' 姝e父' },
- { id: 1, name: ' 宸查噴鏀�' },
+ { id: 1, name: ' 宸查噴鏀�' },
]}
validate={required()}
/>
diff --git a/rsf-admin/src/page/asnOrder/AsnOrderList.jsx b/rsf-admin/src/page/asnOrder/AsnOrderList.jsx
index a12b89b..2b0d2c7 100644
--- a/rsf-admin/src/page/asnOrder/AsnOrderList.jsx
+++ b/rsf-admin/src/page/asnOrder/AsnOrderList.jsx
@@ -1,36 +1,37 @@
import React, { useState, useRef, useEffect, useMemo, useCallback } from "react";
import { useNavigate } from 'react-router-dom';
import {
- List,
- DatagridConfigurable,
- SearchInput,
- TopToolbar,
- SelectColumnsButton,
- EditButton,
- FilterButton,
- CreateButton,
- ExportButton,
- BulkDeleteButton,
- WrapperField,
- useRecordContext,
- useTranslate,
- useNotify,
- useListContext,
- FunctionField,
- TextField,
- NumberField,
- DateField,
- BooleanField,
- ReferenceField,
- TextInput,
- DateTimeInput,
- DateInput,
- SelectInput,
- NumberInput,
- ReferenceInput,
- ReferenceArrayInput,
- AutocompleteInput,
- DeleteButton,
+ List,
+ DatagridConfigurable,
+ SearchInput,
+ TopToolbar,
+ SelectColumnsButton,
+ EditButton,
+ FilterButton,
+ CreateButton,
+ ExportButton,
+ BulkDeleteButton,
+ WrapperField,
+ useRecordContext,
+ useTranslate,
+ useNotify,
+ useListContext,
+ FunctionField,
+ TextField,
+ NumberField,
+ DateField,
+ BooleanField,
+ ReferenceField,
+ TextInput,
+ DateTimeInput,
+ DateInput,
+ SelectInput,
+ NumberInput,
+ ReferenceInput,
+ ReferenceArrayInput,
+ AutocompleteInput,
+ DeleteButton,
+ Button
} from 'react-admin';
import { Box, Typography, Card, Stack } from '@mui/material';
import { styled } from '@mui/material/styles';
@@ -43,134 +44,158 @@
import MyField from "../components/MyField";
import { PAGE_DRAWER_WIDTH, OPERATE_MODE, DEFAULT_PAGE_SIZE } from '@/config/setting';
import * as Common from '@/utils/common';
+import ConstructionIcon from "@mui/icons-material/Construction";
+import FileDownloadIcon from '@mui/icons-material/FileDownload';
+
const StyledDatagrid = styled(DatagridConfigurable)(({ theme }) => ({
- '& .css-1vooibu-MuiSvgIcon-root': {
- height: '.9em'
- },
- '& .RaDatagrid-row': {
- cursor: 'auto'
- },
- '& .column-name': {
- },
- '& .opt': {
- width: 200
- },
+ '& .css-1vooibu-MuiSvgIcon-root': {
+ height: '.9em'
+ },
+ '& .RaDatagrid-row': {
+ cursor: 'auto'
+ },
+ '& .column-name': {
+ },
+ '& .opt': {
+ width: 200
+ },
}));
const filters = [
- <SearchInput source="condition" alwaysOn />,
- <DateInput label='common.time.after' source="timeStart" alwaysOn />,
- <DateInput label='common.time.before' source="timeEnd" alwaysOn />,
+ <SearchInput source="condition" alwaysOn />,
- <TextInput source="code" label="table.field.asnOrder.code" />,
- <TextInput source="poCode" label="table.field.asnOrder.poCode" />,
- <NumberInput source="poId" label="table.field.asnOrder.poId" />,
- <TextInput source="type" label="table.field.asnOrder.type" />,
- <TextInput source="wkType" label="table.field.asnOrder.wkType" />,
- <NumberInput source="anfme" label="table.field.asnOrder.anfme" />,
- <NumberInput source="qty" label="table.field.asnOrder.qty" />,
- <TextInput source="logisNo" label="table.field.asnOrder.logisNo" />,
- <DateInput source="arrTime" label="table.field.asnOrder.arrTime" />,
- <SelectInput source="rleStatus" label="table.field.asnOrder.rleStatus"
- choices={[
- { id: 0, name: ' 姝e父' },
- { id: 1, name: ' 宸查噴鏀�' },
- ]}
- />,
+ <TextInput source="code" label="table.field.asnOrder.code" />,
+ <TextInput source="poCode" label="table.field.asnOrder.poCode" />,
+ <NumberInput source="poId" label="table.field.asnOrder.poId" />,
+ <TextInput source="type" label="table.field.asnOrder.type" />,
+ <TextInput source="wkType" label="table.field.asnOrder.wkType" />,
+ <NumberInput source="anfme" label="table.field.asnOrder.anfme" />,
+ <NumberInput source="qty" label="table.field.asnOrder.qty" />,
+ <TextInput source="logisNo" label="table.field.asnOrder.logisNo" />,
+ <DateInput source="arrTime" label="table.field.asnOrder.arrTime" />,
+ <SelectInput source="rleStatus" label="table.field.asnOrder.rleStatus"
+ choices={[
+ { id: 0, name: ' 姝e父' },
+ { id: 1, name: ' 宸查噴鏀�' },
+ ]}
+ />,
- <TextInput label="common.field.memo" source="memo" />,
- <SelectInput
- label="common.field.status"
- source="status"
- choices={[
- { id: '1', name: 'common.enums.statusTrue' },
- { id: '0', name: 'common.enums.statusFalse' },
- ]}
- resettable
- />,
+ <TextInput label="common.field.memo" source="memo" />,
+ <SelectInput
+ label="common.field.status"
+ source="status"
+ choices={[
+ { id: '1', name: 'common.enums.statusTrue' },
+ { id: '0', name: 'common.enums.statusFalse' },
+ ]}
+ resettable
+ />,
]
const AsnOrderList = () => {
- const translate = useTranslate();
+ const translate = useTranslate();
- const [createDialog, setCreateDialog] = useState(false);
- const [drawerVal, setDrawerVal] = useState(false);
+ const [createDialog, setCreateDialog] = useState(false);
+ const [drawerVal, setDrawerVal] = useState(false);
- return (
- <Box display="flex">
- <List
- sx={{
- flexGrow: 1,
- transition: (theme) =>
- theme.transitions.create(['all'], {
- duration: theme.transitions.duration.enteringScreen,
- }),
- marginRight: !!drawerVal ? `${PAGE_DRAWER_WIDTH}px` : 0,
- }}
- title={"menu.asnOrder"}
- empty={<EmptyData onClick={() => { setCreateDialog(true) }} />}
- filters={filters}
- sort={{ field: "create_time", order: "desc" }}
- actions={(
- <TopToolbar>
- <FilterButton />
- <MyCreateButton onClick={() => { setCreateDialog(true) }} />
- <SelectColumnsButton preferenceKey='asnOrder' />
- <MyExportButton />
- </TopToolbar>
- )}
- perPage={DEFAULT_PAGE_SIZE}
- >
- <StyledDatagrid
- preferenceKey='asnOrder'
- bulkActionButtons={() => <BulkDeleteButton mutationMode={OPERATE_MODE} />}
- rowClick={(id, resource, record) => false}
- expand={() => <AsnOrderPanel />}
- expandSingle={true}
- omit={['id', 'createTime', 'createBy', 'memo']}
- >
- <NumberField source="id" />
- <TextField source="code" label="table.field.asnOrder.code" />
- <TextField source="poCode" label="table.field.asnOrder.poCode" />
- <NumberField source="poId" label="table.field.asnOrder.poId" />
- <TextField source="type" label="table.field.asnOrder.type" />
- <TextField source="wkType" label="table.field.asnOrder.wkType" />
- <NumberField source="anfme" label="table.field.asnOrder.anfme" />
- <NumberField source="qty" label="table.field.asnOrder.qty" />
- <TextField source="logisNo" label="table.field.asnOrder.logisNo" />
- <DateField source="arrTime" label="table.field.asnOrder.arrTime" showTime />
- <TextField source="rleStatus$" label="table.field.asnOrder.rleStatus" sortable={false} />
- <TextField source="name" label="table.field.asnOrder.name" />
+ const navigate = useNavigate();
+ const assign = (record) => {
+ navigate(`/asnOrderItem?asnId=${record.id}`);
+ };
- <ReferenceField source="updateBy" label="common.field.updateBy" reference="user" link={false} sortable={false}>
- <TextField source="nickname" />
- </ReferenceField>
- <DateField source="updateTime" label="common.field.updateTime" showTime />
- <ReferenceField source="createBy" label="common.field.createBy" reference="user" link={false} sortable={false}>
- <TextField source="nickname" />
- </ReferenceField>
- <DateField source="createTime" label="common.field.createTime" showTime />
- <BooleanField source="statusBool" label="common.field.status" sortable={false} />
- <TextField source="memo" label="common.field.memo" sortable={false} />
- <WrapperField cellClassName="opt" label="common.field.opt">
- <EditButton sx={{ padding: '1px', fontSize: '.75rem' }} />
- <DeleteButton sx={{ padding: '1px', fontSize: '.75rem' }} mutationMode={OPERATE_MODE} />
- </WrapperField>
- </StyledDatagrid>
- </List>
- <AsnOrderCreate
- open={createDialog}
- setOpen={setCreateDialog}
- />
- <PageDrawer
- title='AsnOrder Detail'
- drawerVal={drawerVal}
- setDrawerVal={setDrawerVal}
- >
- </PageDrawer>
- </Box>
- )
+ const importList = () => { };
+ const inspection = () => { };
+
+ const print = () => { };
+
+ return (
+ <Box display="flex">
+ <List
+ sx={{
+ flexGrow: 1,
+ transition: (theme) =>
+ theme.transitions.create(['all'], {
+ duration: theme.transitions.duration.enteringScreen,
+ }),
+ marginRight: drawerVal ? `${PAGE_DRAWER_WIDTH}px` : 0,
+ }}
+ title={"menu.asnOrder"}
+ empty={<EmptyData onClick={() => { setCreateDialog(true) }} />}
+ filters={filters}
+ sort={{ field: "create_time", order: "desc" }}
+ actions={(
+ <TopToolbar>
+
+ <Button onClick={inspection} label={"toolbar.inspection"}>
+ <ConstructionIcon />
+ </Button>
+ <FilterButton />
+ <MyCreateButton onClick={() => { setCreateDialog(true) }} />
+ <SelectColumnsButton preferenceKey='asnOrder' />
+
+ <MyExportButton />
+ </TopToolbar>
+ )}
+ perPage={DEFAULT_PAGE_SIZE}
+ >
+ <StyledDatagrid
+ preferenceKey='asnOrder'
+ bulkActionButtons={() => <BulkDeleteButton mutationMode={OPERATE_MODE} />}
+ rowClick={(id, resource, record) => false}
+ expand={() => <AsnOrderPanel />}
+ expandSingle={true}
+ omit={['id', 'createTime', 'createBy', 'memo']}
+ >
+ <NumberField source="id" />
+ <MyField
+ source="code"
+ label="table.field.asnOrder.code"
+ onClick={(event, record, val) => {
+ event.stopPropagation();
+ assign(record);
+ }}
+ />
+ <TextField source="poCode" label="table.field.asnOrder.poCode" />
+ <NumberField source="poId" label="table.field.asnOrder.poId" />
+ <TextField source="type" label="table.field.asnOrder.type" />
+ <TextField source="wkType" label="table.field.asnOrder.wkType" />
+ <NumberField source="anfme" label="table.field.asnOrder.anfme" />
+ <NumberField source="qty" label="table.field.asnOrder.qty" />
+ <TextField source="logisNo" label="table.field.asnOrder.logisNo" />
+ <DateField source="arrTime" label="table.field.asnOrder.arrTime" showTime />
+ <TextField source="rleStatus$" label="table.field.asnOrder.rleStatus" sortable={false} />
+
+ <ReferenceField source="updateBy" label="common.field.updateBy" reference="user" link={false} sortable={false}>
+ <TextField source="nickname" />
+ </ReferenceField>
+ <DateField source="updateTime" label="common.field.updateTime" showTime />
+ <ReferenceField source="createBy" label="common.field.createBy" reference="user" link={false} sortable={false}>
+ <TextField source="nickname" />
+ </ReferenceField>
+ <DateField source="createTime" label="common.field.createTime" showTime />
+ <BooleanField source="statusBool" label="common.field.status" sortable={false} />
+ <TextField source="memo" label="common.field.memo" sortable={false} />
+ <WrapperField cellClassName="opt" label="common.field.opt">
+ <Button label="toolbar.print" onClick={print}>
+ <FileDownloadIcon />
+ </Button>
+ <EditButton sx={{ padding: '1px', fontSize: '.75rem' }} />
+ <DeleteButton sx={{ padding: '1px', fontSize: '.75rem' }} mutationMode={OPERATE_MODE} />
+ </WrapperField>
+ </StyledDatagrid>
+ </List>
+ <AsnOrderCreate
+ open={createDialog}
+ setOpen={setCreateDialog}
+ />
+ <PageDrawer
+ title='AsnOrder Detail'
+ drawerVal={drawerVal}
+ setDrawerVal={setDrawerVal}
+ >
+ </PageDrawer>
+ </Box>
+ )
}
-
export default AsnOrderList;
diff --git a/rsf-admin/src/page/asnOrderItem/AsnOrderItemCreate.jsx b/rsf-admin/src/page/asnOrderItem/AsnOrderItemCreate.jsx
index 45e40f2..dc78822 100644
--- a/rsf-admin/src/page/asnOrderItem/AsnOrderItemCreate.jsx
+++ b/rsf-admin/src/page/asnOrderItem/AsnOrderItemCreate.jsx
@@ -32,7 +32,7 @@
import MemoInput from "../components/MemoInput";
const AsnOrderItemCreate = (props) => {
- const { open, setOpen } = props;
+ const { open, setOpen, row } = props;
const translate = useTranslate();
const notify = useNotify();
@@ -88,7 +88,7 @@
<NumberInput
label="table.field.asnOrderItem.asnId"
source="asnId"
- autoFocus
+ defaultValue={row.asnId}
/>
</Grid>
<Grid item xs={6} display="flex" gap={1}>
diff --git a/rsf-admin/src/page/asnOrderItem/AsnOrderItemList.jsx b/rsf-admin/src/page/asnOrderItem/AsnOrderItemList.jsx
index 5ddf5ee..84c20df 100644
--- a/rsf-admin/src/page/asnOrderItem/AsnOrderItemList.jsx
+++ b/rsf-admin/src/page/asnOrderItem/AsnOrderItemList.jsx
@@ -1,36 +1,37 @@
import React, { useState, useRef, useEffect, useMemo, useCallback } from "react";
-import { useNavigate } from 'react-router-dom';
+import { useNavigate, useLocation } from 'react-router-dom';
import {
- List,
- DatagridConfigurable,
- SearchInput,
- TopToolbar,
- SelectColumnsButton,
- EditButton,
- FilterButton,
- CreateButton,
- ExportButton,
- BulkDeleteButton,
- WrapperField,
- useRecordContext,
- useTranslate,
- useNotify,
- useListContext,
- FunctionField,
- TextField,
- NumberField,
- DateField,
- BooleanField,
- ReferenceField,
- TextInput,
- DateTimeInput,
- DateInput,
- SelectInput,
- NumberInput,
- ReferenceInput,
- ReferenceArrayInput,
- AutocompleteInput,
- DeleteButton,
+ List,
+ DatagridConfigurable,
+ SearchInput,
+ TopToolbar,
+ SelectColumnsButton,
+ EditButton,
+ FilterButton,
+ CreateButton,
+ ExportButton,
+ BulkDeleteButton,
+ WrapperField,
+ useRecordContext,
+ useTranslate,
+ useNotify,
+ useListContext,
+ FunctionField,
+ TextField,
+ NumberField,
+ DateField,
+ BooleanField,
+ ReferenceField,
+ TextInput,
+ DateTimeInput,
+ DateInput,
+ SelectInput,
+ NumberInput,
+ ReferenceInput,
+ ReferenceArrayInput,
+ AutocompleteInput,
+ DeleteButton,
+ Button
} from 'react-admin';
import { Box, Typography, Card, Stack } from '@mui/material';
import { styled } from '@mui/material/styles';
@@ -43,140 +44,156 @@
import MyField from "../components/MyField";
import { PAGE_DRAWER_WIDTH, OPERATE_MODE, DEFAULT_PAGE_SIZE } from '@/config/setting';
import * as Common from '@/utils/common';
+import CustomerTopToolBar from "../components/EditTopToolBar";
+import QrCodeIcon from "@mui/icons-material/QrCode";
+import ImportButton from "../components/ImportButton";
const StyledDatagrid = styled(DatagridConfigurable)(({ theme }) => ({
- '& .css-1vooibu-MuiSvgIcon-root': {
- height: '.9em'
- },
- '& .RaDatagrid-row': {
- cursor: 'auto'
- },
- '& .column-name': {
- },
- '& .opt': {
- width: 200
- },
+ '& .css-1vooibu-MuiSvgIcon-root': {
+ height: '.9em'
+ },
+ '& .RaDatagrid-row': {
+ cursor: 'auto'
+ },
+ '& .column-name': {
+ },
+ '& .opt': {
+ width: 200
+ },
}));
const filters = [
- <SearchInput source="condition" alwaysOn />,
- <DateInput label='common.time.after' source="timeStart" alwaysOn />,
- <DateInput label='common.time.before' source="timeEnd" alwaysOn />,
+ <SearchInput source="condition" alwaysOn />,
- <NumberInput source="asnId" label="table.field.asnOrderItem.asnId" />,
- <TextInput source="asnCode" label="table.field.asnOrderItem.asnCode" />,
- <TextInput source="poDetlId" label="table.field.asnOrderItem.poDetlId" />,
- <TextInput source="poDetlCode" label="table.field.asnOrderItem.poDetlCode" />,
- <TextInput source="matnrId" label="table.field.asnOrderItem.matnrId" />,
- <TextInput source="matnk" label="table.field.asnOrderItem.matnk" />,
- <NumberInput source="anfme" label="table.field.asnOrderItem.anfme" />,
- <TextInput source="stockUnit" label="table.field.asnOrderItem.stockUnit" />,
- <NumberInput source="purQty" label="table.field.asnOrderItem.purQty" />,
- <TextInput source="purUnit" label="table.field.asnOrderItem.purUnit" />,
- <NumberInput source="qty" label="table.field.asnOrderItem.qty" />,
- <TextInput source="splrCode" label="table.field.asnOrderItem.splrCode" />,
- <TextInput source="splrName" label="table.field.asnOrderItem.splrName" />,
- <TextInput source="qrcode" label="table.field.asnOrderItem.qrcode" />,
- <TextInput source="barcode" label="table.field.asnOrderItem.barcode" />,
- <TextInput source="packName" label="table.field.asnOrderItem.packName" />,
+ <NumberInput source="asnId" label="table.field.asnOrderItem.asnId" />,
+ <TextInput source="asnCode" label="table.field.asnOrderItem.asnCode" />,
+ <TextInput source="poDetlId" label="table.field.asnOrderItem.poDetlId" />,
+ <TextInput source="poDetlCode" label="table.field.asnOrderItem.poDetlCode" />,
+ <TextInput source="matnrId" label="table.field.asnOrderItem.matnrId" />,
+ <TextInput source="matnk" label="table.field.asnOrderItem.matnk" />,
+ <NumberInput source="anfme" label="table.field.asnOrderItem.anfme" />,
+ <TextInput source="stockUnit" label="table.field.asnOrderItem.stockUnit" />,
+ <NumberInput source="purQty" label="table.field.asnOrderItem.purQty" />,
+ <TextInput source="purUnit" label="table.field.asnOrderItem.purUnit" />,
+ <NumberInput source="qty" label="table.field.asnOrderItem.qty" />,
+ <TextInput source="splrCode" label="table.field.asnOrderItem.splrCode" />,
+ <TextInput source="splrName" label="table.field.asnOrderItem.splrName" />,
+ <TextInput source="qrcode" label="table.field.asnOrderItem.qrcode" />,
+ <TextInput source="barcode" label="table.field.asnOrderItem.barcode" />,
+ <TextInput source="packName" label="table.field.asnOrderItem.packName" />,
- <TextInput label="common.field.memo" source="memo" />,
- <SelectInput
- label="common.field.status"
- source="status"
- choices={[
- { id: '1', name: 'common.enums.statusTrue' },
- { id: '0', name: 'common.enums.statusFalse' },
- ]}
- resettable
- />,
+ <TextInput label="common.field.memo" source="memo" />,
+ <SelectInput
+ label="common.field.status"
+ source="status"
+ choices={[
+ { id: '1', name: 'common.enums.statusTrue' },
+ { id: '0', name: 'common.enums.statusFalse' },
+ ]}
+ resettable
+ />,
]
const AsnOrderItemList = () => {
- const translate = useTranslate();
+ const translate = useTranslate();
- const [createDialog, setCreateDialog] = useState(false);
- const [drawerVal, setDrawerVal] = useState(false);
+ const [createDialog, setCreateDialog] = useState(false);
+ const [drawerVal, setDrawerVal] = useState(false);
- return (
- <Box display="flex">
- <List
- sx={{
- flexGrow: 1,
- transition: (theme) =>
- theme.transitions.create(['all'], {
- duration: theme.transitions.duration.enteringScreen,
- }),
- marginRight: !!drawerVal ? `${PAGE_DRAWER_WIDTH}px` : 0,
- }}
- title={"menu.asnOrderItem"}
- empty={<EmptyData onClick={() => { setCreateDialog(true) }} />}
- filters={filters}
- sort={{ field: "create_time", order: "desc" }}
- actions={(
- <TopToolbar>
- <FilterButton />
- <MyCreateButton onClick={() => { setCreateDialog(true) }} />
- <SelectColumnsButton preferenceKey='asnOrderItem' />
- <MyExportButton />
- </TopToolbar>
- )}
- perPage={DEFAULT_PAGE_SIZE}
- >
- <StyledDatagrid
- preferenceKey='asnOrderItem'
- bulkActionButtons={() => <BulkDeleteButton mutationMode={OPERATE_MODE} />}
- rowClick={(id, resource, record) => false}
- expand={() => <AsnOrderItemPanel />}
- expandSingle={true}
- omit={['id', 'createTime', 'createBy', 'memo']}
- >
- <NumberField source="id" />
- <NumberField source="asnId" label="table.field.asnOrderItem.asnId" />
- <TextField source="asnCode" label="table.field.asnOrderItem.asnCode" />
- <TextField source="poDetlId" label="table.field.asnOrderItem.poDetlId" />
- <TextField source="poDetlCode" label="table.field.asnOrderItem.poDetlCode" />
- <TextField source="matnrId" label="table.field.asnOrderItem.matnrId" />
- <TextField source="matnk" label="table.field.asnOrderItem.matnk" />
- <NumberField source="anfme" label="table.field.asnOrderItem.anfme" />
- <TextField source="stockUnit" label="table.field.asnOrderItem.stockUnit" />
- <NumberField source="purQty" label="table.field.asnOrderItem.purQty" />
- <TextField source="purUnit" label="table.field.asnOrderItem.purUnit" />
- <NumberField source="qty" label="table.field.asnOrderItem.qty" />
- <TextField source="splrCode" label="table.field.asnOrderItem.splrCode" />
- <TextField source="splrName" label="table.field.asnOrderItem.splrName" />
- <TextField source="qrcode" label="table.field.asnOrderItem.qrcode" />
- <TextField source="barcode" label="table.field.asnOrderItem.barcode" />
- <TextField source="packName" label="table.field.asnOrderItem.packName" />
+ const location = useLocation();
+ const queryParams = new URLSearchParams(location.search);
+ const asnId = queryParams.get("asnId");
- <ReferenceField source="updateBy" label="common.field.updateBy" reference="user" link={false} sortable={false}>
- <TextField source="nickname" />
- </ReferenceField>
- <DateField source="updateTime" label="common.field.updateTime" showTime />
- <ReferenceField source="createBy" label="common.field.createBy" reference="user" link={false} sortable={false}>
- <TextField source="nickname" />
- </ReferenceField>
- <DateField source="createTime" label="common.field.createTime" showTime />
- <BooleanField source="statusBool" label="common.field.status" sortable={false} />
- <TextField source="memo" label="common.field.memo" sortable={false} />
- <WrapperField cellClassName="opt" label="common.field.opt">
- <EditButton sx={{ padding: '1px', fontSize: '.75rem' }} />
- <DeleteButton sx={{ padding: '1px', fontSize: '.75rem' }} mutationMode={OPERATE_MODE} />
- </WrapperField>
- </StyledDatagrid>
- </List>
- <AsnOrderItemCreate
- open={createDialog}
- setOpen={setCreateDialog}
- />
- <PageDrawer
- title='AsnOrderItem Detail'
- drawerVal={drawerVal}
- setDrawerVal={setDrawerVal}
- >
- </PageDrawer>
- </Box>
- )
+ const creatCode = () => { };
+
+ return (
+ <>
+ {asnId && <CustomerTopToolBar backPrevious={true} />}
+ <Box display="flex">
+ <List
+ sx={{
+ flexGrow: 1,
+ transition: (theme) =>
+ theme.transitions.create(['all'], {
+ duration: theme.transitions.duration.enteringScreen,
+ }),
+ marginRight: drawerVal ? `${PAGE_DRAWER_WIDTH}px` : 0,
+ }}
+ title={"menu.asnOrderItem"}
+ empty={<EmptyData onClick={() => { setCreateDialog(true) }} />}
+ filters={filters}
+ sort={{ field: "create_time", order: "desc" }}
+ actions={(
+ <TopToolbar>
+ <Button onClick={creatCode} label={"toolbar.creatcode"}>
+ <QrCodeIcon />
+ </Button>
+ <FilterButton />
+ <MyCreateButton onClick={() => { setCreateDialog(true) }} />
+ <SelectColumnsButton preferenceKey='asnOrderItem' />
+ <ImportButton value={'asnOrder'} parmas={{ asnId: asnId }} />
+ <MyExportButton />
+ </TopToolbar>
+ )}
+ perPage={DEFAULT_PAGE_SIZE}
+ >
+ <StyledDatagrid
+ preferenceKey='asnOrderItem'
+ bulkActionButtons={() => <BulkDeleteButton mutationMode={OPERATE_MODE} />}
+ rowClick={(id, resource, record) => false}
+ expand={() => <AsnOrderItemPanel />}
+ expandSingle={true}
+ omit={['id', 'createTime', 'createBy', 'memo']}
+ >
+ <NumberField source="id" />
+ <NumberField source="asnId" label="table.field.asnOrderItem.asnId" />
+ <TextField source="asnCode" label="table.field.asnOrderItem.asnCode" />
+ <TextField source="poDetlId" label="table.field.asnOrderItem.poDetlId" />
+ <TextField source="poDetlCode" label="table.field.asnOrderItem.poDetlCode" />
+ <TextField source="matnrId" label="table.field.asnOrderItem.matnrId" />
+ <TextField source="matnk" label="table.field.asnOrderItem.matnk" />
+ <NumberField source="anfme" label="table.field.asnOrderItem.anfme" />
+ <TextField source="stockUnit" label="table.field.asnOrderItem.stockUnit" />
+ <NumberField source="purQty" label="table.field.asnOrderItem.purQty" />
+ <TextField source="purUnit" label="table.field.asnOrderItem.purUnit" />
+ <NumberField source="qty" label="table.field.asnOrderItem.qty" />
+ <TextField source="splrCode" label="table.field.asnOrderItem.splrCode" />
+ <TextField source="splrName" label="table.field.asnOrderItem.splrName" />
+ <TextField source="qrcode" label="table.field.asnOrderItem.qrcode" />
+ <TextField source="barcode" label="table.field.asnOrderItem.barcode" />
+ <TextField source="packName" label="table.field.asnOrderItem.packName" />
+
+ <ReferenceField source="updateBy" label="common.field.updateBy" reference="user" link={false} sortable={false}>
+ <TextField source="nickname" />
+ </ReferenceField>
+ <DateField source="updateTime" label="common.field.updateTime" showTime />
+ <ReferenceField source="createBy" label="common.field.createBy" reference="user" link={false} sortable={false}>
+ <TextField source="nickname" />
+ </ReferenceField>
+ <DateField source="createTime" label="common.field.createTime" showTime />
+ <BooleanField source="statusBool" label="common.field.status" sortable={false} />
+ <TextField source="memo" label="common.field.memo" sortable={false} />
+ <WrapperField cellClassName="opt" label="common.field.opt">
+ <EditButton sx={{ padding: '1px', fontSize: '.75rem' }} />
+ <DeleteButton sx={{ padding: '1px', fontSize: '.75rem' }} mutationMode={OPERATE_MODE} />
+ </WrapperField>
+ </StyledDatagrid>
+ </List>
+ <AsnOrderItemCreate
+ open={createDialog}
+ setOpen={setCreateDialog}
+ row={{ asnId }}
+ />
+ <PageDrawer
+ title='AsnOrderItem Detail'
+ drawerVal={drawerVal}
+ setDrawerVal={setDrawerVal}
+ >
+ </PageDrawer>
+ </Box>
+ </>
+ )
}
+AsnOrderItemList.Context = React.createContext()
export default AsnOrderItemList;
diff --git a/rsf-admin/src/page/components/ImportModal.jsx b/rsf-admin/src/page/components/ImportModal.jsx
index 1461531..70f84cf 100644
--- a/rsf-admin/src/page/components/ImportModal.jsx
+++ b/rsf-admin/src/page/components/ImportModal.jsx
@@ -1,4 +1,4 @@
-import { useEffect, useState } from 'react';
+import { useEffect, useState, createContext, useContext } from 'react';
import { Box, CircularProgress, Stack, Typography } from '@mui/material';
import Alert from '@mui/material/Alert';
import Dialog from '@mui/material/Dialog';
@@ -13,14 +13,16 @@
Form,
Toolbar,
useRefresh,
- useTranslate
+ useTranslate,
+ useNotify
} from 'react-admin';
import { Link } from 'react-router-dom';
import DialogCloseButton from './DialogCloseButton';
import { usePapaParse } from './usePapaParse';
import MatnrList from '../basicInfo/matnr/MatnrList';
+import request from '@/utils/request'
-const ImportModal = ({ open, onClose, importTemp, useCodeImport, onceBatch = 10 }) => {
+const ImportModal = ({ open, onClose, importTemp, useCodeImport, onceBatch = 10, value, parmas = {} }) => {
const refresh = useRefresh();
const translate = useTranslate();
@@ -31,6 +33,7 @@
});
const [file, setFile] = useState(null);
+ const notify = useNotify();
useEffect(() => {
if (importer.state === 'complete') {
@@ -46,10 +49,25 @@
if (!file) {
return;
}
- console.log(file);
- //TODO 娣诲姞涓婃枃浠朵笂浼犳帴鍙�
+ const form = new FormData();
+ for (const key in parmas) {
+ if (parmas.hasOwnProperty(key)) {
+ form.append(key, parmas[key]);
+ }
+ }
+ form.append('file', file);
+ const { data: { code, data, msg } } = await request.post(`/${value}/import`, form)
+
+ if (code === 200) {
+ handleClose()
+ } else {
+ notify(msg);
+
+ }
};
+
+
const handleClose = () => {
reset();
@@ -211,12 +229,12 @@
</Dialog>
);
}
-{/**涓嬭浇鎵撳嵃妯℃澘锛屼紶鍏ype绫诲瀷锛岃皟鐢ㄤ笅杞芥ā鏉挎帴鍙� */}
+{/**涓嬭浇鎵撳嵃妯℃澘锛屼紶鍏ype绫诲瀷锛岃皟鐢ㄤ笅杞芥ā鏉挎帴鍙� */ }
const downloadTemplate = (type) => {
// 涓嬭浇鐗╂枡妯℃澘
- if (type != undefined && type == 'matnr') {
-
- }
+ if (type != undefined && type == 'matnr') {
+
+ }
console.log('======>');
console.log(type);
}
diff --git a/rsf-admin/src/page/components/MyCreateButton.jsx b/rsf-admin/src/page/components/MyCreateButton.jsx
index b61f9fc..1e16745 100644
--- a/rsf-admin/src/page/components/MyCreateButton.jsx
+++ b/rsf-admin/src/page/components/MyCreateButton.jsx
@@ -1,70 +1,64 @@
import React, { useState, useRef, useEffect, useMemo } from "react";
-import {
- Button,
- useTranslate,
-} from 'react-admin';
-import { Fab, useMediaQuery } from '@mui/material';
-import ContentAdd from '@mui/icons-material/Add';
-import { styled } from '@mui/material/styles';
-import { Link } from 'react-router-dom';
+import { Button, useTranslate } from "react-admin";
+import { Fab, useMediaQuery } from "@mui/material";
+import ContentAdd from "@mui/icons-material/Add";
+import { styled } from "@mui/material/styles";
+import { Link } from "react-router-dom";
const MyCreateButton = (props) => {
- const translate = useTranslate();
+ const translate = useTranslate();
+ const isSmall = useMediaQuery((theme) => theme.breakpoints.down("md"));
- const isSmall = useMediaQuery((theme) =>
- theme.breakpoints.down('md')
- );
+ return isSmall ? (
+ <StyledFab
+ color="primary"
+ className={CreateButtonClasses.floating}
+ aria-label={label && translate(label)}
+ onClick={props.onClick}
+ {...props}
+ >
+ {defaultIcon}
+ </StyledFab>
+ ) : (
+ <StyledButton
+ className={CreateButtonClasses.floating}
+ label={label}
+ onClick={props.onClick}
+ {...props}
+ >
+ {defaultIcon}
+ </StyledButton>
+ );
+};
- return isSmall ? (
- <StyledFab
- color="primary"
- className={CreateButtonClasses.floating}
- aria-label={label && translate(label)}
- onClick={props.onClick}
- {...props}
- >
- {defaultIcon}
- </StyledFab>
- ) : (
- <StyledButton
- className={CreateButtonClasses.floating}
- label={label}
- onClick={props.onClick}
- {...props}
- >
- {defaultIcon}
- </StyledButton>
- );
-}
-
-const label = 'ra.action.create';
-const PREFIX = 'RaCreateButton';
+const label = "ra.action.create";
+const PREFIX = "RaCreateButton";
const defaultIcon = <ContentAdd />;
export const CreateButtonClasses = {
- root: `${PREFIX}-root`,
- floating: `${PREFIX}-floating`,
+ root: `${PREFIX}-root`,
+ floating: `${PREFIX}-floating`,
};
const StyledFab = styled(Fab, {
- name: PREFIX,
- overridesResolver: (_props, styles) => styles.root,
+ name: PREFIX,
+ overridesResolver: (_props, styles) => styles.root,
})(({ theme }) => ({
- [`&.${CreateButtonClasses.floating}`]: {
- color: theme.palette.getContrastText(theme.palette.primary.main),
- margin: 0,
- top: 'auto',
- right: 20,
- bottom: 60,
- left: 'auto',
- position: 'fixed',
- zIndex: 1000,
- },
+ [`&.${CreateButtonClasses.floating}`]: {
+ color: theme.palette.getContrastText(theme.palette.primary.main),
+ margin: 0,
+ top: "auto",
+ right: 20,
+ bottom: 60,
+ left: "auto",
+ position: "fixed",
+ zIndex: 1000,
+ },
}));
const StyledButton = styled(Button, {
- name: PREFIX,
- overridesResolver: (_props, styles) => styles.root,
+ name: PREFIX,
+ overridesResolver: (_props, styles) => styles.root,
})({});
-export default MyCreateButton;
\ No newline at end of file
+export default MyCreateButton;
diff --git a/rsf-admin/src/page/components/MyExportButton.jsx b/rsf-admin/src/page/components/MyExportButton.jsx
index 143bdc1..f70dced 100644
--- a/rsf-admin/src/page/components/MyExportButton.jsx
+++ b/rsf-admin/src/page/components/MyExportButton.jsx
@@ -1,87 +1,84 @@
-import * as React from 'react';
-import { useCallback } from 'react';
-import DownloadIcon from '@mui/icons-material/GetApp';
+import * as React from "react";
+import { useCallback } from "react";
+import DownloadIcon from "@mui/icons-material/GetApp";
import {
- Button, useDataProvider, useNotify, useListContext
-} from 'react-admin';
+ Button,
+ useDataProvider,
+ useNotify,
+ useListContext,
+} from "react-admin";
const MyExportButton = (props) => {
- const {
- maxResults = 1000,
- onClick,
- label = 'ra.action.export',
- icon = defaultIcon,
- exporter: customExporter,
- meta,
- ...rest
- } = props;
+ const {
+ maxResults = 1000,
+ onClick,
+ label = "ra.action.export",
+ icon = defaultIcon,
+ exporter: customExporter,
+ meta,
+ ...rest
+ } = props;
- const {
- filter,
- filterValues,
- resource,
- sort,
- total,
- } = useListContext();
+ const { filter, filterValues, resource, sort, total } = useListContext();
- const dataProvider = useDataProvider();
- const notify = useNotify();
+ const dataProvider = useDataProvider();
+ const notify = useNotify();
- const handleClick = useCallback(
- event => {
- dataProvider.export(resource, {
- sort,
- filter: filter
- ? { ...filterValues, ...filter }
- : filterValues,
- pagination: { page: 1, perPage: maxResults },
- meta,
- }).then((res) => {
- const url = window.URL.createObjectURL(new Blob([res.data], { type: res.headers['content-type'] }));
- const link = document.createElement('a');
- link.href = url;
- link.setAttribute('download', `${resource}.xlsx`);
- document.body.appendChild(link);
- link.click();
- link.remove();
- }).catch(error => {
- console.error(error);
- notify('ra.notification.http_error', { type: 'error' });
- });
- if (typeof onClick === 'function') {
- onClick(event);
- }
- },
- [
- dataProvider,
- filter,
- filterValues,
- maxResults,
- notify,
- onClick,
- resource,
- sort,
- meta,
- ]
- );
+ const handleClick = useCallback(
+ (event) => {
+ dataProvider
+ .export(resource, {
+ sort,
+ filter: filter ? { ...filterValues, ...filter } : filterValues,
+ pagination: { page: 1, perPage: maxResults },
+ meta,
+ })
+ .then((res) => {
+ const url = window.URL.createObjectURL(
+ new Blob([res.data], { type: res.headers["content-type"] }),
+ );
+ const link = document.createElement("a");
+ link.href = url;
+ link.setAttribute("download", `${resource}.xlsx`);
+ document.body.appendChild(link);
+ link.click();
+ link.remove();
+ })
+ .catch((error) => {
+ console.error(error);
+ notify("ra.notification.http_error", { type: "error" });
+ });
+ if (typeof onClick === "function") {
+ onClick(event);
+ }
+ },
+ [
+ dataProvider,
+ filter,
+ filterValues,
+ maxResults,
+ notify,
+ onClick,
+ resource,
+ sort,
+ meta,
+ ],
+ );
- return (
- <Button
- onClick={handleClick}
- label={label}
- disabled={total === 0}
- {...sanitizeRestProps(rest)}
- >
- {icon}
- </Button>
- );
+ return (
+ <Button
+ onClick={handleClick}
+ label={label}
+ disabled={total === 0}
+ {...sanitizeRestProps(rest)}
+ >
+ {icon}
+ </Button>
+ );
};
const defaultIcon = <DownloadIcon />;
-const sanitizeRestProps = ({
- resource,
- ...rest
-}) => rest;
+const sanitizeRestProps = ({ resource, ...rest }) => rest;
export default MyExportButton;
diff --git a/rsf-admin/src/page/purchase/PurchaseCreate.jsx b/rsf-admin/src/page/purchase/PurchaseCreate.jsx
index 4787078..768de68 100644
--- a/rsf-admin/src/page/purchase/PurchaseCreate.jsx
+++ b/rsf-admin/src/page/purchase/PurchaseCreate.jsx
@@ -84,14 +84,14 @@
</DialogTitle>
<DialogContent sx={{ mt: 2 }}>
<Grid container rowSpacing={2} columnSpacing={2}>
- <Grid item xs={6} display="flex" gap={1}>
+ {/* <Grid item xs={6} display="flex" gap={1}>
<TextInput
label="table.field.purchase.code"
source="code"
parse={v => v}
autoFocus
/>
- </Grid>
+ </Grid> */}
<Grid item xs={6} display="flex" gap={1}>
<TextInput
label="table.field.purchase.type"
diff --git a/rsf-admin/src/page/purchase/PurchaseEdit.jsx b/rsf-admin/src/page/purchase/PurchaseEdit.jsx
index 16c0608..b12726f 100644
--- a/rsf-admin/src/page/purchase/PurchaseEdit.jsx
+++ b/rsf-admin/src/page/purchase/PurchaseEdit.jsx
@@ -63,14 +63,14 @@
<Typography variant="h6" gutterBottom>
{translate('common.edit.title.main')}
</Typography>
- <Stack direction='row' gap={2}>
+ {/* <Stack direction='row' gap={2}>
<TextInput
label="table.field.purchase.code"
source="code"
parse={v => v}
autoFocus
/>
- </Stack>
+ </Stack> */}
<Stack direction='row' gap={2}>
<TextInput
label="table.field.purchase.type"
diff --git a/rsf-admin/src/page/purchase/PurchaseList.jsx b/rsf-admin/src/page/purchase/PurchaseList.jsx
index 08f1ce5..adc1921 100644
--- a/rsf-admin/src/page/purchase/PurchaseList.jsx
+++ b/rsf-admin/src/page/purchase/PurchaseList.jsx
@@ -1,36 +1,36 @@
import React, { useState, useRef, useEffect, useMemo, useCallback } from "react";
import { useNavigate } from 'react-router-dom';
import {
- List,
- DatagridConfigurable,
- SearchInput,
- TopToolbar,
- SelectColumnsButton,
- EditButton,
- FilterButton,
- CreateButton,
- ExportButton,
- BulkDeleteButton,
- WrapperField,
- useRecordContext,
- useTranslate,
- useNotify,
- useListContext,
- FunctionField,
- TextField,
- NumberField,
- DateField,
- BooleanField,
- ReferenceField,
- TextInput,
- DateTimeInput,
- DateInput,
- SelectInput,
- NumberInput,
- ReferenceInput,
- ReferenceArrayInput,
- AutocompleteInput,
- DeleteButton,
+ List,
+ DatagridConfigurable,
+ SearchInput,
+ TopToolbar,
+ SelectColumnsButton,
+ EditButton,
+ FilterButton,
+ CreateButton,
+ ExportButton,
+ BulkDeleteButton,
+ WrapperField,
+ useRecordContext,
+ useTranslate,
+ useNotify,
+ useListContext,
+ FunctionField,
+ TextField,
+ NumberField,
+ DateField,
+ BooleanField,
+ ReferenceField,
+ TextInput,
+ DateTimeInput,
+ DateInput,
+ SelectInput,
+ NumberInput,
+ ReferenceInput,
+ ReferenceArrayInput,
+ AutocompleteInput,
+ DeleteButton,
} from 'react-admin';
import { Box, Typography, Card, Stack } from '@mui/material';
import { styled } from '@mui/material/styles';
@@ -45,128 +45,138 @@
import * as Common from '@/utils/common';
const StyledDatagrid = styled(DatagridConfigurable)(({ theme }) => ({
- '& .css-1vooibu-MuiSvgIcon-root': {
- height: '.9em'
- },
- '& .RaDatagrid-row': {
- cursor: 'auto'
- },
- '& .column-name': {
- },
- '& .opt': {
- width: 200
- },
+ '& .css-1vooibu-MuiSvgIcon-root': {
+ height: '.9em'
+ },
+ '& .RaDatagrid-row': {
+ cursor: 'auto'
+ },
+ '& .column-name': {
+ },
+ '& .opt': {
+ width: 200
+ },
}));
const filters = [
- <SearchInput source="condition" alwaysOn />,
- <DateInput label='common.time.after' source="timeStart" alwaysOn />,
- <DateInput label='common.time.before' source="timeEnd" alwaysOn />,
- <TextInput source="code" label="table.field.purchase.code" />,
- <TextInput source="type" label="table.field.purchase.type" />,
- <TextInput source="source" label="table.field.purchase.source" />,
- <DateInput source="preArr" label="table.field.purchase.preArr" />,
- <NumberInput source="anfme" label="table.field.purchase.anfme" />,
- <NumberInput source="qty" label="table.field.purchase.qty" />,
- <NumberInput source="workQty" label="table.field.purchase.workQty" />,
- <TextInput source="channel" label="table.field.purchase.channel" />,
- <TextInput source="platCode" label="table.field.purchase.platCode" />,
- <DateInput source="startTime" label="table.field.purchase.startTime" />,
- <DateInput source="endTime" label="table.field.purchase.endTime" />,
- <TextInput source="project" label="table.field.purchase.project" />,
- <TextInput label="common.field.memo" source="memo" />,
- <SelectInput
- label="common.field.status"
- source="status"
- choices={[
- { id: '1', name: 'common.enums.statusTrue' },
- { id: '0', name: 'common.enums.statusFalse' },
- ]}
- resettable
- />,
+ <SearchInput source="condition" alwaysOn />,
+ <TextInput source="code" label="table.field.purchase.code" />,
+ <TextInput source="type" label="table.field.purchase.type" />,
+ <TextInput source="source" label="table.field.purchase.source" />,
+ <DateInput source="preArr" label="table.field.purchase.preArr" />,
+ <NumberInput source="anfme" label="table.field.purchase.anfme" />,
+ <NumberInput source="qty" label="table.field.purchase.qty" />,
+ <NumberInput source="workQty" label="table.field.purchase.workQty" />,
+ <TextInput source="channel" label="table.field.purchase.channel" />,
+ <TextInput source="platCode" label="table.field.purchase.platCode" />,
+ <DateInput source="startTime" label="table.field.purchase.startTime" />,
+ <DateInput source="endTime" label="table.field.purchase.endTime" />,
+ <TextInput source="project" label="table.field.purchase.project" />,
+ <TextInput label="common.field.memo" source="memo" />,
+ <SelectInput
+ label="common.field.status"
+ source="status"
+ choices={[
+ { id: '1', name: 'common.enums.statusTrue' },
+ { id: '0', name: 'common.enums.statusFalse' },
+ ]}
+ resettable
+ />,
]
const PurchaseList = () => {
- const translate = useTranslate();
+ const translate = useTranslate();
- const [createDialog, setCreateDialog] = useState(false);
- const [drawerVal, setDrawerVal] = useState(false);
+ const [createDialog, setCreateDialog] = useState(false);
+ const [drawerVal, setDrawerVal] = useState(false);
- return (
- <Box display="flex">
- <List
- sx={{
- flexGrow: 1,
- transition: (theme) =>
- theme.transitions.create(['all'], {
- duration: theme.transitions.duration.enteringScreen,
- }),
- marginRight: !!drawerVal ? `${PAGE_DRAWER_WIDTH}px` : 0,
- }}
- title={"menu.purchase"}
- empty={<EmptyData onClick={() => { setCreateDialog(true) }} />}
- filters={filters}
- sort={{ field: "create_time", order: "desc" }}
- actions={(
- <TopToolbar>
- <FilterButton />
- <MyCreateButton onClick={() => { setCreateDialog(true) }} />
- <SelectColumnsButton preferenceKey='purchase' />
- <MyExportButton />
- </TopToolbar>
- )}
- perPage={DEFAULT_PAGE_SIZE}
- >
- <StyledDatagrid
- preferenceKey='purchase'
- bulkActionButtons={() => <BulkDeleteButton mutationMode={OPERATE_MODE} />}
- rowClick={(id, resource, record) => false}
- expand={() => <PurchasePanel />}
- expandSingle={true}
- omit={['id', 'createTime', 'createBy', 'memo']}
- >
- <NumberField source="id" />
- <TextField source="code" label="table.field.purchase.code" />
- <TextField source="type" label="table.field.purchase.type" />
- <TextField source="source" label="table.field.purchase.source" />
- <DateField source="preArr" label="table.field.purchase.preArr" showTime />
- <NumberField source="anfme" label="table.field.purchase.anfme" />
- <NumberField source="qty" label="table.field.purchase.qty" />
- <NumberField source="workQty" label="table.field.purchase.workQty" />
- <TextField source="channel" label="table.field.purchase.channel" />
- <TextField source="platCode" label="table.field.purchase.platCode" />
- <DateField source="startTime" label="table.field.purchase.startTime" showTime />
- <DateField source="endTime" label="table.field.purchase.endTime" showTime />
- <TextField source="project" label="table.field.purchase.project" />
+ const navigate = useNavigate();
+ const assign = (record) => {
+ navigate(`/purchaseItem?poId=${record.id}`);
+ };
- <ReferenceField source="updateBy" label="common.field.updateBy" reference="user" link={false} sortable={false}>
- <TextField source="nickname" />
- </ReferenceField>
- <DateField source="updateTime" label="common.field.updateTime" showTime />
- <ReferenceField source="createBy" label="common.field.createBy" reference="user" link={false} sortable={false}>
- <TextField source="nickname" />
- </ReferenceField>
- <DateField source="createTime" label="common.field.createTime" showTime />
- <BooleanField source="statusBool" label="common.field.status" sortable={false} />
- <TextField source="memo" label="common.field.memo" sortable={false} />
- <WrapperField cellClassName="opt" label="common.field.opt">
- <EditButton sx={{ padding: '1px', fontSize: '.75rem' }} />
- <DeleteButton sx={{ padding: '1px', fontSize: '.75rem' }} mutationMode={OPERATE_MODE} />
- </WrapperField>
- </StyledDatagrid>
- </List>
- <PurchaseCreate
- open={createDialog}
- setOpen={setCreateDialog}
- />
- <PageDrawer
- title='Purchase Detail'
- drawerVal={drawerVal}
- setDrawerVal={setDrawerVal}
- >
- </PageDrawer>
- </Box>
- )
+ return (
+ <Box display="flex">
+ <List
+ sx={{
+ flexGrow: 1,
+ transition: (theme) =>
+ theme.transitions.create(['all'], {
+ duration: theme.transitions.duration.enteringScreen,
+ }),
+ marginRight: drawerVal ? `${PAGE_DRAWER_WIDTH}px` : 0,
+ }}
+ title={"menu.purchase"}
+ empty={<EmptyData onClick={() => { setCreateDialog(true) }} />}
+ filters={filters}
+ sort={{ field: "create_time", order: "desc" }}
+ actions={(
+ <TopToolbar>
+ <FilterButton />
+ <MyCreateButton onClick={() => { setCreateDialog(true) }} />
+ <SelectColumnsButton preferenceKey='purchase' />
+ <MyExportButton />
+ </TopToolbar>
+ )}
+ perPage={DEFAULT_PAGE_SIZE}
+ >
+ <StyledDatagrid
+ preferenceKey='purchase'
+ bulkActionButtons={() => <BulkDeleteButton mutationMode={OPERATE_MODE} />}
+ rowClick={(id, resource, record) => false}
+ expand={() => <PurchasePanel />}
+ expandSingle={true}
+ omit={['id', 'createTime', 'createBy', 'memo']}
+ >
+ <NumberField source="id" />
+ <MyField
+ source="code"
+ label="table.field.purchase.code"
+ onClick={(event, record, val) => {
+ event.stopPropagation();
+ assign(record);
+ }}
+ />
+ <TextField source="type" label="table.field.purchase.type" />
+ <TextField source="source" label="table.field.purchase.source" />
+ <DateField source="preArr" label="table.field.purchase.preArr" showTime />
+ <NumberField source="anfme" label="table.field.purchase.anfme" />
+ <NumberField source="qty" label="table.field.purchase.qty" />
+ <NumberField source="workQty" label="table.field.purchase.workQty" />
+ <TextField source="channel" label="table.field.purchase.channel" />
+ <TextField source="platCode" label="table.field.purchase.platCode" />
+ <DateField source="startTime" label="table.field.purchase.startTime" showTime />
+ <DateField source="endTime" label="table.field.purchase.endTime" showTime />
+ <TextField source="project" label="table.field.purchase.project" />
+
+ <ReferenceField source="updateBy" label="common.field.updateBy" reference="user" link={false} sortable={false}>
+ <TextField source="nickname" />
+ </ReferenceField>
+ <DateField source="updateTime" label="common.field.updateTime" showTime />
+ <ReferenceField source="createBy" label="common.field.createBy" reference="user" link={false} sortable={false}>
+ <TextField source="nickname" />
+ </ReferenceField>
+ <DateField source="createTime" label="common.field.createTime" showTime />
+ <BooleanField source="statusBool" label="common.field.status" sortable={false} />
+ <TextField source="memo" label="common.field.memo" sortable={false} />
+ <WrapperField cellClassName="opt" label="common.field.opt">
+ <EditButton sx={{ padding: '1px', fontSize: '.75rem' }} />
+ <DeleteButton sx={{ padding: '1px', fontSize: '.75rem' }} mutationMode={OPERATE_MODE} />
+ </WrapperField>
+ </StyledDatagrid>
+ </List>
+ <PurchaseCreate
+ open={createDialog}
+ setOpen={setCreateDialog}
+ />
+ <PageDrawer
+ title='Purchase Detail'
+ drawerVal={drawerVal}
+ setDrawerVal={setDrawerVal}
+ >
+ </PageDrawer>
+ </Box>
+ )
}
export default PurchaseList;
diff --git a/rsf-admin/src/page/purchaseItem/PurchaseItemCreate.jsx b/rsf-admin/src/page/purchaseItem/PurchaseItemCreate.jsx
index 36ed82b..abc53cc 100644
--- a/rsf-admin/src/page/purchaseItem/PurchaseItemCreate.jsx
+++ b/rsf-admin/src/page/purchaseItem/PurchaseItemCreate.jsx
@@ -32,7 +32,7 @@
import MemoInput from "../components/MemoInput";
const PurchaseItemCreate = (props) => {
- const { open, setOpen } = props;
+ const { open, setOpen, row } = props;
const translate = useTranslate();
const notify = useNotify();
@@ -88,7 +88,7 @@
<NumberInput
label="table.field.purchaseItem.purchaseId"
source="purchaseId"
- autoFocus
+ defaultValue={row.poId}
/>
</Grid>
<Grid item xs={6} display="flex" gap={1}>
diff --git a/rsf-admin/src/page/purchaseItem/PurchaseItemList.jsx b/rsf-admin/src/page/purchaseItem/PurchaseItemList.jsx
index 088c9cb..139441c 100644
--- a/rsf-admin/src/page/purchaseItem/PurchaseItemList.jsx
+++ b/rsf-admin/src/page/purchaseItem/PurchaseItemList.jsx
@@ -1,36 +1,36 @@
import React, { useState, useRef, useEffect, useMemo, useCallback } from "react";
-import { useNavigate } from 'react-router-dom';
+import { useNavigate, useLocation } from 'react-router-dom';
import {
- List,
- DatagridConfigurable,
- SearchInput,
- TopToolbar,
- SelectColumnsButton,
- EditButton,
- FilterButton,
- CreateButton,
- ExportButton,
- BulkDeleteButton,
- WrapperField,
- useRecordContext,
- useTranslate,
- useNotify,
- useListContext,
- FunctionField,
- TextField,
- NumberField,
- DateField,
- BooleanField,
- ReferenceField,
- TextInput,
- DateTimeInput,
- DateInput,
- SelectInput,
- NumberInput,
- ReferenceInput,
- ReferenceArrayInput,
- AutocompleteInput,
- DeleteButton,
+ List,
+ DatagridConfigurable,
+ SearchInput,
+ TopToolbar,
+ SelectColumnsButton,
+ EditButton,
+ FilterButton,
+ CreateButton,
+ ExportButton,
+ BulkDeleteButton,
+ WrapperField,
+ useRecordContext,
+ useTranslate,
+ useNotify,
+ useListContext,
+ FunctionField,
+ TextField,
+ NumberField,
+ DateField,
+ BooleanField,
+ ReferenceField,
+ TextInput,
+ DateTimeInput,
+ DateInput,
+ SelectInput,
+ NumberInput,
+ ReferenceInput,
+ ReferenceArrayInput,
+ AutocompleteInput,
+ DeleteButton,
} from 'react-admin';
import { Box, Typography, Card, Stack } from '@mui/material';
import { styled } from '@mui/material/styles';
@@ -43,134 +43,140 @@
import MyField from "../components/MyField";
import { PAGE_DRAWER_WIDTH, OPERATE_MODE, DEFAULT_PAGE_SIZE } from '@/config/setting';
import * as Common from '@/utils/common';
+import CustomerTopToolBar from "../components/EditTopToolBar";
const StyledDatagrid = styled(DatagridConfigurable)(({ theme }) => ({
- '& .css-1vooibu-MuiSvgIcon-root': {
- height: '.9em'
- },
- '& .RaDatagrid-row': {
- cursor: 'auto'
- },
- '& .column-name': {
- },
- '& .opt': {
- width: 200
- },
+ '& .css-1vooibu-MuiSvgIcon-root': {
+ height: '.9em'
+ },
+ '& .RaDatagrid-row': {
+ cursor: 'auto'
+ },
+ '& .column-name': {
+ },
+ '& .opt': {
+ width: 200
+ },
}));
const filters = [
- <SearchInput source="condition" alwaysOn />,
- <DateInput label='common.time.after' source="timeStart" alwaysOn />,
- <DateInput label='common.time.before' source="timeEnd" alwaysOn />,
+ <SearchInput source="condition" alwaysOn />,
- <NumberInput source="purchaseId" label="table.field.purchaseItem.purchaseId" />,
- <TextInput source="platItemId" label="table.field.purchaseItem.platItemId" />,
- <TextInput source="matnrCode" label="table.field.purchaseItem.matnrCode" />,
- <TextInput source="matnrName" label="table.field.purchaseItem.matnrName" />,
- <TextInput source="unit" label="table.field.purchaseItem.unit" />,
- <NumberInput source="anfme" label="table.field.purchaseItem.anfme" />,
- <NumberInput source="qty" label="table.field.purchaseItem.qty" />,
- <NumberInput source="nromQty" label="table.field.purchaseItem.nromQty" />,
- <NumberInput source="asnQty" label="table.field.purchaseItem.asnQty" />,
- <NumberInput source="printQty" label="table.field.purchaseItem.printQty" />,
- <TextInput source="splrName" label="table.field.purchaseItem.splrName" />,
- <TextInput source="splrCode" label="table.field.purchaseItem.splrCode" />,
- <TextInput source="splrBatch" label="table.field.purchaseItem.splrBatch" />,
+ <NumberInput source="purchaseId" label="table.field.purchaseItem.purchaseId" />,
+ <TextInput source="platItemId" label="table.field.purchaseItem.platItemId" />,
+ <TextInput source="matnrCode" label="table.field.purchaseItem.matnrCode" />,
+ <TextInput source="matnrName" label="table.field.purchaseItem.matnrName" />,
+ <TextInput source="unit" label="table.field.purchaseItem.unit" />,
+ <NumberInput source="anfme" label="table.field.purchaseItem.anfme" />,
+ <NumberInput source="qty" label="table.field.purchaseItem.qty" />,
+ <NumberInput source="nromQty" label="table.field.purchaseItem.nromQty" />,
+ <NumberInput source="asnQty" label="table.field.purchaseItem.asnQty" />,
+ <NumberInput source="printQty" label="table.field.purchaseItem.printQty" />,
+ <TextInput source="splrName" label="table.field.purchaseItem.splrName" />,
+ <TextInput source="splrCode" label="table.field.purchaseItem.splrCode" />,
+ <TextInput source="splrBatch" label="table.field.purchaseItem.splrBatch" />,
- <TextInput label="common.field.memo" source="memo" />,
- <SelectInput
- label="common.field.status"
- source="status"
- choices={[
- { id: '1', name: 'common.enums.statusTrue' },
- { id: '0', name: 'common.enums.statusFalse' },
- ]}
- resettable
- />,
+ <TextInput label="common.field.memo" source="memo" />,
+ <SelectInput
+ label="common.field.status"
+ source="status"
+ choices={[
+ { id: '1', name: 'common.enums.statusTrue' },
+ { id: '0', name: 'common.enums.statusFalse' },
+ ]}
+ resettable
+ />,
]
const PurchaseItemList = () => {
- const translate = useTranslate();
+ const translate = useTranslate();
- const [createDialog, setCreateDialog] = useState(false);
- const [drawerVal, setDrawerVal] = useState(false);
+ const [createDialog, setCreateDialog] = useState(false);
+ const [drawerVal, setDrawerVal] = useState(false);
- return (
- <Box display="flex">
- <List
- sx={{
- flexGrow: 1,
- transition: (theme) =>
- theme.transitions.create(['all'], {
- duration: theme.transitions.duration.enteringScreen,
- }),
- marginRight: !!drawerVal ? `${PAGE_DRAWER_WIDTH}px` : 0,
- }}
- title={"menu.purchaseItem"}
- empty={<EmptyData onClick={() => { setCreateDialog(true) }} />}
- filters={filters}
- sort={{ field: "create_time", order: "desc" }}
- actions={(
- <TopToolbar>
- <FilterButton />
- <MyCreateButton onClick={() => { setCreateDialog(true) }} />
- <SelectColumnsButton preferenceKey='purchaseItem' />
- <MyExportButton />
- </TopToolbar>
- )}
- perPage={DEFAULT_PAGE_SIZE}
- >
- <StyledDatagrid
- preferenceKey='purchaseItem'
- bulkActionButtons={() => <BulkDeleteButton mutationMode={OPERATE_MODE} />}
- rowClick={(id, resource, record) => false}
- expand={() => <PurchaseItemPanel />}
- expandSingle={true}
- omit={['id', 'createTime', 'createBy', 'memo']}
- >
- <NumberField source="id" />
- <NumberField source="purchaseId" label="table.field.purchaseItem.purchaseId" />
- <TextField source="platItemId" label="table.field.purchaseItem.platItemId" />
- <TextField source="matnrCode" label="table.field.purchaseItem.matnrCode" />
- <TextField source="matnrName" label="table.field.purchaseItem.matnrName" />
- <TextField source="unit" label="table.field.purchaseItem.unit" />
- <NumberField source="anfme" label="table.field.purchaseItem.anfme" />
- <NumberField source="qty" label="table.field.purchaseItem.qty" />
- <NumberField source="nromQty" label="table.field.purchaseItem.nromQty" />
- <NumberField source="asnQty" label="table.field.purchaseItem.asnQty" />
- <NumberField source="printQty" label="table.field.purchaseItem.printQty" />
- <TextField source="splrName" label="table.field.purchaseItem.splrName" />
- <TextField source="splrCode" label="table.field.purchaseItem.splrCode" />
- <TextField source="splrBatch" label="table.field.purchaseItem.splrBatch" />
+ const location = useLocation();
+ const queryParams = new URLSearchParams(location.search);
+ const poId = queryParams.get("poId");
- <ReferenceField source="updateBy" label="common.field.updateBy" reference="user" link={false} sortable={false}>
- <TextField source="nickname" />
- </ReferenceField>
- <DateField source="updateTime" label="common.field.updateTime" showTime />
- <ReferenceField source="createBy" label="common.field.createBy" reference="user" link={false} sortable={false}>
- <TextField source="nickname" />
- </ReferenceField>
- <DateField source="createTime" label="common.field.createTime" showTime />
- <BooleanField source="statusBool" label="common.field.status" sortable={false} />
- <TextField source="memo" label="common.field.memo" sortable={false} />
- <WrapperField cellClassName="opt" label="common.field.opt">
- <EditButton sx={{ padding: '1px', fontSize: '.75rem' }} />
- <DeleteButton sx={{ padding: '1px', fontSize: '.75rem' }} mutationMode={OPERATE_MODE} />
- </WrapperField>
- </StyledDatagrid>
- </List>
- <PurchaseItemCreate
- open={createDialog}
- setOpen={setCreateDialog}
- />
- <PageDrawer
- title='PurchaseItem Detail'
- drawerVal={drawerVal}
- setDrawerVal={setDrawerVal}
- >
- </PageDrawer>
- </Box>
- )
+ return (
+ <>
+ {poId && <CustomerTopToolBar backPrevious={true} />}
+ <Box display="flex">
+ <List
+ sx={{
+ flexGrow: 1,
+ transition: (theme) =>
+ theme.transitions.create(['all'], {
+ duration: theme.transitions.duration.enteringScreen,
+ }),
+ marginRight: drawerVal ? `${PAGE_DRAWER_WIDTH}px` : 0,
+ }}
+ title={"menu.purchaseItem"}
+ empty={<EmptyData onClick={() => { setCreateDialog(true) }} />}
+ filters={filters}
+ sort={{ field: "create_time", order: "desc" }}
+ actions={(
+ <TopToolbar>
+ <FilterButton />
+ <MyCreateButton onClick={() => { setCreateDialog(true) }} />
+ <SelectColumnsButton preferenceKey='purchaseItem' />
+ <MyExportButton />
+ </TopToolbar>
+ )}
+ perPage={DEFAULT_PAGE_SIZE}
+ >
+ <StyledDatagrid
+ preferenceKey='purchaseItem'
+ bulkActionButtons={() => <BulkDeleteButton mutationMode={OPERATE_MODE} />}
+ rowClick={(id, resource, record) => false}
+ expand={() => <PurchaseItemPanel />}
+ expandSingle={true}
+ omit={['id', 'createTime', 'createBy', 'memo']}
+ >
+ <NumberField source="id" />
+ <NumberField source="purchaseId" label="table.field.purchaseItem.purchaseId" />
+ <TextField source="platItemId" label="table.field.purchaseItem.platItemId" />
+ <TextField source="matnrCode" label="table.field.purchaseItem.matnrCode" />
+ <TextField source="matnrName" label="table.field.purchaseItem.matnrName" />
+ <TextField source="unit" label="table.field.purchaseItem.unit" />
+ <NumberField source="anfme" label="table.field.purchaseItem.anfme" />
+ <NumberField source="qty" label="table.field.purchaseItem.qty" />
+ <NumberField source="nromQty" label="table.field.purchaseItem.nromQty" />
+ <NumberField source="asnQty" label="table.field.purchaseItem.asnQty" />
+ <NumberField source="printQty" label="table.field.purchaseItem.printQty" />
+ <TextField source="splrName" label="table.field.purchaseItem.splrName" />
+ <TextField source="splrCode" label="table.field.purchaseItem.splrCode" />
+ <TextField source="splrBatch" label="table.field.purchaseItem.splrBatch" />
+
+ <ReferenceField source="updateBy" label="common.field.updateBy" reference="user" link={false} sortable={false}>
+ <TextField source="nickname" />
+ </ReferenceField>
+ <DateField source="updateTime" label="common.field.updateTime" showTime />
+ <ReferenceField source="createBy" label="common.field.createBy" reference="user" link={false} sortable={false}>
+ <TextField source="nickname" />
+ </ReferenceField>
+ <DateField source="createTime" label="common.field.createTime" showTime />
+ <BooleanField source="statusBool" label="common.field.status" sortable={false} />
+ <TextField source="memo" label="common.field.memo" sortable={false} />
+ <WrapperField cellClassName="opt" label="common.field.opt">
+ <EditButton sx={{ padding: '1px', fontSize: '.75rem' }} />
+ <DeleteButton sx={{ padding: '1px', fontSize: '.75rem' }} mutationMode={OPERATE_MODE} />
+ </WrapperField>
+ </StyledDatagrid>
+ </List>
+ <PurchaseItemCreate
+ open={createDialog}
+ setOpen={setCreateDialog}
+ row={{ poId }}
+ />
+ <PageDrawer
+ title='PurchaseItem Detail'
+ drawerVal={drawerVal}
+ setDrawerVal={setDrawerVal}
+ >
+ </PageDrawer>
+ </Box></>
+ )
}
export default PurchaseItemList;
diff --git a/rsf-admin/src/page/qlyInspect/QlyInspectCreate.jsx b/rsf-admin/src/page/qlyInspect/QlyInspectCreate.jsx
index 4ad8576..4aa684f 100644
--- a/rsf-admin/src/page/qlyInspect/QlyInspectCreate.jsx
+++ b/rsf-admin/src/page/qlyInspect/QlyInspectCreate.jsx
@@ -100,6 +100,37 @@
parse={v => v}
/>
</Grid>
+ <Grid item xs={6} display="flex" gap={1}>
+ <TextInput
+ label="table.field.qlyInspect.barcode"
+ source="barcode"
+ parse={v => v}
+ />
+ </Grid>
+ <Grid item xs={6} display="flex" gap={1}>
+ <NumberInput
+ label="table.field.qlyInspect.asnItemId"
+ source="asnItemId"
+ />
+ </Grid>
+ <Grid item xs={6} display="flex" gap={1}>
+ <NumberInput
+ label="table.field.qlyInspect.poItemId"
+ source="poItemId"
+ />
+ </Grid>
+ <Grid item xs={6} display="flex" gap={1}>
+ <NumberInput
+ label="table.field.qlyInspect.safeQty"
+ source="safeQty"
+ />
+ </Grid>
+ <Grid item xs={6} display="flex" gap={1}>
+ <NumberInput
+ label="table.field.qlyInspect.disQty"
+ source="disQty"
+ />
+ </Grid>
<Grid item xs={6} display="flex" gap={1}>
<StatusSelectInput />
diff --git a/rsf-admin/src/page/qlyInspect/QlyInspectEdit.jsx b/rsf-admin/src/page/qlyInspect/QlyInspectEdit.jsx
index d287ef3..985c367 100644
--- a/rsf-admin/src/page/qlyInspect/QlyInspectEdit.jsx
+++ b/rsf-admin/src/page/qlyInspect/QlyInspectEdit.jsx
@@ -79,6 +79,37 @@
parse={v => v}
/>
</Stack>
+ <Stack direction='row' gap={2}>
+ <TextInput
+ label="table.field.qlyInspect.barcode"
+ source="barcode"
+ parse={v => v}
+ />
+ </Stack>
+ <Stack direction='row' gap={2}>
+ <NumberInput
+ label="table.field.qlyInspect.asnItemId"
+ source="asnItemId"
+ />
+ </Stack>
+ <Stack direction='row' gap={2}>
+ <NumberInput
+ label="table.field.qlyInspect.poItemId"
+ source="poItemId"
+ />
+ </Stack>
+ <Stack direction='row' gap={2}>
+ <NumberInput
+ label="table.field.qlyInspect.safeQty"
+ source="safeQty"
+ />
+ </Stack>
+ <Stack direction='row' gap={2}>
+ <NumberInput
+ label="table.field.qlyInspect.disQty"
+ source="disQty"
+ />
+ </Stack>
</Grid>
<Grid item xs={12} md={4}>
diff --git a/rsf-admin/src/page/qlyInspect/QlyInspectList.jsx b/rsf-admin/src/page/qlyInspect/QlyInspectList.jsx
index 591d778..10bda0b 100644
--- a/rsf-admin/src/page/qlyInspect/QlyInspectList.jsx
+++ b/rsf-admin/src/page/qlyInspect/QlyInspectList.jsx
@@ -65,6 +65,11 @@
<TextInput source="code" label="table.field.qlyInspect.code" />,
<TextInput source="name" label="table.field.qlyInspect.name" />,
+ <TextInput source="barcode" label="table.field.qlyInspect.barcode" />,
+ <NumberInput source="asnItemId" label="table.field.qlyInspect.asnItemId" />,
+ <NumberInput source="poItemId" label="table.field.qlyInspect.poItemId" />,
+ <NumberInput source="safeQty" label="table.field.qlyInspect.safeQty" />,
+ <NumberInput source="disQty" label="table.field.qlyInspect.disQty" />,
<TextInput label="common.field.memo" source="memo" />,
<SelectInput
@@ -120,6 +125,11 @@
<NumberField source="id" />
<TextField source="code" label="table.field.qlyInspect.code" />
<TextField source="name" label="table.field.qlyInspect.name" />
+ <TextField source="barcode" label="table.field.qlyInspect.barcode" />
+ <NumberField source="asnItemId" label="table.field.qlyInspect.asnItemId" />
+ <NumberField source="poItemId" label="table.field.qlyInspect.poItemId" />
+ <NumberField source="safeQty" label="table.field.qlyInspect.safeQty" />
+ <NumberField source="disQty" label="table.field.qlyInspect.disQty" />
<ReferenceField source="updateBy" label="common.field.updateBy" reference="user" link={false} sortable={false}>
<TextField source="nickname" />
diff --git a/rsf-admin/src/page/qlyInspect/QlyInspectPanel.jsx b/rsf-admin/src/page/qlyInspect/QlyInspectPanel.jsx
index de828b5..785ba88 100644
--- a/rsf-admin/src/page/qlyInspect/QlyInspectPanel.jsx
+++ b/rsf-admin/src/page/qlyInspect/QlyInspectPanel.jsx
@@ -52,6 +52,36 @@
property={record.name}
/>
</Grid>
+ <Grid item xs={6}>
+ <PanelTypography
+ title="table.field.qlyInspect.barcode"
+ property={record.barcode}
+ />
+ </Grid>
+ <Grid item xs={6}>
+ <PanelTypography
+ title="table.field.qlyInspect.asnItemId"
+ property={record.asnItemId}
+ />
+ </Grid>
+ <Grid item xs={6}>
+ <PanelTypography
+ title="table.field.qlyInspect.poItemId"
+ property={record.poItemId}
+ />
+ </Grid>
+ <Grid item xs={6}>
+ <PanelTypography
+ title="table.field.qlyInspect.safeQty"
+ property={record.safeQty}
+ />
+ </Grid>
+ <Grid item xs={6}>
+ <PanelTypography
+ title="table.field.qlyInspect.disQty"
+ property={record.disQty}
+ />
+ </Grid>
</Grid>
</CardContent>
diff --git a/rsf-admin/src/page/system/dicts/dictData/DictDataCreate.jsx b/rsf-admin/src/page/system/dicts/dictData/DictDataCreate.jsx
index cc98111..f15c25d 100644
--- a/rsf-admin/src/page/system/dicts/dictData/DictDataCreate.jsx
+++ b/rsf-admin/src/page/system/dicts/dictData/DictDataCreate.jsx
@@ -32,7 +32,7 @@
import MemoInput from "../../../components/MemoInput";
const DictDataCreate = (props) => {
- const { open, setOpen } = props;
+ const { open, setOpen, row } = props;
const translate = useTranslate();
const notify = useNotify();
@@ -91,6 +91,7 @@
parse={v => v}
autoFocus
validate={required()}
+ defaultValue={row.dictTypeId}
/>
</Grid>
<Grid item xs={6} display="flex" gap={1}>
@@ -99,6 +100,7 @@
source="dictTypeCode"
parse={v => v}
validate={required()}
+ defaultValue={row.dictTypeCode}
/>
</Grid>
<Grid item xs={6} display="flex" gap={1}>
@@ -114,7 +116,6 @@
label="table.field.dictData.label"
source="label"
parse={v => v}
- validate={required()}
/>
</Grid>
<Grid item xs={6} display="flex" gap={1}>
@@ -123,13 +124,13 @@
source="sort"
/>
</Grid>
- <Grid item xs={6} display="flex" gap={1}>
+ {/* <Grid item xs={6} display="flex" gap={1}>
<TextInput
label="table.field.dictData.color"
source="color"
parse={v => v}
/>
- </Grid>
+ </Grid> */}
<Grid item xs={6} display="flex" gap={1}>
<StatusSelectInput />
diff --git a/rsf-admin/src/page/system/dicts/dictData/DictDataEdit.jsx b/rsf-admin/src/page/system/dicts/dictData/DictDataEdit.jsx
index 6190953..a52a4c2 100644
--- a/rsf-admin/src/page/system/dicts/dictData/DictDataEdit.jsx
+++ b/rsf-admin/src/page/system/dicts/dictData/DictDataEdit.jsx
@@ -94,7 +94,6 @@
label="table.field.dictData.label"
source="label"
parse={v => v}
- validate={required()}
/>
</Stack>
<Stack direction='row' gap={2}>
@@ -103,13 +102,13 @@
source="sort"
/>
</Stack>
- <Stack direction='row' gap={2}>
+ {/* <Stack direction='row' gap={2}>
<TextInput
label="table.field.dictData.color"
source="color"
parse={v => v}
/>
- </Stack>
+ </Stack> */}
</Grid>
<Grid item xs={12} md={4}>
diff --git a/rsf-admin/src/page/system/dicts/dictData/DictDataList.jsx b/rsf-admin/src/page/system/dicts/dictData/DictDataList.jsx
index 65ea973..21a3f45 100644
--- a/rsf-admin/src/page/system/dicts/dictData/DictDataList.jsx
+++ b/rsf-admin/src/page/system/dicts/dictData/DictDataList.jsx
@@ -70,7 +70,7 @@
<TextInput source="value" label="table.field.dictData.value" />,
<TextInput source="label" label="table.field.dictData.label" />,
<NumberInput source="sort" label="table.field.dictData.sort" />,
- <TextInput source="color" label="table.field.dictData.color" />,
+ // <TextInput source="color" label="table.field.dictData.color" />,
<TextInput label="common.field.memo" source="memo" />,
<SelectInput
@@ -93,11 +93,7 @@
const location = useLocation();
const queryParams = new URLSearchParams(location.search);
const dictTypeId = queryParams.get('dictTypeId');
- console.log(dictTypeId);
- if (dictTypeId != null && dictTypeId != undefined) {
- console.log(dictTypeId);
- console.log(fit);
- }
+ const dictTypeCode = queryParams.get('code');
return (
<>
@@ -111,7 +107,7 @@
theme.transitions.create(['all'], {
duration: theme.transitions.duration.enteringScreen,
}),
- marginRight: !!drawerVal ? `${PAGE_DRAWER_WIDTH}px` : 0,
+ marginRight: drawerVal ? `${PAGE_DRAWER_WIDTH}px` : 0,
}}
title={"menu.dictData"}
empty={<EmptyData onClick={() => { setCreateDialog(true) }} />}
@@ -142,7 +138,7 @@
<TextField source="value" label="table.field.dictData.value" />
<TextField source="label" label="table.field.dictData.label" />
<NumberField source="sort" label="table.field.dictData.sort" />
- <TextField source="color" label="table.field.dictData.color" />
+ {/* <TextField source="color" label="table.field.dictData.color" /> */}
<ReferenceField source="updateBy" label="common.field.updateBy" reference="user" link={false} sortable={false}>
<TextField source="nickname" />
@@ -163,6 +159,7 @@
<DictDataCreate
open={createDialog}
setOpen={setCreateDialog}
+ row={{ dictTypeId, dictTypeCode }}
/>
<PageDrawer
title='DictData Detail'
diff --git a/rsf-admin/src/page/system/dicts/dictType/DictTypeCreate.jsx b/rsf-admin/src/page/system/dicts/dictType/DictTypeCreate.jsx
index 9c17b03..8acd215 100644
--- a/rsf-admin/src/page/system/dicts/dictType/DictTypeCreate.jsx
+++ b/rsf-admin/src/page/system/dicts/dictType/DictTypeCreate.jsx
@@ -84,7 +84,7 @@
</DialogTitle>
<DialogContent sx={{ mt: 2 }}>
<Grid container rowSpacing={2} columnSpacing={2}>
- <Grid item xs={6} display="flex" gap={1}>
+ <Grid item xs={6} display="flex" gap={1}>
<TextInput
label="table.field.dictType.code"
source="code"
@@ -96,6 +96,7 @@
label="table.field.dictType.name"
source="name"
parse={v => v}
+ validate={required()}
/>
</Grid>
<Grid item xs={6} display="flex" gap={1}>
diff --git a/rsf-admin/src/page/system/dicts/dictType/DictTypeList.jsx b/rsf-admin/src/page/system/dicts/dictType/DictTypeList.jsx
index 4fc1553..09058f4 100644
--- a/rsf-admin/src/page/system/dicts/dictType/DictTypeList.jsx
+++ b/rsf-admin/src/page/system/dicts/dictType/DictTypeList.jsx
@@ -87,7 +87,7 @@
const navigate = useNavigate();
const assign = (record) => {
- navigate(`/dictData?dictTypeId=${record.id}`);
+ navigate(`/dictData?dictTypeId=${record.id}&code=${record.code}`);
}
return (
@@ -99,7 +99,7 @@
theme.transitions.create(['all'], {
duration: theme.transitions.duration.enteringScreen,
}),
- marginRight: !!drawerVal ? `${PAGE_DRAWER_WIDTH}px` : 0,
+ marginRight: drawerVal ? `${PAGE_DRAWER_WIDTH}px` : 0,
}}
title={"menu.dictType"}
empty={<EmptyData onClick={() => { setCreateDialog(true) }} />}
diff --git a/rsf-admin/src/page/system/operationRecord/OperationRecordList.jsx b/rsf-admin/src/page/system/operationRecord/OperationRecordList.jsx
index 249b3c1..ac5b4d6 100644
--- a/rsf-admin/src/page/system/operationRecord/OperationRecordList.jsx
+++ b/rsf-admin/src/page/system/operationRecord/OperationRecordList.jsx
@@ -43,6 +43,7 @@
import rowSx from './rowSx';
import { format } from 'date-fns';
import OperationDetail from './OperationDetail'
+import { width } from "@mui/system";
const StyledDatagrid = styled(DatagridConfigurable)(({ theme }) => ({
'& .css-1vooibu-MuiSvgIcon-root': {
@@ -122,7 +123,7 @@
theme.transitions.create(['all'], {
duration: theme.transitions.duration.enteringScreen,
}),
- marginRight: !!drawerVal ? `${PAGE_DRAWER_WIDTH}px` : 0,
+ marginRight: drawerVal ? `${PAGE_DRAWER_WIDTH}px` : 0,
}}
title={"menu.operation"}
empty={<EmptyData onClick={() => { setCreateDialog(true) }} />}
diff --git a/rsf-admin/src/page/system/serialRule/SerialRuleDetail.jsx b/rsf-admin/src/page/system/serialRule/SerialRuleDetail.jsx
index 9e7031c..c3d15cc 100644
--- a/rsf-admin/src/page/system/serialRule/SerialRuleDetail.jsx
+++ b/rsf-admin/src/page/system/serialRule/SerialRuleDetail.jsx
@@ -54,8 +54,6 @@
});
};
- console.log(SerialRuleItem);
-
return (
<>
<Dialog
--
Gitblit v1.9.1