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