{"version":3,"file":"page-table-v2.mjs","sources":["../../../../../../packages/components/page-table-v2/src/page-table-v2.vue"],"sourcesContent":["<template>\n  <hl-group full class=\"full-page fx-page-table-v2\" gap=\"var(--lg)\">\n    <hl-panel v-if=\"$slots.tree\" v-show=\"showTree\" class=\"table-panel h-full static left-section-tree\" full-body borderless>\n      <slot name=\"tree\"></slot>\n    </hl-panel>\n\n    <hl-panel class=\"w-xxl bg-transparent\" full-body borderless padding=\"0\" header-class=\"flex-wrap\">\n      <template v-if=\"tabs.length || searchItems.length\" #header>\n        <hl-tabs\n          v-if=\"tabs.length\"\n          v-model=\"activeTab\"\n          type=\"line\"\n          :show-pane=\"false\"\n          class=\"w-full table-tabs\"\n          style=\"background:var(--bg-element)\"\n          nav-height=\"var(--nav-height)\"\n          v-bind=\"tabsProps\"\n          @tab-change=\"$emit('tab-change', activeTab)\"\n        >\n          <hl-tab-pane v-for=\"t in tabs\" :key=\"t.name\" :label=\"t.label\" :name=\"t.name\" />\n        </hl-tabs>\n        <table-search-wrapper\n          :show-search-bar=\"searchItems.length > 0\"\n          :search-items=\"searchItems\"\n          :show-adv-search=\"showAdvSearch\"\n          :hide-header-line=\"!!tabs?.length\"\n          :show-reset-at-simple-mode=\"showResetAtSimpleMode\"\n          @search=\"searchBarChanged\"\n          @change-height=\"setContentHeight\"\n        >\n          <template v-for=\"s in searchItemsSlots\" #[s]=\"itemData\">\n            <slot :name=\"s\" v-bind=\"itemData\"></slot>\n          </template>\n        </table-search-wrapper>\n      </template>\n      <slot name=\"header-top\"></slot>\n      <slot :name=\"activeTab && tabs.length ? activeTab : 'default'\">\n        <hl-panel\n          ref=\"tableContentRef\"\n          class=\"h-full table-page\"\n          header-class=\"border-transparent\"\n          footer-class=\"border-transparent\"\n          full-body\n        >\n          <template #header>\n            <search-items if=\"showToolBar\" :tags=\"currentSearchTags\" @tag-box-height=\"setTagBoxHeight\" @clear-tags=\"clearTags\">\n              <template #content-header-left>\n                <total-info v-bind=\"totalInfoData\" />\n                <slot name=\"total-info-toolbar-extra-after\"></slot>\n              </template>\n              <template #content-header-right>\n                <slot name=\"toolbar-extra-before\"></slot>\n                <dropdown-button v-if=\"selectionActions.length > 0\" :options=\"selectionActions\" :disabled=\"selectedRowKeys.length <= 0\" />\n                <slot name=\"toolbar-extra-after\"></slot>\n              </template>\n            </search-items>\n          </template>\n          <hl-scrollbar style=\"margin: 0 var(--panel-padding)\">\n            <slot name=\"custom-table\" :data=\"tableData\">\n              <hl-simple-table\n                :cols=\"newCols\"\n                :data=\"tableData\"\n                border=\"border-x\"\n                padding=\"var(--sm)\"\n                fixed-header\n                v-bind=\"tableProps\"\n                @sort-change=\"(...args) => $emit('sort-change', ...args)\"\n                @row-click=\"(...args) => $emit('row-click', ...args)\"\n                @cell-click=\"(...args) => $emit('cell-click', ...args)\"\n              >\n                <template #tableIndex=\"{ rowIndex }\">\n                  <span class=\"table-index\">{{ rowIndex + 1 }}</span>\n                </template>\n                <!-- 行多选 -->\n                <template #selectionCol>\n                  <hl-checkbox\n                    v-if=\"isMultipleSelect\"\n                    v-model=\"isSelectedAll\"\n                    :indeterminate=\"isIndeterminate\"\n                    :show-label=\"false\"\n                    @change=\"selectAll\"\n                  />\n                </template>\n                <template #tableSelection=\"{ row }\">\n                  <hl-checkbox\n                    v-if=\"isMultipleSelect\"\n                    v-model=\"selectedRowKeys\"\n                    :label=\"row.id\"\n                    :show-label=\"false\"\n                    @change=\"selectRow\"\n                    @click.stop\n                  />\n                  <hl-radio\n                    v-else\n                    v-model=\"selectedRadioKey\"\n                    :label=\"row.id\"\n                    :show-label=\"false\"\n                    @change=\"handleRadioChange\"\n                    @click.stop\n                  />\n                </template>\n                <!-- 行操作 -->\n                <template #action=\"{ row }\">\n                  <hl-group gap=\"var(--xxs)\">\n                    <slot name=\"action\" :row=\"row\"></slot>\n                  </hl-group>\n                </template>\n                <!-- 展开行插槽 -->\n                <template #customExpand=\"{ row }\">\n                  <slot name=\"customExpand\" :row=\"row\"></slot>\n                </template>\n                <!-- 无数据 -->\n                <template #empty>\n                  <hb-empty description=\"暂无数据\" image-size=\"10vw\" :image=\"noDataImage\">\n                    <template #image>\n                      <empty-image />\n                    </template>\n                  </hb-empty>\n                </template>\n                <template v-for=\"col in slotCols\" #[col.slotName]=\"colData\" :key=\"col.slotName\">\n                  <slot :name=\"col.slotName\" v-bind=\"colData\"> </slot>\n                </template>\n                <template v-for=\"filter in filterSlots\" #[filter.slotName]=\"close\" :key=\"filter.slotName\">\n                  <slot :name=\"filter.slotName\" v-bind=\"close\"> </slot>\n                </template>\n              </hl-simple-table>\n            </slot>\n          </hl-scrollbar>\n          <template v-if=\"pagination.show\" #footer>\n            <div class=\"footer-action\">\n              <slot name=\"footer-action\"></slot>\n            </div>\n            <hl-pagination\n              v-if=\"tableData?.length > 0\"\n              ref=\"paginationRef\"\n              :page-size=\"pagination.pageSize\"\n              :current-page=\"pagination.currentPage\"\n              :total=\"pagination.total\"\n              align=\"items-right\"\n              class=\"full\"\n              layout=\"total, slot, prev, pager, next, jumper\"\n              @current-change=\"currentPageChange\"\n              @size-change=\"pageSizeChange\"\n            >\n              <hl-group align=\"items-middle\" gap-x=\"var(--xs)\">\n                <hl-select v-model=\"pagination.pageSize\" style=\"width: calc(var(--xxs) * 25);\" @change=\"pageSizeChange\">\n                  <hl-option\n                    v-for=\"item in [10, 20, 30, 40, 50, 100]\"\n                    :key=\"item\"\n                    :label=\"`${item}条/页`\"\n                    :value=\"item\"\n                  />\n                </hl-select>\n              </hl-group>\n            </hl-pagination>\n          </template>\n        </hl-panel>\n      </slot>\n    </hl-panel>\n  </hl-group>\n</template>\n\n<script lang=\"ts\">\nimport { defineComponent, ref, reactive, watch, onMounted, PropType, toRef, computed, onBeforeUnmount } from 'vue'\nimport { HlSimpleTable, HlGroup, HlCheckbox, HlRadio, HlPanel, HlTabs, HlTabPane, HlScrollbar, HlPagination, HlSelect, HlOption } from 'hongluan-ui'\nimport { HbEmpty } from 'hongluan-business-ui'\nimport { useTableSelection, usePagination } from 'hongluan-hooks'\nimport TableSearchWrapper from './table-search-wrapper.vue'\nimport SearchItems from './search-items.vue'\nimport TotalInfo from './total-info.vue'\nimport DropdownButton from './dropdown-button.vue'\nimport EmptyImage from './empty-image.vue'\nimport { TagItem } from './types'\nimport { Utils } from './utils'\n\nexport default defineComponent({\n  name: 'PageTableV2',\n  components: { HlSimpleTable, HlGroup, HlCheckbox, HlRadio, HlPanel, HbEmpty, HlScrollbar, HlTabs, HlTabPane, HlPagination, TableSearchWrapper, SearchItems, TotalInfo, DropdownButton, HlSelect, HlOption, EmptyImage },\n  props: {\n    // 自定义表格属性穿透给hl-simple-table\n    tableProps: {\n      type: Object,\n      default: () => ({}),\n    },\n    // 表头\n    cols: {\n      type: Array,\n      default: () => [],\n    },\n    // 表数据\n    tableData: {\n      type: Array as PropType<Record<string, unknown>[]>,\n      default: () => [],\n    },\n    // 列表查询回调\n    dataFetcher: {\n      type: Function as PropType<(...args: any) => Promise<any>>,\n      default: () => ({}),\n    },\n    showTree: Boolean,\n    showAdvSearch: {\n      type: Boolean,\n      default: true,\n    },\n    showResetAtSimpleMode: Boolean,\n    // 搜索条件\n    searchItems: {\n      type: Array as PropType<any[]>,\n      default: () => [],\n    },\n\n    // 多选操作\n    selectionActions: {\n      type: Array,\n      default: () => [],\n    },\n    defaultPagination: {\n      type: Object,\n      default: () => {\n        return { pageSize: 10, currentPage: 1, total: 0 }\n      },\n    },\n    noDataImage: {\n      type: String,\n      default: '',\n    },\n    showToolBar: {\n      type: Boolean,\n      default: true,\n    },\n    tabs: {\n      type: Array as PropType<{ label: string; name: string; default?: boolean; }[]>,\n      default: () => [],\n    },\n    tabsProps: {\n      type: Object,\n      default: () => ({}),\n    },\n    isMultipleSelect: {\n      type: Boolean,\n      default: true,\n    },\n  },\n  emits: ['selectedRowKeys', 'sort-change', 'row-click', 'cell-click', 'tab-change', 'clear-tags'],\n  setup (props, { emit }) {\n    const activeTab = ref('')\n    const simpleTableListRef = ref()\n    const tableContentRef = ref()\n    const tableContentHeight = ref('')\n    let tagsHeight = 0\n    // 搜索总条件\n    const searchParams = ref({})\n    const currentSearchTags = ref<TagItem[]>([])\n    const totalInfoData = reactive({ search: true, checked: false, total: 0 })\n    const tableStyle = ref<Record<string, any>>({})\n\n    const newCols = computed(() => {\n      return props.cols.map((col: any) => {\n        if (['tableIndex', 'tableSelection'].includes(col.slotName) && !col.width) {\n          col.width = '6em'\n        }\n        return col\n      })\n    })\n\n    const searchBarChanged = (searchArr: TagItem[], searchType: number) => {\n      if (searchType === 1) { // 简单搜索，只有一个搜索项\n        const idx = currentSearchTags.value.findIndex(st => st.key === searchArr[0].key)\n        if (idx > -1) {\n          currentSearchTags.value[idx] = searchArr[0]\n        } else {\n          currentSearchTags.value.push(searchArr[0])\n        }\n      } else { // 高级搜索\n        currentSearchTags.value = searchArr\n      }\n      searchParams.value = { ...Utils.getSearchParams(currentSearchTags.value).mapParams }\n      setCurrentPage(1)\n    }\n    const setTableHeight = (val: number) => {\n      tableStyle.value = {\n        height: (val - tagsHeight) + 'px',\n        overflow: 'auto',\n      }\n    }\n    const setContentHeight = (val: number) => {\n      tableContentHeight.value = `calc(100% - ${val + 16}px)`\n    }\n\n    const setTagBoxHeight = (val: number) => {\n      if (tableContentRef.value) {\n        let num: number = tableContentRef.value.offsetHeight - val - 76\n        tagsHeight = val\n        setTableHeight(num)\n      }\n    }\n    const clearTags = (val: Array<TagItem>) => {\n      emit('clear-tags', val)\n      currentSearchTags.value = currentSearchTags.value.filter(c => !val.find(v => v.key === c.key))\n      searchParams.value = { ...Utils.getSearchParams(currentSearchTags.value).mapParams }\n      setCurrentPage(1)\n    }\n\n    const {\n      isSelectedAll,\n      isIndeterminate,\n      selectedRowKeys,\n      selectAll,\n      selectRow,\n    } = useTableSelection(toRef(props, 'tableData'))\n\n    const selectedRadioKey = ref()\n\n    const selectChange = (len = 1) => {\n      Object.assign(totalInfoData, { search: len <= 0, checked: len > 0, total: len > 0 ? len : total.value })\n      emit('selectedRowKeys', selectedRowKeys.value)\n    }\n\n    if (props.isMultipleSelect) {\n      // 表格多选\n      watch(() => selectedRowKeys.value.length, (len: number) => {\n        selectChange(len)\n      })\n    } else {\n      // 表格单选\n      watch(() => selectedRowKeys.value, () => {\n        selectChange()\n      })\n    }\n\n    const {\n      pageSize,\n      currentPage,\n      total,\n      setTotal,\n      setCurrentPage,\n      currentPageChange,\n      pageSizeChange,\n    } = usePagination(fetchData, { pageSize:props.defaultPagination.pageSize, currentPage:props.defaultPagination.currentPage, total: props.defaultPagination.total })\n    const pagination = reactive({\n      show: true,\n      currentPage: currentPage,\n      pageSize: pageSize,\n      total: total,\n    })\n\n    // 查询表格数据\n    async function fetchData () {\n      await props.dataFetcher({\n        pageSize: pagination.pageSize,\n        currentPage: pagination.currentPage,\n        params: searchParams.value,\n        setTotal: setAllTotal,\n      })\n      Object.assign(totalInfoData, { search: true, checked: false, total: total.value })\n    }\n\n    // 设置总数\n    const setAllTotal = (newTotal: number) => {\n      setTotal(newTotal)\n      pagination.total = newTotal\n    }\n\n    const getSlotNames = (cols: any, result: any[]) => {\n      cols.forEach(col => {\n        if (col.slotName && !reservedSlotName.includes(col.slotName)) {\n          result.push(col)\n        }\n        if (col.children && Array.isArray(col.children)) {\n          getSlotNames(col.children, result)\n        }\n      })\n    }\n    // 过滤几个已使用的保留插槽\n    const reservedSlotName = ['total-info-toolbar-extra-after', 'toolbar-extra-before','toolbar-extra-after','selectionCol', 'tableSelection', 'customExpand', 'tableIndex', 'action']\n    const slotCols = computed(() => {\n      const result: any[] = []\n      getSlotNames(props.cols, result)\n      return result\n    })\n    const searchItemsSlots = computed(() => {\n      const result: string[] = []\n      props.searchItems.forEach(si => {\n        if (si.type === 'slot' && si.slotName) {\n          result.push(si.slotName)\n        }\n      })\n      return result\n    })\n\n    const filterSlots = computed(() => {\n      const result: string[] = []\n      props.cols.forEach((item: any) => {\n        if (item.filter && item.filter.slotName && !reservedSlotName.includes(item.filter.slotName)) {\n          result.push(item.filter)\n        }\n      })\n      return result\n    })\n\n    /**\n     * 重新刷新接口数据，重置多选，一般用于多选或其他操作\n     * @param auto 在当前页没有数据时，是否自动向前翻页。默认false\n     */\n    const refresh = async (auto = false) => {\n      await fetchData()\n      if (auto && props.tableData.length === 0 && pagination.total > 0 && pagination.currentPage > 1) {\n        pagination.currentPage -= 1\n        await fetchData()\n      }\n      selectedRowKeys.value = []\n      isSelectedAll.value = false\n    }\n\n    /**\n     * 设置数据回到第一页，保留搜索以及多选等条件\n     */\n    const reset = () => {\n      setCurrentPage(1)\n    }\n\n    /**\n     * 重置搜索，重置多选等，并且设置数据回到第一页，\n     */\n    const resetAll = () => {\n      selectedRowKeys.value = []\n      isSelectedAll.value = false\n      clearTags([])\n    }\n\n    /**\n     * 重置搜索，重置多选\n     */\n    const clearAll = () => {\n      selectedRowKeys.value = []\n      isSelectedAll.value = false\n      currentSearchTags.value = []\n      searchParams.value = {}\n    }\n\n    // 手动设置行选中状态，用于把表格作为选择工具时，回显已选的数据\n    const setSeletedRowKeys = (keys: string[]) => {\n      selectedRowKeys.value = keys\n      // 单选时还需要设置 selectedRadioKey 才能让 radio 回显选中状态\n      if (!props.isMultipleSelect) {\n        selectedRadioKey.value = keys[0]\n      }\n    }\n\n    const tableContentObserver = new ResizeObserver(entries => {\n      // 注意，entres是个数组，数组项为每个需要监听的DOM节点\n      entries.forEach(entry => {\n        // console.log('大小位置 contentRect', entry.contentRect)\n        // console.log('监听的DOM target', entry.target)\n        if (entry.target.className.indexOf('tree-page-content') !== -1) {\n          // 执行内容区的高度变动\n          setTableHeight(entry.contentRect.height)\n        }\n      })\n    })\n\n    const handleRadioChange = (id: string | number) => {\n      selectedRowKeys.value = [id]\n      selectRow()\n    }\n\n    watch(() => props.tabs, () => {\n      if (props.tabs?.length) {\n        const defaultTab = props.tabs.find(t => t.default)\n        activeTab.value = defaultTab?.name ?? props.tabs[0].name\n      }\n    }, {\n      immediate: true,\n      deep: true,\n    })\n\n    // 初始化查询表格数据\n    onMounted(async () => {\n      // tableContentObserver.observe(tableContentRef.value as Element)\n      if (props.searchItems.length <= 0) {\n        setCurrentPage(1)\n      }\n    })\n    onBeforeUnmount(() => {\n      tableContentObserver && tableContentObserver.disconnect()\n    })\n\n    return {\n      activeTab,\n      tableContentHeight,\n      currentSearchTags,\n      totalInfoData,\n      newCols,\n      slotCols,\n      filterSlots,\n      tableStyle,\n\n      searchItemsSlots,\n      searchBarChanged,\n      setContentHeight,\n\n      setTagBoxHeight,\n      clearTags,\n\n      isSelectedAll,\n      selectedRowKeys,\n      selectAll,\n      selectRow,\n      isIndeterminate,\n\n      pagination,\n      pageSize,\n      currentPage,\n      total,\n      setTotal,\n      currentPageChange,\n      pageSizeChange,\n\n      refresh,\n      reset,\n      resetAll,\n      clearAll,\n      setSeletedRowKeys,\n      simpleTableListRef,\n      tableContentRef,\n      handleRadioChange,\n      selectedRadioKey,\n    }\n  },\n})\n</script>\n"],"names":["_createBlock","_renderSlot","_createCommentVNode","_createVNode","_createSlots","_withCtx","_openBlock","_mergeProps","_createElementVNode","_toDisplayString","_withModifiers","_renderList","_normalizeProps","_createElementBlock","_Fragment","_guardReactiveProps"],"mappings":"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"}