feat: 人员选择器增加组织机构全选
This commit is contained in:
@ -29,6 +29,12 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="user-select-box">
|
<div class="user-select-box">
|
||||||
|
<div class="select-depart-all" @click="selectAll">
|
||||||
|
<span>全选</span>
|
||||||
|
<div class="select-circle" :class="departAllSelected ? 'selected' : ''" v-if="!viewList">
|
||||||
|
<check-outlined v-if="departAllSelected" />
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
<SelectUserListV2 :multiple="multiple" :data="searchDepartMemberList" emptyDescription="暂无人员" @selectId="changeDepMemberSelect"></SelectUserListV2>
|
<SelectUserListV2 :multiple="multiple" :data="searchDepartMemberList" emptyDescription="暂无人员" @selectId="changeDepMemberSelect"></SelectUserListV2>
|
||||||
<div v-if="false" class="user-select-pagination">
|
<div v-if="false" class="user-select-pagination">
|
||||||
<a-pagination v-model:current="searchDepartMemberParams.limit" :pageSize="searchDepartMemberParams.size" :total="searchDepartMemberTotal" />
|
<a-pagination v-model:current="searchDepartMemberParams.limit" :pageSize="searchDepartMemberParams.size" :total="searchDepartMemberTotal" />
|
||||||
@ -75,6 +81,7 @@
|
|||||||
import { camelCaseString } from '/@/utils/stringUtil';
|
import { camelCaseString } from '/@/utils/stringUtil';
|
||||||
import { useUserStore } from '/@/store/modules/user';
|
import { useUserStore } from '/@/store/modules/user';
|
||||||
import { Icon } from '/@/components/Icon';
|
import { Icon } from '/@/components/Icon';
|
||||||
|
import { CheckOutlined } from '@ant-design/icons-vue';
|
||||||
|
|
||||||
const emits = defineEmits(['update:value', 'selectedId', 'change']);
|
const emits = defineEmits(['update:value', 'selectedId', 'change']);
|
||||||
const { t } = useI18n();
|
const { t } = useI18n();
|
||||||
@ -128,6 +135,7 @@
|
|||||||
let resetMemberList = [];
|
let resetMemberList = [];
|
||||||
const searchPlaceholder = '请输入姓名或工号搜索';
|
const searchPlaceholder = '请输入姓名或工号搜索';
|
||||||
const defaultDepts = ref('')
|
const defaultDepts = ref('')
|
||||||
|
const departAllSelected = ref(false)
|
||||||
if(props.onlyUserCompany) {
|
if(props.onlyUserCompany) {
|
||||||
const userStore = useUserStore();
|
const userStore = useUserStore();
|
||||||
const userInfo = userStore.getUserInfo;
|
const userInfo = userStore.getUserInfo;
|
||||||
@ -223,7 +231,22 @@
|
|||||||
});
|
});
|
||||||
const searchAllMemberTotal = ref(0);
|
const searchAllMemberTotal = ref(0);
|
||||||
const searchAllMemberList = ref([]);
|
const searchAllMemberList = ref([]);
|
||||||
|
|
||||||
|
watch(searchDepartMemberList, (val) => {
|
||||||
|
let allSelected = true
|
||||||
|
searchDepartMemberList.value.forEach(item => {
|
||||||
|
if(!item.selected) {
|
||||||
|
allSelected = false
|
||||||
|
}
|
||||||
|
})
|
||||||
|
if(!searchDepartMemberList.value.length) {
|
||||||
|
allSelected = false
|
||||||
|
}
|
||||||
|
departAllSelected.value = allSelected
|
||||||
|
},
|
||||||
|
{
|
||||||
|
deep: true
|
||||||
|
})
|
||||||
async function departChange(e) {
|
async function departChange(e) {
|
||||||
searchDepartMemberParams.value.departmentId = e.id;
|
searchDepartMemberParams.value.departmentId = e.id;
|
||||||
let res = await getUserList(searchDepartMemberParams.value);
|
let res = await getUserList(searchDepartMemberParams.value);
|
||||||
@ -260,6 +283,25 @@
|
|||||||
return await getUserPageListNew(params);
|
return await getUserPageListNew(params);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function selectAll() {
|
||||||
|
departAllSelected.value = !departAllSelected.value
|
||||||
|
if(departAllSelected.value) {
|
||||||
|
searchDepartMemberList.value.forEach(item => {
|
||||||
|
if(!item.selected) {
|
||||||
|
selectedMemberList.value.push(item)
|
||||||
|
}
|
||||||
|
item.selected = true
|
||||||
|
})
|
||||||
|
} else {
|
||||||
|
searchDepartMemberList.value.forEach(item => {
|
||||||
|
if(item.selected) {
|
||||||
|
selectedMemberList.value = selectedMemberList.value.filter(m => m.id !== item.id)
|
||||||
|
}
|
||||||
|
item.selected = false
|
||||||
|
})
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
function departCompleted() {
|
function departCompleted() {
|
||||||
treeLoading.value = false;
|
treeLoading.value = false;
|
||||||
}
|
}
|
||||||
@ -441,6 +483,34 @@
|
|||||||
height: 100%;
|
height: 100%;
|
||||||
display: flex;
|
display: flex;
|
||||||
flex-direction: column;
|
flex-direction: column;
|
||||||
|
.select-depart-all {
|
||||||
|
height: 30px;
|
||||||
|
padding-left: 14px;
|
||||||
|
padding-right: 21px;
|
||||||
|
padding-bottom: 5px;
|
||||||
|
display: flex;
|
||||||
|
justify-content: space-between;
|
||||||
|
align-items: center;
|
||||||
|
border-radius: 2px;
|
||||||
|
margin-top: 5px;
|
||||||
|
border-bottom: 1px solid #eaeaea;
|
||||||
|
color: #111111;
|
||||||
|
.select-circle {
|
||||||
|
width: 16px;
|
||||||
|
height: 16px;
|
||||||
|
border: 1px solid rgba(144, 147, 153, 0.7);
|
||||||
|
border-radius: 50%;
|
||||||
|
}
|
||||||
|
.selected {
|
||||||
|
border: none;
|
||||||
|
background-color: #5d9cec;
|
||||||
|
display: flex;
|
||||||
|
justify-content: center;
|
||||||
|
align-items: center;
|
||||||
|
color: white;
|
||||||
|
font-size: 10px
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
.user-select-title {
|
.user-select-title {
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user