From 54d81f53624ce48d493ea6b20e18e4289aa3815a Mon Sep 17 00:00:00 2001 From: 3octaves <873551943@qq.com> Date: Wed, 12 Feb 2025 11:23:34 +0800 Subject: [PATCH] =?UTF-8?q?feat(frontend):=20=E5=85=A8=E9=80=89=E8=B0=83?= =?UTF-8?q?=E6=95=B4=E4=B8=BA=E9=BB=98=E8=AE=A4=E8=B7=A8=E9=A1=B5=E5=85=A8?= =?UTF-8?q?=E9=80=89=20#9244?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../components/mongo/Index.vue | 58 ++-- .../components/redis/Index.vue | 58 ++-- .../components/sqlserver-ha/Index.vue | 58 ++-- .../components/sqlserver-single/Index.vue | 58 ++-- .../components/tendb-cluster/Index.vue | 58 ++-- .../components/tendb-single/Index.vue | 58 ++-- .../components/tendbha/Index.vue | 58 ++-- .../manual-content-host/table/Index.vue | 34 +- .../common/manual-content/table/Index.vue | 30 +- .../components/mongo/table/Index.vue | 5 + .../components/mysql/table/Index.vue | 66 ++-- .../components/redis-host/table/Index.vue | 70 ++-- .../components/redis/table/Index.vue | 66 ++-- .../components/sqlserver/table/Index.vue | 54 ++- .../sqlserver/table/useTableData.ts | 42 +-- .../tendb-cluster-host/table/Index.vue | 70 ++-- .../components/tendb-cluster/table/Index.vue | 66 ++-- .../components/tendb-ha-host/table/Index.vue | 70 ++-- .../tendb-single-host/table/Index.vue | 70 ++-- .../src/components/ip-selector/IpSelector.vue | 6 +- .../model/redis/redis-dst-job-task.ts | 4 +- .../detail/components/node-list/Index.vue | 4 + .../doris/list/components/list/Index.vue | 4 + .../detail/components/node-list/Index.vue | 4 + .../node-list/components/InstanceDetail.vue | 294 ----------------- .../list/components/list/Index.vue | 4 + .../detail/components/node-list/Index.vue | 4 + .../node-list/components/InstanceDetail.vue | 293 ----------------- .../hdfs/list/components/list/Index.vue | 4 + .../components/render-list/Index.vue | 4 + .../detail/components/node-list/Index.vue | 4 + .../node-list/components/InstanceDetail.vue | 293 ----------------- .../kafka/list/components/list/Index.vue | 4 + .../components/list/Index.vue | 4 + .../components/list/Index.vue | 4 + .../mongodb/structure-instance/Index.vue | 1 + .../components/instance-list/Index.vue | 1 + .../mysql/ha-cluster-list/components/List.vue | 4 + .../mysql/partition-manage/Index.vue | 4 + .../single-cluster-list/components/List.vue | 4 + .../detail/components/node-list/Index.vue | 4 + .../node-list/components/InstanceDetail.vue | 307 ------------------ .../pulsar/list/components/list/Index.vue | 4 + .../cluster-ha-list/components/list/Index.vue | 4 + .../cluster-list/components/list/Index.vue | 4 + .../components/DataCopyTransferDetail.vue | 29 +- .../components/detail/components/NodeList.vue | 7 +- .../riak/list/components/list/Index.vue | 4 + .../ha-cluster-list/components/List.vue | 4 + .../single-cluster-list/components/List.vue | 4 + .../cluster-list/components/list/Index.vue | 4 + .../tendb-cluster/partition-manage/Index.vue | 4 + .../resource-manage/dirty-machine/Index.vue | 4 + .../pool/host-list/components/RenderTable.vue | 134 ++++---- .../components/select-host-panel/Index.vue | 1 + .../spec/components/SpecList.vue | 1 + .../RenderInstance.vue | 12 +- .../ticket-center/common/TableModeTable.vue | 3 + .../components/List.vue | 4 + .../src/views/whitelist/list/Index.vue | 9 +- 60 files changed, 846 insertions(+), 1698 deletions(-) delete mode 100644 dbm-ui/frontend/src/views/db-manage/elastic-search/list/components/detail/components/node-list/components/InstanceDetail.vue delete mode 100644 dbm-ui/frontend/src/views/db-manage/hdfs/list/components/detail/components/node-list/components/InstanceDetail.vue delete mode 100644 dbm-ui/frontend/src/views/db-manage/kafka/list/components/detail/components/node-list/components/InstanceDetail.vue delete mode 100644 dbm-ui/frontend/src/views/db-manage/pulsar/list/components/detail/components/node-list/components/InstanceDetail.vue diff --git a/dbm-ui/frontend/src/components/cluster-selector/components/mongo/Index.vue b/dbm-ui/frontend/src/components/cluster-selector/components/mongo/Index.vue index a9ea002c67..69489f7b9a 100644 --- a/dbm-ui/frontend/src/components/cluster-selector/components/mongo/Index.vue +++ b/dbm-ui/frontend/src/components/cluster-selector/components/mongo/Index.vue @@ -158,9 +158,9 @@ indeterminate={isIndeterminate.value} disabled={mainSelectDisable.value} label={true} - onChange={handleSelecteAll} + onChange={handleWholeSelect} /> - ), }}> - + */} ), render: ({ data }: { data: ResourceItem }) => { @@ -331,33 +331,43 @@ } }); + watch(searchValue, () => { + selectedList.value = []; + emits('change', []); + }); + // 跨页全选 - const handleWholeSelect = () => { - isLoading.value = true; - props.getResourceList({ - bk_biz_id: window.PROJECT_CONFIG.BIZ_ID, - offset: 0, - limit: -1, - ...getSearchSelectorParams(searchValue.value), - }).then((data) => { - data.results.forEach((dataItem) => { - if (!props.disabledRowConfig.find(item => item.handler(dataItem))) { - handleSelecteRow(dataItem, true); - } - }); - }).finally(() => isLoading.value = false); + const handleWholeSelect = (value: boolean) => { + if (value) { + isLoading.value = true; + props.getResourceList({ + bk_biz_id: window.PROJECT_CONFIG.BIZ_ID, + offset: 0, + limit: -1, + ...getSearchSelectorParams(searchValue.value), + }).then((data) => { + data.results.forEach((dataItem) => { + if (!props.disabledRowConfig.find(item => item.handler(dataItem))) { + handleSelecteRow(dataItem, true); + } + }); + }).finally(() => isLoading.value = false); + } else { + selectedList.value = []; + emits('change', []); + } }; /** * 全选当页数据 */ - const handleSelecteAll = (value: boolean) => { - for (const data of tableData.value) { - if (!props.disabledRowConfig.find(item => item.handler(data))) { - handleSelecteRow(data, value); - } - } - }; + // const handleSelecteAll = (value: boolean) => { + // for (const data of tableData.value) { + // if (!props.disabledRowConfig.find(item => item.handler(data))) { + // handleSelecteRow(data, value); + // } + // } + // }; /** * 选择当行数据 diff --git a/dbm-ui/frontend/src/components/cluster-selector/components/redis/Index.vue b/dbm-ui/frontend/src/components/cluster-selector/components/redis/Index.vue index 88604fef9b..fed5691928 100644 --- a/dbm-ui/frontend/src/components/cluster-selector/components/redis/Index.vue +++ b/dbm-ui/frontend/src/components/cluster-selector/components/redis/Index.vue @@ -162,9 +162,9 @@ indeterminate={isIndeterminate.value} disabled={mainSelectDisable.value} label={true} - onChange={handleSelecteAll} + onChange={handleWholeSelect} /> - ), }}> - + */} ), render: ({ data }: { data: ResourceItem }) => { @@ -329,35 +329,45 @@ } }); + watch(searchValue, () => { + selectedList.value = []; + emits('change', []); + }); + const getRowClass = (data: ResourceItem) => data.isOffline && 'is-offline'; // 跨页全选 - const handleWholeSelect = () => { - isLoading.value = true; - props.getResourceList({ - bk_biz_id: window.PROJECT_CONFIG.BIZ_ID, - offset: 0, - limit: -1, - ...getSearchSelectorParams(searchValue.value), - }).then((data) => { - data.results.forEach((dataItem) => { - if (!props.disabledRowConfig.find(item => item.handler(dataItem))) { - handleSelecteRow(dataItem, true); - } - }); - }).finally(() => isLoading.value = false); + const handleWholeSelect = (value: boolean) => { + if (value) { + isLoading.value = true; + props.getResourceList({ + bk_biz_id: window.PROJECT_CONFIG.BIZ_ID, + offset: 0, + limit: -1, + ...getSearchSelectorParams(searchValue.value), + }).then((data) => { + data.results.forEach((dataItem) => { + if (!props.disabledRowConfig.find(item => item.handler(dataItem))) { + handleSelecteRow(dataItem, true); + } + }); + }).finally(() => isLoading.value = false); + } else { + selectedList.value = []; + emits('change', []); + } }; /** * 全选当页数据 */ - const handleSelecteAll = (value: boolean) => { - for (const data of tableData.value) { - if (!props.disabledRowConfig.find(item => item.handler(data))) { - handleSelecteRow(data, value); - } - } - }; + // const handleSelecteAll = (value: boolean) => { + // for (const data of tableData.value) { + // if (!props.disabledRowConfig.find(item => item.handler(data))) { + // handleSelecteRow(data, value); + // } + // } + // }; /** * 选择当行数据 diff --git a/dbm-ui/frontend/src/components/cluster-selector/components/sqlserver-ha/Index.vue b/dbm-ui/frontend/src/components/cluster-selector/components/sqlserver-ha/Index.vue index 5dc3f6110b..b6dc194f0f 100644 --- a/dbm-ui/frontend/src/components/cluster-selector/components/sqlserver-ha/Index.vue +++ b/dbm-ui/frontend/src/components/cluster-selector/components/sqlserver-ha/Index.vue @@ -157,9 +157,9 @@ disabled={mainSelectDisable.value} label={true} onClick={(e: Event) => e.stopPropagation()} - onChange={handleSelecteAll} + onChange={handleWholeSelect} /> - ), }}> - + */} ) : '', fixed: 'left', @@ -343,33 +343,43 @@ } }); + watch(searchValue, () => { + selectedList.value = []; + emits('change', []); + }); + // 跨页全选 - const handleWholeSelect = () => { - isLoading.value = true; - props.getResourceList({ - bk_biz_id: window.PROJECT_CONFIG.BIZ_ID, - offset: 0, - limit: -1, - ...getSearchSelectorParams(searchValue.value), - }).then((data) => { - data.results.forEach((dataItem) => { - if (!props.disabledRowConfig.find(item => item.handler(dataItem))) { - handleSelecteRow(dataItem, true); - } - }); - }).finally(() => isLoading.value = false); + const handleWholeSelect = (value: boolean) => { + if (value) { + isLoading.value = true; + props.getResourceList({ + bk_biz_id: window.PROJECT_CONFIG.BIZ_ID, + offset: 0, + limit: -1, + ...getSearchSelectorParams(searchValue.value), + }).then((data) => { + data.results.forEach((dataItem) => { + if (!props.disabledRowConfig.find(item => item.handler(dataItem))) { + handleSelecteRow(dataItem, true); + } + }); + }).finally(() => isLoading.value = false); + } else { + selectedList.value = []; + emits('change', []); + } }; /** * 全选当页数据 */ - const handleSelecteAll = (value: boolean) => { - for (const data of tableData.value) { - if (!props.disabledRowConfig.find(item => item.handler(data))) { - handleSelecteRow(data, value); - } - } - }; + // const handleSelecteAll = (value: boolean) => { + // for (const data of tableData.value) { + // if (!props.disabledRowConfig.find(item => item.handler(data))) { + // handleSelecteRow(data, value); + // } + // } + // }; /** * 选择当行数据 diff --git a/dbm-ui/frontend/src/components/cluster-selector/components/sqlserver-single/Index.vue b/dbm-ui/frontend/src/components/cluster-selector/components/sqlserver-single/Index.vue index 2a0bd93ba2..a7b8a806f0 100644 --- a/dbm-ui/frontend/src/components/cluster-selector/components/sqlserver-single/Index.vue +++ b/dbm-ui/frontend/src/components/cluster-selector/components/sqlserver-single/Index.vue @@ -159,9 +159,9 @@ disabled={mainSelectDisable.value} label={true} onClick={(e: Event) => e.stopPropagation()} - onChange={handleSelecteAll} + onChange={handleWholeSelect} /> - ), }}> - + */} ) : '', render: ({ data }: { data: ResourceItem }) => { @@ -344,33 +344,43 @@ } }); + watch(searchValue, () => { + selectedList.value = [] + emits('change', []); + }); + // 跨页全选 - const handleWholeSelect = () => { - isLoading.value = true; - props.getResourceList({ - bk_biz_id: window.PROJECT_CONFIG.BIZ_ID, - offset: 0, - limit: -1, - ...getSearchSelectorParams(searchValue.value), - }).then((data) => { - data.results.forEach((dataItem) => { - if (!props.disabledRowConfig.find(item => item.handler(dataItem))) { - handleSelecteRow(dataItem, true); - } - }); - }).finally(() => isLoading.value = false); + const handleWholeSelect = (value: boolean) => { + if (value) { + isLoading.value = true; + props.getResourceList({ + bk_biz_id: window.PROJECT_CONFIG.BIZ_ID, + offset: 0, + limit: -1, + ...getSearchSelectorParams(searchValue.value), + }).then((data) => { + data.results.forEach((dataItem) => { + if (!props.disabledRowConfig.find(item => item.handler(dataItem))) { + handleSelecteRow(dataItem, true); + } + }); + }).finally(() => isLoading.value = false); + } else { + selectedList.value = [] + emits('change', []); + } }; /** * 全选当页数据 */ - const handleSelecteAll = (value: boolean) => { - for (const data of tableData.value) { - if (!props.disabledRowConfig.find(item => item.handler(data))) { - handleSelecteRow(data, value); - } - } - }; + // const handleSelecteAll = (value: boolean) => { + // for (const data of tableData.value) { + // if (!props.disabledRowConfig.find(item => item.handler(data))) { + // handleSelecteRow(data, value); + // } + // } + // }; /** * 选择当行数据 diff --git a/dbm-ui/frontend/src/components/cluster-selector/components/tendb-cluster/Index.vue b/dbm-ui/frontend/src/components/cluster-selector/components/tendb-cluster/Index.vue index cc7e960195..fb15d30370 100644 --- a/dbm-ui/frontend/src/components/cluster-selector/components/tendb-cluster/Index.vue +++ b/dbm-ui/frontend/src/components/cluster-selector/components/tendb-cluster/Index.vue @@ -158,9 +158,9 @@ indeterminate={isIndeterminate.value} disabled={mainSelectDisable.value} label={true} - onChange={handleSelecteAll} + onChange={handleWholeSelect} /> - ), }}> - + */} ), render: ({ data }: { data: ResourceItem }) => { @@ -318,35 +318,45 @@ } }); + watch(searchValue, () => { + selectedList.value = [] + emits('change', []); + }); + const getRowClass = (data: ResourceItem) => data.isOffline && 'is-offline'; // 跨页全选 - const handleWholeSelect = () => { - isLoading.value = true; - props.getResourceList({ - bk_biz_id: window.PROJECT_CONFIG.BIZ_ID, - offset: 0, - limit: -1, - ...getSearchSelectorParams(searchValue.value), - }).then((data) => { - data.results.forEach((dataItem) => { - if (!props.disabledRowConfig.find(item => item.handler(dataItem))) { - handleSelecteRow(dataItem, true); - } - }); - }).finally(() => isLoading.value = false); + const handleWholeSelect = (value: boolean) => { + if (value) { + isLoading.value = true; + props.getResourceList({ + bk_biz_id: window.PROJECT_CONFIG.BIZ_ID, + offset: 0, + limit: -1, + ...getSearchSelectorParams(searchValue.value), + }).then((data) => { + data.results.forEach((dataItem) => { + if (!props.disabledRowConfig.find(item => item.handler(dataItem))) { + handleSelecteRow(dataItem, true); + } + }); + }).finally(() => isLoading.value = false); + } else { + selectedList.value = [] + emits('change', []); + } }; /** * 全选当页数据 */ - const handleSelecteAll = (value: boolean) => { - for (const data of tableData.value) { - if (!props.disabledRowConfig.find(item => item.handler(data))) { - handleSelecteRow(data, value); - } - } - }; + // const handleSelecteAll = (value: boolean) => { + // for (const data of tableData.value) { + // if (!props.disabledRowConfig.find(item => item.handler(data))) { + // handleSelecteRow(data, value); + // } + // } + // }; /** * 选择当行数据 diff --git a/dbm-ui/frontend/src/components/cluster-selector/components/tendb-single/Index.vue b/dbm-ui/frontend/src/components/cluster-selector/components/tendb-single/Index.vue index 0de433b6fd..67175d9632 100644 --- a/dbm-ui/frontend/src/components/cluster-selector/components/tendb-single/Index.vue +++ b/dbm-ui/frontend/src/components/cluster-selector/components/tendb-single/Index.vue @@ -160,9 +160,9 @@ indeterminate={isIndeterminate.value} disabled={mainSelectDisable.value} label={true} - onChange={handleSelecteAll} + onChange={handleWholeSelect} /> - ), }}> - + */} ), render: ({ data }: { data: ResourceItem }) => { @@ -340,35 +340,45 @@ } }); + watch(searchValue, () => { + selectedList.value = [] + emits('change', []); + }); + const getRowClass = (data: ResourceItem) => data.isOffline && 'is-offline'; // 跨页全选 - const handleWholeSelect = () => { - isLoading.value = true; - props.getResourceList({ - bk_biz_id: window.PROJECT_CONFIG.BIZ_ID, - offset: 0, - limit: -1, - ...getSearchSelectorParams(searchValue.value), - }).then((data) => { - data.results.forEach((dataItem) => { - if (!props.disabledRowConfig.find(item => item.handler(dataItem))) { - handleSelecteRow(dataItem, true); - } - }); - }).finally(() => isLoading.value = false); + const handleWholeSelect = (value: boolean) => { + if (value) { + isLoading.value = true; + props.getResourceList({ + bk_biz_id: window.PROJECT_CONFIG.BIZ_ID, + offset: 0, + limit: -1, + ...getSearchSelectorParams(searchValue.value), + }).then((data) => { + data.results.forEach((dataItem) => { + if (!props.disabledRowConfig.find(item => item.handler(dataItem))) { + handleSelecteRow(dataItem, true); + } + }); + }).finally(() => isLoading.value = false); + } else { + selectedList.value = [] + emits('change', []); + } }; /** * 全选当页数据 */ - const handleSelecteAll = (value: boolean) => { - for (const data of tableData.value) { - if (!props.disabledRowConfig.find(item => item.handler(data))) { - handleSelecteRow(data, value); - } - } - }; + // const handleSelecteAll = (value: boolean) => { + // for (const data of tableData.value) { + // if (!props.disabledRowConfig.find(item => item.handler(data))) { + // handleSelecteRow(data, value); + // } + // } + // }; /** * 选择当行数据 diff --git a/dbm-ui/frontend/src/components/cluster-selector/components/tendbha/Index.vue b/dbm-ui/frontend/src/components/cluster-selector/components/tendbha/Index.vue index 4529eb654e..7c20a7e2a6 100644 --- a/dbm-ui/frontend/src/components/cluster-selector/components/tendbha/Index.vue +++ b/dbm-ui/frontend/src/components/cluster-selector/components/tendbha/Index.vue @@ -159,9 +159,9 @@ indeterminate={isIndeterminate.value} disabled={mainSelectDisable.value} label={true} - onChange={handleSelecteAll} + onChange={handleWholeSelect} /> - ), }}> - + */} ), render: ({ data }: { data: ResourceItem }) => { @@ -327,35 +327,45 @@ } }); + watch(searchValue, () => { + selectedList.value = [] + emits('change', []); + }); + const getRowClass = (data: ResourceItem) => data.isOffline && 'is-offline'; // 跨页全选 - const handleWholeSelect = () => { - isLoading.value = true; - props.getResourceList({ - bk_biz_id: window.PROJECT_CONFIG.BIZ_ID, - offset: 0, - limit: -1, - ...getSearchSelectorParams(searchValue.value), - }).then((data) => { - data.results.forEach((dataItem) => { - if (!props.disabledRowConfig.find(item => item.handler(dataItem))) { - handleSelecteRow(dataItem, true); - } - }); - }).finally(() => isLoading.value = false); + const handleWholeSelect = (value: boolean) => { + if (value) { + isLoading.value = true; + props.getResourceList({ + bk_biz_id: window.PROJECT_CONFIG.BIZ_ID, + offset: 0, + limit: -1, + ...getSearchSelectorParams(searchValue.value), + }).then((data) => { + data.results.forEach((dataItem) => { + if (!props.disabledRowConfig.find(item => item.handler(dataItem))) { + handleSelecteRow(dataItem, true); + } + }); + }).finally(() => isLoading.value = false); + } else { + selectedList.value = [] + emits('change', []); + } }; /** * 全选当页数据 */ - const handleSelecteAll = (value: boolean) => { - for (const data of tableData.value) { - if (!props.disabledRowConfig.find(item => item.handler(data))) { - handleSelecteRow(data, value); - } - } - }; + // const handleSelecteAll = (value: boolean) => { + // for (const data of tableData.value) { + // if (!props.disabledRowConfig.find(item => item.handler(data))) { + // handleSelecteRow(data, value); + // } + // } + // }; /** * 选择当行数据 diff --git a/dbm-ui/frontend/src/components/instance-selector/components/common/manual-content-host/table/Index.vue b/dbm-ui/frontend/src/components/instance-selector/components/common/manual-content-host/table/Index.vue index af819fb5b1..406ed99ae7 100644 --- a/dbm-ui/frontend/src/components/instance-selector/components/common/manual-content-host/table/Index.vue +++ b/dbm-ui/frontend/src/components/instance-selector/components/common/manual-content-host/table/Index.vue @@ -123,8 +123,8 @@ }); const isSelectedAll = computed(() => ( - tableData.value.length > 0 - && tableData.value.length === tableData.value.filter(item => checkedMap.value[item[firstColumnFieldId.value]]).length + renderManualData.value.length > 0 + && renderManualData.value.length === renderManualData.value.filter(item => checkedMap.value[item[firstColumnFieldId.value]]).length )); let isSelectedAllReal = false; @@ -279,6 +279,11 @@ immediate: true, }); + watch(searchValue, () => { + checkedMap.value = {} + triggerChange() + }) + const triggerChange = () => { if (props.isManul) { const lastValues: InstanceSelectorValues = { @@ -310,18 +315,23 @@ }; const handleSelectPageAll = (checked: boolean) => { - const list = tableData.value; - if (props.disabledRowConfig) { - isSelectedAllReal = !isSelectedAllReal; - for (const data of list) { - if (!props.disabledRowConfig.handler(data)) { - handleTableSelectOne(isSelectedAllReal, data); + if (checked) { + const list = renderManualData.value; + if (props.disabledRowConfig) { + isSelectedAllReal = !isSelectedAllReal; + for (const data of list) { + if (!props.disabledRowConfig.handler(data)) { + handleTableSelectOne(isSelectedAllReal, data); + } } + return; } - return; - } - for (const item of list) { - handleTableSelectOne(checked, item); + for (const item of list) { + handleTableSelectOne(checked, item); + } + } else { + checkedMap.value = {}; + triggerChange(); } }; diff --git a/dbm-ui/frontend/src/components/instance-selector/components/common/manual-content/table/Index.vue b/dbm-ui/frontend/src/components/instance-selector/components/common/manual-content/table/Index.vue index cbd6327fbb..d1dd437fba 100644 --- a/dbm-ui/frontend/src/components/instance-selector/components/common/manual-content/table/Index.vue +++ b/dbm-ui/frontend/src/components/instance-selector/components/common/manual-content/table/Index.vue @@ -251,19 +251,29 @@ }); }; + watch(searchValue, () => { + checkedMap.value = {} + triggerChange() + }) + const handleSelectPageAll = (checked: boolean) => { - const list = renderManualData.value; - if (props.disabledRowConfig) { - isSelectedAllReal = !isSelectedAllReal; - for (const data of list) { - if (!props.disabledRowConfig.handler(data)) { - handleTableSelectOne(isSelectedAllReal, data); + if (checked) { + const list = renderManualData.value; + if (props.disabledRowConfig) { + isSelectedAllReal = !isSelectedAllReal; + for (const data of list) { + if (!props.disabledRowConfig.handler(data)) { + handleTableSelectOne(isSelectedAllReal, data); + } } + return; } - return; - } - for (const item of list) { - handleTableSelectOne(checked, item); + for (const item of list) { + handleTableSelectOne(checked, item); + } + } else { + checkedMap.value = {}; + triggerChange(); } }; diff --git a/dbm-ui/frontend/src/components/instance-selector/components/mongo/table/Index.vue b/dbm-ui/frontend/src/components/instance-selector/components/mongo/table/Index.vue index 78ab8659da..b22d395daf 100644 --- a/dbm-ui/frontend/src/components/instance-selector/components/mongo/table/Index.vue +++ b/dbm-ui/frontend/src/components/instance-selector/components/mongo/table/Index.vue @@ -307,6 +307,11 @@ immediate: true, }); + watch(searchValue, () => { + checkedMap.value = {} + triggerChange() + }) + const triggerChange = () => { if (props.isManul) { const lastValues: InstanceSelectorValues = { diff --git a/dbm-ui/frontend/src/components/instance-selector/components/mysql/table/Index.vue b/dbm-ui/frontend/src/components/instance-selector/components/mysql/table/Index.vue index b48b00a805..18c1f0bfc9 100644 --- a/dbm-ui/frontend/src/components/instance-selector/components/mysql/table/Index.vue +++ b/dbm-ui/frontend/src/components/instance-selector/components/mysql/table/Index.vue @@ -155,9 +155,9 @@ label={true} model-value={isSelectedAll.value} disabled={mainSelectDisable.value} - onChange={handleSelectPageAll} + onChange={handleWholeSelect} /> - ), }}> - + */} ), render: ({ data }: DataRow) => { @@ -313,6 +313,11 @@ immediate: true, }); + watch(searchValue, () => { + checkedMap.value = {} + triggerChange() + }) + const triggerChange = () => { if (activePanel?.value) { @@ -329,34 +334,39 @@ }; // 跨页全选 - const handleWholeSelect = () => { - isLoading.value = true; - const params = generateParams(); - params.limit = -1; - props.getTableList(params).then((data) => { - data.results.forEach((dataItem: IValue) => { - if (!props.disabledRowConfig?.handler(dataItem)) { - handleTableSelectOne(true, dataItem); - } - }); - }).finally(() => isLoading.value = false); - }; - - const handleSelectPageAll = (checked: boolean) => { - const list = tableData.value; - if (props.disabledRowConfig) { - for (const data of list) { - if (!props.disabledRowConfig.handler(data)) { - handleTableSelectOne(checked, data); - } - } - return; - } - for (const item of list) { - handleTableSelectOne(checked, item); + const handleWholeSelect = (value: boolean) => { + if (value) { + isLoading.value = true; + const params = generateParams(); + params.limit = -1; + props.getTableList(params).then((data) => { + data.results.forEach((dataItem: IValue) => { + if (!props.disabledRowConfig?.handler(dataItem)) { + handleTableSelectOne(true, dataItem); + } + }); + }).finally(() => isLoading.value = false); + } else { + checkedMap.value = {} + triggerChange() } }; + // const handleSelectPageAll = (checked: boolean) => { + // const list = tableData.value; + // if (props.disabledRowConfig) { + // for (const data of list) { + // if (!props.disabledRowConfig.handler(data)) { + // handleTableSelectOne(checked, data); + // } + // } + // return; + // } + // for (const item of list) { + // handleTableSelectOne(checked, item); + // } + // }; + const handleRowClick = (row: unknown, data: IValue) => { if (props.disabledRowConfig && props.disabledRowConfig.handler(data)) { return; diff --git a/dbm-ui/frontend/src/components/instance-selector/components/redis-host/table/Index.vue b/dbm-ui/frontend/src/components/instance-selector/components/redis-host/table/Index.vue index bc88180f00..eff47a6edb 100644 --- a/dbm-ui/frontend/src/components/instance-selector/components/redis-host/table/Index.vue +++ b/dbm-ui/frontend/src/components/instance-selector/components/redis-host/table/Index.vue @@ -134,7 +134,7 @@ && tableData.value.length === tableData.value.filter(item => checkedMap.value[item[firstColumnFieldId.value]]).length )); - let isSelectedAllReal = false; + // const isSelectedAllReal = false; const columns = computed(() => [ { @@ -146,9 +146,9 @@ label={true} model-value={isSelectedAll.value} disabled={mainSelectDisable.value} - onChange={handleSelectPageAll} + onChange={handleWholeSelect} /> - ), }}> - + */} ), render: ({ data }: DataRow) => { @@ -289,6 +289,11 @@ immediate: true, }); + watch(searchValue, () => { + checkedMap.value = {} + triggerChange() + }) + const triggerChange = () => { if (activePanel?.value) { @@ -308,35 +313,40 @@ }; // 跨页全选 - const handleWholeSelect = () => { - isLoading.value = true; - const params = generateParams(); - params.limit = -1; - props.getTableList(params).then((data) => { - data.results.forEach((dataItem: IValue) => { - if (!props.disabledRowConfig?.handler(dataItem)) { - handleTableSelectOne(true, dataItem); - } - }); - }).finally(() => isLoading.value = false); - }; - - const handleSelectPageAll = (checked: boolean) => { - const list = tableData.value; - if (props.disabledRowConfig) { - isSelectedAllReal = !isSelectedAllReal; - for (const data of list) { - if (!props.disabledRowConfig.handler(data)) { - handleTableSelectOne(isSelectedAllReal, data); - } - } - return; - } - for (const item of list) { - handleTableSelectOne(checked, item); + const handleWholeSelect = (value: boolean) => { + if (value) { + isLoading.value = true; + const params = generateParams(); + params.limit = -1; + props.getTableList(params).then((data) => { + data.results.forEach((dataItem: IValue) => { + if (!props.disabledRowConfig?.handler(dataItem)) { + handleTableSelectOne(true, dataItem); + } + }); + }).finally(() => isLoading.value = false); + } else { + checkedMap.value = {} + triggerChange() } }; + // const handleSelectPageAll = (checked: boolean) => { + // const list = tableData.value; + // if (props.disabledRowConfig) { + // isSelectedAllReal = !isSelectedAllReal; + // for (const data of list) { + // if (!props.disabledRowConfig.handler(data)) { + // handleTableSelectOne(isSelectedAllReal, data); + // } + // } + // return; + // } + // for (const item of list) { + // handleTableSelectOne(checked, item); + // } + // }; + const handleRowClick = (row: unknown, data: IValue) => { if (props.disabledRowConfig && props.disabledRowConfig.handler(data)) { return; diff --git a/dbm-ui/frontend/src/components/instance-selector/components/redis/table/Index.vue b/dbm-ui/frontend/src/components/instance-selector/components/redis/table/Index.vue index fac97e756c..08241a2a15 100644 --- a/dbm-ui/frontend/src/components/instance-selector/components/redis/table/Index.vue +++ b/dbm-ui/frontend/src/components/instance-selector/components/redis/table/Index.vue @@ -152,9 +152,9 @@ label={true} model-value={isSelectedAll.value} disabled={mainSelectDisable.value} - onChange={handleSelectPageAll} + onChange={handleWholeSelect} /> - ), }}> - + */} ), render: ({ data }: DataRow) => { @@ -313,6 +313,11 @@ }, ); + watch(searchValue, () => { + checkedMap.value = {} + triggerChange() + }) + const triggerChange = () => { if (activePanel?.value) { emits('change', { @@ -328,34 +333,39 @@ }; // 跨页全选 - const handleWholeSelect = () => { - isLoading.value = true; - const params = generateParams(); - params.limit = -1; - props.getTableList(params).then((data) => { - data.results.forEach((dataItem: IValue) => { - if (!props.disabledRowConfig?.handler(dataItem)) { - handleTableSelectOne(true, dataItem); - } - }); - }).finally(() => isLoading.value = false); - }; - - const handleSelectPageAll = (checked: boolean) => { - const list = tableData.value; - if (props.disabledRowConfig) { - for (const data of list) { - if (!props.disabledRowConfig.handler(data)) { - handleTableSelectOne(checked, data); - } - } - return; - } - for (const item of list) { - handleTableSelectOne(checked, item); + const handleWholeSelect = (value: boolean) => { + if (value) { + isLoading.value = true; + const params = generateParams(); + params.limit = -1; + props.getTableList(params).then((data) => { + data.results.forEach((dataItem: IValue) => { + if (!props.disabledRowConfig?.handler(dataItem)) { + handleTableSelectOne(true, dataItem); + } + }); + }).finally(() => isLoading.value = false); + } else { + checkedMap.value = {} + triggerChange() } }; + // const handleSelectPageAll = (checked: boolean) => { + // const list = tableData.value; + // if (props.disabledRowConfig) { + // for (const data of list) { + // if (!props.disabledRowConfig.handler(data)) { + // handleTableSelectOne(checked, data); + // } + // } + // return; + // } + // for (const item of list) { + // handleTableSelectOne(checked, item); + // } + // }; + const handleRowClick = (row: unknown, data: IValue) => { if (props.disabledRowConfig && props.disabledRowConfig.handler(data)) { return; diff --git a/dbm-ui/frontend/src/components/instance-selector/components/sqlserver/table/Index.vue b/dbm-ui/frontend/src/components/instance-selector/components/sqlserver/table/Index.vue index 05a712073e..4a26602bfb 100644 --- a/dbm-ui/frontend/src/components/instance-selector/components/sqlserver/table/Index.vue +++ b/dbm-ui/frontend/src/components/instance-selector/components/sqlserver/table/Index.vue @@ -72,7 +72,7 @@ roleFilterList?: TableConfigType['roleFilterList'], disabledRowConfig?: TableConfigType['disabledRowConfig'], // eslint-disable-next-line vue/no-unused-properties - getTableList?: TableConfigType['getTableList'], + getTableList: NonNullable, statusFilter?: TableConfigType['statusFilter'], } @@ -89,7 +89,6 @@ activePanelId: 'tendbcluster', disabledRowConfig: undefined, roleFilterList: undefined, - getTableList: undefined, }); const emits = defineEmits(); @@ -125,6 +124,7 @@ isLoading, data: tableData, pagination, + generateParams, fetchResources, handleChangePage, handeChangeLimit, @@ -145,7 +145,7 @@ label={true} model-value={isSelectedAll.value} disabled={mainSelectDisable.value} - onChange={handleSelectPageAll} + onChange={handleWholeSelect} /> ), render: ({ data }: DataRow) => { @@ -290,6 +290,11 @@ fetchResources(); }); + watch(searchValue, () => { + checkedMap.value = {} + triggerChange() + }) + const triggerChange = () => { if (activePanel?.value) { emits('change', { @@ -304,21 +309,40 @@ } }; - const handleSelectPageAll = (checked: boolean) => { - const list = tableData.value; - if (props.disabledRowConfig) { - for (const data of list) { - if (!props.disabledRowConfig.handler(data)) { - handleTableSelectOne(checked, data); - } - } - return; - } - for (const item of list) { - handleTableSelectOne(checked, item); + // 跨页全选 + const handleWholeSelect = (value: boolean) => { + if (value) { + isLoading.value = true; + const params = generateParams(); + params.limit = -1; + props.getTableList(params).then((data) => { + data.results.forEach((dataItem: IValue) => { + if (!props.disabledRowConfig?.handler(dataItem)) { + handleTableSelectOne(true, dataItem); + } + }); + }).finally(() => isLoading.value = false); + } else { + checkedMap.value = {} + triggerChange() } }; + // const handleSelectPageAll = (checked: boolean) => { + // const list = tableData.value; + // if (props.disabledRowConfig) { + // for (const data of list) { + // if (!props.disabledRowConfig.handler(data)) { + // handleTableSelectOne(checked, data); + // } + // } + // return; + // } + // for (const item of list) { + // handleTableSelectOne(checked, item); + // } + // }; + const handleTableSelectOne = (checked: boolean, data: IValue) => { const lastCheckMap = { ...checkedMap.value }; if (checked) { diff --git a/dbm-ui/frontend/src/components/instance-selector/components/sqlserver/table/useTableData.ts b/dbm-ui/frontend/src/components/instance-selector/components/sqlserver/table/useTableData.ts index 88ea700735..89363d6c48 100644 --- a/dbm-ui/frontend/src/components/instance-selector/components/sqlserver/table/useTableData.ts +++ b/dbm-ui/frontend/src/components/instance-selector/components/sqlserver/table/useTableData.ts @@ -12,6 +12,7 @@ */ import type { ISearchValue } from 'bkui-vue/lib/search-select/utils'; import type { ComponentInternalInstance, Ref } from 'vue'; +import { useRequest } from 'vue-request'; import { useGlobalBizs } from '@stores'; @@ -32,7 +33,6 @@ export function useTableData( }; }; - const isLoading = ref(false); const tableData = shallowRef([]); const isAnomalies = ref(false); const pagination = reactive({ @@ -44,14 +44,27 @@ export function useTableData( layout: ['total', 'limit', 'list'], }); + const { run: getTableListRun, loading: isLoading } = useRequest(currentInstance.proxy.getTableList, { + manual: true, + onSuccess(data) { + tableData.value = data.results; + pagination.count = data.count; + isAnomalies.value = false; + }, + onError() { + tableData.value = []; + pagination.count = 0; + isAnomalies.value = true; + }, + }); + watch(searchSelectValue, () => { setTimeout(() => { handleChangePage(1); }); }); - const fetchResources = async () => { - isLoading.value = true; + const generateParams = () => { const params = { bk_biz_id: currentBizId, limit: pagination.limit, @@ -69,22 +82,12 @@ export function useTableData( cluster_id: clusterId.value, }); } - return currentInstance.proxy - .getTableList(params) - .then((data) => { - const ret = data; - tableData.value = ret.results; - pagination.count = ret.count; - isAnomalies.value = false; - }) - .catch(() => { - tableData.value = []; - pagination.count = 0; - isAnomalies.value = true; - }) - .finally(() => { - isLoading.value = false; - }); + return params; + }; + + const fetchResources = async () => { + const params = generateParams(); + return getTableListRun(params); }; const handleChangePage = (value: number) => { @@ -101,6 +104,7 @@ export function useTableData( isLoading, data: tableData, pagination, + generateParams, fetchResources, handleChangePage, handeChangeLimit, diff --git a/dbm-ui/frontend/src/components/instance-selector/components/tendb-cluster-host/table/Index.vue b/dbm-ui/frontend/src/components/instance-selector/components/tendb-cluster-host/table/Index.vue index 31d41dd1ab..f406a65628 100644 --- a/dbm-ui/frontend/src/components/instance-selector/components/tendb-cluster-host/table/Index.vue +++ b/dbm-ui/frontend/src/components/instance-selector/components/tendb-cluster-host/table/Index.vue @@ -106,7 +106,7 @@ && tableData.value.length === tableData.value.filter(item => checkedMap.value[item[firstColumnFieldId.value]]).length )); - let isSelectedAllReal = false; + // const isSelectedAllReal = false; const columns = [ { @@ -118,9 +118,9 @@ label={true} model-value={isSelectedAll.value} disabled={mainSelectDisable.value} - onChange={handleSelectPageAll} + onChange={handleWholeSelect} /> - ), }}> - + */} ), render: ({ data }: DataRow) => { @@ -270,6 +270,11 @@ immediate: true, }); + watch(searchValue, () => { + checkedMap.value = {} + triggerChange() + }) + const triggerChange = () => { if (activePanel?.value) { @@ -289,35 +294,40 @@ }; // 跨页全选 - const handleWholeSelect = () => { - isLoading.value = true; - const params = generateParams(); - params.limit = -1; - props.getTableList(params).then((data) => { - data.results.forEach((dataItem: IValue) => { - if (!props.disabledRowConfig?.handler(dataItem)) { - handleTableSelectOne(true, dataItem); - } - }); - }).finally(() => isLoading.value = false); - }; - - const handleSelectPageAll = (checked: boolean) => { - const list = tableData.value; - if (props.disabledRowConfig) { - isSelectedAllReal = !isSelectedAllReal; - for (const data of list) { - if (!props.disabledRowConfig.handler(data)) { - handleTableSelectOne(isSelectedAllReal, data); - } - } - return; - } - for (const item of list) { - handleTableSelectOne(checked, item); + const handleWholeSelect = (value: boolean) => { + if (value) { + isLoading.value = true; + const params = generateParams(); + params.limit = -1; + props.getTableList(params).then((data) => { + data.results.forEach((dataItem: IValue) => { + if (!props.disabledRowConfig?.handler(dataItem)) { + handleTableSelectOne(true, dataItem); + } + }); + }).finally(() => isLoading.value = false); + } else { + checkedMap.value = {} + triggerChange() } }; + // const handleSelectPageAll = (checked: boolean) => { + // const list = tableData.value; + // if (props.disabledRowConfig) { + // isSelectedAllReal = !isSelectedAllReal; + // for (const data of list) { + // if (!props.disabledRowConfig.handler(data)) { + // handleTableSelectOne(isSelectedAllReal, data); + // } + // } + // return; + // } + // for (const item of list) { + // handleTableSelectOne(checked, item); + // } + // }; + const handleRowClick = (row: unknown, data: IValue) => { if (props.disabledRowConfig && props.disabledRowConfig.handler(data)) { return; diff --git a/dbm-ui/frontend/src/components/instance-selector/components/tendb-cluster/table/Index.vue b/dbm-ui/frontend/src/components/instance-selector/components/tendb-cluster/table/Index.vue index e2d61828b2..782848cc8b 100644 --- a/dbm-ui/frontend/src/components/instance-selector/components/tendb-cluster/table/Index.vue +++ b/dbm-ui/frontend/src/components/instance-selector/components/tendb-cluster/table/Index.vue @@ -154,9 +154,9 @@ label={true} model-value={isSelectedAll.value} disabled={mainSelectDisable.value} - onChange={handleSelectPageAll} + onChange={handleWholeSelect} /> - ), }}> - + */} ), render: ({ data }: DataRow) => { @@ -312,6 +312,11 @@ immediate: true, }); + watch(searchValue, () => { + checkedMap.value = {} + triggerChange() + }) + const triggerChange = () => { if (activePanel?.value) { @@ -328,34 +333,39 @@ }; // 跨页全选 - const handleWholeSelect = () => { - isLoading.value = true; - const params = generateParams(); - params.limit = -1; - props.getTableList(params).then((data) => { - data.results.forEach((dataItem: IValue) => { - if (!props.disabledRowConfig?.handler(dataItem)) { - handleTableSelectOne(true, dataItem); - } - }); - }).finally(() => isLoading.value = false); - }; - - const handleSelectPageAll = (checked: boolean) => { - const list = tableData.value; - if (props.disabledRowConfig) { - for (const data of list) { - if (!props.disabledRowConfig.handler(data)) { - handleTableSelectOne(checked, data); - } - } - return; - } - for (const item of list) { - handleTableSelectOne(checked, item); + const handleWholeSelect = (value: boolean) => { + if (value) { + isLoading.value = true; + const params = generateParams(); + params.limit = -1; + props.getTableList(params).then((data) => { + data.results.forEach((dataItem: IValue) => { + if (!props.disabledRowConfig?.handler(dataItem)) { + handleTableSelectOne(true, dataItem); + } + }); + }).finally(() => isLoading.value = false); + } else { + checkedMap.value = {} + triggerChange() } }; + // const handleSelectPageAll = (checked: boolean) => { + // const list = tableData.value; + // if (props.disabledRowConfig) { + // for (const data of list) { + // if (!props.disabledRowConfig.handler(data)) { + // handleTableSelectOne(checked, data); + // } + // } + // return; + // } + // for (const item of list) { + // handleTableSelectOne(checked, item); + // } + // }; + const handleRowClick = (row: unknown, data: IValue) => { if (props.disabledRowConfig && props.disabledRowConfig.handler(data)) { return; diff --git a/dbm-ui/frontend/src/components/instance-selector/components/tendb-ha-host/table/Index.vue b/dbm-ui/frontend/src/components/instance-selector/components/tendb-ha-host/table/Index.vue index 1fdb104eec..34946c7b2d 100644 --- a/dbm-ui/frontend/src/components/instance-selector/components/tendb-ha-host/table/Index.vue +++ b/dbm-ui/frontend/src/components/instance-selector/components/tendb-ha-host/table/Index.vue @@ -142,7 +142,7 @@ && tableData.value.length === tableData.value.filter(item => checkedMap.value[item[firstColumnFieldId.value]]).length )); - let isSelectedAllReal = false; + // const isSelectedAllReal = false; const columns = [ { @@ -154,9 +154,9 @@ label={true} model-value={isSelectedAll.value} disabled={mainSelectDisable.value} - onChange={handleSelectPageAll} + onChange={handleWholeSelect} /> - ), }}> - + */} ), render: ({ data }: DataRow) => { @@ -293,6 +293,11 @@ immediate: true, }); + watch(searchValue, () => { + checkedMap.value = {} + triggerChange() + }) + const triggerChange = () => { if (activePanel?.value) { emits('change', { @@ -310,35 +315,40 @@ }; // 跨页全选 - const handleWholeSelect = () => { - isLoading.value = true; - const params = generateParams(); - params.limit = -1; - props.getTableList(params).then((data) => { - data.results.forEach((dataItem: IValue) => { - if (!props.disabledRowConfig?.handler(dataItem)) { - handleTableSelectOne(true, dataItem); - } - }); - }).finally(() => isLoading.value = false); + const handleWholeSelect = (value: boolean) => { + if (value) { + isLoading.value = true; + const params = generateParams(); + params.limit = -1; + props.getTableList(params).then((data) => { + data.results.forEach((dataItem: IValue) => { + if (!props.disabledRowConfig?.handler(dataItem)) { + handleTableSelectOne(true, dataItem); + } + }); + }).finally(() => isLoading.value = false); + } else { + checkedMap.value = {} + triggerChange() + } }; - const handleSelectPageAll = (checked: boolean) => { - const list = tableData.value; - if (props.disabledRowConfig) { - isSelectedAllReal = !isSelectedAllReal; - for (const data of list) { - if (!props.disabledRowConfig.handler(data)) { - handleTableSelectOne(isSelectedAllReal, data); - } - } - return; - } - for (const item of list) { - handleTableSelectOne(checked, item); - } - }; + // const handleSelectPageAll = (checked: boolean) => { + // const list = tableData.value; + // if (props.disabledRowConfig) { + // isSelectedAllReal = !isSelectedAllReal; + // for (const data of list) { + // if (!props.disabledRowConfig.handler(data)) { + // handleTableSelectOne(isSelectedAllReal, data); + // } + // } + // return; + // } + // for (const item of list) { + // handleTableSelectOne(checked, item); + // } + // }; const handleTableSelectOne = (checked: boolean, data: IValue) => { const lastCheckMap = { ...checkedMap.value }; diff --git a/dbm-ui/frontend/src/components/instance-selector/components/tendb-single-host/table/Index.vue b/dbm-ui/frontend/src/components/instance-selector/components/tendb-single-host/table/Index.vue index 31a16d052c..e9988bcf5e 100644 --- a/dbm-ui/frontend/src/components/instance-selector/components/tendb-single-host/table/Index.vue +++ b/dbm-ui/frontend/src/components/instance-selector/components/tendb-single-host/table/Index.vue @@ -105,7 +105,7 @@ && tableData.value.length === tableData.value.filter(item => checkedMap.value[item[firstColumnFieldId.value]]).length )); - let isSelectedAllReal = false; + // const isSelectedAllReal = false; const columns = [ { @@ -117,9 +117,9 @@ label={true} model-value={isSelectedAll.value} disabled={mainSelectDisable.value} - onChange={handleSelectPageAll} + onChange={handleWholeSelect} /> - ), }}> - + */} ), render: ({ data }: DataRow) => { @@ -238,6 +238,11 @@ immediate: true, }); + watch(searchValue, () => { + checkedMap.value = {} + triggerChange() + }) + const triggerChange = () => { if (activePanel?.value) { @@ -257,35 +262,40 @@ }; // 跨页全选 - const handleWholeSelect = () => { - isLoading.value = true; - const params = generateParams(); - params.limit = -1; - props.getTableList(params).then((data) => { - data.results.forEach((dataItem: IValue) => { - if (!props.disabledRowConfig?.handler(dataItem)) { - handleTableSelectOne(true, dataItem); - } - }); - }).finally(() => isLoading.value = false); - }; - - const handleSelectPageAll = (checked: boolean) => { - const list = tableData.value; - if (props.disabledRowConfig) { - isSelectedAllReal = !isSelectedAllReal; - for (const data of list) { - if (!props.disabledRowConfig.handler(data)) { - handleTableSelectOne(isSelectedAllReal, data); - } - } - return; - } - for (const item of list) { - handleTableSelectOne(checked, item); + const handleWholeSelect = (value: boolean) => { + if (value) { + isLoading.value = true; + const params = generateParams(); + params.limit = -1; + props.getTableList(params).then((data) => { + data.results.forEach((dataItem: IValue) => { + if (!props.disabledRowConfig?.handler(dataItem)) { + handleTableSelectOne(true, dataItem); + } + }); + }).finally(() => isLoading.value = false); + } else { + checkedMap.value = {} + triggerChange() } }; + // const handleSelectPageAll = (checked: boolean) => { + // const list = tableData.value; + // if (props.disabledRowConfig) { + // isSelectedAllReal = !isSelectedAllReal; + // for (const data of list) { + // if (!props.disabledRowConfig.handler(data)) { + // handleTableSelectOne(isSelectedAllReal, data); + // } + // } + // return; + // } + // for (const item of list) { + // handleTableSelectOne(checked, item); + // } + // }; + const handleRowClick = (row: unknown, data: IValue) => { if (props.disabledRowConfig && props.disabledRowConfig.handler(data)) { return; diff --git a/dbm-ui/frontend/src/components/ip-selector/IpSelector.vue b/dbm-ui/frontend/src/components/ip-selector/IpSelector.vue index cb9cb3f9b0..3368a2fef9 100644 --- a/dbm-ui/frontend/src/components/ip-selector/IpSelector.vue +++ b/dbm-ui/frontend/src/components/ip-selector/IpSelector.vue @@ -229,6 +229,10 @@ const dbCollapseTableTableData = computed(() => ({ ...previewTableProps.value, + pagination: previewTableProps.value.pagination ? { + ...previewTableProps.value.pagination as Exclude, + count: renderData.value.length, + } : previewTableProps.value.pagination, data: renderData.value, })) as unknown as TablePropTypes; @@ -409,7 +413,7 @@ { label: t('管控区域'), field: 'cloud_area', - render: ({data}: {data: HostInfo}) => data.cloud_area || '--', + render: ({data}: {data: HostInfo}) => data.cloud_area.name || '--', }, { label: t('Agent状态'), diff --git a/dbm-ui/frontend/src/services/model/redis/redis-dst-job-task.ts b/dbm-ui/frontend/src/services/model/redis/redis-dst-job-task.ts index f9e8180c98..c181a9ccaa 100644 --- a/dbm-ui/frontend/src/services/model/redis/redis-dst-job-task.ts +++ b/dbm-ui/frontend/src/services/model/redis/redis-dst-job-task.ts @@ -19,7 +19,7 @@ export default class RedisDSTJobTask { bill_id: number; bk_cloud_id: number; create_time: string; - checked: boolean; + // checked: boolean; dst_cluster: string; dts_server: string; fetch_file: string; @@ -65,7 +65,7 @@ export default class RedisDSTJobTask { this.bill_id = payload.bill_id; this.bk_cloud_id = payload.bk_cloud_id; this.create_time = payload.create_time; - this.checked = false; + // this.checked = false; this.dst_cluster = payload.dst_cluster; this.dts_server = payload.dts_server; this.fetch_file = payload.fetch_file; diff --git a/dbm-ui/frontend/src/views/db-manage/doris/list/components/detail/components/node-list/Index.vue b/dbm-ui/frontend/src/views/db-manage/doris/list/components/detail/components/node-list/Index.vue index 738bc9d0fb..b391595378 100644 --- a/dbm-ui/frontend/src/views/db-manage/doris/list/components/detail/components/node-list/Index.vue +++ b/dbm-ui/frontend/src/views/db-manage/doris/list/components/detail/components/node-list/Index.vue @@ -562,6 +562,10 @@ immediate: true, }); + watch(searchValue, () => { + checkedNodeMap.value = {} + }) + const setRowClass = (data: DorisNodeModel) => (data.isNew ? 'is-new-row' : ''); const checkNodeShrinkDisable = (node: DorisNodeModel) => { diff --git a/dbm-ui/frontend/src/views/db-manage/doris/list/components/list/Index.vue b/dbm-ui/frontend/src/views/db-manage/doris/list/components/list/Index.vue index 1f765f05b9..c4be936302 100644 --- a/dbm-ui/frontend/src/views/db-manage/doris/list/components/list/Index.vue +++ b/dbm-ui/frontend/src/views/db-manage/doris/list/components/list/Index.vue @@ -457,6 +457,10 @@ ], }); + watch(searchValue, () => { + tableRef.value!.clearSelected(); + }); + const getMenuList = async (item: ISearchItem | undefined, keyword: string) => { if (item?.id !== 'creator' && keyword) { return getMenuListSearch(item, keyword, serachData.value, searchValue.value); diff --git a/dbm-ui/frontend/src/views/db-manage/elastic-search/list/components/detail/components/node-list/Index.vue b/dbm-ui/frontend/src/views/db-manage/elastic-search/list/components/detail/components/node-list/Index.vue index e3ad1f4faf..1a6b2a65e1 100644 --- a/dbm-ui/frontend/src/views/db-manage/elastic-search/list/components/detail/components/node-list/Index.vue +++ b/dbm-ui/frontend/src/views/db-manage/elastic-search/list/components/detail/components/node-list/Index.vue @@ -599,6 +599,10 @@ }, ); + watch(searchValue, () => { + checkedNodeMap.value = {} + }) + const handleOperationChange = () => { fetchNodeList(); checkedNodeMap.value = {}; diff --git a/dbm-ui/frontend/src/views/db-manage/elastic-search/list/components/detail/components/node-list/components/InstanceDetail.vue b/dbm-ui/frontend/src/views/db-manage/elastic-search/list/components/detail/components/node-list/components/InstanceDetail.vue deleted file mode 100644 index 697712e51f..0000000000 --- a/dbm-ui/frontend/src/views/db-manage/elastic-search/list/components/detail/components/node-list/components/InstanceDetail.vue +++ /dev/null @@ -1,294 +0,0 @@ - - - - - diff --git a/dbm-ui/frontend/src/views/db-manage/elastic-search/list/components/list/Index.vue b/dbm-ui/frontend/src/views/db-manage/elastic-search/list/components/list/Index.vue index e0449bb5f5..e1f23da585 100644 --- a/dbm-ui/frontend/src/views/db-manage/elastic-search/list/components/list/Index.vue +++ b/dbm-ui/frontend/src/views/db-manage/elastic-search/list/components/list/Index.vue @@ -446,6 +446,10 @@ ], }); + watch(searchValue, () => { + tableRef.value!.clearSelected(); + }); + const getMenuList = async (item: ISearchItem | undefined, keyword: string) => { if (item?.id !== 'creator' && keyword) { return getMenuListSearch(item, keyword, serachData.value, searchValue.value); diff --git a/dbm-ui/frontend/src/views/db-manage/hdfs/list/components/detail/components/node-list/Index.vue b/dbm-ui/frontend/src/views/db-manage/hdfs/list/components/detail/components/node-list/Index.vue index bd876edc44..3b1f0dc972 100644 --- a/dbm-ui/frontend/src/views/db-manage/hdfs/list/components/detail/components/node-list/Index.vue +++ b/dbm-ui/frontend/src/views/db-manage/hdfs/list/components/detail/components/node-list/Index.vue @@ -608,6 +608,10 @@ }, ); + watch(searchValue, () => { + checkedNodeMap.value = {} + }) + const handleOperationChange = () => { fetchNodeList(); checkedNodeMap.value = {}; diff --git a/dbm-ui/frontend/src/views/db-manage/hdfs/list/components/detail/components/node-list/components/InstanceDetail.vue b/dbm-ui/frontend/src/views/db-manage/hdfs/list/components/detail/components/node-list/components/InstanceDetail.vue deleted file mode 100644 index fbe78f2d3c..0000000000 --- a/dbm-ui/frontend/src/views/db-manage/hdfs/list/components/detail/components/node-list/components/InstanceDetail.vue +++ /dev/null @@ -1,293 +0,0 @@ - - - - - diff --git a/dbm-ui/frontend/src/views/db-manage/hdfs/list/components/list/Index.vue b/dbm-ui/frontend/src/views/db-manage/hdfs/list/components/list/Index.vue index 2766326a9f..0c85012a9d 100644 --- a/dbm-ui/frontend/src/views/db-manage/hdfs/list/components/list/Index.vue +++ b/dbm-ui/frontend/src/views/db-manage/hdfs/list/components/list/Index.vue @@ -481,6 +481,10 @@ ], }); + watch(searchValue, () => { + tableRef.value!.clearSelected(); + }); + const getMenuList = async (item: ISearchItem | undefined, keyword: string) => { if (item?.id !== 'creator' && keyword) { return getMenuListSearch(item, keyword, serachData.value, searchValue.value); diff --git a/dbm-ui/frontend/src/views/db-manage/influxdb/instance-list/components/render-list/Index.vue b/dbm-ui/frontend/src/views/db-manage/influxdb/instance-list/components/render-list/Index.vue index 06255e4320..e0459b6e79 100644 --- a/dbm-ui/frontend/src/views/db-manage/influxdb/instance-list/components/render-list/Index.vue +++ b/dbm-ui/frontend/src/views/db-manage/influxdb/instance-list/components/render-list/Index.vue @@ -582,6 +582,10 @@ resumeFetchTableData(); }); + watch(searchValue, () => { + tableRef.value!.clearSelected(); + }); + const getMenuList = async (item: ISearchItem | undefined, keyword: string) => { if (item?.id !== 'creator' && keyword) { return getMenuListSearch(item, keyword, searchSelectData.value, searchValue.value); diff --git a/dbm-ui/frontend/src/views/db-manage/kafka/list/components/detail/components/node-list/Index.vue b/dbm-ui/frontend/src/views/db-manage/kafka/list/components/detail/components/node-list/Index.vue index 4a68e6faa6..3d2b750c82 100644 --- a/dbm-ui/frontend/src/views/db-manage/kafka/list/components/detail/components/node-list/Index.vue +++ b/dbm-ui/frontend/src/views/db-manage/kafka/list/components/detail/components/node-list/Index.vue @@ -492,6 +492,10 @@ }, ]; + watch(searchValue, () => { + checkedNodeMap.value = {} + }) + const setRowClass = (data: KafkaNodeModel) => (isRecentDays(data.create_at, 24 * 3) ? 'is-new-row' : ''); const fetchClusterDetail = () => { diff --git a/dbm-ui/frontend/src/views/db-manage/kafka/list/components/detail/components/node-list/components/InstanceDetail.vue b/dbm-ui/frontend/src/views/db-manage/kafka/list/components/detail/components/node-list/components/InstanceDetail.vue deleted file mode 100644 index 5f61f0e22d..0000000000 --- a/dbm-ui/frontend/src/views/db-manage/kafka/list/components/detail/components/node-list/components/InstanceDetail.vue +++ /dev/null @@ -1,293 +0,0 @@ - - - - - diff --git a/dbm-ui/frontend/src/views/db-manage/kafka/list/components/list/Index.vue b/dbm-ui/frontend/src/views/db-manage/kafka/list/components/list/Index.vue index c288f1a552..085d124936 100644 --- a/dbm-ui/frontend/src/views/db-manage/kafka/list/components/list/Index.vue +++ b/dbm-ui/frontend/src/views/db-manage/kafka/list/components/list/Index.vue @@ -433,6 +433,10 @@ disabled: ['master_domain'], }); + watch(searchValue, () => { + tableRef.value!.clearSelected(); + }); + const getMenuList = async (item: ISearchItem | undefined, keyword: string) => { if (item?.id !== 'creator' && keyword) { return getMenuListSearch(item, keyword, serachData.value, searchValue.value); diff --git a/dbm-ui/frontend/src/views/db-manage/mongodb/replica-set-list/components/list/Index.vue b/dbm-ui/frontend/src/views/db-manage/mongodb/replica-set-list/components/list/Index.vue index 13b876794b..8880f1f974 100644 --- a/dbm-ui/frontend/src/views/db-manage/mongodb/replica-set-list/components/list/Index.vue +++ b/dbm-ui/frontend/src/views/db-manage/mongodb/replica-set-list/components/list/Index.vue @@ -386,6 +386,10 @@ }, ); + watch(searchValue, () => { + tableRef.value!.clearSelected(); + }); + const getMenuList = async (item: ISearchItem | undefined, keyword: string) => { if (item?.id !== 'creator' && keyword) { return getMenuListSearch(item, keyword, searchSelectData.value, searchValue.value); diff --git a/dbm-ui/frontend/src/views/db-manage/mongodb/shared-cluster-list/components/list/Index.vue b/dbm-ui/frontend/src/views/db-manage/mongodb/shared-cluster-list/components/list/Index.vue index 34a79c3e1b..5c2cae445e 100644 --- a/dbm-ui/frontend/src/views/db-manage/mongodb/shared-cluster-list/components/list/Index.vue +++ b/dbm-ui/frontend/src/views/db-manage/mongodb/shared-cluster-list/components/list/Index.vue @@ -406,6 +406,10 @@ }, ); + watch(searchValue, () => { + tableRef.value!.clearSelected(); + }); + const getMenuList = async (item: ISearchItem | undefined, keyword: string) => { if (item?.id !== 'creator' && keyword) { return getMenuListSearch(item, keyword, searchSelectData.value, searchValue.value); diff --git a/dbm-ui/frontend/src/views/db-manage/mongodb/structure-instance/Index.vue b/dbm-ui/frontend/src/views/db-manage/mongodb/structure-instance/Index.vue index 52c2fd8501..0c00621337 100644 --- a/dbm-ui/frontend/src/views/db-manage/mongodb/structure-instance/Index.vue +++ b/dbm-ui/frontend/src/views/db-manage/mongodb/structure-instance/Index.vue @@ -353,6 +353,7 @@ watch(searchValue, () => { fetchTableData(); + tableRef.value!.clearSelected(); }); const fetchTableData = () => { diff --git a/dbm-ui/frontend/src/views/db-manage/mysql/dumper/components/render-list/components/instance-list/Index.vue b/dbm-ui/frontend/src/views/db-manage/mysql/dumper/components/render-list/components/instance-list/Index.vue index 30f9051c51..8d407a38de 100644 --- a/dbm-ui/frontend/src/views/db-manage/mysql/dumper/components/render-list/components/instance-list/Index.vue +++ b/dbm-ui/frontend/src/views/db-manage/mysql/dumper/components/render-list/components/instance-list/Index.vue @@ -476,6 +476,7 @@ watch(() => [props.data, search], () => { fetchTableData(); + tableRef.value?.clearSelected(); if (props.data){ fetchRunningTaskList({ dumper_config_id: props.data?.id diff --git a/dbm-ui/frontend/src/views/db-manage/mysql/ha-cluster-list/components/List.vue b/dbm-ui/frontend/src/views/db-manage/mysql/ha-cluster-list/components/List.vue index 819bc88566..2d1c6d4573 100644 --- a/dbm-ui/frontend/src/views/db-manage/mysql/ha-cluster-list/components/List.vue +++ b/dbm-ui/frontend/src/views/db-manage/mysql/ha-cluster-list/components/List.vue @@ -464,6 +464,10 @@ disabled: ['master_domain'], }); + watch(searchValue, () => { + tableRef.value!.clearSelected(); + }); + const getMenuList = async (item: ISearchItem | undefined, keyword: string) => { if (item?.id !== 'creator' && keyword) { return getMenuListSearch(item, keyword, searchSelectData.value, searchValue.value); diff --git a/dbm-ui/frontend/src/views/db-manage/mysql/partition-manage/Index.vue b/dbm-ui/frontend/src/views/db-manage/mysql/partition-manage/Index.vue index c342551927..dea0421de5 100644 --- a/dbm-ui/frontend/src/views/db-manage/mysql/partition-manage/Index.vue +++ b/dbm-ui/frontend/src/views/db-manage/mysql/partition-manage/Index.vue @@ -344,6 +344,10 @@ }, ]; + watch(searchValues, () => { + tableRef.value!.clearSelected(); + }); + const getRowClass = (data: PartitionModel) => { const classList: string[] = []; if (data.isOffline) { diff --git a/dbm-ui/frontend/src/views/db-manage/mysql/single-cluster-list/components/List.vue b/dbm-ui/frontend/src/views/db-manage/mysql/single-cluster-list/components/List.vue index 59e5731a08..36a8a89c40 100644 --- a/dbm-ui/frontend/src/views/db-manage/mysql/single-cluster-list/components/List.vue +++ b/dbm-ui/frontend/src/views/db-manage/mysql/single-cluster-list/components/List.vue @@ -384,6 +384,10 @@ disabled: ['master_domain'], }); + watch(searchValue, () => { + tableRef.value!.clearSelected(); + }); + const getMenuList = async (item: ISearchItem | undefined, keyword: string) => { if (item?.id !== 'creator' && keyword) { return getMenuListSearch(item, keyword, searchSelectData.value, searchValue.value); diff --git a/dbm-ui/frontend/src/views/db-manage/pulsar/list/components/detail/components/node-list/Index.vue b/dbm-ui/frontend/src/views/db-manage/pulsar/list/components/detail/components/node-list/Index.vue index 35d9c87476..14773c7c4a 100644 --- a/dbm-ui/frontend/src/views/db-manage/pulsar/list/components/detail/components/node-list/Index.vue +++ b/dbm-ui/frontend/src/views/db-manage/pulsar/list/components/detail/components/node-list/Index.vue @@ -574,6 +574,10 @@ }, ); + watch(searchValue, () => { + checkedNodeMap.value = {} + }) + const handleOperationChange = () => { fetchNodeList(); checkedNodeMap.value = {}; diff --git a/dbm-ui/frontend/src/views/db-manage/pulsar/list/components/detail/components/node-list/components/InstanceDetail.vue b/dbm-ui/frontend/src/views/db-manage/pulsar/list/components/detail/components/node-list/components/InstanceDetail.vue deleted file mode 100644 index 5a514899c5..0000000000 --- a/dbm-ui/frontend/src/views/db-manage/pulsar/list/components/detail/components/node-list/components/InstanceDetail.vue +++ /dev/null @@ -1,307 +0,0 @@ - - - - - diff --git a/dbm-ui/frontend/src/views/db-manage/pulsar/list/components/list/Index.vue b/dbm-ui/frontend/src/views/db-manage/pulsar/list/components/list/Index.vue index cd28eea16f..30d6481102 100644 --- a/dbm-ui/frontend/src/views/db-manage/pulsar/list/components/list/Index.vue +++ b/dbm-ui/frontend/src/views/db-manage/pulsar/list/components/list/Index.vue @@ -441,6 +441,10 @@ disabled: ['master_domain'], }); + watch(searchValue, () => { + tableRef.value!.clearSelected(); + }); + const getMenuList = async (item: ISearchItem | undefined, keyword: string) => { if (item?.id !== 'creator' && keyword) { return getMenuListSearch(item, keyword, serachData.value, searchValue.value); diff --git a/dbm-ui/frontend/src/views/db-manage/redis/cluster-ha-list/components/list/Index.vue b/dbm-ui/frontend/src/views/db-manage/redis/cluster-ha-list/components/list/Index.vue index dc3fea87ef..f0a53c5ce8 100644 --- a/dbm-ui/frontend/src/views/db-manage/redis/cluster-ha-list/components/list/Index.vue +++ b/dbm-ui/frontend/src/views/db-manage/redis/cluster-ha-list/components/list/Index.vue @@ -530,6 +530,10 @@ disabled: ['master_domain'], }); + watch(searchValue, () => { + tableRef.value!.clearSelected(); + }); + const getMenuList = async (item: ISearchItem | undefined, keyword: string) => { if (item?.id !== 'creator' && keyword) { return getMenuListSearch(item, keyword, searchSelectData.value, searchValue.value); diff --git a/dbm-ui/frontend/src/views/db-manage/redis/cluster-list/components/list/Index.vue b/dbm-ui/frontend/src/views/db-manage/redis/cluster-list/components/list/Index.vue index 27b4bc3a31..5658bb4e7c 100644 --- a/dbm-ui/frontend/src/views/db-manage/redis/cluster-list/components/list/Index.vue +++ b/dbm-ui/frontend/src/views/db-manage/redis/cluster-list/components/list/Index.vue @@ -647,6 +647,10 @@ disabled: ['master_domain'], }); + watch(searchValue, () => { + tableRef.value!.clearSelected(); + }); + const getMenuList = async (item: ISearchItem | undefined, keyword: string) => { if (item?.id !== 'creator' && keyword) { return getMenuListSearch(item, keyword, searchSelectData.value, searchValue.value); diff --git a/dbm-ui/frontend/src/views/db-manage/redis/db-data-copy-record/pages/page1/components/DataCopyTransferDetail.vue b/dbm-ui/frontend/src/views/db-manage/redis/db-data-copy-record/pages/page1/components/DataCopyTransferDetail.vue index d30c8644e7..99a6b038f1 100644 --- a/dbm-ui/frontend/src/views/db-manage/redis/db-data-copy-record/pages/page1/components/DataCopyTransferDetail.vue +++ b/dbm-ui/frontend/src/views/db-manage/redis/db-data-copy-record/pages/page1/components/DataCopyTransferDetail.vue @@ -238,10 +238,11 @@ const tableData = ref([]); const timer = ref(); const refreshTimer = ref(); + const checkedMap = ref>({}); - const isSelectedAll = computed(() => tableData.value.filter(item => item.checked).length === tableData.value.length); + const isSelectedAll = computed(() => tableData.value.length > 0 && Object.values(checkedMap.value).filter(item => item).length === tableData.value.length); - const isIndeterminate = computed(() => tableData.value.filter(item => item.checked).length > 0); + const isIndeterminate = computed(() => Object.values(checkedMap.value).filter(item => item).length > 0); const whiteRegexs = computed(() => { if (props.data?.key_white_regex === undefined || props.data?.key_white_regex === '') { @@ -280,7 +281,7 @@
handleSelectOne(index)} /> @@ -291,27 +292,32 @@ { label: 'DtsServer', field: 'dts_server', + width: 100, showOverflowTooltip: true, }, { label: t('Task 类型'), field: 'task_type', + width: 120, showOverflowTooltip: true, }, { label: t('执行状态'), field: 'status', + width: 100, showOverflowTooltip: true, render: ({ data }: { data: RedisDSTJobTaskModel }) => , }, { label: t('执行时间'), field: 'update_time', + width: 180, showOverflowTooltip: true, }, { label: t('任务信息'), field: 'message', + minWidth: 200, showOverflowTooltip: true, }]; @@ -360,9 +366,11 @@ const regex = new RegExp(encodeRegexp(keyword)); timer.value = setTimeout(() => { tableData.value = tableRawData.filter(item => regex.test(item.src_cluster) || regex.test(item.dts_server)); + checkedMap.value = {} }, 1000); } else { tableData.value = tableRawData; + checkedMap.value = {} } }); @@ -405,22 +413,23 @@ const handleSelectPageAll = (checked: boolean) => { if (checked) { - tableData.value.forEach((item, index) => { + tableData.value.forEach((item) => { if (item.isFailedStatus) { - tableData.value[index].checked = true; + checkedMap.value[item.id] = true } }); } else { - tableData.value.forEach((item, index) => { + tableData.value.forEach((item) => { if (item.isFailedStatus) { - tableData.value[index].checked = false; + checkedMap.value[item.id] = false; } }); } }; const handleSelectOne = (index: number) => { - tableData.value[index].checked = !tableData.value[index].checked; + const {id} = tableData.value[index] + checkedMap.value[id] = !checkedMap.value[id] }; async function handleClose() { @@ -496,11 +505,11 @@ } .content { + max-height: 300px; margin-left: 5px; + overflow-y: auto; color: @title-color; flex: 1; - overflow-y: auto; - max-height: 300px; :deep(.bk-tag) { &:hover { diff --git a/dbm-ui/frontend/src/views/db-manage/riak/list/components/detail/components/NodeList.vue b/dbm-ui/frontend/src/views/db-manage/riak/list/components/detail/components/NodeList.vue index 48d555e30b..5bd672cc17 100644 --- a/dbm-ui/frontend/src/views/db-manage/riak/list/components/detail/components/NodeList.vue +++ b/dbm-ui/frontend/src/views/db-manage/riak/list/components/detail/components/NodeList.vue @@ -75,7 +75,7 @@ class="action-box-search" clearable :placeholder="t('请输入节点实例或选择字段搜索')" - @change="() => fetchData()" /> + @change="handleSearchKeyChange" />
{ + tableRef.value!.clearSelected(); + fetchData() + } + const handleSelection = (_key: any[], list: RiakNodeModel[]) => { selected.value = list; }; diff --git a/dbm-ui/frontend/src/views/db-manage/riak/list/components/list/Index.vue b/dbm-ui/frontend/src/views/db-manage/riak/list/components/list/Index.vue index 6202f845af..55ff5168a9 100644 --- a/dbm-ui/frontend/src/views/db-manage/riak/list/components/list/Index.vue +++ b/dbm-ui/frontend/src/views/db-manage/riak/list/components/list/Index.vue @@ -374,6 +374,10 @@ emits('detailOpenChange', newVal); }); + watch(searchValue, () => { + tableRef.value!.clearSelected(); + }); + const getMenuList = async (item: ISearchItem | undefined, keyword: string) => { if (item?.id !== 'creator' && keyword) { return getMenuListSearch(item, keyword, serachData.value, searchValue.value); diff --git a/dbm-ui/frontend/src/views/db-manage/sqlserver/ha-cluster-list/components/List.vue b/dbm-ui/frontend/src/views/db-manage/sqlserver/ha-cluster-list/components/List.vue index 6565680472..87f97e957a 100644 --- a/dbm-ui/frontend/src/views/db-manage/sqlserver/ha-cluster-list/components/List.vue +++ b/dbm-ui/frontend/src/views/db-manage/sqlserver/ha-cluster-list/components/List.vue @@ -387,6 +387,10 @@ disabled: ['master_domain'], }); + watch(searchValue, () => { + tableRef.value!.clearSelected(); + }); + const getMenuList = async (item: ISearchItem | undefined, keyword: string) => { if (item?.id !== 'creator' && keyword) { return getMenuListSearch(item, keyword, searchSelectData.value, searchValue.value); diff --git a/dbm-ui/frontend/src/views/db-manage/sqlserver/single-cluster-list/components/List.vue b/dbm-ui/frontend/src/views/db-manage/sqlserver/single-cluster-list/components/List.vue index 20b1ee73d1..355becae58 100644 --- a/dbm-ui/frontend/src/views/db-manage/sqlserver/single-cluster-list/components/List.vue +++ b/dbm-ui/frontend/src/views/db-manage/sqlserver/single-cluster-list/components/List.vue @@ -351,6 +351,10 @@ disabled: ['master_domain'], }); + watch(searchValue, () => { + tableRef.value!.clearSelected(); + }); + const getMenuList = async (item: ISearchItem | undefined, keyword: string) => { if (item?.id !== 'creator' && keyword) { return getMenuListSearch(item, keyword, searchSelectData.value, searchValue.value); diff --git a/dbm-ui/frontend/src/views/db-manage/tendb-cluster/cluster-list/components/list/Index.vue b/dbm-ui/frontend/src/views/db-manage/tendb-cluster/cluster-list/components/list/Index.vue index 809538e5d9..399835ea5d 100644 --- a/dbm-ui/frontend/src/views/db-manage/tendb-cluster/cluster-list/components/list/Index.vue +++ b/dbm-ui/frontend/src/views/db-manage/tendb-cluster/cluster-list/components/list/Index.vue @@ -535,6 +535,10 @@ }, }); + watch(searchValue, () => { + tableRef.value!.clearSelected(); + }); + const getMenuList = async (item: ISearchItem | undefined, keyword: string) => { if (item?.id !== 'creator' && keyword) { return getMenuListSearch(item, keyword, searchSelectData.value, searchValue.value); diff --git a/dbm-ui/frontend/src/views/db-manage/tendb-cluster/partition-manage/Index.vue b/dbm-ui/frontend/src/views/db-manage/tendb-cluster/partition-manage/Index.vue index 6ff5c71e3d..f7c8b281e1 100644 --- a/dbm-ui/frontend/src/views/db-manage/tendb-cluster/partition-manage/Index.vue +++ b/dbm-ui/frontend/src/views/db-manage/tendb-cluster/partition-manage/Index.vue @@ -354,6 +354,10 @@ }, ]; + watch(searchValues, () => { + tableRef.value!.clearSelected(); + }); + const getRowClass = (data: PartitionModel) => { const classList: string[] = []; if (data.isOffline) { diff --git a/dbm-ui/frontend/src/views/resource-manage/dirty-machine/Index.vue b/dbm-ui/frontend/src/views/resource-manage/dirty-machine/Index.vue index 1360f6d0a1..aa7bbde021 100644 --- a/dbm-ui/frontend/src/views/resource-manage/dirty-machine/Index.vue +++ b/dbm-ui/frontend/src/views/resource-manage/dirty-machine/Index.vue @@ -318,6 +318,10 @@ }, ]); + watch(searchValue, () => { + tableRef.value!.clearSelected(); + }); + // const serachValidateValues = ( // payload: Record<'id'|'name', string>, // values: Array>, diff --git a/dbm-ui/frontend/src/views/resource-manage/pool/host-list/components/RenderTable.vue b/dbm-ui/frontend/src/views/resource-manage/pool/host-list/components/RenderTable.vue index a036a9839a..4770151e72 100644 --- a/dbm-ui/frontend/src/views/resource-manage/pool/host-list/components/RenderTable.vue +++ b/dbm-ui/frontend/src/views/resource-manage/pool/host-list/components/RenderTable.vue @@ -149,23 +149,27 @@ const genSelectionColumn = () => ({ width: 60, fixed: 'left', - label: () => { - const renderCheckbox = () => { - if (isWholeChecked.value) { - return ( -
- ); - } - return ( + label: () => + // const renderCheckbox = () => { + // if (isWholeChecked.value) { + // return ( + //
+ // ); + // } + // return ( + // + // ); + // }; + ( +
- ); - }; - return ( -
- {renderCheckbox()} + onChange={handleWholeSelect} + /> (
{t('本页全选')}
-
{t('跨页全选')}
+
handleWholeSelect(!isWholeChecked.value)}>{t('跨页全选')}
), }}>
- ); - }, + ) + , render: ({ data }: {data: any}) => { const selectDisabled = props.disableSelectMethod(data); const tips = { @@ -231,19 +235,19 @@ ...props.paginationExtra, }); // 是否本页全选 - const isCurrentPageAllSelected = computed(() => { - const list = tableData.value.results; - if (list.length < 1) { - return false; - } - const selectMap = { ...rowSelectMemo.value }; - for (let i = 0; i < list.length; i++) { - if (!selectMap[_.get(list[i], props.primaryKey)]) { - return false; - } - } - return true; - }); + // const isCurrentPageAllSelected = computed(() => { + // const list = tableData.value.results; + // if (list.length < 1) { + // return false; + // } + // const selectMap = { ...rowSelectMemo.value }; + // for (let i = 0; i < list.length; i++) { + // if (!selectMap[_.get(list[i], props.primaryKey)]) { + // return false; + // } + // } + // return true; + // }); const localColumns = computed(() => { if (!props.selectable || !props.columns) { @@ -370,21 +374,21 @@ }; // 切换当前页全选 - const handleTogglePageSelect = (checked: boolean) => { - const selectMap = { ...rowSelectMemo.value }; - tableData.value.results.forEach((dataItem: any) => { - if (checked) { - selectMap[_.get(dataItem, props.primaryKey)] = dataItem; - } else { - delete selectMap[_.get(dataItem, props.primaryKey)]; - } - }); - if (!checked) { - isWholeChecked.value = false; - } - rowSelectMemo.value = selectMap; - triggerSelection(); - }; + // const handleTogglePageSelect = (checked: boolean) => { + // const selectMap = { ...rowSelectMemo.value }; + // tableData.value.results.forEach((dataItem: any) => { + // if (checked) { + // selectMap[_.get(dataItem, props.primaryKey)] = dataItem; + // } else { + // delete selectMap[_.get(dataItem, props.primaryKey)]; + // } + // }); + // if (!checked) { + // isWholeChecked.value = false; + // } + // rowSelectMemo.value = selectMap; + // triggerSelection(); + // }; // 清空选择 const handleClearWholeSelect = () => { @@ -394,24 +398,30 @@ }; // 跨页全选 - const handleWholeSelect = () => { - props.dataSource({ - offset: (pagination.current - 1) * pagination.limit, - limit: -1, - ...paramsMemo, - ...sortParams, - }).then((data) => { - const selectMap = { ...rowSelectMemo.value }; - data.results.forEach((dataItem: any) => { - if (props.disableSelectMethod(dataItem)) { - return; - } - selectMap[_.get(dataItem, props.primaryKey)] = dataItem; + const handleWholeSelect = (value: boolean) => { + if (value) { + props.dataSource({ + offset: (pagination.current - 1) * pagination.limit, + limit: -1, + ...paramsMemo, + ...sortParams, + }).then((data) => { + const selectMap = { ...rowSelectMemo.value }; + data.results.forEach((dataItem: any) => { + if (props.disableSelectMethod(dataItem)) { + return; + } + selectMap[_.get(dataItem, props.primaryKey)] = dataItem; + }); + rowSelectMemo.value = selectMap; + isWholeChecked.value = true; + triggerSelection(); }); - rowSelectMemo.value = selectMap; - isWholeChecked.value = true; + } else { + rowSelectMemo.value = {}; + isWholeChecked.value = false; triggerSelection(); - }); + } }; // 选中单行 diff --git a/dbm-ui/frontend/src/views/resource-manage/pool/host-list/components/import-host/components/select-host-panel/Index.vue b/dbm-ui/frontend/src/views/resource-manage/pool/host-list/components/import-host/components/select-host-panel/Index.vue index 24f42dbc8b..3cd3b585f2 100644 --- a/dbm-ui/frontend/src/views/resource-manage/pool/host-list/components/import-host/components/select-host-panel/Index.vue +++ b/dbm-ui/frontend/src/views/resource-manage/pool/host-list/components/import-host/components/select-host-panel/Index.vue @@ -145,6 +145,7 @@ }; const handleSearch = () => { + tableRef.value!.clearSelected(); fetchData(); }; diff --git a/dbm-ui/frontend/src/views/resource-manage/spec/components/SpecList.vue b/dbm-ui/frontend/src/views/resource-manage/spec/components/SpecList.vue index 4efb8549c5..65d9c908ed 100644 --- a/dbm-ui/frontend/src/views/resource-manage/spec/components/SpecList.vue +++ b/dbm-ui/frontend/src/views/resource-manage/spec/components/SpecList.vue @@ -423,6 +423,7 @@ props.machineType, searchKey.value, ], () => { + tableRef.value!.clearSelected(); fetchData(); }); diff --git a/dbm-ui/frontend/src/views/temporary-paassword-modify/components/render-passwrod-instance/RenderInstance.vue b/dbm-ui/frontend/src/views/temporary-paassword-modify/components/render-passwrod-instance/RenderInstance.vue index 27d889e7ee..f93d5f75d4 100644 --- a/dbm-ui/frontend/src/views/temporary-paassword-modify/components/render-passwrod-instance/RenderInstance.vue +++ b/dbm-ui/frontend/src/views/temporary-paassword-modify/components/render-passwrod-instance/RenderInstance.vue @@ -51,14 +51,13 @@ format="yyyy-MM-dd HH:mm:ss" :placeholder="t('请选择')" type="datetimerange" - @change="getDataSource" - @clear="getDataSource" /> + @change="handleSearchValueChange" /> + @change="handleSearchValueChange" />
selected.value.length > 0); + const handleSearchValueChange = () => { + tableRef.value!.clearSelected(); + getDataSource(); + } + const getDataSource = () => { const keys = getSearchSelectorParams(searchParams.keys); const params = { @@ -263,8 +267,6 @@ passwordShow.value = !passwordShow.value; }; - - const handleSelection = (data: AdminPasswordModel, list: AdminPasswordModel[]) => { selected.value = list; }; diff --git a/dbm-ui/frontend/src/views/ticket-center/common/TableModeTable.vue b/dbm-ui/frontend/src/views/ticket-center/common/TableModeTable.vue index a1ceb2bb05..cb66d7f533 100644 --- a/dbm-ui/frontend/src/views/ticket-center/common/TableModeTable.vue +++ b/dbm-ui/frontend/src/views/ticket-center/common/TableModeTable.vue @@ -361,6 +361,9 @@ pagination.current = 1; } + if (props.selectable) { + handleClearWholeSelect(); + } fetchData(); }); diff --git a/dbm-ui/frontend/src/views/ticket-flow-setting-global/components/List.vue b/dbm-ui/frontend/src/views/ticket-flow-setting-global/components/List.vue index f362667c96..4ac11bf7ce 100644 --- a/dbm-ui/frontend/src/views/ticket-flow-setting-global/components/List.vue +++ b/dbm-ui/frontend/src/views/ticket-flow-setting-global/components/List.vue @@ -235,6 +235,10 @@ } }); + watch(searchValue, () => { + tableRef.value!.clearSelected(); + }); + const fetchData = () => { tableRef.value.fetchData({ ...reqParams.value }, { db_type: props.dbType, diff --git a/dbm-ui/frontend/src/views/whitelist/list/Index.vue b/dbm-ui/frontend/src/views/whitelist/list/Index.vue index a2cdb3a9f2..519e1d0671 100644 --- a/dbm-ui/frontend/src/views/whitelist/list/Index.vue +++ b/dbm-ui/frontend/src/views/whitelist/list/Index.vue @@ -46,8 +46,8 @@ :placeholder="t('请输入IP')" style="width: 500px" type="search" - @clear="fetchTableData" - @enter="fetchTableData" /> + @clear="handleKeyWordChange" + @enter="handleKeyWordChange" />
{ + tableRef.value!.clearSelected(); + fetchTableData(); + } + const fetchTableData = () => { tableRef.value.fetchData({ ip: keyword.value,