From 8c2c1c08526015c310a4687e9afc876c6c550ff0 Mon Sep 17 00:00:00 2001 From: verou <857149855@qq.com> Date: 星期二, 11 三月 2025 13:46:51 +0800 Subject: [PATCH] fix:po order --- rsf-admin/src/page/asnOrder/AsnOrderList.jsx | 380 +++-- rsf-admin/src/page/components/MyExportButton.jsx | 145 - rsf-admin/src/page/purchaseItem/PurchaseItemList.jsx | 384 +++-- rsf-admin/src/page/system/serialRule/SerialRuleDetail.jsx | 2 rsf-admin/src/page/asnOrderItem/AsnOrderItemList.jsx | 406 +++-- rsf-admin/src/page/components/MyCreateButton.jsx | 100 rsf-admin/src/config/MyDataProvider.js | 1 rsf-admin/src/i18n/core/chineseMessages.js | 412 ++-- rsf-admin/src/i18n/zh.js | 1056 +++++++------- rsf-admin/src/i18n/en.js | 1073 +++++++------- rsf-admin/src/page/purchase/PurchaseList.jsx | 365 ++-- 11 files changed, 2,311 insertions(+), 2,013 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 de2d385..d75ea04 100644 --- a/rsf-admin/src/i18n/en.js +++ b/rsf-admin/src/i18n/en.js @@ -1,544 +1,565 @@ -import englishMessages from 'ra-language-english'; +import englishMessages from "ra-language-english"; const customEnglishMessages = { - ...englishMessages, - hello: 'Hello World', - common: { - response: { - success: "Success", - fail: "Fail", - dataError: "Submit data was error, Please check", - }, - field: { - id: 'ID', - uuid: 'uuid', - name: 'name', - createTime: 'create time', - createBy: 'create by', - updateTime: 'update time', - updateBy: 'update by', - status: 'status', - memoWrap: 'memo wrap', - memo: 'memo', - opt: 'operate', - }, - list: { - empty: { - tip: 'No data to display', - } - }, - edit: { - title: { - main: 'Main', - common: 'Common', - changePwd: 'Change Password', - }, - side: { - title: 'More Info' - } - }, + ...englishMessages, + hello: "Hello World", + common: { + response: { + success: "Success", + fail: "Fail", + dataError: "Submit data was error, Please check", + }, + field: { + id: "ID", + uuid: "uuid", + name: "name", + createTime: "create time", + createBy: "create by", + updateTime: "update time", + updateBy: "update by", + status: "status", + memoWrap: "memo wrap", + memo: "memo", + opt: "operate", + }, + list: { + empty: { + tip: "No data to display", + }, + }, + edit: { + title: { + main: "Main", + common: "Common", + changePwd: "Change Password", + }, + side: { + title: "More Info", + }, + }, + enums: { + statusTrue: "Enable", + statusFalse: "Disable", + true: "Yes", + false: "No", + }, + time: { + after: "Time After", + before: "Time Before", + }, + action: { + reset: "Reset", + expand: "Expand", + expandAll: "Expand All", + collapse: "Collapse", + collapseAll: "Collapse All", + scope: "Assign", + import: { + title: "Import", + stop: "Stop import", + msg: "Here is a sample CSV file you can use as a template", + tips: "The import is running, please do not close this tab.", + err: "Failed to import this file, please make sure your provided a valid CSV file.", + download: "Download Import Template", + result: + "Contacts import complete. Imported %{success} success, with %{error} errors", + }, + loadMore: "Load More Data", + complete: "Complete", + deprecate: "Deprecate", + resend: "RESEND", + selected: "selected", + }, + msg: { + confirm: { + tip: "Tip", + desc: "Are you sure you want to proceed?", + }, + placeholder: "Please enter your search content", + }, + }, + filters: { + lastCreated: "Last created", + today: "Today", + thisWeek: "This week", + lastWeek: "Last week", + thisMonth: "This month", + lastMonth: "Last month", + earlier: "Earlier...", + }, + validate: { + pwdMisMatch: "The password confirmation is not the same as the password.", + }, + settings: { + base: "Base", + security: "Security", + }, + create: { + title: "Create", + empty: { + title: "Data Empty", + desc: "Please Create Data First", + button: "Create Data", + }, + }, + update: { + title: "Update", + }, + menu: { + dashboard: "Dashboard", + basicInfo: "BasicInfo", + settings: "Settings", + basicInfo: "BasicInfo", + system: "System", + user: "User", + role: "Role", + menu: "Menu", + host: "Host", + department: "Department", + token: "Token", + operation: "Operation", + config: "Config", + tenant: "Tenant", + userLogin: "Token", + customer: "Customer", + shipper: "shipper", + matnr: "Matnr", + matnrGroup: "MatnrGroup", + warehouse: "Warehouse", + warehouseAreas: "WarehouseAreas", + loc: "Loc", + container: "Container", + contract: "Contract", + qlyInspect: "QlyInspect", + dictType: "DictType", + dictData: "DictData", + companys: "Companys", + serialRuleItem: "SerialRuleItem", + serialRule: "SerialRule", + asnOrder: "AsnOrder", + asnOrderItem: "AsnOrderItem", + purchase: "Purchase", + purchaseItem: "PurchaseItem", + whMat: "Warehouse Mat", + }, + table: { + field: { + host: {}, + config: { + uuid: "uuid", + name: "name", + flag: "flag", + val: "val", + content: "content", + type: "type", + }, + tenant: { + name: "name", + flag: "flag", + root: "root", + }, + role: { + name: "name", + code: "code", + }, + userLogin: { + userId: "user", + token: "token", + ip: "ip", + type: "type", + system: "system", + }, + dept: { + name: "name", + parentId: "parent id", + parentName: "higher", + path: "path", + pathName: "path name", + fullName: "full name", + brief: "brief", + code: "code", + type: "type", + leader: "leader", + count: "count", + sort: "sort", + }, + menu: { + name: "name", + parentId: "parent id", + parentName: "higher", + path: "path", + pathName: "pathName", + route: "route", + component: "component", + brief: "brief", + code: "code", + type: "type", + authority: "authority", + icon: "icon", + sort: "sort", + meta: "meta", enums: { - statusTrue: 'Enable', - statusFalse: 'Disable', - true: 'Yes', - false: 'No', + menu: "Menu", + button: "Button", }, - time: { - after: 'Time After', - before: 'Time Before' + }, + user: { + username: "username", + password: "password", + confirmPwd: "confirm password", + nickname: "nickname", + avatar: "avatar", + code: "code", + sex: "sex", + phone: "phone", + email: "email", + emailVerified: "email verified", + deptId: "department", + realName: "real name", + idCard: "idCard", + birthday: "birthday", + introduction: "introduction", + role: "role", + sexes: { + male: "Male", + female: "Female", + unknown: "Unknown", }, - action: { - reset: 'Reset', - expand: 'Expand', - expandAll: 'Expand All', - collapse: 'Collapse', - collapseAll: 'Collapse All', - scope: 'Assign', - import: { - title: 'Import', - stop: 'Stop import', - msg: 'Here is a sample CSV file you can use as a template', - tips: 'The import is running, please do not close this tab.', - err: 'Failed to import this file, please make sure your provided a valid CSV file.', - download: 'Download Import Template', - result: 'Contacts import complete. Imported %{success} success, with %{error} errors', - }, - loadMore: 'Load More Data', - complete: 'Complete', - deprecate: 'Deprecate', - resend: 'RESEND', - selected: 'selected', - }, - msg: { - confirm: { - tip: 'Tip', - desc: 'Are you sure you want to proceed?', - }, - placeholder: 'Please enter your search content', - }, + }, + operationRecord: { + namespace: "namespace", + url: "url", + appkey: "appkey", + timestamp: "timestamp", + clientIp: "client ip", + request: "request", + response: "response", + spendTime: "spend time", + err: "error", + result: "result", + userId: "user", + }, + customer: { + uuid: "uuid", + name: "name", + }, + shipper: { + uuid: "uuid", + name: "name", + }, + matnr: { + name: "name", + code: "code", + shipperId: "shipperId", + groupId: "groupId", + rglarId: "RegularId", + erpCode: "erpCode", + spec: "spec", + model: "model", + weight: "weight", + color: "color", + size: "size", + describle: "describle", + nromNum: "nromNum", + unit: "unit", + purUnit: "purchaseUnit", + stockUnit: "stockUnit", + stockLevel: "stockLeval", + isLabelMange: "isLabelMange", + safeQty: "safetyQty", + minQty: "minQty", + maxQty: "maxQty", + stagn: "stagnate", + valid: "validity", + validWarn: "validityWarn", + flagCheck: "flagCheck", + }, + matnrGroup: { + name: "name", + code: "code", + parentId: "parentId", + }, + warehouse: { + name: "name", + code: "code", + factory: "factory", + address: "address", + longitude: "longitude", + latgitude: "latgitude", + length: "length", + width: "width", + height: "height", + }, + warehouseAreas: { + uuid: "uuid", + name: "name", + code: "code", + shipperId: "shipperId", + supplierId: "supplierId", + flagMinus: "flagMinus", + flagLabelMange: "flagLabelMange", + flagMix: "flagMix", + }, + loc: { + warehouseId: "Warehouse", + areaId: "Area", + code: "Code", + type: "Type", + name: "Name", + flagLogic: "FlagLogic", + fucAtrrs: "FucAtrrs", + barcode: "Barcode", + unit: "Unit", + size: "Size", + row: "Row", + col: "Col", + lev: "Lev", + channel: "Channel", + maxParts: "MaxParts", + maxPack: "MaxPack", + flagLabelMange: "FlagLabelMange", + locAttrs: "LocAttrs", + }, + container: { + code: "Code", + name: "Name", + typeId: "TypeId", + used: "Used", + lenght: "Lenght", + width: "Width", + height: "Height", + rstLen: "RstLen", + rstWid: "RstWid", + rstWei: "RstWei", + rstHei: "RstHei", + panrentId: "PanrentId", + vaildTime: "VaildTime", + flagRycle: "FlagRycle", + flagLogic: "FlagLogic", + }, + contract: { + code: "Code", + name: "Name", + projectName: "ProjectName", + }, + qlyInspect: { + code: "Code", + name: "Name", + }, + dictType: { + code: "Code", + name: "Name", + description: "Description", + }, + dictData: { + dictTypeId: "dictTypeId", + dictTypeCode: "dictTypeCode", + value: "value", + label: "label", + sort: "sort", + color: "color", + }, + companys: { + code: "Code", + name: "Name", + nameEn: "NameEn", + breifCode: "BreifCode", + type: "Type", + contact: "Contact", + tel: "Tel", + email: "Email", + pcode: "PCode", + province: "Province", + city: "City", + address: "Address", + }, + serialRuleItem: { + ruleId: "ruleId", + wkType: "wkType", + feildValue: "feildValue", + len: "len", + lenStr: "lenStr", + sort: "sort", + }, + serialRule: { + code: "code", + name: "name", + delimit: "delimit", + reset: "reset", + resetDep: "resetDep", + currValue: "currValue", + lastCode: "lastCode", + }, + whMat: { + matnrCode: "matnrCode", + matnrName: "matnrName", + matnrGroupId: "matnrGroupId", + spec: "spec", + color: "color", + size: "size", + minWeight: "minWeight", + maxWeight: "maxWeight", + }, + asnOrder: { + code: "Code", + poCode: "poCode", + poId: "poId", + type: "Type", + wkType: "wkType", + anfme: "anfme", + qty: "qty", + logisNo: "logisNo", + arrTime: "Arrived", + rleStatus: "Release", + ntyStatus: "Notify", + }, + asnOrderItem: { + asnId: "asnId", + asnCode: "asnCode", + poDetlId: "poDetlId", + poDetlCode: "poDetlCode", + matnrId: "matnrId", + matnk: "matnk", + anfme: "anfme", + stockUnit: "stockUnit", + purQty: "purQty", + purUnit: "purUnit", + qty: "qty", + splrCode: "splrCode", + splrName: "splrName", + qrcode: "qrcode", + barcode: "barcode", + packName: "packName", + ntyStatus: "ntyStatus", + }, + purchaseItem: { + purchaseId: "purchaseId", + erpItemId: "erpItemId", + matnrCode: "matnrCode", + matnrName: "matnrName", + unit: "unit", + anfme: "anfme", + qty: "qty", + nromQty: "nromQty", + asnQty: "asnQty", + printQty: "printQty", + splrName: "splrName", + splrCode: "splrCode", + splrBatch: "splrBatch", + }, + purchase: { + code: "code", + erpId: "erpId", + type: "type", + wkType: "wkType", + source: "source", + preArr: "preArr", + anfme: "anfme", + qty: "qty", + workQty: "workQty", + channel: "channel", + erpCode: "erpCode", + project: "project", + startTime: "startTime", + endTime: "endTime", + }, + purchaseItem: { + purchaseId: "purchaseId", + erpItemId: "erpItemId", + matnrCode: "matnrCode", + matnrName: "matnrName", + unit: "unit", + anfme: "anfme", + qty: "qty", + nromQty: "nromQty", + asnQty: "asnQty", + printQty: "printQty", + splrName: "splrName", + splrCode: "splrCode", + splrBatch: "splrBatch", + }, }, - filters: { - lastCreated: 'Last created', - today: 'Today', - thisWeek: 'This week', - lastWeek: 'Last week', - thisMonth: 'This month', - lastMonth: 'Last month', - earlier: 'Earlier...', + }, + page: { + welcome: { + index: " Welcome to the RSF Management System.", + tech: " Technology stack: Java 17, SpringBoot2.5.3, Mybatis-plus_3.4.1, Spring Security, Druid 1.2.6, Redis, Mysql5.7, Node18, ReactJs, Material UI5.16, Axios, React-Admin5.1", }, - validate: { - pwdMisMatch: 'The password confirmation is not the same as the password.' + login: { + title: "Welcome", + footer: "Footer Goes Here", + tenant: "Company", + email: "Email Address", + username: "Username", + password: "Password", + confirmPwd: "Confirm Password", + code: "Verification Code", + tab: { + login: "SIGN IN", + register: "SIGN UP", + }, + button: { + login: "SIGN IN", + register: "SIGN UP", + code: "Send Code", + }, }, settings: { - base: 'Base', - security: 'Security', + resetPwd: { + currPwd: "Current Password", + newPwd: "New Password", + confirmNewPwd: "Confirm Password", + resetBtn: "Reset", + tip: { + usernameLimit: + "Only 3-20 English letters or numbers are allowed. No special characters.", + pwdInputLimit: + "New Password must be 6-13 characters long and include both letters and numbers.", + pwdNotSameAsOld: + "New Password cannot be the same as the Current Password.", + pwdNotMatch: "New Password and Confirm Password do not match.", + }, + }, }, - create: { - title: 'Create', - empty: { - title: 'Data Empty', - desc: 'Please Create Data First', - button: 'Create Data', + tenant: { + create: { + title: { + basic: "Basic Information", + root: "Add Administrator", + confirm: "Confirm", }, + btn: { + next: "Next Step", + back: "Back Step", + }, + tip: { + onlyEn: "Only 3-20 English letters are allowed.", + }, + }, }, - update: { - title: 'Update' + matnr: { + title: { + basic: "basic info", + control: "control", + batchRole: "batch role", + }, }, - menu: { - dashboard: 'Dashboard', - basicInfo: 'BasicInfo', - settings: 'Settings', - basicInfo: 'BasicInfo', - system: 'System', - user: 'User', - role: 'Role', - menu: 'Menu', - host: 'Host', - department: 'Department', - token: 'Token', - operation: 'Operation', - config: 'Config', - tenant: 'Tenant', - userLogin: 'Token', - customer: 'Customer', - shipper: 'shipper', - matnr: 'Matnr', - matnrGroup: 'MatnrGroup', - warehouse: 'Warehouse', - warehouseAreas: 'WarehouseAreas', - loc: 'Loc', - container: 'Container', - contract: 'Contract', - qlyInspect: 'QlyInspect', - dictType: 'DictType', - dictData: 'DictData', - companys: 'Companys', - serialRuleItem: 'SerialRuleItem', - serialRule: 'SerialRule', - asnOrder: 'AsnOrder', - asnOrderItem: 'AsnOrderItem', - purchase: 'Purchase', - purchaseItem: 'PurchaseItem', - whMat: 'Warehouse Mat', + whMat: { + title: { + add: "add", + }, }, - table: { - field: { - host: { - - }, - config: { - uuid: "uuid", - name: "name", - flag: "flag", - val: "val", - content: "content", - type: "type", - }, - tenant: { - name: "name", - flag: "flag", - root: "root", - }, - role: { - name: "name", - code: "code", - }, - userLogin: { - userId: "user", - token: "token", - ip: "ip", - type: "type", - system: "system", - }, - dept: { - name: "name", - parentId: "parent id", - parentName: "higher", - path: "path", - pathName: "path name", - fullName: "full name", - brief: "brief", - code: "code", - type: "type", - leader: "leader", - count: "count", - sort: "sort", - }, - menu: { - name: "name", - parentId: "parent id", - parentName: "higher", - path: "path", - pathName: "pathName", - route: "route", - component: "component", - brief: "brief", - code: "code", - type: "type", - authority: "authority", - icon: "icon", - sort: "sort", - meta: "meta", - enums: { - menu: 'Menu', - button: 'Button', - } - }, - user: { - username: "username", - password: "password", - confirmPwd: "confirm password", - nickname: "nickname", - avatar: "avatar", - code: "code", - sex: "sex", - phone: "phone", - email: "email", - emailVerified: "email verified", - deptId: "department", - realName: "real name", - idCard: "idCard", - birthday: "birthday", - introduction: "introduction", - role: "role", - sexes: { - male: 'Male', - female: 'Female', - unknown: 'Unknown', - } - }, - operationRecord: { - namespace: "namespace", - url: "url", - appkey: "appkey", - timestamp: "timestamp", - clientIp: "client ip", - request: "request", - response: "response", - spendTime: "spend time", - err: "error", - result: "result", - userId: "user", - }, - customer: { - uuid: "uuid", - name: "name", - }, - shipper: { - uuid: "uuid", - name: "name", - }, - matnr: { - name: "name", - code: "code", - shipperId: "shipperId", - groupId: "groupId", - rglarId: "RegularId", - platCode: "platCode", - spec: "spec", - model: "model", - weight: "weight", - color: "color", - size: "size", - describle: "describle", - nromNum: "nromNum", - unit: "unit", - purUnit: "purchaseUnit", - stockUnit: "stockUnit", - stockLevel: "stockLeval", - isLabelMange: "isLabelMange", - safeQty: "safetyQty", - minQty: "minQty", - maxQty: "maxQty", - stagn: "stagnate", - valid: "validity", - validWarn: "validityWarn", - flagCheck: "flagCheck", - }, - matnrGroup: { - name: "name", - code: "code", - parentId: "parentId", - }, - warehouse: { - name: "name", - code: "code", - factory: "factory", - address: "address", - longitude: "longitude", - latgitude: "latgitude", - length: "length", - width: "width", - height: "height", - }, - warehouseAreas: { - uuid: "uuid", - name: "name", - code: "code", - shipperId: "shipperId", - supplierId: "supplierId", - flagMinus: "flagMinus", - flagLabelMange: "flagLabelMange", - flagMix: "flagMix", - }, - loc: { - warehouseId: "Warehouse", - areaId: "Area", - code: "Code", - type: "Type", - name: "Name", - flagLogic: "FlagLogic", - fucAtrrs: "FucAtrrs", - barcode: "Barcode", - unit: "Unit", - size: "Size", - row: "Row", - col: "Col", - lev: "Lev", - channel: "Channel", - maxParts: "MaxParts", - maxPack: "MaxPack", - flagLabelMange: "FlagLabelMange", - locAttrs: "LocAttrs", - }, - container: { - code: "Code", - name: "Name", - typeId: "TypeId", - used: "Used", - lenght: "Lenght", - width: "Width", - height: "Height", - rstLen: "RstLen", - rstWid: "RstWid", - rstWei: "RstWei", - rstHei: "RstHei", - panrentId: "PanrentId", - vaildTime: "VaildTime", - flagRycle: "FlagRycle", - flagLogic: "FlagLogic", - }, - contract: { - code: "Code", - name: "Name", - projectName: "ProjectName", - }, - qlyInspect: { - code: "Code", - name: "Name", - }, - dictType: { - code: "Code", - name: "Name", - description: "Description", - }, - dictData: { - dictTypeId: "dictTypeId", - dictTypeCode: "dictTypeCode", - value: "value", - label: "label", - sort: "sort", - color: "color", - }, - companys: { - code: "Code", - name: "Name", - nameEn: "NameEn", - breifCode: "BreifCode", - type: "Type", - contact: "Contact", - tel: "Tel", - email: "Email", - pcode: "PCode", - province: "Province", - city: "City", - address: "Address", - }, - serialRuleItem: { - ruleId: "ruleId", - wkType: "wkType", - feildValue: "feildValue", - len: "len", - lenStr: "lenStr", - sort: "sort", - }, - serialRule: { - code: "code", - name: "name", - delimit: "delimit", - reset: "reset", - resetDep: "resetDep", - currValue: "currValue", - lastCode: "lastCode", - }, - whMat: { - matnrCode: "matnrCode", - matnrName: "matnrName", - matnrGroupId: "matnrGroupId", - spec: "spec", - color: "color", - size: "size", - minWeight: "minWeight", - maxWeight: "maxWeight", - }, - asnOrder: { - code: "Code", - poCode: "poCode", - poId: "poId", - type: "Type", - wkType: "wkType", - anfme: "anfme", - qty: "qty", - logisNo: "logisNo", - arrTime: "Arrived", - rleStatus: "Release", - ntyStatus: "Notify", - }, - asnOrderItem: { - asnId: "asnId", - asnCode: "asnCode", - poDetlId: "poDetlId", - poDetlCode: "poDetlCode", - matnrId: "matnrId", - matnk: "matnk", - anfme: "anfme", - stockUnit: "stockUnit", - purQty: "purQty", - purUnit: "purUnit", - qty: "qty", - splrCode: "splrCode", - splrName: "splrName", - qrcode: "qrcode", - barcode: "barcode", - packName: "packName", - ntyStatus: "ntyStatus", - }, - purchase: { - code: "code", - platId: "PlatId", - type: "type", - wkType: "wkType", - source: "source", - preArr: "preArr", - anfme: "anfme", - qty: "qty", - workQty: "workQty", - channel: "channel", - platCode: "platCode", - project: "project", - startTime: "startTime", - endTime: "endTime", - }, - purchaseItem: { - purchaseId: "purchaseId", - platItemId: "erpItemId", - matnrCode: "matnrCode", - matnrName: "matnrName", - unit: "unit", - anfme: "anfme", - qty: "qty", - nromQty: "nromQty", - asnQty: "asnQty", - printQty: "printQty", - splrName: "splrName", - splrCode: "splrCode", - splrBatch: "splrBatch", - }, - } + }, + form: { + matnr: { + shipper: "shipper is required", + groupId: "groupId is required", }, - page: { - welcome: { - index: ' Welcome to the RSF Management System.', - tech: ' Technology stack: Java 17, SpringBoot2.5.3, Mybatis-plus_3.4.1, Spring Security, Druid 1.2.6, Redis, Mysql5.7, Node18, ReactJs, Material UI5.16, Axios, React-Admin5.1' - }, - login: { - title: 'Welcome', - footer: 'Footer Goes Here', - tenant: 'Company', - email: 'Email Address', - username: 'Username', - password: 'Password', - confirmPwd: 'Confirm Password', - code: 'Verification Code', - tab: { - login: 'SIGN IN', - register: 'SIGN UP', - }, - button: { - login: 'SIGN IN', - register: 'SIGN UP', - code: 'Send Code', - }, - }, - settings: { - resetPwd: { - currPwd: 'Current Password', - newPwd: 'New Password', - confirmNewPwd: 'Confirm Password', - resetBtn: 'Reset', - tip: { - usernameLimit: 'Only 3-20 English letters or numbers are allowed. No special characters.', - pwdInputLimit: "New Password must be 6-13 characters long and include both letters and numbers.", - pwdNotSameAsOld: "New Password cannot be the same as the Current Password.", - pwdNotMatch: "New Password and Confirm Password do not match.", - } - } - }, - tenant: { - create: { - title: { - basic: 'Basic Information', - root: 'Add Administrator', - confirm: 'Confirm', - }, - btn: { - next: 'Next Step', - back: 'Back Step', - }, - tip: { - onlyEn: 'Only 3-20 English letters are allowed.' - }, - }, - }, - matnr: { - title: { - basic: 'basic info', - control: 'control', - batchRole: 'batch role', - } - }, - whMat: { - title: { - add: 'add', - } - }, - }, - form: { - matnr: { - shipper: 'shipper is required', - groupId: 'groupId is required', - } - } + }, + toolbar: { + inspection: "Inspection", + creatcode: "creatcode", + }, }; export default customEnglishMessages; diff --git a/rsf-admin/src/i18n/zh.js b/rsf-admin/src/i18n/zh.js index 0b1ed79..80056a6 100644 --- a/rsf-admin/src/i18n/zh.js +++ b/rsf-admin/src/i18n/zh.js @@ -1,546 +1,548 @@ import chineseMessages from "./core/chineseMessages"; const customChineseMessages = { - ...chineseMessages, - hello: '浣犲ソ涓栫晫', - common: { - response: { - success: "鎿嶄綔鎴愬姛", - fail: "鏈嶅姟鍣ㄩ敊璇�", - dataError: "鏁版嵁閿欒锛岃浠旂粏妫�鏌�", - }, - field: { - id: 'ID', - uuid: '缂栧彿', - name: '鍚嶇О', - createTime: '娣诲姞鏃堕棿', - createBy: '娣诲姞浜哄憳', - updateTime: '淇敼鏃堕棿', - updateBy: '淇敼浜哄憳', - status: '鐘舵��', - memoWrap: '鏄剧ず澶囨敞', - memo: '澶囨敞', - opt: '鎿嶄綔', - }, - list: { - empty: { - tip: '娌℃湁鍙樉绀烘暟鎹�', - } - }, - edit: { - title: { - main: '涓昏', - common: '閫氱敤', - changePwd: '閲嶇疆瀵嗙爜', - }, - side: { - title: '鏇村' - } - }, + ...chineseMessages, + hello: "浣犲ソ涓栫晫", + common: { + response: { + success: "鎿嶄綔鎴愬姛", + fail: "鏈嶅姟鍣ㄩ敊璇�", + dataError: "鏁版嵁閿欒锛岃浠旂粏妫�鏌�", + }, + field: { + id: "ID", + uuid: "缂栧彿", + name: "鍚嶇О", + createTime: "娣诲姞鏃堕棿", + createBy: "娣诲姞浜哄憳", + updateTime: "淇敼鏃堕棿", + updateBy: "淇敼浜哄憳", + status: "鐘舵��", + memoWrap: "鏄剧ず澶囨敞", + memo: "澶囨敞", + opt: "鎿嶄綔", + }, + list: { + empty: { + tip: "娌℃湁鍙樉绀烘暟鎹�", + }, + }, + edit: { + title: { + main: "涓昏", + common: "閫氱敤", + changePwd: "閲嶇疆瀵嗙爜", + }, + side: { + title: "鏇村", + }, + }, + enums: { + statusTrue: "姝e父", + statusFalse: "绂佺敤", + true: "鏄�", + false: "鍚�", + }, + time: { + after: "寮�濮嬫椂闂�", + before: "缁撴潫鏃堕棿", + }, + action: { + reset: "閲嶇疆", + expand: "灞曞紑", + expandAll: "鍏ㄩ儴灞曞紑", + collapse: "鎶樺彔", + collapseAll: "鍏ㄩ儴鎶樺彔", + scope: "鏉冮檺", + import: { + title: "瀵煎叆", + stop: "鍋滄瀵煎叆", + msg: "杩欐槸涓�涓彲浠ョ敤浣滄ā鏉跨殑绀轰緥 CSV 鏂囦欢", + tips: "姝e湪瀵煎叆涓紝璇蜂笉瑕佸叧闂绐楀彛", + err: "鏃犳硶瀵煎叆姝ゆ枃浠讹紝璇风‘淇濇偍鎻愪緵浜嗘湁鏁堢殑 CSV 鏂囦欢", + download: "涓嬭浇瀵煎叆妯℃澘", + result: "瀵煎叆瀹屾垚銆傚凡瀵煎叆 %{success} 鎴愬姛, 鍜� %{error} 澶辫触", + }, + loadMore: "鍔犺浇鏇村", + complete: "瀹屾垚", + deprecate: "搴熷純", + resend: "閲嶅彂", + selected: "椤归�変腑", + }, + msg: { + confirm: { + tip: "鎻愮ず", + desc: "鎮ㄧ‘瀹氳鎵ц姝ゆ搷浣滃悧锛�", + }, + placeholder: "璇疯緭鍏ユ悳绱㈠唴瀹�", + }, + }, + filters: { + lastCreated: "鏈�杩戝垱寤�", + today: "浠婂ぉ", + thisWeek: "鏈懆", + lastWeek: "涓婂懆", + thisMonth: "鏈湀", + lastMonth: "涓婃湀", + earlier: "鏇存棭...", + }, + validate: { + pwdMisMatch: "瀵嗙爜涓嶄竴鑷�", + }, + settings: { + base: "鍩烘湰璁剧疆", + security: "瀹夊叏璁剧疆", + }, + create: { + title: "娣诲姞", + empty: { + title: "鏆傛棤鏁版嵁", + desc: "璇峰厛娣诲姞鏁版嵁", + button: "娣诲姞鏁版嵁", + }, + }, + update: { + title: "淇敼", + }, + menu: { + dashboard: "鎺у埗鍙�", + settings: "涓汉璁剧疆", + basicInfo: "鍩虹淇℃伅", + system: "绯荤粺璁剧疆", + user: "鐢ㄦ埛绠$悊", + role: "瑙掕壊绠$悊", + menu: "鑿滃崟绠$悊", + host: "鏈烘瀯绠$悊", + department: "閮ㄩ棬绠$悊", + token: "鐧诲綍鏃ュ織", + operation: "鎿嶄綔鏃ュ織", + config: "閰嶇疆鍙傛暟", + tenant: "绉熸埛绠$悊", + userLogin: "鐧诲綍鏃ュ織", + customer: "瀹㈡埛琛�", + shipper: "璐т富淇℃伅", + matnr: "鐗╂枡琛�", + matnrGroup: "鐗╂枡鍒嗙粍", + warehouse: "浠撳簱淇℃伅", + warehouseAreas: "浠撳簱搴撳尯", + loc: "鍩虹搴撲綅", + container: "瀹瑰櫒绠$悊", + contract: "鍚堝悓淇℃伅", + qlyInspect: "璐ㄦ淇℃伅", + dictType: "鏁版嵁瀛楀吀", + dictData: "瀛楀吀鏁版嵁闆�", + companys: "寰�鏉ヤ紒涓�", + serialRuleItem: "缂栫爜瑙勫垯瀛愯〃", + serialRule: "缂栫爜瑙勫垯", + asnOrder: "鏀惰揣閫氱煡鍗�", + asnOrderItem: "鏀惰揣鏄庣粏", + purchase: "PO鍗�", + purchaseItem: "PO鍗曟槑缁�", + whMat: "搴撳尯鐗╂枡鍏崇郴", + }, + table: { + field: { + host: {}, + config: { + uuid: "缂栧彿", + name: "閰嶇疆鍚�", + flag: "鏍囪瘑 (EN) ", + val: "閰嶇疆鍊�", + content: "閰嶇疆鍐呭", + type: "鏁版嵁绫诲瀷", + }, + tenant: { + name: "绉熸埛鍚�", + flag: "浠g爜", + root: "绠$悊鍛�", + }, + role: { + name: "瑙掕壊鍚嶇О", + code: "瑙掕壊鏍囪瘑", + }, + userLogin: { + userId: "鐢ㄦ埛", + token: "token", + ip: "ip", + type: "绫诲瀷", + system: "绯荤粺", + }, + dept: { + name: "閮ㄩ棬鍚嶇О", + parentId: "涓婄骇閮ㄩ棬ID", + parentName: "涓婄骇閮ㄩ棬", + path: "璺緞", + pathName: "璺緞鍚�", + fullName: "鍏ㄧО", + brief: "绠�杩�", + code: "鏍囪瘑", + type: "绫诲瀷", + leader: "璐熻矗浜�", + count: "鏁伴噺", + sort: "鎺掑簭", + }, + menu: { + name: "鑿滃崟鍚嶇О", + parentId: "涓婄骇鑿滃崟ID", + parentName: "涓婄骇鑿滃崟", + path: "璺緞", + pathName: "璺緞鍚�", + route: "璺敱鍦板潃", + component: "缁勪欢", + brief: "绠�杩�", + code: "鏍囪瘑", + type: "绫诲瀷", + authority: "閴存潈", + icon: "鍥炬爣", + sort: "鎺掑簭", + meta: "鍏�", enums: { - statusTrue: '姝e父', - statusFalse: '绂佺敤', - true: '鏄�', - false: '鍚�', + menu: "鑿滃崟", + button: "鎸夐挳", }, - time: { - after: '寮�濮嬫椂闂�', - before: '缁撴潫鏃堕棿' + }, + user: { + username: "璐﹀彿", + password: "瀵嗙爜", + confirmPwd: "纭瀵嗙爜", + nickname: "鏄电О", + avatar: "澶村儚", + code: "浠e彿", + sex: "鎬у埆", + phone: "鑱旂郴鏂瑰紡", + email: "閭", + emailVerified: "閭楠岃瘉", + deptId: "閮ㄩ棬", + realName: "鐪熷疄濮撳悕", + idCard: "韬唤璇�", + birthday: "鐢熸棩", + introduction: "绠�浠�", + role: "瑙掕壊", + sexes: { + male: "鐢锋��", + female: "濂虫��", + unknown: "鏈煡", }, - action: { - reset: '閲嶇疆', - expand: '灞曞紑', - expandAll: '鍏ㄩ儴灞曞紑', - collapse: '鎶樺彔', - collapseAll: '鍏ㄩ儴鎶樺彔', - scope: '鏉冮檺', - import: { - title: '瀵煎叆', - stop: '鍋滄瀵煎叆', - msg: '杩欐槸涓�涓彲浠ョ敤浣滄ā鏉跨殑绀轰緥 CSV 鏂囦欢', - tips: '姝e湪瀵煎叆涓紝璇蜂笉瑕佸叧闂绐楀彛', - err: '鏃犳硶瀵煎叆姝ゆ枃浠讹紝璇风‘淇濇偍鎻愪緵浜嗘湁鏁堢殑 CSV 鏂囦欢', - download: '涓嬭浇瀵煎叆妯℃澘', - result: '瀵煎叆瀹屾垚銆傚凡瀵煎叆 %{success} 鎴愬姛, 鍜� %{error} 澶辫触', - }, - loadMore: '鍔犺浇鏇村', - complete: '瀹屾垚', - deprecate: '搴熷純', - resend: '閲嶅彂', - selected: '椤归�変腑', - }, - msg: { - confirm: { - tip: '鎻愮ず', - desc: '鎮ㄧ‘瀹氳鎵ц姝ゆ搷浣滃悧锛�', - }, - placeholder: '璇疯緭鍏ユ悳绱㈠唴瀹�', - }, + }, + operationRecord: { + namespace: "鍛藉悕绌洪棿", + url: "url", + appkey: "瀵嗛挜", + timestamp: "鏃堕棿鎴�", + clientIp: "瀹㈡埛绔疘P", + request: "璇锋眰鍐呭", + response: "鍝嶅簲鍐呭", + spendTime: "鑺辫垂鏃堕棿", + err: "閿欒淇℃伅", + result: "result", + userId: "鎿嶄綔鐢ㄦ埛", + }, + customer: { + uuid: "缂栧彿", + name: "瀹㈡埛鍚�", + }, + shipper: { + uuid: "缂栫爜", + name: "鍚嶇О", + }, + matnr: { + name: "鐗╂枡鍚嶇О", + code: "鐗╂枡缂栫爜", + shipperId: "璐т富鏍囪瘑", + groupId: "鍒嗙粍鏍囪瘑", + rglarId: "鎵规瑙勫垯鏍囪瘑", + erpCode: "ERP缂栫爜", + spec: "瑙勬牸", + model: "鍨嬪彿", + weight: "閲嶉噺", + color: "棰滆壊", + size: "灏哄", + describle: "鎻忚堪", + nromNum: "鏍囧寘鏁伴噺", + unit: "鍗曚綅", + purUnit: "閲囪喘鍗曚綅", + stockUnit: "搴撳瓨鍗曚綅", + stockLevel: "ABC鍒嗙被", + isLabelMange: "鏍囩绠$悊", + safeQty: "瀹夊叏鍊�", + minQty: "鏈�灏忓��", + maxQty: "鏈�澶у��", + stagn: "鍋滄粸棰勮鍊�", + valid: "淇濊川鏈�", + validWarn: "鏁堟湡棰勮", + flagCheck: "鍏嶆", + }, + matnrGroup: { + name: "鍚嶇О", + code: "缂栫爜", + parentId: "鐖剁被鏍囪瘑", + }, + warehouse: { + name: "鍚嶇О", + code: "缂栫爜", + factory: "宸ュ巶", + address: "鍦板潃", + longitude: "缁忓害", + latgitude: "绾害", + length: "闀�", + width: "瀹�", + height: "楂�", + }, + warehouseAreas: { + uuid: "鍞竴缂栫爜", + name: "鍚嶇О", + code: "缂栫爜", + shipperId: "璐т富", + supplierId: "渚涘簲鍟�", + flagMinus: "鍏佽璐熷簱瀛�", + flagLabelMange: "鏍囩绠$悊", + flagMix: "娣锋斁", + }, + loc: { + warehouseId: "浠撳簱", + areaId: "搴撳尯", + code: "缂栫爜", + type: "绫诲瀷", + name: "鍚嶇О", + flagLogic: "铏氭嫙搴撲綅", + fucAtrrs: "鍔熻兘灞炴��", + barcode: "瀹瑰櫒鐮�", + unit: "鍗曚綅", + size: "闀�/瀹�/楂�", + row: "鎺�", + col: "鍒�", + lev: "灞�", + channel: "閫氶亾", + maxParts: "鏈�澶ч浂浠舵暟", + maxPack: "鏈�澶у寘瑁呮暟", + flagLabelMange: "鏍囩绠$悊", + locAttrs: "灞炴��", + }, + + container: { + code: "缂栫爜", + name: "鍚嶇О", + typeId: "绫诲瀷", + used: "浣跨敤娆℃暟", + lenght: "闀垮害", + width: "瀹�", + height: "楂�", + rstLen: "闄愰暱", + rstWid: "闄愬", + rstWei: "闄愰噸", + rstHei: "闄愰珮", + panrentId: "鐖剁骇", + vaildTime: "鏈夋晥鏈�", + flagRycle: "鍥炴敹", + flagLogic: "铏氭嫙瀹瑰櫒", + }, + contract: { + code: "缂栫爜", + name: "鍚嶇О", + projectName: "椤圭洰鍚嶇О", + }, + qlyInspect: { + code: "缂栫爜", + name: "鍚嶇О", + }, + dictType: { + code: "瀛楀吀缂栫爜", + name: "瀛楀吀鍚嶇О", + description: "鍐呭鎻忚堪", + }, + dictData: { + dictTypeId: "瀛楀吀鏍囪瘑", + dictTypeCode: "瀛楀吀缂栫爜", + value: "鍊�", + label: "鍒悕", + sort: "鎺掑簭", + color: "棰滆壊", + }, + companys: { + code: "浼佷笟缂栫爜", + name: "鍚嶇О", + nameEn: "鑻辨枃鍒悕", + breifCode: "鍔╄鐮�", + type: "绫诲瀷", + contact: "鑱旂郴浜�", + tel: "鑱旂郴鐢佃瘽", + email: "鐢靛瓙閭欢", + pcode: "閭紪", + province: "鐪佷唤", + city: "鍩庡競", + address: "鍦板潃", + }, + serialRuleItem: { + ruleId: "瑙勫垯鏍囪瘑", + wkType: "瑙勫垯绫诲瀷", + feildValue: "瑙勫垯鍙傛暟", + len: "鎴彇闀垮害", + lenStr: "鎴彇璧峰浣嶇疆", + sort: "鎺掑簭", + }, + serialRule: { + code: "瑙勫垯缂栫爜", + name: "瑙勫垯鍚嶇О", + delimit: "鍒嗛殧绗�", + reset: "閲嶇疆瑙勫垯", + resetDep: "閲嶇疆渚濊禆", + currValue: "褰撳墠娴佹按鍙�", + lastCode: "鏈�杩戠敓鎴愮紪鐮�", + }, + whMat: { + matnrCode: "鐗╂枡缂栫爜", + matnrName: "鐗╂枡鍚嶇О", + matnrGroupId: "鐗╂枡鍒嗙粍", + spec: "瑙勬牸", + color: "棰滆壊", + size: "灏哄", + minWeight: "鏈�灏忛噸閲�", + maxWeight: "鏈�澶ч噸閲�", + }, + asnOrder: { + code: "缂栫爜", + poCode: "PO缂栫爜", + poId: "PO鏍囪瘑", + type: "鍗曟嵁绫诲瀷", + wkType: "涓氬姟绫诲瀷", + anfme: "鏁伴噺", + qty: "宸插畬鎴愭暟閲�", + logisNo: "logisNo", + arrTime: "棰勮鍒拌揪鏃堕棿", + rleStatus: "閲婃斁鐘舵��", + ntyStatus: "璐ㄦ涓婃姤鐘舵��", + }, + asnOrderItem: { + asnId: "涓诲崟鏍囪瘑", + asnCode: "涓诲崟缂栫爜", + poDetlId: "PO鍗曟爣璇�", + poDetlCode: "PO鍗曠紪鐮�", + matnrId: "鐗╂枡鏍囪瘑", + matnk: "鐗╂枡鍚嶇О", + anfme: "鏁伴噺", + stockUnit: "搴撳瓨鍗曚綅", + purQty: "閲囪喘鏁伴噺", + purUnit: "閲囪喘鍗曚綅", + qty: "宸插畬鎴愭暟閲�", + splrCode: "渚涘簲鍟嗙紪鐮�", + splrName: "渚涘簲鍟嗗悕绉�", + qrcode: "浜岀淮鐮�", + barcode: "鏉″舰鐮�", + packName: "鍖呰鍚嶇О", + ntyStatus: "鎶ユ鐘舵��", + }, + purchase: { + code: "缂栫爜", + erpId: "erp鏍囪瘑", + type: "鍗曟嵁绫诲瀷", + wkType: "涓氬姟绫诲瀷", + source: "鏉ユ簮", + preArr: "棰勮鍒拌揪", + anfme: "鏁伴噺", + qty: "宸插畬鎴愭暟閲�", + workQty: "鎵ц涓暟閲�", + channel: "鏀惰揣閫氶亾", + erpCode: "Erp缂栫爜", + project: "椤圭洰鍚嶇О", + startTime: "寮�濮嬫椂闂�", + endTime: "缁撴潫鏃堕棿", + }, + purchaseItem: { + purchaseId: "PO涓诲崟鏍囪瘑", + erpItemId: "erp鏄庣粏鏍囪瘑", + matnrCode: "鐗╂枡缂栫爜", + matnrName: "鐗╂枡鍚嶇О", + unit: "璁¢噺鍗曚綅", + anfme: "鏁伴噺", + qty: "宸插畬鎴�", + nromQty: "鏍囧寘鏁伴噺", + asnQty: "鍗曟嵁鏁伴噺", + printQty: "鎵撳嵃鏁伴噺", + splrName: "渚涘簲鍟嗗悕绉�", + splrCode: "渚涘簲鍟嗙紪鐮�", + splrBatch: "渚涘簲鍟嗘壒娆�", + }, }, - filters: { - lastCreated: '鏈�杩戝垱寤�', - today: '浠婂ぉ', - thisWeek: '鏈懆', - lastWeek: '涓婂懆', - thisMonth: '鏈湀', - lastMonth: '涓婃湀', - earlier: '鏇存棭...', + }, + page: { + welcome: { + index: " 娆㈣繋浣跨敤RSF绠$悊绯荤粺", + tech: " 鎶�鏈爤: Java17, SpringBoot2.5.3, Mybatis-plus_3.4.1, Spring Security, Druid 1.2.6, Redis, Mysql5.7, Node18, ReactJs, Material UI5.16, Axios, React-Admin5.1", }, - validate: { - pwdMisMatch: '瀵嗙爜涓嶄竴鑷�' + login: { + title: "娆㈣繋浣跨敤", + footer: "Footer Goes Here", + tenant: "鍏徃", + email: "閭鍦板潃", + username: "鐧诲綍璐﹀彿", + password: "瀵嗙爜", + confirmPwd: "纭瀵嗙爜", + code: "楠岃瘉鐮�", + tab: { + login: "鐧诲綍", + register: "娉ㄥ唽", + }, + button: { + login: "鐧诲綍", + register: "娉ㄥ唽", + code: "鑾峰彇楠岃瘉鐮�", + }, }, settings: { - base: '鍩烘湰璁剧疆', - security: '瀹夊叏璁剧疆', + resetPwd: { + currPwd: "褰撳墠瀵嗙爜", + newPwd: "鏂板瘑鐮�", + confirmNewPwd: "纭鏂板瘑鐮�", + resetBtn: "閲嶇疆瀵嗙爜", + tip: { + usernameLimit: "浠呭厑璁歌緭鍏� 3-20 涓嫳鏂囧瓧姣嶆垨鏁板瓧锛屼笉鑳藉寘鍚壒娈婂瓧绗�", + pwdInputLimit: "瀵嗙爜蹇呴』涓�6-13浣�,涓斿繀椤诲寘鍚瓧姣嶅拰鏁板瓧", + pwdNotSameAsOld: "鏂板瘑鐮佷笉鑳戒笌褰撳墠瀵嗙爜鐩稿悓", + pwdNotMatch: "纭瀵嗙爜涓嶄竴鑷�", + }, + }, }, - create: { - title: '娣诲姞', - empty: { - title: '鏆傛棤鏁版嵁', - desc: '璇峰厛娣诲姞鏁版嵁', - button: '娣诲姞鏁版嵁' + tenant: { + create: { + title: { + basic: "鍩虹淇℃伅", + root: "娣诲姞绠$悊鍛�", + confirm: "纭", }, + btn: { + next: "涓嬩竴姝�", + back: "涓婁竴姝�", + }, + tip: { + onlyEn: "浠呭厑璁歌緭鍏� 3-20 涓嫳鏂囧瓧姣�", + }, + }, }, - update: { - title: '淇敼' + matnr: { + title: { + basic: "鍩虹灞炴��", + control: "鎺у埗灞炴��", + batchRole: "鎵规瑙勫垯", + }, }, - menu: { - dashboard: '鎺у埗鍙�', - settings: '涓汉璁剧疆', - basicInfo: '鍩虹淇℃伅', - system: '绯荤粺璁剧疆', - user: '鐢ㄦ埛绠$悊', - role: '瑙掕壊绠$悊', - menu: '鑿滃崟绠$悊', - host: '鏈烘瀯绠$悊', - department: '閮ㄩ棬绠$悊', - token: '鐧诲綍鏃ュ織', - operation: '鎿嶄綔鏃ュ織', - config: '閰嶇疆鍙傛暟', - tenant: '绉熸埛绠$悊', - userLogin: '鐧诲綍鏃ュ織', - customer: '瀹㈡埛琛�', - shipper: '璐т富淇℃伅', - matnr: '鐗╂枡琛�', - matnrGroup: '鐗╂枡鍒嗙粍', - warehouse: '浠撳簱淇℃伅', - warehouseAreas: '浠撳簱搴撳尯', - loc: '鍩虹搴撲綅', - container: '瀹瑰櫒绠$悊', - contract: '鍚堝悓淇℃伅', - qlyInspect: '璐ㄦ淇℃伅', - dictType: '鏁版嵁瀛楀吀', - dictData: '瀛楀吀鏁版嵁闆�', - companys: '寰�鏉ヤ紒涓�', - serialRuleItem: '缂栫爜瑙勫垯瀛愯〃', - serialRule: '缂栫爜瑙勫垯', - asnOrder: '鏀惰揣閫氱煡鍗�', - asnOrderItem: '鏀惰揣鏄庣粏', - purchase: 'PO鍗�', - purchaseItem: 'PO鍗曟槑缁�', - whMat: '搴撳尯鐗╂枡鍏崇郴', + whMat: { + title: { + add: "娣诲姞", + }, }, - table: { - field: { - host: { - - }, - config: { - uuid: "缂栧彿", - name: "閰嶇疆鍚�", - flag: "鏍囪瘑 (EN) ", - val: "閰嶇疆鍊�", - content: "閰嶇疆鍐呭", - type: "鏁版嵁绫诲瀷", - }, - tenant: { - name: "绉熸埛鍚�", - flag: "浠g爜", - root: "绠$悊鍛�", - }, - role: { - name: "瑙掕壊鍚嶇О", - code: "瑙掕壊鏍囪瘑", - }, - userLogin: { - userId: "鐢ㄦ埛", - token: "token", - ip: "ip", - type: "绫诲瀷", - system: "绯荤粺", - }, - dept: { - name: "閮ㄩ棬鍚嶇О", - parentId: "涓婄骇閮ㄩ棬ID", - parentName: "涓婄骇閮ㄩ棬", - path: "璺緞", - pathName: "璺緞鍚�", - fullName: "鍏ㄧО", - brief: "绠�杩�", - code: "鏍囪瘑", - type: "绫诲瀷", - leader: "璐熻矗浜�", - count: "鏁伴噺", - sort: "鎺掑簭", - }, - menu: { - name: "鑿滃崟鍚嶇О", - parentId: "涓婄骇鑿滃崟ID", - parentName: "涓婄骇鑿滃崟", - path: "璺緞", - pathName: "璺緞鍚�", - route: "璺敱鍦板潃", - component: "缁勪欢", - brief: "绠�杩�", - code: "鏍囪瘑", - type: "绫诲瀷", - authority: "閴存潈", - icon: "鍥炬爣", - sort: "鎺掑簭", - meta: "鍏�", - enums: { - menu: '鑿滃崟', - button: '鎸夐挳', - } - }, - user: { - username: "璐﹀彿", - password: "瀵嗙爜", - confirmPwd: "纭瀵嗙爜", - nickname: "鏄电О", - avatar: "澶村儚", - code: "浠e彿", - sex: "鎬у埆", - phone: "鑱旂郴鏂瑰紡", - email: "閭", - emailVerified: "閭楠岃瘉", - deptId: "閮ㄩ棬", - realName: "鐪熷疄濮撳悕", - idCard: "韬唤璇�", - birthday: "鐢熸棩", - introduction: "绠�浠�", - role: "瑙掕壊", - sexes: { - male: '鐢锋��', - female: '濂虫��', - unknown: '鏈煡', - } - }, - operationRecord: { - namespace: "鍛藉悕绌洪棿", - url: "url", - appkey: "瀵嗛挜", - timestamp: "鏃堕棿鎴�", - clientIp: "瀹㈡埛绔疘P", - request: "璇锋眰鍐呭", - response: "鍝嶅簲鍐呭", - spendTime: "鑺辫垂鏃堕棿", - err: "閿欒淇℃伅", - result: "result", - userId: "鎿嶄綔鐢ㄦ埛", - }, - customer: { - uuid: "缂栧彿", - name: "瀹㈡埛鍚�", - }, - shipper: { - uuid: "缂栫爜", - name: "鍚嶇О", - }, - matnr: { - name: "鐗╂枡鍚嶇О", - code: "鐗╂枡缂栫爜", - shipperId: "璐т富鏍囪瘑", - groupId: "鍒嗙粍鏍囪瘑", - rglarId: "鎵规瑙勫垯鏍囪瘑", - platCode: "ERP缂栫爜", - spec: "瑙勬牸", - model: "鍨嬪彿", - weight: "閲嶉噺", - color: "棰滆壊", - size: "灏哄", - describle: "鎻忚堪", - nromNum: "鏍囧寘鏁伴噺", - unit: "鍗曚綅", - purUnit: "閲囪喘鍗曚綅", - stockUnit: "搴撳瓨鍗曚綅", - stockLevel: "ABC鍒嗙被", - isLabelMange: "鏍囩绠$悊", - safeQty: "瀹夊叏鍊�", - minQty: "鏈�灏忓��", - maxQty: "鏈�澶у��", - stagn: "鍋滄粸棰勮鍊�", - valid: "淇濊川鏈�", - validWarn: "鏁堟湡棰勮", - flagCheck: "鍏嶆", - }, - matnrGroup: { - name: "鍚嶇О", - code: "缂栫爜", - parentId: "鐖剁被鏍囪瘑", - }, - warehouse: { - name: "鍚嶇О", - code: "缂栫爜", - factory: "宸ュ巶", - address: "鍦板潃", - longitude: "缁忓害", - latgitude: "绾害", - length: "闀�", - width: "瀹�", - height: "楂�", - }, - warehouseAreas: { - uuid: "鍞竴缂栫爜", - name: "鍚嶇О", - code: "缂栫爜", - shipperId: "璐т富", - supplierId: "渚涘簲鍟�", - flagMinus: "鍏佽璐熷簱瀛�", - flagLabelMange: "鏍囩绠$悊", - flagMix: "娣锋斁", - }, - loc: { - warehouseId: "浠撳簱", - areaId: "搴撳尯", - code: "缂栫爜", - type: "绫诲瀷", - name: "鍚嶇О", - flagLogic: "铏氭嫙搴撲綅", - fucAtrrs: "鍔熻兘灞炴��", - barcode: "瀹瑰櫒鐮�", - unit: "鍗曚綅", - size: "闀�/瀹�/楂�", - row: "鎺�", - col: "鍒�", - lev: "灞�", - channel: "閫氶亾", - maxParts: "鏈�澶ч浂浠舵暟", - maxPack: "鏈�澶у寘瑁呮暟", - flagLabelMange: "鏍囩绠$悊", - locAttrs: "灞炴��", - }, - - container: { - code: "缂栫爜", - name: "鍚嶇О", - typeId: "绫诲瀷", - used: "浣跨敤娆℃暟", - lenght: "闀垮害", - width: "瀹�", - height: "楂�", - rstLen: "闄愰暱", - rstWid: "闄愬", - rstWei: "闄愰噸", - rstHei: "闄愰珮", - panrentId: "鐖剁骇", - vaildTime: "鏈夋晥鏈�", - flagRycle: "鍥炴敹", - flagLogic: "铏氭嫙瀹瑰櫒", - }, - contract: { - code: "缂栫爜", - name: "鍚嶇О", - projectName: "椤圭洰鍚嶇О", - }, - qlyInspect: { - code: "缂栫爜", - name: "鍚嶇О", - }, - dictType: { - code: "瀛楀吀缂栫爜", - name: "瀛楀吀鍚嶇О", - description: "鍐呭鎻忚堪", - }, - dictData: { - dictTypeId: "瀛楀吀鏍囪瘑", - dictTypeCode: "瀛楀吀缂栫爜", - value: "鍊�", - label: "鍒悕", - sort: "鎺掑簭", - color: "棰滆壊", - }, - companys: { - code: "浼佷笟缂栫爜", - name: "鍚嶇О", - nameEn: "鑻辨枃鍒悕", - breifCode: "鍔╄鐮�", - type: "绫诲瀷", - contact: "鑱旂郴浜�", - tel: "鑱旂郴鐢佃瘽", - email: "鐢靛瓙閭欢", - pcode: "閭紪", - province: "鐪佷唤", - city: "鍩庡競", - address: "鍦板潃", - }, - serialRuleItem: { - ruleId: "瑙勫垯鏍囪瘑", - wkType: "瑙勫垯绫诲瀷", - feildValue: "瑙勫垯鍙傛暟", - len: "鎴彇闀垮害", - lenStr: "鎴彇璧峰浣嶇疆", - sort: "鎺掑簭", - }, - serialRule: { - code: "瑙勫垯缂栫爜", - name: "瑙勫垯鍚嶇О", - delimit: "鍒嗛殧绗�", - reset: "閲嶇疆瑙勫垯", - resetDep: "閲嶇疆渚濊禆", - currValue: "褰撳墠娴佹按鍙�", - lastCode: "鏈�杩戠敓鎴愮紪鐮�", - }, - whMat: { - matnrCode: "鐗╂枡缂栫爜", - matnrName: "鐗╂枡鍚嶇О", - matnrGroupId: "鐗╂枡鍒嗙粍", - spec: "瑙勬牸", - color: "棰滆壊", - size: "灏哄", - minWeight: "鏈�灏忛噸閲�", - maxWeight: "鏈�澶ч噸閲�", - }, - asnOrder: { - code: "缂栫爜", - poCode: "PO缂栫爜", - poId: "PO鏍囪瘑", - type: "鍗曟嵁绫诲瀷", - wkType: "涓氬姟绫诲瀷", - anfme: "鏁伴噺", - qty: "宸插畬鎴愭暟閲�", - logisNo: "logisNo", - arrTime: "棰勮鍒拌揪鏃堕棿", - rleStatus: "閲婃斁鐘舵��", - ntyStatus: "璐ㄦ涓婃姤鐘舵��", - }, - asnOrderItem: { - asnId: "涓诲崟鏍囪瘑", - asnCode: "涓诲崟缂栫爜", - poDetlId: "PO鍗曟爣璇�", - poDetlCode: "PO鍗曠紪鐮�", - matnrId: "鐗╂枡鏍囪瘑", - matnk: "鐗╂枡鍚嶇О", - anfme: "鏁伴噺", - stockUnit: "搴撳瓨鍗曚綅", - purQty: "閲囪喘鏁伴噺", - purUnit: "閲囪喘鍗曚綅", - qty: "宸插畬鎴愭暟閲�", - splrCode: "渚涘簲鍟嗙紪鐮�", - splrName: "渚涘簲鍟嗗悕绉�", - qrcode: "浜岀淮鐮�", - barcode: "鏉″舰鐮�", - packName: "鍖呰鍚嶇О", - ntyStatus: "鎶ユ鐘舵��", - }, - purchase: { - code: "缂栫爜", - platId: "骞冲彴鏍囪瘑", - type: "鍗曟嵁绫诲瀷", - wkType: "涓氬姟绫诲瀷", - source: "鏉ユ簮", - preArr: "棰勮鍒拌揪", - anfme: "鏁伴噺", - qty: "宸插畬鎴愭暟閲�", - workQty: "鎵ц涓暟閲�", - channel: "鏀惰揣閫氶亾", - platCode: "Erp缂栫爜", - project: "椤圭洰鍚嶇О", - startTime: "寮�濮嬫椂闂�", - endTime: "缁撴潫鏃堕棿", - }, - purchaseItem: { - purchaseId: "PO涓诲崟鏍囪瘑", - platItemId: "erp鏄庣粏鏍囪瘑", - matnrCode: "鐗╂枡缂栫爜", - matnrName: "鐗╂枡鍚嶇О", - unit: "璁¢噺鍗曚綅", - anfme: "鏁伴噺", - qty: "宸插畬鎴�", - nromQty: "鏍囧寘鏁伴噺", - asnQty: "鍗曟嵁鏁伴噺", - printQty: "鎵撳嵃鏁伴噺", - splrName: "渚涘簲鍟嗗悕绉�", - splrCode: "渚涘簲鍟嗙紪鐮�", - splrBatch: "渚涘簲鍟嗘壒娆�", - }, - } + }, + form: { + matnr: { + name: "鐗╂枡鍚嶇О涓嶈兘涓虹┖", + code: "鐗╂枡缂栫爜涓嶈兘涓虹┖", + shipper: "璐т富涓嶈兘涓虹┖", + groupId: "鍒嗙粍涓嶈兘涓虹┖", }, - page: { - welcome: { - index: ' 娆㈣繋浣跨敤RSF绠$悊绯荤粺', - tech: ' 鎶�鏈爤: Java17, SpringBoot2.5.3, Mybatis-plus_3.4.1, Spring Security, Druid 1.2.6, Redis, Mysql5.7, Node18, ReactJs, Material UI5.16, Axios, React-Admin5.1' - }, - login: { - title: '娆㈣繋浣跨敤', - footer: 'Footer Goes Here', - tenant: '鍏徃', - email: '閭鍦板潃', - username: '鐧诲綍璐﹀彿', - password: '瀵嗙爜', - confirmPwd: '纭瀵嗙爜', - code: '楠岃瘉鐮�', - tab: { - login: '鐧诲綍', - register: '娉ㄥ唽', - }, - button: { - login: '鐧诲綍', - register: '娉ㄥ唽', - code: '鑾峰彇楠岃瘉鐮�', - }, - }, - settings: { - resetPwd: { - currPwd: '褰撳墠瀵嗙爜', - newPwd: '鏂板瘑鐮�', - confirmNewPwd: '纭鏂板瘑鐮�', - resetBtn: '閲嶇疆瀵嗙爜', - tip: { - usernameLimit: '浠呭厑璁歌緭鍏� 3-20 涓嫳鏂囧瓧姣嶆垨鏁板瓧锛屼笉鑳藉寘鍚壒娈婂瓧绗�', - pwdInputLimit: "瀵嗙爜蹇呴』涓�6-13浣�,涓斿繀椤诲寘鍚瓧姣嶅拰鏁板瓧", - pwdNotSameAsOld: "鏂板瘑鐮佷笉鑳戒笌褰撳墠瀵嗙爜鐩稿悓", - pwdNotMatch: "纭瀵嗙爜涓嶄竴鑷�", - } - } - }, - tenant: { - create: { - title: { - basic: '鍩虹淇℃伅', - root: '娣诲姞绠$悊鍛�', - confirm: '纭', - }, - btn: { - next: '涓嬩竴姝�', - back: '涓婁竴姝�', - }, - tip: { - onlyEn: '浠呭厑璁歌緭鍏� 3-20 涓嫳鏂囧瓧姣�' - }, - }, - }, - matnr: { - title: { - basic: '鍩虹灞炴��', - control: '鎺у埗灞炴��', - batchRole: '鎵规瑙勫垯', - } - }, - whMat: { - title: { - add: '娣诲姞', - } - }, - }, - form: { - matnr: { - name: '鐗╂枡鍚嶇О涓嶈兘涓虹┖', - code: '鐗╂枡缂栫爜涓嶈兘涓虹┖', - shipper: '璐т富涓嶈兘涓虹┖', - groupId: '鍒嗙粍涓嶈兘涓虹┖', - } - } + }, + toolbar: { + inspection: "鎶ユ", + creatcode: "鐢熸垚鏉$爜", + }, }; export default customChineseMessages; diff --git a/rsf-admin/src/page/asnOrder/AsnOrderList.jsx b/rsf-admin/src/page/asnOrder/AsnOrderList.jsx index a12b89b..57ee098 100644 --- a/rsf-admin/src/page/asnOrder/AsnOrderList.jsx +++ b/rsf-admin/src/page/asnOrder/AsnOrderList.jsx @@ -1,176 +1,248 @@ -import React, { useState, useRef, useEffect, useMemo, useCallback } from "react"; -import { useNavigate } from 'react-router-dom'; +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, -} from 'react-admin'; -import { Box, Typography, Card, Stack } from '@mui/material'; -import { styled } from '@mui/material/styles'; + 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"; import AsnOrderCreate from "./AsnOrderCreate"; import AsnOrderPanel from "./AsnOrderPanel"; import EmptyData from "../components/EmptyData"; import MyCreateButton from "../components/MyCreateButton"; -import MyExportButton from '../components/MyExportButton'; +import MyExportButton from "../components/MyExportButton"; import PageDrawer from "../components/PageDrawer"; 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 UploadloadIcon from "@mui/icons-material/Upload"; +import { + PAGE_DRAWER_WIDTH, + OPERATE_MODE, + DEFAULT_PAGE_SIZE, +} from "@/config/setting"; +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 />, + <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 source="name" label="table.field.asnOrder.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} + const importList = () => {}; + const inspection = () => {}; + + 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={importList} label={"toolbar.inspection"}> + <UploadloadIcon /> + </Button> + + <Button onClick={inspection} label={"ra.action.import"}> + <ConstructionIcon /> + </Button> + + <FilterButton /> + <MyCreateButton + onClick={() => { + setCreateDialog(true); + }} /> - <PageDrawer - title='AsnOrder Detail' - drawerVal={drawerVal} - setDrawerVal={setDrawerVal} - > - </PageDrawer> - </Box> - ) -} + <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" /> + + <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> + ); +}; export default AsnOrderList; diff --git a/rsf-admin/src/page/asnOrderItem/AsnOrderItemList.jsx b/rsf-admin/src/page/asnOrderItem/AsnOrderItemList.jsx index 5ddf5ee..df78071 100644 --- a/rsf-admin/src/page/asnOrderItem/AsnOrderItemList.jsx +++ b/rsf-admin/src/page/asnOrderItem/AsnOrderItemList.jsx @@ -1,182 +1,268 @@ -import React, { useState, useRef, useEffect, useMemo, useCallback } from "react"; -import { useNavigate } from 'react-router-dom'; +import React, { + useState, + useRef, + useEffect, + useMemo, + useCallback, +} from "react"; +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, -} from 'react-admin'; -import { Box, Typography, Card, Stack } from '@mui/material'; -import { styled } from '@mui/material/styles'; + 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"; import AsnOrderItemCreate from "./AsnOrderItemCreate"; import AsnOrderItemPanel from "./AsnOrderItemPanel"; import EmptyData from "../components/EmptyData"; import MyCreateButton from "../components/MyCreateButton"; -import MyExportButton from '../components/MyExportButton'; +import MyExportButton from "../components/MyExportButton"; import PageDrawer from "../components/PageDrawer"; import MyField from "../components/MyField"; -import { PAGE_DRAWER_WIDTH, OPERATE_MODE, DEFAULT_PAGE_SIZE } from '@/config/setting'; -import * as Common from '@/utils/common'; +import QrCodeIcon from "@mui/icons-material/QrCode"; +import { + PAGE_DRAWER_WIDTH, + OPERATE_MODE, + DEFAULT_PAGE_SIZE, +} from "@/config/setting"; +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 />, + <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 ruleId = queryParams.get("ruleId"); - <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} + const creatCode = () => {}; + + 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> + <Button onClick={creatCode} label={"toolbar.creatcode"}> + <QrCodeIcon /> + </Button> + <FilterButton /> + <MyCreateButton + onClick={() => { + setCreateDialog(true); + }} /> - <PageDrawer - title='AsnOrderItem Detail' - drawerVal={drawerVal} - setDrawerVal={setDrawerVal} - > - </PageDrawer> - </Box> - ) -} + <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" + /> + + <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> + ); +}; export default AsnOrderItemList; 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/PurchaseList.jsx b/rsf-admin/src/page/purchase/PurchaseList.jsx index 08f1ce5..8946696 100644 --- a/rsf-admin/src/page/purchase/PurchaseList.jsx +++ b/rsf-admin/src/page/purchase/PurchaseList.jsx @@ -1,172 +1,233 @@ -import React, { useState, useRef, useEffect, useMemo, useCallback } from "react"; -import { useNavigate } from 'react-router-dom'; +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, -} from 'react-admin'; -import { Box, Typography, Card, Stack } from '@mui/material'; -import { styled } from '@mui/material/styles'; + 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"; import PurchaseCreate from "./PurchaseCreate"; import PurchasePanel from "./PurchasePanel"; import EmptyData from "../components/EmptyData"; import MyCreateButton from "../components/MyCreateButton"; -import MyExportButton from '../components/MyExportButton'; +import MyExportButton from "../components/MyExportButton"; import PageDrawer from "../components/PageDrawer"; import MyField from "../components/MyField"; -import { PAGE_DRAWER_WIDTH, OPERATE_MODE, DEFAULT_PAGE_SIZE } from '@/config/setting'; -import * as Common from '@/utils/common'; +import { + PAGE_DRAWER_WIDTH, + OPERATE_MODE, + DEFAULT_PAGE_SIZE, +} from "@/config/setting"; +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="from" label="table.field.purchase.from" />, + <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="erpCode" label="table.field.purchase.erpCode" />, + <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} + 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); + }} /> - <PageDrawer - title='Purchase Detail' - drawerVal={drawerVal} - setDrawerVal={setDrawerVal} - > - </PageDrawer> - </Box> - ) -} + <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="from" label="table.field.purchase.from" /> + <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="erpCode" label="table.field.purchase.erpCode" /> + <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/PurchaseItemList.jsx b/rsf-admin/src/page/purchaseItem/PurchaseItemList.jsx index 088c9cb..140a740 100644 --- a/rsf-admin/src/page/purchaseItem/PurchaseItemList.jsx +++ b/rsf-admin/src/page/purchaseItem/PurchaseItemList.jsx @@ -1,176 +1,252 @@ -import React, { useState, useRef, useEffect, useMemo, useCallback } from "react"; -import { useNavigate } from 'react-router-dom'; +import React, { + useState, + useRef, + useEffect, + useMemo, + useCallback, +} from "react"; +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, -} from 'react-admin'; -import { Box, Typography, Card, Stack } from '@mui/material'; -import { styled } from '@mui/material/styles'; + 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"; import PurchaseItemCreate from "./PurchaseItemCreate"; import PurchaseItemPanel from "./PurchaseItemPanel"; import EmptyData from "../components/EmptyData"; import MyCreateButton from "../components/MyCreateButton"; -import MyExportButton from '../components/MyExportButton'; +import MyExportButton from "../components/MyExportButton"; import PageDrawer from "../components/PageDrawer"; import MyField from "../components/MyField"; -import { PAGE_DRAWER_WIDTH, OPERATE_MODE, DEFAULT_PAGE_SIZE } from '@/config/setting'; -import * as Common from '@/utils/common'; +import { + PAGE_DRAWER_WIDTH, + OPERATE_MODE, + DEFAULT_PAGE_SIZE, +} from "@/config/setting"; +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 />, + <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="erpId" label="table.field.purchaseItem.erpId" />, + <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="nomQty" label="table.field.purchaseItem.nomQty" />, + <NumberInput source="asnQty" label="table.field.purchaseItem.asnQty" />, + <NumberInput source="printQty" label="table.field.purchaseItem.printQty" />, + <TextInput source="pulrName" label="table.field.purchaseItem.pulrName" />, + <TextInput source="pulrCode" label="table.field.purchaseItem.pulrCode" />, + <TextInput source="pulrBatch" label="table.field.purchaseItem.pulrBatch" />, - <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 ruleId = queryParams.get("ruleId"); - <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} + 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); + }} /> - <PageDrawer - title='PurchaseItem Detail' - drawerVal={drawerVal} - setDrawerVal={setDrawerVal} - > - </PageDrawer> - </Box> - ) -} + <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="erpId" label="table.field.purchaseItem.erpId" /> + <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="nomQty" + label="table.field.purchaseItem.nomQty" + /> + <NumberField + source="asnQty" + label="table.field.purchaseItem.asnQty" + /> + <NumberField + source="printQty" + label="table.field.purchaseItem.printQty" + /> + <TextField + source="pulrName" + label="table.field.purchaseItem.pulrName" + /> + <TextField + source="pulrCode" + label="table.field.purchaseItem.pulrCode" + /> + <TextField + source="pulrBatch" + label="table.field.purchaseItem.pulrBatch" + /> + + <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> + ); +}; export default PurchaseItemList; 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