| | |
| | | |
| | | // 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, { |
| | |
| | | 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; |
| | | 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; |
| | |
| | | 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; |
| | |
| | | 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: "正常", |
| | | statusFalse: "禁用", |
| | | true: "是", |
| | | false: "否", |
| | | }, |
| | | time: { |
| | | after: "开始时间", |
| | | before: "结束时间", |
| | | }, |
| | | action: { |
| | | reset: "重置", |
| | | expand: "展开", |
| | | expandAll: "全部展开", |
| | | collapse: "折叠", |
| | | collapseAll: "全部折叠", |
| | | scope: "权限", |
| | | import: { |
| | | title: "导入", |
| | | stop: "停止导入", |
| | | msg: "这是一个可以用作模板的示例 CSV 文件", |
| | | tips: "正在导入中,请不要关闭此窗口", |
| | | 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: "代码", |
| | | 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: '正常', |
| | | statusFalse: '禁用', |
| | | true: '是', |
| | | false: '否', |
| | | menu: "菜单", |
| | | button: "按钮", |
| | | }, |
| | | time: { |
| | | after: '开始时间', |
| | | before: '结束时间' |
| | | }, |
| | | user: { |
| | | username: "账号", |
| | | password: "密码", |
| | | confirmPwd: "确认密码", |
| | | nickname: "昵称", |
| | | avatar: "头像", |
| | | code: "代号", |
| | | 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: '正在导入中,请不要关闭此窗口', |
| | | err: '无法导入此文件,请确保您提供了有效的 CSV 文件', |
| | | download: '下载导入模板', |
| | | result: '导入完成。已导入 %{success} 成功, 和 %{error} 失败', |
| | | }, |
| | | loadMore: '加载更多', |
| | | complete: '完成', |
| | | deprecate: '废弃', |
| | | resend: '重发', |
| | | selected: '项选中', |
| | | }, |
| | | msg: { |
| | | confirm: { |
| | | tip: '提示', |
| | | desc: '您确定要执行此操作吗?', |
| | | }, |
| | | placeholder: '请输入搜索内容', |
| | | }, |
| | | }, |
| | | operationRecord: { |
| | | namespace: "命名空间", |
| | | url: "url", |
| | | appkey: "密钥", |
| | | timestamp: "时间戳", |
| | | clientIp: "客户端IP", |
| | | 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: "代码", |
| | | 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: "代号", |
| | | sex: "性别", |
| | | phone: "联系方式", |
| | | email: "邮箱", |
| | | emailVerified: "邮箱验证", |
| | | deptId: "部门", |
| | | realName: "真实姓名", |
| | | idCard: "身份证", |
| | | birthday: "生日", |
| | | introduction: "简介", |
| | | role: "角色", |
| | | sexes: { |
| | | male: '男性', |
| | | female: '女性', |
| | | unknown: '未知', |
| | | } |
| | | }, |
| | | operationRecord: { |
| | | namespace: "命名空间", |
| | | url: "url", |
| | | appkey: "密钥", |
| | | timestamp: "时间戳", |
| | | clientIp: "客户端IP", |
| | | 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; |
| | |
| | | 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: ' 正常' }, |
| | | { 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: " 正常" }, |
| | | { 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; |
| | |
| | | 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; |
| | |
| | | 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; |
| | | export default MyCreateButton; |
| | |
| | | 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; |
| | |
| | | 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; |
| | |
| | | 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; |
| | |
| | | }); |
| | | }; |
| | | |
| | | console.log(SerialRuleItem); |
| | | |
| | | return ( |
| | | <> |
| | | <Dialog |