Commit e5e6fc29 authored by 黄媛媛's avatar 黄媛媛

update

parent 1ffd1c17
<template>
<div class="setMember usersList usersListEdit">
<div class="head-title">
<span @click="CommonJump('evaluationMan')" class="blue point">评价管理</span> / 客户评价编辑
</div>
<div class="content">
<el-form style="width:50%" :model="addMsg" :rules="rules" ref="addMsg" label-width="150px">
<el-form-item label="用户来源">
<el-select filterable v-model="addMsg.PlatformSource" size="small" placeholder="请选择">
<el-option
v-for="item in platList"
:key="item.Id"
:label="item.Name"
:value="item.Id">
</el-option>
</el-select>
</el-form-item>
<el-form-item label="用户名">
<el-input v-model="addMsg.UserName" size="small"></el-input>
</el-form-item>
<el-form-item label="评价时间" prop="CreateDate">
<el-date-picker
size="small"
v-model="addMsg.CreateDate"
type="datetime"
value-format="yyyy-MM-dd HH:mm:ss"
placeholder="选择日期时间">
</el-date-picker>
</el-form-item>
<el-form-item label="用户头像">
<el-tooltip class="item" effect="dark" content="建议尺寸100*100" placement="top">
<el-button @click="openChangeDig(1)" size="small">选择文件</el-button>
</el-tooltip>
<div class="app-gallery-item" style="position: relative;width: 100px;margin-top: 10px;">
<img v-if="!addMsg.userPath || addMsg.userPath==''"
src="../../assets/img/default.png" style="width:80px;height:80px" alt="">
<img style="width:80px;height:80px" :src="domainManager().ImageUrl+addMsg.userPath"
alt="">
</div>
</el-form-item>
<el-form-item label="商品" prop="GoodsId">
<el-select filterable v-model="addMsg.GoodsId" size="small" placeholder="请选择">
<el-option
v-for="item in tableData"
:key="item.Id"
:label="item.Name"
:value="item.Id">
</el-option>
</el-select>
</el-form-item>
<el-form-item label="评价图片">
<el-tooltip class="item" effect="dark" content="建议尺寸750*750" placement="top">
<el-button @click="openChangeDig(2)" size="small">选择文件</el-button>
</el-tooltip>
<div class="app-gallery-item" style="position: relative;width: 100px;margin-top: 10px;">
<img v-if="!addMsg.pjPath || addMsg.pjPath==''"
src="../../assets/img/default.png" style="width:80px;height:80px" alt="">
<img style="width:80px;height:80px" :src="domainManager().ImageUrl+addMsg.pjPath"
alt="">
</div>
</el-form-item>
<el-form-item label="评价">
<el-input v-model="addMsg.Content" type="textarea" row="2" size="small"></el-input>
</el-form-item>
<el-form-item label="评分" prop="CommentGrade">
<el-radio v-model="addMsg.CommentGrade" :label="item.Id" v-for="(item,index) in templateList" :key="index" >{{item.Name}}</el-radio>
</el-form-item>
<el-form-item label="是否匿名" prop="Is_Anonymity">
<el-switch v-model="addMsg.Is_Anonymity" active-color="#409EFF" :active-value="1" :inactive-value="2">
</el-switch>
</el-form-item>
<el-form-item label="是否显示" prop="Is_Show">
<el-switch v-model="addMsg.Is_Show" active-color="#409EFF" :active-value="1" :inactive-value="2">
</el-switch>
</el-form-item>
</el-form>
</div>
<div style="margin-top:20px">
<el-button size="small" type="primary" @click="Save">保存</el-button>
</div>
<!-- 选择文件 -->
<el-dialog title="选择文件" :visible.sync="changeState" width="1240px">
<ChooseImg @SelectId="SelectId"></ChooseImg>
</el-dialog>
</div>
</template>
<script>
import ChooseImg from "@/components/global/ChooseImg.vue";
export default {
components: {
ChooseImg
},
data() {
return {
rules: {
CreateDate: [
{ type: 'string', required: true, message: '请选择时间', trigger: 'change' }
],
GoodsId: [
{ required: true, message: '请选择商品', trigger: 'change' }
],
CommentGrade: [
{ required: true, message: '请选择评分', trigger: 'change' }
],
Is_Show: [
{ required: true, message: '请选择', trigger: 'change' }
],
Is_Anonymity: [
{ required: true, message: '请选择', trigger: 'change' }
],
},
addMsg: {
PlatformSource:1,
CreateDate:'',
UserName:'',
GoodsId:'',
UserPhoto:'',
CommentGrade:'',
Content:'',
CommentImgList:[],
Is_Show:2,
Is_Anonymity:2,
},
msg:{
pageIndex:1,
pageSize:15,
CommentGrade:0,
PlatformSource:0,
UserName:'',
GoodsName:'',
Content:'',
},
tableData: [],
templateList:[],
platList:[],
changeState:false,
imgType:1,
};
},
created() {
this.getTemplate();
this.getList();
this.getplat();
},
methods: {
SelectId(msg){
if(this.imgType==1){
this.addMsg.UserPhoto=msg.selectId;
this.addMsg.userPath=msg.url;
}
if(this.imgType==2){
this.addMsg.CommentImgList=[msg.selectId];
this.addMsg.pjPath=msg.url;
}
this.changeState = false;
},
openChangeDig(num) {
this.changeState = true;
this.imgType=num;
},
Save() {
this.apipost("/api/order/SetGoodsCommentInfo", this.addMsg, res => {
if (res.data.resultCode == 1) {
this.CommonJump('evaluationMan')
} else {
this.Error(res.data.message);
}
})
},
getList(){
let msg={
pageIndex:1,
pageSize:999,
Name:'',
}
this.apipost("/api/product/GetProductGoodsDialogList",msg, res => {
this.loading=false;
if(res.data.resultCode==1){
let pageData=res.data.data.pageData;
this.tableData=pageData;
}
})
},
getplat(){
this.apipost("/api/user/GetMemberUserSourceEnumList",{}, res => {
this.platList=res.data.data;
})
},
getTemplate(){
this.apipost("/api/order/GetGoodsCommentTypeEnumList",{}, res => {
this.templateList=res.data.data;
})
},
},
mounted() {
}
};
</script>
<style>
.usersListEdit .tip {
margin-left: 10px;
display: inline-block;
height: 30px;
line-height: 30px;
color: #ff4544;
background-color: #FEF0F0;
padding: 0 20px;
border-radius: 5px;
}
.usersListEdit .app-image {
background-size: cover;
background-position: center center;
width: 80px;
height: 80px;
border-radius: 0%;
}
.setMember .setTable .el-table__body .cell {
display: flex;
align-items: center;
}
.setMember .commonLabel .el-form-item__label {
margin-top: -4px;
}
.setMember .discount .el-form-item__label {
padding-right: 30px;
margin-top: -4px;
}
.setMember .el-form-item .elzk {
position: absolute;
left: -25px;
top: 8px;
}
.setMember .el-form-item {
position: relative;
}
.usersList .blue {
color: #409EFF;
}
.usersList .content {
background: #fff;
margin-top: 10px;
padding: 20px;
box-sizing: border-box;
}
</style>
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
<div class="evalTemplate evaluationMan"> <div class="evalTemplate evaluationMan">
<div class="head-title"> <div class="head-title">
评价管理 评价管理
<el-button @click="addTemplate" style="float:right;margin-left:10px" size="small" type="primary">添加客户评价</el-button> <el-button @click="CommonJump('customerEvaluation')" style="float:right;margin-left:10px" size="small" type="primary">添加客户评价</el-button>
<el-button @click="CommonJump('evaluationTemplate')" style="float:right" size="small" type="primary">回复模板</el-button> <el-button @click="CommonJump('evaluationTemplate')" style="float:right" size="small" type="primary">回复模板</el-button>
</div> </div>
<div class="content"> <div class="content">
...@@ -38,7 +38,7 @@ ...@@ -38,7 +38,7 @@
</el-select> </el-select>
<el-button @click="getList" slot="append" icon="el-icon-search"></el-button> <el-button @click="getList" slot="append" icon="el-icon-search"></el-button>
</el-input> </el-input>
<el-button style="margin-left:10px" size="small">批量回复</el-button> <el-button @click="plHf" style="margin-left:10px" size="small">批量回复</el-button>
<el-button @click="plSet(2)" style="margin-left:10px" size="small">批量隐藏</el-button> <el-button @click="plSet(2)" style="margin-left:10px" size="small">批量隐藏</el-button>
<el-button @click="plSet(6)" style="margin-left:10px" size="small">批量删除</el-button> <el-button @click="plSet(6)" style="margin-left:10px" size="small">批量删除</el-button>
</div> </div>
...@@ -76,10 +76,10 @@ ...@@ -76,10 +76,10 @@
width="200"> width="200">
<template slot-scope="scope"> <template slot-scope="scope">
<div class="goods-info"> <div class="goods-info">
<div class="backImg" style="background-image: url(https://cdnimg.iotweixin.com/uploads/mall1285/20200312/edf59b3b77f9920cf8ad03aea896a042.jpg); background-size: cover; "></div> <div class="backImg" :style="{backgroundImage:'url(' + domainManager().ImageUrl+scope.row.CoverImage + ')',backgroundSize:'cover'}"></div>
<div class="app-ellipsis"> <div class="app-ellipsis">
<div class="vue-line-clamp" style="word-break: break-all; -webkit-line-clamp: 2;"> <div class="vue-line-clamp" style="word-break: break-all; -webkit-line-clamp: 2;">
东山岛佛跳墙 满坛香 福寿全 6罐装 顺丰直达 福建省包邮 赞羊严选 海鲜霸王餐 {{scope.row.GoodsName}}
</div> </div>
</div> </div>
</div> </div>
...@@ -110,7 +110,7 @@ ...@@ -110,7 +110,7 @@
<span>{{scope.row.Content}}</span> <span>{{scope.row.Content}}</span>
</el-tooltip> </el-tooltip>
<div> <div>
<div style="margin: 10px; display: inline-block; cursor: pointer;"> <div @click="OpenImg(scope.row)" style="margin: 10px; display: inline-block; cursor: pointer;">
<div class="backImg" style="background-image: url(https://cdnimg.iotweixin.com/uploads/mall1285/20200316/586d61c616082de7c3a7d1d778104785.jpg); background-size: cover;"></div> <div class="backImg" style="background-image: url(https://cdnimg.iotweixin.com/uploads/mall1285/20200316/586d61c616082de7c3a7d1d778104785.jpg); background-size: cover;"></div>
</div> </div>
<div style="margin: 10px; display: inline-block; cursor: pointer;"> <div style="margin: 10px; display: inline-block; cursor: pointer;">
...@@ -173,24 +173,63 @@ ...@@ -173,24 +173,63 @@
layout="prev, pager, next" :total="total"> layout="prev, pager, next" :total="total">
</el-pagination> </el-pagination>
</div> </div>
<!-- 添加模板 --> <!-- 评论回复 -->
<el-dialog title="添加模板" :visible.sync="addDig" width="600px"> <el-dialog custom-class="plDig" title="评论回复" :visible.sync="addDig" width="960px">
<el-form :model="addMsg" :rules="rules" ref="addMsg" label-width="80px"> <div style="margin-bottom:15px">
<el-form-item label="模板名称" prop="Name"> <el-radio v-model="typeVal" :label="1">直接输入</el-radio>
<el-input size="small" v-model="addMsg.Name"></el-input> <el-radio v-model="typeVal" :label="2">选择模板</el-radio>
</el-form-item> </div>
<el-form-item label="模板内容" prop="Content"> <template v-if="typeVal==1">
<el-input size="small" v-model="addMsg.Content" type="textarea" row="2"></el-input> <div style="height:220px">
</el-form-item> <el-input v-model="hfMsg.Content" type="textarea" row="10" style="height:100%" placeholder="请输入回复内容"></el-input>
<el-form-item label="操作" prop="CommentGrade"> </div>
<el-radio v-model="addMsg.CommentGrade" :label="item.Id" v-for="(item,index) in templateList" :key="index">{{item.Name}}</el-radio> </template>
</el-form-item> <template v-if="typeVal==2">
</el-form> <el-card class="box-card" shadow="never">
<el-tabs v-model="activeName" @tab-click="handleClick">
<el-tab-pane v-for="(item,index) in templateList" :key="item.Id" :dataId="item.Id" :label="item.Name" :name="`first${index}`"></el-tab-pane>
</el-tabs>
<div class="table-box">
<div flex="dir:left">
<div flex="cross:center" class="table-item" style="width: 10%;"></div>
<div flex="cross:center" class="table-item" style="width: 30%;">模板名称</div>
<div flex="cross:center" class="table-item" style="width: 60%;">模板内容</div>
</div>
<div v-for="(item,index) in tableData1" :key="index" flex="dir:left">
<div flex="main:center cross:center" class="table-item" style="width: 10%;">
<el-radio @change="radioChange(item.Content)" v-model="radio" :label="item.Id"></el-radio>
</div>
<div flex="cross:center" class="table-item" style="width: 30%;">
<div class="app-ellipsis">
<div class="vue-line-clamp" style="word-break: break-all; -webkit-line-clamp: 2;">{{item.Name}}</div>
</div>
</div>
<div flex="cross:center" class="table-item" style="width: 60%;">
<div class="app-ellipsis">
<div class="vue-line-clamp" style="word-break: break-all; -webkit-line-clamp: 2;">{{item.Content}}</div>
</div>
</div>
</div>
<el-pagination style="text-align:right" background @current-change="handleCurrentChange1" :page-size="msg1.pageSize"
layout="prev, pager, next" :total="total1">
</el-pagination>
</div>
</el-card>
</template>
<span slot="footer" class="dialog-footer"> <span slot="footer" class="dialog-footer">
<el-button size="small" @click="addDig = false">取 消</el-button> <el-button size="small" @click="addDig = false">取 消</el-button>
<el-button size="small" type="primary" @click="czsubmitForm('addMsg')">确 定</el-button> <el-button size="small" type="primary" @click="czsubmitForm">确 定</el-button>
</span> </span>
</el-dialog> </el-dialog>
<!-- 查看图片 -->
<el-dialog
:visible.sync="seeimgDig"
width="45%">
<div>
<img :src="imgSrc" style="width:100%;max-width:100%;" alt="">
</div>
</el-dialog>
</div> </div>
</template> </template>
...@@ -199,7 +238,11 @@ export default { ...@@ -199,7 +238,11 @@ export default {
name: "evalTemplate", name: "evalTemplate",
data(){ data(){
return{ return{
imgSrc:'',
seeimgDig:false,
radio:false,
activeName:'first0',
typeVal:1,
addDig:false, addDig:false,
loading:false, loading:false,
tableData:[], tableData:[],
...@@ -210,7 +253,7 @@ export default { ...@@ -210,7 +253,7 @@ export default {
{Id:2,name:'商品名称'}, {Id:2,name:'商品名称'},
{Id:3,name:'评价内容'}, {Id:3,name:'评价内容'},
], ],
msg:{ msg:{
pageIndex:1, pageIndex:1,
pageSize:15, pageSize:15,
CommentGrade:0, CommentGrade:0,
...@@ -227,28 +270,82 @@ export default { ...@@ -227,28 +270,82 @@ export default {
Content:'', Content:'',
CommentGrade:0, CommentGrade:0,
}, },
rules:{
Name: [
{ required: true, message: '请输入模板名称', trigger: 'blur' }
],
Content: [
{ required: true, message: '请输入模板内容', trigger: 'blur' }
],
CommentGrade: [
{ required: true, message: '请选择类型', trigger: 'change' }
],
},
platList:[], platList:[],
SelectList:[], SelectList:[],
tableData1:[],
total1:0,
msg1:{
pageIndex:1,
pageSize:15,
Id:0,
Name:'',
CommentGrade:1,
},
hfMsg:{
CommentIds:'',
Type:1,
Content:'',
},
} }
}, },
created(){ created(){
this.getTemplate(); this.getTemplate();
this.getList(); this.getList();
this.getplat(); this.getplat();
this.getTemplateList();
}, },
mounted(){}, mounted(){},
methods:{ methods:{
OpenImg(item){
// this.imgSrc=item;
this.imgSrc='https://cdnimg.iotweixin.com/uploads/mall1285/20200316/586d61c616082de7c3a7d1d778104785.jpg';
this.seeimgDig=true;
},
// 批量回复
plHf(){
let that=this;
if(this.SelectList.length==0){
this.Error("请勾选数据!");
return;
}
let Ids="";
let IdList=[];
this.SelectList.forEach(item=>{
IdList.push(item.Id);
})
Ids=IdList.join(',');
this.hfMsg={
CommentIds:Ids,
Type:1,
Content:'',
}
this.addDig=true;
},
EditTemplate(row){
this.hfMsg={
CommentIds:row.Id,
Type:1,
Content:'',
}
this.addDig=true;
},
czsubmitForm() {
if(this.hfMsg.Content==''){
this.Error("请输入内容");
return;
}
this.commonSet(this.hfMsg);
},
radioChange(val){
this.hfMsg.Content=val;
},
handleClick(val){
let dataId=val.$attrs.dataId;
this.msg1.CommentGrade=dataId;
this.getTemplateList();
},
// 批量删除 隐藏 显示 // 批量删除 隐藏 显示
plSet(index){ plSet(index){
let that=this; let that=this;
...@@ -313,12 +410,12 @@ export default { ...@@ -313,12 +410,12 @@ export default {
if (res.data.resultCode == 1) { if (res.data.resultCode == 1) {
this.Success(res.data.message) this.Success(res.data.message)
this.getList(); this.getList();
this.addDig=false;
}else{ }else{
this.Error(res.data.message) this.Error(res.data.message)
} }
}) })
}, },
TableSelectChange(val){ TableSelectChange(val){
this.SelectList=val; this.SelectList=val;
}, },
...@@ -344,15 +441,7 @@ export default { ...@@ -344,15 +441,7 @@ export default {
}); });
}, },
EditTemplate(row){
this.addMsg={
Id:row.Id,
Name:row.Name,
Content:row.Content,
CommentGrade:row.CommentGrade,
}
this.addDig=true;
},
addTemplate(){ addTemplate(){
this.addMsg={ this.addMsg={
Id:0, Id:0,
...@@ -362,27 +451,7 @@ export default { ...@@ -362,27 +451,7 @@ export default {
} }
this.addDig=true; this.addDig=true;
}, },
czsubmitForm(formName) {
this.$refs[formName].validate((valid) => {
if (valid) {
let cmd = "/api/order/SetGoodsCommentTemplateInfo";
this.apipost(cmd, this.addMsg,
res => {
if (res.data.resultCode === 1) {
this.getList();
this.Success(res.data.message)
this.addDig = false;
} else {
this.Error(res.data.message);
}
},
null
);
} else {
return false;
}
});
},
ChangeId(val){ ChangeId(val){
let msgVal=this.msgVal; let msgVal=this.msgVal;
if(this.msgId==1){ if(this.msgId==1){
...@@ -443,17 +512,48 @@ export default { ...@@ -443,17 +512,48 @@ export default {
this.msg.pageIndex = val; this.msg.pageIndex = val;
this.getList(); this.getList();
}, },
handleCurrentChange1(val) {
this.msg1.pageIndex = val;
this.getTemplateList();
},
getTemplate(){ getTemplate(){
this.apipost("/api/order/GetGoodsCommentTypeEnumList",{}, res => { this.apipost("/api/order/GetGoodsCommentTypeEnumList",{}, res => {
this.templateList=res.data.data; this.templateList=res.data.data;
}) })
}, },
getTemplateList(){
this.loading1 = true;
this.apipost("/api/order/GetGoodsCommentTemplatePageList", this.msg1, res => {
this.loading1 = false;
if (res.data.resultCode == 1) {
this.total1 = res.data.data.count;
let pageData = res.data.data.pageData;
this.tableData1= pageData;
}
})
},
}, },
}; };
</script> </script>
<style> <style>
.plDig .table-item .el-radio__label{
display: none;
}
.plDig .table-item {
border-bottom: 1px solid #E3E3E3;
border-right: 1px solid #E3E3E3;
height: 50px;
padding-left: 5px;
}
.plDig .table-box {
border-top: 1px solid #E3E3E3;
border-left: 1px solid #E3E3E3;
}
.plDig .el-textarea__inner{
height:100%;
}
.evaluationMan .backImg{ .evaluationMan .backImg{
background-position: center center; background-position: center center;
width: 50px; height: 50px; width: 50px; height: 50px;
......
...@@ -95,7 +95,6 @@ export default { ...@@ -95,7 +95,6 @@ export default {
name: "evalTemplate", name: "evalTemplate",
data(){ data(){
return{ return{
addDig:false, addDig:false,
loading:false, loading:false,
tableData:[], tableData:[],
......
...@@ -287,7 +287,7 @@ ...@@ -287,7 +287,7 @@
:visible.sync="seeimgDig" :visible.sync="seeimgDig"
width="45%"> width="45%">
<div> <div>
<img :src="imgSrc" style="width:100%;max-width:100%;max-height:500px" alt=""> <img :src="imgSrc" style="width:100%;max-width:100%;" alt="">
</div> </div>
</el-dialog> </el-dialog>
</div> </div>
......
...@@ -261,23 +261,29 @@ export default new Router({ ...@@ -261,23 +261,29 @@ export default new Router({
}, },
// 订单管理 售后订单详情 // 订单管理 售后订单详情
        {         {
          path: '/salesOrderDetails',           path: '/salesOrderDetails',
          name: 'salesOrderDetails',           name: 'salesOrderDetails',
          component: resolve => require(['@/components/orderMan/salesOrderDetails'], resolve),           component: resolve => require(['@/components/orderMan/salesOrderDetails'], resolve),
        },         },
        // 订单管理 评价模板         // 订单管理 评价模板
        {         {
          path: '/evaluationTemplate',           path: '/evaluationTemplate',
          name: 'evaluationTemplate',           name: 'evaluationTemplate',
          component: resolve => require(['@/components/orderMan/evaluationTemplate'], resolve),           component: resolve => require(['@/components/orderMan/evaluationTemplate'], resolve),
        },         },
        // 订单管理 评价管理         // 订单管理 评价管理
        {         {
          path: '/evaluationMan',           path: '/evaluationMan',
          name: 'evaluationMan',           name: 'evaluationMan',
          component: resolve => require(['@/components/orderMan/evaluationMan'], resolve),           component: resolve => require(['@/components/orderMan/evaluationMan'], resolve),
        },
// 订单管理 客户评价
        {
          path: '/customerEvaluation',
          name: 'customerEvaluation',
          component: resolve => require(['@/components/orderMan/customerEvaluation'], resolve),
        },         },
//设置 基础设置 //设置 基础设置
{ {
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment