fix
This commit is contained in:
@@ -104,7 +104,7 @@ watch(
|
||||
|
||||
//关闭回调
|
||||
const footOnOk = () => {
|
||||
emits("update:modelValue", Month.value ? Month.value : -1);
|
||||
emits("update:modelValue", Month.value || Month.value === 0 ? Month.value : -1);
|
||||
if (datePicker.range) {
|
||||
//关闭菜单
|
||||
emits("ok");
|
||||
|
||||
@@ -35,6 +35,7 @@ export interface TableRowProps {
|
||||
expandKeys: Recordable[];
|
||||
getCheckboxProps: Function;
|
||||
getRadioProps: Function;
|
||||
page?: Recordable;
|
||||
}
|
||||
|
||||
const slot = useSlots();
|
||||
@@ -47,7 +48,10 @@ const emit = defineEmits([
|
||||
"update:selectedKeys",
|
||||
"update:selectedKey",
|
||||
]);
|
||||
function toThousands(num: number | string) {
|
||||
function toThousands(num: number | string | undefined) {
|
||||
if(typeof num == 'undefined'){
|
||||
return ''
|
||||
}
|
||||
if (typeof num == "string") {
|
||||
num = parseFloat(num || "0");
|
||||
}
|
||||
@@ -470,8 +474,12 @@ const radioProps = props.getRadioProps(props.data, props.index);
|
||||
:type="expandIconType"
|
||||
@click="handleExpand"
|
||||
></lay-icon>
|
||||
|
||||
{{ index + 1 }}
|
||||
<template v-if="page">
|
||||
{{ index + 1 + ((page.current - 1) * page.limit) }}
|
||||
</template>
|
||||
<template v-else>
|
||||
{{ index + 1 }}
|
||||
</template>
|
||||
</td>
|
||||
</template>
|
||||
</template>
|
||||
|
||||
@@ -5,6 +5,8 @@ export default {
|
||||
</script>
|
||||
|
||||
<script setup lang="ts">
|
||||
import { utils, writeFile } from "xlsx";
|
||||
|
||||
import "./index.less";
|
||||
import {
|
||||
ref,
|
||||
@@ -347,9 +349,10 @@ watch(tableDataSource, () => {
|
||||
emit("update:page", tmp);
|
||||
// tableDataSource.value = endlist
|
||||
sxlist.value = {};
|
||||
// pagecurrent ||
|
||||
change({
|
||||
limit: props.page.limit,
|
||||
current: pagecurrent || props.page.current,
|
||||
current: props.page.current,
|
||||
});
|
||||
}
|
||||
});
|
||||
@@ -389,55 +392,112 @@ const print = () => {
|
||||
document.body.innerHTML = oldContent;
|
||||
};
|
||||
|
||||
/**
|
||||
* 导出excel
|
||||
* @param list 导出的信息
|
||||
* @param header 信息的键名
|
||||
* @param name 导出文件名称
|
||||
*/
|
||||
function exportElcel(list:any,header:any,name:string){
|
||||
|
||||
const ws = utils.json_to_sheet(list, {
|
||||
header,
|
||||
skipHeader: true
|
||||
})
|
||||
console.log(ws)
|
||||
var tmpWB = {
|
||||
SheetNames: ['sheet'], //保存的表标题
|
||||
Sheets: {
|
||||
sheet: Object.assign(
|
||||
{},
|
||||
ws, //内容
|
||||
{}
|
||||
)
|
||||
}
|
||||
}
|
||||
writeFile(tmpWB,name + ".xlsx",{
|
||||
bookType: 'xlsx',
|
||||
type: 'binary'
|
||||
})
|
||||
}
|
||||
// 报表导出
|
||||
const exportData = () => {
|
||||
var tableStr = ``;
|
||||
let head:any = []
|
||||
let list:any = []
|
||||
let title:any = {}
|
||||
for (let tableHeadColumn of tableHeadColumns.value) {
|
||||
tableStr += "<tr>";
|
||||
// tableStr += "<tr>";
|
||||
for (let column of tableHeadColumn) {
|
||||
tableStr += `<td colspan=${column.colspan} rowspan=${column.rowspan}>${column.title}</td>`;
|
||||
// tableStr += `<td colspan=${column.colspan} rowspan=${column.rowspan}>${column.title}</td>`;
|
||||
title[column.key] = column.title
|
||||
head.push(column.key)
|
||||
}
|
||||
tableStr += "</tr>";
|
||||
// tableStr += "</tr>";
|
||||
}
|
||||
datalist.value.forEach((item, rowIndex) => {
|
||||
tableStr += "<tr>";
|
||||
list.push(title)
|
||||
console.log(tableDataSource.value,tableHeadColumns.value)
|
||||
tableDataSource.value.forEach((item, rowIndex) => {
|
||||
let info:any = {}
|
||||
tableBodyColumns.value.forEach((tableColumn, columnIndex) => {
|
||||
Object.keys(item).forEach((name) => {
|
||||
if (tableColumn.key === name) {
|
||||
const rowColSpan = props.spanMethod(
|
||||
item,
|
||||
tableColumn,
|
||||
rowIndex,
|
||||
columnIndex
|
||||
);
|
||||
const rowspan = rowColSpan ? rowColSpan[0] : 1;
|
||||
const colspan = rowColSpan ? rowColSpan[1] : 1;
|
||||
if (rowspan != 0 && colspan != 0) {
|
||||
tableStr += `<td colspan=${colspan} rowspan=${rowspan}>${item[name]}</td>`;
|
||||
// const rowColSpan = props.spanMethod(
|
||||
// item,
|
||||
// tableColumn,
|
||||
// rowIndex,
|
||||
// columnIndex
|
||||
// );
|
||||
// const rowspan = rowColSpan ? rowColSpan[0] : 1;
|
||||
// const colspan = rowColSpan ? rowColSpan[1] : 1;
|
||||
// if (rowspan != 0 && colspan != 0) {
|
||||
// tableStr += `<td colspan=${colspan} rowspan=${rowspan}${tableColumn.valueType == 'str' ? ' x:str' : ''}>${item[name] || ''}</td>`;
|
||||
// }
|
||||
if(tableColumn.valueType == "str"){
|
||||
info[name] = item[name]
|
||||
}else{
|
||||
info[name] = isNaN(Number(item[name])) || (!item[name] && item[name] !== 0) ? item[name] : Number(item[name])
|
||||
}
|
||||
}
|
||||
|
||||
});
|
||||
if(tableColumn.type == "number"){
|
||||
// const rowColSpan = props.spanMethod(
|
||||
// item,
|
||||
// tableColumn,
|
||||
// rowIndex,
|
||||
// columnIndex
|
||||
// );
|
||||
// const rowspan = rowColSpan ? rowColSpan[0] : 1;
|
||||
// const colspan = rowColSpan ? rowColSpan[1] : 1;
|
||||
// if (rowspan != 0 && colspan != 0) {
|
||||
// tableStr += `<td colspan=${colspan} rowspan=${rowspan}>${rowIndex + 1}</td>`;
|
||||
// }
|
||||
info[tableColumn.key] = rowIndex + 1
|
||||
}
|
||||
});
|
||||
tableStr += "</tr>";
|
||||
// tableStr += "</tr>";
|
||||
list.push(info)
|
||||
});
|
||||
var worksheet = "Sheet1";
|
||||
var uri = "data:application/vnd.ms-excel;base64,";
|
||||
var exportTemplate = `<html xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:x="urn:schemas-microsoft-com:office:excel"
|
||||
xmlns="http://www.w3.org/TR/REC-html40">
|
||||
<head><!--[if gte mso 9]><xml><x:ExcelWorkbook><x:ExcelWorksheets><x:ExcelWorksheet>
|
||||
<x:Name>${worksheet}</x:Name>
|
||||
<x:WorksheetOptions><x:DisplayGridlines/></x:WorksheetOptions></x:ExcelWorksheet>
|
||||
</x:ExcelWorksheets></x:ExcelWorkbook></xml><![endif]-->
|
||||
</head>
|
||||
<body>
|
||||
<table syle="table-layout: fixed;word-wrap: break-word; word-break: break-all;">${tableStr}</table>
|
||||
</body>
|
||||
</html>`;
|
||||
let a = document.createElement("a");
|
||||
a.href = uri + base64(exportTemplate);
|
||||
a.download = (props.download || "下载文件") + ".xls";
|
||||
a.click();
|
||||
// var worksheet = "Sheet1";
|
||||
// var uri = "data:application/vnd.ms-excel;base64,";
|
||||
// var exportTemplate = `<html xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:x="urn:schemas-microsoft-com:office:excel"
|
||||
// xmlns="http://www.w3.org/TR/REC-html40">
|
||||
// <head><!--[if gte mso 9]><xml><x:ExcelWorkbook><x:ExcelWorksheets><x:ExcelWorksheet>
|
||||
// <x:Name>${worksheet}</x:Name>
|
||||
// <x:WorksheetOptions><x:DisplayGridlines/></x:WorksheetOptions></x:ExcelWorksheet>
|
||||
// </x:ExcelWorksheets></x:ExcelWorkbook></xml><![endif]-->
|
||||
// </head>
|
||||
// <body>
|
||||
// <table syle="table-layout: fixed;word-wrap: break-word; word-break: break-all;">${tableStr}</table>
|
||||
// </body>
|
||||
// </html>`;
|
||||
// let a = document.createElement("a");
|
||||
// a.href = uri + base64(exportTemplate);
|
||||
// a.download = (props.download || "下载文件") + ".xls";
|
||||
// a.click();
|
||||
// window.location.href =
|
||||
exportElcel(list,head,(props.download || "下载文件"))
|
||||
return;
|
||||
};
|
||||
|
||||
@@ -817,9 +877,10 @@ watch(
|
||||
});
|
||||
} else {
|
||||
tableDataSource.value = endlist;
|
||||
// pagecurrent ||
|
||||
change({
|
||||
limit: props.page.limit,
|
||||
current: pagecurrent || props.page.current,
|
||||
current: props.page.current,
|
||||
isReload: true,
|
||||
});
|
||||
}
|
||||
@@ -1078,6 +1139,7 @@ window.addEventListener("click", heddin);
|
||||
@row="rowClick"
|
||||
@row-double="rowDoubleClick"
|
||||
@row-contextmenu="rowContextmenu"
|
||||
:page="page"
|
||||
>
|
||||
<template v-for="name in slotsData" #[name]="{ data }">
|
||||
<slot :name="name" :data="data"></slot>
|
||||
|
||||
Reference in New Issue
Block a user