2 lines
6.1 KiB
JavaScript
2 lines
6.1 KiB
JavaScript
import{u as z,a2 as B,r as i,j as e,a3 as N,B as c,a4 as A,Y as f,v as E,R as H,T as K,ac as Y,ad as G,a6 as J,a7 as S,d3 as Q,aU as W,d4 as X,d5 as Z,s as D,d6 as ee}from"./index-2nzO_M0d.js";import{P as se}from"./index-Ds3G3GDW.js";import{u as ae}from"./useDict-Cjy4qKoT.js";import{g as te}from"./pagination-C2Om-nC2.js";import{F as r}from"./index-BNTgrN92.js";import{C as _}from"./index-ESbS3nHt.js";import{I as j}from"./index-fAufRegR.js";import{F as ie}from"./Table-UD3nj3r6.js";import{T as de}from"./index-CASbXnpp.js";import{P as ce}from"./index-t62uv_8b.js";import"./useForm-CzLkm9RK.js";import"./row-CR991LIl.js";import"./index-z7YG9RTL.js";import"./Pagination-CRtRHhmu.js";const{Text:T}=K;function we(){const{t:a}=z(),{can:u}=B(),{items:y}=ae("sys_common_status"),[P,g]=i.useState(!1),[F,w]=i.useState(!1),[o,b]=i.useState(""),L=()=>{},R=()=>{b("")},[m,k]=i.useState([]),[v,$]=i.useState([]),[V,l]=i.useState(!1),[p,I]=i.useState(null),[n]=r.useForm(),x=async()=>{g(!0);try{const[s,t]=await Promise.all([Q(),W()]);k(s||[]),$(t||[])}finally{g(!1)}};i.useEffect(()=>{x()},[]);const h=i.useMemo(()=>{const s={};return v.forEach(t=>{s[t.userId]=t}),s},[v]),C=i.useMemo(()=>{if(!o)return m;const s=o.toLowerCase();return m.filter(t=>{const d=h[t.userId];return t.deviceCode.toLowerCase().includes(s)||(t.deviceName||"").toLowerCase().includes(s)||((d==null?void 0:d.displayName)||"").toLowerCase().includes(s)||String(t.userId).includes(s)})},[m,o,h]),M=()=>{I(null),n.resetFields(),n.setFieldsValue({status:1}),l(!0)},U=s=>{I(s),n.setFieldsValue({userId:s.userId,deviceCode:s.deviceCode,deviceName:s.deviceName,status:s.status??1}),l(!0)},q=async()=>{const s=await n.validateFields();w(!0);try{const t={userId:s.userId,deviceCode:s.deviceCode,deviceName:s.deviceName,status:s.status};p?await X(p.deviceId,t):await Z(t),D.success(a("devicesExt.operationSucceeded")),l(!1),await x()}finally{w(!1)}},O=async s=>{await ee(s),D.success(a("devicesExt.operationSucceeded")),await x()};return e.jsxs("div",{className:"app-page devices-page",children:[e.jsx(se,{title:a("devices.title"),subtitle:a("devices.subtitle")}),e.jsx(_,{className:"devices-table-card app-page__filter-card",styles:{body:{padding:"16px"}},children:e.jsxs("div",{className:"app-page__toolbar",style:{justifyContent:"space-between",width:"100%"},children:[e.jsxs("div",{className:"app-page__toolbar",children:[e.jsx(j,{placeholder:a("devicesExt.searchPlaceholder"),prefix:e.jsx(N,{"aria-hidden":"true"}),style:{width:360},value:o,onChange:s=>b(s.target.value),allowClear:!0,"aria-label":a("devicesExt.searchLabel")}),e.jsx(c,{type:"primary",icon:e.jsx(N,{"aria-hidden":"true"}),onClick:L,children:a("common.search")}),e.jsx(c,{onClick:R,children:a("common.reset")})]}),u("device:create")?e.jsx(c,{type:"primary",icon:e.jsx(A,{"aria-hidden":"true"}),onClick:M,children:a("common.create")}):null]})}),e.jsx(_,{className:"app-page__content-card flex-1 flex flex-col overflow-hidden",styles:{body:{padding:0,flex:1,display:"flex",flexDirection:"column",overflow:"hidden"}},children:e.jsx(ie,{rowKey:"deviceId",dataSource:C,loading:P,size:"middle",scroll:{y:"calc(100vh - 350px)"},pagination:te(C.length,1,1e3),columns:[{title:a("devicesExt.device"),key:"device",render:(s,t)=>e.jsxs(f,{children:[e.jsx("div",{className:"device-icon-placeholder",children:e.jsx(E,{"aria-hidden":"true"})}),e.jsxs("div",{children:[e.jsx("div",{className:"device-name font-medium",children:t.deviceName||a("devicesExt.unnamedDevice")}),e.jsx("div",{className:"device-code text-xs text-gray-400 tabular-nums",children:t.deviceCode})]})]})},{title:a("devices.owner"),key:"user",render:(s,t)=>{const d=h[t.userId];return d?e.jsxs(f,{children:[e.jsx(H,{"aria-hidden":"true",style:{color:"#8c8c8c"}}),e.jsx("span",{children:d.displayName}),e.jsxs(T,{type:"secondary",style:{fontSize:"12px"},className:"tabular-nums",children:["(",a("devicesExt.ownerId"),": ",t.userId,")"]})]}):e.jsxs("span",{className:"tabular-nums",children:[a("devicesExt.ownerId"),": ",t.userId]})}},{title:a("common.status"),dataIndex:"status",width:100,render:s=>{const t=y.find(d=>d.itemValue===String(s));return e.jsx(de,{color:s===1?"green":"red",children:(t==null?void 0:t.itemLabel)||a(s===1?"devicesExt.enabled":"devicesExt.disabled")})}},{title:a("devices.updateTime"),dataIndex:"updatedAt",width:180,render:s=>e.jsx(T,{type:"secondary",className:"tabular-nums",children:s==null?void 0:s.replace("T"," ").substring(0,19)})},{title:a("common.action"),key:"action",width:120,fixed:"right",render:(s,t)=>e.jsxs(f,{children:[u("device:update")?e.jsx(c,{type:"text",icon:e.jsx(Y,{"aria-hidden":"true"}),onClick:()=>U(t),"aria-label":a("devicesExt.editDevice")}):null,u("device:delete")?e.jsx(ce,{title:a("devicesExt.deleteDevice"),onConfirm:()=>O(t.deviceId),children:e.jsx(c,{type:"text",danger:!0,icon:e.jsx(G,{"aria-hidden":"true"}),"aria-label":a("common.delete")})}):null]})}]})}),e.jsx(J,{title:e.jsxs("div",{className:"device-drawer-title",children:[e.jsx(E,{className:"mr-2","aria-hidden":"true"}),a(p?"devices.drawerTitleEdit":"devicesExt.drawerTitleCreate")]}),open:V,onClose:()=>l(!1),width:420,destroyOnClose:!0,footer:e.jsxs("div",{className:"app-page__drawer-footer",children:[e.jsx(c,{onClick:()=>l(!1),children:a("common.cancel")}),e.jsx(c,{type:"primary",loading:F,onClick:q,children:a("common.save")})]}),children:e.jsxs(r,{form:n,layout:"vertical",children:[e.jsx(r.Item,{label:a("devices.owner"),name:"userId",rules:[{required:!0,message:a("devicesExt.selectOwner")}],children:e.jsx(S,{showSearch:!0,placeholder:a("devicesExt.searchSelectUser"),optionFilterProp:"label",options:v.map(s=>({label:`${s.displayName} (@${s.username})`,value:s.userId}))})}),e.jsx(r.Item,{label:a("devices.deviceCode"),name:"deviceCode",rules:[{required:!0,message:a("devicesExt.deviceCodeRequired")}],children:e.jsx(j,{placeholder:a("devicesExt.deviceCodePlaceholder")})}),e.jsx(r.Item,{label:a("devices.deviceName"),name:"deviceName",children:e.jsx(j,{placeholder:a("devicesExt.deviceNamePlaceholder")})}),e.jsx(r.Item,{label:a("common.status"),name:"status",initialValue:1,children:e.jsx(S,{options:y.map(s=>({value:Number(s.itemValue),label:s.itemLabel}))})})]})})]})}export{we as default};
|