Dr3If255.js
15.3 KB
import{_ as W}from"./Cba5FCYW.js";import{d as qe,u as De,a as Ke,b as je,y as Ee,k as Qe,w as i,A as We,o as v,e as r,f as s,g as e,_ as me,c as y,n as R,j as z,t as u,l as pe,$ as Ge,p as m,q as G,s as p,B as S,a8 as He}from"./BtEn9SvP.js";import{a as Je,_ as fe}from"./CISWP1pQ.js";import{_ as Xe}from"./CGpKcNx7.js";import{_ as Ye}from"./D1XImzPn.js";import{_ as Ze,a as et,b as tt}from"./Cw8QoC40.js";import{_ as nt}from"./7yIyqIY0.js";import{_ as ot}from"./9JBjgwkJ.js";import{_ as at,g as st}from"./K7-Fp-h8.js";import{_ as lt}from"./3BmF-CSc.js";import{_ as rt}from"./B57PMWCO.js";import{_ as it,b as ct}from"./Bu1OYQOt.js";import{_ as ut}from"./C392U5_K.js";import{u as dt}from"./sZhUfCvq.js";import{u as mt}from"./CXAJ3nxo.js";import"./D5W8WIzq.js";import"./BP6f2Ivu.js";import"./B4Klxa_r.js";import"./BHXyHhK1.js";import"./3laQJA1P.js";import"./DYcig7R4.js";import"./BO2UtWXE.js";import"./BlfKXJ2P.js";import"./CKCLIpbs.js";import"./Dd6skURy.js";const pt={class:"space-y-4"},ft={class:"space-y-2"},gt={class:"flex flex-wrap items-center gap-2"},bt={key:0,class:"grid grid-cols-1 gap-2 md:grid-cols-2 lg:grid-cols-3"},_t={key:0,class:"text-sm text-error"},vt={class:"flex items-center justify-between gap-3 border-t border-default pt-4"},St={class:"text-sm text-muted"},wt={class:"space-y-3"},xt={class:"flex justify-end gap-2"},ht={class:"flex justify-end gap-2"},yt={class:"space-y-3"},Mt={class:"text-sm text-muted"},kt={key:0,class:"rounded-lg border border-default px-3 py-2"},Ut={class:"text-xs text-muted"},Vt={class:"flex flex-wrap items-center gap-2 text-sm"},zt={class:"font-semibold"},At={class:"text-muted"},It={class:"space-y-1 text-sm"},$t={class:"flex flex-wrap items-center gap-2 text-muted"},Nt={key:0,class:"text-xs text-muted"},Tt={key:1,class:"text-xs text-muted"},Ct=["href"],Ot={key:1,class:"text-sm text-muted"},A="/sn-management",cn=qe({__name:"sn-management",setup(Pt){const H=W,w=me,J=Ye,{t:o,locale:ge}=De(),X=He(),_=Ke(),{user:Y}=je(),{can:I,getDeniedReason:be}=dt(),F=mt(),x=We("table"),B=m(!1),$=m(""),M=m(null),N=m(!1),h=m(!1),T=m(!1),C=m(),Z=m([]),L=m(),q=m({}),D=m({pageIndex:0,pageSize:10}),l=G({sn:"",workOrderNo:"",status:"all",currentStep:"",exceptionStatus:"all"}),k=m(!1),d=G({workOrderNo:"",currentStep:"装配",snInput:""}),c=G({open:!1,action:"freeze",snItem:void 0,reason:""}),ee=p(()=>I(A,"sn.import")),te=p(()=>I(A,"sn.freeze")),ne=p(()=>I(A,"sn.unfreeze")),oe=p(()=>I(A,"sn.scrap"));function O(t){_.add({title:o("permission.toast.title"),description:o(be(A,t)),icon:"i-lucide-shield-alert",color:"warning"})}function g(t){return o(`snManagement.status.${t}`)}function K(t){return{pending:"neutral",in_process:"primary",completed:"success",frozen:"warning",scrapped:"error"}[t]}function U(t){return o(`snManagement.exceptionStatus.${t}`)}function _e(t){return{none:"neutral",open:"error",rework:"warning",closed:"success"}[t]}function ae(t){if(!t)return"-";const n=new Date(t);if(Number.isNaN(n.getTime()))return t;const b=ge.value==="zh-CN"?"zh-CN":"en-US";return new Intl.DateTimeFormat(b,{year:"numeric",month:"2-digit",day:"2-digit",hour:"2-digit",minute:"2-digit",second:"2-digit",hour12:!1}).format(n)}function ve(t){return t===null?o("snManagement.flow.initialStatus"):g(t)}function Se(t){return t===null?"neutral":K(t)}function we(t){const n=t.startsWith("operation_")?t.slice(10):null;return n==="start"?"i-lucide-play":n==="complete_assembly"||n==="complete_rework"?"i-lucide-wrench":n==="submit_test"?"i-lucide-flask-conical":n==="skip"?"i-lucide-skip-forward":{import:"i-lucide-download",freeze:"i-lucide-snowflake",unfreeze:"i-lucide-sun",scrap:"i-lucide-trash"}[t]??"i-lucide-history"}function xe(t){if(t.startsWith("operation_")){const b=t.slice(10),f=o(`operations.actions.${b}`);if(f!==`operations.actions.${b}`)return f}const n=o(`snManagement.actions.${t}`);return n===`snManagement.actions.${t}`?t:n}function he(){return{sn:l.sn.trim()||void 0,workOrderNo:l.workOrderNo.trim()||void 0,status:l.status==="all"?void 0:l.status,currentStep:l.currentStep.trim()||void 0,exceptionStatus:l.exceptionStatus==="all"?void 0:l.exceptionStatus}}async function j(){B.value=!0,$.value="";try{Z.value=await F.getSnItems(he())}catch{$.value=o("common.requestFailed")}finally{B.value=!1}}function ye(){return d.snInput.split(/[\n,,;\s]+/).map(t=>t.trim().toUpperCase()).filter(t=>t.length>0)}function Me(){if(!ee.value){O("sn.import");return}h.value=!0}async function ke(){if(!ee.value){O("sn.import");return}if(N.value)return;const t=ye();if(!d.workOrderNo.trim()||!d.currentStep.trim()||t.length===0){_.add({title:o("common.error"),description:o("snManagement.import.validation"),icon:"i-lucide-circle-alert",color:"error"});return}N.value=!0;try{const n=await F.importSnItems({workOrderNo:d.workOrderNo.trim(),currentStep:d.currentStep.trim(),snList:t,operator:Y.value?.name||"未知操作员"});_.add({title:n.success?o("settings.profile.toastTitle"):o("common.error"),description:n.message,icon:n.success?"i-lucide-check":"i-lucide-circle-alert",color:n.success?"success":"error"}),n.success&&(d.snInput="",h.value=!1,await j())}catch{_.add({title:o("common.error"),description:o("common.requestFailed"),icon:"i-lucide-circle-alert",color:"error"})}finally{N.value=!1}}function E(t,n){return n==="freeze"?t.status!=="frozen"&&t.status!=="scrapped":n==="unfreeze"?t.status==="frozen":t.status!=="scrapped"}function se(t){return{freeze:"sn.freeze",unfreeze:"sn.unfreeze",scrap:"sn.scrap"}[t]}function le(t){return{freeze:te.value,unfreeze:ne.value,scrap:oe.value}[t]}function Q(t,n){if(!le(n)){O(se(n));return}c.open=!0,c.action=n,c.snItem=t,c.reason=""}function re(t){return o(`snManagement.actions.${t}`)}async function Ue(){if(!c.snItem)return;const t=c.action,n=c.snItem;if(!le(t)){O(se(t));return}if(!c.reason.trim()){_.add({title:o("common.error"),description:o("snManagement.actions.reasonRequired"),icon:"i-lucide-circle-alert",color:"error"});return}if(M.value===null){M.value=n.id;try{const b={operator:Y.value?.name||"未知操作员",reason:c.reason.trim()},f=await F.runSnAction(n.id,t,b);_.add({title:f.success?o("settings.profile.toastTitle"):o("common.error"),description:f.message,icon:f.success?"i-lucide-check":"i-lucide-circle-alert",color:f.success?"success":"error"}),f.success&&(c.open=!1,await j())}catch{_.add({title:o("common.error"),description:o("common.requestFailed"),icon:"i-lucide-circle-alert",color:"error"})}finally{M.value=null}}}function Ve(t){C.value=t,T.value=!0}function ze(t){const n=t.original;return[{type:"label",label:o("snManagement.table.actions")},{label:o("snManagement.actions.flowDetail"),icon:"i-lucide-waypoints",onSelect:()=>Ve(n)},{label:o("snManagement.actions.freeze"),icon:"i-lucide-snowflake",disabled:!E(n,"freeze")||!te.value,onSelect:()=>Q(n,"freeze")},{label:o("snManagement.actions.unfreeze"),icon:"i-lucide-sun",disabled:!E(n,"unfreeze")||!ne.value,onSelect:()=>Q(n,"unfreeze")},{label:o("snManagement.actions.scrap"),icon:"i-lucide-trash",color:"error",disabled:!E(n,"scrap")||!oe.value,onSelect:()=>Q(n,"scrap")}]}const Ae=p(()=>[{label:o("snManagement.filters.statusAll"),value:"all"},{label:g("pending"),value:"pending"},{label:g("in_process"),value:"in_process"},{label:g("completed"),value:"completed"},{label:g("frozen"),value:"frozen"},{label:g("scrapped"),value:"scrapped"}]),Ie=p(()=>[{label:o("snManagement.filters.exceptionStatusAll"),value:"all"},{label:U("none"),value:"none"},{label:U("open"),value:"open"},{label:U("rework"),value:"rework"},{label:U("closed"),value:"closed"}]),$e=p(()=>[{id:"select",header:({table:t})=>S(fe,{modelValue:t.getIsSomePageRowsSelected()?"indeterminate":t.getIsAllPageRowsSelected(),"onUpdate:modelValue":n=>t.toggleAllPageRowsSelected(!!n),ariaLabel:o("snManagement.table.selectAll")}),cell:({row:t})=>S(fe,{modelValue:t.getIsSelected(),"onUpdate:modelValue":n=>t.toggleSelected(!!n),ariaLabel:o("snManagement.table.selectRow")})},{id:"actions",cell:({row:t})=>S("div",{class:"text-right"},S(Xe,{content:{align:"end"},items:ze(t)},()=>S(me,{icon:M.value===t.original.id?"i-lucide-loader-circle":"i-lucide-ellipsis-vertical",color:"neutral",variant:"ghost",class:M.value===t.original.id?"animate-spin":""})))},{accessorKey:"sn",header:o("snManagement.table.sn")},{accessorKey:"workOrderNo",header:o("snManagement.table.workOrderNo")},{accessorKey:"status",header:o("snManagement.table.status"),cell:({row:t})=>{const n=t.original.status;return S(W,{color:K(n),variant:"subtle"},()=>g(n))}},{accessorKey:"currentStep",header:o("snManagement.table.currentStep")},{accessorKey:"exceptionStatus",header:o("snManagement.table.exceptionStatus"),cell:({row:t})=>{const n=t.original.exceptionStatus;return S(W,{color:_e(n),variant:"subtle"},()=>U(n))}},{id:"reason",header:o("snManagement.table.reason"),cell:({row:t})=>t.original.scrapReason||t.original.freezeReason||"-"},{id:"audit",header:o("snManagement.table.audit"),cell:({row:t})=>`${t.original.audit.lastActionBy} / ${ae(t.original.audit.lastActionAt)}`}]),Ne=p(()=>x.value?.tableApi?.getFilteredSelectedRowModel().rows.length||0),ie=p(()=>x.value?.tableApi?.getFilteredRowModel().rows.length||0),Te=p(()=>C.value?.events??[]),ce=p(()=>Te.value.map(t=>({...t,icon:we(t.action),dateText:ae(t.at),actionLabel:xe(t.action),fromStatusText:ve(t.fromStatus),toStatusText:g(t.toStatus),fromStatusColor:Se(t.fromStatus),toStatusColor:K(t.toStatus)}))),Ce=p(()=>typeof X.public.apiBase=="string"?X.public.apiBase:"");return Ee(()=>({sn:l.sn,workOrderNo:l.workOrderNo,status:l.status,currentStep:l.currentStep,exceptionStatus:l.exceptionStatus}),()=>{j()},{immediate:!0}),(t,n)=>{const b=tt,f=et,V=nt,ue=ot,Oe=at,Pe=Je,P=lt,de=rt,Re=Ge,Fe=it,Be=ut,Le=Ze;return v(),Qe(Le,{id:"sn-management"},{header:i(()=>[s(f,{title:e(o)("snManagement.title")},{leading:i(()=>[s(b)]),right:i(()=>[s(e(w),{label:e(o)("snManagement.actions.import"),icon:"i-lucide-upload",onClick:Me},null,8,["label"])]),_:1},8,["title"])]),body:i(()=>[r("div",pt,[r("div",ft,[r("div",gt,[s(V,{modelValue:e(l).sn,"onUpdate:modelValue":n[0]||(n[0]=a=>e(l).sn=a),class:"w-72 max-w-full",placeholder:e(o)("snManagement.filters.sn"),icon:"i-lucide-scan-line"},null,8,["modelValue","placeholder"]),s(e(w),{color:"neutral",variant:"outline",icon:e(k)?"i-lucide-chevron-up":"i-lucide-chevron-down",label:e(k)?e(o)("common.collapseQuery"):e(o)("common.advancedQuery"),onClick:n[1]||(n[1]=a=>k.value=!e(k))},null,8,["icon","label"])]),e(k)?(v(),y("div",bt,[s(V,{modelValue:e(l).workOrderNo,"onUpdate:modelValue":n[2]||(n[2]=a=>e(l).workOrderNo=a),placeholder:e(o)("snManagement.filters.workOrderNo"),icon:"i-lucide-hash"},null,8,["modelValue","placeholder"]),s(ue,{modelValue:e(l).status,"onUpdate:modelValue":n[3]||(n[3]=a=>e(l).status=a),items:e(Ae),placeholder:e(o)("snManagement.filters.status")},null,8,["modelValue","items","placeholder"]),s(V,{modelValue:e(l).currentStep,"onUpdate:modelValue":n[4]||(n[4]=a=>e(l).currentStep=a),placeholder:e(o)("snManagement.filters.currentStep"),icon:"i-lucide-git-fork"},null,8,["modelValue","placeholder"]),s(ue,{modelValue:e(l).exceptionStatus,"onUpdate:modelValue":n[5]||(n[5]=a=>e(l).exceptionStatus=a),items:e(Ie),placeholder:e(o)("snManagement.filters.exceptionStatus")},null,8,["modelValue","items","placeholder"])])):R("",!0)]),s(Oe,{ref_key:"table",ref:x,"column-visibility":e(L),"onUpdate:columnVisibility":n[6]||(n[6]=a=>z(L)?L.value=a:null),"row-selection":e(q),"onUpdate:rowSelection":n[7]||(n[7]=a=>z(q)?q.value=a:null),pagination:e(D),"onUpdate:pagination":n[8]||(n[8]=a=>z(D)?D.value=a:null),"pagination-options":{getPaginationRowModel:e(st)()},data:e(Z),columns:e($e),loading:e(B),class:"shrink-0",ui:{base:"table-fixed border-separate border-spacing-0",thead:"[&>tr]:bg-elevated/50 [&>tr]:after:content-none",tbody:"[&>tr]:last:[&>td]:border-b-0",th:"py-2 first:rounded-l-lg last:rounded-r-lg border-y border-default first:border-l last:border-r",td:"border-b border-default",separator:"h-0"}},null,8,["column-visibility","row-selection","pagination","pagination-options","data","columns","loading"]),e($)?(v(),y("div",_t,u(e($)),1)):R("",!0),r("div",vt,[r("div",St,u(e(o)("snManagement.table.selectedRows",{selected:e(Ne),total:e(ie)})),1),s(Pe,{"default-page":(e(x)?.tableApi?.getState().pagination.pageIndex||0)+1,"items-per-page":e(x)?.tableApi?.getState().pagination.pageSize,total:e(ie),"onUpdate:page":n[9]||(n[9]=a=>e(x)?.tableApi?.setPageIndex(a-1))},null,8,["default-page","items-per-page","total"])])]),s(de,{open:e(h),"onUpdate:open":n[14]||(n[14]=a=>z(h)?h.value=a:null),title:e(o)("snManagement.import.title"),description:e(o)("snManagement.import.description")},{body:i(()=>[r("div",wt,[s(P,{label:e(o)("snManagement.import.workOrderNo"),required:""},{default:i(()=>[s(V,{modelValue:e(d).workOrderNo,"onUpdate:modelValue":n[10]||(n[10]=a=>e(d).workOrderNo=a),placeholder:e(o)("snManagement.import.workOrderPlaceholder")},null,8,["modelValue","placeholder"])]),_:1},8,["label"]),s(P,{label:e(o)("snManagement.import.currentStep"),required:""},{default:i(()=>[s(V,{modelValue:e(d).currentStep,"onUpdate:modelValue":n[11]||(n[11]=a=>e(d).currentStep=a),placeholder:e(o)("snManagement.import.currentStepPlaceholder")},null,8,["modelValue","placeholder"])]),_:1},8,["label"]),s(P,{label:e(o)("snManagement.import.snList"),required:""},{default:i(()=>[s(e(J),{modelValue:e(d).snInput,"onUpdate:modelValue":n[12]||(n[12]=a=>e(d).snInput=a),placeholder:e(o)("snManagement.import.snListPlaceholder"),rows:8},null,8,["modelValue","placeholder"])]),_:1},8,["label"])])]),footer:i(()=>[r("div",xt,[s(e(w),{color:"neutral",variant:"outline",label:e(o)("common.cancel"),onClick:n[13]||(n[13]=a=>h.value=!1)},null,8,["label"]),s(e(w),{loading:e(N),icon:"i-lucide-upload",label:e(o)("snManagement.actions.import"),onClick:ke},null,8,["loading","label"])])]),_:1},8,["open","title","description"]),s(de,{open:e(c).open,"onUpdate:open":n[17]||(n[17]=a=>e(c).open=a),title:re(e(c).action)},{body:i(()=>[s(P,{label:e(o)("snManagement.actions.reasonLabel"),required:""},{default:i(()=>[s(e(J),{modelValue:e(c).reason,"onUpdate:modelValue":n[15]||(n[15]=a=>e(c).reason=a),rows:5,placeholder:e(o)("snManagement.actions.reasonPlaceholder")},null,8,["modelValue","placeholder"])]),_:1},8,["label"])]),footer:i(()=>[r("div",ht,[s(e(w),{color:"neutral",variant:"outline",label:e(o)("common.cancel"),onClick:n[16]||(n[16]=a=>e(c).open=!1)},null,8,["label"]),s(e(w),{label:re(e(c).action),onClick:Ue},null,8,["label"])])]),_:1},8,["open","title"]),s(Be,{open:e(T),"onUpdate:open":n[18]||(n[18]=a=>z(T)?T.value=a:null),title:e(o)("snManagement.flow.title")},{body:i(()=>[r("div",yt,[r("div",Mt,u(e(C)?.sn)+" · "+u(e(C)?.workOrderNo),1),e(ce).length?(v(),y("div",kt,[s(Fe,{items:e(ce),size:"sm",color:"neutral"},{date:i(({item:a})=>[r("span",Ut,u(a.dateText),1)]),title:i(({item:a})=>[r("div",Vt,[r("span",zt,u(a.operator),1),n[19]||(n[19]=r("span",{class:"text-muted"},"·",-1)),r("span",At,u(a.actionLabel),1)])]),description:i(({item:a})=>[r("div",It,[r("div",$t,[s(e(H),{color:a.fromStatusColor,variant:"soft"},{default:i(()=>[pe(u(a.fromStatusText),1)]),_:2},1032,["color"]),s(Re,{name:"i-lucide-arrow-right",class:"size-4 text-muted"}),s(e(H),{color:a.toStatusColor,variant:"soft"},{default:i(()=>[pe(u(a.toStatusText),1)]),_:2},1032,["color"]),r("span",null,"· "+u(a.currentStep),1)]),a.reason?(v(),y("div",Nt,u(a.reason),1)):R("",!0),a.evidencePath?(v(),y("div",Tt,[r("a",{class:"text-primary underline",href:e(ct)(a.evidencePath,e(Ce)),target:"_blank",rel:"noopener noreferrer"},u(e(o)("snManagement.flow.showAttachment")),9,Ct)])):R("",!0)])]),_:1},8,["items"])])):(v(),y("div",Ot,u(e(o)("snManagement.flow.empty")),1))])]),_:1},8,["open","title"])]),_:1})}}});export{cn as default};