|
|
@@ -8,25 +8,18 @@
|
|
|
<template #header>
|
|
|
<span></span>
|
|
|
</template>
|
|
|
-<!-- <template #header>-->
|
|
|
-<!-- <van-cell title="状态">-->
|
|
|
-<!-- <template #extra>-->
|
|
|
-<!-- <span :style="{color:getState(getDictLabel(visitInfo.status,'out_in_approve_status'))}">-->
|
|
|
-<!-- {{getDictLabel(visitInfo.status,'out_in_approve_status') }}-->
|
|
|
-<!-- </span>-->
|
|
|
-<!-- </template>-->
|
|
|
-<!-- </van-cell>-->
|
|
|
-<!-- </template>-->
|
|
|
<div class="panel-box">
|
|
|
- <select-cell
|
|
|
- title="来访人员"
|
|
|
- :prop="prop"
|
|
|
- is-row
|
|
|
- @itemInfo="getItemInfo"
|
|
|
- v-model="selectedUser.id"
|
|
|
- :data-list="userList"
|
|
|
- required>
|
|
|
- </select-cell>
|
|
|
+
|
|
|
+<!-- <select-cell-->
|
|
|
+<!-- title="来访人员"-->
|
|
|
+<!-- :prop="prop"-->
|
|
|
+<!-- is-row-->
|
|
|
+<!-- @itemInfo="getItemInfo"-->
|
|
|
+<!-- v-model="selectedUser.id"-->
|
|
|
+<!-- :data-list="userList"-->
|
|
|
+<!-- required>-->
|
|
|
+<!-- </select-cell>-->
|
|
|
+ <van-cell title="来访人员" :value="selectedUser.userName" required is-link @click="onClick"/>
|
|
|
<van-cell title="证件类型" :value="getDictLabel(selectedUser.idType,'letter_id_type')"></van-cell>
|
|
|
<van-cell title="证件号码" :value="selectedUser.idCard"></van-cell>
|
|
|
<van-cell title="介绍信类型" :value="getDictLabel(selectedUser.type,'out_in_type')"></van-cell>
|
|
|
@@ -77,13 +70,49 @@
|
|
|
</div>
|
|
|
</van-panel>
|
|
|
</div>
|
|
|
-
|
|
|
</div>
|
|
|
+
|
|
|
+ <!-- 人员选择弹窗 -->
|
|
|
+ <van-popup
|
|
|
+ class="search-data-popup"
|
|
|
+ round
|
|
|
+ lazy-render
|
|
|
+ v-model="showPicker"
|
|
|
+ position="bottom"
|
|
|
+ @click-overlay="clickOverlay"
|
|
|
+ :close-on-click-overlay="true">
|
|
|
+ <div class="header-line">
|
|
|
+ <div class="cancel" @click="onSearchCancel">取消</div>
|
|
|
+ <div class="title">选择人员</div>
|
|
|
+ <div class="sure" @click="onSearchConfirm">确定</div>
|
|
|
+ </div>
|
|
|
+
|
|
|
+ <form action="/">
|
|
|
+ <van-search placeholder="输入搜索内容" v-model="searchValue" @input="inputSearchValue" />
|
|
|
+ </form>
|
|
|
+
|
|
|
+ <div v-if="userList.length >0" class="lists">
|
|
|
+ <div class="list-item">
|
|
|
+ <van-cell
|
|
|
+ :class="{active:item.checked}"
|
|
|
+ v-for="(item, index) in userList"
|
|
|
+ clickable
|
|
|
+ :key="item.id"
|
|
|
+ :title="item.userName"
|
|
|
+ :value="item.companyName"
|
|
|
+ @click="handleClick(item,index)">
|
|
|
+ </van-cell>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ <div v-else class="lists">
|
|
|
+ <empty description="无数据" />
|
|
|
+ </div>
|
|
|
+ </van-popup>
|
|
|
</div>
|
|
|
</template>
|
|
|
|
|
|
<script>
|
|
|
-
|
|
|
+import SearchSelectCell from "@/components/SearchSelectCell/index.vue";
|
|
|
import DateCell from "@/components/dateCell/index.vue";
|
|
|
import Uploader from "@/components/upload/gxuploader.vue";
|
|
|
import {formatDate} from "@/filters/filter";
|
|
|
@@ -92,7 +121,7 @@ import {imgUrl} from "@/utils";
|
|
|
import { ImagePreview } from 'vant'
|
|
|
import {userList, userRegister} from './api'
|
|
|
export default {
|
|
|
- components: {Uploader, DateCell},
|
|
|
+ components: {SearchSelectCell,Uploader, DateCell},
|
|
|
data(){
|
|
|
return {
|
|
|
minDate:null,
|
|
|
@@ -102,7 +131,7 @@ export default {
|
|
|
selectedUser:{},
|
|
|
prop:{
|
|
|
label:'userName',
|
|
|
- value:'id'
|
|
|
+ value:'id',
|
|
|
},
|
|
|
formData:{
|
|
|
letterUserId:null,
|
|
|
@@ -111,7 +140,12 @@ export default {
|
|
|
accompanyingPerson:null,
|
|
|
checkImage:null,
|
|
|
},
|
|
|
- dicts:['out_in_approve_status','letter_id_type','out_in_type']
|
|
|
+ dicts:['out_in_approve_status','letter_id_type','out_in_type'],
|
|
|
+ /*以下为弹窗中的变量*/
|
|
|
+ searchValue:'',
|
|
|
+ showPicker:false,
|
|
|
+ onSelected:null,
|
|
|
+ pList:[],
|
|
|
}
|
|
|
},
|
|
|
computed:{
|
|
|
@@ -122,6 +156,41 @@ export default {
|
|
|
},
|
|
|
methods:{
|
|
|
imgUrl,formatDate,
|
|
|
+ onClick(){
|
|
|
+ this.showPicker = true;
|
|
|
+ },
|
|
|
+ clickOverlay(){
|
|
|
+ this.selected = this.value;
|
|
|
+ this.showPicker = false;
|
|
|
+ },
|
|
|
+ handleClick(v,i){
|
|
|
+ this.userList.forEach(v=>v.checked = false);
|
|
|
+ // this.$nextTick(()=>{
|
|
|
+ // this.$set(this.userList[i],'checked',!this.userList[i].checked);
|
|
|
+ // })
|
|
|
+ v.checked = !v.checked;
|
|
|
+ this.userList.splice(i,1,v)
|
|
|
+ this.onSelected = v;
|
|
|
+ },
|
|
|
+ onSearchCancel() {
|
|
|
+ this.selected = this.value;
|
|
|
+ this.$emit("cancel");
|
|
|
+ this.showPicker = false;
|
|
|
+ },
|
|
|
+ onSearchConfirm() {
|
|
|
+ this.selectedUser = this.onSelected;
|
|
|
+ this.showPicker = false;
|
|
|
+ },
|
|
|
+ inputSearchValue(query) {
|
|
|
+ //搜索框值发生改变
|
|
|
+ setTimeout(() => {
|
|
|
+ this.userList= this.pList.filter(item => {
|
|
|
+ return item.userName.indexOf(query) > -1;
|
|
|
+ });
|
|
|
+ }, 200);
|
|
|
+ },
|
|
|
+
|
|
|
+
|
|
|
onSubmit(){
|
|
|
if(!this.selectedUser.id){
|
|
|
this.$toast('请选择来访人员');
|
|
|
@@ -179,6 +248,7 @@ export default {
|
|
|
}
|
|
|
return v
|
|
|
})
|
|
|
+ this.pList = res.data;
|
|
|
})
|
|
|
},
|
|
|
preView(val) {
|
|
|
@@ -339,4 +409,61 @@ export default {
|
|
|
height: 30px;
|
|
|
}
|
|
|
}
|
|
|
+.search-data-popup{
|
|
|
+ .header-line {
|
|
|
+ display: flex;
|
|
|
+ justify-content: space-between;
|
|
|
+ align-items: center;
|
|
|
+ height: 90px;
|
|
|
+ }
|
|
|
+ .header-line .cancel {
|
|
|
+ padding: 0 30px;
|
|
|
+ font-size: 28px;
|
|
|
+ color: #969799;
|
|
|
+ }
|
|
|
+ .header-line .title {
|
|
|
+ font-weight: 500;
|
|
|
+ font-size: 30px;
|
|
|
+ color: #343434;
|
|
|
+ }
|
|
|
+ .header-line .sure {
|
|
|
+ padding: 0 30px;
|
|
|
+ font-size: 28px;
|
|
|
+ color: #1989fa;
|
|
|
+ }
|
|
|
+ .lists {
|
|
|
+ display: flex;
|
|
|
+ flex-direction: column;
|
|
|
+ -padding: 10px 12px 20px 12px;
|
|
|
+ min-height: 300px;
|
|
|
+ max-height: 700px;
|
|
|
+ overflow: auto;
|
|
|
+ }
|
|
|
+ .lists .line {
|
|
|
+ line-height: 40px;
|
|
|
+ font-size: 16px;
|
|
|
+ color: #000;
|
|
|
+ display: flex;
|
|
|
+ justify-content: space-between;
|
|
|
+ align-items: center;
|
|
|
+ }
|
|
|
+ .lists .line img {
|
|
|
+ width: 20px;
|
|
|
+ height: 20px;
|
|
|
+ }
|
|
|
+ .tip {
|
|
|
+ color: #666;
|
|
|
+ padding-bottom: 5px;
|
|
|
+ }
|
|
|
+ .van-empty{
|
|
|
+ padding: 0;
|
|
|
+ }
|
|
|
+ .list-item{
|
|
|
+ padding:20px;
|
|
|
+ }
|
|
|
+ .active{
|
|
|
+ color:#1989fa;
|
|
|
+ border-left: 5px solid #1989fa;
|
|
|
+ }
|
|
|
+}
|
|
|
</style>
|