@robot-admin/naive-ui-components 0.11.7 → 0.12.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +18 -0
- package/README.md +146 -29
- package/README_EN.md +146 -29
- package/SECURITY.md +1 -0
- package/dist/C_ActionBar.cjs +1 -1
- package/dist/C_ActionBar.css +53 -53
- package/dist/C_ActionBar.d.cts +2 -2
- package/dist/C_ActionBar.d.ts +2 -2
- package/dist/C_ActionBar.js +1 -1
- package/dist/C_ActionBar2.cjs +1 -1
- package/dist/C_ActionBar2.js +1 -1
- package/dist/C_AntV.css +67 -67
- package/dist/C_AntV2.cjs +3 -3
- package/dist/C_AntV2.js +3 -3
- package/dist/C_AudioPlayer.d.cts +1 -1
- package/dist/C_AudioPlayer.d.ts +1 -1
- package/dist/C_AvatarGroup.d.cts +1 -1
- package/dist/C_AvatarGroup.d.ts +1 -1
- package/dist/C_Barcode.d.cts +1 -1
- package/dist/C_Barcode.d.ts +1 -1
- package/dist/C_Breadcrumb.d.cts +1 -1
- package/dist/C_Breadcrumb.d.ts +1 -1
- package/dist/C_Captcha.cjs +1 -1
- package/dist/C_Captcha.css +193 -51
- package/dist/C_Captcha.d.cts +2 -3
- package/dist/C_Captcha.d.ts +2 -3
- package/dist/C_Captcha.js +1 -1
- package/dist/C_Captcha2.cjs +1 -1
- package/dist/C_Captcha2.js +1 -1
- package/dist/C_Cascade.d.cts +1 -1
- package/dist/C_Cascade.d.ts +1 -1
- package/dist/C_Chat.d.cts +1 -1
- package/dist/C_Chat.d.ts +1 -1
- package/dist/C_City.d.cts +1 -1
- package/dist/C_City.d.ts +1 -1
- package/dist/C_Code.d.cts +1 -1
- package/dist/C_Code.d.ts +1 -1
- package/dist/C_ContextMenu.d.cts +1 -1
- package/dist/C_ContextMenu.d.ts +1 -1
- package/dist/C_Date.d.cts +1 -1
- package/dist/C_Date.d.ts +1 -1
- package/dist/C_Editor.d.cts +1 -1
- package/dist/C_Editor.d.ts +1 -1
- package/dist/C_FormModal.cjs +1 -0
- package/dist/C_FormModal.css +41 -0
- package/dist/C_FormModal.d.cts +2 -0
- package/dist/C_FormModal.d.ts +3 -0
- package/dist/C_FormModal.js +1 -0
- package/dist/C_FormModal2.cjs +1 -0
- package/dist/C_FormModal2.js +1 -0
- package/dist/C_Login.css +210 -127
- package/dist/C_Login2.cjs +1 -1
- package/dist/C_Login2.js +1 -1
- package/dist/C_Map.css +3 -3
- package/dist/C_Map2.cjs +1 -1
- package/dist/C_Map2.js +1 -1
- package/dist/C_Menu.d.cts +1 -1
- package/dist/C_Table.base.css +86 -86
- package/dist/C_Table.cjs +1 -1
- package/dist/C_Table.css +86 -86
- package/dist/C_Table.d.ts +4 -3
- package/dist/C_Table.js +1 -1
- package/dist/C_Tabs.cjs +1 -0
- package/dist/C_Tabs.css +1 -0
- package/dist/C_Tabs.d.cts +2 -0
- package/dist/C_Tabs.d.ts +2 -0
- package/dist/C_Tabs.js +1 -0
- package/dist/C_TagsView.css +38 -38
- package/dist/C_TagsView2.cjs +1 -1
- package/dist/C_TagsView2.js +1 -1
- package/dist/C_VtableGantt.css +19 -19
- package/dist/C_VtableGantt2.cjs +1 -1
- package/dist/C_VtableGantt2.js +1 -1
- package/dist/constants.d.cts +2 -2
- package/dist/constants.d.ts +2 -2
- package/dist/constants2.d.cts +2 -2
- package/dist/constants2.d.ts +2 -2
- package/dist/constants3.d.cts +2 -2
- package/dist/constants3.d.ts +2 -2
- package/dist/constants4.d.cts +4 -4
- package/dist/constants4.d.ts +4 -4
- package/dist/constants5.d.cts +2 -2
- package/dist/constants5.d.ts +2 -2
- package/dist/data.d.cts +108 -0
- package/dist/data.d.ts +108 -0
- package/dist/data2.cjs +1 -0
- package/dist/data2.js +1 -0
- package/dist/index.cjs +1 -1
- package/dist/index.d.cts +49 -48
- package/dist/index.d.ts +51 -49
- package/dist/index.js +1 -1
- package/dist/index.vue.d.cts +72 -69
- package/dist/index.vue.d.ts +72 -69
- package/dist/index10.vue.d.cts +80 -39
- package/dist/index10.vue.d.ts +68 -77
- package/dist/index11.vue.d.cts +68 -77
- package/dist/index11.vue.d.ts +53 -68
- package/dist/index12.vue.d.cts +53 -68
- package/dist/index12.vue.d.ts +52 -58
- package/dist/index13.vue.d.cts +52 -58
- package/dist/index13.vue.d.ts +3 -3
- package/dist/index14.vue.d.cts +3 -3
- package/dist/index14.vue.d.ts +5 -5
- package/dist/index15.vue.d.cts +5 -5
- package/dist/index15.vue.d.ts +2 -2
- package/dist/index16.vue.d.cts +2 -2
- package/dist/index16.vue.d.ts +14 -11
- package/dist/index17.vue.d.cts +14 -11
- package/dist/index17.vue.d.ts +4 -4
- package/dist/index18.vue.d.cts +4 -4
- package/dist/index18.vue.d.ts +3 -3
- package/dist/index19.vue.d.cts +2 -2
- package/dist/index19.vue.d.ts +2 -2
- package/dist/index2.vue.d.cts +70 -65
- package/dist/index2.vue.d.ts +70 -65
- package/dist/index20.vue.d.cts +1 -1
- package/dist/index20.vue.d.ts +1 -1
- package/dist/index21.vue.d.cts +2 -2
- package/dist/index21.vue.d.ts +2 -2
- package/dist/index22.vue.d.cts +1 -1
- package/dist/index22.vue.d.ts +1 -1
- package/dist/index24.vue.d.cts +2 -2
- package/dist/index24.vue.d.ts +2 -2
- package/dist/index25.vue.d.cts +1 -1
- package/dist/index25.vue.d.ts +1 -1
- package/dist/index27.vue.d.cts +2 -2
- package/dist/index27.vue.d.ts +2 -2
- package/dist/index3.vue.d.cts +30 -80
- package/dist/index3.vue.d.ts +30 -80
- package/dist/index4.vue.d.cts +130 -30
- package/dist/index4.vue.d.ts +22 -30
- package/dist/index5.vue.d.cts +18 -126
- package/dist/index5.vue.d.ts +22 -19
- package/dist/index6.vue.d.cts +22 -19
- package/dist/index6.vue.d.ts +117 -22
- package/dist/index7.vue.d.cts +117 -22
- package/dist/index7.vue.d.ts +17 -110
- package/dist/index8.vue.d.cts +17 -110
- package/dist/index8.vue.d.ts +37 -24
- package/dist/index9.vue.d.cts +37 -24
- package/dist/index9.vue.d.ts +80 -39
- package/dist/mapUtils.d.cts +4 -4
- package/dist/mapUtils.d.ts +4 -4
- package/dist/presets.d.cts +96 -0
- package/dist/presets.d.ts +96 -0
- package/dist/resolver.cjs +1 -1
- package/dist/resolver.d.cts +1 -1
- package/dist/resolver.d.ts +1 -1
- package/dist/resolver.js +1 -1
- package/dist/style.css +520 -393
- package/dist/useCalendarEvents.d.cts +1 -1
- package/dist/useCalendarEvents.d.ts +1 -1
- package/dist/useCollapsePanel.d.cts +8 -8
- package/dist/useCollapsePanel.d.ts +8 -8
- package/dist/useCropperCore.d.cts +9 -9
- package/dist/useCropperCore.d.ts +9 -9
- package/dist/useDraggableLayout.d.cts +2 -2
- package/dist/useDraggableLayout.d.ts +2 -2
- package/dist/useEdgeInteraction.d.cts +3 -2
- package/dist/useEdgeInteraction.d.ts +3 -2
- package/dist/useInfiniteScroll.d.cts +1 -1
- package/dist/useInfiniteScroll.d.ts +1 -1
- package/dist/useQRCode.d.cts +4 -4
- package/dist/useQRCode.d.ts +4 -4
- package/dist/useSearchState.d.cts +6 -6
- package/dist/useSearchState.d.ts +6 -6
- package/dist/useSignatureHistory.d.cts +4 -4
- package/dist/useSignatureHistory.d.ts +4 -4
- package/dist/useSplitResize.d.cts +6 -6
- package/dist/useSplitResize.d.ts +6 -6
- package/dist/useTableQuery.cjs +3 -3
- package/dist/useTableQuery.d.cts +10 -0
- package/dist/useTableQuery.d.ts +10 -0
- package/dist/useTableQuery.js +3 -3
- package/dist/useTimeSelection.d.cts +5 -5
- package/dist/useTimeSelection.d.ts +5 -5
- package/dist/useTreeOperations.d.cts +8 -8
- package/dist/useTreeOperations.d.ts +8 -8
- package/dist/useWorkflowValidation.d.cts +4 -4
- package/dist/useWorkflowValidation.d.ts +4 -4
- package/dist/verification.d.cts +70 -5
- package/dist/verification.d.ts +70 -5
- package/package.json +2 -1
- package/dist/types.d.ts +0 -58
- package/dist/types2.d.cts +0 -58
package/dist/useTableQuery.js
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
import{i as e,r as t}from"./config.js";import{t as n}from"./C_Icon2.js";import{t as r}from"./export-helper.js";import{t as i}from"./data.js";import{t as a}from"./C_Form2.js";import{Fragment as o,computed as s,createBlock as c,createCommentVNode as l,createElementBlock as u,createElementVNode as d,createSlots as f,createTextVNode as p,createVNode as m,defineComponent as h,getCurrentInstance as g,h as _,inject as v,isRef as y,mergeProps as b,nextTick as x,normalizeClass as S,normalizeStyle as ee,onBeforeUnmount as te,onMounted as C,onScopeDispose as w,openBlock as T,reactive as E,ref as D,renderList as ne,renderSlot as O,resolveDynamicComponent as re,shallowRef as k,toDisplayString as A,toValue as j,unref as M,watch as N,watchEffect as ie,withCtx as P}from"vue";import{NButton as F,NButtonGroup as I,NCheckbox as ae,NDataTable as L,NDatePicker as oe,NDrawer as se,NDrawerContent as ce,NDropdown as R,NInput as z,NInputNumber as le,NModal as ue,NPagination as de,NSelect as B,NSpace as fe,NSpin as V,NSwitch as pe,NTag as me,NText as H,NTooltip as U}from"naive-ui";const he={editable:!1,editMode:`none`,showRowActions:!1,modalTitle:`编辑数据`,modalWidth:600,onEditSave:void 0,onEditCancel:void 0,onEditError:void 0},ge=e=>e===!1||e===void 0?he:e===!0?{editable:!0,editMode:`modal`,showRowActions:!0,modalTitle:`编辑数据`,modalWidth:600,onEditSave:void 0,onEditCancel:void 0,onEditError:void 0}:{editable:e.enabled!==!1&&e.mode!==`none`,editMode:e.mode||`modal`,showRowActions:e.showRowActions!==!1&&e.mode!==`none`,modalTitle:e.modalTitle||`编辑数据`,modalWidth:e.modalWidth||600,onEditSave:e.onSave,onEditCancel:e.onCancel,onEditError:e.onError},_e=e=>e?e===!0?{expandable:!0,defaultExpandedKeys:void 0,onLoadExpandData:void 0,onExpandError:void 0,renderExpandContent:void 0,rowExpandable:void 0}:{expandable:e.enabled!==!1,defaultExpandedKeys:e.defaultExpandedKeys,onLoadExpandData:e.onLoadData,onExpandError:e.onError,renderExpandContent:e.renderContent,rowExpandable:e.rowExpandable}:{expandable:!1,defaultExpandedKeys:void 0,onLoadExpandData:void 0,onExpandError:void 0,renderExpandContent:void 0,rowExpandable:void 0},ve=e=>{if(!e)return{enableSelection:!1,defaultCheckedKeys:void 0,rowCheckable:void 0,maxSelection:void 0,enableChildSelection:!1,childRowCheckable:void 0,enableParentChildLink:!1,parentChildLinkMode:`loose`};if(e===!0)return{enableSelection:!0,defaultCheckedKeys:void 0,rowCheckable:void 0,maxSelection:void 0,enableChildSelection:!1,childRowCheckable:void 0,enableParentChildLink:!1,parentChildLinkMode:`loose`};let t=e.childSelection||{},n=e.parentChildLink||{};return{enableSelection:e.enabled!==!1,defaultCheckedKeys:e.defaultCheckedKeys,rowCheckable:e.rowCheckable,maxSelection:e.maxSelection,enableChildSelection:t.enabled||!1,childRowCheckable:t.childRowCheckable,enableParentChildLink:n.enabled||!1,parentChildLinkMode:n.mode||`loose`}},W=e=>{let t={enabled:!0,page:1,pageSize:10,showSizePicker:!0,showQuickJumper:!0,pageSizes:[10,20,50,100],simple:!1,size:`medium`};return e===!1?{pagination:null}:e===!0||e===void 0?{pagination:t}:{pagination:{...t,...e}}},G=e=>e?e===!0?{dynamicRows:{enableRadioSelection:!0,enableAdd:!0,enableInsert:!0,enableDelete:!0,enableCopy:!0,enableMove:!0,enablePrint:!0}}:{dynamicRows:e}:{dynamicRows:void 0},K={striped:!0,bordered:!0,singleLine:!0,size:`medium`,maxHeight:void 0,scrollX:void 0,columnWidth:180};function q(e){return e?{striped:e.striped??K.striped,bordered:e.bordered??K.bordered,singleLine:e.singleLine??K.singleLine,size:e.size??K.size,maxHeight:e.maxHeight,scrollX:e.scrollX,columnWidth:e.columnWidth??K.columnWidth}:{...K}}const ye=e=>({showToolbar:e?.show!==!1,enableColumnSettings:e?.columnSettings!==!1}),be=e=>e?e===!0?{virtualScroll:!0,virtualItemHeight:34,virtualMaxHeight:600}:{virtualScroll:e.enabled!==!1,virtualItemHeight:e.itemHeight??34,virtualMaxHeight:e.maxHeight??600}:{virtualScroll:!1,virtualItemHeight:34,virtualMaxHeight:600},xe=e=>e?{summaryPosition:e.position??`bottom`,summaryRender:e.render}:{summaryPosition:void 0,summaryRender:void 0},Se=e=>e?e===!0?{enableColumnDrag:!0,columnDragHandleClass:void 0,columnDragAnimationDuration:150}:{enableColumnDrag:e.enabled!==!1,columnDragHandleClass:e.handleClass,columnDragAnimationDuration:e.animationDuration??150}:{enableColumnDrag:!1,columnDragHandleClass:void 0,columnDragAnimationDuration:150},Ce=e=>e?e===!0?{treeEnabled:!0,treeChildrenKey:`children`,treeIndent:16,treeDefaultExpandAll:!1}:{treeEnabled:e.enabled!==!1,treeChildrenKey:e.childrenKey??`children`,treeIndent:e.indent??16,treeDefaultExpandAll:e.defaultExpandAll??!1}:{treeEnabled:!1,treeChildrenKey:`children`,treeIndent:16,treeDefaultExpandAll:!1},we=e=>e?e===!0?{rowDrag:{enabled:!0}}:{rowDrag:e.enabled===!1?void 0:e}:{rowDrag:void 0},J=e=>e?e===!0?{crossPageSelection:{enabled:!0}}:{crossPageSelection:e.enabled===!1?void 0:e}:{crossPageSelection:void 0};function Te(e={}){return{feedback:e.feedback,locale:e.locale,...ge(e.edit),..._e(e.expand),...ve(e.selection),...W(e.pagination),...G(e.dynamicRows),...q(e.display),...ye(e.toolbar),...be(e.virtualScroll),...xe(e.summary),...Se(e.columnDrag),...Ce(e.tree),...we(e.rowDrag),...J(e.crossPageSelection),exportConfig:e.export,persistKey:e.persistKey,formatterConfig:e.formatterConfig,error:e.error,batchActions:e.batchActions}}const Ee=e=>({isNonEditable:t=>!e.editable||t.editable===!1||e.editMode===`none`,isRowEditMode:()=>[`row`,`both`].includes(e.editMode),isCellEditMode:()=>[`cell`,`both`].includes(e.editMode)});function De(e,t){return(typeof e.message==`function`?e.message():e.message)||t}function Oe(e){return e==null||e===``||Array.isArray(e)&&e.length===0}function ke(e){if(typeof e==`number`)return e;if(typeof e==`string`||Array.isArray(e))return e.length}function Ae(e,t){return e===!1?t:e instanceof Error?e.message||t:typeof e==`string`?e||t:Array.isArray(e)&&e.length>0?Ae(e[0],t):null}async function je(e,t,n,r){let i=De(e,`${n}校验失败`),a=e.transform?e.transform(t):t;if(e.required&&Oe(a))return De(e,`${n}不能为空`);if(!e.required&&Oe(a))return null;if(e.enum&&!e.enum.includes(a)||e.pattern&&!new RegExp(e.pattern).test(String(a)))return i;let o=ke(a);if(e.len!==void 0&&o!==e.len||e.min!==void 0&&o!==void 0&&o<e.min||e.max!==void 0&&o!==void 0&&o>e.max)return i;let s,c=e=>{s=e};try{if(e.validator){let t=Ae(await e.validator(e,a,c,r,{}),i);if(t)return t}if(s||e.asyncValidator&&(await e.asyncValidator(e,a,c,r,{}),s))return Ae(s,i)}catch(e){return e instanceof Error&&e.message?e.message:i}return null}function Me(e){let t=D(null),n=D({}),r=D(!1),a=D([]),o=e=>t.value===e,s=t=>{let n=e.data();return!n||!Array.isArray(n)?null:n.find(n=>e.rowKey(n)===t)},c=e=>{let o=s(e);return!o||r.value?!1:(t.value=e,n.value={[String(e)]:i(o)},a.value=[],!0)},l=async()=>{if(t.value===null||r.value)return;let i=e.data();if(!i||!Array.isArray(i))return;let a=i.findIndex(n=>e.rowKey(n)===t.value);a>-1&&await e.onCancel?.(i[a],a),t.value=null,n.value={}},u=async()=>{if(a.value=[],t.value===null)return!0;let r=e.columns?.()||[],i=n.value[String(t.value)];if(!i)return!0;let o=r.filter(e=>e.editable!==!1&&e.editProps?.rules?.length).map(e=>{let t=typeof e.key==`string`?e.key:``;if(!t)return null;let n=e.title||t,r=i[t];return Promise.all(e.editProps.rules.map(e=>je(e,r,n,i))).then(e=>{let n=e.find(Boolean);return n?{field:t,message:n}:null})}).filter(Boolean),s=(await Promise.all(o)).filter(Boolean);return a.value=s,s.length===0},d=async()=>{if(t.value===null||r.value||!await u())return;let a=t.value,o=e.data();if(!o||!Array.isArray(o))return;let s=o.findIndex(t=>e.rowKey(t)===a);if(s===-1)return;let c=n.value[String(a)];if(c){r.value=!0;try{await e.onSave?.(i(c),s),t.value=null,n.value={}}finally{r.value=!1}return{updatedData:c,rowIndex:s}}},f=e=>{if(t.value===e)return n.value[String(e)]};return{editingRowKey:t,editingData:n,isSaving:r,isEditingRow:o,startEditRow:c,cancelEditRow:l,saveEditRow:d,validateRow:u,validationErrors:a,getEditingRowData:f,updateEditingRowData:(e,t,n)=>{let r=f(e);r&&(r[t]=i(n))},findRowData:s}}function Y(e,t){let n=String(e);return`${typeof e}:${n.length}:${n}|${t.length}:${t}`}function Ne(e){let t=D({rowKey:null,columnKey:null}),n=D({}),r=D(!1),a=D(null),o=(e,n)=>t.value.rowKey===e&&t.value.columnKey===n,s=t=>{let n=e.data();return!n||!Array.isArray(n)?null:n.find(n=>e.rowKey(n)===t)},c=(e,o)=>{let c=s(e);return!c||!o||r.value?!1:(t.value={rowKey:e,columnKey:o},n.value={[Y(e,o)]:i(c[o])},a.value=null,!0)},l=async()=>{a.value=null;let{rowKey:r,columnKey:i}=t.value;if(r===null||i===null)return!0;let o=(e.columns?.()||[]).find(e=>e.key===i);if(!o||!o.editProps?.rules)return!0;let c=Y(r,i),l=n.value[c],u=o.title||i,d={...s(r),[i]:l},f=(await Promise.all(o.editProps.rules.map(e=>je(e,l,u,d)))).find(Boolean);return f?(a.value=f,!1):!0};return{editingCell:t,editingData:n,isSaving:r,isEditingCell:o,startEditCell:c,saveEditCell:async()=>{let{rowKey:a,columnKey:o}=t.value;if(a===null||o===null||r.value||!await l())return;let s=e.data();if(!s||!Array.isArray(s))return;let c=s.findIndex(t=>e.rowKey(t)===a);if(c===-1)return;let u=Y(a,o),d=n.value[u],f={...s[c],[o]:d};r.value=!0;try{await e.onSave?.(i(f),c,o),t.value={rowKey:null,columnKey:null},n.value={}}finally{r.value=!1}return{updatedData:f,rowIndex:c,columnKey:o}},cancelEditCell:()=>{let{rowKey:e,columnKey:i}=t.value;r.value||(e!==null&&i!==null&&delete n.value[Y(e,i)],t.value={rowKey:null,columnKey:null},a.value=null)},validateCell:l,cellValidationError:a,getEditingCellValue:(e,t)=>n.value[Y(e,t)],updateEditingCellValue:(e,t,r)=>{o(e,t)&&(n.value[Y(e,t)]=i(r))},findRowData:s}}function X(e){let t=D(!1),n=D(!1),r=D(null),a=D({}),o=s(()=>{if(r.value===null)return-1;let t=e.data();return Array.isArray(t)?t.findIndex(t=>e.rowKey(t)===r.value):-1});return{isModalVisible:t,isSaving:n,editingData:a,editingRowKey:r,editingRowIndex:o,startEdit:(o,s)=>{if(n.value)return!1;let c=e.data();if(!Array.isArray(c))return!1;let l=c.findIndex(t=>e.rowKey(t)===o);return l===-1?!1:(r.value=o,a.value=i(s??c[l]),t.value=!0,!0)},saveEdit:async s=>{if(n.value||r.value===null)return;let c=o.value;if(c===-1)return;let l=i(s??a.value);n.value=!0;try{return await e.onSave?.(l,c),t.value=!1,r.value=null,a.value={},{updatedData:l,rowIndex:c}}finally{n.value=!1}},cancelEdit:async()=>{if(n.value)return!1;let i=o.value;try{if(r.value!==null&&i>-1){let t=e.data();t[i]&&await e.onCancel?.(t[i],i)}}finally{t.value=!1,r.value=null,a.value={}}return!0},updateEditingData:e=>n.value?!1:(a.value=i(e),!0),resetEditingState:()=>n.value?!1:(r.value=null,a.value={},!0),isEditingRow:e=>r.value===e&&t.value,getEditingRowData:e=>r.value===e?a.value:null}}const Pe=e=>({expandedKeys:D([...e.defaultExpandedKeys||[]]),expandDataMap:D(new Map),loadingMap:D(new Map),checkedKeys:e.enableSelection?D([...e.defaultCheckedKeys||[]]):D([]),childSelections:(e.enableChildSelection,D(new Map))}),Fe=e=>{let t=s(()=>M(e.data)),n=e.rowKey;return{data:t,getRowKey:n,getChildRowKey:e.childRowKey||(e=>e.id),findRow:e=>t.value.find(t=>n(t)===e),isRowExpandable:t=>e.rowExpandable?.(t)??!0,isRowCheckable:t=>e.rowCheckable?.(t)??!0,isChildRowCheckable:(t,n)=>e.childRowCheckable?.(t,n)??!0}},Ie=(e,t,n)=>{let r=new Map,i=0,a=new Set(n.defaultExpandedKeys||[]),o=async i=>{if(!n.onLoadData)return[];let a=t.getRowKey(i),o=e.expandDataMap.value.get(a);if(o)return o;let s=r.get(a);if(s)return s;e.loadingMap.value.set(a,!0);let c=(async()=>{try{let t=await n.onLoadData(i)||[];return e.expandDataMap.value.set(a,t),n.enableChildSelection&&!e.childSelections.value.has(a)&&e.childSelections.value.set(a,[]),t}catch(e){return n.onError?.(e,i),[]}finally{r.delete(a),e.loadingMap.value.set(a,!1)}})();return r.set(a,c),c};return{loadData:o,handleRowExpand:async(r,s)=>{let c=t.getRowKey(r);if(i+=1,s){if(a.add(c),await o(r),!a.has(c))return;e.expandedKeys.value.includes(c)||(e.expandedKeys.value=[...e.expandedKeys.value,c])}else a.delete(c),e.expandedKeys.value=e.expandedKeys.value.filter(e=>e!==c);n.onExpandChange?.(e.expandedKeys.value,r,s)},expandAll:async()=>{let r=++i,s=t.data.value.filter(t.isRowExpandable);a=new Set(s.map(t.getRowKey)),await Promise.allSettled(s.map(o)),r===i&&(e.expandedKeys.value=s.map(t.getRowKey),n.onExpandChange?.(e.expandedKeys.value))},collapseAll:()=>{i+=1,a.clear(),e.expandedKeys.value=[],e.childSelections.value.clear(),n.onExpandChange?.(e.expandedKeys.value)},handleExpandChange:async r=>{let s=++i;a=new Set(r);let c=r.filter(t=>!e.expandedKeys.value.includes(t)),l=e.expandedKeys.value.filter(e=>!r.includes(e));if(await Promise.all(c.map(async e=>{let n=t.findRow(e);n&&await o(n)})),s===i){for(let t of l)e.childSelections.value.delete(t);e.expandedKeys.value=r,n.onExpandChange?.(r)}}}},Le=(e,t,n)=>{let r=s(()=>t.data.value.filter(t.isRowCheckable));return{selectAll:()=>{if(!n.enableSelection)return;let i=r.value.map(t.getRowKey),a=n.maxSelection?i.slice(0,n.maxSelection):i;e.checkedKeys.value=a;let o=r.value.filter(e=>a.includes(t.getRowKey(e)));n.onSelectionChange?.(a,o,e.childSelections.value)},clearSelection:()=>{n.enableSelection&&(e.checkedKeys.value=[],n.onSelectionChange?.([],[],e.childSelections.value))},handleSelectionChange:i=>{if(!n.enableSelection)return;let a=new Set(r.value.map(e=>t.getRowKey(e))),o=[...new Set(i)].filter(e=>a.has(e)),s=n.maxSelection?o.slice(0,Math.max(0,n.maxSelection)):o;e.checkedKeys.value=s;let c=t.data.value.filter(e=>s.includes(t.getRowKey(e)));n.onSelectionChange?.(s,c,e.childSelections.value)},selectedRowsCount:s(()=>e.checkedKeys.value.length),selectableRows:r}},Z=(e,t)=>{let n=()=>!!(t.enableParentChildLink&&t.enableSelection&&t.enableChildSelection);return{handleParentChildLink:(r,i,a)=>{if(!n())return;let o=t.parentChildLinkMode===`strict`?i.length===a&&a>0:i.length>0,s=[...e.checkedKeys.value],c=s.includes(r);o&&!c?e.checkedKeys.value=[...s,r]:!o&&c&&(e.checkedKeys.value=s.filter(e=>e!==r))},isLinkEnabled:n}},Re=(e,t,n,r)=>({totalChildSelections:s(()=>r.enableChildSelection?Array.from(e.childSelections.value.values()).reduce((e,t)=>e+t.length,0):0),clearAllSelections:()=>{e.checkedKeys.value=[],e.childSelections.value.clear(),r.onSelectionChange?.([],[],e.childSelections.value)},handleChildSelectionChange:(i,a)=>{if(!r.enableChildSelection)return;e.childSelections.value.set(i,a);let o=e.expandDataMap.value.get(i)||[],s=o.filter(e=>a.includes(t.getChildRowKey(e)));r.onChildSelectionChange?.(i,a,s),n.isLinkEnabled()&&n.handleParentChildLink(i,a,o.length)}}),ze=(e,t,n,r,i)=>{if(!i.enableChildSelection)return;let a=t.childSelections.value.get(e)||[],o=t.expandDataMap.value.get(e)||[],s=n.findRow(e);if(!s)return;let c=o.filter(e=>n.isChildRowCheckable(e,s));return{selectedKeys:a,isAllChecked:c.length>0&&c.every(e=>a.includes(n.getChildRowKey(e))),selectAll:()=>{let t=c.map(e=>n.getChildRowKey(e));r.handleChildSelectionChange(e,t)},clearAll:()=>{r.handleChildSelectionChange(e,[])}}},Be=()=>_(`div`,{class:`flex justify-center items-center py-8`},[_(V,{size:`small`}),_(`span`,{class:`ml-2 text-gray-500`},`加载中...`)]),Ve=()=>_(`div`,{class:`text-center py-8 text-gray-400`},`暂无数据`),He=e=>{if(!e.length)return[];let t=e[0];return!t||typeof t!=`object`?[]:[{title:`序号`,key:`_index`,width:60,render:(e,t)=>t+1},...Object.keys(t).filter(e=>![`id`,`key`].includes(e)).map(e=>({key:e,title:e.charAt(0).toUpperCase()+e.slice(1),width:120,ellipsis:{tooltip:!0}}))]},Ue=(e,t,n,r,i,a)=>{let o=[];return a.enableChildSelection&&o.push({type:`selection`,multiple:!0}),o.push(...He(t)),_(`div`,{class:`p-4 bg-gray-50`},[_(`div`,{class:`mb-2 text-sm text-gray-600`},`详细信息 (${t.length} 条)`),_(L,{data:t,columns:o,size:`small`,striped:!0,checkedRowKeys:n?.selectedKeys||[],rowKey:e=>r.getChildRowKey(e),onUpdateCheckedRowKeys:a.enableChildSelection?t=>{i.handleChildSelectionChange(e,t)}:void 0})])},Q=(e,t,n,r,i)=>{let a=a=>{let o=t.getRowKey(a),s=e.expandDataMap.value.get(o)||[],c=e.loadingMap.value.get(o)||!1;!s.length&&!c&&e.expandedKeys.value.includes(o)&&x(()=>{r.loadData(a)});let l=ze(o,e,t,n,i);return i.renderContent?i.renderContent(a,s,c,l):c?Be():s.length?Ue(o,s,l,t,n,i):Ve()};return{getTableColumns:e=>e.map(e=>e.type===`selection`&&i.enableSelection?{type:`selection`,disabled:e=>!t.isRowCheckable(e),multiple:!i.maxSelection||i.maxSelection>1}:e.type===`expand`&&(i.onLoadData||i.renderContent)?{type:`expand`,expandable:t.isRowExpandable,renderExpand:a}:e)}};function We(e){let t=Pe(e),n=Fe(e),r=Ie(t,n,e),i=Le(t,n,e),a=Re(t,n,Z(t,e),e),o=Q(t,n,a,r,e);return e.onSelectionChange&&e.enableSelection&&ie(()=>{if(!e.onSelectionChange)return;let r=n.data.value.filter(e=>t.checkedKeys.value.includes(n.getRowKey(e))),i=t.checkedKeys.value.length>0,a=n.data.value.length>0;(i||!a)&&e.onSelectionChange(t.checkedKeys.value,r,t.childSelections.value)}),e.defaultExpandedKeys?.length&&x(async()=>{let i=e.defaultExpandedKeys||[];if(i.length===0)return;let a=i.map(async e=>{let i=n.findRow(e);i&&!t.expandDataMap.value.has(e)&&await r.loadData(i)});await Promise.allSettled(a)}),{expandedKeys:t.expandedKeys,checkedKeys:t.checkedKeys,childSelections:t.childSelections,selectedRowsCount:i.selectedRowsCount,totalChildSelections:a.totalChildSelections,expandAll:r.expandAll,collapseAll:r.collapseAll,expandRow:async e=>{if(t.expandedKeys.value.includes(e))return;let i=n.findRow(e);i&&await r.handleRowExpand(i,!0)},handleExpandChange:r.handleExpandChange,selectAll:i.selectAll,clearSelection:i.clearSelection,clearAllSelections:a.clearAllSelections,handleSelectionChange:i.handleSelectionChange,getTableColumns:o.getTableColumns,expandDataMap:t.expandDataMap,loadingMap:t.loadingMap}}const Ge={text:`Robot Admin`,textSize:16,textColor:`rgba(128, 128, 128, 0.3)`,font:`Microsoft JhengHei`,opacity:.3,rotate:-20,position:`repeat`,xGap:200,yGap:120},Ke={scale:1,quality:.92,format:`png`,backgroundColor:`#ffffff`,logging:!1,allowTaint:!0,useCORS:!0},qe={orientation:`portrait`,paperSize:`A4`,margin:`10mm 10mm 0 10mm`,style:`@page { margin: 10mm 10mm 0 10mm; } @media print { body { margin: 0; } }`,header:``,footer:``,showModal:!1,modalMessage:`正在准备打印...`,onLoadingStart:()=>{},onLoadingEnd:()=>{},onPrintDialogClose:()=>{}};function Je(e,t,n,r){e.save(),e.translate(t/2,n/2),e.rotate(r.rotate*Math.PI/180),e.fillText(r.text,0,0),e.restore()}function Ye(e,t,n,r){[[50,50],[t-50,50],[50,n-50],[t-50,n-50]].forEach(([t,n])=>{e.save(),e.translate(t,n),e.rotate(r.rotate*Math.PI/180),e.fillText(r.text,0,0),e.restore()})}function Xe(e,t,n,r){let i=Math.sqrt(t*t+n*n),a=t/2,o=n/2;e.save(),e.translate(a,o),e.rotate(Math.atan2(n,t));let s=Math.floor(i/r.xGap),c=-i/2;for(let t=0;t<=s;t++){let n=c+t*r.xGap;e.fillText(r.text,n,0)}e.restore()}function Ze(e,t,n,r){let i=Math.ceil(t/r.xGap)+1,a=Math.ceil(n/r.yGap)+1;for(let t=0;t<a;t++)for(let n=0;n<i;n++){let i=n*r.xGap+r.xGap/2,a=t*r.yGap+r.yGap/2;e.save(),e.translate(i,a),e.rotate(r.rotate*Math.PI/180),e.fillText(r.text,0,0),e.restore()}}function Qe(e,t){let n=e.getContext(`2d`);if(!n)return e;let r={...Ge,...t},{width:i,height:a}=e;n.save(),n.globalAlpha=r.opacity,n.font=`${r.textSize}px ${r.font}`,n.fillStyle=r.textColor,n.textAlign=`center`,n.textBaseline=`middle`;let o={center:Je,corner:Ye,diagonal:Xe,repeat:Ze};return(o[r.position]||o.repeat)(n,i,a,r),n.restore(),e}async function $e(e,t={}){if(typeof window>`u`)throw Error(`截图功能仅支持浏览器环境`);let n={...Ke,...t},{default:r}=await import(`html2canvas`);return await r(e,{logging:n.logging,scale:n.scale,allowTaint:n.allowTaint,useCORS:n.useCORS,backgroundColor:n.backgroundColor,onclone:e=>{let t=e.body;t.style.transform=`scale(1)`}})}function et(e,t=`png`,n=.92){let r=`image/${t}`;return t===`png`?e.toDataURL(r):e.toDataURL(r,n)}function tt(e,t=`screenshot-${new Date().toISOString().slice(0,10)}.png`,n=`png`){let r=et(e,n),i=document.createElement(`a`);i.download=t,i.href=r,document.body.appendChild(i),i.click(),document.body.removeChild(i)}async function nt(e,t={}){if(typeof window>`u`)throw Error(`打印功能仅支持浏览器环境`);let n={...qe,...t},{default:r}=await import(`print-js`);return new Promise((t,i)=>{try{n.onLoadingStart?.(),r({printable:e,type:`image`,style:n.style,showModal:n.showModal,modalMessage:n.modalMessage,onLoadingEnd:n.onLoadingEnd,onPrintDialogClose:()=>{n.onPrintDialogClose?.(),t()}})}catch(e){i(e)}})}function rt(e,t,n){let r=0,i=0;e.forEach(e=>{let{width:n,height:a}=e;t===`horizontal`?(r+=n,i=Math.max(i,a)):(r=Math.max(r,n),i+=a)});let a=(e.length-1)*n;return t===`horizontal`?r+=a:i+=a,{totalWidth:r,totalHeight:i}}function it(e,t){let{orientation:n,spacing:r,backgroundColor:i,totalWidth:a,totalHeight:o}=t,s=document.createElement(`canvas`);s.width=a,s.height=o;let c=s.getContext(`2d`);if(!c)throw Error(`无法创建画布上下文`);c.fillStyle=i,c.fillRect(0,0,a,o);let l=0,u=0;return e.forEach(e=>{c.drawImage(e,l,u),n===`horizontal`?l+=e.width+r:u+=e.height+r}),s}function at(e,t,n){return e.length?{orientation:t.orientation||`vertical`,spacing:t.spacing||20,backgroundColor:t.backgroundColor||`#ffffff`}:(n.warning(`没有要打印的元素`),null)}async function ot(e,t,n,r){let{orientation:i,spacing:a,backgroundColor:o}=n;r(10);let s=await Promise.all(e.map(e=>$e(e,t.capture)));r(50);let{totalWidth:c,totalHeight:l}=rt(s,i,a);return r(60),it(s,{orientation:i,spacing:a,backgroundColor:o,totalWidth:c,totalHeight:l})}async function st(e,t,n,r,i){r(70),t.watermark&&Qe(e,t.watermark),r(90),await nt(et(e,t.capture?.format,t.capture?.quality),t.print),r(100),i.success(`合并打印完成,共合并 ${n} 个元素`)}function ct(){let e=t(),n=D(!1),r=D(0),i=e=>{r.value=Math.max(0,Math.min(100,e))},a=async(e,t={})=>{try{i(0),i(30);let n=await $e(e,t.capture);i(60),t.watermark&&Qe(n,t.watermark),i(90);let r=et(n,t.capture?.format||`png`,t.capture?.quality||.92);return i(100),r}catch(e){throw Error(`截图失败: ${e instanceof Error?e.message:`未知错误`}`)}},o=async(t,r={})=>{n.value=!0,i(0);try{await x();let n=await a(t,r);i(95),await nt(n,r.print),i(100),e.success(`打印完成`)}catch(t){throw e.error(`打印失败: ${t instanceof Error?t.message:`未知错误`}`,t),t}finally{n.value=!1,i(0)}},s=async(t,r,i={})=>{n.value=!0;try{await x();let n=await $e(t,i.capture);i.watermark&&Qe(n,i.watermark);let a=i.capture?.format||`png`,o=`screenshot-${new Date().toISOString().slice(0,19).replace(/:/g,`-`)}.${a}`;tt(n,r||o,a),e.success(`下载完成`)}catch(t){throw e.error(`下载失败`,t),t}finally{n.value=!1}},c=async(e,t=`Robot Admin`)=>o(e,{watermark:{text:t,position:`repeat`,textColor:`rgba(128, 128, 128, 0.3)`}}),l=async(e,t={})=>{let n=e.length;i(10);let r=e.map(async(e,r)=>{let o=await a(e,t);return i(10+(r+1)/n*70),o});return Promise.all(r)},u=async(e,t={})=>{await e.reduce(async(n,r,i)=>{await n,await nt(r,t),i<e.length-1&&await new Promise(e=>{setTimeout(()=>e(),1e3)})},Promise.resolve())};return{loading:n,progress:r,captureWithWatermark:a,printWithWatermark:o,downloadScreenshot:s,quickPrint:c,batchCapture:l,batchPrint:async(t,r={})=>{if(!t.length){e.warning(`没有要打印的元素`);return}n.value=!0;try{i(0);let n=await l(t,r);i(80),await u(n,r.print),i(100),e.success(`批量打印完成,共 ${t.length} 个元素`)}catch(t){throw e.error(`批量打印失败`,t),t}finally{n.value=!1,i(0)}},mergePrint:async(t,r={},a={})=>{let o=at(t,a,e);if(o){n.value=!0;try{await st(await ot(t,r,o,i),r,t.length,i,e)}catch(t){throw e.error(`合并打印失败`,t),t}finally{n.value=!1,i(0)}}},createPreset:(e,t)=>({use:e=>o(e,t),download:(e,n)=>s(e,n,t)}),updateProgress:i,utils:{captureElement:$e,drawWatermark:Qe,canvasToDataURL:et,downloadCanvas:tt,printImage:nt}}}const lt={table:{watermark:{text:`Robot Admin - 数据表格`,position:`repeat`,textColor:`rgba(100, 100, 100, 0.25)`,textSize:14,xGap:250,yGap:120},capture:{scale:1.2},print:{orientation:`landscape`,style:`@page { margin: 8mm; } body { font-family: Arial, sans-serif; }`}},form:{watermark:{text:`Robot Admin - 表单数据`,position:`diagonal`,textColor:`rgba(150, 150, 150, 0.2)`,textSize:16},print:{orientation:`portrait`}},report:{watermark:{text:`Robot Admin - 机密报告`,position:`center`,textColor:`rgba(200, 50, 50, 0.15)`,textSize:24},capture:{quality:.95,format:`png`}}};function ut(){return typeof crypto<`u`&&typeof crypto.randomUUID==`function`?`row_${crypto.randomUUID()}`:`row_${Date.now()}_${Math.random().toString(36).substr(2,9)}`}function dt(e,t){return typeof t==`function`?t(e):e[t]}function ft(e,t){let n=e?.()||{},r=typeof t==`string`?t:`id`;return{...n,[r]:ut()}}function pt(r,i={}){let a={enabled:!0,rowKey:`id`,enableRadioSelection:!0,enableAdd:!0,enableInsert:!0,enableDelete:!0,enableCopy:!0,enableMove:!0,enablePrint:!0,confirmDelete:!0,deleteConfirmText:``,printPreset:`table`,printTargetSelector:`.c-table-wrapper`,defaultRowData:()=>({})},o=E({...a,...j(i)});N(()=>j(i),e=>{let t=o;Object.keys(t).forEach(e=>delete t[e]),Object.assign(t,a,e)},{deep:!0});let c=t(()=>o.feedback),{t:l}=e(()=>o.locale),u=`c-table-radio-${ut()}`,d=D(null),f=D(!1),p=s(()=>d.value===null?null:r.value.find(e=>dt(e,o.rowKey)===d.value)||null),m=s(()=>p.value?r.value.findIndex(e=>e===p.value):-1),h=s(()=>m.value>0),g=s(()=>m.value>=0&&m.value<r.value.length-1),{loading:v,progress:y,printWithWatermark:b,downloadScreenshot:x,quickPrint:S}=ct(),ee=()=>{if(o.printOptions)return o.printOptions;let e=lt[o.printPreset||`table`];return o.printWatermarkText&&e.watermark?{...e,watermark:{...e.watermark,text:o.printWatermarkText}}:e},C=e=>{o.onRowChange?.(e)},w=()=>{if(!o.enabled||!o.enableAdd)return;let e=ft(o.defaultRowData,o.rowKey);C([...r.value,e]),o.onRowAdd?.(e),c.success(l(`table.addRowSuccess`))},T=()=>{if(!o.enabled||!o.enableInsert||!p.value){c.warning(l(`table.selectRowFirst`));return}let e=ft(o.defaultRowData,o.rowKey),t=[...r.value];t.splice(m.value+1,0,e),C(t),o.onRowAdd?.(e),c.success(l(`table.insertRowSuccess`))},ne=()=>{if(!o.enabled||!o.enableDelete||!p.value){c.warning(l(`table.selectDeleteRowFirst`));return}o.confirmDelete?f.value=!0:O()},O=()=>{if(!p.value)return;let e=p.value,t=m.value;C(r.value.filter((e,n)=>n!==t)),d.value=null,o.onSelectionChange?.(null,null),o.onRowDelete?.(e,t),c.success(l(`table.deleteRowSuccess`)),f.value=!1},re=()=>{if(!o.enabled||!o.enableCopy||!p.value){c.warning(l(`table.selectCopyRowFirst`));return}let e=p.value,t=typeof o.rowKey==`string`?o.rowKey:`id`,{[t]:n,...i}=e,a={...i,[t]:ut()};C([...r.value,a]),o.onRowCopy?.(e,a),c.success(l(`table.copyRowSuccess`))},A=()=>{if(!o.enabled||!o.enableMove||!h.value)return;let e=m.value,t=[...r.value],n=t[e];[t[e],t[e-1]]=[t[e-1],t[e]],C(t),o.onRowMove?.(n,e,e-1),c.success(l(`table.moveUpSuccess`))},M=()=>{if(!o.enabled||!o.enableMove||!g.value)return;let e=m.value,t=[...r.value],n=t[e];[t[e],t[e+1]]=[t[e+1],t[e]],C(t),o.onRowMove?.(n,e,e+1),c.success(l(`table.moveDownSuccess`))},ie=e=>{if(!o.enabled)return;let t=r.value.find(t=>dt(t,o.rowKey)===e);t&&(d.value=e,o.onSelectionChange?.(e,t))},P=()=>{d.value=null,o.onSelectionChange?.(null,null)},ae=async e=>{if(!e.value){c.error(l(`table.printTargetMissing`));return}let t=ee();await b(e.value,t)};return te(()=>{d.value=null,f.value=!1}),{selectedRowKey:d,selectedRowData:p,selectedRowIndex:m,canMoveUp:h,canMoveDown:g,deleteConfirmVisible:f,printLoading:v,printProgress:y,addRow:w,insertRow:T,deleteRow:ne,confirmDelete:O,copyRow:re,moveRowUp:A,moveRowDown:M,selectRow:ie,clearSelection:P,handlePrint:ae,handleDownload:async(e,t)=>{if(!e.value){c.error(l(`table.downloadTargetMissing`));return}let n=ee();await x(e.value,t,n)},handleQuickPrint:async e=>{if(!e.value){c.error(l(`table.printTargetMissing`));return}let t=o.printWatermarkText||`Robot Admin`;await S(e.value,t)},enhanceColumns:e=>{if(!o.enabled)return e;let t=[...e];return o.enabled&&o.enableRadioSelection&&t.unshift({key:`_radio_selection`,title:l(`common.select`),width:80,align:`center`,editable:!1,render:e=>{let t=dt(e,o.rowKey);return _(`div`,{class:`flex justify-center`},[_(`input`,{type:`radio`,name:u,"aria-label":l(`common.select`),checked:d.value===t,class:`cursor-pointer accent-blue-500 scale-110`,onChange:e=>{e.target.checked&&ie(t)}})])}}),t},renderToolbar:e=>{if(!o.enabled)return null;let t=[];o.enablePrint&&t.push(_(F,{loading:v.value,type:`primary`,ghost:!0,onClick:async()=>{try{let t=e??document.querySelector(o.printTargetSelector);t?await ae(k(t)):c.warning(l(`table.printTargetMissing`))}catch(e){c.error(l(`table.printTargetMissing`),e)}}},{icon:()=>_(n,{name:`mdi:printer`,title:l(`common.print`)}),default:()=>l(`common.print`)}));let r=[];return o.enableAdd&&r.push(_(F,{onClick:w,type:`primary`},{icon:()=>_(n,{name:`mdi:plus`,title:l(`table.addRow`)}),default:()=>l(`table.addRow`)})),o.enableInsert&&r.push(_(U,{disabled:!!p.value},{trigger:()=>_(F,{onClick:T,disabled:!p.value,type:`primary`,ghost:!0},{icon:()=>_(n,{name:`mdi:table-row-plus-after`,title:l(`table.insertRow`)}),default:()=>l(`table.insertRow`)}),default:()=>l(`table.selectRowFirst`)})),o.enableDelete&&r.push(_(U,{disabled:!!p.value},{trigger:()=>_(F,{onClick:ne,disabled:!p.value,type:`error`,ghost:!0},{icon:()=>_(n,{name:`mdi:delete`,title:l(`table.deleteRow`)}),default:()=>l(`table.deleteRow`)}),default:()=>l(`table.selectDeleteRowFirst`)})),o.enableCopy&&r.push(_(U,{disabled:!!p.value},{trigger:()=>_(F,{onClick:re,disabled:!p.value,type:`info`,ghost:!0},{icon:()=>_(n,{name:`mdi:content-copy`,title:l(`table.copyRow`)}),default:()=>l(`table.copyRow`)}),default:()=>l(`table.selectCopyRowFirst`)})),o.enableMove&&r.push(_(U,{disabled:h.value},{trigger:()=>_(F,{onClick:A,disabled:!h.value,type:`warning`,ghost:!0},{icon:()=>_(n,{name:`mdi:arrow-up`,title:l(`table.moveUp`)}),default:()=>l(`table.moveUp`)}),default:()=>p.value?l(`table.firstRow`):l(`table.selectRowFirst`)}),_(U,{disabled:g.value},{trigger:()=>_(F,{onClick:M,disabled:!g.value,type:`warning`,ghost:!0},{icon:()=>_(n,{name:`mdi:arrow-down`,title:l(`table.moveDown`)}),default:()=>l(`table.moveDown`)}),default:()=>p.value?l(`table.lastRow`):l(`table.selectRowFirst`)})),r.length>0&&t.push(_(I,{},()=>r)),_(`div`,{class:`dynamic-rows-toolbar mb-4 flex justify-end`},[_(fe,{},()=>t)])},renderConfirmModal:()=>_(ue,{show:f.value,"onUpdate:show":e=>{f.value=e},preset:`dialog`,title:l(`table.deleteTitle`),content:o.deleteConfirmText||l(`table.deleteRowContent`),positiveText:l(`table.confirmDeleteRow`),negativeText:l(`common.cancel`),onPositiveClick:O})}}function mt(n){let{data:r,rowKey:i,emit:a}=n,o=()=>j(n.config),c=t(()=>o().feedback),{t:l}=e(()=>o().locale),u={onSave:async(e,t,n)=>{if(!e||t<0||t>=r().length)return;let i=[...r()];i[t]={...i[t],...e};try{await o().onEditSave?.(i[t],t,n),await a(`save`,i[t],t,n),a(`update:data`,i)}catch(e){throw o().onEditError?.(e),a(`edit-error`,e),e}},onCancel:async(e,t)=>{try{await o().onEditCancel?.(e,t),await a(`cancel`,e,t)}catch(e){throw o().onEditError?.(e),a(`edit-error`,e),e}},onExpandChange:(e,t,n)=>{a(`expand-change`,e,t,n)},onSelectionChange:(e,t,n)=>{a(`selection-change`,e,t,n)},onChildSelectionChange:(e,t,n)=>{a(`child-selection-change`,e,t,n)},onRowChange:e=>{a(`update:data`,e),o().dynamicRows?.onRowChange?.(e)},onRowSelectionChange:(e,t)=>{a(`row-selection-change`,e,t),o().dynamicRows?.onSelectionChange?.(e,t)},onRowAdd:e=>{a(`row-add`,e),o().dynamicRows?.onRowAdd?.(e)},onRowDelete:(e,t)=>{a(`row-delete`,e,t),o().dynamicRows?.onRowDelete?.(e,t)},onRowCopy:(e,t)=>{a(`row-copy`,e,t),o().dynamicRows?.onRowCopy?.(e,t)},onRowMove:(e,t,n)=>{a(`row-move`,e,t,n),o().dynamicRows?.onRowMove?.(e,t,n)}},d=()=>({rowEdit:Me({data:r,rowKey:i,onSave:u.onSave,onCancel:u.onCancel,columns:n.columns}),cellEdit:Ne({data:r,rowKey:i,onSave:u.onSave,columns:n.columns}),modalEdit:X({data:r,rowKey:i,onSave:u.onSave,onCancel:u.onCancel})}),f=()=>We({data:s(()=>r()),rowKey:i,childRowKey:e=>e.id,get defaultExpandedKeys(){return o().defaultExpandedKeys},get onLoadData(){return o().onLoadExpandData},onError:(e,t)=>{let n=o().onExpandError;n?n(e,t):c.error(l(`table.loadFailed`),e)},get renderContent(){return o().renderExpandContent},get rowExpandable(){return o().rowExpandable},get enableSelection(){return o().enableSelection},get defaultCheckedKeys(){return o().defaultCheckedKeys},get rowCheckable(){return o().rowCheckable},get maxSelection(){return o().maxSelection},get enableChildSelection(){return o().enableChildSelection},get childRowCheckable(){return o().childRowCheckable},get enableParentChildLink(){return o().enableParentChildLink},get parentChildLinkMode(){return o().parentChildLinkMode},onExpandChange:u.onExpandChange,onSelectionChange:u.onSelectionChange,onChildSelectionChange:u.onChildSelectionChange}),p=()=>pt(s(()=>r()),s(()=>({...o().dynamicRows,enabled:!!o().dynamicRows,feedback:o().feedback,locale:o().locale,onRowChange:u.onRowChange,onSelectionChange:u.onRowSelectionChange,onRowAdd:u.onRowAdd,onRowDelete:u.onRowDelete,onRowCopy:u.onRowCopy,onRowMove:u.onRowMove}))),m=d(),h=f(),g=p();return{editStates:m,expandState:h,dynamicRowsState:g,stateManager:{edit:{start(e,t){let n=o().editMode;n===`modal`?m.modalEdit.startEdit(e):n===`cell`&&t?m.cellEdit.startEditCell(e,t):(n===`row`||n===`both`)&&m.rowEdit.startEditRow(e)},cancel(){m.modalEdit.isModalVisible.value?m.modalEdit.cancelEdit():m.cellEdit.editingCell.value.rowKey===null?m.rowEdit.editingRowKey.value!==null&&m.rowEdit.cancelEditRow():m.cellEdit.cancelEditCell()},async save(){m.modalEdit.isModalVisible.value?await m.modalEdit.saveEdit():m.cellEdit.editingCell.value.rowKey===null?m.rowEdit.editingRowKey.value!==null&&await m.rowEdit.saveEditRow():await m.cellEdit.saveEditCell()},isEditing(e,t){return o().editMode===`modal`?m.modalEdit.isEditingRow(e):t?m.cellEdit.isEditingCell(e,t):m.rowEdit.isEditingRow(e)},getEditingData(){return m.modalEdit.isModalVisible.value?m.modalEdit.editingData.value:m.rowEdit.editingRowKey.value===null?null:m.rowEdit.getEditingRowData(m.rowEdit.editingRowKey.value)}},expand:{async row(e){if(h){let t=[...h.expandedKeys.value];t.includes(e)||(t.push(e),h.handleExpandChange(t))}},collapse(e){if(h){let t=h.expandedKeys.value.filter(t=>t!==e);h.handleExpandChange(t)}},async toggle(e){h?.expandedKeys.value.includes(e)?this.collapse(e):await this.row(e)},async all(){await h?.expandAll()},collapseAll(){h?.collapseAll()},isExpanded(e){return h?.expandedKeys.value.includes(e)??!1}},selection:{select(e){if(h?.checkedKeys.value&&!h.checkedKeys.value.includes(e)){let t=[...h.checkedKeys.value,e];h.handleSelectionChange(t)}},unselect(e){if(h?.checkedKeys.value){let t=h.checkedKeys.value.filter(t=>t!==e);h.handleSelectionChange(t)}},all(){h?.selectAll()},clear(){h?.clearSelection()},isSelected(e){return h?.checkedKeys.value.includes(e)??!1},getSelected(){return h?.checkedKeys.value?r().filter(e=>h.checkedKeys.value.includes(i(e))):[]}},childSelection:{select(e,t){if(h?.childSelections.value){let n=h.childSelections.value.get(e)||[];if(!n.includes(t)){let r=[...n,t];h.childSelections.value.set(e,r),a(`child-selection-change`,e,r,[])}}},unselect(e,t){if(h?.childSelections.value){let n=(h.childSelections.value.get(e)||[]).filter(e=>e!==t);h.childSelections.value.set(e,n),a(`child-selection-change`,e,n,[])}},selectAll(e){if(h?.childSelections.value&&h.expandDataMap?.value){let t=h.expandDataMap.value.get(e)||[],n=t.map(e=>e.id);h.childSelections.value.set(e,n),a(`child-selection-change`,e,n,t)}},clear(e){h?.childSelections.value&&(h.childSelections.value.set(e,[]),a(`child-selection-change`,e,[],[]))},getSelected(e){if(!h?.childSelections.value||!h.expandDataMap?.value)return[];let t=h.childSelections.value.get(e)||[];return(h.expandDataMap.value.get(e)||[]).filter(e=>t.includes(e.id))}},dynamicRows:{add(){g?.addRow()},insert(){g?.insertRow()},delete(){g?.deleteRow()},copy(){g?.copyRow()},moveUp(){g?.moveRowUp()},moveDown(){g?.moveRowDown()},clearSelection(){g?.clearSelection()},getSelected(){return g?.selectedRowData.value||null},async print(e){g&&e&&await g.handlePrint(k(e))},async download(e,t){g&&e&&await g.handleDownload(k(e),t)}},clearAllSelections(){h?.clearAllSelections()}},expandedKeys:s(()=>h?.expandedKeys.value??[]),checkedKeys:s(()=>h?.checkedKeys.value??[]),eventHandlers:u}}const $={page:1,pageSize:10,showSizePicker:!0,showQuickJumper:!0,pageSizes:[10,20,50,100],simple:!1,size:`medium`};function ht(e,t){return!Number.isFinite(e)||(e??0)<=0?t:Math.max(1,Math.trunc(e))}function gt(e){let{data:t,config:n,emit:r}=e,i=D($.page),a=D($.pageSize),o=s(()=>{let e=typeof t==`function`?t():M(t);return Array.isArray(e)?e:[]}),c=s(()=>{let e=n.value;return e?.remote?Math.max(0,Math.trunc(e.total??o.value.length)):o.value.length}),l=()=>n.value?.enabled?Math.max(1,Math.ceil(c.value/a.value)):1,u=(e,t)=>{let n=Math.min(ht(e,1),l());i.value!==n&&(i.value=n,t&&r?.(`pagination-change`,n,a.value))},d=e=>u(e,!0),f=e=>{let t=ht(e,$.pageSize),n=a.value!==t;a.value=t,i.value=1,n&&r?.(`pagination-change`,1,t)},p=()=>u(1,!0),m=s(()=>{let e=n.value;if(!e?.enabled||e.remote)return o.value;let t=(i.value-1)*a.value;return o.value.slice(t,t+a.value)}),h=s(()=>{let e=n.value;return e?.enabled?{page:i.value,pageSize:a.value,itemCount:c.value,showSizePicker:e.showSizePicker??$.showSizePicker,showQuickJumper:e.showQuickJumper??$.showQuickJumper,pageSizes:e.pageSizes??$.pageSizes,simple:e.simple??$.simple,size:e.size??$.size,prefix:e=>`共 ${e.itemCount??0} 条`,suffix:e=>(e.itemCount??0)>0?`第 ${e.startIndex+1}-${e.endIndex} 条`:`暂无数据`,"onUpdate:page":d,"onUpdate:pageSize":f}:null});return N(()=>[n.value?.page,n.value?.pageSize],([e,t])=>{a.value=ht(t,$.pageSize),i.value=Math.min(ht(e,$.page),l())},{immediate:!0}),N([c,a],()=>{let e=Math.min(i.value,l());e!==i.value&&(i.value=e,r?.(`pagination-change`,e,a.value))}),{currentPage:i,currentPageSize:a,paginatedData:m,paginationConfig:h,handlePageChange:d,handlePageSizeChange:f,resetToFirstPage:p,getTotalPages:l}}function _t(r){let{actions:i,config:a,tableManager:o,rowKey:s,onRowDeleted:c,onViewDetail:l}=r,u=t(()=>a.value.feedback),{t:d}=e(()=>a.value.locale),f=e=>e===`edit`?a.value.editable&&i.value?.edit!==!1:typeof i.value?.[e]==`function`,p=e=>e!==!1&&typeof e==`function`,m=e=>e&&typeof e==`object`&&`data`in e?e.data:e,h=(e,t,r=`primary`,i)=>_(F,{size:`small`,type:r,quaternary:!0,onClick:i},()=>[_(n,{name:e,size:14,title:t})]),g=async(e,t)=>{let n=s(e),r=i.value?.edit;if(p(r)){try{await r(e,t)}catch(e){u.error(d(`table.actionFailed`,{action:d(`common.edit`)}),e)}return}a.value.editMode===`modal`?o.editStates.modalEdit.startEdit(n,{...e}):o.editStates.rowEdit.startEditRow(n)},v=async(e,t,n)=>{try{await e(t,n),u.success(d(`table.deleteSuccess`)),c?.(t,n)}catch(e){throw u.error(d(`table.deleteFailed`),e),e}},y=async(e,t)=>{let n=i.value?.delete;p(n)&&await u.confirm({title:d(`table.deleteTitle`),content:d(`table.deleteContent`),positiveText:d(`common.confirm`),negativeText:d(`common.cancel`),type:`warning`})&&await v(n,e,t)},b=async(e,t)=>{let n=i.value?.detail;if(!p(n)){l?.(e);return}try{let r=m(await n(e,t));l?.(r||e)}catch(t){u.error(d(`table.detailFailed`),t),l?.(e)}},x=e=>o.editStates.rowEdit.isEditingRow(e)?[h(`mdi:check`,d(`common.save`),`primary`,()=>void o.editStates.rowEdit.saveEditRow().catch(e=>u.error(d(`table.actionFailed`,{action:d(`common.save`)}),e))),h(`mdi:close`,d(`common.cancel`),`default`,()=>o.editStates.rowEdit.cancelEditRow())]:[h(`mdi:pencil`,d(`common.edit`),`warning`,()=>o.editStates.rowEdit.startEditRow(e))],S=(e,t)=>{let n=[];return f(`detail`)&&n.push(h(`mdi:eye`,d(`common.detail`),`info`,()=>void b(e,t))),f(`edit`)&&(a.value.editMode===`modal`||p(i.value?.edit))&&n.push(h(`mdi:pencil`,d(`common.edit`),`warning`,()=>void g(e,t))),f(`delete`)&&n.push(h(`mdi:delete`,d(`common.delete`),`error`,()=>void y(e,t).catch(()=>void 0))),n},ee=(e,t)=>{let r=i.value?.custom;if(!r?.length)return null;let a=r.filter(n=>n.show?n.show(e,t):!0);return a.length?_(R,{options:a.map(r=>{let i=typeof r.label==`function`?r.label(e,t):r.label,a=typeof r.icon==`function`?r.icon(e,t):r.icon;return{label:i,key:r.key,icon:()=>_(n,{name:a,size:14}),disabled:r.disabled?.(e,t)||!1}}),onSelect:n=>{let r=a.find(e=>e.key===n);if(!r)return;let i=typeof r.label==`function`?r.label(e,t):r.label;Promise.resolve(r.onClick(e,t)).catch(e=>u.error(d(`table.actionFailed`,{action:i}),e))}},()=>h(`mdi:dots-horizontal`,d(`table.moreActions`),`default`,()=>{})):null};return{renderActions:(e,t)=>{if(i.value?.render)return i.value.render(e,t);let n=s(e),r=[`row`,`both`].includes(a.value.editMode);if(r&&o.editStates.rowEdit.isEditingRow(n))return _(fe,{size:2,wrap:!1},()=>x(n));let c=p(i.value?.edit),l=[...r&&!c?x(n):[],...S(e,t)],u=ee(e,t);return u&&l.push(u),_(fe,{size:2,wrap:!1},()=>l)},isActionEnabled:f}}const vt=Symbol(`C_TABLE_GLOBAL_CONFIG`),yt={date:{format:`YYYY-MM-DD`},datetime:{format:`YYYY-MM-DD HH:mm:ss`},currency:{prefix:`¥`,precision:2},percent:{precision:2,suffix:`%`},number:{precision:0}};function bt(e,t){if(e==null||e===``)return`-`;let n=new Date(typeof e==`number`?e:String(e));if(Number.isNaN(n.getTime()))return String(e);let r=e=>String(e).padStart(2,`0`);return t.replace(`YYYY`,String(n.getFullYear())).replace(`MM`,r(n.getMonth()+1)).replace(`DD`,r(n.getDate())).replace(`HH`,r(n.getHours())).replace(`mm`,r(n.getMinutes())).replace(`ss`,r(n.getSeconds()))}function xt(e,t){if(e==null||e===``)return`-`;let n=Number(e);return Number.isNaN(n)?String(e):n.toLocaleString(`zh-CN`,{minimumFractionDigits:t,maximumFractionDigits:t})}const St={date:(e,t)=>bt(e,t.format??`YYYY-MM-DD`),datetime:(e,t)=>bt(e,t.format??`YYYY-MM-DD HH:mm:ss`),currency:(e,t)=>{let n=xt(e,t.precision??2);return n===`-`?`-`:`${t.prefix??`¥`}${n}${t.suffix??``}`},percent:(e,t)=>{if(e==null||e===``)return`-`;let n=Number(e);return Number.isNaN(n)?String(e):`${(n*100).toFixed(t.precision??2)}${t.suffix??`%`}`},number:(e,t)=>xt(e,t.precision??0)};function Ct(e,t,n,r){if(n.fn)return n.fn(e,t);if(n.type===`enum`)return n.mapping?n.mapping[String(e)]??String(e??`-`):String(e??`-`);let i=n.type&&St[n.type];return i?i(e,{...{...yt,...r}[n.type],...n.config}):String(e??`-`)}function wt(){return g()?v(vt,{}):{}}const Tt=(e,t)=>t===void 0?e:t&&e&&typeof t==`object`&&typeof e==`object`&&!Array.isArray(t)&&!Array.isArray(e)?{...e,...t}:t;function Et(e,t){let n=t.defaults??{},r={...n,...e};if([`edit`,`pagination`,`expand`,`selection`,`dynamicRows`,`toolbar`,`display`,`virtualScroll`,`summary`,`columnDrag`,`tree`,`rowDrag`,`crossPageSelection`,`export`,`formatterConfig`,`error`,`batchActions`].forEach(t=>{let i=Tt(n[t],e[t]);i!==void 0&&(r[t]=i)}),t.display){let e=typeof r.display==`object`?r.display:{};r.display={...t.display,...e}}if(t.pageSize&&r.pagination!==!1){let e=typeof r.pagination==`object`?r.pagination:{};e.pageSize||(r.pagination={...e,pageSize:t.pageSize})}return r}const Dt={number:le,switch:pe,input:z,email:z,mobile:z,date:e=>_(oe,{...e,type:`date`,format:`yyyy-MM-dd`}),select:e=>_(B,{...e,options:e.options||[]}),textarea:e=>_(z,{...e,type:`textarea`,rows:3})},Ot={number:`inputNumber`,date:`datePicker`,textarea:`textarea`,select:`select`,switch:`switch`},kt=e=>e.map(e=>{let t=e.required?[{required:!0,message:`请输入${e.title}`,trigger:[`blur`,`input`],validator:async(t,n)=>{if(!n&&n!==0&&n!==!1)throw Error(`请输入${e.title}`)}}]:[];return{prop:e.key,label:e.title||e.key,type:Ot[e.editType||`input`]||`input`,placeholder:`请输入${e.title}`,rules:t,attrs:e.editProps||{},layout:{span:1},show:!0}});function At(e,t,n){if(e.editRender)return e.editRender(t,{},0);let r=e,i={value:t,"onUpdate:value":n,placeholder:`请输入${r.title??``}`,style:{width:`100%`},...e.editProps};return _(Dt[e.editType||`input`]||Dt.input,i)}function jt(e,t,n,r,i){return e.render?e.render(t,n)??String(r??``):e.formatter?Ct(r,t,e.formatter,i):String(r??``)}function Mt(e,t,r,i,a){let o=(e,t,r)=>_(`button`,{class:`cell-action-btn cell-action-${e}`,title:t,type:`button`,onClick:e=>{e.stopPropagation(),e.preventDefault(),r(e)}},[_(n,{name:`mdi:${e===`save`?`check`:`close`}`,title:e===`save`?`保存`:`取消`,size:12})]);return _(`div`,{class:`cell-editing-container`},[_(`div`,{class:`cell-editing-input`},[At(e,t,r)]),_(`div`,{class:`cell-editing-actions`},[o(`save`,`保存`,i),o(`cancel`,`取消`,a)])])}function Nt(e,t,r,i,a,o){let s;return s=e.render?e.render(t,r)??String(i??``):e.formatter?Ct(i,t,e.formatter,o):String(i??``),_(`div`,{class:`cell-edit-wrapper`},[_(`span`,{class:`cell-value`},s),_(n,{name:`mdi:square-edit-outline`,title:`编辑`,class:`cell-edit-icon`,size:14,clickable:!0,onClick:e=>{e.stopPropagation(),a()}})])}function Pt(e){let{rawColumns:t,config:n,columnWidth:r,rowKey:i,tableManager:a,actionsRenderer:o,editModeChecker:c,showActionsColumn:l}=e,u=D([]),d=D(!1),f=e=>{let t=u.value.find(e=>e.key===`_actions`),n=e.filter(e=>e.key!==`_actions`);u.value=l.value?[...n,t||{key:`_actions`,title:`操作`,width:180,editable:!1,visible:!0,fixed:`right`}]:n};N([t,l],([e])=>{e?.length?f(e):u.value=[]},{deep:!0,immediate:!0});let p=(e,t,r,i)=>{let o=e.key??``,s=t[o],{isEditingCell:c,getEditingCellValue:l,updateEditingCellValue:u,saveEditCell:d,cancelEditCell:f,startEditCell:p}=a.editStates.cellEdit;return c(i,o)?Mt(e,l(i,o)??s,e=>u(i,o,e),()=>d(),()=>f()):Nt(e,t,r,s,()=>p(i,o),n.value.formatterConfig)},m=(e,t,r)=>{let o=e.key??``,s=t[o],l=i(t),u=c.value;return u.isNonEditable(e)?jt(e,t,r,s,n.value.formatterConfig):u.isRowEditMode()&&a.editStates.rowEdit.isEditingRow(l)?At(e,a.editStates.rowEdit.getEditingRowData(l)?.[o]??s,e=>a.editStates.rowEdit.updateEditingRowData(l,o,e)):u.isCellEditMode()?p(e,t,r,l):jt(e,t,r,s,n.value.formatterConfig)},h=e=>{let t=e.width||r||180;return typeof t==`number`?t:180},g=e=>{let t=e;return{key:`_index`,title:t.title||`序号`,width:typeof(t.width||50)==`number`&&t.width||50,titleAlign:`center`,align:`center`,render:(e,t)=>t+1,fixed:e.fixed}},_=e=>{let t=e,n={...t,width:h(e),titleAlign:t.titleAlign||`center`,align:t.align||`center`,render:e.render||((t,n)=>m(e,t,n))};return e.fixed&&(n.fixed=e.fixed),e.resizable&&typeof n.width==`number`&&(n.resizable=!0,n.minWidth=e.minWidth||80,n.maxWidth=e.maxWidth||500),n};return{reactiveColumns:u,showSettingsPanel:d,computedColumns:s(()=>{let e=u.value.filter(e=>{let t=e;return t.visible!==!1&&t.key!==`_actions`}).map(e=>e.type===`index`?g(e):_(e));if(a.dynamicRowsState&&(e=a.dynamicRowsState.enhanceColumns(e)),a.expandState&&(n.value.expandable||n.value.enableSelection)&&(e=a.expandState.getTableColumns(e)),l.value){let t=u.value.find(e=>e.key===`_actions`);e.push({key:`_actions`,title:`操作`,width:t?.width??180,className:`c-table-actions-column`,align:`center`,titleAlign:`center`,render:o,fixed:t?.fixed})}return e}),computedScrollX:s(()=>{if(e.scrollX!==void 0)return e.scrollX;if(u.value.some(e=>{let t=e;return t.fixed&&t.visible!==!1}))return u.value.filter(e=>e.visible!==!1).reduce((e,t)=>e+h(t),0)+200}),handleColumnChange:e=>{u.value=e.map(e=>{let t=e;return{...e,visible:t.visible!==!1,fixed:e.fixed,width:t.width||r,align:t.align||`center`,titleAlign:t.titleAlign||`center`}})}}}function Ft(e){let{data:t,onReorder:n,onSort:r}=e,i=D(!1),a=null,o=0,s=!1,c=()=>{a?.destroy(),a=null,i.value=!1},l=async l=>{let u=++o;c();let d=j(e.config);if(!(!d?.enabled||!l||s))try{let{default:e}=await import(`sortablejs`);if(s||u!==o)return;let c=l.querySelector(`.n-data-table-tbody`);if(!c)return;a=new e(c,{animation:d.animationDuration??150,handle:d.handleSelector,ghostClass:d.ghostClass??`row-drag-ghost`,chosenClass:d.chosenClass??`row-drag-chosen`,onStart:()=>{i.value=!0},onEnd:e=>{if(i.value=!1,e.oldIndex==null||e.newIndex==null||e.oldIndex===e.newIndex)return;let a=[...t.value],[o]=a.splice(e.oldIndex,1);o&&(a.splice(e.newIndex,0,o),n?.(a),r?.(o,e.oldIndex,e.newIndex))}})}catch{}},u=()=>{o+=1,c()};return te(()=>{s=!0,u()}),{initRowDrag:l,destroyRowDrag:u,isDragging:i}}function It(e){let{allData:t,rowKey:n}=e,r=D(new Set),i=()=>{let t=j(e.config)?.maxSelection;return Number.isFinite(t)&&(t??0)>0?Math.trunc(t):void 0},a=s(()=>r.value.size),o=e=>e.map(e=>n(e)).filter(e=>r.value.has(e)),c=(t,a)=>{if(!j(e.config)?.enabled)return;let o=new Set(r.value);for(let e of a)o.delete(n(e));for(let e of t){let t=i();if(t&&o.size>=t)break;o.add(e)}r.value=o},l=()=>{if(!j(e.config)?.enabled)return;let a=[...new Set(t.value.map(e=>n(e)))],o=i();r.value=new Set(o?a.slice(0,o):a)},u=a=>{if(!j(e.config)?.enabled||!t.value.some(e=>n(e)===a))return!1;if(r.value.has(a))return!0;let o=i();return o&&r.value.size>=o?!1:(r.value=new Set([...r.value,a]),!0)},d=e=>{if(!r.value.has(e))return;let t=new Set(r.value);t.delete(e),r.value=t},f=()=>{r.value=new Set};return N(t,e=>{let t=new Set(e.map(e=>n(e))),i=new Set([...r.value].filter(e=>t.has(e)));i.size!==r.value.size&&(r.value=i)}),N(()=>[j(e.config)?.enabled,i()],([e,t])=>{if(!e){f();return}t&&r.value.size>t&&(r.value=new Set([...r.value].slice(0,t)))}),{selectedKeys:r,selectedCount:a,getPageCheckedKeys:o,handlePageSelectionChange:c,selectAll:l,select:u,unselect:d,clearAll:f,getSelectedRows:()=>t.value.filter(e=>r.value.has(n(e))),isSelected:e=>r.value.has(e)}}function Lt(e,t){return e.filter(e=>typeof e.key!=`string`||e.key.startsWith(`_`)||e.type===`selection`||e.type===`expand`?!1:t?.length?t.includes(e.key):e.visible!==!1)}function Rt(e,t,n){let r=e[t.key];return t.formatter?Ct(r,e,t.formatter,n):r==null?``:typeof r==`boolean`?r?`是`:`否`:String(r)}function zt(e,t,n){let r=n&&/^[=+\-@\t\r]/.test(e)?`'${e}`:e;return r.includes(t)||r.includes(`"`)||r.includes(`
|
|
2
|
-
`)||r.includes(`\r`)?`"${r.replace(/"/g,`""`)}"`:r}function
|
|
3
|
-
`)],{type:`text/csv;charset=utf-8;`}),`${Bt(n.filename)}.csv`)}async function Ht(e,t,n){let r=Lt(t,n.columnKeys),i;try{i=await import(`xlsx`)}catch(r){n.onFallback?.(`xlsx`,`csv`,r),Vt(e,t,{...n,format:`csv`});return}let a=r.map(e=>e.title??e.key??``),o=e.map(e=>r.map(t=>Rt(e,t,n.formatterConfig))),s=n.includeHeader===!1?o:[a,...o],c=i.utils.aoa_to_sheet(s),l=i.utils.book_new();i.utils.book_append_sheet(l,c,`Sheet1`),i.writeFile(l,`${Bt(n.filename)}.xlsx`)}function Ut(e,t){let n=URL.createObjectURL(e),r=document.createElement(`a`);r.href=n,r.download=t,r.style.display=`none`,document.body.appendChild(r),r.click(),document.body.removeChild(r),setTimeout(()=>URL.revokeObjectURL(n),0)}async function Wt(e,t,n={}){n.format===`xlsx`?await Ht(e,t,n):Vt(e,t,n)}const Gt=e=>[{label:e.fixed?`✓ 取消固定`:`不固定`,key:`none`,disabled:!e.fixed},{label:e.fixed===`left`?`✓ 固定左侧`:`固定左侧`,key:`left`,disabled:!1},{label:e.fixed===`right`?`✓ 固定右侧`:`固定右侧`,key:`right`,disabled:!1}],Kt=[`_actions`],qt=[`selection`,`expand`],Jt=e=>Kt.includes(e.key)||qt.includes(e.type),Yt={class:`column-management-tab`},Xt={class:`search-row`},Zt={class:`resizable-control`},Qt={class:`top-actions-bar`},$t={class:`stats-info`},en={class:`quick-actions`},tn=[`draggable`,`onDragstart`,`onDragover`,`onDrop`],nn={class:`column-info`},rn={class:`column-controls`},an={class:`column-details`},on={class:`column-actions`},sn={class:`drag-controls`};var cn=r(h({name:`ColumnSettings`,__name:`index`,props:{columns:{},persistKey:{}},emits:[`change`],setup(e,{emit:t}){let r=e,i=t,a=e=>{if(!r.persistKey)return[...e];try{let t=localStorage.getItem(`c_table_cols_${r.persistKey}`);if(!t)return[...e];let n=JSON.parse(t);if(!Array.isArray(n))return[...e];let i=new Map(n.map((e,t)=>[e.key,{...e,order:t}])),a=e.map(e=>{let t=i.get(e.key);return t?{...e,visible:t.visible??e.visible,width:t.width??e.width,fixed:t.fixed??e.fixed}:{...e}});return a.sort((e,t)=>(i.get(e.key)?.order??999)-(i.get(t.key)?.order??999)),a}catch{return[...e]}},f=e=>{if(r.persistKey)try{let t=e.map(e=>({key:e.key,visible:e.visible,width:e.width,fixed:e.fixed}));localStorage.setItem(`c_table_cols_${r.persistKey}`,JSON.stringify(t))}catch{}},h=D(a(r.columns)),g=D(``),_=D(),v=D(null),y=D(null),b=D(!1);C(()=>{b.value=h.value.some(e=>e.resizable===!0),r.persistKey&&i(`change`,[...h.value])}),N(()=>r.columns,e=>{h.value=a(e),b.value=h.value.some(e=>e.resizable===!0)},{deep:!0});let x=s(()=>{if(!g.value)return h.value;let e=g.value.toLowerCase();return h.value.filter(t=>String(t.title??``).toLowerCase().includes(e)||String(t.key??``).toLowerCase().includes(e))}),te=s(()=>h.value.filter(e=>e.visible!==!1).length),w=s(()=>h.value.length),E=e=>{h.value.forEach(t=>{t.key!==`_actions`&&(t.visible=e)}),L()},O=()=>E(!0),re=()=>E(!1),k=e=>{let t=x.value[e];return h.value.findIndex(e=>e.key===t.key)},j=(e,t)=>{let n=k(e);n!==-1&&(t(h.value[n]),L())},ie=(e,t)=>{j(e,e=>{e.visible=t})},I=(e,t)=>{j(e,e=>{e.fixed=t===`none`?void 0:t})},L=()=>{f(h.value),i(`change`,[...h.value])},oe=()=>{h.value=[...r.columns],L()},se=e=>{h.value.forEach(t=>{Jt(t)||(t.resizable=e,e&&(t.minWidth=t.minWidth||80,t.maxWidth=t.maxWidth||500))}),L()},ce=(e,t)=>{let n=k(e),r=k(t);if(n!==-1&&r!==-1){let[e]=h.value.splice(n,1);h.value.splice(r,0,e),L()}},le=(e,t)=>{if(x.value[e].key===`_actions`){t.preventDefault();return}v.value=e,t.dataTransfer&&(t.dataTransfer.effectAllowed=`move`)},ue=(e,t)=>{t.preventDefault(),!(v.value===null||x.value[e].key===`_actions`)&&(y.value=e,t.dataTransfer&&(t.dataTransfer.dropEffect=`move`))},de=e=>{v.value===null||x.value[e].key===`_actions`||(ce(v.value,e),v.value=null,y.value=null)},B=()=>{v.value=null,y.value=null};return(e,t)=>(T(),u(`div`,Yt,[l(` 搜索框和列宽调整开关 `),d(`div`,Xt,[m(M(z),{value:g.value,"onUpdate:value":t[0]||=e=>g.value=e,placeholder:`搜索列名...`,clearable:``,class:`search-input`},{prefix:P(()=>[m(n,{name:`mdi:magnify`})]),_:1},8,[`value`]),d(`div`,Zt,[m(n,{name:`mdi:arrow-split-vertical`,size:`14`,title:b.value?`开启后可拖拽列边界调整宽度`:`允许调整列宽`},null,8,[`title`]),m(M(H),{style:{fontSize:`12px`,marginLeft:`4px`}},{default:P(()=>[...t[2]||=[p(` 列宽调整 `,-1)]]),_:1}),m(M(pe),{value:b.value,"onUpdate:value":[t[1]||=e=>b.value=e,se],size:`small`,style:{"margin-left":`6px`}},null,8,[`value`])])]),l(` 顶部操作栏:统计信息和快捷操作按钮 `),d(`div`,Qt,[d(`div`,$t,[m(M(H),{depth:`3`,style:{fontSize:`13px`}},{default:P(()=>[p(` 已选 `+A(te.value)+` / 总共 `+A(w.value)+` 列 `,1)]),_:1})]),d(`div`,en,[m(M(fe),{size:6},{default:P(()=>[m(M(F),{size:`tiny`,onClick:O},{default:P(()=>[...t[3]||=[p(` 全选 `,-1)]]),_:1}),m(M(F),{size:`tiny`,onClick:re},{default:P(()=>[...t[4]||=[p(` 全不选 `,-1)]]),_:1}),m(M(F),{size:`tiny`,onClick:oe},{default:P(()=>[...t[5]||=[p(` 重置 `,-1)]]),_:1})]),_:1})])]),l(` 列列表 `),d(`div`,{ref_key:`listRef`,ref:_,class:`column-list`},[(T(!0),u(o,null,ne(x.value,(e,r)=>(T(),u(`div`,{key:e.key,class:S([`column-item`,{disabled:e.key===`_actions`,"fixed-left":e.fixed===`left`,"fixed-right":e.fixed===`right`}]),draggable:e.key!==`_actions`,onDragstart:e=>le(r,e),onDragover:e=>ue(r,e),onDragend:B,onDrop:e=>de(r)},[d(`div`,nn,[d(`div`,rn,[m(n,{name:`mdi:drag`,size:`16`,class:S([`drag-handle`,{disabled:e.key===`_actions`}])},null,8,[`class`]),m(M(ae),{checked:e.visible!==!1,disabled:e.key===`_actions`,"onUpdate:checked":e=>ie(r,e)},null,8,[`checked`,`disabled`,`onUpdate:checked`])]),d(`div`,an,[m(M(fe),{align:`center`,size:6},{default:P(()=>[m(M(H),{strong:``,style:{fontSize:`13px`}},{default:P(()=>[p(A(e.title||e.key),1)]),_:2},1024),e.fixed===`left`?(T(),c(M(me),{key:0,size:`tiny`,type:`info`},{default:P(()=>[...t[6]||=[p(` 左固定 `,-1)]]),_:1})):l(`v-if`,!0),e.fixed===`right`?(T(),c(M(me),{key:1,size:`tiny`,type:`warning`},{default:P(()=>[...t[7]||=[p(` 右固定 `,-1)]]),_:1})):l(`v-if`,!0)]),_:2},1024),m(M(H),{depth:`3`,style:{fontSize:`11px`}},{default:P(()=>[p(A(e.key),1)]),_:2},1024)])]),d(`div`,on,[d(`div`,sn,[m(n,{name:`mdi:chevron-up`,size:`14`,title:`上移`,clickable:r!==0,class:S({disabled:r===0}),onClick:e=>r!==0&&ce(r,r-1)},null,8,[`clickable`,`class`,`onClick`]),m(n,{name:`mdi:chevron-down`,size:`14`,title:`下移`,clickable:r!==x.value.length-1,class:S({disabled:r===x.value.length-1}),onClick:e=>r!==x.value.length-1&&ce(r,r+1)},null,8,[`clickable`,`class`,`onClick`])]),m(M(R),{options:M(Gt)(e),onSelect:e=>I(r,e)},{default:P(()=>[m(n,{name:`mdi:pin`,size:`14`,title:`固定列`,clickable:``,style:ee({color:e.fixed?`var(--n-primary-color)`:void 0})},null,8,[`style`])]),_:2},1032,[`options`,`onSelect`])])],42,tn))),128))],512)]))}}),[[`__scopeId`,`data-v-022be568`]]);function ln(e){return e}function un(e){return e}function dn(e,t){let n=new Map,r=[];return e.forEach((e,i)=>{let a;try{a=t(e)}catch(t){r.push({type:`error`,row:e,index:i,cause:t});return}if(a==null||a===``){r.push({type:`missing`,row:e,index:i});return}let o=n.get(a);if(o!==void 0){r.push({type:`duplicate`,row:e,index:i,key:a,firstIndex:o});return}n.set(a,i)}),r}const fn={key:1,class:`table-toolbar`},pn={class:`toolbar-left`},mn={class:`toolbar-right`},hn={key:2,class:`batch-actions-bar`},gn={class:`batch-info`},_n={key:3,class:`table-error-state`},vn={class:`error-content`},yn={class:`error-message`};var bn=r(h({name:`C_Table`,inheritAttrs:!1,__name:`index`,props:{columns:{},data:{},loading:{},rowKey:{type:[String,Function],default:`id`},config:{default:()=>({})},crud:{}},emits:[`pagination-change`,`row-delete`,`batch-action-error`,`row-key-error`,`expand-change`,`selection-change`,`child-selection-change`,`parent-child-link-change`,`update:data`,`save`,`cancel`,`edit-error`,`row-add`,`row-copy`,`row-move`,`row-selection-change`,`view-detail`,`column-change`],setup(r,{expose:h,emit:g}){let _=r,v=g,S=(e,...t)=>{if(v(e,...t),_.crud)return{save:_.crud.save,cancel:_.crud.handleCancel,"pagination-change":_.crud.handlePaginationChange,"row-delete":_.crud.handleRowDelete,"view-detail":_.crud.detail?.show}[e]?.(...t)},ee=wt(),w=e=>typeof _.rowKey==`function`?_.rowKey(e):e[_.rowKey],E=s(()=>{let e=_.config||{};if(_.crud){let t={};_.crud.actions&&(t.actions=_.crud.actions.value),_.crud.pagination&&(t.pagination=_.crud.pagination.value??void 0),e={...t,...e}}return Et(e,ee)}),k=s(()=>_.columns??_.crud?.columns.value??[]),j=s(()=>Te(E.value)),ie=t(()=>j.value.feedback),{t:I}=e(()=>j.value.locale),ae=s(()=>Ee(j.value)),oe=e=>e&&typeof e==`object`&&`value`in e?e.value:e,R=s(()=>oe(_.data)??_.crud?.data.value??[]),z=s(()=>oe(_.loading)??_.crud?.loading.value??!1),le=``;N(()=>R.value.map(e=>{try{return w(e)}catch{return}}),()=>{if(E.value.validateRowKeys===!1){le=``;return}let e=dn(R.value,w);if(e.length===0){le=``;return}let t=e.map(e=>[e.type,e.index,e.firstIndex,String(e.key)].join(`:`)).join(`|`);t!==le&&(le=t,ie.warning(I(`table.invalidRowKeys`,{count:e.length})),v(`row-key-error`,e))},{immediate:!0});let B=gt({data:R,config:s(()=>j.value.pagination),emit:S}),V=mt({config:j,data:()=>R.value,rowKey:w,emit:S,columns:()=>k.value}),pe=_t({actions:s(()=>E.value.actions||{}),config:j,tableManager:V,rowKey:w,onRowDeleted:(e,t)=>v(`row-delete`,e,t),onViewDetail:e=>S(`view-detail`,e)}),me=s(()=>{let{actions:e}=E.value;return!!(j.value.showRowActions||e?.delete||e?.detail||e?.custom?.length||e?.render)}),H=Pt({rawColumns:k,config:j,columnWidth:j.value.columnWidth,scrollX:j.value.scrollX,rowKey:w,tableManager:V,actionsRenderer:pe.renderActions,editModeChecker:ae,showActionsColumn:me}),{showSettingsPanel:U,reactiveColumns:he,computedColumns:ge,computedScrollX:_e}=H,ve=Ft({data:B.paginatedData,rowKey:w,config:s(()=>j.value.rowDrag),onReorder:e=>{let t=j.value.pagination;if(!t?.enabled||t.remote){S(`update:data`,e);return}let n=(B.currentPage.value-1)*B.currentPageSize.value,r=[...R.value];r.splice(n,e.length,...e),S(`update:data`,r)},onSort:(e,t,n)=>{let r=j.value.pagination?.enabled&&!j.value.pagination.remote?(B.currentPage.value-1)*B.currentPageSize.value:0;v(`row-move`,e,t+r,n+r)}}),W=It({allData:R,rowKey:w,config:s(()=>j.value.crossPageSelection)}),G=s(()=>j.value.crossPageSelection?.enabled===!0),K=s(()=>G.value?W.selectedCount.value:V.checkedKeys?.value?.length??0),q=D(new Set),ye=async e=>{if(q.value.has(e.key))return;let t=G.value?[...W.selectedKeys.value]:V.checkedKeys?.value??[],n=G.value?W.getSelectedRows():R.value.filter(e=>t.includes(w(e)));q.value=new Set(q.value).add(e.key);try{await e.onClick(t,n),j.value.batchActions?.clearSelectionOnSuccess&&be()}catch(t){j.value.batchActions?.onError?.(t,e.key),v(`batch-action-error`,t,e.key)}finally{let t=new Set(q.value);t.delete(e.key),q.value=t}},be=()=>{G.value?W.clearAll():V.stateManager.selection.clear()},xe=s(()=>G.value?W.getPageCheckedKeys(B.paginatedData.value):null),Se=e=>{G.value&&W.handlePageSelectionChange(e,B.paginatedData.value),V.expandState?.handleSelectionChange?.(e)},Ce=async()=>{let e=j.value.exportConfig??{};await Wt(R.value,k.value,{...e,formatterConfig:j.value.formatterConfig})},we=s(()=>{let e=j.value;if(e.summaryRender)return t=>{let n=e.summaryRender(t);return ge.value.map(e=>{let t=n[e.key];return t?{value:t.value,colSpan:t.colSpan??1}:{value:``}})}}),J=D(),De=null,Oe=0,ke=()=>{Oe+=1,De?.destroy(),De=null},Ae=async()=>{let e=++Oe;if(De?.destroy(),De=null,!(!j.value.enableColumnDrag||!J.value))try{let{default:t}=await import(`sortablejs`);if(e!==Oe||!J.value)return;let n=J.value.querySelector(`.n-data-table-thead tr`);if(!n)return;De=new t(n,{animation:j.value.columnDragAnimationDuration,handle:j.value.columnDragHandleClass?`.${j.value.columnDragHandleClass}`:void 0,filter:`.c-table-actions-column`,preventOnFilter:!0,ghostClass:`column-drag-ghost`,onEnd:e=>{if(e.oldIndex==null||e.newIndex==null)return;let t=[...he.value],n=t.filter(e=>e.visible!==!1&&e.key!==`_actions`),r=n[e.oldIndex],i=n[e.newIndex];if(!r||!i||r===i)return;let a=t.indexOf(r),o=t.indexOf(i);t.splice(a,1),t.splice(o,0,r),H.handleColumnChange(t),v(`column-change`,t)}})}catch{}},je=D(),Me=s(()=>({striped:j.value.striped,bordered:j.value.bordered,singleLine:j.value.singleLine,size:j.value.size,maxHeight:j.value.maxHeight})),Y=D(),Ne=D(!1),X=D({}),Pe=s({get:()=>V.editStates.modalEdit.isModalVisible.value,set:e=>{V.editStates.modalEdit.isModalVisible.value=e}}),Fe=s(()=>k.value.filter(e=>e.editable!==!1)),Ie=s(()=>`edit-form-${V.editStates.modalEdit.editingRowKey.value??`new`}`),Le=s(()=>kt(Fe.value));N(()=>V.editStates.modalEdit.editingData.value,e=>{e&&Object.keys(e).length>0&&(X.value=i(e))},{immediate:!0,deep:!0});let Z=null;N(Pe,e=>{e&&Z&&(clearTimeout(Z),Z=null),e||(Z&&clearTimeout(Z),Z=setTimeout(()=>{X.value={},Z=null},300))});let Re=async()=>{if(Y.value){Ne.value=!0;try{await Y.value.validate()}catch{Ne.value=!1;return}try{await V.editStates.modalEdit.saveEdit(X.value)}finally{Ne.value=!1}}},ze=()=>{X.value={},V.editStates.modalEdit.cancelEdit()},Be=e=>{H.handleColumnChange(e),v(`column-change`,H.reactiveColumns.value)},{edit:Ve,expand:He,selection:Ue,dynamicRows:Q}=V.stateManager,We={startEdit:Ve.start,cancelEdit:Ve.cancel,saveEdit:Ve.save,expandRow:He.row,collapseRow:He.collapse,toggleExpand:He.toggle,expandAll:He.all,collapseAll:He.collapseAll,selectRow:e=>G.value?W.select(e):(Ue.select(e),Ue.isSelected(e)),unselectRow:e=>{G.value?W.unselect(e):Ue.unselect(e)},selectAll:()=>{G.value?W.selectAll():Ue.all()},clearSelection:be,isRowSelected:e=>G.value?W.isSelected(e):Ue.isSelected(e),clearAllSelections:()=>{W.clearAll(),V.stateManager.clearAllSelections()},selectChildRow:V.stateManager.childSelection.select,unselectChildRow:V.stateManager.childSelection.unselect,selectAllChildren:V.stateManager.childSelection.selectAll,clearChildrenSelection:V.stateManager.childSelection.clear,getChildSelectedRows:V.stateManager.childSelection.getSelected,addRow:Q.add,insertRow:Q.insert,deleteRow:Q.delete,copyRow:Q.copy,moveRowUp:Q.moveUp,moveRowDown:Q.moveDown,clearRowSelection:Q?.clearSelection,getSelectedRowData:Q.getSelected,printTable:e=>Q.print(e??J.value),downloadTableScreenshot:(e,t)=>Q.download(e??J.value,t),resetToFirstPage:B.resetToFirstPage,getTotalPages:B.getTotalPages,getSelectedRows:()=>G.value?W.getSelectedRows():Ue.getSelected(),getEditingData:Ve.getEditingData,isEditing:Ve.isEditing,isExpanded:He.isExpanded,getManager:()=>V.stateManager,exportData:Ce,crossPageSelection:{enabled:G,selectedKeys:W.selectedKeys,selectedCount:W.selectedCount,select:W.select,unselect:W.unselect,selectAll:W.selectAll,clearAll:W.clearAll,getSelectedRows:W.getSelectedRows}};return h(We),C(()=>{let e=_.crud?.tableRef;e&&(e.value=We),Ae(),J.value&&ve.initRowDrag(J.value)}),N([()=>j.value.enableColumnDrag,()=>j.value.columnDragHandleClass,()=>z.value,()=>ge.value.length],async()=>{await x(),await Ae()},{immediate:!0,flush:`post`}),N([()=>j.value.rowDrag,()=>z.value,()=>B.paginatedData.value.length,()=>B.currentPage.value],async()=>{await x(),J.value&&await ve.initRowDrag(J.value)},{immediate:!0,deep:!0,flush:`post`}),te(()=>{Z&&clearTimeout(Z),ke(),ve.destroyRowDrag()}),(e,t)=>(T(),u(`div`,{ref_key:`tableWrapperRef`,ref:J,class:`c-table-wrapper`},[l(` 动态行工具栏 `),j.value.dynamicRows&&M(V).dynamicRowsState?(T(),c(re(M(V).dynamicRowsState.renderToolbar(J.value)),{key:0})):l(`v-if`,!0),l(` 表格工具栏 `),j.value.showToolbar?(T(),u(`div`,fn,[d(`div`,pn,[O(e.$slots,`toolbar-left`,{},void 0,!0)]),d(`div`,mn,[O(e.$slots,`toolbar-right`,{},void 0,!0),j.value.exportConfig?(T(),c(n,{key:0,name:`mdi:download`,size:`18`,title:M(I)(`table.export`),clickable:``,class:`column-settings-btn`,onClick:t[0]||=e=>Ce()},null,8,[`title`])):l(`v-if`,!0),j.value.enableColumnSettings?(T(),c(n,{key:1,name:`mdi:cog`,size:`18`,title:M(I)(`table.settings`),clickable:``,class:`column-settings-btn`,onClick:t[1]||=e=>U.value=!0},null,8,[`title`])):l(`v-if`,!0)])])):l(`v-if`,!0),l(` 批量操作栏 `),j.value.batchActions?.enabled&&K.value>0?(T(),u(`div`,hn,[d(`span`,gn,A(M(I)(`table.selectedCount`,{count:K.value})),1),m(M(fe),{size:8},{default:P(()=>[(T(!0),u(o,null,ne(j.value.batchActions.actions||[],e=>(T(),c(M(F),{key:e.key,type:e.type||`default`,size:`small`,loading:q.value.has(e.key),disabled:q.value.has(e.key),onClick:t=>ye(e)},f({default:P(()=>[p(` `+A(e.label),1)]),_:2},[e.icon?{name:`icon`,fn:P(()=>[m(n,{name:e.icon,size:`14`},null,8,[`name`])]),key:`0`}:void 0]),1032,[`type`,`loading`,`disabled`,`onClick`]))),128)),m(M(F),{size:`small`,onClick:be},{default:P(()=>[p(A(M(I)(`table.cancelSelection`)),1)]),_:1})]),_:1})])):l(`v-if`,!0),l(` 错误状态 `),j.value.error?.show?(T(),u(`div`,_n,[O(e.$slots,`error`,{error:j.value.error},()=>[d(`div`,vn,[m(n,{name:`mdi:alert-circle-outline`,size:`48`}),d(`p`,yn,A(j.value.error.message||M(I)(`table.loadFailed`)),1),j.value.error.onRetry?(T(),c(M(F),{key:0,type:`primary`,size:`small`,onClick:j.value.error.onRetry},{default:P(()=>[p(A(M(I)(`common.retry`)),1)]),_:1},8,[`onClick`])):l(`v-if`,!0)])],!0)])):l(`v-if`,!0),l(` 表格主体 `),j.value.error?.show?l(`v-if`,!0):(T(),c(M(L),b({key:4,ref_key:`tableRef`,ref:je},{...Me.value,...e.$attrs},{columns:M(ge),data:M(B).paginatedData.value,loading:z.value,"row-key":w,"expanded-row-keys":M(V).expandedKeys.value,"checked-row-keys":xe.value??M(V).checkedKeys.value,"onUpdate:expandedRowKeys":M(V).expandState?.handleExpandChange,"onUpdate:checkedRowKeys":Se,"scroll-x":M(_e),"virtual-scroll":j.value.virtualScroll,"min-row-height":j.value.virtualScroll?j.value.virtualItemHeight:void 0,"max-height":j.value.virtualScroll?j.value.virtualMaxHeight:j.value.maxHeight,summary:we.value,"summary-placement":j.value.summaryPosition,"children-key":j.value.treeEnabled?j.value.treeChildrenKey:void 0,indent:j.value.treeEnabled?j.value.treeIndent:void 0,"default-expand-all":j.value.treeEnabled?j.value.treeDefaultExpandAll:void 0,style:{width:`100%`}}),null,16,[`columns`,`data`,`loading`,`expanded-row-keys`,`checked-row-keys`,`onUpdate:expandedRowKeys`,`scroll-x`,`virtual-scroll`,`min-row-height`,`max-height`,`summary`,`summary-placement`,`children-key`,`indent`,`default-expand-all`])),l(` 分页 `),M(B).paginationConfig.value?(T(),c(M(de),b({key:5},M(B).paginationConfig.value,{class:`pagination-wrapper`}),null,16)):l(`v-if`,!0),l(` 编辑弹窗 `),j.value.editMode===`modal`||j.value.editMode===`both`?(T(),c(M(ue),{key:6,show:Pe.value,"onUpdate:show":t[3]||=e=>Pe.value=e,title:j.value.modalTitle,width:j.value.modalWidth,preset:`card`,"mask-closable":!1,"close-on-esc":!1,class:`w60%`,closable:!1},{action:P(()=>[m(M(fe),{justify:`end`},{default:P(()=>[m(M(F),{onClick:ze},{default:P(()=>[p(A(M(I)(`common.cancel`)),1)]),_:1}),m(M(F),{type:`primary`,loading:Ne.value,onClick:Re},{default:P(()=>[p(A(M(I)(`common.save`)),1)]),_:1},8,[`loading`])]),_:1})]),default:P(()=>[Pe.value&&Le.value.length?(T(),c(a,{ref_key:`editFormRef`,ref:Y,key:Ie.value,modelValue:X.value,"onUpdate:modelValue":t[2]||=e=>X.value=e,options:Le.value,config:{layout:`grid`,grid:{cols:2,xGap:16,yGap:16},showActions:!1}},null,8,[`modelValue`,`options`])):l(`v-if`,!0)]),_:1},8,[`show`,`title`,`width`])):l(`v-if`,!0),l(` 动态行确认删除弹窗 `),j.value.dynamicRows&&M(V).dynamicRowsState?(T(),c(re(M(V).dynamicRowsState.renderConfirmModal()),{key:7})):l(`v-if`,!0),l(` 列设置抽屉 `),m(M(se),{show:M(U),"onUpdate:show":t[4]||=e=>y(U)?U.value=e:null,width:420,placement:`right`,"mask-closable":!0},{default:P(()=>[m(M(ce),{title:M(I)(`table.columnSettings`),closable:``},{default:P(()=>[m(cn,{columns:M(he),"persist-key":j.value.persistKey,onChange:Be},null,8,[`columns`,`persist-key`])]),_:1},8,[`title`])]),_:1},8,[`show`])],512))}}),[[`__scopeId`,`data-v-cb3ea22c`]]);const xn=(e,t)=>Number.isFinite(e)?Math.max(1,Math.floor(e)):t;function Sn(e){let t=k([]),n=D(!1),r=k(),a=D(0),o=i(e.initialQuery),c=D(xn(e.initialPage,1)),l=D(xn(e.pageSize,20)),u=k(i(o)),d=0,f=null,p=async()=>{let o=++d;f?.abort(),f=new AbortController,n.value=!0,r.value=void 0;try{let n=await e.request({page:c.value,pageSize:l.value,query:i(u.value),signal:f.signal});if(o!==d||f.signal.aborted)return!1;if(!Array.isArray(n.data)||!Number.isFinite(n.total))throw TypeError(`[C_Table] request 必须返回 { data: T[], total: number }`);return t.value=i([...n.data]),a.value=Math.max(0,Math.floor(n.total)),e.onSuccess?.({data:t.value,total:a.value}),!0}catch(t){return o!==d||f.signal.aborted?!1:(r.value=t,e.onError?.(t),!1)}finally{o===d&&(n.value=!1)}},m=async(e,t=!0)=>(u.value=i(typeof e==`function`?e(u.value):{...u.value,...e}),c.value=1,t?p():!0),h=async(e,t)=>(c.value=xn(e,c.value),l.value=xn(t,l.value),p()),g=async(e=!0)=>(u.value=i(o),c.value=1,e?p():!0),_=s(()=>{let r=j(e.config)??{},i=typeof r.pagination==`object`?r.pagination:{};return{data:t.value,loading:n.value,columns:j(e.columns),rowKey:e.rowKey??`id`,config:{...r,pagination:{...i,enabled:!0,remote:!0,page:c.value,pageSize:l.value,total:a.value}}}}),v=s(()=>({..._.value,onPaginationChange:h})),y=()=>{d+=1,f?.abort(),f=null,n.value=!1};return e.immediate!==!1&&C(()=>void p()),w(y),{data:t,loading:n,error:r,total:a,page:c,pageSize:l,query:u,tableProps:_,execute:p,reload:p,setQuery:m,resetQuery:g,handlePaginationChange:h,bindings:v,cancel:y}}export{Me as C,Ne as S,Te as T,pt as _,dn as a,We as b,Ft as c,Ct as d,Et as f,mt as g,gt as h,un as i,Pt as l,_t as m,bn as n,Wt as o,wt as p,ln as r,It as s,Sn as t,vt as u,lt as v,Ee as w,X as x,ct as y};
|
|
1
|
+
import{i as e,r as t}from"./config.js";import{t as n}from"./C_Icon2.js";import{t as r}from"./export-helper.js";import{t as i}from"./C_ActionBar2.js";import{t as a}from"./data.js";import{t as o}from"./C_Form2.js";import{Fragment as s,computed as c,createBlock as l,createCommentVNode as u,createElementBlock as d,createElementVNode as f,createSlots as p,createTextVNode as m,createVNode as h,defineComponent as g,getCurrentInstance as _,h as v,inject as y,isRef as b,mergeProps as x,nextTick as S,normalizeClass as C,normalizeStyle as w,onBeforeUnmount as ee,onMounted as te,onScopeDispose as T,openBlock as E,reactive as ne,ref as D,renderList as re,renderSlot as ie,resolveDynamicComponent as ae,shallowRef as O,toDisplayString as k,toValue as A,unref as j,watch as M,watchEffect as oe,withCtx as N}from"vue";import{NButton as P,NButtonGroup as F,NCheckbox as se,NDataTable as ce,NDatePicker as le,NDrawer as ue,NDrawerContent as de,NDropdown as I,NInput as L,NInputNumber as fe,NModal as pe,NPagination as me,NSelect as R,NSpace as he,NSpin as z,NSwitch as ge,NTag as _e,NText as B,NTooltip as V}from"naive-ui";const ve={editable:!1,editMode:`none`,showRowActions:!1,modalTitle:`编辑数据`,modalWidth:600,onEditSave:void 0,onEditCancel:void 0,onEditError:void 0},ye=e=>e===!1||e===void 0?ve:e===!0?{editable:!0,editMode:`modal`,showRowActions:!0,modalTitle:`编辑数据`,modalWidth:600,onEditSave:void 0,onEditCancel:void 0,onEditError:void 0}:{editable:e.enabled!==!1&&e.mode!==`none`,editMode:e.mode||`modal`,showRowActions:e.showRowActions!==!1&&e.mode!==`none`,modalTitle:e.modalTitle||`编辑数据`,modalWidth:e.modalWidth||600,onEditSave:e.onSave,onEditCancel:e.onCancel,onEditError:e.onError},be=e=>e?e===!0?{expandable:!0,defaultExpandedKeys:void 0,onLoadExpandData:void 0,onExpandError:void 0,renderExpandContent:void 0,rowExpandable:void 0}:{expandable:e.enabled!==!1,defaultExpandedKeys:e.defaultExpandedKeys,onLoadExpandData:e.onLoadData,onExpandError:e.onError,renderExpandContent:e.renderContent,rowExpandable:e.rowExpandable}:{expandable:!1,defaultExpandedKeys:void 0,onLoadExpandData:void 0,onExpandError:void 0,renderExpandContent:void 0,rowExpandable:void 0},xe=e=>{if(!e)return{enableSelection:!1,defaultCheckedKeys:void 0,rowCheckable:void 0,maxSelection:void 0,enableChildSelection:!1,childRowCheckable:void 0,enableParentChildLink:!1,parentChildLinkMode:`loose`};if(e===!0)return{enableSelection:!0,defaultCheckedKeys:void 0,rowCheckable:void 0,maxSelection:void 0,enableChildSelection:!1,childRowCheckable:void 0,enableParentChildLink:!1,parentChildLinkMode:`loose`};let t=e.childSelection||{},n=e.parentChildLink||{};return{enableSelection:e.enabled!==!1,defaultCheckedKeys:e.defaultCheckedKeys,rowCheckable:e.rowCheckable,maxSelection:e.maxSelection,enableChildSelection:t.enabled||!1,childRowCheckable:t.childRowCheckable,enableParentChildLink:n.enabled||!1,parentChildLinkMode:n.mode||`loose`}},H=e=>{let t={enabled:!0,page:1,pageSize:10,showSizePicker:!0,showQuickJumper:!0,pageSizes:[10,20,50,100],simple:!1,size:`medium`};return e===!1?{pagination:null}:e===!0||e===void 0?{pagination:t}:{pagination:{...t,...e}}},U=e=>e?e===!0?{dynamicRows:{enableRadioSelection:!0,enableAdd:!0,enableInsert:!0,enableDelete:!0,enableCopy:!0,enableMove:!0,enablePrint:!0}}:{dynamicRows:e}:{dynamicRows:void 0},W={striped:!0,bordered:!0,singleLine:!0,size:`medium`,maxHeight:void 0,scrollX:void 0,columnWidth:180};function G(e){return e?{striped:e.striped??W.striped,bordered:e.bordered??W.bordered,singleLine:e.singleLine??W.singleLine,size:e.size??W.size,maxHeight:e.maxHeight,scrollX:e.scrollX,columnWidth:e.columnWidth??W.columnWidth}:{...W}}const Se=e=>({showToolbar:e?.show!==!1,enableColumnSettings:e?.columnSettings!==!1,toolbarActions:e?.actions??[],toolbarRightActions:e?.rightActions??[],toolbarActionBarConfig:e?.actionBar??{}}),Ce=e=>e?e===!0?{virtualScroll:!0,virtualItemHeight:34,virtualMaxHeight:600}:{virtualScroll:e.enabled!==!1,virtualItemHeight:e.itemHeight??34,virtualMaxHeight:e.maxHeight??600}:{virtualScroll:!1,virtualItemHeight:34,virtualMaxHeight:600},we=e=>e?{summaryPosition:e.position??`bottom`,summaryRender:e.render}:{summaryPosition:void 0,summaryRender:void 0},Te=e=>e?e===!0?{enableColumnDrag:!0,columnDragHandleClass:void 0,columnDragAnimationDuration:150}:{enableColumnDrag:e.enabled!==!1,columnDragHandleClass:e.handleClass,columnDragAnimationDuration:e.animationDuration??150}:{enableColumnDrag:!1,columnDragHandleClass:void 0,columnDragAnimationDuration:150},Ee=e=>e?e===!0?{treeEnabled:!0,treeChildrenKey:`children`,treeIndent:16,treeDefaultExpandAll:!1}:{treeEnabled:e.enabled!==!1,treeChildrenKey:e.childrenKey??`children`,treeIndent:e.indent??16,treeDefaultExpandAll:e.defaultExpandAll??!1}:{treeEnabled:!1,treeChildrenKey:`children`,treeIndent:16,treeDefaultExpandAll:!1},De=e=>e?e===!0?{rowDrag:{enabled:!0}}:{rowDrag:e.enabled===!1?void 0:e}:{rowDrag:void 0},K=e=>e?e===!0?{crossPageSelection:{enabled:!0}}:{crossPageSelection:e.enabled===!1?void 0:e}:{crossPageSelection:void 0};function Oe(e={}){return{feedback:e.feedback,locale:e.locale,...ye(e.edit),...be(e.expand),...xe(e.selection),...H(e.pagination),...U(e.dynamicRows),...G(e.display),...Se(e.toolbar),...Ce(e.virtualScroll),...we(e.summary),...Te(e.columnDrag),...Ee(e.tree),...De(e.rowDrag),...K(e.crossPageSelection),exportConfig:e.export,persistKey:e.persistKey,formatterConfig:e.formatterConfig,error:e.error,batchActions:e.batchActions}}const ke=e=>({isNonEditable:t=>!e.editable||t.editable===!1||e.editMode===`none`,isRowEditMode:()=>[`row`,`both`].includes(e.editMode),isCellEditMode:()=>[`cell`,`both`].includes(e.editMode)});function Ae(e,t){return(typeof e.message==`function`?e.message():e.message)||t}function je(e){return e==null||e===``||Array.isArray(e)&&e.length===0}function Me(e){if(typeof e==`number`)return e;if(typeof e==`string`||Array.isArray(e))return e.length}function Ne(e,t){return e===!1?t:e instanceof Error?e.message||t:typeof e==`string`?e||t:Array.isArray(e)&&e.length>0?Ne(e[0],t):null}async function Pe(e,t,n,r){let i=Ae(e,`${n}校验失败`),a=e.transform?e.transform(t):t;if(e.required&&je(a))return Ae(e,`${n}不能为空`);if(!e.required&&je(a))return null;if(e.enum&&!e.enum.includes(a)||e.pattern&&!new RegExp(e.pattern).test(String(a)))return i;let o=Me(a);if(e.len!==void 0&&o!==e.len||e.min!==void 0&&o!==void 0&&o<e.min||e.max!==void 0&&o!==void 0&&o>e.max)return i;let s,c=e=>{s=e};try{if(e.validator){let t=Ne(await e.validator(e,a,c,r,{}),i);if(t)return t}if(s||e.asyncValidator&&(await e.asyncValidator(e,a,c,r,{}),s))return Ne(s,i)}catch(e){return e instanceof Error&&e.message?e.message:i}return null}function Fe(e){let t=D(null),n=D({}),r=D(!1),i=D([]),o=e=>t.value===e,s=t=>{let n=e.data();return!n||!Array.isArray(n)?null:n.find(n=>e.rowKey(n)===t)},c=e=>{let o=s(e);return!o||r.value?!1:(t.value=e,n.value={[String(e)]:a(o)},i.value=[],!0)},l=async()=>{if(t.value===null||r.value)return;let i=e.data();if(!i||!Array.isArray(i))return;let a=i.findIndex(n=>e.rowKey(n)===t.value);a>-1&&await e.onCancel?.(i[a],a),t.value=null,n.value={}},u=async()=>{if(i.value=[],t.value===null)return!0;let r=e.columns?.()||[],a=n.value[String(t.value)];if(!a)return!0;let o=r.filter(e=>e.editable!==!1&&e.editProps?.rules?.length).map(e=>{let t=typeof e.key==`string`?e.key:``;if(!t)return null;let n=e.title||t,r=a[t];return Promise.all(e.editProps.rules.map(e=>Pe(e,r,n,a))).then(e=>{let n=e.find(Boolean);return n?{field:t,message:n}:null})}).filter(Boolean),s=(await Promise.all(o)).filter(Boolean);return i.value=s,s.length===0},d=async()=>{if(t.value===null||r.value||!await u())return;let i=t.value,o=e.data();if(!o||!Array.isArray(o))return;let s=o.findIndex(t=>e.rowKey(t)===i);if(s===-1)return;let c=n.value[String(i)];if(c){r.value=!0;try{await e.onSave?.(a(c),s),t.value=null,n.value={}}finally{r.value=!1}return{updatedData:c,rowIndex:s}}},f=e=>{if(t.value===e)return n.value[String(e)]};return{editingRowKey:t,editingData:n,isSaving:r,isEditingRow:o,startEditRow:c,cancelEditRow:l,saveEditRow:d,validateRow:u,validationErrors:i,getEditingRowData:f,updateEditingRowData:(e,t,n)=>{let r=f(e);r&&(r[t]=a(n))},findRowData:s}}function q(e,t){let n=String(e);return`${typeof e}:${n.length}:${n}|${t.length}:${t}`}function Ie(e){let t=D({rowKey:null,columnKey:null}),n=D({}),r=D(!1),i=D(null),o=(e,n)=>t.value.rowKey===e&&t.value.columnKey===n,s=t=>{let n=e.data();return!n||!Array.isArray(n)?null:n.find(n=>e.rowKey(n)===t)},c=(e,o)=>{let c=s(e);return!c||!o||r.value?!1:(t.value={rowKey:e,columnKey:o},n.value={[q(e,o)]:a(c[o])},i.value=null,!0)},l=async()=>{i.value=null;let{rowKey:r,columnKey:a}=t.value;if(r===null||a===null)return!0;let o=(e.columns?.()||[]).find(e=>e.key===a);if(!o||!o.editProps?.rules)return!0;let c=q(r,a),l=n.value[c],u=o.title||a,d={...s(r),[a]:l},f=(await Promise.all(o.editProps.rules.map(e=>Pe(e,l,u,d)))).find(Boolean);return f?(i.value=f,!1):!0};return{editingCell:t,editingData:n,isSaving:r,isEditingCell:o,startEditCell:c,saveEditCell:async()=>{let{rowKey:i,columnKey:o}=t.value;if(i===null||o===null||r.value||!await l())return;let s=e.data();if(!s||!Array.isArray(s))return;let c=s.findIndex(t=>e.rowKey(t)===i);if(c===-1)return;let u=q(i,o),d=n.value[u],f={...s[c],[o]:d};r.value=!0;try{await e.onSave?.(a(f),c,o),t.value={rowKey:null,columnKey:null},n.value={}}finally{r.value=!1}return{updatedData:f,rowIndex:c,columnKey:o}},cancelEditCell:()=>{let{rowKey:e,columnKey:a}=t.value;r.value||(e!==null&&a!==null&&delete n.value[q(e,a)],t.value={rowKey:null,columnKey:null},i.value=null)},validateCell:l,cellValidationError:i,getEditingCellValue:(e,t)=>n.value[q(e,t)],updateEditingCellValue:(e,t,r)=>{o(e,t)&&(n.value[q(e,t)]=a(r))},findRowData:s}}function J(e){let t=D(!1),n=D(!1),r=D(null),i=D({}),o=c(()=>{if(r.value===null)return-1;let t=e.data();return Array.isArray(t)?t.findIndex(t=>e.rowKey(t)===r.value):-1});return{isModalVisible:t,isSaving:n,editingData:i,editingRowKey:r,editingRowIndex:o,startEdit:(o,s)=>{if(n.value)return!1;let c=e.data();if(!Array.isArray(c))return!1;let l=c.findIndex(t=>e.rowKey(t)===o);return l===-1?!1:(r.value=o,i.value=a(s??c[l]),t.value=!0,!0)},saveEdit:async s=>{if(n.value||r.value===null)return;let c=o.value;if(c===-1)return;let l=a(s??i.value);n.value=!0;try{return await e.onSave?.(l,c),t.value=!1,r.value=null,i.value={},{updatedData:l,rowIndex:c}}finally{n.value=!1}},cancelEdit:async()=>{if(n.value)return!1;let a=o.value;try{if(r.value!==null&&a>-1){let t=e.data();t[a]&&await e.onCancel?.(t[a],a)}}finally{t.value=!1,r.value=null,i.value={}}return!0},updateEditingData:e=>n.value?!1:(i.value=a(e),!0),resetEditingState:()=>n.value?!1:(r.value=null,i.value={},!0),isEditingRow:e=>r.value===e&&t.value,getEditingRowData:e=>r.value===e?i.value:null}}const Le=e=>({expandedKeys:D([...e.defaultExpandedKeys||[]]),expandDataMap:D(new Map),loadingMap:D(new Map),checkedKeys:e.enableSelection?D([...e.defaultCheckedKeys||[]]):D([]),childSelections:(e.enableChildSelection,D(new Map))}),Re=e=>{let t=c(()=>j(e.data)),n=e.rowKey;return{data:t,getRowKey:n,getChildRowKey:e.childRowKey||(e=>e.id),findRow:e=>t.value.find(t=>n(t)===e),isRowExpandable:t=>e.rowExpandable?.(t)??!0,isRowCheckable:t=>e.rowCheckable?.(t)??!0,isChildRowCheckable:(t,n)=>e.childRowCheckable?.(t,n)??!0}},ze=(e,t,n)=>{let r=new Map,i=0,a=new Set(n.defaultExpandedKeys||[]),o=async i=>{if(!n.onLoadData)return[];let a=t.getRowKey(i),o=e.expandDataMap.value.get(a);if(o)return o;let s=r.get(a);if(s)return s;e.loadingMap.value.set(a,!0);let c=(async()=>{try{let t=await n.onLoadData(i)||[];return e.expandDataMap.value.set(a,t),n.enableChildSelection&&!e.childSelections.value.has(a)&&e.childSelections.value.set(a,[]),t}catch(e){return n.onError?.(e,i),[]}finally{r.delete(a),e.loadingMap.value.set(a,!1)}})();return r.set(a,c),c};return{loadData:o,handleRowExpand:async(r,s)=>{let c=t.getRowKey(r);if(i+=1,s){if(a.add(c),await o(r),!a.has(c))return;e.expandedKeys.value.includes(c)||(e.expandedKeys.value=[...e.expandedKeys.value,c])}else a.delete(c),e.expandedKeys.value=e.expandedKeys.value.filter(e=>e!==c);n.onExpandChange?.(e.expandedKeys.value,r,s)},expandAll:async()=>{let r=++i,s=t.data.value.filter(t.isRowExpandable);a=new Set(s.map(t.getRowKey)),await Promise.allSettled(s.map(o)),r===i&&(e.expandedKeys.value=s.map(t.getRowKey),n.onExpandChange?.(e.expandedKeys.value))},collapseAll:()=>{i+=1,a.clear(),e.expandedKeys.value=[],e.childSelections.value.clear(),n.onExpandChange?.(e.expandedKeys.value)},handleExpandChange:async r=>{let s=++i;a=new Set(r);let c=r.filter(t=>!e.expandedKeys.value.includes(t)),l=e.expandedKeys.value.filter(e=>!r.includes(e));if(await Promise.all(c.map(async e=>{let n=t.findRow(e);n&&await o(n)})),s===i){for(let t of l)e.childSelections.value.delete(t);e.expandedKeys.value=r,n.onExpandChange?.(r)}}}},Be=(e,t,n)=>{let r=c(()=>t.data.value.filter(t.isRowCheckable));return{selectAll:()=>{if(!n.enableSelection)return;let i=r.value.map(t.getRowKey),a=n.maxSelection?i.slice(0,n.maxSelection):i;e.checkedKeys.value=a;let o=r.value.filter(e=>a.includes(t.getRowKey(e)));n.onSelectionChange?.(a,o,e.childSelections.value)},clearSelection:()=>{n.enableSelection&&(e.checkedKeys.value=[],n.onSelectionChange?.([],[],e.childSelections.value))},handleSelectionChange:i=>{if(!n.enableSelection)return;let a=new Set(r.value.map(e=>t.getRowKey(e))),o=[...new Set(i)].filter(e=>a.has(e)),s=n.maxSelection?o.slice(0,Math.max(0,n.maxSelection)):o;e.checkedKeys.value=s;let c=t.data.value.filter(e=>s.includes(t.getRowKey(e)));n.onSelectionChange?.(s,c,e.childSelections.value)},selectedRowsCount:c(()=>e.checkedKeys.value.length),selectableRows:r}},Y=(e,t)=>{let n=()=>!!(t.enableParentChildLink&&t.enableSelection&&t.enableChildSelection);return{handleParentChildLink:(r,i,a)=>{if(!n())return;let o=t.parentChildLinkMode===`strict`?i.length===a&&a>0:i.length>0,s=[...e.checkedKeys.value],c=s.includes(r);o&&!c?e.checkedKeys.value=[...s,r]:!o&&c&&(e.checkedKeys.value=s.filter(e=>e!==r))},isLinkEnabled:n}},Ve=(e,t,n,r)=>({totalChildSelections:c(()=>r.enableChildSelection?Array.from(e.childSelections.value.values()).reduce((e,t)=>e+t.length,0):0),clearAllSelections:()=>{e.checkedKeys.value=[],e.childSelections.value.clear(),r.onSelectionChange?.([],[],e.childSelections.value)},handleChildSelectionChange:(i,a)=>{if(!r.enableChildSelection)return;e.childSelections.value.set(i,a);let o=e.expandDataMap.value.get(i)||[],s=o.filter(e=>a.includes(t.getChildRowKey(e)));r.onChildSelectionChange?.(i,a,s),n.isLinkEnabled()&&n.handleParentChildLink(i,a,o.length)}}),He=(e,t,n,r,i)=>{if(!i.enableChildSelection)return;let a=t.childSelections.value.get(e)||[],o=t.expandDataMap.value.get(e)||[],s=n.findRow(e);if(!s)return;let c=o.filter(e=>n.isChildRowCheckable(e,s));return{selectedKeys:a,isAllChecked:c.length>0&&c.every(e=>a.includes(n.getChildRowKey(e))),selectAll:()=>{let t=c.map(e=>n.getChildRowKey(e));r.handleChildSelectionChange(e,t)},clearAll:()=>{r.handleChildSelectionChange(e,[])}}},Ue=()=>v(`div`,{class:`flex justify-center items-center py-8`},[v(z,{size:`small`}),v(`span`,{class:`ml-2 text-gray-500`},`加载中...`)]),We=()=>v(`div`,{class:`text-center py-8 text-gray-400`},`暂无数据`),X=e=>{if(!e.length)return[];let t=e[0];return!t||typeof t!=`object`?[]:[{title:`序号`,key:`_index`,width:60,render:(e,t)=>t+1},...Object.keys(t).filter(e=>![`id`,`key`].includes(e)).map(e=>({key:e,title:e.charAt(0).toUpperCase()+e.slice(1),width:120,ellipsis:{tooltip:!0}}))]},Z=(e,t,n,r,i,a)=>{let o=[];return a.enableChildSelection&&o.push({type:`selection`,multiple:!0}),o.push(...X(t)),v(`div`,{class:`p-4 bg-gray-50`},[v(`div`,{class:`mb-2 text-sm text-gray-600`},`详细信息 (${t.length} 条)`),v(ce,{data:t,columns:o,size:`small`,striped:!0,checkedRowKeys:n?.selectedKeys||[],rowKey:e=>r.getChildRowKey(e),onUpdateCheckedRowKeys:a.enableChildSelection?t=>{i.handleChildSelectionChange(e,t)}:void 0})])},Q=(e,t,n,r,i)=>{let a=a=>{let o=t.getRowKey(a),s=e.expandDataMap.value.get(o)||[],c=e.loadingMap.value.get(o)||!1;!s.length&&!c&&e.expandedKeys.value.includes(o)&&S(()=>{r.loadData(a)});let l=He(o,e,t,n,i);return i.renderContent?i.renderContent(a,s,c,l):c?Ue():s.length?Z(o,s,l,t,n,i):We()};return{getTableColumns:e=>e.map(e=>e.type===`selection`&&i.enableSelection?{type:`selection`,disabled:e=>!t.isRowCheckable(e),multiple:!i.maxSelection||i.maxSelection>1}:e.type===`expand`&&(i.onLoadData||i.renderContent)?{type:`expand`,expandable:t.isRowExpandable,renderExpand:a}:e)}};function Ge(e){let t=Le(e),n=Re(e),r=ze(t,n,e),i=Be(t,n,e),a=Ve(t,n,Y(t,e),e),o=Q(t,n,a,r,e);return e.onSelectionChange&&e.enableSelection&&oe(()=>{if(!e.onSelectionChange)return;let r=n.data.value.filter(e=>t.checkedKeys.value.includes(n.getRowKey(e))),i=t.checkedKeys.value.length>0,a=n.data.value.length>0;(i||!a)&&e.onSelectionChange(t.checkedKeys.value,r,t.childSelections.value)}),e.defaultExpandedKeys?.length&&S(async()=>{let i=e.defaultExpandedKeys||[];if(i.length===0)return;let a=i.map(async e=>{let i=n.findRow(e);i&&!t.expandDataMap.value.has(e)&&await r.loadData(i)});await Promise.allSettled(a)}),{expandedKeys:t.expandedKeys,checkedKeys:t.checkedKeys,childSelections:t.childSelections,selectedRowsCount:i.selectedRowsCount,totalChildSelections:a.totalChildSelections,expandAll:r.expandAll,collapseAll:r.collapseAll,expandRow:async e=>{if(t.expandedKeys.value.includes(e))return;let i=n.findRow(e);i&&await r.handleRowExpand(i,!0)},handleExpandChange:r.handleExpandChange,selectAll:i.selectAll,clearSelection:i.clearSelection,clearAllSelections:a.clearAllSelections,handleSelectionChange:i.handleSelectionChange,getTableColumns:o.getTableColumns,expandDataMap:t.expandDataMap,loadingMap:t.loadingMap}}const Ke={text:`Robot Admin`,textSize:16,textColor:`rgba(128, 128, 128, 0.3)`,font:`Microsoft JhengHei`,opacity:.3,rotate:-20,position:`repeat`,xGap:200,yGap:120},qe={scale:1,quality:.92,format:`png`,backgroundColor:`#ffffff`,logging:!1,allowTaint:!0,useCORS:!0},Je={orientation:`portrait`,paperSize:`A4`,margin:`10mm 10mm 0 10mm`,style:`@page { margin: 10mm 10mm 0 10mm; } @media print { body { margin: 0; } }`,header:``,footer:``,showModal:!1,modalMessage:`正在准备打印...`,onLoadingStart:()=>{},onLoadingEnd:()=>{},onPrintDialogClose:()=>{}};function Ye(e,t,n,r){e.save(),e.translate(t/2,n/2),e.rotate(r.rotate*Math.PI/180),e.fillText(r.text,0,0),e.restore()}function Xe(e,t,n,r){[[50,50],[t-50,50],[50,n-50],[t-50,n-50]].forEach(([t,n])=>{e.save(),e.translate(t,n),e.rotate(r.rotate*Math.PI/180),e.fillText(r.text,0,0),e.restore()})}function Ze(e,t,n,r){let i=Math.sqrt(t*t+n*n),a=t/2,o=n/2;e.save(),e.translate(a,o),e.rotate(Math.atan2(n,t));let s=Math.floor(i/r.xGap),c=-i/2;for(let t=0;t<=s;t++){let n=c+t*r.xGap;e.fillText(r.text,n,0)}e.restore()}function Qe(e,t,n,r){let i=Math.ceil(t/r.xGap)+1,a=Math.ceil(n/r.yGap)+1;for(let t=0;t<a;t++)for(let n=0;n<i;n++){let i=n*r.xGap+r.xGap/2,a=t*r.yGap+r.yGap/2;e.save(),e.translate(i,a),e.rotate(r.rotate*Math.PI/180),e.fillText(r.text,0,0),e.restore()}}function $e(e,t){let n=e.getContext(`2d`);if(!n)return e;let r={...Ke,...t},{width:i,height:a}=e;n.save(),n.globalAlpha=r.opacity,n.font=`${r.textSize}px ${r.font}`,n.fillStyle=r.textColor,n.textAlign=`center`,n.textBaseline=`middle`;let o={center:Ye,corner:Xe,diagonal:Ze,repeat:Qe};return(o[r.position]||o.repeat)(n,i,a,r),n.restore(),e}async function et(e,t={}){if(typeof window>`u`)throw Error(`截图功能仅支持浏览器环境`);let n={...qe,...t},{default:r}=await import(`html2canvas`);return await r(e,{logging:n.logging,scale:n.scale,allowTaint:n.allowTaint,useCORS:n.useCORS,backgroundColor:n.backgroundColor,onclone:e=>{let t=e.body;t.style.transform=`scale(1)`}})}function tt(e,t=`png`,n=.92){let r=`image/${t}`;return t===`png`?e.toDataURL(r):e.toDataURL(r,n)}function nt(e,t=`screenshot-${new Date().toISOString().slice(0,10)}.png`,n=`png`){let r=tt(e,n),i=document.createElement(`a`);i.download=t,i.href=r,document.body.appendChild(i),i.click(),document.body.removeChild(i)}async function rt(e,t={}){if(typeof window>`u`)throw Error(`打印功能仅支持浏览器环境`);let n={...Je,...t},{default:r}=await import(`print-js`);return new Promise((t,i)=>{try{n.onLoadingStart?.(),r({printable:e,type:`image`,style:n.style,showModal:n.showModal,modalMessage:n.modalMessage,onLoadingEnd:n.onLoadingEnd,onPrintDialogClose:()=>{n.onPrintDialogClose?.(),t()}})}catch(e){i(e)}})}function it(e,t,n){let r=0,i=0;e.forEach(e=>{let{width:n,height:a}=e;t===`horizontal`?(r+=n,i=Math.max(i,a)):(r=Math.max(r,n),i+=a)});let a=(e.length-1)*n;return t===`horizontal`?r+=a:i+=a,{totalWidth:r,totalHeight:i}}function at(e,t){let{orientation:n,spacing:r,backgroundColor:i,totalWidth:a,totalHeight:o}=t,s=document.createElement(`canvas`);s.width=a,s.height=o;let c=s.getContext(`2d`);if(!c)throw Error(`无法创建画布上下文`);c.fillStyle=i,c.fillRect(0,0,a,o);let l=0,u=0;return e.forEach(e=>{c.drawImage(e,l,u),n===`horizontal`?l+=e.width+r:u+=e.height+r}),s}function ot(e,t,n){return e.length?{orientation:t.orientation||`vertical`,spacing:t.spacing||20,backgroundColor:t.backgroundColor||`#ffffff`}:(n.warning(`没有要打印的元素`),null)}async function st(e,t,n,r){let{orientation:i,spacing:a,backgroundColor:o}=n;r(10);let s=await Promise.all(e.map(e=>et(e,t.capture)));r(50);let{totalWidth:c,totalHeight:l}=it(s,i,a);return r(60),at(s,{orientation:i,spacing:a,backgroundColor:o,totalWidth:c,totalHeight:l})}async function ct(e,t,n,r,i){r(70),t.watermark&&$e(e,t.watermark),r(90),await rt(tt(e,t.capture?.format,t.capture?.quality),t.print),r(100),i.success(`合并打印完成,共合并 ${n} 个元素`)}function lt(){let e=t(),n=D(!1),r=D(0),i=e=>{r.value=Math.max(0,Math.min(100,e))},a=async(e,t={})=>{try{i(0),i(30);let n=await et(e,t.capture);i(60),t.watermark&&$e(n,t.watermark),i(90);let r=tt(n,t.capture?.format||`png`,t.capture?.quality||.92);return i(100),r}catch(e){throw Error(`截图失败: ${e instanceof Error?e.message:`未知错误`}`)}},o=async(t,r={})=>{n.value=!0,i(0);try{await S();let n=await a(t,r);i(95),await rt(n,r.print),i(100),e.success(`打印完成`)}catch(t){throw e.error(`打印失败: ${t instanceof Error?t.message:`未知错误`}`,t),t}finally{n.value=!1,i(0)}},s=async(t,r,i={})=>{n.value=!0;try{await S();let n=await et(t,i.capture);i.watermark&&$e(n,i.watermark);let a=i.capture?.format||`png`,o=`screenshot-${new Date().toISOString().slice(0,19).replace(/:/g,`-`)}.${a}`;nt(n,r||o,a),e.success(`下载完成`)}catch(t){throw e.error(`下载失败`,t),t}finally{n.value=!1}},c=async(e,t=`Robot Admin`)=>o(e,{watermark:{text:t,position:`repeat`,textColor:`rgba(128, 128, 128, 0.3)`}}),l=async(e,t={})=>{let n=e.length;i(10);let r=e.map(async(e,r)=>{let o=await a(e,t);return i(10+(r+1)/n*70),o});return Promise.all(r)},u=async(e,t={})=>{await e.reduce(async(n,r,i)=>{await n,await rt(r,t),i<e.length-1&&await new Promise(e=>{setTimeout(()=>e(),1e3)})},Promise.resolve())};return{loading:n,progress:r,captureWithWatermark:a,printWithWatermark:o,downloadScreenshot:s,quickPrint:c,batchCapture:l,batchPrint:async(t,r={})=>{if(!t.length){e.warning(`没有要打印的元素`);return}n.value=!0;try{i(0);let n=await l(t,r);i(80),await u(n,r.print),i(100),e.success(`批量打印完成,共 ${t.length} 个元素`)}catch(t){throw e.error(`批量打印失败`,t),t}finally{n.value=!1,i(0)}},mergePrint:async(t,r={},a={})=>{let o=ot(t,a,e);if(o){n.value=!0;try{await ct(await st(t,r,o,i),r,t.length,i,e)}catch(t){throw e.error(`合并打印失败`,t),t}finally{n.value=!1,i(0)}}},createPreset:(e,t)=>({use:e=>o(e,t),download:(e,n)=>s(e,n,t)}),updateProgress:i,utils:{captureElement:et,drawWatermark:$e,canvasToDataURL:tt,downloadCanvas:nt,printImage:rt}}}const ut={table:{watermark:{text:`Robot Admin - 数据表格`,position:`repeat`,textColor:`rgba(100, 100, 100, 0.25)`,textSize:14,xGap:250,yGap:120},capture:{scale:1.2},print:{orientation:`landscape`,style:`@page { margin: 8mm; } body { font-family: Arial, sans-serif; }`}},form:{watermark:{text:`Robot Admin - 表单数据`,position:`diagonal`,textColor:`rgba(150, 150, 150, 0.2)`,textSize:16},print:{orientation:`portrait`}},report:{watermark:{text:`Robot Admin - 机密报告`,position:`center`,textColor:`rgba(200, 50, 50, 0.15)`,textSize:24},capture:{quality:.95,format:`png`}}};function dt(){return typeof crypto<`u`&&typeof crypto.randomUUID==`function`?`row_${crypto.randomUUID()}`:`row_${Date.now()}_${Math.random().toString(36).substr(2,9)}`}function ft(e,t){return typeof t==`function`?t(e):e[t]}function pt(e,t){let n=e?.()||{},r=typeof t==`string`?t:`id`;return{...n,[r]:dt()}}function mt(r,i={}){let a={enabled:!0,rowKey:`id`,enableRadioSelection:!0,enableAdd:!0,enableInsert:!0,enableDelete:!0,enableCopy:!0,enableMove:!0,enablePrint:!0,confirmDelete:!0,deleteConfirmText:``,printPreset:`table`,printTargetSelector:`.c-table-wrapper`,defaultRowData:()=>({})},o=ne({...a,...A(i)});M(()=>A(i),e=>{let t=o;Object.keys(t).forEach(e=>delete t[e]),Object.assign(t,a,e)},{deep:!0});let s=t(()=>o.feedback),{t:l}=e(()=>o.locale),u=`c-table-radio-${dt()}`,d=D(null),f=D(!1),p=c(()=>d.value===null?null:r.value.find(e=>ft(e,o.rowKey)===d.value)||null),m=c(()=>p.value?r.value.findIndex(e=>e===p.value):-1),h=c(()=>m.value>0),g=c(()=>m.value>=0&&m.value<r.value.length-1),{loading:_,progress:y,printWithWatermark:b,downloadScreenshot:x,quickPrint:S}=lt(),C=()=>{if(o.printOptions)return o.printOptions;let e=ut[o.printPreset||`table`];return o.printWatermarkText&&e.watermark?{...e,watermark:{...e.watermark,text:o.printWatermarkText}}:e},w=e=>{o.onRowChange?.(e)},te=()=>{if(!o.enabled||!o.enableAdd)return;let e=pt(o.defaultRowData,o.rowKey);w([...r.value,e]),o.onRowAdd?.(e),s.success(l(`table.addRowSuccess`))},T=()=>{if(!o.enabled||!o.enableInsert||!p.value){s.warning(l(`table.selectRowFirst`));return}let e=pt(o.defaultRowData,o.rowKey),t=[...r.value];t.splice(m.value+1,0,e),w(t),o.onRowAdd?.(e),s.success(l(`table.insertRowSuccess`))},E=()=>{if(!o.enabled||!o.enableDelete||!p.value){s.warning(l(`table.selectDeleteRowFirst`));return}o.confirmDelete?f.value=!0:re()},re=()=>{if(!p.value)return;let e=p.value,t=m.value;w(r.value.filter((e,n)=>n!==t)),d.value=null,o.onSelectionChange?.(null,null),o.onRowDelete?.(e,t),s.success(l(`table.deleteRowSuccess`)),f.value=!1},ie=()=>{if(!o.enabled||!o.enableCopy||!p.value){s.warning(l(`table.selectCopyRowFirst`));return}let e=p.value,t=typeof o.rowKey==`string`?o.rowKey:`id`,{[t]:n,...i}=e,a={...i,[t]:dt()};w([...r.value,a]),o.onRowCopy?.(e,a),s.success(l(`table.copyRowSuccess`))},ae=()=>{if(!o.enabled||!o.enableMove||!h.value)return;let e=m.value,t=[...r.value],n=t[e];[t[e],t[e-1]]=[t[e-1],t[e]],w(t),o.onRowMove?.(n,e,e-1),s.success(l(`table.moveUpSuccess`))},k=()=>{if(!o.enabled||!o.enableMove||!g.value)return;let e=m.value,t=[...r.value],n=t[e];[t[e],t[e+1]]=[t[e+1],t[e]],w(t),o.onRowMove?.(n,e,e+1),s.success(l(`table.moveDownSuccess`))},j=e=>{if(!o.enabled)return;let t=r.value.find(t=>ft(t,o.rowKey)===e);t&&(d.value=e,o.onSelectionChange?.(e,t))},oe=()=>{d.value=null,o.onSelectionChange?.(null,null)},N=async e=>{if(!e.value){s.error(l(`table.printTargetMissing`));return}let t=C();await b(e.value,t)};return ee(()=>{d.value=null,f.value=!1}),{selectedRowKey:d,selectedRowData:p,selectedRowIndex:m,canMoveUp:h,canMoveDown:g,deleteConfirmVisible:f,printLoading:_,printProgress:y,addRow:te,insertRow:T,deleteRow:E,confirmDelete:re,copyRow:ie,moveRowUp:ae,moveRowDown:k,selectRow:j,clearSelection:oe,handlePrint:N,handleDownload:async(e,t)=>{if(!e.value){s.error(l(`table.downloadTargetMissing`));return}let n=C();await x(e.value,t,n)},handleQuickPrint:async e=>{if(!e.value){s.error(l(`table.printTargetMissing`));return}let t=o.printWatermarkText||`Robot Admin`;await S(e.value,t)},enhanceColumns:e=>{if(!o.enabled)return e;let t=[...e];return o.enabled&&o.enableRadioSelection&&t.unshift({key:`_radio_selection`,title:l(`common.select`),width:80,align:`center`,editable:!1,render:e=>{let t=ft(e,o.rowKey);return v(`div`,{class:`flex justify-center`},[v(`input`,{type:`radio`,name:u,"aria-label":l(`common.select`),checked:d.value===t,class:`cursor-pointer accent-blue-500 scale-110`,onChange:e=>{e.target.checked&&j(t)}})])}}),t},renderToolbar:e=>{if(!o.enabled)return null;let t=[];o.enablePrint&&t.push(v(P,{loading:_.value,type:`primary`,ghost:!0,onClick:async()=>{try{let t=e??document.querySelector(o.printTargetSelector);t?await N(O(t)):s.warning(l(`table.printTargetMissing`))}catch(e){s.error(l(`table.printTargetMissing`),e)}}},{icon:()=>v(n,{name:`mdi:printer`,title:l(`common.print`)}),default:()=>l(`common.print`)}));let r=[];return o.enableAdd&&r.push(v(P,{onClick:te,type:`primary`},{icon:()=>v(n,{name:`mdi:plus`,title:l(`table.addRow`)}),default:()=>l(`table.addRow`)})),o.enableInsert&&r.push(v(V,{disabled:!!p.value},{trigger:()=>v(P,{onClick:T,disabled:!p.value,type:`primary`,ghost:!0},{icon:()=>v(n,{name:`mdi:table-row-plus-after`,title:l(`table.insertRow`)}),default:()=>l(`table.insertRow`)}),default:()=>l(`table.selectRowFirst`)})),o.enableDelete&&r.push(v(V,{disabled:!!p.value},{trigger:()=>v(P,{onClick:E,disabled:!p.value,type:`error`,ghost:!0},{icon:()=>v(n,{name:`mdi:delete`,title:l(`table.deleteRow`)}),default:()=>l(`table.deleteRow`)}),default:()=>l(`table.selectDeleteRowFirst`)})),o.enableCopy&&r.push(v(V,{disabled:!!p.value},{trigger:()=>v(P,{onClick:ie,disabled:!p.value,type:`info`,ghost:!0},{icon:()=>v(n,{name:`mdi:content-copy`,title:l(`table.copyRow`)}),default:()=>l(`table.copyRow`)}),default:()=>l(`table.selectCopyRowFirst`)})),o.enableMove&&r.push(v(V,{disabled:h.value},{trigger:()=>v(P,{onClick:ae,disabled:!h.value,type:`warning`,ghost:!0},{icon:()=>v(n,{name:`mdi:arrow-up`,title:l(`table.moveUp`)}),default:()=>l(`table.moveUp`)}),default:()=>p.value?l(`table.firstRow`):l(`table.selectRowFirst`)}),v(V,{disabled:g.value},{trigger:()=>v(P,{onClick:k,disabled:!g.value,type:`warning`,ghost:!0},{icon:()=>v(n,{name:`mdi:arrow-down`,title:l(`table.moveDown`)}),default:()=>l(`table.moveDown`)}),default:()=>p.value?l(`table.lastRow`):l(`table.selectRowFirst`)})),r.length>0&&t.push(v(F,{},()=>r)),v(`div`,{class:`dynamic-rows-toolbar mb-4 flex justify-end`},[v(he,{},()=>t)])},renderConfirmModal:()=>v(pe,{show:f.value,"onUpdate:show":e=>{f.value=e},preset:`dialog`,title:l(`table.deleteTitle`),content:o.deleteConfirmText||l(`table.deleteRowContent`),positiveText:l(`table.confirmDeleteRow`),negativeText:l(`common.cancel`),onPositiveClick:re})}}function ht(n){let{data:r,rowKey:i,emit:a}=n,o=()=>A(n.config),s=t(()=>o().feedback),{t:l}=e(()=>o().locale),u={onSave:async(e,t,n)=>{if(!e||t<0||t>=r().length)return;let i=[...r()];i[t]={...i[t],...e};try{await o().onEditSave?.(i[t],t,n),await a(`save`,i[t],t,n),a(`update:data`,i)}catch(e){throw o().onEditError?.(e),a(`edit-error`,e),e}},onCancel:async(e,t)=>{try{await o().onEditCancel?.(e,t),await a(`cancel`,e,t)}catch(e){throw o().onEditError?.(e),a(`edit-error`,e),e}},onExpandChange:(e,t,n)=>{a(`expand-change`,e,t,n)},onSelectionChange:(e,t,n)=>{a(`selection-change`,e,t,n)},onChildSelectionChange:(e,t,n)=>{a(`child-selection-change`,e,t,n)},onRowChange:e=>{a(`update:data`,e),o().dynamicRows?.onRowChange?.(e)},onRowSelectionChange:(e,t)=>{a(`row-selection-change`,e,t),o().dynamicRows?.onSelectionChange?.(e,t)},onRowAdd:e=>{a(`row-add`,e),o().dynamicRows?.onRowAdd?.(e)},onRowDelete:(e,t)=>{a(`row-delete`,e,t),o().dynamicRows?.onRowDelete?.(e,t)},onRowCopy:(e,t)=>{a(`row-copy`,e,t),o().dynamicRows?.onRowCopy?.(e,t)},onRowMove:(e,t,n)=>{a(`row-move`,e,t,n),o().dynamicRows?.onRowMove?.(e,t,n)}},d=()=>({rowEdit:Fe({data:r,rowKey:i,onSave:u.onSave,onCancel:u.onCancel,columns:n.columns}),cellEdit:Ie({data:r,rowKey:i,onSave:u.onSave,columns:n.columns}),modalEdit:J({data:r,rowKey:i,onSave:u.onSave,onCancel:u.onCancel})}),f=()=>Ge({data:c(()=>r()),rowKey:i,childRowKey:e=>e.id,get defaultExpandedKeys(){return o().defaultExpandedKeys},get onLoadData(){return o().onLoadExpandData},onError:(e,t)=>{let n=o().onExpandError;n?n(e,t):s.error(l(`table.loadFailed`),e)},get renderContent(){return o().renderExpandContent},get rowExpandable(){return o().rowExpandable},get enableSelection(){return o().enableSelection},get defaultCheckedKeys(){return o().defaultCheckedKeys},get rowCheckable(){return o().rowCheckable},get maxSelection(){return o().maxSelection},get enableChildSelection(){return o().enableChildSelection},get childRowCheckable(){return o().childRowCheckable},get enableParentChildLink(){return o().enableParentChildLink},get parentChildLinkMode(){return o().parentChildLinkMode},onExpandChange:u.onExpandChange,onSelectionChange:u.onSelectionChange,onChildSelectionChange:u.onChildSelectionChange}),p=()=>mt(c(()=>r()),c(()=>({...o().dynamicRows,enabled:!!o().dynamicRows,feedback:o().feedback,locale:o().locale,onRowChange:u.onRowChange,onSelectionChange:u.onRowSelectionChange,onRowAdd:u.onRowAdd,onRowDelete:u.onRowDelete,onRowCopy:u.onRowCopy,onRowMove:u.onRowMove}))),m=d(),h=f(),g=p();return{editStates:m,expandState:h,dynamicRowsState:g,stateManager:{edit:{start(e,t){let n=o().editMode;n===`modal`?m.modalEdit.startEdit(e):n===`cell`&&t?m.cellEdit.startEditCell(e,t):(n===`row`||n===`both`)&&m.rowEdit.startEditRow(e)},cancel(){m.modalEdit.isModalVisible.value?m.modalEdit.cancelEdit():m.cellEdit.editingCell.value.rowKey===null?m.rowEdit.editingRowKey.value!==null&&m.rowEdit.cancelEditRow():m.cellEdit.cancelEditCell()},async save(){m.modalEdit.isModalVisible.value?await m.modalEdit.saveEdit():m.cellEdit.editingCell.value.rowKey===null?m.rowEdit.editingRowKey.value!==null&&await m.rowEdit.saveEditRow():await m.cellEdit.saveEditCell()},isEditing(e,t){return o().editMode===`modal`?m.modalEdit.isEditingRow(e):t?m.cellEdit.isEditingCell(e,t):m.rowEdit.isEditingRow(e)},getEditingData(){return m.modalEdit.isModalVisible.value?m.modalEdit.editingData.value:m.rowEdit.editingRowKey.value===null?null:m.rowEdit.getEditingRowData(m.rowEdit.editingRowKey.value)}},expand:{async row(e){if(h){let t=[...h.expandedKeys.value];t.includes(e)||(t.push(e),h.handleExpandChange(t))}},collapse(e){if(h){let t=h.expandedKeys.value.filter(t=>t!==e);h.handleExpandChange(t)}},async toggle(e){h?.expandedKeys.value.includes(e)?this.collapse(e):await this.row(e)},async all(){await h?.expandAll()},collapseAll(){h?.collapseAll()},isExpanded(e){return h?.expandedKeys.value.includes(e)??!1}},selection:{select(e){if(h?.checkedKeys.value&&!h.checkedKeys.value.includes(e)){let t=[...h.checkedKeys.value,e];h.handleSelectionChange(t)}},unselect(e){if(h?.checkedKeys.value){let t=h.checkedKeys.value.filter(t=>t!==e);h.handleSelectionChange(t)}},all(){h?.selectAll()},clear(){h?.clearSelection()},isSelected(e){return h?.checkedKeys.value.includes(e)??!1},getSelected(){return h?.checkedKeys.value?r().filter(e=>h.checkedKeys.value.includes(i(e))):[]}},childSelection:{select(e,t){if(h?.childSelections.value){let n=h.childSelections.value.get(e)||[];if(!n.includes(t)){let r=[...n,t];h.childSelections.value.set(e,r),a(`child-selection-change`,e,r,[])}}},unselect(e,t){if(h?.childSelections.value){let n=(h.childSelections.value.get(e)||[]).filter(e=>e!==t);h.childSelections.value.set(e,n),a(`child-selection-change`,e,n,[])}},selectAll(e){if(h?.childSelections.value&&h.expandDataMap?.value){let t=h.expandDataMap.value.get(e)||[],n=t.map(e=>e.id);h.childSelections.value.set(e,n),a(`child-selection-change`,e,n,t)}},clear(e){h?.childSelections.value&&(h.childSelections.value.set(e,[]),a(`child-selection-change`,e,[],[]))},getSelected(e){if(!h?.childSelections.value||!h.expandDataMap?.value)return[];let t=h.childSelections.value.get(e)||[];return(h.expandDataMap.value.get(e)||[]).filter(e=>t.includes(e.id))}},dynamicRows:{add(){g?.addRow()},insert(){g?.insertRow()},delete(){g?.deleteRow()},copy(){g?.copyRow()},moveUp(){g?.moveRowUp()},moveDown(){g?.moveRowDown()},clearSelection(){g?.clearSelection()},getSelected(){return g?.selectedRowData.value||null},async print(e){g&&e&&await g.handlePrint(O(e))},async download(e,t){g&&e&&await g.handleDownload(O(e),t)}},clearAllSelections(){h?.clearAllSelections()}},expandedKeys:c(()=>h?.expandedKeys.value??[]),checkedKeys:c(()=>h?.checkedKeys.value??[]),eventHandlers:u}}const $={page:1,pageSize:10,showSizePicker:!0,showQuickJumper:!0,pageSizes:[10,20,50,100],simple:!1,size:`medium`};function gt(e,t){return!Number.isFinite(e)||(e??0)<=0?t:Math.max(1,Math.trunc(e))}function _t(e){let{data:t,config:n,emit:r}=e,i=D($.page),a=D($.pageSize),o=c(()=>{let e=typeof t==`function`?t():j(t);return Array.isArray(e)?e:[]}),s=c(()=>{let e=n.value;return e?.remote?Math.max(0,Math.trunc(e.total??o.value.length)):o.value.length}),l=()=>n.value?.enabled?Math.max(1,Math.ceil(s.value/a.value)):1,u=(e,t)=>{let n=Math.min(gt(e,1),l());i.value!==n&&(i.value=n,t&&r?.(`pagination-change`,n,a.value))},d=e=>u(e,!0),f=e=>{let t=gt(e,$.pageSize),n=a.value!==t;a.value=t,i.value=1,n&&r?.(`pagination-change`,1,t)},p=()=>u(1,!0),m=c(()=>{let e=n.value;if(!e?.enabled||e.remote)return o.value;let t=(i.value-1)*a.value;return o.value.slice(t,t+a.value)}),h=c(()=>{let e=n.value;return e?.enabled?{page:i.value,pageSize:a.value,itemCount:s.value,showSizePicker:e.showSizePicker??$.showSizePicker,showQuickJumper:e.showQuickJumper??$.showQuickJumper,pageSizes:e.pageSizes??$.pageSizes,simple:e.simple??$.simple,size:e.size??$.size,prefix:e=>`共 ${e.itemCount??0} 条`,suffix:e=>(e.itemCount??0)>0?`第 ${e.startIndex+1}-${e.endIndex} 条`:`暂无数据`,"onUpdate:page":d,"onUpdate:pageSize":f}:null});return M(()=>[n.value?.page,n.value?.pageSize],([e,t])=>{a.value=gt(t,$.pageSize),i.value=Math.min(gt(e,$.page),l())},{immediate:!0}),M([s,a],()=>{let e=Math.min(i.value,l());e!==i.value&&(i.value=e,r?.(`pagination-change`,e,a.value))}),{currentPage:i,currentPageSize:a,paginatedData:m,paginationConfig:h,handlePageChange:d,handlePageSizeChange:f,resetToFirstPage:p,getTotalPages:l}}function vt(r){let{actions:i,config:a,tableManager:o,rowKey:s,onRowDeleted:c,onViewDetail:l}=r,u=t(()=>a.value.feedback),{t:d}=e(()=>a.value.locale),f=e=>e===`edit`?a.value.editable&&i.value?.edit!==!1:typeof i.value?.[e]==`function`,p=e=>e!==!1&&typeof e==`function`,m=e=>e&&typeof e==`object`&&`data`in e?e.data:e,h=(e,t,r=`primary`,i)=>v(P,{size:`small`,type:r,quaternary:!0,onClick:i},()=>[v(n,{name:e,size:14,title:t})]),g=async(e,t)=>{let n=s(e),r=i.value?.edit;if(p(r)){try{await r(e,t)}catch(e){u.error(d(`table.actionFailed`,{action:d(`common.edit`)}),e)}return}a.value.editMode===`modal`?o.editStates.modalEdit.startEdit(n,{...e}):o.editStates.rowEdit.startEditRow(n)},_=async(e,t,n)=>{try{await e(t,n),u.success(d(`table.deleteSuccess`)),c?.(t,n)}catch(e){throw u.error(d(`table.deleteFailed`),e),e}},y=async(e,t)=>{let n=i.value?.delete;p(n)&&await u.confirm({title:d(`table.deleteTitle`),content:d(`table.deleteContent`),positiveText:d(`common.confirm`),negativeText:d(`common.cancel`),type:`warning`})&&await _(n,e,t)},b=async(e,t)=>{let n=i.value?.detail;if(!p(n)){l?.(e);return}try{let r=m(await n(e,t));l?.(r||e)}catch(t){u.error(d(`table.detailFailed`),t),l?.(e)}},x=e=>o.editStates.rowEdit.isEditingRow(e)?[h(`mdi:check`,d(`common.save`),`primary`,()=>void o.editStates.rowEdit.saveEditRow().catch(e=>u.error(d(`table.actionFailed`,{action:d(`common.save`)}),e))),h(`mdi:close`,d(`common.cancel`),`default`,()=>o.editStates.rowEdit.cancelEditRow())]:[h(`mdi:pencil`,d(`common.edit`),`warning`,()=>o.editStates.rowEdit.startEditRow(e))],S=(e,t)=>{let n=[];return f(`detail`)&&n.push(h(`mdi:eye`,d(`common.detail`),`info`,()=>void b(e,t))),f(`edit`)&&(a.value.editMode===`modal`||p(i.value?.edit))&&n.push(h(`mdi:pencil`,d(`common.edit`),`warning`,()=>void g(e,t))),f(`delete`)&&n.push(h(`mdi:delete`,d(`common.delete`),`error`,()=>void y(e,t).catch(()=>void 0))),n},C=(e,t)=>{let r=i.value?.custom;if(!r?.length)return null;let a=r.filter(n=>n.show?n.show(e,t):!0);return a.length?v(I,{options:a.map(r=>{let i=typeof r.label==`function`?r.label(e,t):r.label,a=typeof r.icon==`function`?r.icon(e,t):r.icon;return{label:i,key:r.key,icon:()=>v(n,{name:a,size:14}),disabled:r.disabled?.(e,t)||!1}}),onSelect:n=>{let r=a.find(e=>e.key===n);if(!r)return;let i=typeof r.label==`function`?r.label(e,t):r.label;Promise.resolve(r.onClick(e,t)).catch(e=>u.error(d(`table.actionFailed`,{action:i}),e))}},()=>h(`mdi:dots-horizontal`,d(`table.moreActions`),`default`,()=>{})):null};return{renderActions:(e,t)=>{if(i.value?.render)return i.value.render(e,t);let n=s(e),r=[`row`,`both`].includes(a.value.editMode);if(r&&o.editStates.rowEdit.isEditingRow(n))return v(he,{size:2,wrap:!1},()=>x(n));let c=p(i.value?.edit),l=[...r&&!c?x(n):[],...S(e,t)],u=C(e,t);return u&&l.push(u),v(he,{size:2,wrap:!1},()=>l)},isActionEnabled:f}}const yt=Symbol(`C_TABLE_GLOBAL_CONFIG`),bt={date:{format:`YYYY-MM-DD`},datetime:{format:`YYYY-MM-DD HH:mm:ss`},currency:{prefix:`¥`,precision:2},percent:{precision:2,suffix:`%`},number:{precision:0}};function xt(e,t){if(e==null||e===``)return`-`;let n=new Date(typeof e==`number`?e:String(e));if(Number.isNaN(n.getTime()))return String(e);let r=e=>String(e).padStart(2,`0`);return t.replace(`YYYY`,String(n.getFullYear())).replace(`MM`,r(n.getMonth()+1)).replace(`DD`,r(n.getDate())).replace(`HH`,r(n.getHours())).replace(`mm`,r(n.getMinutes())).replace(`ss`,r(n.getSeconds()))}function St(e,t){if(e==null||e===``)return`-`;let n=Number(e);return Number.isNaN(n)?String(e):n.toLocaleString(`zh-CN`,{minimumFractionDigits:t,maximumFractionDigits:t})}const Ct={date:(e,t)=>xt(e,t.format??`YYYY-MM-DD`),datetime:(e,t)=>xt(e,t.format??`YYYY-MM-DD HH:mm:ss`),currency:(e,t)=>{let n=St(e,t.precision??2);return n===`-`?`-`:`${t.prefix??`¥`}${n}${t.suffix??``}`},percent:(e,t)=>{if(e==null||e===``)return`-`;let n=Number(e);return Number.isNaN(n)?String(e):`${(n*100).toFixed(t.precision??2)}${t.suffix??`%`}`},number:(e,t)=>St(e,t.precision??0)};function wt(e,t,n,r){if(n.fn)return n.fn(e,t);if(n.type===`enum`)return n.mapping?n.mapping[String(e)]??String(e??`-`):String(e??`-`);let i=n.type&&Ct[n.type];return i?i(e,{...{...bt,...r}[n.type],...n.config}):String(e??`-`)}function Tt(){return _()?y(yt,{}):{}}const Et=(e,t)=>t===void 0?e:t&&e&&typeof t==`object`&&typeof e==`object`&&!Array.isArray(t)&&!Array.isArray(e)?{...e,...t}:t;function Dt(e,t){let n=t.defaults??{},r={...n,...e};if([`edit`,`pagination`,`expand`,`selection`,`dynamicRows`,`toolbar`,`display`,`virtualScroll`,`summary`,`columnDrag`,`tree`,`rowDrag`,`crossPageSelection`,`export`,`formatterConfig`,`error`,`batchActions`].forEach(t=>{let i=Et(n[t],e[t]);i!==void 0&&(r[t]=i)}),t.display){let e=typeof r.display==`object`?r.display:{};r.display={...t.display,...e}}if(t.pageSize&&r.pagination!==!1){let e=typeof r.pagination==`object`?r.pagination:{};e.pageSize||(r.pagination={...e,pageSize:t.pageSize})}return r}const Ot={number:fe,switch:ge,input:L,email:L,mobile:L,date:e=>v(le,{...e,type:`date`,format:`yyyy-MM-dd`}),select:e=>v(R,{...e,options:e.options||[]}),textarea:e=>v(L,{...e,type:`textarea`,rows:3})},kt={number:`inputNumber`,date:`datePicker`,textarea:`textarea`,select:`select`,switch:`switch`},At=e=>e.map(e=>{let t=e.required?[{required:!0,message:`请输入${e.title}`,trigger:[`blur`,`input`],validator:async(t,n)=>{if(!n&&n!==0&&n!==!1)throw Error(`请输入${e.title}`)}}]:[];return{prop:e.key,label:e.title||e.key,type:kt[e.editType||`input`]||`input`,placeholder:`请输入${e.title}`,rules:t,attrs:e.editProps||{},layout:{span:1},show:!0}});function jt(e,t,n){if(e.editRender)return e.editRender(t,{},0);let r=e,i={value:t,"onUpdate:value":n,placeholder:`请输入${r.title??``}`,style:{width:`100%`},...e.editProps};return v(Ot[e.editType||`input`]||Ot.input,i)}function Mt(e,t,n,r,i){return e.render?e.render(t,n)??String(r??``):e.formatter?wt(r,t,e.formatter,i):String(r??``)}function Nt(e,t,r,i,a){let o=(e,t,r)=>v(`button`,{class:`cell-action-btn cell-action-${e}`,title:t,type:`button`,onClick:e=>{e.stopPropagation(),e.preventDefault(),r(e)}},[v(n,{name:`mdi:${e===`save`?`check`:`close`}`,title:e===`save`?`保存`:`取消`,size:12})]);return v(`div`,{class:`cell-editing-container`},[v(`div`,{class:`cell-editing-input`},[jt(e,t,r)]),v(`div`,{class:`cell-editing-actions`},[o(`save`,`保存`,i),o(`cancel`,`取消`,a)])])}function Pt(e,t,r,i,a,o){let s;return s=e.render?e.render(t,r)??String(i??``):e.formatter?wt(i,t,e.formatter,o):String(i??``),v(`div`,{class:`cell-edit-wrapper`},[v(`span`,{class:`cell-value`},s),v(n,{name:`mdi:square-edit-outline`,title:`编辑`,class:`cell-edit-icon`,size:14,clickable:!0,onClick:e=>{e.stopPropagation(),a()}})])}function Ft(e){let{rawColumns:t,config:n,columnWidth:r,rowKey:i,tableManager:a,actionsRenderer:o,editModeChecker:s,showActionsColumn:l}=e,u=D([]),d=D(!1),f=e=>{let t=u.value.find(e=>e.key===`_actions`),n=e.filter(e=>e.key!==`_actions`);u.value=l.value?[...n,t||{key:`_actions`,title:`操作`,width:180,editable:!1,visible:!0,fixed:`right`}]:n};M([t,l],([e])=>{e?.length?f(e):u.value=[]},{deep:!0,immediate:!0});let p=(e,t,r,i)=>{let o=e.key??``,s=t[o],{isEditingCell:c,getEditingCellValue:l,updateEditingCellValue:u,saveEditCell:d,cancelEditCell:f,startEditCell:p}=a.editStates.cellEdit;return c(i,o)?Nt(e,l(i,o)??s,e=>u(i,o,e),()=>d(),()=>f()):Pt(e,t,r,s,()=>p(i,o),n.value.formatterConfig)},m=(e,t,r)=>{let o=e.key??``,c=t[o],l=i(t),u=s.value;return u.isNonEditable(e)?Mt(e,t,r,c,n.value.formatterConfig):u.isRowEditMode()&&a.editStates.rowEdit.isEditingRow(l)?jt(e,a.editStates.rowEdit.getEditingRowData(l)?.[o]??c,e=>a.editStates.rowEdit.updateEditingRowData(l,o,e)):u.isCellEditMode()?p(e,t,r,l):Mt(e,t,r,c,n.value.formatterConfig)},h=e=>{let t=e.width||r||180;return typeof t==`number`?t:180},g=e=>{let t=e;return{key:`_index`,title:t.title||`序号`,width:typeof(t.width||50)==`number`&&t.width||50,titleAlign:`center`,align:`center`,render:(e,t)=>t+1,fixed:e.fixed}},_=e=>{let t=e,n={...t,width:h(e),titleAlign:t.titleAlign||`center`,align:t.align||`center`,render:e.render||((t,n)=>m(e,t,n))};return e.fixed&&(n.fixed=e.fixed),e.resizable&&typeof n.width==`number`&&(n.resizable=!0,n.minWidth=e.minWidth||80,n.maxWidth=e.maxWidth||500),n};return{reactiveColumns:u,showSettingsPanel:d,computedColumns:c(()=>{let e=u.value.filter(e=>{let t=e;return t.visible!==!1&&t.key!==`_actions`}).map(e=>e.type===`index`?g(e):_(e));if(a.dynamicRowsState&&(e=a.dynamicRowsState.enhanceColumns(e)),a.expandState&&(n.value.expandable||n.value.enableSelection)&&(e=a.expandState.getTableColumns(e)),l.value){let t=u.value.find(e=>e.key===`_actions`);e.push({key:`_actions`,title:`操作`,width:t?.width??180,className:`c-table-actions-column`,align:`center`,titleAlign:`center`,render:o,fixed:t?.fixed})}return e}),computedScrollX:c(()=>{if(e.scrollX!==void 0)return e.scrollX;if(u.value.some(e=>{let t=e;return t.fixed&&t.visible!==!1}))return u.value.filter(e=>e.visible!==!1).reduce((e,t)=>e+h(t),0)+200}),handleColumnChange:e=>{u.value=e.map(e=>{let t=e;return{...e,visible:t.visible!==!1,fixed:e.fixed,width:t.width||r,align:t.align||`center`,titleAlign:t.titleAlign||`center`}})}}}function It(e){let{data:t,onReorder:n,onSort:r}=e,i=D(!1),a=null,o=0,s=!1,c=()=>{a?.destroy(),a=null,i.value=!1},l=async l=>{let u=++o;c();let d=A(e.config);if(!(!d?.enabled||!l||s))try{let{default:e}=await import(`sortablejs`);if(s||u!==o)return;let c=l.querySelector(`.n-data-table-tbody`);if(!c)return;a=new e(c,{animation:d.animationDuration??150,handle:d.handleSelector,ghostClass:d.ghostClass??`row-drag-ghost`,chosenClass:d.chosenClass??`row-drag-chosen`,onStart:()=>{i.value=!0},onEnd:e=>{if(i.value=!1,e.oldIndex==null||e.newIndex==null||e.oldIndex===e.newIndex)return;let a=[...t.value],[o]=a.splice(e.oldIndex,1);o&&(a.splice(e.newIndex,0,o),n?.(a),r?.(o,e.oldIndex,e.newIndex))}})}catch{}},u=()=>{o+=1,c()};return ee(()=>{s=!0,u()}),{initRowDrag:l,destroyRowDrag:u,isDragging:i}}function Lt(e){let{allData:t,rowKey:n}=e,r=D(new Set),i=()=>{let t=A(e.config)?.maxSelection;return Number.isFinite(t)&&(t??0)>0?Math.trunc(t):void 0},a=c(()=>r.value.size),o=e=>e.map(e=>n(e)).filter(e=>r.value.has(e)),s=(t,a)=>{if(!A(e.config)?.enabled)return;let o=new Set(r.value);for(let e of a)o.delete(n(e));for(let e of t){let t=i();if(t&&o.size>=t)break;o.add(e)}r.value=o},l=()=>{if(!A(e.config)?.enabled)return;let a=[...new Set(t.value.map(e=>n(e)))],o=i();r.value=new Set(o?a.slice(0,o):a)},u=a=>{if(!A(e.config)?.enabled||!t.value.some(e=>n(e)===a))return!1;if(r.value.has(a))return!0;let o=i();return o&&r.value.size>=o?!1:(r.value=new Set([...r.value,a]),!0)},d=e=>{if(!r.value.has(e))return;let t=new Set(r.value);t.delete(e),r.value=t},f=()=>{r.value=new Set};return M(t,e=>{let t=new Set(e.map(e=>n(e))),i=new Set([...r.value].filter(e=>t.has(e)));i.size!==r.value.size&&(r.value=i)}),M(()=>[A(e.config)?.enabled,i()],([e,t])=>{if(!e){f();return}t&&r.value.size>t&&(r.value=new Set([...r.value].slice(0,t)))}),{selectedKeys:r,selectedCount:a,getPageCheckedKeys:o,handlePageSelectionChange:s,selectAll:l,select:u,unselect:d,clearAll:f,getSelectedRows:()=>t.value.filter(e=>r.value.has(n(e))),isSelected:e=>r.value.has(e)}}function Rt(e,t){return e.filter(e=>typeof e.key!=`string`||e.key.startsWith(`_`)||e.type===`selection`||e.type===`expand`?!1:t?.length?t.includes(e.key):e.visible!==!1)}function zt(e,t,n){let r=e[t.key];return t.formatter?wt(r,e,t.formatter,n):r==null?``:typeof r==`boolean`?r?`是`:`否`:String(r)}function Bt(e,t,n){let r=n&&/^[=+\-@\t\r]/.test(e)?`'${e}`:e;return r.includes(t)||r.includes(`"`)||r.includes(`
|
|
2
|
+
`)||r.includes(`\r`)?`"${r.replace(/"/g,`""`)}"`:r}function Vt(e){return[...e||`export`].map(e=>e.charCodeAt(0)<32||`<>:"/\\|?*`.includes(e)?`_`:e).join(``).trim()||`export`}function Ht(e,t,n){let r=n.csvSeparator??`,`,i=n.preventFormulaInjection!==!1,a=Rt(t,n.columnKeys),o=[];n.includeHeader!==!1&&o.push(a.map(e=>Bt(e.title??``,r,i)).join(r));for(let t of e){let e=a.map(e=>Bt(zt(t,e,n.formatterConfig),r,i));o.push(e.join(r))}Wt(new Blob([``+o.join(`
|
|
3
|
+
`)],{type:`text/csv;charset=utf-8;`}),`${Vt(n.filename)}.csv`)}async function Ut(e,t,n){let r=Rt(t,n.columnKeys),i;try{i=await import(`xlsx`)}catch(r){n.onFallback?.(`xlsx`,`csv`,r),Ht(e,t,{...n,format:`csv`});return}let a=r.map(e=>e.title??e.key??``),o=e.map(e=>r.map(t=>zt(e,t,n.formatterConfig))),s=n.includeHeader===!1?o:[a,...o],c=i.utils.aoa_to_sheet(s),l=i.utils.book_new();i.utils.book_append_sheet(l,c,`Sheet1`),i.writeFile(l,`${Vt(n.filename)}.xlsx`)}function Wt(e,t){let n=URL.createObjectURL(e),r=document.createElement(`a`);r.href=n,r.download=t,r.style.display=`none`,document.body.appendChild(r),r.click(),document.body.removeChild(r),setTimeout(()=>URL.revokeObjectURL(n),0)}async function Gt(e,t,n={}){n.format===`xlsx`?await Ut(e,t,n):Ht(e,t,n)}const Kt=e=>[{label:e.fixed?`✓ 取消固定`:`不固定`,key:`none`,disabled:!e.fixed},{label:e.fixed===`left`?`✓ 固定左侧`:`固定左侧`,key:`left`,disabled:!1},{label:e.fixed===`right`?`✓ 固定右侧`:`固定右侧`,key:`right`,disabled:!1}],qt=[`_actions`],Jt=[`selection`,`expand`],Yt=e=>qt.includes(e.key)||Jt.includes(e.type),Xt={class:`column-management-tab`},Zt={class:`search-row`},Qt={class:`resizable-control`},$t={class:`top-actions-bar`},en={class:`stats-info`},tn={class:`quick-actions`},nn=[`draggable`,`onDragstart`,`onDragover`,`onDrop`],rn={class:`column-info`},an={class:`column-controls`},on={class:`column-details`},sn={class:`column-actions`},cn={class:`drag-controls`};var ln=r(g({name:`ColumnSettings`,__name:`index`,props:{columns:{},persistKey:{}},emits:[`change`],setup(e,{emit:t}){let r=e,i=t,a=e=>{if(!r.persistKey)return[...e];try{let t=localStorage.getItem(`c_table_cols_${r.persistKey}`);if(!t)return[...e];let n=JSON.parse(t);if(!Array.isArray(n))return[...e];let i=new Map(n.map((e,t)=>[e.key,{...e,order:t}])),a=e.map(e=>{let t=i.get(e.key);return t?{...e,visible:t.visible??e.visible,width:t.width??e.width,fixed:t.fixed??e.fixed}:{...e}});return a.sort((e,t)=>(i.get(e.key)?.order??999)-(i.get(t.key)?.order??999)),a}catch{return[...e]}},o=e=>{if(r.persistKey)try{let t=e.map(e=>({key:e.key,visible:e.visible,width:e.width,fixed:e.fixed}));localStorage.setItem(`c_table_cols_${r.persistKey}`,JSON.stringify(t))}catch{}},p=D(a(r.columns)),g=D(``),_=D(),v=D(null),y=D(null),b=D(!1);te(()=>{b.value=p.value.some(e=>e.resizable===!0),r.persistKey&&i(`change`,[...p.value])}),M(()=>r.columns,e=>{p.value=a(e),b.value=p.value.some(e=>e.resizable===!0)},{deep:!0});let x=c(()=>{if(!g.value)return p.value;let e=g.value.toLowerCase();return p.value.filter(t=>String(t.title??``).toLowerCase().includes(e)||String(t.key??``).toLowerCase().includes(e))}),S=c(()=>p.value.filter(e=>e.visible!==!1).length),ee=c(()=>p.value.length),T=e=>{p.value.forEach(t=>{t.key!==`_actions`&&(t.visible=e)}),F()},ne=()=>T(!0),ie=()=>T(!1),ae=e=>{let t=x.value[e];return p.value.findIndex(e=>e.key===t.key)},O=(e,t)=>{let n=ae(e);n!==-1&&(t(p.value[n]),F())},A=(e,t)=>{O(e,e=>{e.visible=t})},oe=(e,t)=>{O(e,e=>{e.fixed=t===`none`?void 0:t})},F=()=>{o(p.value),i(`change`,[...p.value])},ce=()=>{p.value=[...r.columns],F()},le=e=>{p.value.forEach(t=>{Yt(t)||(t.resizable=e,e&&(t.minWidth=t.minWidth||80,t.maxWidth=t.maxWidth||500))}),F()},ue=(e,t)=>{let n=ae(e),r=ae(t);if(n!==-1&&r!==-1){let[e]=p.value.splice(n,1);p.value.splice(r,0,e),F()}},de=(e,t)=>{if(x.value[e].key===`_actions`){t.preventDefault();return}v.value=e,t.dataTransfer&&(t.dataTransfer.effectAllowed=`move`)},fe=(e,t)=>{t.preventDefault(),!(v.value===null||x.value[e].key===`_actions`)&&(y.value=e,t.dataTransfer&&(t.dataTransfer.dropEffect=`move`))},pe=e=>{v.value===null||x.value[e].key===`_actions`||(ue(v.value,e),v.value=null,y.value=null)},me=()=>{v.value=null,y.value=null};return(e,t)=>(E(),d(`div`,Xt,[u(` 搜索框和列宽调整开关 `),f(`div`,Zt,[h(j(L),{value:g.value,"onUpdate:value":t[0]||=e=>g.value=e,placeholder:`搜索列名...`,clearable:``,class:`search-input`},{prefix:N(()=>[h(n,{name:`mdi:magnify`})]),_:1},8,[`value`]),f(`div`,Qt,[h(n,{name:`mdi:arrow-split-vertical`,size:`14`,title:b.value?`开启后可拖拽列边界调整宽度`:`允许调整列宽`},null,8,[`title`]),h(j(B),{style:{fontSize:`12px`,marginLeft:`4px`}},{default:N(()=>[...t[2]||=[m(` 列宽调整 `,-1)]]),_:1}),h(j(ge),{value:b.value,"onUpdate:value":[t[1]||=e=>b.value=e,le],size:`small`,style:{"margin-left":`6px`}},null,8,[`value`])])]),u(` 顶部操作栏:统计信息和快捷操作按钮 `),f(`div`,$t,[f(`div`,en,[h(j(B),{depth:`3`,style:{fontSize:`13px`}},{default:N(()=>[m(` 已选 `+k(S.value)+` / 总共 `+k(ee.value)+` 列 `,1)]),_:1})]),f(`div`,tn,[h(j(he),{size:6},{default:N(()=>[h(j(P),{size:`tiny`,onClick:ne},{default:N(()=>[...t[3]||=[m(` 全选 `,-1)]]),_:1}),h(j(P),{size:`tiny`,onClick:ie},{default:N(()=>[...t[4]||=[m(` 全不选 `,-1)]]),_:1}),h(j(P),{size:`tiny`,onClick:ce},{default:N(()=>[...t[5]||=[m(` 重置 `,-1)]]),_:1})]),_:1})])]),u(` 列列表 `),f(`div`,{ref_key:`listRef`,ref:_,class:`column-list`},[(E(!0),d(s,null,re(x.value,(e,r)=>(E(),d(`div`,{key:e.key,class:C([`column-item`,{disabled:e.key===`_actions`,"fixed-left":e.fixed===`left`,"fixed-right":e.fixed===`right`}]),draggable:e.key!==`_actions`,onDragstart:e=>de(r,e),onDragover:e=>fe(r,e),onDragend:me,onDrop:e=>pe(r)},[f(`div`,rn,[f(`div`,an,[h(n,{name:`mdi:drag`,size:`16`,class:C([`drag-handle`,{disabled:e.key===`_actions`}])},null,8,[`class`]),h(j(se),{checked:e.visible!==!1,disabled:e.key===`_actions`,"onUpdate:checked":e=>A(r,e)},null,8,[`checked`,`disabled`,`onUpdate:checked`])]),f(`div`,on,[h(j(he),{align:`center`,size:6},{default:N(()=>[h(j(B),{strong:``,style:{fontSize:`13px`}},{default:N(()=>[m(k(e.title||e.key),1)]),_:2},1024),e.fixed===`left`?(E(),l(j(_e),{key:0,size:`tiny`,type:`info`},{default:N(()=>[...t[6]||=[m(` 左固定 `,-1)]]),_:1})):u(`v-if`,!0),e.fixed===`right`?(E(),l(j(_e),{key:1,size:`tiny`,type:`warning`},{default:N(()=>[...t[7]||=[m(` 右固定 `,-1)]]),_:1})):u(`v-if`,!0)]),_:2},1024),h(j(B),{depth:`3`,style:{fontSize:`11px`}},{default:N(()=>[m(k(e.key),1)]),_:2},1024)])]),f(`div`,sn,[f(`div`,cn,[h(n,{name:`mdi:chevron-up`,size:`14`,title:`上移`,clickable:r!==0,class:C({disabled:r===0}),onClick:e=>r!==0&&ue(r,r-1)},null,8,[`clickable`,`class`,`onClick`]),h(n,{name:`mdi:chevron-down`,size:`14`,title:`下移`,clickable:r!==x.value.length-1,class:C({disabled:r===x.value.length-1}),onClick:e=>r!==x.value.length-1&&ue(r,r+1)},null,8,[`clickable`,`class`,`onClick`])]),h(j(I),{options:j(Kt)(e),onSelect:e=>oe(r,e)},{default:N(()=>[h(n,{name:`mdi:pin`,size:`14`,title:`固定列`,clickable:``,style:w({color:e.fixed?`var(--n-primary-color)`:void 0})},null,8,[`style`])]),_:2},1032,[`options`,`onSelect`])])],42,nn))),128))],512)]))}}),[[`__scopeId`,`data-v-022be568`]]);function un(e){return e}function dn(e){return e}function fn(e,t){let n=new Map,r=[];return e.forEach((e,i)=>{let a;try{a=t(e)}catch(t){r.push({type:`error`,row:e,index:i,cause:t});return}if(a==null||a===``){r.push({type:`missing`,row:e,index:i});return}let o=n.get(a);if(o!==void 0){r.push({type:`duplicate`,row:e,index:i,key:a,firstIndex:o});return}n.set(a,i)}),r}const pn={key:1,class:`table-toolbar`},mn={class:`toolbar-left`},hn={class:`toolbar-right`},gn={key:2,class:`batch-actions-bar`},_n={class:`batch-info`},vn={key:3,class:`table-error-state`},yn={class:`error-content`},bn={class:`error-message`};var xn=r(g({name:`C_Table`,inheritAttrs:!1,__name:`index`,props:{columns:{},data:{},loading:{},rowKey:{type:[String,Function],default:`id`},config:{default:()=>({})},crud:{}},emits:[`pagination-change`,`row-delete`,`batch-action-error`,`row-key-error`,`expand-change`,`selection-change`,`child-selection-change`,`parent-child-link-change`,`update:data`,`save`,`cancel`,`edit-error`,`row-add`,`row-copy`,`row-move`,`row-selection-change`,`view-detail`,`column-change`],setup(r,{expose:g,emit:_}){let v=r,y=_,C=(e,...t)=>{if(y(e,...t),v.crud)return{save:v.crud.save,cancel:v.crud.handleCancel,"pagination-change":v.crud.handlePaginationChange,"row-delete":v.crud.handleRowDelete,"view-detail":v.crud.detail?.show}[e]?.(...t)},w=Tt(),T=e=>typeof v.rowKey==`function`?v.rowKey(e):e[v.rowKey],ne=c(()=>{let e=v.config||{};if(v.crud){let t={};v.crud.actions&&(t.actions=v.crud.actions.value),v.crud.pagination&&(t.pagination=v.crud.pagination.value??void 0),e={...t,...e}}return Dt(e,w)}),O=c(()=>v.columns??v.crud?.columns.value??[]),A=c(()=>Oe(ne.value)),oe=t(()=>A.value.feedback),{t:F}=e(()=>A.value.locale),se=c(()=>ke(A.value)),le=e=>e&&typeof e==`object`&&`value`in e?e.value:e,I=c(()=>le(v.data)??v.crud?.data.value??[]),L=c(()=>le(v.loading)??v.crud?.loading.value??!1),fe=``;M(()=>I.value.map(e=>{try{return T(e)}catch{return}}),()=>{if(ne.value.validateRowKeys===!1){fe=``;return}let e=fn(I.value,T);if(e.length===0){fe=``;return}let t=e.map(e=>[e.type,e.index,e.firstIndex,String(e.key)].join(`:`)).join(`|`);t!==fe&&(fe=t,oe.warning(F(`table.invalidRowKeys`,{count:e.length})),y(`row-key-error`,e))},{immediate:!0});let R=_t({data:I,config:c(()=>A.value.pagination),emit:C}),z=ht({config:A,data:()=>I.value,rowKey:T,emit:C,columns:()=>O.value}),ge=vt({actions:c(()=>ne.value.actions||{}),config:A,tableManager:z,rowKey:T,onRowDeleted:(e,t)=>y(`row-delete`,e,t),onViewDetail:e=>C(`view-detail`,e)}),_e=c(()=>{let{actions:e}=ne.value;return!!(A.value.showRowActions||e?.delete||e?.detail||e?.custom?.length||e?.render)}),B=Ft({rawColumns:O,config:A,columnWidth:A.value.columnWidth,scrollX:A.value.scrollX,rowKey:T,tableManager:z,actionsRenderer:ge.renderActions,editModeChecker:se,showActionsColumn:_e}),{showSettingsPanel:V,reactiveColumns:ve,computedColumns:ye,computedScrollX:be}=B,xe=It({data:R.paginatedData,rowKey:T,config:c(()=>A.value.rowDrag),onReorder:e=>{let t=A.value.pagination;if(!t?.enabled||t.remote){C(`update:data`,e);return}let n=(R.currentPage.value-1)*R.currentPageSize.value,r=[...I.value];r.splice(n,e.length,...e),C(`update:data`,r)},onSort:(e,t,n)=>{let r=A.value.pagination?.enabled&&!A.value.pagination.remote?(R.currentPage.value-1)*R.currentPageSize.value:0;y(`row-move`,e,t+r,n+r)}}),H=Lt({allData:I,rowKey:T,config:c(()=>A.value.crossPageSelection)}),U=c(()=>A.value.crossPageSelection?.enabled===!0),W=c(()=>U.value?H.selectedCount.value:z.checkedKeys?.value?.length??0),G=D(new Set),Se=async e=>{if(G.value.has(e.key))return;let t=U.value?[...H.selectedKeys.value]:z.checkedKeys?.value??[],n=U.value?H.getSelectedRows():I.value.filter(e=>t.includes(T(e)));G.value=new Set(G.value).add(e.key);try{await e.onClick(t,n),A.value.batchActions?.clearSelectionOnSuccess&&Ce()}catch(t){A.value.batchActions?.onError?.(t,e.key),y(`batch-action-error`,t,e.key)}finally{let t=new Set(G.value);t.delete(e.key),G.value=t}},Ce=()=>{U.value?H.clearAll():z.stateManager.selection.clear()},we=c(()=>U.value?H.getPageCheckedKeys(R.paginatedData.value):null),Te=e=>{U.value&&H.handlePageSelectionChange(e,R.paginatedData.value),z.expandState?.handleSelectionChange?.(e)},Ee=async()=>{let e=A.value.exportConfig??{};await Gt(I.value,O.value,{...e,formatterConfig:A.value.formatterConfig})},De=c(()=>{let e=A.value;if(e.summaryRender)return t=>{let n=e.summaryRender(t);return ye.value.map(e=>{let t=n[e.key];return t?{value:t.value,colSpan:t.colSpan??1}:{value:``}})}}),K=D(),Ae=null,je=0,Me=()=>{je+=1,Ae?.destroy(),Ae=null},Ne=async()=>{let e=++je;if(Ae?.destroy(),Ae=null,!(!A.value.enableColumnDrag||!K.value))try{let{default:t}=await import(`sortablejs`);if(e!==je||!K.value)return;let n=K.value.querySelector(`.n-data-table-thead tr`);if(!n)return;Ae=new t(n,{animation:A.value.columnDragAnimationDuration,handle:A.value.columnDragHandleClass?`.${A.value.columnDragHandleClass}`:void 0,filter:`.c-table-actions-column`,preventOnFilter:!0,ghostClass:`column-drag-ghost`,onEnd:e=>{if(e.oldIndex==null||e.newIndex==null)return;let t=[...ve.value],n=t.filter(e=>e.visible!==!1&&e.key!==`_actions`),r=n[e.oldIndex],i=n[e.newIndex];if(!r||!i||r===i)return;let a=t.indexOf(r),o=t.indexOf(i);t.splice(a,1),t.splice(o,0,r),B.handleColumnChange(t),y(`column-change`,t)}})}catch{}},Pe=D(),Fe=c(()=>({striped:A.value.striped,bordered:A.value.bordered,singleLine:A.value.singleLine,size:A.value.size,maxHeight:A.value.maxHeight})),q=D(),Ie=D(!1),J=D({}),Le=c({get:()=>z.editStates.modalEdit.isModalVisible.value,set:e=>{z.editStates.modalEdit.isModalVisible.value=e}}),Re=c(()=>O.value.filter(e=>e.editable!==!1)),ze=c(()=>`edit-form-${z.editStates.modalEdit.editingRowKey.value??`new`}`),Be=c(()=>At(Re.value));M(()=>z.editStates.modalEdit.editingData.value,e=>{e&&Object.keys(e).length>0&&(J.value=a(e))},{immediate:!0,deep:!0});let Y=null;M(Le,e=>{e&&Y&&(clearTimeout(Y),Y=null),e||(Y&&clearTimeout(Y),Y=setTimeout(()=>{J.value={},Y=null},300))});let Ve=async()=>{if(q.value){Ie.value=!0;try{await q.value.validate()}catch{Ie.value=!1;return}try{await z.editStates.modalEdit.saveEdit(J.value)}finally{Ie.value=!1}}},He=()=>{J.value={},z.editStates.modalEdit.cancelEdit()},Ue=e=>{B.handleColumnChange(e),y(`column-change`,B.reactiveColumns.value)},{edit:We,expand:X,selection:Z,dynamicRows:Q}=z.stateManager,Ge={startEdit:We.start,cancelEdit:We.cancel,saveEdit:We.save,expandRow:X.row,collapseRow:X.collapse,toggleExpand:X.toggle,expandAll:X.all,collapseAll:X.collapseAll,selectRow:e=>U.value?H.select(e):(Z.select(e),Z.isSelected(e)),unselectRow:e=>{U.value?H.unselect(e):Z.unselect(e)},selectAll:()=>{U.value?H.selectAll():Z.all()},clearSelection:Ce,isRowSelected:e=>U.value?H.isSelected(e):Z.isSelected(e),clearAllSelections:()=>{H.clearAll(),z.stateManager.clearAllSelections()},selectChildRow:z.stateManager.childSelection.select,unselectChildRow:z.stateManager.childSelection.unselect,selectAllChildren:z.stateManager.childSelection.selectAll,clearChildrenSelection:z.stateManager.childSelection.clear,getChildSelectedRows:z.stateManager.childSelection.getSelected,addRow:Q.add,insertRow:Q.insert,deleteRow:Q.delete,copyRow:Q.copy,moveRowUp:Q.moveUp,moveRowDown:Q.moveDown,clearRowSelection:Q?.clearSelection,getSelectedRowData:Q.getSelected,printTable:e=>Q.print(e??K.value),downloadTableScreenshot:(e,t)=>Q.download(e??K.value,t),resetToFirstPage:R.resetToFirstPage,getTotalPages:R.getTotalPages,getSelectedRows:()=>U.value?H.getSelectedRows():Z.getSelected(),getEditingData:We.getEditingData,isEditing:We.isEditing,isExpanded:X.isExpanded,getManager:()=>z.stateManager,exportData:Ee,crossPageSelection:{enabled:U,selectedKeys:H.selectedKeys,selectedCount:H.selectedCount,select:H.select,unselect:H.unselect,selectAll:H.selectAll,clearAll:H.clearAll,getSelectedRows:H.getSelectedRows}};return g(Ge),te(()=>{let e=v.crud?.tableRef;e&&(e.value=Ge),Ne(),K.value&&xe.initRowDrag(K.value)}),M([()=>A.value.enableColumnDrag,()=>A.value.columnDragHandleClass,()=>L.value,()=>ye.value.length],async()=>{await S(),await Ne()},{immediate:!0,flush:`post`}),M([()=>A.value.rowDrag,()=>L.value,()=>R.paginatedData.value.length,()=>R.currentPage.value],async()=>{await S(),K.value&&await xe.initRowDrag(K.value)},{immediate:!0,deep:!0,flush:`post`}),ee(()=>{Y&&clearTimeout(Y),Me(),xe.destroyRowDrag()}),(e,t)=>(E(),d(`div`,{ref_key:`tableWrapperRef`,ref:K,class:`c-table-wrapper`},[u(` 动态行工具栏 `),A.value.dynamicRows&&j(z).dynamicRowsState?(E(),l(ae(j(z).dynamicRowsState.renderToolbar(K.value)),{key:0})):u(`v-if`,!0),u(` 表格工具栏 `),A.value.showToolbar?(E(),d(`div`,pn,[f(`div`,mn,[ie(e.$slots,`toolbar-left`,{},void 0,!0),A.value.toolbarActions.length?(E(),l(i,{key:0,actions:A.value.toolbarActions,config:{...A.value.toolbarActionBarConfig}},null,8,[`actions`,`config`])):u(`v-if`,!0)]),f(`div`,hn,[ie(e.$slots,`toolbar-right`,{},void 0,!0),A.value.toolbarRightActions.length?(E(),l(i,{key:0,actions:A.value.toolbarRightActions,config:{align:`right`,...A.value.toolbarActionBarConfig}},null,8,[`actions`,`config`])):u(`v-if`,!0),A.value.exportConfig?(E(),l(n,{key:1,name:`mdi:download`,size:`18`,title:j(F)(`table.export`),clickable:``,class:`column-settings-btn`,onClick:t[0]||=e=>Ee()},null,8,[`title`])):u(`v-if`,!0),A.value.enableColumnSettings?(E(),l(n,{key:2,name:`mdi:cog`,size:`18`,title:j(F)(`table.settings`),clickable:``,class:`column-settings-btn`,onClick:t[1]||=e=>V.value=!0},null,8,[`title`])):u(`v-if`,!0)])])):u(`v-if`,!0),u(` 批量操作栏 `),A.value.batchActions?.enabled&&W.value>0?(E(),d(`div`,gn,[f(`span`,_n,k(j(F)(`table.selectedCount`,{count:W.value})),1),h(j(he),{size:8},{default:N(()=>[(E(!0),d(s,null,re(A.value.batchActions.actions||[],e=>(E(),l(j(P),{key:e.key,type:e.type||`default`,size:`small`,loading:G.value.has(e.key),disabled:G.value.has(e.key),onClick:t=>Se(e)},p({default:N(()=>[m(` `+k(e.label),1)]),_:2},[e.icon?{name:`icon`,fn:N(()=>[h(n,{name:e.icon,size:`14`},null,8,[`name`])]),key:`0`}:void 0]),1032,[`type`,`loading`,`disabled`,`onClick`]))),128)),h(j(P),{size:`small`,onClick:Ce},{default:N(()=>[m(k(j(F)(`table.cancelSelection`)),1)]),_:1})]),_:1})])):u(`v-if`,!0),u(` 错误状态 `),A.value.error?.show?(E(),d(`div`,vn,[ie(e.$slots,`error`,{error:A.value.error},()=>[f(`div`,yn,[h(n,{name:`mdi:alert-circle-outline`,size:`48`}),f(`p`,bn,k(A.value.error.message||j(F)(`table.loadFailed`)),1),A.value.error.onRetry?(E(),l(j(P),{key:0,type:`primary`,size:`small`,onClick:A.value.error.onRetry},{default:N(()=>[m(k(j(F)(`common.retry`)),1)]),_:1},8,[`onClick`])):u(`v-if`,!0)])],!0)])):u(`v-if`,!0),u(` 表格主体 `),A.value.error?.show?u(`v-if`,!0):(E(),l(j(ce),x({key:4,ref_key:`tableRef`,ref:Pe},{...Fe.value,...e.$attrs},{columns:j(ye),data:j(R).paginatedData.value,loading:L.value,"row-key":T,"expanded-row-keys":j(z).expandedKeys.value,"checked-row-keys":we.value??j(z).checkedKeys.value,"onUpdate:expandedRowKeys":j(z).expandState?.handleExpandChange,"onUpdate:checkedRowKeys":Te,"scroll-x":j(be),"virtual-scroll":A.value.virtualScroll,"min-row-height":A.value.virtualScroll?A.value.virtualItemHeight:void 0,"max-height":A.value.virtualScroll?A.value.virtualMaxHeight:A.value.maxHeight,summary:De.value,"summary-placement":A.value.summaryPosition,"children-key":A.value.treeEnabled?A.value.treeChildrenKey:void 0,indent:A.value.treeEnabled?A.value.treeIndent:void 0,"default-expand-all":A.value.treeEnabled?A.value.treeDefaultExpandAll:void 0,style:{width:`100%`}}),null,16,[`columns`,`data`,`loading`,`expanded-row-keys`,`checked-row-keys`,`onUpdate:expandedRowKeys`,`scroll-x`,`virtual-scroll`,`min-row-height`,`max-height`,`summary`,`summary-placement`,`children-key`,`indent`,`default-expand-all`])),u(` 分页 `),j(R).paginationConfig.value?(E(),l(j(me),x({key:5},j(R).paginationConfig.value,{class:`pagination-wrapper`}),null,16)):u(`v-if`,!0),u(` 编辑弹窗 `),A.value.editMode===`modal`||A.value.editMode===`both`?(E(),l(j(pe),{key:6,show:Le.value,"onUpdate:show":t[3]||=e=>Le.value=e,title:A.value.modalTitle,width:A.value.modalWidth,preset:`card`,"mask-closable":!1,"close-on-esc":!1,class:`w60%`,closable:!1},{action:N(()=>[h(j(he),{justify:`end`},{default:N(()=>[h(j(P),{onClick:He},{default:N(()=>[m(k(j(F)(`common.cancel`)),1)]),_:1}),h(j(P),{type:`primary`,loading:Ie.value,onClick:Ve},{default:N(()=>[m(k(j(F)(`common.save`)),1)]),_:1},8,[`loading`])]),_:1})]),default:N(()=>[Le.value&&Be.value.length?(E(),l(o,{ref_key:`editFormRef`,ref:q,key:ze.value,modelValue:J.value,"onUpdate:modelValue":t[2]||=e=>J.value=e,options:Be.value,config:{layout:`grid`,grid:{cols:2,xGap:16,yGap:16},showActions:!1}},null,8,[`modelValue`,`options`])):u(`v-if`,!0)]),_:1},8,[`show`,`title`,`width`])):u(`v-if`,!0),u(` 动态行确认删除弹窗 `),A.value.dynamicRows&&j(z).dynamicRowsState?(E(),l(ae(j(z).dynamicRowsState.renderConfirmModal()),{key:7})):u(`v-if`,!0),u(` 列设置抽屉 `),h(j(ue),{show:j(V),"onUpdate:show":t[4]||=e=>b(V)?V.value=e:null,width:420,placement:`right`,"mask-closable":!0},{default:N(()=>[h(j(de),{title:j(F)(`table.columnSettings`),closable:``},{default:N(()=>[h(ln,{columns:j(ve),"persist-key":A.value.persistKey,onChange:Ue},null,8,[`columns`,`persist-key`])]),_:1},8,[`title`])]),_:1},8,[`show`])],512))}}),[[`__scopeId`,`data-v-4bd8844d`]]);const Sn=(e,t)=>Number.isFinite(e)?Math.max(1,Math.floor(e)):t;function Cn(e){let t=O([]),n=D(!1),r=O(),i=D(0),o=a(e.initialQuery),s=D(Sn(e.initialPage,1)),l=D(Sn(e.pageSize,20)),u=O(a(o)),d=0,f=null,p=async()=>{let o=++d;f?.abort(),f=new AbortController,n.value=!0,r.value=void 0;try{let n=await e.request({page:s.value,pageSize:l.value,query:a(u.value),signal:f.signal});if(o!==d||f.signal.aborted)return!1;if(!Array.isArray(n.data)||!Number.isFinite(n.total))throw TypeError(`[C_Table] request 必须返回 { data: T[], total: number }`);return t.value=a([...n.data]),i.value=Math.max(0,Math.floor(n.total)),e.onSuccess?.({data:t.value,total:i.value}),!0}catch(t){return o!==d||f.signal.aborted?!1:(r.value=t,e.onError?.(t),!1)}finally{o===d&&(n.value=!1)}},m=async(e,t=!0)=>(u.value=a(typeof e==`function`?e(u.value):{...u.value,...e}),s.value=1,t?p():!0),h=async(e,t)=>(s.value=Sn(e,s.value),l.value=Sn(t,l.value),p()),g=async(e=!0)=>(u.value=a(o),s.value=1,e?p():!0),_=c(()=>{let r=A(e.config)??{},a=typeof r.pagination==`object`?r.pagination:{};return{data:t.value,loading:n.value,columns:A(e.columns),rowKey:e.rowKey??`id`,config:{...r,pagination:{...a,enabled:!0,remote:!0,page:s.value,pageSize:l.value,total:i.value}}}}),v=c(()=>({..._.value,onPaginationChange:h})),y=()=>{d+=1,f?.abort(),f=null,n.value=!1};return e.immediate!==!1&&te(()=>void p()),T(y),{data:t,loading:n,error:r,total:i,page:s,pageSize:l,query:u,tableProps:_,execute:p,reload:p,setQuery:m,resetQuery:g,handlePaginationChange:h,bindings:v,cancel:y}}export{Fe as C,Ie as S,Oe as T,mt as _,fn as a,Ge as b,It as c,wt as d,Dt as f,ht as g,_t as h,dn as i,Ft as l,vt as m,xn as n,Gt as o,Tt as p,un as r,Lt as s,Cn as t,yt as u,ut as v,ke as w,J as x,lt as y};
|
|
@@ -44,25 +44,26 @@ interface TimeExpose {
|
|
|
44
44
|
//#endregion
|
|
45
45
|
//#region src/components/C_Time/index.vue.d.ts
|
|
46
46
|
declare const __VLS_export: vue.DefineComponent<TimeProps, TimeExpose, {}, {}, {}, vue.ComponentOptionsMixin, vue.ComponentOptionsMixin, {
|
|
47
|
-
"update:modelValue": (value: TimeModelValue) => any;
|
|
48
47
|
change: (value: TimeModelValue) => any;
|
|
48
|
+
"update:modelValue": (value: TimeModelValue) => any;
|
|
49
49
|
"change-range": (startTime: number | null, endTime: number | null) => any;
|
|
50
50
|
"change-single": (time: number | null) => any;
|
|
51
51
|
"change-start": (time: number | null) => any;
|
|
52
52
|
"change-end": (time: number | null) => any;
|
|
53
53
|
}, string, vue.PublicProps, Readonly<TimeProps> & Readonly<{
|
|
54
|
-
"onUpdate:modelValue"?: ((value: TimeModelValue) => any) | undefined;
|
|
55
54
|
onChange?: ((value: TimeModelValue) => any) | undefined;
|
|
55
|
+
"onUpdate:modelValue"?: ((value: TimeModelValue) => any) | undefined;
|
|
56
56
|
"onChange-range"?: ((startTime: number | null, endTime: number | null) => any) | undefined;
|
|
57
57
|
"onChange-single"?: ((time: number | null) => any) | undefined;
|
|
58
58
|
"onChange-start"?: ((time: number | null) => any) | undefined;
|
|
59
59
|
"onChange-end"?: ((time: number | null) => any) | undefined;
|
|
60
60
|
}>, {
|
|
61
|
+
format: string;
|
|
61
62
|
mode: TimeMode;
|
|
63
|
+
placeholder: string;
|
|
62
64
|
startPlaceholder: string;
|
|
63
65
|
endPlaceholder: string;
|
|
64
|
-
|
|
65
|
-
format: string;
|
|
66
|
+
attrs: Record<string, any>;
|
|
66
67
|
useHours: boolean;
|
|
67
68
|
useMinutes: boolean;
|
|
68
69
|
useSeconds: boolean;
|
|
@@ -71,7 +72,6 @@ declare const __VLS_export: vue.DefineComponent<TimeProps, TimeExpose, {}, {}, {
|
|
|
71
72
|
secondStep: number;
|
|
72
73
|
startTimeProps: Record<string, any>;
|
|
73
74
|
endTimeProps: Record<string, any>;
|
|
74
|
-
attrs: Record<string, any>;
|
|
75
75
|
defaultStartTime: number | null;
|
|
76
76
|
defaultEndTime: number | null;
|
|
77
77
|
defaultSingleTime: number | null;
|
|
@@ -44,25 +44,26 @@ interface TimeExpose {
|
|
|
44
44
|
//#endregion
|
|
45
45
|
//#region src/components/C_Time/index.vue.d.ts
|
|
46
46
|
declare const __VLS_export: vue.DefineComponent<TimeProps, TimeExpose, {}, {}, {}, vue.ComponentOptionsMixin, vue.ComponentOptionsMixin, {
|
|
47
|
-
"update:modelValue": (value: TimeModelValue) => any;
|
|
48
47
|
change: (value: TimeModelValue) => any;
|
|
48
|
+
"update:modelValue": (value: TimeModelValue) => any;
|
|
49
49
|
"change-range": (startTime: number | null, endTime: number | null) => any;
|
|
50
50
|
"change-single": (time: number | null) => any;
|
|
51
51
|
"change-start": (time: number | null) => any;
|
|
52
52
|
"change-end": (time: number | null) => any;
|
|
53
53
|
}, string, vue.PublicProps, Readonly<TimeProps> & Readonly<{
|
|
54
|
-
"onUpdate:modelValue"?: ((value: TimeModelValue) => any) | undefined;
|
|
55
54
|
onChange?: ((value: TimeModelValue) => any) | undefined;
|
|
55
|
+
"onUpdate:modelValue"?: ((value: TimeModelValue) => any) | undefined;
|
|
56
56
|
"onChange-range"?: ((startTime: number | null, endTime: number | null) => any) | undefined;
|
|
57
57
|
"onChange-single"?: ((time: number | null) => any) | undefined;
|
|
58
58
|
"onChange-start"?: ((time: number | null) => any) | undefined;
|
|
59
59
|
"onChange-end"?: ((time: number | null) => any) | undefined;
|
|
60
60
|
}>, {
|
|
61
|
+
format: string;
|
|
61
62
|
mode: TimeMode;
|
|
63
|
+
placeholder: string;
|
|
62
64
|
startPlaceholder: string;
|
|
63
65
|
endPlaceholder: string;
|
|
64
|
-
|
|
65
|
-
format: string;
|
|
66
|
+
attrs: Record<string, any>;
|
|
66
67
|
useHours: boolean;
|
|
67
68
|
useMinutes: boolean;
|
|
68
69
|
useSeconds: boolean;
|
|
@@ -71,7 +72,6 @@ declare const __VLS_export: vue.DefineComponent<TimeProps, TimeExpose, {}, {}, {
|
|
|
71
72
|
secondStep: number;
|
|
72
73
|
startTimeProps: Record<string, any>;
|
|
73
74
|
endTimeProps: Record<string, any>;
|
|
74
|
-
attrs: Record<string, any>;
|
|
75
75
|
defaultStartTime: number | null;
|
|
76
76
|
defaultEndTime: number | null;
|
|
77
77
|
defaultSingleTime: number | null;
|
|
@@ -90,37 +90,37 @@ type __VLS_Slots = {} & {
|
|
|
90
90
|
'toolbar-actions'?: (props: typeof __VLS_13) => any;
|
|
91
91
|
};
|
|
92
92
|
declare const __VLS_base: vue.DefineComponent<TreeProps, TreeExpose, {}, {}, {}, vue.ComponentOptionsMixin, vue.ComponentOptionsMixin, {
|
|
93
|
-
refresh: () => any;
|
|
94
93
|
add: (parentNode?: TreeNodeData | undefined) => any;
|
|
94
|
+
refresh: () => any;
|
|
95
95
|
"node-select": (node: TreeNodeData | null, selectedKeys: (string | number)[]) => any;
|
|
96
96
|
"node-action": (action: string, node: TreeNodeData) => any;
|
|
97
97
|
"node-drop": (info: DropInfo) => any;
|
|
98
98
|
}, string, vue.PublicProps, Readonly<TreeProps> & Readonly<{
|
|
99
|
-
onRefresh?: (() => any) | undefined;
|
|
100
99
|
onAdd?: ((parentNode?: TreeNodeData | undefined) => any) | undefined;
|
|
100
|
+
onRefresh?: (() => any) | undefined;
|
|
101
101
|
"onNode-select"?: ((node: TreeNodeData | null, selectedKeys: (string | number)[]) => any) | undefined;
|
|
102
102
|
"onNode-action"?: ((action: string, node: TreeNodeData) => any) | undefined;
|
|
103
103
|
"onNode-drop"?: ((info: DropInfo) => any) | undefined;
|
|
104
104
|
}>, {
|
|
105
105
|
mode: TreeMode;
|
|
106
|
-
|
|
106
|
+
actions: ActionConfig[];
|
|
107
|
+
defaultExpandedKeys: (string | number)[];
|
|
107
108
|
labelField: string;
|
|
109
|
+
keyField: string;
|
|
108
110
|
childrenField: string;
|
|
109
111
|
draggable: boolean;
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
keyField: string;
|
|
112
|
+
showToolbar: boolean;
|
|
113
|
+
addable: boolean;
|
|
113
114
|
searchPattern: string;
|
|
114
115
|
searchable: boolean;
|
|
115
116
|
searchPlaceholder: string;
|
|
116
117
|
showLine: boolean;
|
|
117
|
-
addable: boolean;
|
|
118
118
|
addText: string;
|
|
119
119
|
refreshable: boolean;
|
|
120
120
|
iconField: string;
|
|
121
121
|
iconConfig: IconConfig;
|
|
122
122
|
statusConfigs: StatusConfig[];
|
|
123
|
-
|
|
123
|
+
defaultExpandAll: boolean;
|
|
124
124
|
defaultSelectedKeys: (string | number)[];
|
|
125
125
|
}, {}, {}, {}, string, vue.ComponentProvideOptions, false, {}, any>;
|
|
126
126
|
declare const __VLS_export: __VLS_WithSlots<typeof __VLS_base, __VLS_Slots>;
|
|
@@ -90,37 +90,37 @@ type __VLS_Slots = {} & {
|
|
|
90
90
|
'toolbar-actions'?: (props: typeof __VLS_13) => any;
|
|
91
91
|
};
|
|
92
92
|
declare const __VLS_base: vue.DefineComponent<TreeProps, TreeExpose, {}, {}, {}, vue.ComponentOptionsMixin, vue.ComponentOptionsMixin, {
|
|
93
|
-
refresh: () => any;
|
|
94
93
|
add: (parentNode?: TreeNodeData | undefined) => any;
|
|
94
|
+
refresh: () => any;
|
|
95
95
|
"node-select": (node: TreeNodeData | null, selectedKeys: (string | number)[]) => any;
|
|
96
96
|
"node-action": (action: string, node: TreeNodeData) => any;
|
|
97
97
|
"node-drop": (info: DropInfo) => any;
|
|
98
98
|
}, string, vue.PublicProps, Readonly<TreeProps> & Readonly<{
|
|
99
|
-
onRefresh?: (() => any) | undefined;
|
|
100
99
|
onAdd?: ((parentNode?: TreeNodeData | undefined) => any) | undefined;
|
|
100
|
+
onRefresh?: (() => any) | undefined;
|
|
101
101
|
"onNode-select"?: ((node: TreeNodeData | null, selectedKeys: (string | number)[]) => any) | undefined;
|
|
102
102
|
"onNode-action"?: ((action: string, node: TreeNodeData) => any) | undefined;
|
|
103
103
|
"onNode-drop"?: ((info: DropInfo) => any) | undefined;
|
|
104
104
|
}>, {
|
|
105
105
|
mode: TreeMode;
|
|
106
|
-
|
|
106
|
+
actions: ActionConfig[];
|
|
107
|
+
defaultExpandedKeys: (string | number)[];
|
|
107
108
|
labelField: string;
|
|
109
|
+
keyField: string;
|
|
108
110
|
childrenField: string;
|
|
109
111
|
draggable: boolean;
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
keyField: string;
|
|
112
|
+
showToolbar: boolean;
|
|
113
|
+
addable: boolean;
|
|
113
114
|
searchPattern: string;
|
|
114
115
|
searchable: boolean;
|
|
115
116
|
searchPlaceholder: string;
|
|
116
117
|
showLine: boolean;
|
|
117
|
-
addable: boolean;
|
|
118
118
|
addText: string;
|
|
119
119
|
refreshable: boolean;
|
|
120
120
|
iconField: string;
|
|
121
121
|
iconConfig: IconConfig;
|
|
122
122
|
statusConfigs: StatusConfig[];
|
|
123
|
-
|
|
123
|
+
defaultExpandAll: boolean;
|
|
124
124
|
defaultSelectedKeys: (string | number)[];
|
|
125
125
|
}, {}, {}, {}, string, vue.ComponentProvideOptions, false, {}, any>;
|
|
126
126
|
declare const __VLS_export: __VLS_WithSlots<typeof __VLS_base, __VLS_Slots>;
|
|
@@ -237,18 +237,18 @@ declare const __VLS_export: vue.DefineComponent<WorkflowProps, {
|
|
|
237
237
|
conditionNodes: number;
|
|
238
238
|
}>;
|
|
239
239
|
}, {}, {}, {}, vue.ComponentOptionsMixin, vue.ComponentOptionsMixin, {
|
|
240
|
-
"update:modelValue": (value: WorkflowData) => any;
|
|
241
240
|
change: (value: WorkflowData) => any;
|
|
242
|
-
"
|
|
241
|
+
"update:modelValue": (value: WorkflowData) => any;
|
|
243
242
|
save: (data: WorkflowData) => any;
|
|
244
243
|
"validate-error": (errors: ValidationError[]) => any;
|
|
244
|
+
"node-click": (node: WorkflowNode) => any;
|
|
245
245
|
"edge-click": (edge: WorkflowEdge) => any;
|
|
246
246
|
}, string, vue.PublicProps, Readonly<WorkflowProps> & Readonly<{
|
|
247
|
-
"onUpdate:modelValue"?: ((value: WorkflowData) => any) | undefined;
|
|
248
247
|
onChange?: ((value: WorkflowData) => any) | undefined;
|
|
249
|
-
"
|
|
248
|
+
"onUpdate:modelValue"?: ((value: WorkflowData) => any) | undefined;
|
|
250
249
|
onSave?: ((data: WorkflowData) => any) | undefined;
|
|
251
250
|
"onValidate-error"?: ((errors: ValidationError[]) => any) | undefined;
|
|
251
|
+
"onNode-click"?: ((node: WorkflowNode) => any) | undefined;
|
|
252
252
|
"onEdge-click"?: ((edge: WorkflowEdge) => any) | undefined;
|
|
253
253
|
}>, {
|
|
254
254
|
theme: "light" | "dark";
|
|
@@ -237,18 +237,18 @@ declare const __VLS_export: vue.DefineComponent<WorkflowProps, {
|
|
|
237
237
|
conditionNodes: number;
|
|
238
238
|
}>;
|
|
239
239
|
}, {}, {}, {}, vue.ComponentOptionsMixin, vue.ComponentOptionsMixin, {
|
|
240
|
-
"update:modelValue": (value: WorkflowData) => any;
|
|
241
240
|
change: (value: WorkflowData) => any;
|
|
242
|
-
"
|
|
241
|
+
"update:modelValue": (value: WorkflowData) => any;
|
|
243
242
|
save: (data: WorkflowData) => any;
|
|
244
243
|
"validate-error": (errors: ValidationError[]) => any;
|
|
244
|
+
"node-click": (node: WorkflowNode) => any;
|
|
245
245
|
"edge-click": (edge: WorkflowEdge) => any;
|
|
246
246
|
}, string, vue.PublicProps, Readonly<WorkflowProps> & Readonly<{
|
|
247
|
-
"onUpdate:modelValue"?: ((value: WorkflowData) => any) | undefined;
|
|
248
247
|
onChange?: ((value: WorkflowData) => any) | undefined;
|
|
249
|
-
"
|
|
248
|
+
"onUpdate:modelValue"?: ((value: WorkflowData) => any) | undefined;
|
|
250
249
|
onSave?: ((data: WorkflowData) => any) | undefined;
|
|
251
250
|
"onValidate-error"?: ((errors: ValidationError[]) => any) | undefined;
|
|
251
|
+
"onNode-click"?: ((node: WorkflowNode) => any) | undefined;
|
|
252
252
|
"onEdge-click"?: ((edge: WorkflowEdge) => any) | undefined;
|
|
253
253
|
}>, {
|
|
254
254
|
theme: "light" | "dark";
|