| New file |
| | |
| | | # Server 配置文件 |
| | | |
| | | server { |
| | | listen 8080; |
| | | server_name localhost; |
| | | |
| | | charset utf-8; |
| | | root D:/work/nginx-1.26.3/html/dist; |
| | | index index.html index.htm; |
| | | |
| | | # 前端路由 |
| | | location / { |
| | | try_files $uri $uri/ /index.html; |
| | | } |
| | | |
| | | # 静态资源缓存 |
| | | location ~* \.(js|css|png|jpg|jpeg|gif|ico|svg|woff|woff2|ttf|eot)$ { |
| | | expires 30d; |
| | | add_header Cache-Control "public, immutable"; |
| | | access_log off; |
| | | } |
| | | |
| | | # 内部 location:记录请求体 |
| | | location = /_log_request_body { |
| | | internal; |
| | | client_body_buffer_size 128k; |
| | | client_max_body_size 10m; |
| | | client_body_in_file_only off; |
| | | client_body_in_single_buffer on; |
| | | access_log logs/request_body.log json_log; |
| | | return 200 ""; |
| | | } |
| | | |
| | | # API 代理 |
| | | location /rsf-open-api/ { |
| | | client_body_buffer_size 128k; |
| | | client_max_body_size 10m; |
| | | mirror /_log_request_body; |
| | | mirror_request_body on; |
| | | access_log logs/api_access.log api_log; |
| | | access_log logs/access.log; |
| | | |
| | | proxy_pass http://api_backend/rsf-open-api/; |
| | | proxy_set_header Host $host; |
| | | proxy_set_header X-Real-IP $remote_addr; |
| | | proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; |
| | | proxy_set_header X-Forwarded-Proto $scheme; |
| | | proxy_buffers 8 16k; |
| | | proxy_buffer_size 32k; |
| | | } |
| | | |
| | | # rsf-server 代理 |
| | | location /rsf-server/ { |
| | | client_body_buffer_size 128k; |
| | | client_max_body_size 10m; |
| | | mirror /_log_request_body; |
| | | mirror_request_body on; |
| | | access_log logs/server_access.log api_log; |
| | | access_log logs/access.log; |
| | | |
| | | proxy_pass http://server_backend/rsf-server/; |
| | | proxy_set_header Host $host; |
| | | proxy_set_header X-Real-IP $remote_addr; |
| | | proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; |
| | | proxy_set_header X-Forwarded-Proto $scheme; |
| | | proxy_buffers 8 16k; |
| | | proxy_buffer_size 32k; |
| | | } |
| | | |
| | | # WebSocket 代理 |
| | | location /ws/ { |
| | | proxy_pass http://api_backend/ws/; |
| | | proxy_http_version 1.1; |
| | | proxy_set_header Upgrade $http_upgrade; |
| | | proxy_set_header Connection "upgrade"; |
| | | proxy_set_header Host $host; |
| | | proxy_set_header X-Real-IP $remote_addr; |
| | | proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; |
| | | proxy_set_header X-Forwarded-Proto $scheme; |
| | | proxy_buffering off; |
| | | } |
| | | |
| | | # 错误页面 |
| | | error_page 500 502 503 504 /50x.html; |
| | | location = /50x.html { |
| | | root html; |
| | | } |
| | | } |
| | |
| | | user nginx; |
| | | # Windows Nginx 主配置文件 |
| | | |
| | | worker_processes auto; |
| | | |
| | | error_log /var/log/nginx/error.log notice; |
| | | pid /var/run/nginx.pid; |
| | | error_log logs/error.log notice; |
| | | pid logs/nginx.pid; |
| | | |
| | | events { |
| | | worker_connections 2048; |
| | | } |
| | | |
| | | http { |
| | | include /etc/nginx/mime.types; |
| | | include mime.types; |
| | | default_type application/octet-stream; |
| | | |
| | | # 日志格式定义 |
| | | log_format main '$remote_addr - $remote_user [$time_local] "$request" ' |
| | | '$status $body_bytes_sent "$http_referer" ' |
| | | '"$http_user_agent" "$http_x_forwarded_for"'; |
| | | |
| | | access_log /var/log/nginx/access.log main; |
| | | error_log /var/log/nginx/error.log error; |
| | | log_format api_log '$remote_addr - $remote_user [$time_local] ' |
| | | '"$request_method $request_uri HTTP/$server_protocol" ' |
| | | '$status $body_bytes_sent "$http_referer" ' |
| | | '"$http_user_agent" "$http_x_forwarded_for" ' |
| | | 'request_time="$request_time" ' |
| | | 'upstream_response_time="$upstream_response_time" ' |
| | | 'request_length="$request_length"'; |
| | | |
| | | log_format json_log '$remote_addr - $remote_user [$time_local] ' |
| | | '"$request_method $request_uri HTTP/$server_protocol" ' |
| | | '$status $body_bytes_sent ' |
| | | '"$http_referer" "$http_user_agent" ' |
| | | '"$http_x_forwarded_for" ' |
| | | 'request_body="$request_body" ' |
| | | 'content_type="$content_type" ' |
| | | 'request_time="$request_time" ' |
| | | 'upstream_response_time="$upstream_response_time"'; |
| | | |
| | | # 全局日志(server 中可覆盖) |
| | | access_log logs/access.log main; |
| | | error_log logs/error.log error; |
| | | |
| | | # 全局配置 |
| | | client_max_body_size 300M; |
| | | |
| | | upstream api_backend { |
| | | server 10.10.10.199:8088; |
| | | # ...... |
| | | } |
| | | |
| | | server { |
| | | listen 80; |
| | | listen 8080; |
| | | server_name localhost; |
| | | |
| | | location / { |
| | | root /app/www; |
| | | try_files $uri $uri/ /index.html; |
| | | index index.html index.htm; |
| | | } |
| | | |
| | | # Http |
| | | location /api/ { |
| | | # rewrite ^/api/(.*)$ /$1 break; # if you wanna remove proxy prefix |
| | | proxy_pass http://api_backend/api/; |
| | | proxy_set_header Host $host; |
| | | proxy_set_header X-Real-IP $remote_addr; |
| | | proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; |
| | | proxy_set_header X-Forwarded-Proto $scheme; |
| | | |
| | | # buffer |
| | | proxy_buffers 8 16k; |
| | | proxy_buffer_size 32k; |
| | | |
| | | # timeout |
| | | # proxy_connect_timeout 60s; |
| | | # proxy_read_timeout 60s; |
| | | # proxy_send_timeout 60s; |
| | | } |
| | | |
| | | # WebSocket |
| | | location /ws/ { |
| | | # ws |
| | | proxy_pass http://api_backend/ws/; |
| | | # wss |
| | | # proxy_pass wss://api_backend/ws/; |
| | | |
| | | proxy_http_version 1.1; |
| | | proxy_set_header Upgrade $http_upgrade; |
| | | proxy_set_header Connection "upgrade"; |
| | | proxy_set_header Host $host; |
| | | proxy_set_header X-Real-IP $remote_addr; |
| | | proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; |
| | | proxy_set_header X-Forwarded-Proto $scheme; |
| | | proxy_buffering off; |
| | | |
| | | # timeout |
| | | # proxy_connect_timeout 60s; |
| | | # proxy_read_timeout 60s; |
| | | # proxy_send_timeout 60s; |
| | | } |
| | | |
| | | # HTTPS |
| | | # listen 443 ssl; |
| | | # ssl_certificate /path/to/cert.pem; |
| | | # ssl_certificate_key /path/to/key.pem; |
| | | |
| | | error_page 500 502 503 504 /50x.html; |
| | | |
| | | location = /50x.html { |
| | | root html; |
| | | } |
| | | |
| | | } |
| | | |
| | | sendfile on; |
| | | #tcp_nopush on; |
| | | |
| | | tcp_nopush on; |
| | | tcp_nodelay on; |
| | | keepalive_timeout 65; |
| | | |
| | | #gzip on; |
| | | # Gzip 压缩 |
| | | gzip on; |
| | | gzip_vary on; |
| | | gzip_min_length 1000; |
| | | gzip_proxied any; |
| | | gzip_comp_level 6; |
| | | gzip_types text/plain text/css text/xml text/javascript application/json application/javascript application/xml+rss application/rss+xml font/truetype font/opentype application/vnd.ms-fontobject image/svg+xml; |
| | | |
| | | include /etc/nginx/conf.d/*.conf; |
| | | # 后端服务器配置 |
| | | upstream api_backend { |
| | | server 127.0.0.1:8081; |
| | | } |
| | | |
| | | upstream server_backend { |
| | | server 127.0.0.1:8085; |
| | | } |
| | | |
| | | # 引入 server 配置 |
| | | include conf.d/*.conf; |
| | | } |
| | |
| | | list: "列表", |
| | | refresh: "刷新", |
| | | remove_filter: "移除这个过滤器", |
| | | remove_all_filters: "移除所有", |
| | | remove_all_filters: "清除所有过滤条件", |
| | | clear_filters: "清除过滤条件", |
| | | remove: "移除", |
| | | approved: "审核", |
| | | save: "保存", |
| | |
| | | unselect: "取消选择", |
| | | expand: "展开", |
| | | close: "关闭", |
| | | open_menu: "Open menu", |
| | | close_menu: "Close menu", |
| | | open_menu: "打开菜单", |
| | | close_menu: "关闭菜单", |
| | | update: "修改", |
| | | move_up: "Move up", |
| | | move_down: "Move down", |
| | | open: "Open", |
| | | move_up: "上移", |
| | | move_down: "下移", |
| | | open: "打开", |
| | | toggle_theme: "浅色/深色", |
| | | select_columns: "筛选列", |
| | | update_application: "Reload Application", |
| | | update_application: "重新加载应用", |
| | | }, |
| | | boolean: { |
| | | true: "是", |
| | |
| | | null: " ", |
| | | }, |
| | | page: { |
| | | create: "Create %{name}", |
| | | dashboard: "Dashboard", |
| | | create: "创建 %{name}", |
| | | dashboard: "控制台", |
| | | edit: "%{name} %{recordRepresentation}", |
| | | error: "Something went wrong", |
| | | error: "出错了", |
| | | list: "%{name}", |
| | | loading: "Loading", |
| | | not_found: "Not Found", |
| | | loading: "加载中", |
| | | not_found: "未找到", |
| | | show: "%{name} %{recordRepresentation}", |
| | | empty: "No %{name} yet.", |
| | | invite: "Do you want to add one?", |
| | | empty: "暂无 %{name}。", |
| | | invite: "是否要添加一个?", |
| | | empty_with_filters: "使用当前过滤条件未找到结果。", |
| | | }, |
| | | input: { |
| | | file: { |
| | |
| | | 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.", |
| | | upload_several: "拖放一些图片进行上传,或单击选择一个", |
| | | upload_single: "拖放图片进行上传,或单击选择它", |
| | | }, |
| | | references: { |
| | | all_missing: "Unable to find references data.", |
| | | all_missing: "无法找到引用数据。", |
| | | 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", |
| | | toggle_visible: "隐藏密码", |
| | | toggle_hidden: "显示密码", |
| | | }, |
| | | search: { |
| | | placeholder: "搜索", |
| | | }, |
| | | }, |
| | | message: { |
| | | about: "About", |
| | | are_you_sure: "Are you sure?", |
| | | about: "关于", |
| | | are_you_sure: "您确定吗?", |
| | | auth_error: |
| | | "An error occurred while validating the authentication token.", |
| | | "验证身份令牌时发生错误。", |
| | | bulk_delete_content: |
| | | "确定要删除这个 %{name}? |||| 确认要删除这些 %{smart_count} 明细?", |
| | | 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?", |
| | | "您确定要更新这个 %{name}? |||| 您确定要更新这些 %{smart_count} 项吗?", |
| | | bulk_update_title: "修改 %{name} |||| 修改 %{smart_count} %{name}", |
| | | clear_array_input: "Are you sure you want to clear the whole list?", |
| | | clear_array_input: "您确定要清空整个列表吗?", |
| | | delete_content: "您确实要删除此项吗?", |
| | | delete_title: "删除 %{name} #%{id}", |
| | | details: "Details", |
| | | error: "A client error occurred and your request couldn't be completed.", |
| | | details: "详情", |
| | | error: "发生客户端错误,您的请求无法完成。", |
| | | |
| | | invalid_form: "表单无效 请检查是否有错误!", |
| | | loading: "Please wait", |
| | | no: "No", |
| | | not_found: "Either you typed a wrong URL, or you followed a bad link.", |
| | | yes: "Yes", |
| | | loading: "请稍候", |
| | | no: "否", |
| | | not_found: "您输入的URL错误,或者您点击了错误的链接。", |
| | | yes: "是", |
| | | unsaved_changes: |
| | | "您所做的部分更改尚未保存。确定要忽略这些更改吗?", |
| | | }, |
| | | 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}", |
| | | "页码 %{page} 超出范围。请尝试上一页。", |
| | | page_out_of_boundaries: "页码 %{page} 超出范围", |
| | | page_out_from_end: "无法跳转到最后一页之后", |
| | | page_out_from_begin: "无法跳转到第1页之前", |
| | | page_range_info: "第 %{from}-%{to} 条,共 %{count} 条", |
| | | 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", |
| | | "第 %{from}-%{to} 条,超过 %{to} 条", |
| | | current_page: "第 %{page} 页", |
| | | page: "跳转到第 %{page} 页", |
| | | first: "跳转到第一页", |
| | | last: "跳转到最后一页", |
| | | next: "下一页", |
| | | previous: "上一页", |
| | | page_rows_per_page: "每页数量:", |
| | | skip_nav: "Skip to content", |
| | | skip_nav: "跳转到内容", |
| | | }, |
| | | sort: { |
| | | sort_by: "Sort by %{field} %{order}", |
| | | ASC: "ascending", |
| | | DESC: "descending", |
| | | sort_by: "按 %{field} %{order} 排序", |
| | | ASC: "升序", |
| | | DESC: "降序", |
| | | }, |
| | | 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", |
| | | auth_check_error: "请登录以继续", |
| | | user_menu: "个人资料", |
| | | username: "用户名", |
| | | password: "密码", |
| | | sign_in: "登录", |
| | | sign_in_error: "身份验证失败,请重试", |
| | | 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.", |
| | | bad_item: "错误的元素", |
| | | item_doesnt_exist: "元素不存在", |
| | | http_error: "服务器通信错误", |
| | | data_provider_error: "数据提供程序错误。请查看控制台了解详情。", |
| | | i18n_error: "无法加载指定语言的翻译", |
| | | canceled: "操作已取消", |
| | | logged_out: "您的会话已结束,请重新连接。", |
| | | not_authorized: "您无权访问此资源。", |
| | | application_update_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", |
| | | minLength: "至少需要 %{min} 个字符", |
| | | maxLength: "最多 %{max} 个字符", |
| | | minValue: "至少为 %{min}", |
| | | maxValue: "最多为 %{max}", |
| | | number: "必须是数字", |
| | | email: "必须是有效的邮箱地址", |
| | | oneOf: "必须是以下之一: %{options}", |
| | | regex: "必须匹配特定格式 (正则表达式): %{pattern}", |
| | | unique: "必须唯一", |
| | | }, |
| | | saved_queries: { |
| | | label: "保存过滤", |
| | | query_name: "Query name", |
| | | query_name: "查询名称", |
| | | new_label: "保存过滤条件...", |
| | | new_dialog_title: "Save current query as", |
| | | new_dialog_title: "将当前查询保存为", |
| | | remove_label: "移除过滤条件", |
| | | remove_label_with_name: 'Remove query "%{name}"', |
| | | remove_label_with_name: '移除查询 "%{name}"', |
| | | remove_dialog_title: "移除过滤条件?", |
| | | remove_message: "您确定要移除已保存过滤条件吗?", |
| | | help: "Filter the list and save this query for later", |
| | | help: "过滤列表并保存此查询以供以后使用", |
| | | }, |
| | | configurable: { |
| | | customize: "Customize", |
| | | configureMode: "Configure this page", |
| | | customize: "自定义", |
| | | configureMode: "配置此页面", |
| | | inspector: { |
| | | title: "Inspector", |
| | | content: "Hover the application UI elements to configure them", |
| | | reset: "Reset Settings", |
| | | hideAll: "Hide All", |
| | | showAll: "Show All", |
| | | title: "检查器", |
| | | content: "将鼠标悬停在应用程序UI元素上以配置它们", |
| | | reset: "重置设置", |
| | | hideAll: "隐藏全部", |
| | | showAll: "显示全部", |
| | | }, |
| | | Datagrid: { |
| | | title: "Datagrid", |
| | | unlabeled: "Unlabeled column #%{column}", |
| | | title: "数据网格", |
| | | unlabeled: "未标记的列 #%{column}", |
| | | }, |
| | | SimpleForm: { |
| | | title: "Form", |
| | | unlabeled: "Unlabeled input #%{input}", |
| | | title: "表单", |
| | | unlabeled: "未标记的输入 #%{input}", |
| | | }, |
| | | SimpleList: { |
| | | title: "List", |
| | | primaryText: "Primary text", |
| | | secondaryText: "Secondary text", |
| | | tertiaryText: "Tertiary text", |
| | | title: "列表", |
| | | primaryText: "主要文本", |
| | | secondaryText: "次要文本", |
| | | tertiaryText: "第三文本", |
| | | }, |
| | | }, |
| | | }, |
| | |
| | | }, |
| | | ra: { |
| | | action: { |
| | | search: '搜索', |
| | | add_filter: '过滤条件', |
| | | add: '添加', |
| | | create: '添加', |
| | | export: '导出', |
| | | import: '导入', |
| | | edit: '编辑', |
| | | delete: '删除', |
| | | save: '保存', |
| | | cancel: '取消', |
| | | refresh: '刷新', |
| | | select_columns: '筛选列', |
| | | select_all: '全部选中', |
| | | unselect: '取消选择', |
| | | approved: '审核', |
| | | remove_filter: '移除这个过滤器', |
| | | remove_all_filters: '清除所有过滤条件', |
| | | clear_filters: '清除过滤条件', |
| | | close: '关闭当前标签', |
| | | closeLeft: '关闭左侧标签', |
| | | closeRight: '关闭右侧标签', |
| | | closeOthers: '关闭其他标签', |
| | | closeAll: '关闭所有标签', |
| | | }, |
| | | page: { |
| | | empty_with_filters: '使用当前过滤条件未找到结果。', |
| | | }, |
| | | navigation: { |
| | | no_results: '没有找到数据', |
| | | no_more_results: '页码 %{page} 超出范围。请尝试上一页。', |
| | | page_out_of_boundaries: '页码 %{page} 超出范围', |
| | | page_out_from_end: '无法跳转到最后一页之后', |
| | | page_out_from_begin: '无法跳转到第1页之前', |
| | | page_range_info: '第 %{from}-%{to} 条,共 %{count} 条', |
| | | partial_page_range_info: '第 %{from}-%{to} 条,超过 %{to} 条', |
| | | current_page: '第 %{page} 页', |
| | | page: '跳转到第 %{page} 页', |
| | | first: '跳转到第一页', |
| | | last: '跳转到最后一页', |
| | | next: '下一页', |
| | | previous: '上一页', |
| | | page_rows_per_page: '每页数量:', |
| | | skip_nav: '跳转到内容', |
| | | } |
| | | }, |
| | | request: { |
| | |
| | | import React, { useState, useRef, useEffect, useMemo, useCallback } from "react"; |
| | | import { Card, useTheme, List, CardContent, Input, InputAdornment, IconButton, TextField } from "@mui/material"; |
| | | import { useForm } from 'react-hook-form'; |
| | | import { useTranslate } from 'react-admin'; |
| | | import Warehouse from "./warehouse"; |
| | | import { Filter, SearchInput } from 'react-admin'; |
| | | |
| | | |
| | | export const MySearchInput = (props) => { |
| | | const [searchTerm, setSearchTerm] = useState(''); |
| | | const translate = useTranslate(); |
| | | |
| | | return ( |
| | | <> |
| | | <TextField |
| | | label="Search" |
| | | label={translate('common.action.search')} |
| | | value={searchTerm} |
| | | onChange={(e) => setSearchTerm(e.target.value)} |
| | | /> |
| | |
| | | <DynamicFields /> |
| | | </List> |
| | | <PageDrawer |
| | | title='TaskItemLog Detail' |
| | | title={translate('toolbar.detail')} |
| | | drawerVal={drawerVal} |
| | | setDrawerVal={setDrawerVal} |
| | | > |
| | |
| | | setOpen={setCreateDialog} |
| | | /> */} |
| | | <PageDrawer |
| | | title='TaskLog Detail' |
| | | title={translate('toolbar.detail')} |
| | | drawerVal={drawerVal} |
| | | setDrawerVal={setDrawerVal} |
| | | > |
| | |
| | | getActions: (params) => [ |
| | | <GridActionsCellItem |
| | | icon={<Delete />} |
| | | label="Delete" |
| | | label={translate('ra.action.delete')} |
| | | onClick={() => handleDelete(params.row, rows, setRows)} |
| | | />, |
| | | ] |
| | |
| | | }, |
| | | })); |
| | | |
| | | const OutOrderList = (props) => { |
| | | |
| | | const dicts = JSON.parse(localStorage.getItem('sys_dicts'))?.filter(dict => (dict.dictTypeCode == 'sys_business_type')) || []; |
| | | const [createDialog, setCreateDialog] = useState(false); |
| | | const [manualDialog, setManualDialog] = useState(false); |
| | | const [drawerVal, setDrawerVal] = useState(false); |
| | | const [waveRule, setWaveRule] = useState(false); |
| | | const [selectIds, setSelectIds] = useState([]); |
| | | const [preview, setPreview] = useState(false); |
| | | const [modalType, setmodalType] = useState(0); |
| | | const [select, setSelect] = useState(0); |
| | | const translate = useTranslate(); |
| | | |
| | | const filters = [ |
| | | <SearchInput source="condition" alwaysOn />, |
| | | <SearchInput source="condition" alwaysOn placeholder={translate('ra.action.search')} />, |
| | | <TextInput source="code" label="table.field.outStock.code" alwaysOn />, |
| | | <TextInput source="poCode" label="table.field.outStock.poCode" />, |
| | | <NumberInput source="poId" label="table.field.outStock.poId" />, |
| | |
| | | dictTypeCode="sys_asn_exce_status" |
| | | alwaysOn |
| | | />, |
| | | ] |
| | | |
| | | const OutOrderList = (props) => { |
| | | |
| | | const dicts = JSON.parse(localStorage.getItem('sys_dicts'))?.filter(dict => (dict.dictTypeCode == 'sys_business_type')) || []; |
| | | const [createDialog, setCreateDialog] = useState(false); |
| | | const [manualDialog, setManualDialog] = useState(false); |
| | | const [drawerVal, setDrawerVal] = useState(false); |
| | | const [waveRule, setWaveRule] = useState(false); |
| | | const [selectIds, setSelectIds] = useState([]); |
| | | const [preview, setPreview] = useState(false); |
| | | const [modalType, setmodalType] = useState(0); |
| | | const [select, setSelect] = useState(0); |
| | | const translate = useTranslate(); |
| | | ]; |
| | | const refresh = useRefresh(); |
| | | const notify = useNotify(); |
| | | const billReload = useRef(); |
| | |
| | | getActions: (params) => [ |
| | | <GridActionsCellItem |
| | | icon={<Delete />} |
| | | label="Delete" |
| | | label={translate('ra.action.delete')} |
| | | onClick={() => handleDelete(params.row, rows, setRows)} |
| | | />, |
| | | ] |
| | |
| | | <Box sx={{ mt: 1, mr: 3, display: 'flex', alignItems: 'center', justifyContent: 'space-between' }}> |
| | | <Box width={300}> |
| | | <TextField |
| | | label="Search" |
| | | label={translate('common.action.search')} |
| | | value={filter} |
| | | onChange={({ target }) => { |
| | | setFilter(target.value) |
| | |
| | | open={createDialog} |
| | | setOpen={setCreateDialog} /> |
| | | <PageDrawer |
| | | title='TaskItem Detail' |
| | | title={translate('toolbar.detail')} |
| | | drawerVal={drawerVal} |
| | | setDrawerVal={setDrawerVal} |
| | | > |
| | |
| | | </StyledDatagrid> |
| | | </List> |
| | | <PageDrawer |
| | | title='Task Detail' |
| | | title={translate('toolbar.detail')} |
| | | drawerVal={drawerVal} |
| | | setDrawerVal={setDrawerVal} |
| | | > |
| | |
| | | SELECT * FROM |
| | | ( |
| | | SELECT |
| | | id, |
| | | IF ( task_type = 1, COUNT( 1 ), 0 ) AS in_qty, |
| | | IF ( task_type = 1, SUM( anfme ), 0 ) AS in_anfme, |
| | | IF ( task_type = 101, SUM( anfme ), 0 ) AS out_anfme, |