|
|
@@ -45,26 +45,27 @@
|
|
|
border
|
|
|
highlight-current-row
|
|
|
height="360px"
|
|
|
+ :row-class-name="rowClassName"
|
|
|
@row-dblclick="handleRowDblClick"
|
|
|
>
|
|
|
<el-table-column label="编码" align="center" prop="taxationNo" min-width="110">
|
|
|
<template #default="{ row }">
|
|
|
- <el-link type="primary" :underline="false">{{ row.taxationNo }}</el-link>
|
|
|
+ <el-link :type="isRowDisabled(row) ? 'info' : 'primary'" :disabled="isRowDisabled(row)" :underline="false">{{ row.taxationNo }}</el-link>
|
|
|
</template>
|
|
|
</el-table-column>
|
|
|
<el-table-column label="合并编码" align="center" prop="mergeNo" min-width="130" show-overflow-tooltip>
|
|
|
<template #default="{ row }">
|
|
|
- <el-link type="primary" :underline="false">{{ row.mergeNo }}</el-link>
|
|
|
+ <el-link :type="isRowDisabled(row) ? 'info' : 'primary'" :disabled="isRowDisabled(row)" :underline="false">{{ row.mergeNo }}</el-link>
|
|
|
</template>
|
|
|
</el-table-column>
|
|
|
<el-table-column label="名称" align="center" prop="name" min-width="120" show-overflow-tooltip>
|
|
|
<template #default="{ row }">
|
|
|
- <el-link type="primary" :underline="false">{{ row.name }}</el-link>
|
|
|
+ <el-link :type="isRowDisabled(row) ? 'info' : 'primary'" :disabled="isRowDisabled(row)" :underline="false">{{ row.name }}</el-link>
|
|
|
</template>
|
|
|
</el-table-column>
|
|
|
<el-table-column label="简称" align="center" prop="abbreviation" min-width="100" show-overflow-tooltip>
|
|
|
<template #default="{ row }">
|
|
|
- <el-link type="primary" :underline="false">{{ row.abbreviation }}</el-link>
|
|
|
+ <el-link :type="isRowDisabled(row) ? 'info' : 'primary'" :disabled="isRowDisabled(row)" :underline="false">{{ row.abbreviation }}</el-link>
|
|
|
</template>
|
|
|
</el-table-column>
|
|
|
<!-- <el-table-column label="说明" align="center" prop="remark" min-width="150" show-overflow-tooltip />
|
|
|
@@ -171,7 +172,6 @@ const getList = async () => {
|
|
|
loading.value = true;
|
|
|
try {
|
|
|
const res = await listTaxCode(queryParams.value);
|
|
|
- // 后端已按 isBottom='0' 过滤,仅返回无下级的叶子节点
|
|
|
listData.value = res.rows ?? [];
|
|
|
total.value = res.total ?? 0;
|
|
|
} finally {
|
|
|
@@ -203,9 +203,22 @@ const handleSearch = () => {
|
|
|
getList();
|
|
|
};
|
|
|
|
|
|
+/** 判断行是否禁用:非叶子节点(isBottom === 0)不可选 */
|
|
|
+const isRowDisabled = (row: TaxCodeVO): boolean => {
|
|
|
+ return Number((row as any)?.isBottom) === 0;
|
|
|
+};
|
|
|
+
|
|
|
+/** 行样式类名:禁用行显示为灰色 */
|
|
|
+const rowClassName = ({ row }: { row: TaxCodeVO }): string => {
|
|
|
+ return isRowDisabled(row) ? 'tax-code-row-disabled' : '';
|
|
|
+};
|
|
|
+
|
|
|
/** 双击行选择 */
|
|
|
const handleRowDblClick = (row: TaxCodeVO) => {
|
|
|
- if (row.isBottom !== '0') return;
|
|
|
+ if (isRowDisabled(row)) {
|
|
|
+ proxy?.$modal.msgWarning('该节点不是叶子节点,不可选择');
|
|
|
+ return;
|
|
|
+ }
|
|
|
emit('select', row);
|
|
|
dialog.closeDialog();
|
|
|
};
|
|
|
@@ -220,7 +233,6 @@ const open = (id?: string | number) => {
|
|
|
parentId: undefined,
|
|
|
name: undefined,
|
|
|
taxationNo: undefined,
|
|
|
- isBottom: '0',
|
|
|
params: {}
|
|
|
};
|
|
|
dialog.openDialog();
|
|
|
@@ -274,4 +286,14 @@ defineExpose({ open, close: dialog.closeDialog });
|
|
|
display: flex;
|
|
|
align-items: center;
|
|
|
}
|
|
|
+
|
|
|
+:deep(.tax-code-row-disabled) {
|
|
|
+ background-color: var(--el-fill-color-light) !important;
|
|
|
+ color: var(--el-text-color-disabled);
|
|
|
+ cursor: not-allowed;
|
|
|
+}
|
|
|
+
|
|
|
+:deep(.tax-code-row-disabled:hover > td.el-table__cell) {
|
|
|
+ background-color: var(--el-fill-color-light) !important;
|
|
|
+}
|
|
|
</style>
|