<template>
|
<el-dialog title="选择需求方用户" :visible.sync="dialogVisible" @close="cancelFunc" :close-on-click-modal="false" :close-on-press-escape="false" width="800px" append-to-body>
|
<div class="common-seach-wrap">
|
<el-form size="small" :inline="true" :model="formInline" class="demo-form-inline">
|
<el-form-item label="等级">
|
<el-select v-model="formInline.grade_id" placeholder="请选择等级" style="width: 120px;">
|
<el-option label="全部" value="0"></el-option>
|
<el-option v-for="(item, index) in gradeList" :key="index" :label="item.name" :value="item.grade_id"></el-option>
|
</el-select>
|
</el-form-item>
|
<el-form-item label="用户"><el-input placeholder="请输入昵称|姓名|手机号" v-model="formInline.nick_name"></el-input></el-form-item>
|
<el-form-item>
|
<el-button icon="el-icon-search" @click="search">查询</el-button>
|
</el-form-item>
|
</el-form>
|
</div>
|
|
<div class="product-content">
|
<div class="table-wrap">
|
<el-table :data="tableData" size="small" border style="width: 100%" v-loading="loading">
|
<el-table-column prop="" label="头像" width="70">
|
<template slot-scope="scope">
|
<img :src="scope.row.avatarUrl" class="radius" width="30" height="30" />
|
</template>
|
</el-table-column>
|
<el-table-column prop="nickName" label="昵称"></el-table-column>
|
<el-table-column prop="real_name" label="姓名"></el-table-column>
|
<el-table-column prop="mobile" label="手机号"></el-table-column>
|
<el-table-column prop="grade.name" label="等级"></el-table-column>
|
<el-table-column label="操作" width="80">
|
<template slot-scope="scope">
|
<span class="green" v-if="selectedUser && selectedUser.user_id==scope.row.user_id" size="mini">已选择</span>
|
<el-button v-else type="text" size="mini" @click="selectUser(scope.row)">选择</el-button>
|
</template>
|
</el-table-column>
|
</el-table>
|
</div>
|
|
<div class="pagination">
|
<el-pagination
|
@size-change="handleSizeChange"
|
@current-change="handleCurrentChange"
|
background
|
:current-page="curPage"
|
:page-sizes="[10, 20, 50, 100]"
|
:page-size="pageSize"
|
layout="total, prev, pager, next, jumper"
|
:total="totalDataNumber"
|
></el-pagination>
|
</div>
|
</div>
|
|
<div slot="footer" class="dialog-footer">
|
<el-button size="small" @click="dialogVisible = false">取 消</el-button>
|
<el-button size="small" type="primary" @click="confirmFunc">确 定</el-button>
|
</div>
|
</el-dialog>
|
</template>
|
|
<script>
|
import PlusApi from '@/api/plus/release.js';
|
export default {
|
data() {
|
return {
|
loading: true,
|
curPage: 1,
|
pageSize: 15,
|
totalDataNumber: 0,
|
formInline: {
|
grade_id: '',
|
nick_name: ''
|
},
|
gradeList: [],
|
tableData: [],
|
selectedUser: null,
|
dialogVisible: false
|
};
|
},
|
props: {
|
is_open: Boolean
|
},
|
watch: {
|
is_open: function(n, o) {
|
if (n != o) {
|
this.dialogVisible = n;
|
if (n) {
|
this.getTableList();
|
}
|
}
|
}
|
},
|
created() {},
|
methods: {
|
handleCurrentChange(val) {
|
this.curPage = val;
|
this.getTableList();
|
},
|
|
handleSizeChange(val) {
|
this.curPage = 1;
|
this.pageSize = val;
|
this.getTableList();
|
},
|
|
getTableList() {
|
let self = this;
|
self.loading = true;
|
let params = self.formInline;
|
params.page = self.curPage;
|
params.list_rows = self.pageSize;
|
PlusApi.demandUserList(params, true).then(data => {
|
self.loading = false;
|
self.tableData = data.data.list.data;
|
self.totalDataNumber = data.data.list.total;
|
})
|
.catch(error => {
|
self.loading = false;
|
});
|
},
|
|
search() {
|
this.curPage = 1;
|
this.getTableList();
|
},
|
|
confirmFunc() {
|
if (!this.selectedUser) {
|
this.$message.warning('请选择用户');
|
return;
|
}
|
this.emitFunc(this.selectedUser);
|
},
|
|
cancelFunc() {
|
this.emitFunc();
|
},
|
|
emitFunc(user) {
|
this.dialogVisible = false;
|
if (user) {
|
this.$emit('close', {
|
type: 'success',
|
params: user
|
});
|
} else {
|
this.$emit('close', {
|
type: 'error'
|
});
|
}
|
},
|
|
selectUser(user) {
|
this.selectedUser = user;
|
this.confirmFunc();
|
}
|
}
|
};
|
</script>
|