138 lines
2.8 KiB
Vue
138 lines
2.8 KiB
Vue
|
<template>
|
||
|
<view>
|
||
|
<u-form-item
|
||
|
:label="label"
|
||
|
:prop="prop"
|
||
|
:required="required"
|
||
|
@click="fnShowPicker"
|
||
|
>
|
||
|
<view class="select_content">
|
||
|
<u-input
|
||
|
:value="name || '请选择'"
|
||
|
border="none"
|
||
|
input-align="right"
|
||
|
readonly
|
||
|
/>
|
||
|
<u-icon name="arrow-right"></u-icon>
|
||
|
</view>
|
||
|
</u-form-item>
|
||
|
<u-line/>
|
||
|
<u-picker
|
||
|
:show="visible"
|
||
|
:columns="[columns]"
|
||
|
key-name="NAME"
|
||
|
:default-index="[defaultIndex]"
|
||
|
@cancel="visible = false"
|
||
|
@confirm="fnConfirm"
|
||
|
/>
|
||
|
</view>
|
||
|
</template>
|
||
|
|
||
|
<script>
|
||
|
import {getPersonnelList} from "@/api/api";
|
||
|
|
||
|
|
||
|
export default {
|
||
|
props: {
|
||
|
name: {
|
||
|
type: String,
|
||
|
required: true,
|
||
|
default: "",
|
||
|
},
|
||
|
id: {
|
||
|
type: String,
|
||
|
required: true,
|
||
|
default: "",
|
||
|
},
|
||
|
label: {
|
||
|
type: String,
|
||
|
default: "人员",
|
||
|
},
|
||
|
prop: {
|
||
|
type: String,
|
||
|
default: "",
|
||
|
},
|
||
|
required: {
|
||
|
type: Boolean,
|
||
|
default: true,
|
||
|
},
|
||
|
disabled: {
|
||
|
type: Boolean,
|
||
|
default: false,
|
||
|
},
|
||
|
departmentId: {
|
||
|
type: String,
|
||
|
required: false,
|
||
|
},
|
||
|
corpInfoId: {
|
||
|
type: String,
|
||
|
required: false,
|
||
|
},
|
||
|
// 是否允许选择当前登录人
|
||
|
isAllowSelectionCurrentPerson: {
|
||
|
type: Boolean,
|
||
|
default: true,
|
||
|
},
|
||
|
},
|
||
|
data() {
|
||
|
return {
|
||
|
visible: false,
|
||
|
columns:[],
|
||
|
defaultIndex:0
|
||
|
}
|
||
|
},
|
||
|
methods: {
|
||
|
async fnGetData() {
|
||
|
const resData = await getPersonnelList({
|
||
|
DEPARTMENT_ID: this.departmentId,
|
||
|
NOMAIN: "1",
|
||
|
loading: false,
|
||
|
postMethod: 'application/json',
|
||
|
});
|
||
|
this.columns = resData.userList;
|
||
|
},
|
||
|
fnShowPicker(){
|
||
|
if (this.disabled) return;
|
||
|
if (this.columns.length === 0) {
|
||
|
uni.showToast({
|
||
|
title: "暂无可选人员",
|
||
|
icon: "none",
|
||
|
});
|
||
|
return;
|
||
|
}
|
||
|
this.visible = true;
|
||
|
this.defaultIndex = 0;
|
||
|
for (let i = 0; i < this.columns.length; i++) {
|
||
|
if (this.columns[i].USER_ID === this.id) {
|
||
|
this.defaultIndex = i;
|
||
|
break;
|
||
|
}
|
||
|
}
|
||
|
},
|
||
|
fnConfirm(event){
|
||
|
if (!this.isAllowSelectionCurrentPerson) {
|
||
|
if (event.value[0].USER_ID === this.$store.getters.getUserInfo.USER_ID) {
|
||
|
uni.showToast({
|
||
|
title: "不能选择当前登录人",
|
||
|
icon: "none",
|
||
|
});
|
||
|
return;
|
||
|
}
|
||
|
}
|
||
|
this.$emit("update:id", event.value[0].USER_ID);
|
||
|
this.$emit("update:name", event.value[0].NAME);
|
||
|
this.$emit("confirm", event.value[0]);
|
||
|
this.visible = false;
|
||
|
}
|
||
|
},
|
||
|
watch:{
|
||
|
departmentId(val) {
|
||
|
if (val) this.fnGetData();
|
||
|
else this.columns = [];
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
</script>
|
||
|
|
||
|
<style scoped lang="scss"></style>
|