chen.lin
2 天以前 efe0972ca3e0f816bc274c4e579d61763ac2adcf
翻译修复
1个文件已添加
13个文件已修改
522 ■■■■■ 已修改文件
rsf-admin/conf.d/server.conf 88 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
rsf-admin/nginx.conf 128 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
rsf-admin/src/i18n/core/chineseMessages.js 187 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
rsf-admin/src/i18n/zh.js 38 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
rsf-admin/src/page/basicInfo/whMat/mySearchInput.jsx 4 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
rsf-admin/src/page/histories/taskLog/TaskItemLogList.jsx 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
rsf-admin/src/page/histories/taskLog/TaskLogList.jsx 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
rsf-admin/src/page/orders/check/CheckPreviewTable.jsx 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
rsf-admin/src/page/orders/outStock/OutOrderList.jsx 62 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
rsf-admin/src/page/orders/outStock/OutStockPublic.jsx 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
rsf-admin/src/page/system/dept/DeptList.jsx 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
rsf-admin/src/page/task/TaskItemList.jsx 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
rsf-admin/src/page/task/TaskList.jsx 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
rsf-server/src/main/resources/mapper/manager/AsnOrderMapper.xml 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
rsf-admin/conf.d/server.conf
New file
@@ -0,0 +1,88 @@
# 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;
    }
}
rsf-admin/nginx.conf
@@ -1,103 +1,69 @@
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;
}
rsf-admin/src/i18n/core/chineseMessages.js
@@ -19,7 +19,8 @@
      list: "列表",
      refresh: "刷新",
      remove_filter: "移除这个过滤器",
      remove_all_filters: "移除所有",
      remove_all_filters: "清除所有过滤条件",
      clear_filters: "清除过滤条件",
      remove: "移除",
      approved: "审核",
      save: "保存",
@@ -32,15 +33,15 @@
      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: "是",
@@ -48,16 +49,17 @@
      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: {
@@ -65,139 +67,142 @@
        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: "第三文本",
      },
    },
  },
rsf-admin/src/i18n/zh.js
@@ -1388,11 +1388,49 @@
    },
    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: {
rsf-admin/src/page/basicInfo/whMat/mySearchInput.jsx
@@ -1,17 +1,19 @@
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)}
            />
rsf-admin/src/page/histories/taskLog/TaskItemLogList.jsx
@@ -123,7 +123,7 @@
                <DynamicFields />
            </List>
            <PageDrawer
                title='TaskItemLog Detail'
                title={translate('toolbar.detail')}
                drawerVal={drawerVal}
                setDrawerVal={setDrawerVal}
            >
rsf-admin/src/page/histories/taskLog/TaskLogList.jsx
@@ -155,7 +155,7 @@
                setOpen={setCreateDialog}
            /> */}
            <PageDrawer
                title='TaskLog Detail'
                title={translate('toolbar.detail')}
                drawerVal={drawerVal}
                setDrawerVal={setDrawerVal}
            >
rsf-admin/src/page/orders/check/CheckPreviewTable.jsx
@@ -69,7 +69,7 @@
        getActions: (params) => [
            <GridActionsCellItem
                icon={<Delete />}
                label="Delete"
                label={translate('ra.action.delete')}
                onClick={() => handleDelete(params.row, rows, setRows)}
            />,
        ]
rsf-admin/src/page/orders/outStock/OutOrderList.jsx
@@ -82,37 +82,6 @@
  },
}));
const filters = [
  <SearchInput source="condition" alwaysOn />,
  <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" />,
  <ReferenceInput source="type" reference="dictData" filter={{ dictTypeCode: 'sys_order_type', group: '2' }} label="table.field.outStock.type" alwaysOn>
    <AutocompleteInput label="table.field.outStock.type" optionValue="value" />
  </ReferenceInput>,
  <ReferenceInput source="wkType" reference="dictData" filter={{ dictTypeCode: 'sys_business_type', group: '2' }} label="table.field.outStock.wkType" alwaysOn>
    <AutocompleteInput label="table.field.outStock.wkType" optionValue="value" />
  </ReferenceInput>,
  <NumberInput source="anfme" label="table.field.outStock.anfme" />,
  <NumberInput source="qty" label="table.field.outStock.qty" />,
  <TextInput source="logisNo" label="table.field.outStock.logisNo" />,
  <DateInput source="arrTime" label="table.field.outStock.arrTime" />,
  <SelectInput source="rleStatus" label="table.field.outStock.rleStatus"
    choices={[
      { id: 0, name: ' 正常' },
      { id: 1, name: ' 已释放' },
    ]}
  />,
  <TextInput label="common.field.memo" source="memo" />,
  <DictionarySelect
    label='table.field.outStock.exceStatus'
    name="exceStatus"
    dictTypeCode="sys_asn_exce_status"
    alwaysOn
  />,
]
const OutOrderList = (props) => {
  const dicts = JSON.parse(localStorage.getItem('sys_dicts'))?.filter(dict => (dict.dictTypeCode == 'sys_business_type')) || [];
@@ -125,6 +94,37 @@
  const [modalType, setmodalType] = useState(0);
  const [select, setSelect] = useState(0);
  const translate = useTranslate();
  const filters = [
    <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" />,
    <ReferenceInput source="type" reference="dictData" filter={{ dictTypeCode: 'sys_order_type', group: '2' }} label="table.field.outStock.type" alwaysOn>
      <AutocompleteInput label="table.field.outStock.type" optionValue="value" />
    </ReferenceInput>,
    <ReferenceInput source="wkType" reference="dictData" filter={{ dictTypeCode: 'sys_business_type', group: '2' }} label="table.field.outStock.wkType" alwaysOn>
      <AutocompleteInput label="table.field.outStock.wkType" optionValue="value" />
    </ReferenceInput>,
    <NumberInput source="anfme" label="table.field.outStock.anfme" />,
    <NumberInput source="qty" label="table.field.outStock.qty" />,
    <TextInput source="logisNo" label="table.field.outStock.logisNo" />,
    <DateInput source="arrTime" label="table.field.outStock.arrTime" />,
    <SelectInput source="rleStatus" label="table.field.outStock.rleStatus"
      choices={[
        { id: 0, name: ' 正常' },
        { id: 1, name: ' 已释放' },
      ]}
    />,
    <TextInput label="common.field.memo" source="memo" />,
    <DictionarySelect
      label='table.field.outStock.exceStatus'
      name="exceStatus"
      dictTypeCode="sys_asn_exce_status"
      alwaysOn
    />,
  ];
  const refresh = useRefresh();
  const notify = useNotify();
  const billReload = useRef();
rsf-admin/src/page/orders/outStock/OutStockPublic.jsx
@@ -423,7 +423,7 @@
        getActions: (params) => [
            <GridActionsCellItem
                icon={<Delete />}
                label="Delete"
                label={translate('ra.action.delete')}
                onClick={() => handleDelete(params.row, rows, setRows)}
            />,
        ]
rsf-admin/src/page/system/dept/DeptList.jsx
@@ -253,7 +253,7 @@
            <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)
rsf-admin/src/page/task/TaskItemList.jsx
@@ -117,7 +117,7 @@
                open={createDialog}
                setOpen={setCreateDialog} />
            <PageDrawer
                title='TaskItem Detail'
                title={translate('toolbar.detail')}
                drawerVal={drawerVal}
                setDrawerVal={setDrawerVal}
            >
rsf-admin/src/page/task/TaskList.jsx
@@ -191,7 +191,7 @@
                </StyledDatagrid>
            </List>
            <PageDrawer
                title='Task Detail'
                title={translate('toolbar.detail')}
                drawerVal={drawerVal}
                setDrawerVal={setDrawerVal}
            >
rsf-server/src/main/resources/mapper/manager/AsnOrderMapper.xml
@@ -16,7 +16,6 @@
        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,