From 32ba9242473449cb2508e581f3431f72025d89d3 Mon Sep 17 00:00:00 2001 From: Theluyuan <1162963624@qq.com> Date: Fri, 21 Apr 2023 14:04:54 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BB=A3=E7=A0=81=E8=A7=84=E8=8C=83?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/component/table/TableRow.vue | 4 +- src/component/table/index.vue | 404 ++++++++++++++++++++---------- src/component/table/soultable.vue | 168 +++++++------ 3 files changed, 367 insertions(+), 209 deletions(-) diff --git a/src/component/table/TableRow.vue b/src/component/table/TableRow.vue index 30b585c..711ba91 100644 --- a/src/component/table/TableRow.vue +++ b/src/component/table/TableRow.vue @@ -116,8 +116,8 @@ props.columns.map((value: any) => { }); const rowClick = function (data: any, evt: MouseEvent) { - let click = new Event("click") - window.dispatchEvent(click) + let click = new Event("click"); + window.dispatchEvent(click); emit("row", data, evt); }; diff --git a/src/component/table/index.vue b/src/component/table/index.vue index 640bf73..5370378 100644 --- a/src/component/table/index.vue +++ b/src/component/table/index.vue @@ -71,11 +71,11 @@ const props = withDefaults(defineProps(), { rowStyle: "", cellStyle: "", defaultExpandAll: false, - spanMethod: () => { }, + spanMethod: () => {}, expandKeys: () => [], loading: false, - getCheckboxProps: () => { }, - getRadioProps: () => { }, + getCheckboxProps: () => {}, + getRadioProps: () => {}, }); const emit = defineEmits([ @@ -86,15 +86,15 @@ const emit = defineEmits([ "row-contextmenu", "row-double", "row", - "update:page" + "update:page", ]); const slot = useSlots(); const slots = slot.default && slot.default(); const tableRef = ref(); -const datalist = ref([...props.dataSource]) -console.log(datalist.value,97) +const datalist = ref([...props.dataSource]); +console.log(datalist.value, 97); const s = ""; const allChecked = ref(false); const hasChecked = ref(false); @@ -323,31 +323,34 @@ watch( }, { deep: true, immediate: true } ); -watch(tableDataSource,()=>{ - if(!props.page){ - datalist.value = tableDataSource.value - }else{ +watch(tableDataSource, () => { + if (!props.page) { + datalist.value = tableDataSource.value; + } else { // props.page.count = tableDataSource.value.length - let tmp ={...props.page} - tmp.total = tableDataSource.value.length - emit("update:page",tmp) + let tmp = { ...props.page }; + tmp.total = tableDataSource.value.length; + emit("update:page", tmp); // tableDataSource.value = endlist change({ limit: props.page.limit, - current: pagecurrent || props.page.current - }) + current: pagecurrent || props.page.current, + }); } -}) -watch(()=>props.page,()=>{ - console.log(props.page,342) -}) -let pagecurrent:number; +}); +watch( + () => props.page, + () => { + console.log(props.page, 342); + } +); +let pagecurrent: number; const change = function (page: any) { // emit("change", page); - pagecurrent = page.current + pagecurrent = page.current; datalist.value = tableDataSource.value.slice( - page.limit * (page.current - 1), - page.limit * page.current + page.limit * (page.current - 1), + page.limit * page.current ); }; @@ -738,67 +741,69 @@ onBeforeUnmount(() => { const soulstatus = ref(false); const soultop = ref(0); const soulleft = ref(0); -const selcolumn = ref({}) -const soulkey = ref("") -const sxlist:any = ref({}) +const selcolumn = ref({}); +const soulkey = ref(""); +const sxlist: any = ref({}); function showsoul(event: MouseEvent, column: any, key: string) { console.log(event); soulleft.value = event.pageX; soultop.value = event.pageY; soulstatus.value = true; selcolumn.value = column; - soulkey.value = key + soulkey.value = key; } const heddin = () => { - soulkey.value = "" -} + soulkey.value = ""; +}; function asc(event: any) { - selcolumn.value.soulclass = "soul-icon-filter-asc" - sortTable(event, selcolumn.value.key, "asc", true) + selcolumn.value.soulclass = "soul-icon-filter-asc"; + sortTable(event, selcolumn.value.key, "asc", true); } function desc(event: any) { - selcolumn.value.soulclass = "soul-icon-filter-desc" - sortTable(event, selcolumn.value.key, "desc", true) + selcolumn.value.soulclass = "soul-icon-filter-desc"; + sortTable(event, selcolumn.value.key, "desc", true); } -function sx(e:any){ - sxlist.value[e.key] = e.list - +function sx(e: any) { + sxlist.value[e.key] = e.list; } -watch(sxlist,()=>{ -// tableDataSource -let list:any = [...props.dataSource] - let endlist:any = [] - for(let i in sxlist.value){ - for(let j in list){ - if(list[j] != "" && sxlist.value[i].length != 0){ - if(!sxlist.value[i].includes(list[j][i])){ - list[j] = "" +watch( + sxlist, + () => { + // tableDataSource + let list: any = [...props.dataSource]; + let endlist: any = []; + for (let i in sxlist.value) { + for (let j in list) { + if (list[j] != "" && sxlist.value[i].length != 0) { + if (!sxlist.value[i].includes(list[j][i])) { + list[j] = ""; + } } } } - } - for(let i of list){ - if(i != ""){ - endlist.push(i) + for (let i of list) { + if (i != "") { + endlist.push(i); + } } + if (!props.page) { + datalist.value = endlist; + } else { + tableDataSource.value = endlist; + change({ + limit: props.page.limit, + current: pagecurrent || props.page.current, + }); + } + console.log("筛选", endlist); + }, + { + deep: true, } - if(!props.page){ - datalist.value = endlist - }else{ - tableDataSource.value = endlist - change({ - limit: props.page.limit, - current: pagecurrent || props.page.current - }) - } - console.log("筛选",endlist) -},{ - deep: true -}) -window.addEventListener("click", heddin) +); +window.addEventListener("click", heddin); // 将分页移入到组件内 -