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.
shop-admin/src/store/modules/goods/comment.js

205 lines
5.8 KiB

import * as api from '@/api/goods/comment.js';
import { ElMessage } from 'element-plus/es';
const state = {
list: [],
detail: {
id: 18,
originId: 0,
parentId: 0,
userId: 97,
userName: 'ocean',
commentContent: '用户超时未做出评价,系统默认好评',
isShow: false,
createTime: '2022-06-17 15:27:09',
commentType: 1,
userAvatar: 'https://msb-edu-dev.oss-cn-beijing.aliyuncs.com/default-headimg.png',
skuName: '测试SKU',
productName: '测试虚拟111',
phone: '151****5744',
pictureUrl: 'https://msb-edu-dev.oss-cn-beijing.aliyuncs.com/uc/account-avatar/120x120.png',
commentScore: 5,
followComment: {
id: 19,
originId: 18,
parentId: 18,
userId: 97,
userName: 'ocean',
commentContent: '新增一条追评',
isShow: true,
createTime: '2022-06-17 17:13:32',
commentType: 2,
},
answerCommentList: [
{
id: 20,
originId: 18,
parentId: 18,
userId: 8,
userName: '随机昵称',
commentContent: '新增一条回复',
isShow: true,
createTime: '2022-06-17 17:14:02',
commentType: 3,
parentUserName: 'ocean',
},
{
id: 21,
originId: 18,
parentId: 18,
userId: 8,
userName: '随机昵称',
commentContent: '1232321',
isShow: true,
createTime: '2022-06-17 18:31:48',
commentType: 3,
parentUserName: 'ocean',
},
{
id: 22,
originId: 18,
parentId: 18,
userId: 8,
userName: '随机昵称',
commentContent: '我回复我回复我回复我回复我回复',
isShow: true,
createTime: '2022-06-17 18:32:39',
commentType: 3,
parentUserName: 'ocean',
},
{
id: 23,
originId: 18,
parentId: 22,
userId: 8,
userName: '随机昵称',
commentContent: '222222222222',
isShow: true,
createTime: '2022-06-17 18:34:30',
commentType: 3,
parentUserName: '随机昵称',
},
{
id: 24,
originId: 18,
parentId: 18,
userId: 8,
userName: '随机昵称',
commentContent: '直接评论直接评论',
isShow: true,
createTime: '2022-06-17 18:36:03',
commentType: 3,
parentUserName: 'ocean',
},
],
},
total: 0,
opts: {
isShow: [
{
value: true,
label: '显示',
},
{
value: false,
label: '隐藏',
},
],
score: [
{
value: 1,
label: '1星',
},
{
value: 2,
label: '2星',
},
{
value: 3,
label: '3星',
},
{
value: 4,
label: '4星',
},
{
value: 5,
label: '5星',
},
],
commentType: {
//  评论
comment: 1,
// 追评
addComment: 2,
// 回复
reply: 3,
},
},
};
const getters = {};
const mutations = {
setList: (state, data) => (state.list = data),
setTotal: (state, data) => (state.total = data),
setDetail: (state, data) => (state.detail = data),
};
const actions = {
async search({ state, commit, rootGetters }, params) {
let data = { ...params };
let pagingCode = params.pagingCode;
if (data.dateRange?.length) {
data.commentTimeBegin = data.dateRange[0];
data.commentTimeEnd = data.dateRange[1];
}
delete data.dateRange;
delete data.pagingCode;
const res = await api.commentList({
...rootGetters['local/page'](pagingCode),
...data,
});
if (!res) {
ElMessage.error('评价列表查询失败');
}
res;
commit(
'setList',
res?.records.map((i) => ({
...i,
scoreName: state.opts.score.find((item) => item.value == i.commentScore)?.label,
})) || []
);
commit('setTotal', res?.total || 0);
},
async updateShow({ state }, params) {
const res = await api.updateCommentShow(params);
if (!res) {
ElMessage.error('状态更新失败!');
return Promise.reject('更新失败');
}
return Promise.resolve(res);
},
async getDetail({ state, commit }, id) {
const res = await api.commentDetail({ id });
if (!res) {
ElMessage.error('获取详情失败');
return Promise.reject('获取详情失败');
}
commit('setDetail', res);
return Promise.resolve(res);
},
async add({ state, commit }, data) {
const res = await api.commentAdd(data);
if (!res) {
ElMessage.error('回复失败');
return Promise.reject(false);
}
return Promise.resolve(res);
},
};
export default {
state,
getters,
mutations,
actions,
};