You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 

580 lines
17 KiB

<template>
<div style="padding:30px;">
<!-- 搜索栏 -->
<div class="search">
<el-form :inline="true">
<el-form-item label="用户昵称:" style="margin-right:50px;">
<el-input
v-model="queryParams.query.nickName"
clearable
placeholder="请输入用户昵称"
/>
</el-form-item>
<el-form-item label="用户编号:" style="margin-right:50px;">
<el-input
v-model="queryParams.query.code"
clearable
placeholder="请输入用户编号"
/>
</el-form-item>
<el-form-item label="联系电话:" style="margin-right:50px;">
<el-input
v-model="queryParams.query.phonenumber"
clearable
placeholder="请输入联系电话"
/>
</el-form-item>
<el-form-item label="注册时间:" style="margin-right:50px;">
<el-date-picker
v-model="time"
type="daterange"
range-separator="至"
start-placeholder="开始日期"
end-placeholder="结束日期"
format="yyyy-MM-dd"
value-format="yyyy-MM-dd"
/>
</el-form-item>
</el-form>
<div class="search-button">
<el-button
size="medium"
type="primary"
style="height:36px;width:100px;"
@click="search"
>搜索</el-button
>
<el-button
@click="refresh"
size="medium"
style="margin-left:20px;height:36px;width:100px;"
>重置</el-button
>
</div>
</div>
<!-- 列表 -->
<div class="content">
<el-table
v-loading="loading"
ref="singleTable"
:data="tableData"
border
style="width: 100%"
>
<el-table-column align="center" type="index" label="序号" width="50" />
<el-table-column align="center" property="avatar" label="头像">
<template slot-scope="scope">
<div>
<img style="width: 50px;height: 50px;" :src="scope.row.avatar" alt="" />
</div>
</template>
</el-table-column>
<el-table-column align="center" property="nickName" label="昵称">
<template slot-scope="scope">
<div>
<span>{{ scope.row.nickName }}</span>
<i
style="float: right;font-size:14px;"
@click="handleEditNickName(scope.row)"
class="el-icon-edit-outline"
></i>
</div>
</template>
</el-table-column>
<el-table-column align="center" property="code" label="编号">
<template slot-scope="scope">
<div>
<span>{{ scope.row.code }}</span>
<i
style="float: right;font-size:14px;"
@click="handleEditCode(scope.row)"
class="el-icon-edit-outline"
></i>
</div>
</template>
</el-table-column>
<el-table-column
align="center"
property="phonenumber"
label="联系电话"
/>
<el-table-column
align="center"
property="createTime"
label="注册时间"
/>
<el-table-column align="center" property="level" label="用户等级">
<template slot-scope="scope">
{{ levelormat(scope.row) }}
</template>
</el-table-column>
<el-table-column align="center" property="remark" label="备注">
<template slot-scope="scope">
<div>
<span>{{ scope.row.remark }}</span>
<i
style="float: right;font-size:14px;"
@click="handleEditRemark(scope.row)"
class="el-icon-edit-outline"
></i>
</div>
</template>
</el-table-column>
<el-table-column align="center" label="操作">
<template slot-scope="scope">
<el-button type="text" size="mini" @click="handleEdit(scope.row)"
>修改等级</el-button
>
<el-button type="text" size="mini" @click="handleInfo(scope.row)"
>完善信息</el-button
>
</template>
</el-table-column>
</el-table>
<pagination
v-show="total > 0"
:total="total"
:page.sync="queryParams.pageNum"
:limit.sync="queryParams.pageSize"
@pagination="queryUserInfo"
/>
</div>
<!-- 修改表单 -->
<el-dialog :title="dialog.title" :visible.sync="dialog.Visible" @open=openDialog center :width="type=='userInfo'?'690px':'350px'">
<el-form :model="form" :inline="true">
<div v-if="type == 'level'">
<el-form-item label="客户昵称:" style="width:100%">
<span>{{ data.nickName }}</span>
</el-form-item>
<el-form-item label="客户等级:" style="width:100%">
<span>{{ levelormat(data) }}</span>
</el-form-item>
<el-form-item label="修改为:" style="width:100%">
<el-select v-model="form.level" placeholder="请选择客户等级">
<el-option
v-for="(item,index) in level"
:key="index"
:label="item.dictLabel"
:value="item.dictValue"
/>
</el-select>
</el-form-item>
</div>
<div v-if="type == 'userInfo'" style="display:flex;flex-direction: column;width:100%">
<el-form-item label="简介">
<el-input style="width:100%" type="textarea" :rows="5" v-model="form.introduction" placeholder="请输入用户简介" />
</el-form-item>
<el-form-item label="封面信息">
<!-- <el-input v-model="form.coverImgs" clearable placeholder="请输入客户编号" /> -->
<div v-for="(item, l) in dataImg" :key="l" class="imgdata" style="margin-left:10px;">
<el-image style="width: 146px; height: 146px" :src="item" fit="fill">
</el-image>
<div class="imgdialog">
<p>
<i
class="el-icon-delete"
@click="delDataImg(item, l)"
style="font-size: 20px;"
></i>
</p>
</div>
</div>
<el-upload
class="avatar-uploader"
style="float:left;margin-left: 10px;"
action list-type="picture-card"
:show-file-list="false"
:http-request="changeImgs"
element-loading-text="正在上传..."
v-loading="loadingOtherImg">
<i class="el-icon-plus"></i>
</el-upload>
</el-form-item>
<el-progress :percentage="jinduOtherImgNum" v-if="jinduShowOtherImg" status="success"></el-progress>
</div>
<div v-if="type == 'code'">
<el-form-item label="客户编号">
<el-input v-model="form.code" clearable placeholder="请输入客户编号" />
</el-form-item>
</div>
<div v-if="type == 'nickName'">
<el-form-item label="昵称">
<el-input v-model="form.nickName" clearable placeholder="请输入昵称" />
</el-form-item>
</div>
<div v-if="type == 'remark'">
<el-form-item label="备注">
<el-input
style="width:100%"
type="textarea"
:rows="5"
v-model="form.remark"
placeholder="请输入备注"
/>
</el-form-item>
</div>
</el-form>
<div slot="footer" class="dialog-footer">
<el-button @click="dialog.Visible = false">取 消</el-button>
<el-button type="primary" @click="subMit"> </el-button>
</div>
</el-dialog>
</div>
</template>
<script>
import { queryUserInfo, updateUserInfo } from "@/api/user/user.js";
import { uploadFile, delFile } from "@/api/upload/upload.js";
export default {
data() {
return {
loadingOtherImg:false,//完善信息中封面图片加载圈
jinduOtherImgNum:0,//完善信息中封面图片进度
jinduShowOtherImg:false,//进度条显示
dataImg:[],//多个封面图片
loading: true,
queryParams: {
pageNum: 1,
pageSize: 10,
query: {
nickName: undefined,
code: undefined,
phonenumber: undefined,
userType: '02',
params: {
beginTime: undefined,
endTime: undefined
}
},
},
time: [],
total: 0,
tableData: [],
form: {
userId: "",
nickName:'',//昵称
code:'',//编号
remark:'',//备注
introduction:'',//完善信息中的简介
dataImg:[],//完善信息中的图片
},
dialog: {
Visible: false,
title: ""
},
level: [],
data: {},
type: "level"
};
},
created() {
this.getDicts("jbs_dm_user_level").then(res => {
this.level = res.data;
});
},
mounted() {
this.queryUserInfo();
},
methods: {
//获取用户
async queryUserInfo() {
this.loading = true;
try {
let res = await queryUserInfo(this.queryParams);
if (res.code == 200) {
this.loading = false;
this.tableData = res.rows;
this.total = res.total;
}
} catch (err) {
}
},
//搜索
search() {
if (this.time != null) {
if (this.time.length > 0) {
this.queryParams.query.params.beginTime = this.time[0];
this.queryParams.query.params.endTime = this.time[1];
}
} else {
this.time = [];
this.queryParams.query.params.beginTime = undefined;
this.queryParams.query.params.endTime = undefined;
}
this.queryUserInfo()
},
//重置
refresh() {
this.time = []
this.queryParams = {
pageNum: 1,
pageSize: 10,
query: {
nickName: undefined,
code: undefined,
phonenumber: undefined,
userType: '02',
},
params: {
beginTime: undefined,
endTime: undefined
}
}
this.queryUserInfo()
},
// 任务组名字典翻译
levelormat(row, column) {
return this.selectDictLabel(this.level, row.level);
},
// 编辑用户等级
handleEdit(row) {
// this.form = {}
this.dialog.Visible = true;
this.dialog.title = "修改用户等级";
this.type = "level";
this.form.userId = row.userId;
this.data = row;
},
//弹窗回显
openDialog(){
//昵称回显
if(this.type == 'nickName'){
console.log(this.data.nickName);
console.log('昵称');
this.form.nickName = this.data.nickName;
}
//编号回显
if(this.type == 'code'){
console.log(this.data.code);
console.log('编号');
this.form.code = this.data.code;
}
//备注回显
if(this.type == 'remark'){
console.log(this.data.remark);
console.log('备注');
this.form.remark = this.data.remark;
console.log('21',this.form.remark);
}
//完善信息回显
if(this.type=='userInfo'){
this.form.introduction = this.data.introduction; //简介回显
if(this.data.coverImgs){
this.dataImg = this.data.coverImgs.split(',');//回显图片
}else{
this.dataImg='';
}
}
},
//完善信息
handleInfo(row){
// this.form = {}
this.dialog.Visible = true;
this.dialog.title = "完善用户信息";
this.type = "userInfo";
this.form.userId = row.userId;
// this.form.introduction = row.introduction;
this.data = row;
},
//完善信息中的封面图片上传
changeImgs({ file }) {
this.loadingOtherImg = true; //显示加载
this.jinduOtherImgNum = 0;//进度条从0开始
this.jinduShowOtherImg = true; //是否显示进度条
let formData = new FormData();
formData.append("file", file);
formData.append("type", "product");
uploadFile(formData).then(res => {
this.dataImg.push(res.data.wjUrl);
this.loadingOtherImg = false; //显示加载
clearInterval(this.videoTime); //清除定时器
this.videoTime = null; //清除定时器
this.successVideo('otherImg'); //
});
let videoJindu1 = setTimeout(() => {
this.jinduVideoNum = 30;
}, 500);
let videoJindu2 = setTimeout(() => {
videoJindu1
this.jinduVideoNum = 80;
}, 1000);
this.videoTime = setTimeout(() => {
videoJindu2
this.jinduVideoNum = 90;
}, 1500);
},
successVideo(type){
console.log('上传成功');
switch (type) {
case 'otherImg': //其他图片
this.jinduOtherImgNum = 100;
setTimeout(() => {
this.jinduShowOtherImg = false;
}, 1200);
break;
}
},
//完善信息中的封面图片删除
delDataImg(item, index) {
this.$confirm("此操作将永久删除图片,是否继续?", "提示", {
confirmButtonText: "确定",
cancelButtonText: "取消",
type: "warning"
})
.then(() => {
this.dataImg.splice(index, 1);
delFile({ wjUrl: item }).then(res => {
if (res.code == 200) {
this.$message.success("删除成功");
}
});
// this.$message({
// type: "success",
// message: "删除成功!"
// });
})
.catch(() => {
this.$message({
type: "error",
message: "已取消删除"
});
});
},
//编辑用户编号
handleEditCode(row) {
// this.form = {}
this.dialog.Visible = true;
this.dialog.title = "修改用户编号";
this.form.userId = row.userId;
this.type = "code";
this.data = row;
},
//编写用户昵称
handleEditNickName(row){
// this.form = {}
this.dialog.Visible = true;
this.dialog.title = "修改昵称";
this.form.userId = row.userId;
this.type = "nickName";
this.data = row;
},
//编辑客户备注
handleEditRemark(row) {
// this.form = {}
this.dialog.Visible = true;
this.dialog.title = "修改用户备注";
this.form.userId = row.userId;
this.type = "remark";
this.data = row;
},
//提交表单
async subMit() {
if(this.type == "level"){
if(this.form.level == undefined || this.form.level == ''){
this.$message({
message: '请选择用户等级',
type: "error"
});
return false;
}
}
if(this.type == "userInfo"){
if(this.form.introduction == undefined || this.form.introduction == ''){
this.$message({
message: '请填写完善用户信息',
type: "error"
});
return false;
}
}
if(this.type == "nickName"){
if(this.form.nickName == undefined || this.form.nickName == ''){
this.$message({
message: '请输入用户昵称',
type: "error"
});
return false;
}
}
if(this.type == "code"){
if(this.form.code == undefined || this.form.code == ''){
this.$message({
message: '请输入用户编号',
type: "error"
});
return false;
}
}
if(this.type == "remark"){
if(this.form.remark == undefined || this.form.remark == ''){
this.$message({
message: '请输入用户备注',
type: "error"
});
return false;
}
}
try {
this.form.coverImgs = this.dataImg.join(",");
let res = await updateUserInfo(this.form);
if (res.code == 200) {
this.$message.success("修改成功");
this.dialog.Visible = false;
this.queryUserInfo();
}
} catch (err) {
}
}
}
};
</script>
<style lang='scss' scoped>
.content {
background: #fff;
margin-top: 15px;
}
.add-button {
margin-top: 15px;
}
.search-button {
display: flex;
}
.imgdata {
position: relative;
// display: inline-block;
float: left;
margin-left: 60px;
.imgdialog {
width: 146px;
height: 146px;
display: none;
position: absolute;
background: rgba(127, 127, 127, 0.5);
top: 0;
left: 0;
justify-content: space-between;
align-content: center;
p {
margin: auto;
i {
cursor: pointer;
color: white;
}
}
}
}
.imgdata:hover .imgdialog {
display: flex !important;
}
::v-deep .el-form-item__content{
width: 100%;
}
</style>