Kaynağa Gözat

Merge branch 'master' of https://git.2fi-solutions.com/derek/FPSMS-frontend

# Conflicts:
#	src/i18n/zh/jo.json
#	src/i18n/zh/pickOrder.json
master
kelvin.yau 2 ay önce
ebeveyn
işleme
69025c8f5e
4 değiştirilmiş dosya ile 676 ekleme ve 296 silme
  1. +171
    -0
      check-translations.js
  2. +1
    -15
      src/components/FinishedGoodSearch/FinishedGoodSearch.tsx
  3. +150
    -1
      src/i18n/zh/jo.json
  4. +354
    -280
      src/i18n/zh/pickOrder.json

+ 171
- 0
check-translations.js Dosyayı Görüntüle

@@ -0,0 +1,171 @@
const fs = require('fs');
const path = require('path');

/**
* 检查指定文件中使用的 t('...') 翻译键是否都在 JSON 文件中定义
*/
function checkMissingTranslations(sourceFile, jsonFile) {
// 读取源代码文件
const sourceCode = fs.readFileSync(sourceFile, 'utf-8');
// 读取翻译 JSON 文件
const translations = JSON.parse(fs.readFileSync(jsonFile, 'utf-8'));
// ✅ 只匹配 t('...') 和 t("...") 和 t(`...`),不包含模板变量
const tRegex = /\bt\(["`']([^"`'${}]+)["`']\)/g;
const matches = [...sourceCode.matchAll(tRegex)];
// 获取所有使用的键(去重并清理空白)
const usedKeys = [...new Set(
matches
.map(match => match[1].trim())
.filter(key => key.length > 0)
)];
// 查找缺失的键
const missingKeys = usedKeys.filter(key => !(key in translations));
// 查找未使用的键
const definedKeys = Object.keys(translations);
const unusedKeys = definedKeys.filter(key => !usedKeys.includes(key));
return {
usedKeys: usedKeys.sort(),
missingKeys: missingKeys.sort(),
unusedKeys: unusedKeys.sort(),
totalUsed: usedKeys.length,
totalMissing: missingKeys.length,
totalUnused: unusedKeys.length,
totalDefined: definedKeys.length
};
}

/**
* 递归检查目录中所有文件
*/
function checkDirectory(dir, jsonFile) {
const results = {};
let totalMissing = 0;
function scanDir(directory) {
const files = fs.readdirSync(directory);
files.forEach(file => {
const fullPath = path.join(directory, file);
const stat = fs.statSync(fullPath);
if (stat.isDirectory()) {
scanDir(fullPath);
} else if (file.endsWith('.tsx') || file.endsWith('.ts')) {
try {
const result = checkMissingTranslations(fullPath, jsonFile);
if (result.missingKeys.length > 0) {
results[fullPath] = result;
totalMissing += result.missingKeys.length;
}
} catch (err) {
console.error(`❌ 处理文件出错 ${fullPath}:`, err.message);
}
}
});
}
scanDir(dir);
return { results, totalMissing };
}

// 主程序
const args = process.argv.slice(2);

if (args.length === 0) {
console.log('📚 翻译键检查工具\n');
console.log('用法:');
console.log(' 检查单个文件: node check-translations.js <source-file> <json-file>');
console.log(' 检查整个目录: node check-translations.js --dir <directory> <json-file>');
console.log('\n示例:');
console.log(' node check-translations.js src/components/Jodetail/JodetailSearch.tsx src/i18n/zh/jo.json');
console.log(' node check-translations.js --dir src/components/Jodetail src/i18n/zh/jo.json');
console.log('\n注意:');
console.log(' ✅ 只检查 t("key") 调用');
console.log(' ❌ 忽略 alert(), console.log() 等普通字符串');
console.log(' ❌ 忽略模板字符串中的 ${} 变量部分');
process.exit(0);
}

if (args[0] === '--dir') {
// 检查整个目录
const directory = args[1];
const jsonFile = args[2];
console.log(`\n🔍 正在检查目录: ${directory}`);
console.log(`📖 使用翻译文件: ${jsonFile}\n`);
const { results, totalMissing } = checkDirectory(directory, jsonFile);
if (Object.keys(results).length === 0) {
console.log('✅ 太棒了!没有发现缺失的翻译键!');
} else {
console.log(`⚠️ 发现 ${Object.keys(results).length} 个文件有缺失的翻译键\n`);
// 收集所有缺失的键(去重)
const allMissingKeys = new Set();
Object.entries(results).forEach(([file, result]) => {
const relativePath = file.replace(process.cwd(), '').replace(/\\/g, '/');
console.log(`\n📄 ${relativePath}`);
console.log(` 使用: ${result.totalUsed} 个键 | ❌ 缺失: ${result.totalMissing} 个键`);
result.missingKeys.forEach(key => {
console.log(` - "${key}"`);
allMissingKeys.add(key);
});
});
// 输出可以直接复制的 JSON 格式
console.log(`\n\n📋 需要添加到 ${jsonFile} 的翻译键 (共 ${allMissingKeys.size} 个):`);
console.log('─'.repeat(60));
allMissingKeys.forEach(key => {
console.log(` "${key}": "",`);
});
console.log('─'.repeat(60));
}
} else {
// 检查单个文件
const sourceFile = args[0];
const jsonFile = args[1];
console.log(`\n🔍 正在检查文件: ${sourceFile}`);
console.log(`📖 使用翻译文件: ${jsonFile}\n`);
try {
const result = checkMissingTranslations(sourceFile, jsonFile);
console.log(`📊 统计信息:`);
console.log(` 代码中使用的键: ${result.totalUsed}`);
console.log(` JSON 中定义的键: ${result.totalDefined}`);
console.log(` ❌ 缺失的键: ${result.totalMissing}`);
console.log(` ⚠️ 未使用的键: ${result.totalUnused}`);
if (result.missingKeys.length > 0) {
console.log(`\n❌ 缺失的翻译键 (需要添加到 ${jsonFile}):`);
console.log('─'.repeat(60));
result.missingKeys.forEach(key => {
console.log(` "${key}": "",`);
});
console.log('─'.repeat(60));
} else {
console.log('\n✅ 太棒了!所有使用的翻译键都已定义!');
}
if (result.unusedKeys.length > 0 && result.unusedKeys.length <= 20) {
console.log(`\n⚠️ 未使用的翻译键 (在 JSON 中但代码中未使用):`);
result.unusedKeys.forEach(key => {
console.log(` - "${key}"`);
});
}
} catch (err) {
console.error('❌ 错误:', err.message);
process.exit(1);
}
}

console.log('\n');

+ 1
- 15
src/components/FinishedGoodSearch/FinishedGoodSearch.tsx Dosyayı Görüntüle

@@ -629,21 +629,7 @@ const PickOrderSearch: React.FC<Props> = ({ pickOrders }) => {
{/* ✅ Updated print buttons with completion status */}
<Grid item xs={6} display="flex" justifyContent="flex-end">
<Stack direction="row" spacing={1}>
{/*
<Button
variant={hideCompletedUntilNext ? "contained" : "outlined"}
color={hideCompletedUntilNext ? "warning" : "inherit"}
onClick={() => {
const next = !hideCompletedUntilNext;
setHideCompletedUntilNext(next);
if (next) localStorage.setItem('hideCompletedUntilNext', 'true');
else localStorage.removeItem('hideCompletedUntilNext');
window.dispatchEvent(new Event('pickOrderAssigned')); // ask detail to re-fetch
}}
>
{hideCompletedUntilNext ? t("Hide Completed: ON") : t("Hide Completed: OFF")}
</Button>
*/}

<Button
variant="contained"
// disabled={!printButtonsEnabled}


+ 150
- 1
src/i18n/zh/jo.json Dosyayı Görüntüle

@@ -103,5 +103,154 @@
"Received Qty": "接收數量",
"Confirm Lot Substitution": "確認批號替換",
"Processing...": "處理中",
"Complete Job Order Record": "已完成工單記錄"

"Complete Job Order Record": "已完成工單記錄",
"Back": "返回",
"Lot Details": "批號細節",
"No lot details available": "沒有批號細節",
"Second Scan Completed": "對料已完成",
"Second Scan Pending": "對料待處理",
"items completed": "物料已完成",
"Current Stock": "當前庫存",
"Lot Actual Pick Qty": "批號實際提料數量",
"Qty Already Picked": "已提料數量",
"Reject": "拒絕",
"Stock Unit": "庫存單位",
"Group": "組",
"Item": "物料",
"No Group": "沒有組",
"No created items": "沒有創建物料",
"Order Quantity": "需求數量",
"Selected": "已選擇",
"Please select item": "請選擇物料",
"acceptedQty must not greater than": "接受數量不能大於",
"enter a qty": "請輸入數量",
"minimal value is 1": "最小值為1",
"qty": "數量",
"select qc": "選擇QC",
"targetDate": "需求日期",
"type": "類型",
"uom": "單位",
"value must be a number": "值必須是數字",
"update qc info": "更新QC資訊",
"Delivery Code": "交貨編號",
"Delivery Date": "交貨日期",
"Departure Time": "出發時間",
"Shop Address": "商店地址",
"Shop ID": "商店ID",
"Shop Name": "商店名稱",
"Shop PO Code": "商店PO編號",
"Store ID": "商店ID",
"Ticket No.": "票號",
"Truck No.": "車輛編號",
"No Item": "沒有物料",
"None": "沒有",
"Add Selected Items to Created Items": "將已選擇的物料添加到創建的物料中",
"All pick orders created successfully": "所有提料單建立成功",
"Consumable": "消耗品",
"Create New Group": "創建新組",
"Create Pick Order": "創建提料單",
"Created Items": "創建物料",
"End Product": "成品",
"Failed to create group": "創建組失敗",
"First created group": "第一次創建組",
"Invalid date format": "日期格式無效",
"Item already exists in created items": "物料已存在於創建的物料中",
"Job Order not found or has no items": "工單不存在或沒有物料",
"Latest created group": "最新創建組",
"Loading...": "加載中",
"Material": "物料",
"No results found": "沒有結果",
"Please enter at least code or name": "請輸入至少編號或名稱",
"Please enter quantity for all selected items": "請輸入所有已選擇的物料的數量",
"Please select at least one item to submit": "請選擇至少一個物料提交",
"Please select group and enter quantity for all selected items": "請選擇組並輸入所有已選擇的物料的數量",
"Please select group for all selected items": "請選擇組對所有已選擇的物料",
"Please select product type": "請選擇產品類型",
"Please select target date": "請選擇需求日期",
"Please select type": "請選擇類型",
"Product Type": "產品類型",
"Reset": "重置",
"Search": "搜尋",
"Search Criteria": "搜尋條件",
"Search Items": "搜尋物料",
"Search Results": "搜尋結果",
"Selected items will join above created group": "已選擇的物料將加入上述創建的組",
"reset": "重置",
"Lot has been rejected and marked as unavailable.": "批號已被拒絕並標記為不可用。",
"Manual Input": "手動輸入",
"Partial quantity submitted. Please submit more or complete the order.": "",
"Pick order completed successfully!": "提料單完成成功!",
"Please finish QR code scan and pick order.": "請完成QR碼掃描和提料單。",
"Please submit the pick order.": "請提交提料單。",
"Processing QR code...": "處理QR碼...",
"QR Code Scan for Lot": "批號QR碼掃描",
"QR Scan Result:": "QR掃描結果:",
"The input is not the same as the expected lot number.": "輸入的批號與預期批號不同。",
"This order is insufficient, please pick another lot.": "此訂單不足,請選擇另一個批號。",
"Verified successfully!": "驗證成功!",
"At least one issue must be reported": "至少有一個問題必須報告",
"Available in warehouse": "在倉庫中可用",
"Describe the issue with bad items": "描述不良物料的問題",
"Enter bad item quantity (required if no missing items)": "請輸入不良物料數量(如果沒有缺失物料)",
"Enter missing quantity (required if no bad items)": "請輸入缺失物料數量(如果沒有不良物料)",
"Max": "最大",
"Note:": "注意:",
"Qty is not allowed to be greater than required qty": "數量不能大於所需數量",
"Qty is required": "數量是必需的",
"Still need to pick": "仍需提料",
"Verified quantity cannot exceed received quantity": "驗證數量不能超過接收數量",
"submitting": "提交中",
"Consolidate": "整合",
"Consolidated Code": "整合編號",
"Items": "物料",
"Released By": "發佈者",
"Product": "產品",
"Target Date From": "需求日期從",
"Target Date To": "需求日期到",
"Type": "類型",
"Confirm": "確認",
"Expected Lot:": "預期批號:",
"If you confirm, the system will:": "如果您確認,系統將:",
"Lot Number Mismatch": "批號不匹配",
"Scanned Lot:": "掃描批號:",
"The scanned item matches the expected item, but the lot number is different. Do you want to proceed with this different lot?": "掃描的物料與預期物料匹配,但批號不同。您想繼續使用不同的批號嗎?",
"Update your suggested lot to the this scanned lot": "更新您建議的批號為此掃描的批號",
"Default Warehouse": "默認倉庫",
"LotNo": "批號",
"No Warehouse": "沒有倉庫",
"Please scan warehouse qr code.": "請掃描倉庫QR碼。",
"Po Code": "PO編號",
"Putaway Detail": "入庫細節",
"Select warehouse": "選擇倉庫",
"Supplier": "供應商",
"acceptedQty": "接受數量",
"bind": "綁定",
"expiryDate": "有效期",
"itemName": "物料名稱",
"itemNo": "物料編號",
"not default warehosue": "不是默認倉庫",
"printQty": "打印數量",
"productionDate": "生產日期",
"warehouse": "倉庫",
"Add Record": "添加記錄",
"Add some entries!": "添加一些條目!",
"Clean Record": "清空記錄",
"Escalation History": "升級歷史",
"Escalation Info": "升級信息",
"Escalation Result": "升級結果",
"QC Info": "QC信息",
"acceptQty": "接受數量",
"acceptQty must not greater than": "接受數量不能大於",
"escalation": "升級",
"failedQty": "失敗數量",
"qcItem": "QC物料",
"qcResult": "QC結果",
"remarks": "備註",
"supervisor": "主管",
"No Qc": "沒有QC",
"acceptedWeight": "接受重量",
"receivedQty": "接收數量",
"stock in information": "庫存信息",
"No Uom": "沒有單位"
}

+ 354
- 280
src/i18n/zh/pickOrder.json Dosyayı Görüntüle

@@ -1,293 +1,367 @@
{
"Purchase Order": "採購訂單",
"Code": "編號",
"Pick Order Code": "提料單編號",
"Item Code": "貨品編號",
"OrderDate": "下單日期",
"Details": "詳情",
"Supplier": "供應商",
"Status": "來貨狀態",
"Release Pick Orders": "放單",
"Escalated": "上報狀態",
"NotEscalated": "無上報",
"Assigned To": "已分配",
"Do you want to start?": "確定開始嗎?",
"Start": "開始",
"Start Success": "開始成功",
"Start Fail": "開始失敗",
"Start PO": "開始採購訂單",
"Do you want to complete?": "確定完成嗎?",
"Complete": "完成",
"Complete Success": "完成成功",
"Complete Fail": "完成失敗",
"Complete Pick Order": "完成提料單",
"General": "一般",
"Bind Storage": "綁定倉位",
"itemNo": "貨品編號",
"itemName": "貨品名稱",
"qty": "訂單數",
"Require Qty": "需求數",
"uom": "計量單位",
"total weight": "總重量",
"weight unit": "重量單位",
"price": "訂單貨值",
"processed": "已入倉",
"expiryDate": "到期日",
"acceptedQty": "是次訂單/來貨/巳來貨數",
"weight": "重量",
"start": "開始",
"qc": "質量控制",
"escalation": "上報",
"stock in": "入庫",
"putaway": "上架",
"delete": "刪除",
"qty cannot be greater than remaining qty": "數量不能大於剩餘數",
"Record pol": "記錄採購訂單",
"Add some entries!": "添加條目!",
"draft": "草稿",
"pending": "待處理",
"determine1": "上報1",
"determine2": "上報2",
"determine3": "上報3",
"receiving": "收貨中",
"received": "已收貨",
"completed": "已完成",
"rejected": "已拒絕",
{
"Purchase Order": "採購訂單",
"Code": "編號",
"Pick Order Code": "提料單編號",
"Item Code": "貨品編號",
"OrderDate": "下單日期",
"Details": "詳情",
"Supplier": "供應商",
"Status": "來貨狀態",
"Release Pick Orders": "放單",
"Escalated": "上報狀態",
"NotEscalated": "無上報",
"Assigned To": "已分配",
"Do you want to start?": "確定開始嗎?",
"Start": "開始",
"Start Success": "開始成功",
"Start Fail": "開始失敗",
"Start PO": "開始採購訂單",
"Do you want to complete?": "確定完成嗎?",
"Complete": "完成",
"Complete Success": "完成成功",
"Complete Fail": "完成失敗",
"Complete Pick Order": "完成提料單",
"General": "一般",
"Bind Storage": "綁定倉位",
"itemNo": "貨品編號",
"itemName": "貨品名稱",
"qty": "訂單數",
"Require Qty": "需求數",
"uom": "計量單位",
"total weight": "總重量",
"weight unit": "重量單位",
"price": "訂單貨值",
"processed": "已入倉",
"expiryDate": "到期日",
"acceptedQty": "是次訂單/來貨/巳來貨數",
"weight": "重量",
"start": "開始",
"qc": "質量控制",
"escalation": "上報",
"stock in": "入庫",
"putaway": "上架",
"delete": "刪除",
"qty cannot be greater than remaining qty": "數量不能大於剩餘數",
"Record pol": "記錄採購訂單",
"Add some entries!": "添加條目!",
"draft": "草稿",
"pending": "待處理",
"determine1": "上報1",
"determine2": "上報2",
"determine3": "上報3",
"receiving": "收貨中",
"received": "已收貨",
"completed": "已完成",
"rejected": "已拒絕",

"acceptedQty must not greater than": "接受數量不得大於",
"minimal value is 1": "最小值為1",
"value must be a number": "值必須是數字",
"qc Check": "質量控制檢查",
"Please select QC": "請選擇質量控制",
"failQty": "失敗數",
"select qc": "選擇質量控制",
"enter a failQty": "請輸入失敗數",
"qty too big": "數量過大",
"sampleRate": "抽樣率",
"sampleWeight": "樣本重量",
"totalWeight": "總重量",
"acceptedQty must not greater than": "接受數量不得大於",
"minimal value is 1": "最小值為1",
"value must be a number": "值必須是數字",
"qc Check": "質量控制檢查",
"Please select QC": "請選擇質量控制",
"failQty": "失敗數",
"select qc": "選擇質量控制",
"enter a failQty": "請輸入失敗數",
"qty too big": "數量過大",
"sampleRate": "抽樣率",
"sampleWeight": "樣本重量",
"totalWeight": "總重量",

"Escalation": "上報",
"to be processed": "待處理",
"Escalation": "上報",
"to be processed": "待處理",

"Stock In Detail": "入庫詳情",
"productLotNo": "產品批號",
"receiptDate": "收貨日期",
"acceptedWeight": "接受重量",
"productionDate": "生產日期",
"Stock In Detail": "入庫詳情",
"productLotNo": "產品批號",
"receiptDate": "收貨日期",
"acceptedWeight": "接受重量",
"productionDate": "生產日期",

"reportQty": "上報數",
"reportQty": "上報數",

"Default Warehouse": "預設倉庫",
"Select warehouse": "選擇倉庫",
"Putaway Detail": "上架詳情",
"LotNo": "批號",
"Po Code": "採購訂單編號",
"No Warehouse": "沒有倉庫",
"Please scan warehouse qr code.": "請掃描倉庫 QR 碼。",
"Default Warehouse": "預設倉庫",
"Select warehouse": "選擇倉庫",
"Putaway Detail": "上架詳情",
"LotNo": "批號",
"Po Code": "採購訂單編號",
"No Warehouse": "沒有倉庫",
"Please scan warehouse qr code.": "請掃描倉庫 QR 碼。",

"Reject": "拒絕",
"submit": "確認提交",
"print": "列印",
"bind": "綁定",
"Reject": "拒絕",
"submit": "確認提交",
"print": "列印",
"bind": "綁定",



"Pick Order": "提料單",
"Type": "類型",
"Product Type": "貨品類型",
"Reset": "重置",
"Search": "搜尋",
"Pick Orders": "提料單",
"Consolidated Pick Orders": "合併提料單",
"Pick Order No.": "提料單編號",
"Pick Order Date": "提料單日期",
"Pick Order Status": "提貨狀態",
"Pick Order Type": "提料單類型",
"Consolidated Code": "合併編號",
"type": "類型",
"Items": "項目",
"Target Date": "需求日期",
"Released By": "發佈者",
"Target Date From": "目標日期從",
"Target Date To": "目標日期到",
"Consolidate": "合併",
"Stock Unit": "庫存單位",
"create": "新增",
"detail": "詳情",
"Pick Order Detail": "提料單詳情",
"item": "貨品",
"Unit": "單位",
"reset": "重置",
"targetDate": "目標日期",
"remove": "移除",
"release": "發佈",
"location": "位置",
"suggestedLotNo": "建議批次",
"lotNo": "批次",
"item name": "貨品名稱",
"Item Name": "貨品名稱",
"approval": "審核",
"lot change": "批次變更",
"checkout": "出庫",
"Search Items": "搜尋貨品",
"Search Results": "可選擇貨品",
"Second Search Results": "第二搜尋結果",
"Second Search Items": "第二搜尋項目",
"Second Search": "第二搜尋",
"Item": "貨品",
"Order Quantity": "貨品需求數",
"Current Stock": "現時可用庫存",
"Selected": "已選",
"Select Items": "選擇貨品",
"Assign": "分派提料單",
"Release": "放單",
"Pick Execution": "進行提料",
"Create Pick Order": "建立貨品提料單",
"Consumable": "消耗品",
"Material": "食材",
"Job Order": "工單",
"End Product": "成品",
"Lot Expiry Date": "到期日",
"Lot Location": "位置",
"Available Lot": "可用提料數",
"Lot Required Pick Qty": "所需數",
"Lot Actual Pick Qty": "此單將提數",
"Lot#": "批號",
"Submit": "提交",
"Created Items": "已建立貨品",
"Create New Group": "建立新提料分組",
"Group": "分組",
"Qty Already Picked": "已提料數",
"Select Job Order Items": "選擇工單貨品",
"failedQty": "不合格項目數",
"remarks": "備註",
"Qc items": "QC 項目",
"qcItem": "QC 項目",
"QC Info": "QC 資訊",
"qcResult": "QC 結果",
"acceptQty": "接受數",
"Escalation History": "上報歷史",
"Group Code": "分組編號",
"Job Order Code": "工單編號",
"QC Check": "QC 檢查",
"QR Code Scan": "QR Code掃描",
"Pick Order Details": "提料單詳情",
"Partial quantity submitted. Please submit more or complete the order.": "已提料部分數量。請提交更多或完成訂單。",
"Pick order completed successfully!": "提料單完成成功!",
"Lot has been rejected and marked as unavailable.": "批號已拒絕並標記為不可用。",
"This order is insufficient, please pick another lot.": "此訂單不足,請選擇其他批號。",
"Please finish QR code scan, QC check and pick order.": "請完成 QR 碼掃描、QC 檢查和提料。",
"No data available": "沒有資料",
"Please submit the pick order.": "請提交提料單。",
"Item lot to be Pick:": "批次貨品提料:",
"Report and Pick another lot": "上報並需重新選擇批號",
"Accept Stock Out": "接受出庫",
"Pick Another Lot": "欠數,並重新選擇批號",
"Lot No": "批號",
"Expiry Date": "到期日",
"Location": "位置",
"All Pick Order Lots": "所有提料單批次",
"Completed": "已完成",
"Finished Good Order": "成品出倉",
"Assign and Release": "分派並放單",
"Original Available Qty": "原可用數",
"Remaining Available Qty": "剩餘可用數",
"Please submit pick order.": "請提交提料單。",
"Please finish QR code scan and pick order.": "請完成 QR 碼掃描和提料。",
"Please finish QR code scanand pick order.": "請完成 QR 碼掃描和提料。",
"First created group": "首次建立分組",
"Latest created group": "最新建立分組",
"Manual Input": "手動輸入",
"QR Code Scan for Lot": " QR 碼掃描批次",
"Processing QR code...": "處理 QR 碼...",
"The input is not the same as the expected lot number.": "輸入的批次號碼與預期的不符。",
"Verified successfully!": "驗證成功!",
"Cancel": "取消",
"Scan": "掃描",
"Scanned": "已掃描",
"Loading data...": "正在載入數據...",
"No available stock for this item": "沒有可用庫存",
"No lot details available for this item": "沒有批次詳情",
"Current stock is insufficient or unavailable": "現時可用庫存不足或不可用",
"Please check inventory status": "請檢查庫存狀態",
"Rows per page": "每頁行數",
"QR Scan Result:": "QR 掃描結果:",
"Action": "操作",
"Please finish pick order.": "請完成提料。",
"Lot": "批號",
"Assign Pick Orders": "分派提料單",
"Selected Pick Orders": "已選擇提料單數量",
"Please assgin/release the pickorders to picker": "請分派/放單提料單給提料員。",
"Assign To": "分派給",
"No Group": "沒有分組",
"Selected items will join above created group": "已選擇的貨品將加入以上建立的分組",
"Issue":"問題",
"Pick Execution Issue Form":"提料問題表單",
"This form is for reporting issues only. You must report either missing items or bad items.":"此表單僅用於報告問題。您必須報告缺少的貨品或不良貨品。",
"Bad item Qty":"不良貨品數量",
"Missing item Qty":"缺少貨品數量",
"Bad Item Qty":"不良貨品數量",
"Missing Item Qty":"缺少貨品數量",
"Actual Pick Qty":"實際提料數量",
"Required Qty":"所需數量",
"Issue Remark":"問題描述",
"Handler":"處理者",
"Qty is required":"必需輸入數量",
"Qty is not allowed to be greater than remaining available qty":"輸入數量不能大於剩餘可用數量",
"Qty is not allowed to be greater than required qty":"輸入數量不能大於所需數量",
"At least one issue must be reported":"至少需要報告一個問題",
"issueRemark":"問題描述是必需的",
"handler":"處理者",
"Max":"最大值",
"Route":"路線",
"Index":"編號",
"No FG pick orders found":"沒有成品提料單",
"Finish Scan?":"完成掃描?",
"Delivery Code":"出倉單編號",
"Shop PO Code":"訂單編號",
"Shop ID":"商店編號",
"Truck No.":"車輛編號",
"Departure Time":"車輛出發時間",
"Shop Name":"商店名稱",
"Shop Address":"商店地址",
"Delivery Date":"目標日期",
"Pick Execution 2/F":"進行提料 2/F",
"Pick Execution 4/F":"進行提料 4/F",
"Pick Execution Detail":"進行提料詳情",
"Submit Required Pick Qty":"提交所需提料數量",
"Scan Result":"掃描結果",
"Ticket No.":"提票號碼",
"Start QR Scan":"開始QR掃描",
"Stop QR Scan":"停止QR掃描",
"Scanning...":"掃描中...",
"Print DN/Label":"列印送貨單/標籤",
"Store ID":"儲存編號",
"QR code does not match any item in current orders.":"QR 碼不符合當前訂單中的任何貨品。",
"Lot Number Mismatch":"批次號碼不符",
"The scanned item matches the expected item, but the lot number is different. Do you want to proceed with this different lot?":"掃描的貨品與預期的貨品相同,但批次號碼不同。您是否要繼續使用不同的批次?",
"Expected Lot:":"預期批次:",
"Scanned Lot:":"掃描批次:",
"Confirm":"確認",
"Update your suggested lot to the this scanned lot":"更新您的建議批次為此掃描的批次",
"Print Draft":"列印草稿",
"Print Pick Order and DN Label":"列印提料單和送貨單標貼",
"Print Pick Order":"列印提料單",
"Print DN Label":"列印送貨單標貼",
"If you confirm, the system will:":"如果您確認,系統將:",
"QR code verified.":"QR 碼驗證成功。",
"Order Finished":"訂單完成",
"Submitted Status":"提交狀態",
"Pick Execution Record":"提料執行記錄",
"Delivery No.":"送貨單編號",
"Total":"總數",
"completed DO pick orders":"已完成送貨單提料單",
"No completed DO pick orders found":"沒有已完成送貨單提料單",
"Pick Order": "提料單",
"Type": "類型",
"Product Type": "貨品類型",
"Reset": "重置",
"Search": "搜尋",
"Pick Orders": "提料單",
"Consolidated Pick Orders": "合併提料單",
"Pick Order No.": "提料單編號",
"Pick Order Date": "提料單日期",
"Pick Order Status": "提貨狀態",
"Pick Order Type": "提料單類型",
"Consolidated Code": "合併編號",
"type": "類型",
"Items": "項目",
"Target Date": "需求日期",
"Released By": "發佈者",
"Target Date From": "目標日期從",
"Target Date To": "目標日期到",
"Consolidate": "合併",
"Stock Unit": "庫存單位",
"create": "新增",
"detail": "詳情",
"Pick Order Detail": "提料單詳情",
"item": "貨品",
"Unit": "單位",
"reset": "重置",
"targetDate": "目標日期",
"remove": "移除",
"release": "發佈",
"location": "位置",
"suggestedLotNo": "建議批次",
"lotNo": "批次",
"item name": "貨品名稱",
"Item Name": "貨品名稱",
"approval": "審核",
"lot change": "批次變更",
"checkout": "出庫",
"Search Items": "搜尋貨品",
"Search Results": "可選擇貨品",
"Second Search Results": "第二搜尋結果",
"Second Search Items": "第二搜尋項目",
"Second Search": "第二搜尋",
"Item": "貨品",
"Order Quantity": "貨品需求數",
"Current Stock": "現時可用庫存",
"Selected": "已選",
"Select Items": "選擇貨品",
"Assign": "分派提料單",
"Release": "放單",
"Pick Execution": "進行提料",
"Create Pick Order": "建立貨品提料單",
"Consumable": "消耗品",
"Material": "食材",
"Job Order": "工單",
"End Product": "成品",
"Lot Expiry Date": "到期日",
"Lot Location": "位置",
"Available Lot": "可用提料數",
"Lot Required Pick Qty": "所需數",
"Lot Actual Pick Qty": "此單將提數",
"Lot#": "批號",
"Submit": "提交",
"Created Items": "已建立貨品",
"Create New Group": "建立新提料分組",
"Group": "分組",
"Qty Already Picked": "已提料數",
"Select Job Order Items": "選擇工單貨品",
"failedQty": "不合格項目數",
"remarks": "備註",
"Qc items": "QC 項目",
"qcItem": "QC 項目",
"QC Info": "QC 資訊",
"qcResult": "QC 結果",
"acceptQty": "接受數",
"Escalation History": "上報歷史",
"Group Code": "分組編號",
"Job Order Code": "工單編號",
"QC Check": "QC 檢查",
"QR Code Scan": "QR Code掃描",
"Pick Order Details": "提料單詳情",
"Partial quantity submitted. Please submit more or complete the order.": "已提料部分數量。請提交更多或完成訂單。",
"Pick order completed successfully!": "提料單完成成功!",
"Lot has been rejected and marked as unavailable.": "批號已拒絕並標記為不可用。",
"This order is insufficient, please pick another lot.": "此訂單不足,請選擇其他批號。",
"Please finish QR code scan, QC check and pick order.": "請完成 QR 碼掃描、QC 檢查和提料。",
"No data available": "沒有資料",
"Please submit the pick order.": "請提交提料單。",
"Item lot to be Pick:": "批次貨品提料:",
"Report and Pick another lot": "上報並需重新選擇批號",
"Accept Stock Out": "接受出庫",
"Pick Another Lot": "欠數,並重新選擇批號",
"Lot No": "批號",
"Expiry Date": "到期日",
"Location": "位置",
"All Pick Order Lots": "所有提料單批次",
"Completed": "已完成",
"Finished Good Order": "成品出倉",
"Assign and Release": "分派並放單",
"Original Available Qty": "原可用數",
"Remaining Available Qty": "剩餘可用數",
"Please submit pick order.": "請提交提料單。",
"Please finish QR code scan and pick order.": "請完成 QR 碼掃描和提料。",
"Please finish QR code scanand pick order.": "請完成 QR 碼掃描和提料。",
"First created group": "首次建立分組",
"Latest created group": "最新建立分組",
"Manual Input": "手動輸入",
"QR Code Scan for Lot": " QR 碼掃描批次",
"Processing QR code...": "處理 QR 碼...",
"The input is not the same as the expected lot number.": "輸入的批次號碼與預期的不符。",
"Verified successfully!": "驗證成功!",
"Cancel": "取消",
"Scan": "掃描",
"Scanned": "已掃描",
"Loading data...": "正在載入數據...",
"No available stock for this item": "沒有可用庫存",
"No lot details available for this item": "沒有批次詳情",
"Current stock is insufficient or unavailable": "現時可用庫存不足或不可用",
"Please check inventory status": "請檢查庫存狀態",
"Rows per page": "每頁行數",
"QR Scan Result:": "QR 掃描結果:",
"Action": "操作",
"Please finish pick order.": "請完成提料。",
"Lot": "批號",
"Assign Pick Orders": "分派提料單",
"Selected Pick Orders": "已選擇提料單數量",
"Please assgin/release the pickorders to picker": "請分派/放單提料單給提料員。",
"Assign To": "分派給",
"No Group": "沒有分組",
"Selected items will join above created group": "已選擇的貨品將加入以上建立的分組",
"Issue":"問題",
"Pick Execution Issue Form":"提料問題表單",
"This form is for reporting issues only. You must report either missing items or bad items.":"此表單僅用於報告問題。您必須報告缺少的貨品或不良貨品。",
"Bad item Qty":"不良貨品數量",
"Missing item Qty":"缺少貨品數量",
"Bad Item Qty":"不良貨品數量",
"Missing Item Qty":"缺少貨品數量",
"Actual Pick Qty":"實際提料數量",
"Required Qty":"所需數量",
"Issue Remark":"問題描述",
"Handler":"處理者",
"Qty is required":"必需輸入數量",
"Qty is not allowed to be greater than remaining available qty":"輸入數量不能大於剩餘可用數量",
"Qty is not allowed to be greater than required qty":"輸入數量不能大於所需數量",
"At least one issue must be reported":"至少需要報告一個問題",
"issueRemark":"問題描述是必需的",
"handler":"處理者",
"Max":"最大值",
"Route":"路線",
"Index":"編號",
"No FG pick orders found":"沒有成品提料單",
"Finish Scan?":"完成掃描?",
"Delivery Code":"出倉單編號",
"Shop PO Code":"訂單編號",
"Shop ID":"商店編號",
"Truck No.":"車輛編號",
"Departure Time":"車輛出發時間",
"Shop Name":"商店名稱",
"Shop Address":"商店地址",
"Delivery Date":"目標日期",
"Pick Execution 2/F":"進行提料 2/F",
"Pick Execution 4/F":"進行提料 4/F",
"Pick Execution Detail":"進行提料詳情",
"Submit Required Pick Qty":"提交所需提料數量",
"Scan Result":"掃描結果",
"Ticket No.":"提票號碼",
"Start QR Scan":"開始QR掃描",
"Stop QR Scan":"停止QR掃描",
"Scanning...":"掃描中...",
"Print DN/Label":"列印送貨單/標籤",
"Store ID":"儲存編號",
"QR code does not match any item in current orders.":"QR 碼不符合當前訂單中的任何貨品。",
"Lot Number Mismatch":"批次號碼不符",
"The scanned item matches the expected item, but the lot number is different. Do you want to proceed with this different lot?":"掃描的貨品與預期的貨品相同,但批次號碼不同。您是否要繼續使用不同的批次?",
"Expected Lot:":"預期批次:",
"Scanned Lot:":"掃描批次:",
"Confirm":"確認",
"Update your suggested lot to the this scanned lot":"更新您的建議批次為此掃描的批次",
"Print Draft":"列印草稿",
"Print Pick Order and DN Label":"列印提料單和送貨單標貼",
"Print Pick Order":"列印提料單",
"Print DN Label":"列印送貨單標貼",
"If you confirm, the system will:":"如果您確認,系統將:",
"QR code verified.":"QR 碼驗證成功。",
"Order Finished":"訂單完成",
"Submitted Status":"提交狀態",
"Pick Execution Record":"提料執行記錄",
"Delivery No.":"送貨單編號",
"Total":"總數",
"completed DO pick orders":"已完成送貨單提料單",
"No completed DO pick orders found":"沒有已完成送貨單提料單",

"Enter the number of cartons: ": "請輸入總箱數",
"Number of cartons": "箱數"
"Print DN Label":"列印送貨單標貼",
"Enter the number of cartons: ": "請輸入總箱數",
"Number of cartons": "箱數",
"Select an action for the assigned pick orders.": "選擇分配提料單的動作。",
"Detail": "詳情",
"consoCode": "合併編號",
"status": "狀態",
"Items Included": "貨品包括",
"Pick Order Included": "提料單包括",
"No created items": "沒有已建立的貨品",
"Please select item": "請選擇貨品",
"enter a qty": "請輸入數量",
"update qc info": "更新QC資訊",
"All lots must be completed before printing": "所有批次必須完成才能打印",
"Assigning pick order...": "分配提料單...",
"Enter the number of cartons:": "請輸入總箱數",
"Finished Good Detail": "成品詳情",
"Finished Good Record": "成品記錄",
"Hide Completed: OFF": "完成: OFF",
"Hide Completed: ON": "完成: ON",
"Number must be at least 1": "數量至少為1",
"Printed Successfully.": "打印成功。",
"Product": "產品",
"You need to enter a number": "您需要輸入一個數字",
"Available in warehouse": "在倉庫中可用",
"Describe the issue with bad items": "描述不良貨品的問題",
"Enter pick qty or issue qty": "請輸入提料數量或不良數量",
"Invalid qty": "無效數量",
"Note:": "注意:",
"Qty is not allowed to be greater than required/available qty": "數量不能大於所需/可用數量",
"Still need to pick": "仍需提料",
"Total exceeds required qty": "總數超過所需數量",
"submitting": "提交中",
"Back to List": "返回列表",
"Delivery No": "送貨單編號",
"FG orders": "成品訂單",
"View Details": "查看詳情",
"No Item": "沒有貨品",
"None": "沒有",
"Add Selected Items to Created Items": "將已選擇的貨品添加到已建立的貨品中",
"All pick orders created successfully": "所有提料單建立成功",
"Failed to create group": "建立分組失敗",
"Invalid date format": "日期格式無效",
"Item already exists in created items": "貨品已存在於已建立的貨品中",
"Job Order not found or has no items": "工單不存在或沒有貨品",
"Loading...": "加載中",
"No results found": "沒有結果",
"Please enter at least code or name": "請輸入至少編號或名稱",
"Please enter quantity for all selected items": "請輸入所有已選擇的貨品的數量",
"Please select at least one item to submit": "請選擇至少一個貨品提交",
"Please select group and enter quantity for all selected items": "請選擇分組並輸入所有已選擇的貨品的數量",
"Please select group for all selected items": "請選擇分組對所有已選擇的貨品",
"Please select product type": "請選擇產品類型",
"Please select target date": "請選擇目標日期",
"Please select type": "請選擇類型",
"Search Criteria": "搜尋條件",
"Processing...": "處理中",
"Failed items must have failed quantity": "不合格的貨品必須有不合格數量",
"QC items without result": "QC項目沒有結果",
"confirm putaway": "確認上架",
"email supplier": "發送郵件給供應商",
"qc processing": "QC處理",
"submitStockIn": "提交入庫",
"not default warehosue": "不是默認倉庫",
"printQty": "打印數量",
"warehouse": "倉庫",
"Add Record": "添加記錄",
"Clean Record": "清空記錄",
"Escalation Info": "升級信息",
"Escalation Result": "升級結果",
"acceptQty must not greater than": "接受數量不能大於",
"supervisor": "主管",
"No Qc": "沒有QC",
"receivedQty": "接收數量",
"stock in information": "入庫信息",
"No Uom": "沒有單位"



}
}

Yükleniyor…
İptal
Kaydet