From c7b72680671cea73b5e10255d6ec91827b09e3ff Mon Sep 17 00:00:00 2001 From: zhangwei <1504152376@qq.com> Date: 星期五, 25 七月 2025 17:16:52 +0800 Subject: [PATCH] '-' --- Web/src/views/Customer/fBS_EnterpriseType/index.vue | 210 +++++++++++++++++++++++++--------------------------- 1 files changed, 100 insertions(+), 110 deletions(-) diff --git a/Web/src/views/Customer/fBS_EnterpriseType/index.vue b/Web/src/views/Customer/fBS_EnterpriseType/index.vue index 6d421a6..e92ed6c 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 => { + data.forEach(item => { + if (item.child) { + item.hasChildren = true; + } + }); + +}; +const processNodesWithChildrenCheck = (nodes) => { + + // 纭繚杈撳叆鏄暟缁� + 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,42 +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> + </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