案例选所有人

This commit is contained in:
nisen
2023-09-13 11:31:34 +08:00
parent df3db82902
commit 77121a63d2
2 changed files with 77 additions and 47 deletions

View File

@@ -33,4 +33,6 @@ export const caseRecommend = (data) => http.post('/xboe/m/boe/cases/recommend/la
}) })
//案例推荐选人的查询列表 //案例推荐选人的查询列表
export const userList = (data) => httpUserbase.post('/user/list', data) export const userList = (data) => httpUserbase.post('/user/list', data)
//案例查询组织所有人数
export const getOrgUsers = (data) => httpUserbase.post('/user/getOrgUsers', data)

View File

@@ -98,15 +98,17 @@
</a-form-item> </a-form-item>
</div> </div>
<div class="boeTree"> <div class="boeTree">
<a-tree v-model:selectedKeys="selectedOrgKeys" <a-spin :spinning="orgLoding" tip="Loding...">
:tree-data="searchOrgName.keyword ? orgData : treeOrgData" @select="onOrgSelectChange" <a-tree v-model:selectedKeys="selectedOrgKeys"
:loading="orgOrgLoading" :load-data="onLoadOrgData" :fieldNames="{ :tree-data="searchOrgName.keyword ? orgData : treeOrgData" @select="onOrgSelectChange"
children: 'treeChildList', :loading="orgOrgLoading" :load-data="onLoadOrgData" :fieldNames="{
key: 'id', children: 'treeChildList',
title: 'name', key: 'id',
value: 'name', title: 'name',
}" row-key="id" :row-selection="orgRowSelection" multiple> value: 'name',
</a-tree> }" row-key="id" :row-selection="orgRowSelection" multiple>
</a-tree>
</a-spin>
</div> </div>
</div> </div>
</a-tab-pane> </a-tab-pane>
@@ -129,7 +131,7 @@
</div> </div>
<div class="tableBox tabb"> <div class="tableBox tabb">
<BaseTable ref="auditTableRef" :columns="audiColums" :url="AUDIENCE_LIST" page-key="pageNo" <BaseTable ref="auditTableRef" :columns="audiColums" :url="AUDIENCE_LIST" page-key="pageNo"
v-model:params="audienceName" :request="useTotalPage" v-model:selectedRows="auditSelectRows" v-model:params="audienceName" :request="useTotalPage" v-model:selectedRows="auditSelectRows"
v-model:selectedRowKeys="auditSelectRowKeys" type="checkbox"></BaseTable> v-model:selectedRowKeys="auditSelectRowKeys" type="checkbox"></BaseTable>
</div> </div>
</div> </div>
@@ -311,12 +313,12 @@
<script setup> <script setup>
import { message } from "ant-design-vue"; import { message } from "ant-design-vue";
import { computed, defineEmits, defineProps, ref, watch, onMounted, reactive, nextTick } from "vue"; import { computed, defineEmits, defineProps, ref, watch, onMounted, reactive, nextTick } from "vue";
import {useNewRowsPageNoInit, useBoeApiAuditPage,request,useRequest ,useTotalPage } from "@/api/request"; import { useNewRowsPageNoInit, useBoeApiAuditPage, request, useRequest, useTotalPage } from "@/api/request";
import dialog from "@/utils/dialog"; import dialog from "@/utils/dialog";
import {AUDIENCE_LIST, ORG_CHILD_LIST, ORG_LIST, STUDENT_LIST, USER_LIST_PAGE} from "@/api/apis"; import { AUDIENCE_LIST, ORG_CHILD_LIST, ORG_LIST, STUDENT_LIST, USER_LIST_PAGE } from "@/api/apis";
import BaseTable from "@/components/common/BaseTable"; import BaseTable from "@/components/common/BaseTable";
// 推荐接口 // 推荐接口
import { caseRecommend, userList } from '@/api/case' import { caseRecommend, userList, getOrgUsers } from '@/api/case'
const emit = defineEmits({}); const emit = defineEmits({});
const props = defineProps({ const props = defineProps({
@@ -587,7 +589,6 @@ const closeDrawer = () => {
selectedOrgKeys.value = []; selectedOrgKeys.value = [];
counts.value = 0 counts.value = 0
keysId.value = []
}; };
function searchAudi() { function searchAudi() {
@@ -636,6 +637,7 @@ function stuStuOrgSelect(e) {
} }
const selectedOrgKeys = ref([]); const selectedOrgKeys = ref([]);
const orgLoding = ref(false)
watch(selectedOrgKeys, () => { watch(selectedOrgKeys, () => {
// console.log("selectedKeys", selectedOrgKeys); // console.log("selectedKeys", selectedOrgKeys);
@@ -643,7 +645,7 @@ watch(selectedOrgKeys, () => {
function orgDel(i) { function orgDel(i) {
// 移除的时候删除人数 // 移除的时候删除人数
listData.departId = deptList.value[i].id listData.organizationId = deptList.value[i].id
httpList(false) httpList(false)
orgSelectKeys.value = orgSelectKeys.value.filter(e => e !== deptList.value[i].id); orgSelectKeys.value = orgSelectKeys.value.filter(e => e !== deptList.value[i].id);
selectedOrgKeys.value.splice(i, 1); selectedOrgKeys.value.splice(i, 1);
@@ -652,45 +654,72 @@ function orgDel(i) {
// 传递的参数 // 传递的参数
const listData = reactive({ const listData = reactive({
departId: '', // departId: '',
organizationId: '',
keyword: "", keyword: "",
pageNo: 1, pageNo: 1,
pageSize: 10, pageSize: 1,
}) })
//计算组织人数
const keysId = ref([])
const counts = ref(0) const counts = ref(0)
const addOrMinus = ref(false) //记录所有选中列的对应人数
const addObjOrgId = ref({})
const onOrgSelectChange = async (e, l) => { const onOrgSelectChange = async (e, l) => {
const uniqueElements = keysId.value.filter(element => !e.includes(element)) console.log(l);
.concat(e.filter(element => !keysId.value.includes(element))); console.log(e);
selectedOrgKeys.value = e;
deptList.value = l.selectedNodes
if (keysId.value.length < e.length) { listData.organizationId = l.node.id
addOrMinus.value = true let parentList = l.node.parent ? l.node.parent.nodes : []
} else { if (parentList.length > 0 && parentList.some((item) => e.includes(item.id))) {
addOrMinus.value = false selectedOrgKeys.value = e.slice(0, -1)
deptList.value = l.selectedNodes.slice(0, -1)
console.log(selectedOrgKeys);
return message.warning('已选中父节点,请取消父节点')
} }
keysId.value = e let treeChildList = l.node.treeChildList ? l.node.treeChildList : []
listData.departId = uniqueElements[0] httpList(l.selected, treeChildList)
orgRowSelection.value = e;
deptList.value = l.selectedNodes;
httpList(addOrMinus.value)
} }
const httpList = (addOrMinus) => { // 记录所有当时选中子列表的id
userList(listData).then((res) => { const selectChildrenId = ref([])
if (res.status == 200) { //递归取消所有子列表数据
if (!addOrMinus) { const recursionTreeList = (treeChildList) => {
counts.value -= res.data.result.total console.log('递归');
} else { treeChildList.forEach((element) => {
counts.value += res.data.result.total if (selectedOrgKeys.value.indexOf(element.id) > -1) {
} selectChildrenId.value.push(element.id)
selectedOrgKeys.value.splice(selectedOrgKeys.value.indexOf(element.id), 1)
deptList.value = deptList.value.filter((item) => item.id !== element.id)
} }
console.log(counts.value); if (!element.treeChildList) return
recursionTreeList(element.treeChildList)
}) })
} }
const httpList = (addOrMinus, treeChildList) => {
if (addOrMinus) {
recursionTreeList(treeChildList)
console.log(selectChildrenId.value);
orgLoding.value = true
getOrgUsers(listData).then((res) => {
if (res.status == 200) {
orgLoding.value = false
counts.value += res.data.result.total || 0
addObjOrgId.value = Object.assign(addObjOrgId.value, { [listData.organizationId]: res.data.result.total })
selectChildrenId.value.forEach((item) => {
counts.value -= (addObjOrgId.value[item] || 0)
})
selectChildrenId.value = []
console.log(counts.value, 'jia');
console.log(selectedOrgKeys.value, 'jia');
}
})
} else {
console.log(addObjOrgId.value[listData.organizationId]);
counts.value -= (addObjOrgId.value[listData.organizationId] || 0)
console.log(counts.value, 'JIAN');
console.log(selectedOrgKeys.value, 'JIAN');
}
}
const resetStu = () => { const resetStu = () => {
nameSearch.value.keyword = ""; nameSearch.value.keyword = "";
@@ -742,7 +771,7 @@ function handleDialogOk() {
console.log(props.id, '选择案例的id'); console.log(props.id, '选择案例的id');
console.log(stuSelectRows.value, '快速选人的id'); console.log(stuSelectRows.value, '快速选人的id');
console.log(count.value); console.log(count.value);
if(!count.value){ if (!count.value) {
return message.warning('请选择学员或组织') return message.warning('请选择学员或组织')
} }
handleStageOk(); handleStageOk();
@@ -750,7 +779,6 @@ function handleDialogOk() {
//清空计数,关闭弹窗 //清空计数,关闭弹窗
const clear = () => { const clear = () => {
counts.value = 0 counts.value = 0
keysId.value = []
state.recBtnvisible = false state.recBtnvisible = false
stageVisible.value = false; stageVisible.value = false;
visiable.value = false; visiable.value = false;