mirror of
https://codeup.aliyun.com/67762337eccfc218f6110e0e/vue/fe-manage.git
synced 2025-12-13 04:46:46 +08:00
-- 项目创建修改
This commit is contained in:
104
src/components/project/ProjectManager.vue
Normal file
104
src/components/project/ProjectManager.vue
Normal file
@@ -0,0 +1,104 @@
|
||||
<template>
|
||||
<a-select
|
||||
v-model:value="managerArray"
|
||||
placeholder="请选择项目经理"
|
||||
:filterOption="false"
|
||||
style="width: 100%"
|
||||
:options="options"
|
||||
allowClear
|
||||
showSearch
|
||||
mode="multiple"
|
||||
:disabled="disabled"
|
||||
@popupScroll="memberScroll"
|
||||
@search="searchMember"
|
||||
@change="change"
|
||||
>
|
||||
<template v-if="loading" #notFoundContent>
|
||||
<a-spin size="small"/>
|
||||
</template>
|
||||
</a-select>
|
||||
</template>
|
||||
<script>
|
||||
import {reactive, toRefs, watch} from "vue";
|
||||
import {scrollLoad} from "@/api/method";
|
||||
import * as api1 from "@/api/index1";
|
||||
|
||||
export default {
|
||||
name: "ProjectClass",
|
||||
|
||||
props: {
|
||||
value: {
|
||||
type: Number,
|
||||
},
|
||||
name: {
|
||||
type: Number,
|
||||
},
|
||||
disabled: {
|
||||
type: Boolean,
|
||||
default: false
|
||||
},
|
||||
},
|
||||
setup(props, ctx) {
|
||||
const state = reactive({
|
||||
options: [],
|
||||
managerArray: [],
|
||||
memberParam: {keyWord: '', pageNo: 1, pageSize: 10},
|
||||
loading: false,
|
||||
init: false
|
||||
});
|
||||
|
||||
watch(() => state.memberParam, getMember)
|
||||
watch(() => props.value, init)
|
||||
|
||||
function getMember() {
|
||||
state.loading = true
|
||||
api1.getMemberInfo(state.memberParam).then((res) => {
|
||||
const list = res.data.data.rows.filter(e => !props.value?.includes(e.id + '')).map(e => ({
|
||||
label: e.realName,
|
||||
value: e.id
|
||||
}));
|
||||
state.options.push(...list)
|
||||
state.loading = false
|
||||
});
|
||||
|
||||
}
|
||||
|
||||
const memberScroll = (e) => {
|
||||
let num = scrollLoad(e);
|
||||
if (num === 2) {
|
||||
// 如果滑到底部,则加载下一页
|
||||
state.memberParam.pageNo++;
|
||||
}
|
||||
};
|
||||
|
||||
//搜索学员
|
||||
const searchMember = (keyWord) => {
|
||||
keyWord && (state.memberParam = {keyWord, pageNo: 1, pageSize: 10});
|
||||
};
|
||||
|
||||
function init() {
|
||||
if (props.value && props.name) {
|
||||
const arrManager = props.name.split(',')
|
||||
const arrManagerId = props.value.split(',')
|
||||
state.managerArray = arrManagerId
|
||||
state.options = arrManager.map((e, i) => ({label: e, value: arrManagerId[i]}))
|
||||
state.init = true
|
||||
getMember()
|
||||
}
|
||||
}
|
||||
|
||||
function change(e, l) {
|
||||
console.log('change')
|
||||
ctx.emit('update:value', e.join(','))
|
||||
ctx.emit('update:name', l.map(t => t.label).join(','))
|
||||
}
|
||||
|
||||
return {
|
||||
...toRefs(state),
|
||||
searchMember,
|
||||
memberScroll,
|
||||
change
|
||||
};
|
||||
},
|
||||
};
|
||||
</script>
|
||||
Reference in New Issue
Block a user