giime 0.0.30 → 0.1.0
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/README.md +1 -1
- package/dist/index.css +10 -10
- package/es/components/src/composite/tablePro/TablePro.vue.d.ts +12 -12
- package/es/components/src/composite/tablePro/TablePro.vue.mjs +1 -1
- package/es/components/src/composite/tablePro/TablePro.vue2.mjs +4 -5
- package/es/components/src/composite/tablePro/TablePro.vue2.mjs.map +1 -1
- package/es/components/src/composite/tablePro/index.d.ts +30 -30
- package/es/giime/version.d.ts +1 -1
- package/es/giime/version.mjs +1 -1
- package/es/giime/version.mjs.map +1 -1
- package/es/hooks/base/useDownload/index.d.ts +9 -5
- package/es/hooks/base/useDownload/index.mjs +81 -107
- package/es/hooks/base/useDownload/index.mjs.map +1 -1
- package/es/index.css +10 -10
- package/lib/components/src/composite/tablePro/TablePro.vue.d.ts +12 -12
- package/lib/components/src/composite/tablePro/TablePro.vue.js +1 -1
- package/lib/components/src/composite/tablePro/TablePro.vue2.js +4 -5
- package/lib/components/src/composite/tablePro/TablePro.vue2.js.map +1 -1
- package/lib/components/src/composite/tablePro/index.d.ts +30 -30
- package/lib/giime/version.d.ts +1 -1
- package/lib/giime/version.js +1 -1
- package/lib/giime/version.js.map +1 -1
- package/lib/hooks/base/useDownload/index.d.ts +9 -5
- package/lib/hooks/base/useDownload/index.js +80 -106
- package/lib/hooks/base/useDownload/index.js.map +1 -1
- package/lib/index.css +10 -10
- package/package.json +3 -1
package/README.md
CHANGED
package/dist/index.css
CHANGED
|
@@ -1,7 +1,3 @@
|
|
|
1
|
-
[data-v-512cf874] .gmSearchForm .el-form-item {
|
|
2
|
-
margin-right: 8px;
|
|
3
|
-
margin-bottom: 8px;
|
|
4
|
-
}
|
|
5
1
|
.gm-flex-center[data-v-d1c6dac0] {
|
|
6
2
|
align-items: center;
|
|
7
3
|
}
|
|
@@ -9,27 +5,31 @@
|
|
|
9
5
|
.gm-flex-justify-between[data-v-d1c6dac0] {
|
|
10
6
|
justify-content: space-between;
|
|
11
7
|
}
|
|
12
|
-
[data-v-
|
|
8
|
+
[data-v-512cf874] .gmSearchForm .el-form-item {
|
|
9
|
+
margin-right: 8px;
|
|
10
|
+
margin-bottom: 8px;
|
|
11
|
+
}
|
|
12
|
+
[data-v-e38c9d81] .gmTableNoBorder .el-table__body .el-table__cell {
|
|
13
13
|
border-right: none;
|
|
14
14
|
}
|
|
15
15
|
|
|
16
|
-
[data-v-
|
|
16
|
+
[data-v-e38c9d81] .gmTableNoBorder .el-table__inner-wrapper:before {
|
|
17
17
|
height: 0;
|
|
18
18
|
}
|
|
19
19
|
|
|
20
|
-
[data-v-
|
|
20
|
+
[data-v-e38c9d81] .gmTableNoBorder.el-table--border .el-table__inner-wrapper:after {
|
|
21
21
|
height: 0;
|
|
22
22
|
}
|
|
23
23
|
|
|
24
|
-
[data-v-
|
|
24
|
+
[data-v-e38c9d81] .gmTableNoBorder.el-table--border:after {
|
|
25
25
|
height: 0;
|
|
26
26
|
}
|
|
27
27
|
|
|
28
|
-
[data-v-
|
|
28
|
+
[data-v-e38c9d81] .gmTableNoBorder.el-table--border:before {
|
|
29
29
|
height: 0;
|
|
30
30
|
}
|
|
31
31
|
|
|
32
|
-
[data-v-
|
|
32
|
+
[data-v-e38c9d81] .gmTableNoBorder .el-table__border-left-patch {
|
|
33
33
|
height: 0;
|
|
34
34
|
}
|
|
35
35
|
/*
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import type { Sort } from 'element-plus';
|
|
2
2
|
declare const _default: __VLS_WithTemplateSlots<import("vue").DefineComponent<{
|
|
3
3
|
sortValue: import("vue").PropType<{
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
}>;
|
|
4
|
+
field: string;
|
|
5
|
+
order: "asc" | "desc";
|
|
6
|
+
}[]>;
|
|
7
7
|
headerCellStyle: {
|
|
8
8
|
type: ObjectConstructor;
|
|
9
9
|
default: () => {
|
|
@@ -283,17 +283,17 @@ declare const _default: __VLS_WithTemplateSlots<import("vue").DefineComponent<{
|
|
|
283
283
|
clearSort: () => void | undefined;
|
|
284
284
|
}, unknown, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
|
|
285
285
|
"update:sortValue": (sortValue: {
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
}) => void;
|
|
286
|
+
field: string;
|
|
287
|
+
order: "asc" | "desc";
|
|
288
|
+
}[]) => void;
|
|
289
289
|
tableOperate: (btn: Record<string, any>, row: Record<string, any>) => void;
|
|
290
290
|
selectionChange: (value: Record<string, any>[]) => void;
|
|
291
291
|
sortChange: (value: Sort) => void;
|
|
292
292
|
}, string, import("vue").PublicProps, Readonly<import("vue").ExtractPropTypes<{
|
|
293
293
|
sortValue: import("vue").PropType<{
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
}>;
|
|
294
|
+
field: string;
|
|
295
|
+
order: "asc" | "desc";
|
|
296
|
+
}[]>;
|
|
297
297
|
headerCellStyle: {
|
|
298
298
|
type: ObjectConstructor;
|
|
299
299
|
default: () => {
|
|
@@ -413,9 +413,9 @@ declare const _default: __VLS_WithTemplateSlots<import("vue").DefineComponent<{
|
|
|
413
413
|
showOverflowTooltip: import("vue").PropType<boolean | Partial<Pick<import("element-plus").ElTooltipProps, "offset" | "appendTo" | "effect" | "placement" | "popperClass" | "popperOptions" | "hideAfter" | "transition" | "enterable" | "showAfter" | "showArrow">> | undefined>;
|
|
414
414
|
}>> & {
|
|
415
415
|
"onUpdate:sortValue"?: ((sortValue: {
|
|
416
|
-
|
|
417
|
-
|
|
418
|
-
}) => any) | undefined;
|
|
416
|
+
field: string;
|
|
417
|
+
order: "asc" | "desc";
|
|
418
|
+
}[]) => any) | undefined;
|
|
419
419
|
onTableOperate?: ((btn: Record<string, any>, row: Record<string, any>) => any) | undefined;
|
|
420
420
|
onSelectionChange?: ((value: Record<string, any>[]) => any) | undefined;
|
|
421
421
|
onSortChange?: ((value: Sort) => any) | undefined;
|
|
@@ -2,7 +2,7 @@ import _sfc_main from './TablePro.vue2.mjs';
|
|
|
2
2
|
import './TablePro.vue3.mjs';
|
|
3
3
|
import _export_sfc from '../../../../_virtual/_plugin-vue_export-helper.mjs';
|
|
4
4
|
|
|
5
|
-
var TablePro = /* @__PURE__ */ _export_sfc(_sfc_main, [["__scopeId", "data-v-
|
|
5
|
+
var TablePro = /* @__PURE__ */ _export_sfc(_sfc_main, [["__scopeId", "data-v-e38c9d81"], ["__file", "TablePro.vue"]]);
|
|
6
6
|
|
|
7
7
|
export { TablePro as default };
|
|
8
8
|
//# sourceMappingURL=TablePro.vue.mjs.map
|
|
@@ -7,7 +7,7 @@ import { tableProProps, tableProEmits } from './tablePro.mjs';
|
|
|
7
7
|
import { getVnodesByGmName } from './tableHelper.mjs';
|
|
8
8
|
import { TableColumnProName, tableColumnProProps } from './tableColumnPro/tableColumnPro.mjs';
|
|
9
9
|
|
|
10
|
-
const _withScopeId = (n) => (pushScopeId("data-v-
|
|
10
|
+
const _withScopeId = (n) => (pushScopeId("data-v-e38c9d81"), n = n(), popScopeId(), n);
|
|
11
11
|
const _hoisted_1 = { class: "gm-text-center" };
|
|
12
12
|
const _hoisted_2 = {
|
|
13
13
|
key: 0,
|
|
@@ -108,14 +108,13 @@ var _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
108
108
|
const sortValue = useModel(__props, "sortValue");
|
|
109
109
|
const handleSortChange = (sort) => {
|
|
110
110
|
if (sortValue.value) {
|
|
111
|
-
sortValue.value
|
|
112
|
-
sortValue.value.descs = "";
|
|
111
|
+
sortValue.value = [];
|
|
113
112
|
switch (sort.order) {
|
|
114
113
|
case "ascending":
|
|
115
|
-
sortValue.value.
|
|
114
|
+
sortValue.value.push({ field: sort.prop, order: "asc" });
|
|
116
115
|
break;
|
|
117
116
|
case "descending":
|
|
118
|
-
sortValue.value.
|
|
117
|
+
sortValue.value.push({ field: sort.prop, order: "desc" });
|
|
119
118
|
break;
|
|
120
119
|
}
|
|
121
120
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TablePro.vue2.mjs","sources":["../../../../../../../packages/components/src/composite/tablePro/TablePro.vue"],"sourcesContent":["<template>\r\n <div>\r\n <gm-table\r\n ref=\"GmTbaleRef\"\r\n v-bind=\"props\"\r\n border\r\n class=\"gmTablePro\"\r\n :class=\"[props.border ? '' : 'gmTableNoBorder']\"\r\n @selection-change=\"(value: TableColumnProProps[]) => $emit('selectionChange', value)\"\r\n @sort-change=\"handleSortChange\"\r\n @header-dragend=\"headerDragend\"\r\n >\r\n <template v-if=\"props.selection\">\r\n <gm-table-column :key=\"999999\" type=\"selection\" width=\"50\" />\r\n </template>\r\n <template v-if=\"gmTableHeaderRef?.isInited\">\r\n <TableColumnVNodeRenderer :vnode=\"tableColumnVnode\" :propsList=\"colPropsList\" />\r\n </template>\r\n <!-- 操作 -->\r\n <gm-table-column\r\n v-if=\"customHeader || customOperate\"\r\n prop=\"gmEdit\"\r\n min-width=\"100\"\r\n :width=\"editProps?.width\"\r\n :fixed=\"operateFixed ? 'right' : false\"\r\n >\r\n <template #header>\r\n <div class=\"gm-text-center\">\r\n <gm-button v-if=\"customHeader\" type=\"primary\" link size=\"small\" @click=\"setTable('header')\"> 表头 </gm-button>\r\n <gm-button v-if=\"customOperate\" type=\"primary\" link size=\"small\" @click=\"setTable('operate')\"> 操作 </gm-button>\r\n </div>\r\n </template>\r\n <template #default=\"slotValue\">\r\n <!-- <VNodeRenderer :vnode=\"customVNodes\" /> -->\r\n <div v-if=\"tableOperateVnode && gmCustomOperationsRef && gmCustomOperationsRef.isInited\" class=\"gm-flex gm-flex-wrap gm-justify-center\">\r\n <TableOperateVNodeRenderer :vnode=\"tableOperateVnode.children?.default(slotValue)\" :customPropsList=\"customBtnPropsList\" />\r\n </div>\r\n </template>\r\n </gm-table-column>\r\n </gm-table>\r\n </div>\r\n\r\n <gm-table-header-form\r\n ref=\"gmTableHeaderRef\"\r\n v-model:isShowDrawer=\"drawerHeaderVisible\"\r\n v-model:colPropsList=\"colPropsList\"\r\n :colDefaultPropsList=\"colDefaultPropsList\"\r\n :keyWord=\"props.page\"\r\n type=\"HeaderList\"\r\n />\r\n\r\n <gm-operate-button-form\r\n ref=\"gmCustomOperationsRef\"\r\n v-model:isShowDrawer=\"drawerOperateVisible\"\r\n v-model:customBtnPropsList=\"customBtnPropsList\"\r\n :customDefaultPropsList=\"customDefaultPropsList\"\r\n :keyWord=\"props.page\"\r\n type=\"OperateList\"\r\n />\r\n</template>\r\n\r\n<script setup lang=\"ts\">\r\nimport { computed, nextTick, ref } from 'vue';\r\nimport { hasOwn } from '@giime/utils/src/objects';\r\n// import { cloneDeep } from 'lodash-es';\r\nimport { operateButtonProps } from '../operateButton/operateButton';\r\nimport TableOperateVNodeRenderer from './TableOperateVNodeRenderer';\r\nimport TableColumnVNodeRenderer from './TableColumnVNodeRenderer';\r\nimport { tableProEmits, tableProProps } from './tablePro';\r\nimport { getVnodesByGmName } from './tableHelper';\r\nimport { TableColumnProName, type TableColumnProProps, tableColumnProProps } from './tableColumnPro/tableColumnPro';\r\nimport type { OperateButtonFormInstance } from '../operateButton/operateButtonForm';\r\nimport type { TableHeaderFormInstance } from './tableHeaderForm';\r\nimport type { OperateButtonProps } from '../operateButton/operateButton';\r\nimport type { Sort, TableInstance } from 'element-plus';\r\n\r\ndefineOptions({\r\n name: 'GmTablePro',\r\n});\r\nconst GmTbaleRef = ref<TableInstance>();\r\nconst gmCustomOperationsRef = ref<OperateButtonFormInstance>();\r\nconst gmTableHeaderRef = ref<TableHeaderFormInstance>();\r\n\r\nconst emit = defineEmits(tableProEmits);\r\nconst props = defineProps(tableProProps);\r\n\r\nconst slots = defineSlots<{\r\n default(data?: any): any[];\r\n}>();\r\n// 列 当前原始vnode\r\nconst tableColumnVnode = computed(() => {\r\n const vNodes = slots.default?.() || [];\r\n // const nodes = vNodes.filter(vNode => vNode.props && vNode.props.type !== 'edit');\r\n return vNodes;\r\n});\r\n// 默认表头Props列表\r\nconst colDefaultPropsList = computed(() => {\r\n const vNodes = slots.default?.() || [];\r\n const children = getVnodesByGmName(vNodes, TableColumnProName);\r\n // const result = children.filter(vNode => vNode.props && vNode.props.type !== 'edit');\r\n\r\n const colProps: TableColumnProProps[] = children.map((vNode: { props: any }) => vNode.props) ?? [];\r\n // 循环插入props所需的默认值\r\n colProps.forEach(it => {\r\n for (const key in tableColumnProProps) {\r\n // 如果当前props含有默认值\r\n if (hasOwn(it, key)) {\r\n continue;\r\n }\r\n if (hasOwn(tableColumnProProps, key)) {\r\n const element = tableColumnProProps[key as keyof TableColumnProProps];\r\n // 如果btn 定义中含有默认值 则赋值给props\r\n if (hasOwn(element, 'default')) {\r\n Reflect.set(it, key, Reflect.get(element, 'default'));\r\n }\r\n }\r\n }\r\n });\r\n return colProps;\r\n});\r\n// 已选中表头\r\nconst colPropsList = ref<TableColumnProProps[]>(colDefaultPropsList.value);\r\nconst editProps = computed(() => colPropsList.value.find(it => it.type === 'edit'));\r\n\r\n// 操作按钮组 当前原始vnode\r\nconst tableOperateVnode = computed(() => {\r\n const vNodes = slots.default?.() || [];\r\n const nodes = vNodes.find(vNode => vNode.props && vNode.props.type === 'edit');\r\n return nodes;\r\n});\r\n\r\nconst customDefaultPropsList = computed(() => {\r\n const defaultVnodes = tableOperateVnode.value?.children?.default?.(tableOperateVnode.value?.ctx.scope);\r\n const children = getVnodesByGmName(defaultVnodes, 'GmOperateButton');\r\n\r\n const btnProps: OperateButtonProps[] = children.map((vNode: { props: any }) => vNode.props) ?? [];\r\n // 循环插入props所需的默认值\r\n btnProps.forEach(it => {\r\n for (const key in operateButtonProps) {\r\n // 如果当前props含有默认值\r\n if (hasOwn(it, key)) {\r\n continue;\r\n }\r\n if (hasOwn(operateButtonProps, key)) {\r\n const element = operateButtonProps[key as keyof OperateButtonProps];\r\n // 如果btn 定义中含有默认值 则赋值给props\r\n if (hasOwn(element, 'default')) {\r\n Reflect.set(it, key, Reflect.get(element, 'default'));\r\n }\r\n }\r\n }\r\n });\r\n return btnProps;\r\n});\r\nconst customBtnPropsList = ref<OperateButtonProps[]>(customDefaultPropsList.value);\r\n\r\n// 表格头部弹层\r\nconst drawerHeaderVisible = ref(false); // 表头设置弹层\r\nconst drawerOperateVisible = ref(false); // 按钮设置弹层\r\nconst setTable = (event: string) => {\r\n if (event === 'header') {\r\n drawerHeaderVisible.value = true;\r\n }\r\n if (event === 'operate') {\r\n drawerOperateVisible.value = true;\r\n }\r\n};\r\n\r\n/**\r\n * 表头拖动,修改width\r\n */\r\nconst headerDragend = async (newWidth: number, oldWidth: number, column: any) => {\r\n const findItem = colPropsList.value.find(it => it.prop === column.property);\r\n const editItem = column.property === 'gmEdit' ? colPropsList.value.find(it => it.type === 'edit') : null;\r\n if (!findItem && !editItem) {\r\n return;\r\n }\r\n if (findItem) {\r\n findItem.width = newWidth;\r\n }\r\n if (editItem) {\r\n editItem.width = newWidth;\r\n }\r\n // 设置列宽\r\n await nextTick();\r\n gmTableHeaderRef.value?.submitSettings();\r\n};\r\n/**\r\n * 搜索模块\r\n */\r\nconst sortValue = defineModel<{\r\n ascs: string;\r\n descs: string;\r\n}>('sortValue');\r\n\r\nconst handleSortChange = (sort: Sort) => {\r\n if (sortValue.value) {\r\n sortValue.value.ascs = '';\r\n sortValue.value.descs = '';\r\n switch (sort.order) {\r\n case 'ascending':\r\n sortValue.value.ascs = sort.prop;\r\n break;\r\n case 'descending':\r\n sortValue.value.descs = sort.prop;\r\n break;\r\n }\r\n }\r\n\r\n emit('sortChange', sort);\r\n};\r\ndefineExpose({\r\n colPropsList,\r\n clearSort: () => GmTbaleRef.value?.clearSort(),\r\n});\r\n</script>\r\n\r\n<style lang=\"scss\" scoped>\r\n:deep(.gmTableNoBorder .el-table__body .el-table__cell) {\r\n border-right: none;\r\n}\r\n:deep(.gmTableNoBorder .el-table__inner-wrapper:before) {\r\n height: 0;\r\n}\r\n:deep(.gmTableNoBorder.el-table--border .el-table__inner-wrapper:after) {\r\n height: 0;\r\n}\r\n:deep(.gmTableNoBorder.el-table--border:after) {\r\n height: 0;\r\n}\r\n:deep(.gmTableNoBorder.el-table--border:before) {\r\n height: 0;\r\n}\r\n:deep(.gmTableNoBorder .el-table__border-left-patch) {\r\n height: 0;\r\n}\r\n</style>\r\n"],"names":["_useSlots","_useModel"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"TablePro.vue2.mjs","sources":["../../../../../../../packages/components/src/composite/tablePro/TablePro.vue"],"sourcesContent":["<template>\r\n <div>\r\n <gm-table\r\n ref=\"GmTbaleRef\"\r\n v-bind=\"props\"\r\n border\r\n class=\"gmTablePro\"\r\n :class=\"[props.border ? '' : 'gmTableNoBorder']\"\r\n @selection-change=\"(value: TableColumnProProps[]) => $emit('selectionChange', value)\"\r\n @sort-change=\"handleSortChange\"\r\n @header-dragend=\"headerDragend\"\r\n >\r\n <template v-if=\"props.selection\">\r\n <gm-table-column :key=\"999999\" type=\"selection\" width=\"50\" />\r\n </template>\r\n <template v-if=\"gmTableHeaderRef?.isInited\">\r\n <TableColumnVNodeRenderer :vnode=\"tableColumnVnode\" :propsList=\"colPropsList\" />\r\n </template>\r\n <!-- 操作 -->\r\n <gm-table-column\r\n v-if=\"customHeader || customOperate\"\r\n prop=\"gmEdit\"\r\n min-width=\"100\"\r\n :width=\"editProps?.width\"\r\n :fixed=\"operateFixed ? 'right' : false\"\r\n >\r\n <template #header>\r\n <div class=\"gm-text-center\">\r\n <gm-button v-if=\"customHeader\" type=\"primary\" link size=\"small\" @click=\"setTable('header')\"> 表头 </gm-button>\r\n <gm-button v-if=\"customOperate\" type=\"primary\" link size=\"small\" @click=\"setTable('operate')\"> 操作 </gm-button>\r\n </div>\r\n </template>\r\n <template #default=\"slotValue\">\r\n <!-- <VNodeRenderer :vnode=\"customVNodes\" /> -->\r\n <div v-if=\"tableOperateVnode && gmCustomOperationsRef && gmCustomOperationsRef.isInited\" class=\"gm-flex gm-flex-wrap gm-justify-center\">\r\n <TableOperateVNodeRenderer :vnode=\"tableOperateVnode.children?.default(slotValue)\" :customPropsList=\"customBtnPropsList\" />\r\n </div>\r\n </template>\r\n </gm-table-column>\r\n </gm-table>\r\n </div>\r\n\r\n <gm-table-header-form\r\n ref=\"gmTableHeaderRef\"\r\n v-model:isShowDrawer=\"drawerHeaderVisible\"\r\n v-model:colPropsList=\"colPropsList\"\r\n :colDefaultPropsList=\"colDefaultPropsList\"\r\n :keyWord=\"props.page\"\r\n type=\"HeaderList\"\r\n />\r\n\r\n <gm-operate-button-form\r\n ref=\"gmCustomOperationsRef\"\r\n v-model:isShowDrawer=\"drawerOperateVisible\"\r\n v-model:customBtnPropsList=\"customBtnPropsList\"\r\n :customDefaultPropsList=\"customDefaultPropsList\"\r\n :keyWord=\"props.page\"\r\n type=\"OperateList\"\r\n />\r\n</template>\r\n\r\n<script setup lang=\"ts\">\r\nimport { computed, nextTick, ref } from 'vue';\r\nimport { hasOwn } from '@giime/utils/src/objects';\r\n// import { cloneDeep } from 'lodash-es';\r\nimport { operateButtonProps } from '../operateButton/operateButton';\r\nimport TableOperateVNodeRenderer from './TableOperateVNodeRenderer';\r\nimport TableColumnVNodeRenderer from './TableColumnVNodeRenderer';\r\nimport { tableProEmits, tableProProps } from './tablePro';\r\nimport { getVnodesByGmName } from './tableHelper';\r\nimport { TableColumnProName, type TableColumnProProps, tableColumnProProps } from './tableColumnPro/tableColumnPro';\r\nimport type { OperateButtonFormInstance } from '../operateButton/operateButtonForm';\r\nimport type { TableHeaderFormInstance } from './tableHeaderForm';\r\nimport type { OperateButtonProps } from '../operateButton/operateButton';\r\nimport type { Sort, TableInstance } from 'element-plus';\r\n\r\ndefineOptions({\r\n name: 'GmTablePro',\r\n});\r\nconst GmTbaleRef = ref<TableInstance>();\r\nconst gmCustomOperationsRef = ref<OperateButtonFormInstance>();\r\nconst gmTableHeaderRef = ref<TableHeaderFormInstance>();\r\n\r\nconst emit = defineEmits(tableProEmits);\r\nconst props = defineProps(tableProProps);\r\n\r\nconst slots = defineSlots<{\r\n default(data?: any): any[];\r\n}>();\r\n// 列 当前原始vnode\r\nconst tableColumnVnode = computed(() => {\r\n const vNodes = slots.default?.() || [];\r\n // const nodes = vNodes.filter(vNode => vNode.props && vNode.props.type !== 'edit');\r\n return vNodes;\r\n});\r\n// 默认表头Props列表\r\nconst colDefaultPropsList = computed(() => {\r\n const vNodes = slots.default?.() || [];\r\n const children = getVnodesByGmName(vNodes, TableColumnProName);\r\n // const result = children.filter(vNode => vNode.props && vNode.props.type !== 'edit');\r\n\r\n const colProps: TableColumnProProps[] = children.map((vNode: { props: any }) => vNode.props) ?? [];\r\n // 循环插入props所需的默认值\r\n colProps.forEach(it => {\r\n for (const key in tableColumnProProps) {\r\n // 如果当前props含有默认值\r\n if (hasOwn(it, key)) {\r\n continue;\r\n }\r\n if (hasOwn(tableColumnProProps, key)) {\r\n const element = tableColumnProProps[key as keyof TableColumnProProps];\r\n // 如果btn 定义中含有默认值 则赋值给props\r\n if (hasOwn(element, 'default')) {\r\n Reflect.set(it, key, Reflect.get(element, 'default'));\r\n }\r\n }\r\n }\r\n });\r\n return colProps;\r\n});\r\n// 已选中表头\r\nconst colPropsList = ref<TableColumnProProps[]>(colDefaultPropsList.value);\r\nconst editProps = computed(() => colPropsList.value.find(it => it.type === 'edit'));\r\n\r\n// 操作按钮组 当前原始vnode\r\nconst tableOperateVnode = computed(() => {\r\n const vNodes = slots.default?.() || [];\r\n const nodes = vNodes.find(vNode => vNode.props && vNode.props.type === 'edit');\r\n return nodes;\r\n});\r\n\r\nconst customDefaultPropsList = computed(() => {\r\n const defaultVnodes = tableOperateVnode.value?.children?.default?.(tableOperateVnode.value?.ctx.scope);\r\n const children = getVnodesByGmName(defaultVnodes, 'GmOperateButton');\r\n\r\n const btnProps: OperateButtonProps[] = children.map((vNode: { props: any }) => vNode.props) ?? [];\r\n // 循环插入props所需的默认值\r\n btnProps.forEach(it => {\r\n for (const key in operateButtonProps) {\r\n // 如果当前props含有默认值\r\n if (hasOwn(it, key)) {\r\n continue;\r\n }\r\n if (hasOwn(operateButtonProps, key)) {\r\n const element = operateButtonProps[key as keyof OperateButtonProps];\r\n // 如果btn 定义中含有默认值 则赋值给props\r\n if (hasOwn(element, 'default')) {\r\n Reflect.set(it, key, Reflect.get(element, 'default'));\r\n }\r\n }\r\n }\r\n });\r\n return btnProps;\r\n});\r\nconst customBtnPropsList = ref<OperateButtonProps[]>(customDefaultPropsList.value);\r\n\r\n// 表格头部弹层\r\nconst drawerHeaderVisible = ref(false); // 表头设置弹层\r\nconst drawerOperateVisible = ref(false); // 按钮设置弹层\r\nconst setTable = (event: string) => {\r\n if (event === 'header') {\r\n drawerHeaderVisible.value = true;\r\n }\r\n if (event === 'operate') {\r\n drawerOperateVisible.value = true;\r\n }\r\n};\r\n\r\n/**\r\n * 表头拖动,修改width\r\n */\r\nconst headerDragend = async (newWidth: number, oldWidth: number, column: any) => {\r\n const findItem = colPropsList.value.find(it => it.prop === column.property);\r\n const editItem = column.property === 'gmEdit' ? colPropsList.value.find(it => it.type === 'edit') : null;\r\n if (!findItem && !editItem) {\r\n return;\r\n }\r\n if (findItem) {\r\n findItem.width = newWidth;\r\n }\r\n if (editItem) {\r\n editItem.width = newWidth;\r\n }\r\n // 设置列宽\r\n await nextTick();\r\n gmTableHeaderRef.value?.submitSettings();\r\n};\r\n/**\r\n * 搜索模块\r\n */\r\nconst sortValue = defineModel<\r\n {\r\n field: string;\r\n order: 'asc' | 'desc';\r\n }[]\r\n>('sortValue');\r\n\r\nconst handleSortChange = (sort: Sort) => {\r\n if (sortValue.value) {\r\n sortValue.value = [];\r\n switch (sort.order) {\r\n case 'ascending':\r\n sortValue.value.push({ field: sort.prop, order: 'asc' });\r\n break;\r\n case 'descending':\r\n sortValue.value.push({ field: sort.prop, order: 'desc' });\r\n break;\r\n }\r\n }\r\n\r\n emit('sortChange', sort);\r\n};\r\ndefineExpose({\r\n colPropsList,\r\n clearSort: () => GmTbaleRef.value?.clearSort(),\r\n});\r\n</script>\r\n\r\n<style lang=\"scss\" scoped>\r\n:deep(.gmTableNoBorder .el-table__body .el-table__cell) {\r\n border-right: none;\r\n}\r\n:deep(.gmTableNoBorder .el-table__inner-wrapper:before) {\r\n height: 0;\r\n}\r\n:deep(.gmTableNoBorder.el-table--border .el-table__inner-wrapper:after) {\r\n height: 0;\r\n}\r\n:deep(.gmTableNoBorder.el-table--border:after) {\r\n height: 0;\r\n}\r\n:deep(.gmTableNoBorder.el-table--border:before) {\r\n height: 0;\r\n}\r\n:deep(.gmTableNoBorder .el-table__border-left-patch) {\r\n height: 0;\r\n}\r\n</style>\r\n"],"names":["_useSlots","_useModel"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AA+EA,IAAA,MAAM,aAAa,GAAmB,EAAA,CAAA;AACtC,IAAA,MAAM,wBAAwB,GAA+B,EAAA,CAAA;AAC7D,IAAA,MAAM,mBAAmB,GAA6B,EAAA,CAAA;AAEtD,IAAA,MAAM,IAAO,GAAA,MAAA,CAAA;AACb,IAAA,MAAM,KAAQ,GAAA,OAAA,CAAA;AAEd,IAAA,MAAM,QAAQA,QAAA,EAAA,CAAA;AAId,IAAM,MAAA,gBAAA,GAAmB,SAAS,MAAM;AACtC,MAAA,MAAM,MAAS,GAAA,KAAA,CAAM,OAAU,IAAA,IAAK,EAAC,CAAA;AAErC,MAAO,OAAA,MAAA,CAAA;AAAA,KACR,CAAA,CAAA;AAED,IAAM,MAAA,mBAAA,GAAsB,SAAS,MAAM;AACzC,MAAA,MAAM,MAAS,GAAA,KAAA,CAAM,OAAU,IAAA,IAAK,EAAC,CAAA;AACrC,MAAM,MAAA,QAAA,GAAW,iBAAkB,CAAA,MAAA,EAAQ,kBAAkB,CAAA,CAAA;AAG7D,MAAM,MAAA,QAAA,GAAkC,SAAS,GAAI,CAAA,CAAC,UAA0B,KAAM,CAAA,KAAK,KAAK,EAAC,CAAA;AAEjG,MAAA,QAAA,CAAS,QAAQ,CAAM,EAAA,KAAA;AACrB,QAAA,KAAA,MAAW,OAAO,mBAAqB,EAAA;AAErC,UAAI,IAAA,MAAA,CAAO,EAAI,EAAA,GAAG,CAAG,EAAA;AACnB,YAAA,SAAA;AAAA,WACF;AACA,UAAI,IAAA,MAAA,CAAO,mBAAqB,EAAA,GAAG,CAAG,EAAA;AACpC,YAAM,MAAA,OAAA,GAAU,oBAAoB,GAAgC,CAAA,CAAA;AAEpE,YAAI,IAAA,MAAA,CAAO,OAAS,EAAA,SAAS,CAAG,EAAA;AAC9B,cAAA,OAAA,CAAQ,IAAI,EAAI,EAAA,GAAA,EAAK,QAAQ,GAAI,CAAA,OAAA,EAAS,SAAS,CAAC,CAAA,CAAA;AAAA,aACtD;AAAA,WACF;AAAA,SACF;AAAA,OACD,CAAA,CAAA;AACD,MAAO,OAAA,QAAA,CAAA;AAAA,KACR,CAAA,CAAA;AAED,IAAM,MAAA,YAAA,GAAe,GAA2B,CAAA,mBAAA,CAAoB,KAAK,CAAA,CAAA;AACzE,IAAM,MAAA,SAAA,GAAY,QAAS,CAAA,MAAM,YAAa,CAAA,KAAA,CAAM,KAAK,CAAM,EAAA,KAAA,EAAA,CAAG,IAAS,KAAA,MAAM,CAAC,CAAA,CAAA;AAGlF,IAAM,MAAA,iBAAA,GAAoB,SAAS,MAAM;AACvC,MAAA,MAAM,MAAS,GAAA,KAAA,CAAM,OAAU,IAAA,IAAK,EAAC,CAAA;AACrC,MAAM,MAAA,KAAA,GAAQ,OAAO,IAAK,CAAA,CAAA,KAAA,KAAS,MAAM,KAAS,IAAA,KAAA,CAAM,KAAM,CAAA,IAAA,KAAS,MAAM,CAAA,CAAA;AAC7E,MAAO,OAAA,KAAA,CAAA;AAAA,KACR,CAAA,CAAA;AAED,IAAM,MAAA,sBAAA,GAAyB,SAAS,MAAM;AAC5C,MAAM,MAAA,aAAA,GAAgB,kBAAkB,KAAO,EAAA,QAAA,EAAU,UAAU,iBAAkB,CAAA,KAAA,EAAO,IAAI,KAAK,CAAA,CAAA;AACrG,MAAM,MAAA,QAAA,GAAW,iBAAkB,CAAA,aAAA,EAAe,iBAAiB,CAAA,CAAA;AAEnE,MAAM,MAAA,QAAA,GAAiC,SAAS,GAAI,CAAA,CAAC,UAA0B,KAAM,CAAA,KAAK,KAAK,EAAC,CAAA;AAEhG,MAAA,QAAA,CAAS,QAAQ,CAAM,EAAA,KAAA;AACrB,QAAA,KAAA,MAAW,OAAO,kBAAoB,EAAA;AAEpC,UAAI,IAAA,MAAA,CAAO,EAAI,EAAA,GAAG,CAAG,EAAA;AACnB,YAAA,SAAA;AAAA,WACF;AACA,UAAI,IAAA,MAAA,CAAO,kBAAoB,EAAA,GAAG,CAAG,EAAA;AACnC,YAAM,MAAA,OAAA,GAAU,mBAAmB,GAA+B,CAAA,CAAA;AAElE,YAAI,IAAA,MAAA,CAAO,OAAS,EAAA,SAAS,CAAG,EAAA;AAC9B,cAAA,OAAA,CAAQ,IAAI,EAAI,EAAA,GAAA,EAAK,QAAQ,GAAI,CAAA,OAAA,EAAS,SAAS,CAAC,CAAA,CAAA;AAAA,aACtD;AAAA,WACF;AAAA,SACF;AAAA,OACD,CAAA,CAAA;AACD,MAAO,OAAA,QAAA,CAAA;AAAA,KACR,CAAA,CAAA;AACD,IAAM,MAAA,kBAAA,GAAqB,GAA0B,CAAA,sBAAA,CAAuB,KAAK,CAAA,CAAA;AAGjF,IAAM,MAAA,mBAAA,GAAsB,IAAI,KAAK,CAAA,CAAA;AACrC,IAAM,MAAA,oBAAA,GAAuB,IAAI,KAAK,CAAA,CAAA;AACtC,IAAM,MAAA,QAAA,GAAW,CAAC,KAAkB,KAAA;AAClC,MAAA,IAAI,UAAU,QAAU,EAAA;AACtB,QAAA,mBAAA,CAAoB,KAAQ,GAAA,IAAA,CAAA;AAAA,OAC9B;AACA,MAAA,IAAI,UAAU,SAAW,EAAA;AACvB,QAAA,oBAAA,CAAqB,KAAQ,GAAA,IAAA,CAAA;AAAA,OAC/B;AAAA,KACF,CAAA;AAKA,IAAA,MAAM,aAAgB,GAAA,OAAO,QAAkB,EAAA,QAAA,EAAkB,MAAgB,KAAA;AAC/E,MAAM,MAAA,QAAA,GAAW,aAAa,KAAM,CAAA,IAAA,CAAK,QAAM,EAAG,CAAA,IAAA,KAAS,OAAO,QAAQ,CAAA,CAAA;AAC1E,MAAM,MAAA,QAAA,GAAW,MAAO,CAAA,QAAA,KAAa,QAAW,GAAA,YAAA,CAAa,KAAM,CAAA,IAAA,CAAK,CAAM,EAAA,KAAA,EAAA,CAAG,IAAS,KAAA,MAAM,CAAI,GAAA,IAAA,CAAA;AACpG,MAAI,IAAA,CAAC,QAAY,IAAA,CAAC,QAAU,EAAA;AAC1B,QAAA,OAAA;AAAA,OACF;AACA,MAAA,IAAI,QAAU,EAAA;AACZ,QAAA,QAAA,CAAS,KAAQ,GAAA,QAAA,CAAA;AAAA,OACnB;AACA,MAAA,IAAI,QAAU,EAAA;AACZ,QAAA,QAAA,CAAS,KAAQ,GAAA,QAAA,CAAA;AAAA,OACnB;AAEA,MAAA,MAAM,QAAS,EAAA,CAAA;AACf,MAAA,gBAAA,CAAiB,OAAO,cAAe,EAAA,CAAA;AAAA,KACzC,CAAA;AAIA,IAAM,MAAA,SAAA,GAAYC,QAKhB,CAAA,OAAA,EAAA,WAAW,CAAA,CAAA;AAEb,IAAM,MAAA,gBAAA,GAAmB,CAAC,IAAe,KAAA;AACvC,MAAA,IAAI,UAAU,KAAO,EAAA;AACnB,QAAA,SAAA,CAAU,QAAQ,EAAC,CAAA;AACnB,QAAA,QAAQ,KAAK,KAAO;AAAA,UAClB,KAAK,WAAA;AACH,YAAU,SAAA,CAAA,KAAA,CAAM,KAAK,EAAE,KAAA,EAAO,KAAK,IAAM,EAAA,KAAA,EAAO,OAAO,CAAA,CAAA;AACvD,YAAA,MAAA;AAAA,UACF,KAAK,YAAA;AACH,YAAU,SAAA,CAAA,KAAA,CAAM,KAAK,EAAE,KAAA,EAAO,KAAK,IAAM,EAAA,KAAA,EAAO,QAAQ,CAAA,CAAA;AACxD,YAAA,MAAA;AAAA,SACJ;AAAA,OACF;AAEA,MAAA,IAAA,CAAK,cAAc,IAAI,CAAA,CAAA;AAAA,KACzB,CAAA;AACA,IAAa,QAAA,CAAA;AAAA,MACX,YAAA;AAAA,MACA,SAAW,EAAA,MAAM,UAAW,CAAA,KAAA,EAAO,SAAU,EAAA;AAAA,KAC9C,CAAA,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
|
@@ -2,9 +2,9 @@ import TablePro from './TablePro.vue';
|
|
|
2
2
|
export declare const GmTablePro: import("../../../../utils").SFCWithInstall<{
|
|
3
3
|
new (...args: any[]): import("vue").CreateComponentPublicInstance<Readonly<import("vue").ExtractPropTypes<{
|
|
4
4
|
sortValue: import("vue").PropType<{
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
}>;
|
|
5
|
+
field: string;
|
|
6
|
+
order: "asc" | "desc";
|
|
7
|
+
}[]>;
|
|
8
8
|
headerCellStyle: {
|
|
9
9
|
type: ObjectConstructor;
|
|
10
10
|
default: () => {
|
|
@@ -124,9 +124,9 @@ export declare const GmTablePro: import("../../../../utils").SFCWithInstall<{
|
|
|
124
124
|
showOverflowTooltip: import("vue").PropType<boolean | Partial<Pick<import("element-plus").ElTooltipProps, "offset" | "appendTo" | "effect" | "placement" | "popperClass" | "popperOptions" | "hideAfter" | "transition" | "enterable" | "showAfter" | "showArrow">> | undefined>;
|
|
125
125
|
}>> & {
|
|
126
126
|
"onUpdate:sortValue"?: ((sortValue: {
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
}) => any) | undefined;
|
|
127
|
+
field: string;
|
|
128
|
+
order: "asc" | "desc";
|
|
129
|
+
}[]) => any) | undefined;
|
|
130
130
|
onTableOperate?: ((btn: Record<string, any>, row: Record<string, any>) => any) | undefined;
|
|
131
131
|
onSelectionChange?: ((value: Record<string, any>[]) => any) | undefined;
|
|
132
132
|
onSortChange?: ((value: import("element-plus/es/components/table/src/table/defaults.js").Sort) => any) | undefined;
|
|
@@ -292,17 +292,17 @@ export declare const GmTablePro: import("../../../../utils").SFCWithInstall<{
|
|
|
292
292
|
clearSort: () => void | undefined;
|
|
293
293
|
}, unknown, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
|
|
294
294
|
"update:sortValue": (sortValue: {
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
}) => void;
|
|
295
|
+
field: string;
|
|
296
|
+
order: "asc" | "desc";
|
|
297
|
+
}[]) => void;
|
|
298
298
|
tableOperate: (btn: Record<string, any>, row: Record<string, any>) => void;
|
|
299
299
|
selectionChange: (value: Record<string, any>[]) => void;
|
|
300
300
|
sortChange: (value: import("element-plus/es/components/table/src/table/defaults.js").Sort) => void;
|
|
301
301
|
}, import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps & Readonly<import("vue").ExtractPropTypes<{
|
|
302
302
|
sortValue: import("vue").PropType<{
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
}>;
|
|
303
|
+
field: string;
|
|
304
|
+
order: "asc" | "desc";
|
|
305
|
+
}[]>;
|
|
306
306
|
headerCellStyle: {
|
|
307
307
|
type: ObjectConstructor;
|
|
308
308
|
default: () => {
|
|
@@ -422,9 +422,9 @@ export declare const GmTablePro: import("../../../../utils").SFCWithInstall<{
|
|
|
422
422
|
showOverflowTooltip: import("vue").PropType<boolean | Partial<Pick<import("element-plus").ElTooltipProps, "offset" | "appendTo" | "effect" | "placement" | "popperClass" | "popperOptions" | "hideAfter" | "transition" | "enterable" | "showAfter" | "showArrow">> | undefined>;
|
|
423
423
|
}>> & {
|
|
424
424
|
"onUpdate:sortValue"?: ((sortValue: {
|
|
425
|
-
|
|
426
|
-
|
|
427
|
-
}) => any) | undefined;
|
|
425
|
+
field: string;
|
|
426
|
+
order: "asc" | "desc";
|
|
427
|
+
}[]) => any) | undefined;
|
|
428
428
|
onTableOperate?: ((btn: Record<string, any>, row: Record<string, any>) => any) | undefined;
|
|
429
429
|
onSelectionChange?: ((value: Record<string, any>[]) => any) | undefined;
|
|
430
430
|
onSortChange?: ((value: import("element-plus/es/components/table/src/table/defaults.js").Sort) => any) | undefined;
|
|
@@ -464,9 +464,9 @@ export declare const GmTablePro: import("../../../../utils").SFCWithInstall<{
|
|
|
464
464
|
Defaults: {};
|
|
465
465
|
}, Readonly<import("vue").ExtractPropTypes<{
|
|
466
466
|
sortValue: import("vue").PropType<{
|
|
467
|
-
|
|
468
|
-
|
|
469
|
-
}>;
|
|
467
|
+
field: string;
|
|
468
|
+
order: "asc" | "desc";
|
|
469
|
+
}[]>;
|
|
470
470
|
headerCellStyle: {
|
|
471
471
|
type: ObjectConstructor;
|
|
472
472
|
default: () => {
|
|
@@ -586,9 +586,9 @@ export declare const GmTablePro: import("../../../../utils").SFCWithInstall<{
|
|
|
586
586
|
showOverflowTooltip: import("vue").PropType<boolean | Partial<Pick<import("element-plus").ElTooltipProps, "offset" | "appendTo" | "effect" | "placement" | "popperClass" | "popperOptions" | "hideAfter" | "transition" | "enterable" | "showAfter" | "showArrow">> | undefined>;
|
|
587
587
|
}>> & {
|
|
588
588
|
"onUpdate:sortValue"?: ((sortValue: {
|
|
589
|
-
|
|
590
|
-
|
|
591
|
-
}) => any) | undefined;
|
|
589
|
+
field: string;
|
|
590
|
+
order: "asc" | "desc";
|
|
591
|
+
}[]) => any) | undefined;
|
|
592
592
|
onTableOperate?: ((btn: Record<string, any>, row: Record<string, any>) => any) | undefined;
|
|
593
593
|
onSelectionChange?: ((value: Record<string, any>[]) => any) | undefined;
|
|
594
594
|
onSortChange?: ((value: import("element-plus/es/components/table/src/table/defaults.js").Sort) => any) | undefined;
|
|
@@ -785,9 +785,9 @@ export declare const GmTablePro: import("../../../../utils").SFCWithInstall<{
|
|
|
785
785
|
__isSuspense?: undefined;
|
|
786
786
|
} & import("vue").ComponentOptionsBase<Readonly<import("vue").ExtractPropTypes<{
|
|
787
787
|
sortValue: import("vue").PropType<{
|
|
788
|
-
|
|
789
|
-
|
|
790
|
-
}>;
|
|
788
|
+
field: string;
|
|
789
|
+
order: "asc" | "desc";
|
|
790
|
+
}[]>;
|
|
791
791
|
headerCellStyle: {
|
|
792
792
|
type: ObjectConstructor;
|
|
793
793
|
default: () => {
|
|
@@ -907,9 +907,9 @@ export declare const GmTablePro: import("../../../../utils").SFCWithInstall<{
|
|
|
907
907
|
showOverflowTooltip: import("vue").PropType<boolean | Partial<Pick<import("element-plus").ElTooltipProps, "offset" | "appendTo" | "effect" | "placement" | "popperClass" | "popperOptions" | "hideAfter" | "transition" | "enterable" | "showAfter" | "showArrow">> | undefined>;
|
|
908
908
|
}>> & {
|
|
909
909
|
"onUpdate:sortValue"?: ((sortValue: {
|
|
910
|
-
|
|
911
|
-
|
|
912
|
-
}) => any) | undefined;
|
|
910
|
+
field: string;
|
|
911
|
+
order: "asc" | "desc";
|
|
912
|
+
}[]) => any) | undefined;
|
|
913
913
|
onTableOperate?: ((btn: Record<string, any>, row: Record<string, any>) => any) | undefined;
|
|
914
914
|
onSelectionChange?: ((value: Record<string, any>[]) => any) | undefined;
|
|
915
915
|
onSortChange?: ((value: import("element-plus/es/components/table/src/table/defaults.js").Sort) => any) | undefined;
|
|
@@ -1075,9 +1075,9 @@ export declare const GmTablePro: import("../../../../utils").SFCWithInstall<{
|
|
|
1075
1075
|
clearSort: () => void | undefined;
|
|
1076
1076
|
}, unknown, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
|
|
1077
1077
|
"update:sortValue": (sortValue: {
|
|
1078
|
-
|
|
1079
|
-
|
|
1080
|
-
}) => void;
|
|
1078
|
+
field: string;
|
|
1079
|
+
order: "asc" | "desc";
|
|
1080
|
+
}[]) => void;
|
|
1081
1081
|
tableOperate: (btn: Record<string, any>, row: Record<string, any>) => void;
|
|
1082
1082
|
selectionChange: (value: Record<string, any>[]) => void;
|
|
1083
1083
|
sortChange: (value: import("element-plus/es/components/table/src/table/defaults.js").Sort) => void;
|
package/es/giime/version.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
export declare const version = "0.0
|
|
1
|
+
export declare const version = "0.1.0";
|
package/es/giime/version.mjs
CHANGED
package/es/giime/version.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"version.mjs","sources":["../../../../packages/giime/version.ts"],"sourcesContent":["export const version = '0.0.
|
|
1
|
+
{"version":3,"file":"version.mjs","sources":["../../../../packages/giime/version.ts"],"sourcesContent":["export const version = '0.0.30';\n"],"names":[],"mappings":"AAAO,MAAM,OAAU,GAAA;;;;"}
|
|
@@ -1,9 +1,13 @@
|
|
|
1
|
-
|
|
1
|
+
import type { AxiosResponse } from 'axios';
|
|
2
|
+
export interface DownloadOptions {
|
|
3
|
+
filename?: string;
|
|
4
|
+
}
|
|
5
|
+
export interface DateownloadZipItem {
|
|
2
6
|
url: string;
|
|
3
|
-
|
|
4
|
-
fileType?: string;
|
|
7
|
+
filename?: string;
|
|
5
8
|
}
|
|
6
9
|
export declare const useDownload: () => {
|
|
7
|
-
|
|
8
|
-
|
|
10
|
+
downloadByUrl: (url: string, options?: DownloadOptions) => Promise<void>;
|
|
11
|
+
downloadByRes: (res: AxiosResponse<any, any>, options?: DownloadOptions) => Promise<void>;
|
|
12
|
+
downloadToZip: (fileList: DateownloadZipItem[], filename: string) => Promise<void>;
|
|
9
13
|
};
|
|
@@ -1,87 +1,48 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { h, ref } from 'vue';
|
|
2
|
+
import FileSaver from 'file-saver';
|
|
2
3
|
import { GmNotification } from '../../../components/src/plugins/notification/index.mjs';
|
|
4
|
+
import { v4 } from 'uuid';
|
|
3
5
|
import JSZip from 'jszip';
|
|
4
6
|
|
|
5
7
|
const useDownload = () => {
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
progress.value = Math.floor(e.loaded / e.total * 100);
|
|
23
|
-
if (!options.isZip) {
|
|
24
|
-
editElementContent(currentClass, `\u5F53\u524D\u4E0B\u8F7D\u8FDB\u5EA6 ${progress.value}%`);
|
|
25
|
-
}
|
|
26
|
-
if (progress.value == 100) {
|
|
27
|
-
progress.value = 0;
|
|
28
|
-
downloading = false;
|
|
29
|
-
}
|
|
30
|
-
};
|
|
31
|
-
xhrInstance.onloadend = (e) => {
|
|
32
|
-
const eventTarget = e.target;
|
|
33
|
-
if ([200, 304].includes(eventTarget.status)) {
|
|
34
|
-
const blob = eventTarget.response;
|
|
35
|
-
if (!options.isZip) {
|
|
36
|
-
createDownload(blob, options.fileName, options.fileType);
|
|
37
|
-
GmNotification({
|
|
38
|
-
type: "success",
|
|
39
|
-
title: "\u6E29\u99A8\u63D0\u793A",
|
|
40
|
-
message: "\u4E0B\u8F7D\u5B8C\u6210",
|
|
41
|
-
duration: 3e3
|
|
42
|
-
});
|
|
43
|
-
}
|
|
44
|
-
xhrInstance = null;
|
|
45
|
-
resolve(blob);
|
|
46
|
-
}
|
|
47
|
-
};
|
|
48
|
-
xhrInstance.onerror = function(e) {
|
|
49
|
-
downloading = false;
|
|
50
|
-
GmNotification({
|
|
51
|
-
type: "error",
|
|
52
|
-
title: "\u6E29\u99A8\u63D0\u793A",
|
|
53
|
-
message: "\u4E0B\u8F7D\u5F02\u5E38\uFF0C\u8BF7\u91CD\u8BD5",
|
|
54
|
-
duration: 1500
|
|
55
|
-
});
|
|
56
|
-
reject(e);
|
|
57
|
-
};
|
|
58
|
-
xhrInstance.send();
|
|
8
|
+
const getUrlFilename = (url) => {
|
|
9
|
+
const filename = url.split("/").pop()?.split("?")[0] || "file";
|
|
10
|
+
return filename;
|
|
11
|
+
};
|
|
12
|
+
const downloadByUrl = async (url, options) => {
|
|
13
|
+
const filename = options?.filename || getUrlFilename(url);
|
|
14
|
+
const curId = v4();
|
|
15
|
+
const modalInfo = GmNotification({
|
|
16
|
+
title: "\u4E0B\u8F7D\u4E2D",
|
|
17
|
+
message: h("div", { className: curId }, [`\u5F53\u524D\u4E0B\u8F7D\u8FDB\u5EA6 0%`]),
|
|
18
|
+
duration: 0
|
|
19
|
+
});
|
|
20
|
+
await createDownload({
|
|
21
|
+
url,
|
|
22
|
+
filename,
|
|
23
|
+
uuid: curId
|
|
59
24
|
});
|
|
25
|
+
modalInfo.close();
|
|
60
26
|
};
|
|
61
|
-
const
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
await downloadBlob(downblobOptions);
|
|
79
|
-
modalInfo.close();
|
|
80
|
-
} catch (error) {
|
|
81
|
-
console.error(error);
|
|
82
|
-
}
|
|
27
|
+
const downloadByRes = async (res, options) => {
|
|
28
|
+
const filename = options?.filename || res.headers["Content-Disposition"]?.split("filename=")[1] || "file";
|
|
29
|
+
const resBlob = await res.data;
|
|
30
|
+
const curId = v4();
|
|
31
|
+
const modalInfo = GmNotification({
|
|
32
|
+
title: "\u4E0B\u8F7D\u4E2D",
|
|
33
|
+
message: h("div", { className: curId }, [`\u5F53\u524D\u4E0B\u8F7D\u8FDB\u5EA6 0%`]),
|
|
34
|
+
duration: 0
|
|
35
|
+
});
|
|
36
|
+
const blob = new Blob([resBlob]);
|
|
37
|
+
const fileUrl = window.URL.createObjectURL(blob);
|
|
38
|
+
await createDownload({
|
|
39
|
+
url: fileUrl,
|
|
40
|
+
filename,
|
|
41
|
+
uuid: curId
|
|
42
|
+
});
|
|
43
|
+
modalInfo.close();
|
|
83
44
|
};
|
|
84
|
-
const
|
|
45
|
+
const downloadToZip = async (fileList, filename) => {
|
|
85
46
|
try {
|
|
86
47
|
const currentContentClass = `message${Date.now()}`;
|
|
87
48
|
const downloadCount = ref(0);
|
|
@@ -94,28 +55,21 @@ const useDownload = () => {
|
|
|
94
55
|
const zipInstance = new JSZip();
|
|
95
56
|
for (let i = 0; i < len; i++) {
|
|
96
57
|
const currentItem = fileList[i];
|
|
97
|
-
const currentFileType = currentItem.fileType || currentItem.url.split(".").pop();
|
|
98
58
|
const downblobOptions = {
|
|
99
59
|
url: currentItem.url,
|
|
100
|
-
|
|
101
|
-
fileType: currentFileType,
|
|
60
|
+
filename: currentItem.filename ?? getUrlFilename(currentItem.url),
|
|
102
61
|
isZip: true
|
|
103
62
|
};
|
|
104
|
-
|
|
105
|
-
zipInstance.file(
|
|
63
|
+
createDownload(downblobOptions).then((res) => {
|
|
64
|
+
zipInstance.file(downblobOptions.filename, res);
|
|
106
65
|
downloadCount.value++;
|
|
107
66
|
editElementContent(currentContentClass, `\u603B\u4E0B\u8F7D\u6587\u4EF6\u6570\uFF1A${len}\uFF0C\u5DF2\u4E0B\u8F7D\u6587\u4EF6\u6570\uFF1A${downloadCount.value}`);
|
|
108
67
|
if (downloadCount.value == len) {
|
|
109
|
-
|
|
110
|
-
modalInfo.close();
|
|
111
|
-
GmNotification({
|
|
112
|
-
type: "success",
|
|
113
|
-
title: "\u6E29\u99A8\u63D0\u793A",
|
|
114
|
-
message: "\u4E0B\u8F7D\u5B8C\u6210",
|
|
115
|
-
duration: 3e3
|
|
116
|
-
});
|
|
68
|
+
editElementContent(currentContentClass, `\u6B63\u5728\u5408\u5E76...`);
|
|
117
69
|
zipInstance.generateAsync({ type: "blob" }).then((res2) => {
|
|
118
|
-
|
|
70
|
+
modalInfo.close();
|
|
71
|
+
const fileUrl = window.URL.createObjectURL(res2);
|
|
72
|
+
downloadByUrl(fileUrl, { filename });
|
|
119
73
|
}).catch((error) => {
|
|
120
74
|
console.error(error);
|
|
121
75
|
});
|
|
@@ -126,23 +80,43 @@ const useDownload = () => {
|
|
|
126
80
|
console.error(error);
|
|
127
81
|
}
|
|
128
82
|
};
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
83
|
+
const createDownload = (options) => {
|
|
84
|
+
return new Promise((resolve, reject) => {
|
|
85
|
+
const xhr = new XMLHttpRequest();
|
|
86
|
+
xhr.open("GET", options.url, true);
|
|
87
|
+
xhr.responseType = "blob";
|
|
88
|
+
xhr.onprogress = function(event) {
|
|
89
|
+
if (event.lengthComputable) {
|
|
90
|
+
const percentComplete = Math.floor(event.loaded / event.total * 100);
|
|
91
|
+
if (options.uuid) {
|
|
92
|
+
editElementContent(options.uuid, `\u5F53\u524D\u4E0B\u8F7D\u8FDB\u5EA6 ${percentComplete}%`);
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
};
|
|
96
|
+
xhr.onload = function(e) {
|
|
97
|
+
const eventTarget = e.target;
|
|
98
|
+
if ([200, 304].includes(eventTarget.status)) {
|
|
99
|
+
const blob = eventTarget.response;
|
|
100
|
+
if (!options.isZip) {
|
|
101
|
+
FileSaver.saveAs(blob, options.filename);
|
|
102
|
+
GmNotification({
|
|
103
|
+
type: "success",
|
|
104
|
+
title: "\u6E29\u99A8\u63D0\u793A",
|
|
105
|
+
message: "\u4E0B\u8F7D\u5B8C\u6210",
|
|
106
|
+
duration: 3e3
|
|
107
|
+
});
|
|
108
|
+
}
|
|
109
|
+
resolve(blob);
|
|
110
|
+
}
|
|
111
|
+
};
|
|
112
|
+
xhr.onerror = function(e) {
|
|
113
|
+
GmMessage.error("\u4E0B\u8F7D\u5F02\u5E38\uFF0C\u8BF7\u91CD\u8BD5");
|
|
114
|
+
reject(e);
|
|
115
|
+
};
|
|
116
|
+
xhr.send();
|
|
117
|
+
});
|
|
132
118
|
};
|
|
133
|
-
};
|
|
134
|
-
const createDownload = (blob, fileName, fileType) => {
|
|
135
|
-
if (!blob || !fileName || !fileType)
|
|
136
|
-
return;
|
|
137
|
-
const ele = document.createElement("a");
|
|
138
|
-
const url = window.URL.createObjectURL(blob);
|
|
139
|
-
ele.style.display = "none";
|
|
140
|
-
ele.href = url;
|
|
141
|
-
ele.download = `${fileName}.${fileType}`;
|
|
142
|
-
document.body.appendChild(ele);
|
|
143
|
-
ele.click();
|
|
144
|
-
window.URL.revokeObjectURL(url);
|
|
145
|
-
document.body.removeChild(ele);
|
|
119
|
+
return { downloadByUrl, downloadByRes, downloadToZip };
|
|
146
120
|
};
|
|
147
121
|
const editElementContent = (className, content) => {
|
|
148
122
|
const currentEle = document.getElementsByClassName(className)[0];
|