qa-prevention-xgf-app/components/personnel/index.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>