106 lines
2.0 KiB
Vue
106 lines
2.0 KiB
Vue
<template>
|
|
<view>
|
|
<u-form-item
|
|
:label="label"
|
|
:prop="prop"
|
|
:required="required"
|
|
@click="()=>{
|
|
!disabled ? (visible = true) : null
|
|
}"
|
|
>
|
|
<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/>
|
|
<department
|
|
:visible.sync="visible"
|
|
:value="id"
|
|
:is-show-clear="isShowClear"
|
|
@confirm="fnConfirm"
|
|
/>
|
|
</view>
|
|
</template>
|
|
|
|
<script>
|
|
import Department from "./department.vue";
|
|
|
|
export default {
|
|
components: {
|
|
Department,
|
|
},
|
|
props: {
|
|
name: {
|
|
type: String,
|
|
required: true,
|
|
default: "",
|
|
},
|
|
id: {
|
|
type: String,
|
|
required: true,
|
|
default: "",
|
|
},
|
|
form: {
|
|
type: Object,
|
|
default: () => ({}),
|
|
},
|
|
label: {
|
|
type: String,
|
|
default: "部门",
|
|
},
|
|
prop: {
|
|
type: String,
|
|
default: "",
|
|
},
|
|
required: {
|
|
type: Boolean,
|
|
default: true,
|
|
},
|
|
clearKey: {
|
|
type: String,
|
|
default: "",
|
|
},
|
|
disabled: {
|
|
type: Boolean,
|
|
default: false,
|
|
},
|
|
isShowClear: {
|
|
type: Boolean,
|
|
default: false,
|
|
},
|
|
},
|
|
data() {
|
|
return {
|
|
visible: false
|
|
}
|
|
},
|
|
methods: {
|
|
fnConfirm(event) {
|
|
if (event.length > 0) {
|
|
this.$emit('update:name', event[0].name)
|
|
this.$emit('update:id', event[0].id)
|
|
} else {
|
|
this.$emit('update:name', '')
|
|
this.$emit('update:id', '')
|
|
}
|
|
if (JSON.stringify(this.form) !== "{}" && this.clearKey) {
|
|
const clearKey = this.clearKey.split(",");
|
|
const form = uni.$u.deepClone(this.form)
|
|
for (let i = 0; i < clearKey.length; i++) {
|
|
form[clearKey[i]] = "";
|
|
}
|
|
this.$emit("update:form", form);
|
|
}
|
|
}
|
|
},
|
|
}
|
|
</script>
|
|
|
|
<style scoped lang="scss"></style>
|