refactor(sales): remove import template download and update dialog instructions
Some checks failed
Koori-ERP-Deploy-System / deploy-production (push) Has been cancelled
Koori-ERP-Deploy-System / deploy-demo (push) Has been cancelled

This commit is contained in:
2026-02-09 17:21:35 +08:00
parent 7cf640b2f4
commit 08e360464e
4 changed files with 16 additions and 71 deletions

View File

@@ -30,10 +30,6 @@ class SalesImportController extends Controller
]); ]);
} }
public function template()
{
return Excel::download(new \App\Modules\Sales\Exports\SalesImportTemplateExport, 'sales_import_template.xlsx');
}
public function store(Request $request) public function store(Request $request)
{ {

View File

@@ -1,37 +0,0 @@
<?php
namespace App\Modules\Sales\Exports;
use Maatwebsite\Excel\Concerns\WithHeadings;
use Maatwebsite\Excel\Concerns\WithTitle;
use Maatwebsite\Excel\Concerns\WithStyles;
use PhpOffice\PhpSpreadsheet\Worksheet\Worksheet;
class SalesImportTemplateExport implements WithHeadings, WithTitle, WithStyles
{
public function headings(): array
{
return [
'機台編號',
'交易時間',
'商品代號',
'數量',
'單價',
'總金額',
'貨道', // 新增欄位
'狀態', // 原始狀態
];
}
public function title(): string
{
return '銷售單匯入範本';
}
public function styles(Worksheet $sheet)
{
return [
1 => ['font' => ['bold' => true]],
];
}
}

View File

@@ -10,7 +10,6 @@ Route::middleware(['auth', 'verified'])->prefix('sales')->name('sales-imports.')
}); });
Route::post('/imports', [SalesImportController::class, 'store'])->middleware('permission:sales_imports.create')->name('store'); Route::post('/imports', [SalesImportController::class, 'store'])->middleware('permission:sales_imports.create')->name('store');
Route::get('/imports/template', [SalesImportController::class, 'template'])->middleware('permission:sales_imports.create')->name('template');
Route::post('/imports/{import}/confirm', [SalesImportController::class, 'confirm'])->middleware('permission:sales_imports.confirm')->name('confirm'); Route::post('/imports/{import}/confirm', [SalesImportController::class, 'confirm'])->middleware('permission:sales_imports.confirm')->name('confirm');
Route::delete('/imports/{import}', [SalesImportController::class, 'destroy'])->middleware('permission:sales_imports.delete')->name('destroy'); Route::delete('/imports/{import}', [SalesImportController::class, 'destroy'])->middleware('permission:sales_imports.delete')->name('destroy');

View File

@@ -2,7 +2,7 @@ import { Dialog, DialogContent, DialogHeader, DialogTitle, DialogFooter, DialogD
import { Button } from "@/Components/ui/button"; import { Button } from "@/Components/ui/button";
import { Input } from "@/Components/ui/input"; import { Input } from "@/Components/ui/input";
import { Label } from "@/Components/ui/label"; import { Label } from "@/Components/ui/label";
import { Upload, AlertCircle, Info, FileSpreadsheet } from "lucide-react"; import { Upload, AlertCircle, Info } from "lucide-react";
import { Accordion, AccordionContent, AccordionItem, AccordionTrigger } from "@/Components/ui/accordion"; import { Accordion, AccordionContent, AccordionItem, AccordionTrigger } from "@/Components/ui/accordion";
import { useForm } from "@inertiajs/react"; import { useForm } from "@inertiajs/react";
import { Alert, AlertDescription } from "@/Components/ui/alert"; import { Alert, AlertDescription } from "@/Components/ui/alert";
@@ -49,32 +49,11 @@ export default function SalesImportDialog({ open, onOpenChange }: SalesImportDia
</DialogHeader> </DialogHeader>
<form onSubmit={handleSubmit} className="space-y-6"> <form onSubmit={handleSubmit} className="space-y-6">
{/* 下載範本區域 */}
<div className="space-y-2 p-4 bg-gray-50 rounded-lg border border-gray-100">
<Label className="font-medium flex items-center gap-2">
<FileSpreadsheet className="w-4 h-4 text-green-600" />
1 Excel
</Label>
<div className="text-sm text-gray-500 mb-2">
</div>
<Button
type="button"
variant="outline"
size="sm"
onClick={() => window.location.href = route('sales-imports.template')}
className="w-full sm:w-auto button-outlined-primary"
>
<Upload className="w-4 h-4 mr-2 rotate-180" />
(.xlsx)
</Button>
</div>
{/* 上傳檔案區域 */} {/* 上傳檔案區域 */}
<div className="space-y-2"> <div className="space-y-2">
<Label className="font-medium flex items-center gap-2"> <Label className="font-medium flex items-center gap-2">
<Upload className="w-4 h-4 text-blue-600" /> <Upload className="w-4 h-4 text-blue-600" />
2
</Label> </Label>
<div className="grid w-full max-w-sm items-center gap-1.5"> <div className="grid w-full max-w-sm items-center gap-1.5">
@@ -98,21 +77,29 @@ export default function SalesImportDialog({ open, onOpenChange }: SalesImportDia
</div> </div>
{/* 匯入說明 - 使用 Accordion 收合 */} {/* 匯入說明 - 使用 Accordion 收合 */}
<Accordion type="single" collapsible className="w-full border rounded-lg px-2"> <Accordion type="single" collapsible className="w-full border rounded-lg px-2" defaultValue="item-1">
<AccordionItem value="item-1" className="border-b-0"> <AccordionItem value="item-1" className="border-b-0">
<AccordionTrigger className="text-sm text-gray-500 hover:no-underline py-3"> <AccordionTrigger className="text-sm text-gray-500 hover:no-underline py-3">
<div className="flex items-center gap-2"> <div className="flex items-center gap-2">
<Info className="h-4 w-4" /> <Info className="h-4 w-4" />
()
</div> </div>
</AccordionTrigger> </AccordionTrigger>
<AccordionContent> <AccordionContent>
<div className="text-sm text-gray-600 space-y-2 pb-2 pl-6"> <div className="text-sm text-gray-600 space-y-2 pb-2 pl-6">
<ul className="list-disc space-y-1"> <p className="mb-2"> Excel </p>
<li><span className="font-medium text-gray-700"></span>使 Excel </li> <ul className="list-disc space-y-1 text-xs">
<li><span className="font-medium text-gray-700"></span></li> <li><span className="font-medium text-gray-700">A (0)</span> (Serial)</li>
<li><span className="font-medium text-gray-700"></span></li> <li><span className="font-medium text-gray-700">B (1)</span> (Machine ID)</li>
<li><span className="font-medium text-gray-700">E (4)</span> (Status)</li>
<li><span className="font-medium text-gray-700">H (7)</span> (Product Code)</li>
<li><span className="font-medium text-gray-700">J (9)</span> (Transaction Date)</li>
<li><span className="font-medium text-gray-700">L (11)</span> (Amount)</li>
<li><span className="font-medium text-gray-700">T (19)</span> (Slot)</li>
</ul> </ul>
<div className="mt-2 pt-2 border-t text-xs text-gray-500">
4
</div>
</div> </div>
</AccordionContent> </AccordionContent>
</AccordionItem> </AccordionItem>