From 835c429a8c556e1af13beff919e7164bfccf7c6f Mon Sep 17 00:00:00 2001
From: username@email.com <yzy2002yzy@163.com>
Date: 星期一, 01 九月 2025 15:52:15 +0800
Subject: [PATCH] 新增 的接口
---
Web/src/views/Customer/fBS_EnterpriseType/index.vue | 213 +++++++++++++++++++++++++----------------------------
1 files changed, 100 insertions(+), 113 deletions(-)
diff --git a/Web/src/views/Customer/fBS_EnterpriseType/index.vue b/Web/src/views/Customer/fBS_EnterpriseType/index.vue
index 498101e..468bbef 100644
--- a/Web/src/views/Customer/fBS_EnterpriseType/index.vue
+++ b/Web/src/views/Customer/fBS_EnterpriseType/index.vue
@@ -8,6 +8,7 @@
import printDialog from '/@/views/system/print/component/hiprint/preview.vue'
import ModifyRecord from '/@/components/table/modifyRecord.vue';
import ImportData from "/@/components/table/importData.vue";
+import { chdir } from "node:process";
const fBS_EnterpriseTypeApi = useFBS_EnterpriseTypeApi();
const printDialogRef = ref();
@@ -30,31 +31,75 @@
descStr: 'descending', // 闄嶅簭鎺掑簭鐨勫叧閿瓧绗�
},
tableData: [],
+ tableDataCopy:[] //鎷疯礉
});
+const hasChildren = (data: any[]) => {
+ data.forEach(item => {
+ if (item.child) {
+ item.hasChildren = true;
+ }
+ });
+
+};
+const processNodesWithChildrenCheck = (nodes: any[]) => {
+
+ // 纭繚杈撳叆鏄暟缁�
+ if (!Array.isArray(nodes)) {
+ return [];
+ }
+
+ // 娣辨嫹璐濇暟缁勯伩鍏嶄慨鏀瑰師鏁版嵁
+ return nodes.map(node => {
+ // 澶嶅埗鑺傜偣
+ const newNode = { ...node };
+
+ // 妫�鏌ユ槸鍚︽湁瀛愯妭鐐�
+ const hasChild = Array.isArray(newNode.child) && newNode.child.length > 0;
+ newNode.hasChildren = hasChild;
+
+ // 濡傛灉鏈夊瓙鑺傜偣锛岄�掑綊澶勭悊瀛愯妭鐐�
+ if (hasChild) {
+ newNode.child = processNodesWithChildrenCheck(newNode.child);
+ }
+
+ return newNode;
+ });
+};
+const load = (node:any, treeNode:any,resolve:any) => {
+ console.log(node, treeNode,'node, resolve');
+
+ if( node.child) {
+ hasChildren(node.child);
+ return resolve(node.child);
+ } else {
+ return resolve([]);
+ }
+
+};
// 椤甸潰鍔犺浇鏃�
onMounted(async () => {
});
// 鏌ヨ鎿嶄綔
const handleQuery = async (params: any = {}) => {
- state.tableLoading = true;
- state.tableParams = Object.assign(state.tableParams, params);
- const result = await fBS_EnterpriseTypeApi.page(Object.assign(state.tableQueryParams, state.tableParams)).then(res => res.data.result);
+ const result = await fBS_EnterpriseTypeApi.tree().then(res => res.data.result);
state.tableParams.total = result?.total;
- state.tableData = result?.items ?? [];
+ state.tableData = result ?? [];
+ // hasChildren(state.tableData)
state.tableLoading = false;
};
-// 鍒楁帓搴�
-const sortChange = async (column: any) => {
- state.tableParams.field = column.prop;
- state.tableParams.order = column.order;
- await handleQuery();
-};
+
+handleQuery();
+const treeProps = reactive({
+ // checkStrictly: false,
+ children: 'child',
+ hasChildren: 'hasChildren'
+})
// 鍒犻櫎
-const delFBS_EnterpriseType = (row: any) => {
+const delFBS_ExRole = (row: any) => {
ElMessageBox.confirm(`纭畾瑕佸垹闄ゅ悧?`, "鎻愮ず", {
confirmButtonText: "纭畾",
cancelButtonText: "鍙栨秷",
@@ -66,86 +111,23 @@
}).catch(() => {});
};
-// 鎵归噺鍒犻櫎
-const batchDelFBS_EnterpriseType = () => {
- ElMessageBox.confirm(`纭畾瑕佸垹闄�${state.selectData.length}鏉¤褰曞悧?`, "鎻愮ず", {
- confirmButtonText: "纭畾",
- cancelButtonText: "鍙栨秷",
- type: "warning",
- }).then(async () => {
- await fBS_EnterpriseTypeApi.batchDelete(state.selectData.map(u => ({ id: u.id }) )).then(res => {
- ElMessage.success(`鎴愬姛鎵归噺鍒犻櫎${res.data.result}鏉¤褰昤);
- handleQuery();
- });
- }).catch(() => {});
-};
-
-// 瀵煎嚭鏁版嵁
-const exportFBS_EnterpriseTypeCommand = async (command: string) => {
- try {
- state.exportLoading = true;
- if (command === 'select') {
- const params = Object.assign({}, state.tableQueryParams, state.tableParams, { selectKeyList: state.selectData.map(u => u.id) });
- await fBS_EnterpriseTypeApi.exportData(params).then(res => downloadStreamFile(res));
- } else if (command === 'current') {
- const params = Object.assign({}, state.tableQueryParams, state.tableParams);
- await fBS_EnterpriseTypeApi.exportData(params).then(res => downloadStreamFile(res));
- } else if (command === 'all') {
- const params = Object.assign({}, state.tableQueryParams, state.tableParams, { page: 1, pageSize: 99999999 });
- await fBS_EnterpriseTypeApi.exportData(params).then(res => downloadStreamFile(res));
- }
- } finally {
- state.exportLoading = false;
- }
-}
-
-handleQuery();
</script>
<template>
<div class="fBS_EnterpriseType-container" v-loading="state.exportLoading">
- <el-card shadow="hover" :body-style="{ paddingBottom: '0' }">
+ <el-card shadow="hover" :body-style="{ paddingBottom: '0' }">
<el-form :model="state.tableQueryParams" ref="queryForm" labelWidth="90">
- <el-row>
- <el-col :xs="24" :sm="12" :md="12" :lg="8" :xl="4" class="mb10">
- <el-form-item label="鍏抽敭瀛�">
- <el-input v-model="state.tableQueryParams.keyword" clearable placeholder="璇疯緭鍏ユā绯婃煡璇㈠叧閿瓧"/>
- </el-form-item>
- </el-col>
- <el-col :xs="24" :sm="12" :md="12" :lg="8" :xl="4" class="mb10" v-if="state.showAdvanceQueryUI">
+ <el-row>
+ <!-- <el-col :xs="24" :sm="12" :md="12" :lg="8" :xl="4" class="mb10">
<el-form-item label="鍚嶇О">
- <el-input v-model="state.tableQueryParams.name" clearable placeholder="璇疯緭鍏ュ悕绉�"/>
+ <el-input v-model="state.tableQueryParams.keyword" clearable placeholder="璇疯緭鍏ュ悕绉�"/>
</el-form-item>
- </el-col>
- <el-col :xs="24" :sm="12" :md="12" :lg="8" :xl="4" class="mb10" v-if="state.showAdvanceQueryUI">
- <el-form-item label="浠g爜">
- <el-input v-model="state.tableQueryParams.code" clearable placeholder="璇疯緭鍏ヤ唬鐮�"/>
- </el-form-item>
- </el-col>
- <el-col :xs="24" :sm="12" :md="12" :lg="8" :xl="4" class="mb10" v-if="state.showAdvanceQueryUI">
- <el-form-item label="鐖�">
- <el-input-number v-model="state.tableQueryParams.parentId" clearable placeholder="璇疯緭鍏ョ埗"/>
- </el-form-item>
- </el-col>
+ </el-col> -->
<el-col :xs="24" :sm="12" :md="12" :lg="8" :xl="4" class="mb10">
- <el-form-item >
+ <el-form-item>
<el-button-group style="display: flex; align-items: center;">
- <el-button type="primary" icon="ele-Search" @click="handleQuery" v-auth="'fBS_EnterpriseType:page'" v-reclick="1000"> 鏌ヨ </el-button>
- <el-button icon="ele-Refresh" @click="() => state.tableQueryParams = {}"> 閲嶇疆 </el-button>
- <el-button icon="ele-ZoomIn" @click="() => state.showAdvanceQueryUI = true" v-if="!state.showAdvanceQueryUI" style="margin-left:5px;"> 楂樼骇鏌ヨ </el-button>
- <el-button icon="ele-ZoomOut" @click="() => state.showAdvanceQueryUI = false" v-if="state.showAdvanceQueryUI" style="margin-left:5px;"> 闅愯棌 </el-button>
- <el-button type="danger" style="margin-left:5px;" icon="ele-Delete" @click="batchDelFBS_EnterpriseType" :disabled="state.selectData.length == 0" v-auth="'fBS_EnterpriseType:batchDelete'"> 鍒犻櫎 </el-button>
- <el-button type="primary" style="margin-left:5px;" icon="ele-Plus" @click="editDialogRef.openDialog(null, '鏂板浼佷笟绫婚厤缃〃')" v-auth="'fBS_EnterpriseType:add'"> 鏂板 </el-button>
- <el-dropdown :show-timeout="70" :hide-timeout="50" @command="exportFBS_EnterpriseTypeCommand">
- <el-button type="primary" style="margin-left:5px;" icon="ele-FolderOpened" v-reclick="20000" v-auth="'fBS_EnterpriseType:export'"> 瀵煎嚭 </el-button>
- <template #dropdown>
- <el-dropdown-menu>
- <el-dropdown-item command="select" :disabled="state.selectData.length == 0">瀵煎嚭閫変腑</el-dropdown-item>
- <el-dropdown-item command="current">瀵煎嚭鏈〉</el-dropdown-item>
- <el-dropdown-item command="all">瀵煎嚭鍏ㄩ儴</el-dropdown-item>
- </el-dropdown-menu>
- </template>
- </el-dropdown>
- <el-button type="warning" style="margin-left:5px;" icon="ele-MostlyCloudy" @click="importDataRef.openDialog()" v-auth="'fBS_EnterpriseType:import'"> 瀵煎叆 </el-button>
+ <el-button type="primary" style="margin-left:5px;" icon="ele-Plus" @click="editDialogRef.openDialog(null,state.tableData, '鏂板浼佷笟鍒嗙被')" v-auth="'fBS_EnterpriseType:add'"> 鏂板 </el-button>
+ <el-button type="warning" style="margin-left:5px;" icon="ele-MostlyCloudy"
+ @click="importDataRef.openDialog()" v-auth="'fBS_EnterpriseType:import'"> 瀵煎叆 </el-button>
</el-button-group>
</el-form-item>
</el-col>
@@ -153,45 +135,50 @@
</el-form>
</el-card>
<el-card class="full-table" shadow="hover" style="margin-top: 5px">
- <el-table :data="state.tableData" @selection-change="(val: any[]) => { state.selectData = val; }" style="width: 100%" v-loading="state.tableLoading" tooltip-effect="light" row-key="id" @sort-change="sortChange" border>
- <el-table-column type="selection" width="40" align="center" v-if="auth('fBS_EnterpriseType:batchDelete') || auth('fBS_EnterpriseType:export')" />
- <el-table-column type="index" label="搴忓彿" width="55" align="center"/>
- <el-table-column prop='name' label='鍚嶇О' show-overflow-tooltip />
- <el-table-column prop='code' label='浠g爜' show-overflow-tooltip />
- <el-table-column prop='parentId' label='鐖�' show-overflow-tooltip />
- <el-table-column label="淇敼璁板綍" width="100" align="center" show-overflow-tooltip>
- <template #default="scope">
- <ModifyRecord :data="scope.row" />
- </template>
- </el-table-column>
+ <el-table
+ :data="state.tableData"
+ style="width: 100%"
+ row-key="id"
+ border
+ lazy
+ :load="load"
+ :tree-props="treeProps"
+ >
+ <el-table-column type="selection" width="55" />
+ <el-table-column prop="name" label="鍚嶇О" />
+ <el-table-column prop="code" label="缂栫爜" />
+ <el-table-column prop="description" label="鎻忚堪" />
<el-table-column label="鎿嶄綔" width="140" align="center" fixed="right" show-overflow-tooltip v-if="auth('fBS_EnterpriseType:update') || auth('fBS_EnterpriseType:delete')">
<template #default="scope">
- <el-button icon="ele-Edit" size="small" text type="primary" @click="editDialogRef.openDialog(scope.row, '缂栬緫浼佷笟绫婚厤缃〃')" v-auth="'fBS_EnterpriseType:update'"> 缂栬緫 </el-button>
- <el-button icon="ele-Delete" size="small" text type="primary" @click="delFBS_EnterpriseType(scope.row)" v-auth="'fBS_EnterpriseType:delete'"> 鍒犻櫎 </el-button>
+ <el-button icon="ele-Edit" size="small" text type="primary" @click="editDialogRef.openDialog(scope.row, state.tableData,'缂栬緫')" v-auth="'fBS_EnterpriseType:update'"> 缂栬緫 </el-button>
+ <el-button icon="ele-Delete" size="small" text type="primary" @click="delFBS_ExRole(scope.row)" v-auth="'fBS_EnterpriseType:delete'"> 鍒犻櫎 </el-button>
</template>
</el-table-column>
</el-table>
- <el-pagination
- v-model:currentPage="state.tableParams.page"
- v-model:page-size="state.tableParams.pageSize"
- @size-change="(val: any) => handleQuery({ pageSize: val })"
- @current-change="(val: any) => handleQuery({ page: val })"
- layout="total, sizes, prev, pager, next, jumper"
- :page-sizes="[10, 20, 50, 100, 200, 500]"
- :total="state.tableParams.total"
- size="small"
- background />
- <ImportData ref="importDataRef" :import="fBS_EnterpriseTypeApi.importData" :download="fBS_EnterpriseTypeApi.downloadTemplate" v-auth="'fBS_EnterpriseType:import'" @refresh="handleQuery"/>
- <printDialog ref="printDialogRef" :title="'鎵撳嵃浼佷笟绫婚厤缃〃'" @reloadTable="handleQuery" />
+ </el-card>
+ <!-- <el-card>
+ <el-table :data="state.tableData" lazy :tree-props="treeProps" row-key="id" :load="load">
+ <el-table-column type="selection" width="55" />
+ <el-table-column prop="name" label="鍚嶇О" />
+ <el-table-column prop="code" label="缂栫爜" />
+ <el-table-column prop="description" label="鎻忚堪" />
+ <el-table-column label="鎿嶄綔" width="140" align="center" fixed="right" show-overflow-tooltip v-if="auth('fBS_EnterpriseType:update') || auth('fBS_EnterpriseType:delete')">
+ <template #default="scope">
+ <el-button icon="ele-Edit" size="small" text type="primary" @click="editDialogRef.openDialog(scope.row, state.tableData,'缂栬緫')" v-auth="'fBS_EnterpriseType:update'"> 缂栬緫 </el-button>
+ <el-button icon="ele-Delete" size="small" text type="primary" @click="delFBS_ExRole(scope.row)" v-auth="'fBS_EnterpriseType:delete'"> 鍒犻櫎 </el-button>
+ </template>
+ </el-table-column>
+
+ </el-table>
<editDialog ref="editDialogRef" @reloadTable="handleQuery" />
- </el-card>
+ </el-card> -->
</div>
- <div>
-
- </div>
+
</template>
<style scoped>
-:deep(.el-input), :deep(.el-select), :deep(.el-input-number) {
+:deep(.el-input),
+:deep(.el-select),
+:deep(.el-input-number) {
width: 100%;
}
</style>
\ No newline at end of file
--
Gitblit v1.9.1