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 CHANGED
@@ -49,7 +49,7 @@ Giime遵循MIT许可证发布,请查阅LICENSE文件以获取更多信息。
49
49
 
50
50
  ## 版本发布
51
51
  ```bash
52
- git tag v0.0.3
52
+ git tag v0.1.1
53
53
  git push origin --tags
54
54
  git tag --sort=-creatordate
55
55
  git log tag1..tag2
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-9f72778f] .gmTableNoBorder .el-table__body .el-table__cell {
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-9f72778f] .gmTableNoBorder .el-table__inner-wrapper:before {
16
+ [data-v-e38c9d81] .gmTableNoBorder .el-table__inner-wrapper:before {
17
17
  height: 0;
18
18
  }
19
19
 
20
- [data-v-9f72778f] .gmTableNoBorder.el-table--border .el-table__inner-wrapper:after {
20
+ [data-v-e38c9d81] .gmTableNoBorder.el-table--border .el-table__inner-wrapper:after {
21
21
  height: 0;
22
22
  }
23
23
 
24
- [data-v-9f72778f] .gmTableNoBorder.el-table--border:after {
24
+ [data-v-e38c9d81] .gmTableNoBorder.el-table--border:after {
25
25
  height: 0;
26
26
  }
27
27
 
28
- [data-v-9f72778f] .gmTableNoBorder.el-table--border:before {
28
+ [data-v-e38c9d81] .gmTableNoBorder.el-table--border:before {
29
29
  height: 0;
30
30
  }
31
31
 
32
- [data-v-9f72778f] .gmTableNoBorder .el-table__border-left-patch {
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
- ascs: string;
5
- descs: string;
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
- ascs: string;
287
- descs: string;
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
- ascs: string;
295
- descs: string;
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
- ascs: string;
417
- descs: string;
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-9f72778f"], ["__file", "TablePro.vue"]]);
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-9f72778f"), n = n(), popScopeId(), n);
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.ascs = "";
112
- sortValue.value.descs = "";
111
+ sortValue.value = [];
113
112
  switch (sort.order) {
114
113
  case "ascending":
115
- sortValue.value.ascs = sort.prop;
114
+ sortValue.value.push({ field: sort.prop, order: "asc" });
116
115
  break;
117
116
  case "descending":
118
- sortValue.value.descs = sort.prop;
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":"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"}
@@ -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
- ascs: string;
6
- descs: string;
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
- ascs: string;
128
- descs: string;
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
- ascs: string;
296
- descs: string;
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
- ascs: string;
304
- descs: string;
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
- ascs: string;
426
- descs: string;
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
- ascs: string;
468
- descs: string;
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
- ascs: string;
590
- descs: string;
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
- ascs: string;
789
- descs: string;
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
- ascs: string;
911
- descs: string;
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
- ascs: string;
1079
- descs: string;
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;
@@ -1 +1 @@
1
- export declare const version = "0.0.30";
1
+ export declare const version = "0.1.0";
@@ -1,4 +1,4 @@
1
- const version = "0.0.29";
1
+ const version = "0.0.30";
2
2
 
3
3
  export { version };
4
4
  //# sourceMappingURL=version.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"version.mjs","sources":["../../../../packages/giime/version.ts"],"sourcesContent":["export const version = '0.0.29';\n"],"names":[],"mappings":"AAAO,MAAM,OAAU,GAAA;;;;"}
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
- export interface OptionsType {
1
+ import type { AxiosResponse } from 'axios';
2
+ export interface DownloadOptions {
3
+ filename?: string;
4
+ }
5
+ export interface DateownloadZipItem {
2
6
  url: string;
3
- fileName: string;
4
- fileType?: string;
7
+ filename?: string;
5
8
  }
6
9
  export declare const useDownload: () => {
7
- downloadFile: (options: OptionsType) => Promise<void>;
8
- downloadZip: (fileList: OptionsType[], fileName: string) => Promise<void>;
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 { ref, onBeforeUnmount, h } from 'vue';
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
- let xhrInstance;
7
- let downloading = false;
8
- const progress = ref(0);
9
- const currentClass = `class${Date.now()}`;
10
- onBeforeUnmount(() => {
11
- if (xhrInstance) {
12
- xhrInstance.abort();
13
- xhrInstance = null;
14
- }
15
- });
16
- const downloadBlob = (options) => {
17
- return new Promise((resolve, reject) => {
18
- xhrInstance = new XMLHttpRequest();
19
- xhrInstance.responseType = "blob";
20
- xhrInstance.open("get", options.url, true);
21
- xhrInstance.onprogress = (e) => {
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 downloadFile = async (options) => {
62
- try {
63
- if (downloading || !options.url || !options.fileName)
64
- return;
65
- downloading = true;
66
- const fileType = options.fileType || options.url.split(".").pop();
67
- const modalInfo = GmNotification({
68
- title: "\u4E0B\u8F7D\u4E2D",
69
- message: h("div", { className: currentClass }, [`\u5F53\u524D\u4E0B\u8F7D\u8FDB\u5EA6 ${progress.value}%`]),
70
- duration: 0
71
- });
72
- const downblobOptions = {
73
- url: options.url,
74
- fileName: options.fileName,
75
- fileType,
76
- isZip: false
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 downloadZip = async (fileList, fileName) => {
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
- fileName: currentItem.fileName,
101
- fileType: currentFileType,
60
+ filename: currentItem.filename ?? getUrlFilename(currentItem.url),
102
61
  isZip: true
103
62
  };
104
- downloadBlob(downblobOptions).then((res) => {
105
- zipInstance.file(`${currentItem.fileName}.${currentFileType}`, res);
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
- downloading = false;
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
- createDownload(res2, fileName, "zip");
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
- return {
130
- downloadFile,
131
- downloadZip
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];