实现上面列表勾选,点击确认按钮,到下面列表
![在这里插入图片描述](https://img-blog.csdnimg.cn/2ccfcce11cc44910b3429b58dd1f7fa0.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L1N1bnNoaW5lZGFkYQ==,size_16,color_FFFFFF,t_70)
点击人员设置按钮出现弹窗
<a-table
:columns="columns"
:data-source="searchForm.tableData"
:pagination="pagination"
@change="handleTableChange"
:loading="tableLoading"
rowKey="id"
:scroll="{ x: 'max-content', y: 500 }"
>
<template #index="{ index }">
{
{
index + 1 }}
</template>
<template #action="{ record }">
<a href="javascript:void(0)" @click="editData(record)">修改</a>
<a href="javascript:void(0)" @click="delData(record)">删除</a>
<a-dropdown :trigger="['hover']">
<a class="ant-dropdown-link" @click="(e) => e.preventDefault()">
更多 <DownOutlined />
</a>
<template #overlay>
<a-menu>
<a-menu-item>
<a href="javascript:void(0)" @click="detailData(record)"
>详情</a
>
</a-menu-item>
<!-- <a-menu-item>
<a
href="javascript:void(0)"
@click="detailDataMember(record)"
>单位成员设置</a
>
</a-menu-item> -->
<a-menu-item>
<a
href="javascript:void(0)"
@click="detailDataMemberPeople(record)"
>人员设置</a
>
</a-menu-item>
</a-menu>
</template>
</a-dropdown>
</template>
</a-table>
弹窗内容 html
<a-modal
title="人员设置"
v-model:visible="visiblePeople"
:confirm-loading="confirmLoadingPeople"
:destroyOnClose="true"
:maskClosable="false"
width="70%"
:footer="null"
:afterClose="afterClosePeople"
class="modelDialogGroupPeople"
>
<a-form layout="inline" :model="searchFormPeople">
<a-row style="padding-bottom: 10px">
<a-col :span="18">
<a-row>
<a-col :span="8">
<a-form-item label="机构成员:">
<a-input
v-model:value="searchFormPeople.personName"
placeholder="请输入姓名"
>
</a-input>
</a-form-item>
</a-col>
<a-col :span="8">
<a-form-item label="行政机构:">
<a-input
v-model:value="searchFormPeople.administrativeOrgName"
placeholder="请输入行政机构"
>
</a-input>
</a-form-item>
</a-col>
</a-row>
</a-col>
<a-col
:span="6"
style="display: flex; justify-content: flex-end; flex-wrap: wrap"
>
<a-form-item style="width: auto">
<a-button type="primary" @click="searchPeople">查询</a-button>
</a-form-item>
</a-col>
</a-row>
</a-form>
<a-table
:columns="columnsPeople"
:data-source="searchFormPeople.tableData"
:pagination="paginationPeople"
@change="handleTableChangePeople"
:loading="searchFormPeople.tablePeopleLoading"
:row-selection="{
selectedRowKeys: searchFormPeople.selectedRowKeys,
onChange: onSelectChange,
}"
rowKey="id"
>
<template #index="{ index }">
{
{
index + 1 }}
</template>
</a-table>
<div style="padding: 20px 0">
<a-button type="primary" @click="submitModal" style="margin-left: 20px"
>确认选择</a-button
>
</div>
<a-form layout="inline" :model="searchFormPeople">
<a-row style="padding-top: 10px">
<a-col :span="20">
<a-row>
<a-col :span="8">
<a-form-item label="已选成员:"> </a-form-item>
</a-col>
</a-row>
</a-col>
</a-row>
</a-form>
<a-table
:columns="columnsPeopleSelect"
:data-source="searchFormPeople.principTableData"
:pagination="false"
:loading="searchFormPeople.tablePeopleLoading"
rowKey="id"
>
<template #index="{ index }">{
{
index + 1 }}</template>
<template #action="{ record, index }">
<a href="javascript:void(0)" @click="removeList(record, index)"
>删除</a
>
</template>
</a-table>
<div class="footButton">
<a-button type="primary" @click="submit"> 提交 </a-button>
<a-button style="margin-left: 10px" @click="afterClosePeople">
取消
</a-button>
</div>
</a-modal>
js
let visiblePeople = ref(false)
let confirmLoadingPeople = ref(false)
const afterClosePeople = () => {
visiblePeople.value = false
searchFormPeople.selectedRowKeys = []
searchFormPeople.id = ""
searchFormPeople.tableData = []
searchFormPeople.tableDataSelect = []
searchFormPeople.tablePeopleLoading = false
searchFormPeople.personName = ""
searchFormPeople.administrativeOrgName = ""
searchFormPeople.current = 1
searchFormPeople.size = 10
paginationPeople.current = 1;
paginationPeople.pageSize = 10;
}
const detailDataMemberPeople = (record) => {
visiblePeople.value = true
searchFormPeoples.id = record.id
getAdministrativeByCondition('1')
getTemporaryCommandCenterPersonDtoList(record)
}
const columnsPeople = columnsPeoples
const columnsPeopleSelect = columnsPeopleSelects
const searchFormPeople = reactive(searchFormPeoples)
const paginationPeople = reactive(paginationPeoples)
const searchPeople = () => {
getAdministrativeByCondition('2')
}
const getAdministrativeByCondition = (type) => {
searchFormPeople.tablePeopleLoading = true
post(API.resource.getAdministrativeByCondition, {
params: {
id: searchFormPeoples.id,
personName: searchFormPeoples.personName,
administrativeOrgName: searchFormPeoples.administrativeOrgName
}
})
.then((res) => {
searchFormPeople.tableData = res.data.filter(item => {
item.isEdit = false
return !item.personSelected
})
if (type === '1') {
searchFormPeople.tableDataSelect = res.data.filter(item => {
item.isEdit = false
return item.personSelected
})
}
console.log(searchFormPeople)
searchFormPeople.tablePeopleLoading = false
})
.catch((res) => {
searchFormPeople.tablePeopleLoading = false
message.error(res);
});
}
const handleTableChangePeople = (paginationing) => {
console.log("分页")
paginationPeople.current = paginationing.current;
paginationPeople.pageSize = paginationing.pageSize;
searchFormPeople.current = paginationing.current;
searchFormPeople.size = paginationing.pageSize;
}
const onSelectChange = (selectedRowKeys, b) => {
searchFormPeople.selectedRowKeys = selectedRowKeys;
searchFormPeoples.selectTable = b
if (searchFormPeople.principTableData.length > selectedRowKeys.length) {
let id = ""
searchFormPeople.principTableData.forEach(item => {
if (selectedRowKeys.some(itms => {
return item.id === itms
})) {
} else {
id = item.id
}
})
console.log(id, '12idiididid')
console.log(searchFormPeoples.selectTable, "0000000000000000000000000000000000")
}
searchFormPeople.principTableData.forEach(item => {
selectedRowKeys.push(item.id)
console.log(item.id, 'item.id')
console.log(selectedRowKeys, 'itms')
})
}
const submitModal = () => {
if (searchFormPeoples.selectTable.length > 0) {
searchFormPeople.principTableData = searchFormPeoples.selectTable
} else {
searchFormPeople.principTableData = []
}
}
const removeList = (record, index) => {
console.log(record, index)
let list = []
searchFormPeople.selectedRowKeys.forEach(otem => {
if (otem !== record.id) {
list.push(otem)
}
})
searchFormPeople.selectedRowKeys = list
searchFormPeople.principTableData.splice(index, 1)
}
const spinning = ref(false)
const submit = () => {
let list = []
searchFormPeople.principTableData.forEach(item => {
list.push({
id: item.id,
mobilePhone: item.mobilePhone,
name: item.name,
officePhone: item.officePhone,
post: item.post,
})
})
spinning.value = true
post(API.resource.addAndEditTemporaryCommandCenterPersonDto, {
data: {
listMap: list
},
params: {
temporaryCommandCenterId: searchFormPeoples.id
}
})
.then(() => {
spinning.value = false
message.success("保存成功")
afterClosePeople()
})
.catch((res) => {
spinning.value = false
message.error(res);
});
}
const getTemporaryCommandCenterPersonDtoList = (record) => {
spinning.value = true
post(API.resource.getTemporaryCommandCenterPersonDtoList, {
params: {
temporaryCommandCenterId: record.id
}
})
.then((res) => {
spinning.value = false
console.log(res.data)
searchFormPeople.principTableData = res.data
let list = []
searchFormPeople.principTableData.forEach(item => {
list.push(item.id)
})
searchFormPeople.selectedRowKeys = list
})
.catch((res) => {
spinning.value = false
message.error(res);
});
}
JSON.JS数据源
export const columnsPeoples = [{
title: '序号',
dataIndex: 'index',
key: 'id',
slots: {
customRender: 'index'
},
ellipsis: true,
align: 'center',
width: "120px"
},
{
title: '姓名',
dataIndex: 'name',
key: 'id',
ellipsis: true,
align: 'center',
},
{
title: '移动电话',
dataIndex: 'mobilePhone',
key: 'id',
ellipsis: true,
align: 'center',
},
{
title: '办公电话',
dataIndex: 'officePhone',
key: 'id',
ellipsis: true,
align: 'center',
},
{
title: '所属行政机构',
dataIndex: 'administrativeOrgName',
key: 'id',
ellipsis: true,
align: 'center',
},
{
title: '职位',
dataIndex: 'post',
key: 'id',
ellipsis: true,
align: 'center',
}
]
export let searchFormPeoples = {
id: "",
tableData: [],
selectedRowKeys: [],
tablePeopleLoading: false,
personName: "",
administrativeOrgName: "",
current: 1,
size: 10,
tableDataSelect: [],
selectTable: [],
principTableData: []
}
export const paginationPeoples = {
total: 0,
pageSize: 10,
showSizeChanger: true,
pageSizeOptions: ["10", "20", "50", "100"],
showTotal: total => `共有 ${
total} 条数据`,
}
export const columnsPeopleSelects = [
{
title: '序号',
dataIndex: 'index',
key: 'id',
slots: {
customRender: 'index'
},
ellipsis: true,
align: 'center',
width: "120px"
},
{
title: '姓名',
dataIndex: 'name',
key: 'id',
ellipsis: true,
align: 'center',
},
{
title: '移动电话',
dataIndex: 'mobilePhone',
key: 'id',
ellipsis: true,
align: 'center',
},
{
title: '办公电话',
dataIndex: 'officePhone',
key: 'id',
ellipsis: true,
align: 'center',
},
{
title: '职位',
dataIndex: 'post',
key: 'id',
ellipsis: true,
align: 'center',
}, {
title: '操作',
dataIndex: 'action',
key: 'id',
slots: {
customRender: 'action'
},
ellipsis: true,
align: 'center',
},
]