🎨 优化文章和分类模块&新增banner

This commit is contained in:
2025-06-23 17:05:42 +08:00
parent 0ed234639c
commit 7b9a4f5dc1
10 changed files with 420 additions and 45 deletions

View File

@@ -49,8 +49,8 @@
>
<el-table-column v-if="props.multiple" type="selection" width="55" />
<el-table-column type="index" width="50" />
<el-table-column prop="nickName" label="用户名称" />
<el-table-column prop="userName" label="用户账号" />
<el-table-column prop="nick_name" label="用户名称" />
<el-table-column prop="phone" label="手机号" />
</el-table>
</ColumnItem>
<el-pagination
@@ -80,7 +80,7 @@
import {onMounted, ref, watch, nextTick } from 'vue'
import PmDialog from '@/components/PmDialog/pm-dialog.vue'
import ColumnItem from '@/components/columnItem/ColumnItem.vue'
import { getUserList } from '@/api/user.js'
import { getTechers } from '@/api/goods/index.js'
// import { listUser } from '@/api/system/user'
const treeRef = ref()
const props = defineProps({
@@ -134,7 +134,7 @@
let depClick = ref(false)
function getStaffList() {
loading.value = true
getUserList(queryParams.value)
getTechers(queryParams.value)
.then(async (res) => {
tabList.value = res.data.list
total.value = res.data.total
@@ -171,44 +171,41 @@
// getStaffList()
// }
function nodeClick(e) {
selectDept.value = e
if(!props.multiple) {
selectDept.value = e
}
}
function handleSelectionChange(selection) {
console.log(selection)
// 更新选中ID集合
selection.forEach((row) => selectedIds.value.add(row.ID))
if (props.multiple) {
if (!depClick.value) {
// This is a user interaction on the current page.
const selectedOnPageIds = new Set(selection.map(row => row.ID));
// 删除当前页取消选中的ID,前提是非点击部门或分页节点触发
if (!depClick.value) {
// 找出当前页需要删除的ID
unChoosed.value = []
if (selection.length > 0) {
selection = selection.map((item) => item.ID)
tabList.value.forEach((item) => {
if (!selection.includes(item.ID)) {
unChoosed.value.push(item.ID)
}
})
} else {
unChoosed.value = JSON.parse(JSON.stringify(tabList.value)).map((item) => item.ID)
// Iterate over all items on the current page to see what was selected or unselected.
tabList.value.forEach(rowOnPage => {
if (selectedOnPageIds.has(rowOnPage.ID)) {
selectedIds.value.add(rowOnPage.ID);
} else {
selectedIds.value.delete(rowOnPage.ID);
}
});
}
selectedIds.value.forEach((id) => {
if (unChoosed.value.includes(id)) {
selectedIds.value.delete(id)
}
})
choosedTableRows.value = Array.from(selectedIds.value)
.map((id) => [...tabList.value, ...choosedTableRows.value].find((r) => r.ID === id))
.filter(Boolean)
}
// 更新已选数据(使用过滤确保有效性)
choosedTableRows.value = Array.from(selectedIds.value)
.map((id) => [...tabList.value, ...choosedTableRows.value].find((r) => r.ID === id))
.filter(Boolean)
}
// function filterNode(value, data) {
// if (!value) return true
// return data.label.includes(value)
// }
function requireDiolag() {
emit('getRecipientInfo', props.multiple ? choosedTableRows.value : selectDept.value)
const dataToEmit = props.multiple ? choosedTableRows.value : selectDept.value;
if ((props.multiple && dataToEmit.length === 0) || (!props.multiple && !dataToEmit)) {
// Optional: show a message to the user
return;
}
emit('getRecipientInfo', dataToEmit)
dialoagVisible.value = false
}
defineExpose({