From bca59a2755ba55f5f176192fcfff2b9a45928d04 Mon Sep 17 00:00:00 2001 From: ZhangAo Date: Wed, 5 Aug 2026 17:32:01 +0800 Subject: [PATCH] 20260805173201 --- code/fms/fms-vue/src/App.vue | 33 +- .../fms-module-list/FmsQueryToolbar.vue | 42 +- code/fms/fms-vue/src/router/routes.js | 20 + .../fms-vue/src/views/base/contact/detail.vue | 66 +++ .../fms-vue/src/views/base/contact/index.vue | 74 ++- .../src/views/base/othercompany/detail.vue | 537 ++++++++++++++++++ .../src/views/base/othercompany/index.vue | 71 ++- 7 files changed, 812 insertions(+), 31 deletions(-) create mode 100644 code/fms/fms-vue/src/views/base/contact/detail.vue create mode 100644 code/fms/fms-vue/src/views/base/othercompany/detail.vue diff --git a/code/fms/fms-vue/src/App.vue b/code/fms/fms-vue/src/App.vue index 6dcdd937..2f0531a0 100644 --- a/code/fms/fms-vue/src/App.vue +++ b/code/fms/fms-vue/src/App.vue @@ -1,7 +1,30 @@ + + + + diff --git a/code/fms/fms-vue/src/views/base/contact/index.vue b/code/fms/fms-vue/src/views/base/contact/index.vue index 7118c7a8..4369aade 100644 --- a/code/fms/fms-vue/src/views/base/contact/index.vue +++ b/code/fms/fms-vue/src/views/base/contact/index.vue @@ -1,10 +1,82 @@ diff --git a/code/fms/fms-vue/src/views/base/othercompany/detail.vue b/code/fms/fms-vue/src/views/base/othercompany/detail.vue new file mode 100644 index 00000000..26721368 --- /dev/null +++ b/code/fms/fms-vue/src/views/base/othercompany/detail.vue @@ -0,0 +1,537 @@ + + + + + diff --git a/code/fms/fms-vue/src/views/base/othercompany/index.vue b/code/fms/fms-vue/src/views/base/othercompany/index.vue index e9bf5c0c..f9112722 100644 --- a/code/fms/fms-vue/src/views/base/othercompany/index.vue +++ b/code/fms/fms-vue/src/views/base/othercompany/index.vue @@ -6,14 +6,35 @@ import FmsModuleListPage from "@/components/fms-module-list/FmsModuleListPage.vu import FmsTree from "@/components/FmsTree.vue"; import { escapeSqlText } from "@/components/fms-module-list/moduleListUtils"; import { loadDataApi, nextIdApi, pageDataApi, saveObjectApi } from "@/services/api"; +import { usePermissionStore } from "@/stores/permissions"; import { buildTree, sortTree } from "@/utils/tree"; +const OTHERCOMPANY_MODULE_CODE = "v_b_othercompany"; const ALL_CATEGORIES_KEY = "__fms_tree_root__"; const categories = ref([]); const categoryLoading = ref(false); const selectedCategoryKey = ref(ALL_CATEGORIES_KEY); const expandedCategoryKeys = ref([ALL_CATEGORIES_KEY]); +const permissionStore = usePermissionStore(); +const canCreateRow = computed(() => permissionStore.canPower(OTHERCOMPANY_MODULE_CODE, "create")); +const canUpdateRow = computed(() => permissionStore.canPower(OTHERCOMPANY_MODULE_CODE, "update")); +const canDeleteRow = computed(() => permissionStore.canPower(OTHERCOMPANY_MODULE_CODE, "delete")); + +import { useRouter } from "vue-router"; + +const moduleListRef = ref(null); +const selectedRowKeys = ref([]); +const dirtyCount = ref(0); +const router = useRouter(); + +const rowSelection = computed(() => ({ + selectedRowKeys: selectedRowKeys.value, + onChange: (keys) => { + selectedRowKeys.value = keys; + }, +})); + const categoryById = computed( () => new Map(categories.value.map((item) => [String(item.b_id), item])), ); @@ -368,6 +389,36 @@ async function confirmDeleteCategory(node) { }); } +// ── 新增 / 批量删除 ── +function goCreate() { + if (canCreateRow.value) { + router.push({ name: "base-othercompany-detail", query: { mode: "create" } }); + } +} + +function confirmBatchDelete() { + if (!canDeleteRow.value || !selectedRowKeys.value.length) { + message.warning("请先选择要删除的记录"); + return; + } + Modal.confirm({ + title: `确定删除选中的 ${selectedRowKeys.value.length} 条记录?`, + content: "此操作不可恢复", + okText: "删除", + cancelText: "取消", + okButtonProps: { danger: true }, + onOk: async () => { + try { + await moduleListRef.value?.deleteSelected?.(selectedRowKeys.value); + selectedRowKeys.value = []; + dirtyCount.value = 0; + } finally { + // noop + } + }, + }); +} + onMounted(() => { loadCategories(); }); @@ -396,10 +447,28 @@ onMounted(() => {
+ :row-selection="rowSelection" + > + +