mirror of
https://codeup.aliyun.com/67762337eccfc218f6110e0e/vue/fe-manage.git
synced 2025-12-11 03:46:45 +08:00
案例选所有人
This commit is contained in:
@@ -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)
|
||||||
@@ -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;
|
||||||
|
|||||||
Reference in New Issue
Block a user