commit
3f9c9d0065
File diff suppressed because it is too large
Load Diff
@ -0,0 +1,31 @@ |
|||||||
|
import { axios } from '@/utils/request' |
||||||
|
|
||||||
|
// api接口列表
|
||||||
|
const api = { |
||||||
|
feedbackList: '/feedback/list', |
||||||
|
editFeedback: '/feedback/edit' |
||||||
|
} |
||||||
|
|
||||||
|
/** |
||||||
|
* 反馈列表 |
||||||
|
* @param {*} data |
||||||
|
*/ |
||||||
|
export function feedbackList (data) { |
||||||
|
return axios({ |
||||||
|
url: api.feedbackList, |
||||||
|
method: 'get', |
||||||
|
data |
||||||
|
}) |
||||||
|
} |
||||||
|
|
||||||
|
/** |
||||||
|
* 编辑反馈 |
||||||
|
* @param {*} data |
||||||
|
*/ |
||||||
|
export function editFeedback (data) { |
||||||
|
return axios({ |
||||||
|
url: api.editFeedback, |
||||||
|
method: 'post', |
||||||
|
data |
||||||
|
}) |
||||||
|
} |
@ -0,0 +1,122 @@ |
|||||||
|
<template> |
||||||
|
<a-card :bordered="false"> |
||||||
|
<content-header title="意见反馈"></content-header> |
||||||
|
<a-table |
||||||
|
rowKey="feedback_id" |
||||||
|
:columns="columns" |
||||||
|
:dataSource="feedbackList" |
||||||
|
:defaultExpandAllRows="true" |
||||||
|
:expandIconColumnIndex="1" |
||||||
|
:pagination="pagination" |
||||||
|
:loading="isLoading" |
||||||
|
> |
||||||
|
<span slot="type" slot-scope="text, item"> |
||||||
|
{{ typeList[item.type - 1] }} |
||||||
|
</span> |
||||||
|
<span slot="status" slot-scope="text, item"> |
||||||
|
<a-tag :color="item.answer ? '#52BC8C' : '#FB6569'">{{ item.answer ? '已完成' : '受理中' }}</a-tag> |
||||||
|
</span> |
||||||
|
<span slot="store_id" slot-scope="text, item"> |
||||||
|
{{ item.store.store_name }} |
||||||
|
</span> |
||||||
|
<span slot="action" slot-scope="text, item"> |
||||||
|
<template> |
||||||
|
<a style="margin-right: 8px" @click="handleEdit(item)">编辑</a> |
||||||
|
</template> |
||||||
|
</span> |
||||||
|
</a-table> |
||||||
|
<EditForm ref="EditForm" @handleSubmit="handleRefresh" /> |
||||||
|
</a-card> |
||||||
|
</template> |
||||||
|
|
||||||
|
<script> |
||||||
|
import * as Api from '@/api/feedback' |
||||||
|
import { ContentHeader, STable } from '@/components' |
||||||
|
import EditForm from './modules/Edit.vue' |
||||||
|
|
||||||
|
export default { |
||||||
|
components: { |
||||||
|
ContentHeader, |
||||||
|
STable, |
||||||
|
EditForm |
||||||
|
}, |
||||||
|
data () { |
||||||
|
return { |
||||||
|
typeList: [ |
||||||
|
'功能异常:系统功能异常或不可用', |
||||||
|
'系统建议:用的不爽,我有建议', |
||||||
|
'功能新增:我想用的功能,希望能开发新增', |
||||||
|
'服务建议:服务商服务不到位,我有建议' |
||||||
|
], |
||||||
|
feedbackList: [], |
||||||
|
// 表头 |
||||||
|
columns: [ |
||||||
|
{ |
||||||
|
title: '反馈类型', |
||||||
|
dataIndex: 'type', |
||||||
|
scopedSlots: { customRender: 'type' } |
||||||
|
}, |
||||||
|
{ |
||||||
|
title: '建议', |
||||||
|
dataIndex: 'suggest' |
||||||
|
}, |
||||||
|
{ |
||||||
|
title: '状态', |
||||||
|
dataIndex: 'status', |
||||||
|
scopedSlots: { customRender: 'status' } |
||||||
|
}, |
||||||
|
{ |
||||||
|
title: '反馈时间', |
||||||
|
dataIndex: 'create_time' |
||||||
|
}, |
||||||
|
{ |
||||||
|
title: '来源商城', |
||||||
|
dataIndex: 'store_id', |
||||||
|
scopedSlots: { customRender: 'store_id' } |
||||||
|
}, |
||||||
|
{ |
||||||
|
title: '处理时间', |
||||||
|
dataIndex: 'deal_time' |
||||||
|
}, |
||||||
|
{ |
||||||
|
title: '回复内容', |
||||||
|
dataIndex: 'answer' |
||||||
|
}, |
||||||
|
{ |
||||||
|
title: '操作', |
||||||
|
dataIndex: 'action', |
||||||
|
width: '180px', |
||||||
|
scopedSlots: { customRender: 'action' } |
||||||
|
} |
||||||
|
] |
||||||
|
} |
||||||
|
}, |
||||||
|
created () { |
||||||
|
// 获取分类列表 |
||||||
|
this.getFeedbackList() |
||||||
|
}, |
||||||
|
methods: { |
||||||
|
// 编辑商户 |
||||||
|
async handleEdit (record) { |
||||||
|
// 显示对话框 |
||||||
|
this.$refs.EditForm.add(record) |
||||||
|
}, |
||||||
|
// 刷新列表 |
||||||
|
handleRefresh () { |
||||||
|
// 获取分类列表 |
||||||
|
this.getFeedbackList() |
||||||
|
}, |
||||||
|
// 获取商户列表 |
||||||
|
getFeedbackList () { |
||||||
|
this.isLoading = true |
||||||
|
Api.feedbackList() |
||||||
|
.then((result) => { |
||||||
|
console.log(result) |
||||||
|
this.feedbackList = result.data.data |
||||||
|
this.isLoading = false |
||||||
|
}) |
||||||
|
.finally(() => (this.isLoading = false)) |
||||||
|
} |
||||||
|
} |
||||||
|
} |
||||||
|
</script> |
@ -0,0 +1,171 @@ |
|||||||
|
<template> |
||||||
|
<a-modal |
||||||
|
title="新增商户" |
||||||
|
:width="800" |
||||||
|
:visible="visible" |
||||||
|
:confirmLoading="confirmLoading" |
||||||
|
:maskClosable="false" |
||||||
|
:destroyOnClose="true" |
||||||
|
@ok="handleSubmit" |
||||||
|
@cancel="handleCancel" |
||||||
|
> |
||||||
|
<a-spin :spinning="confirmLoading"> |
||||||
|
<a-form :form="form"> |
||||||
|
<a-form-item label="反馈类型" :labelCol="labelCol" :wrapperCol="wrapperCol"> |
||||||
|
<a-radio-group |
||||||
|
v-decorator="['type', { rules: [{ required: true, message: '请选择反馈类型' }] }]" |
||||||
|
> |
||||||
|
<a-radio v-for="(item, index) in typeList" :key="index + 1" :value="index + 1">{{ item }}</a-radio> |
||||||
|
</a-radio-group> |
||||||
|
</a-form-item> |
||||||
|
<a-form-item label="建议" :labelCol="labelCol" :wrapperCol="wrapperCol"> |
||||||
|
<a-textarea |
||||||
|
v-decorator="['suggest', { rules: [{ required: true, message: '请输入建议' }] }]" |
||||||
|
/> |
||||||
|
</a-form-item> |
||||||
|
<a-form-item label="反馈图片" :labelCol="labelCol" :wrapperCol="wrapperCol"> |
||||||
|
<SelectImage |
||||||
|
:multiple="true" |
||||||
|
:defaultList="info.imgsInfo ? info.imgsInfo : []" |
||||||
|
v-decorator="['imgs', { rules: [{ required: true, message: '请上传反馈图片' }] }]" /> |
||||||
|
</a-form-item> |
||||||
|
<a-form-item label="姓名" :labelCol="labelCol" :wrapperCol="wrapperCol"> |
||||||
|
<a-input |
||||||
|
v-decorator="['name', { rules: [{ required: true, message: '请输入姓名' }] }]" |
||||||
|
/> |
||||||
|
</a-form-item> |
||||||
|
<a-form-item label="电话" :labelCol="labelCol" :wrapperCol="wrapperCol"> |
||||||
|
<a-input |
||||||
|
v-decorator="['phone', { rules: [{ required: true, message: '请输入电话' }] }]" |
||||||
|
/> |
||||||
|
</a-form-item> |
||||||
|
<a-form-item label="单位" :labelCol="labelCol" :wrapperCol="wrapperCol"> |
||||||
|
<a-input |
||||||
|
v-decorator="['unit', { rules: [{ required: true, message: '请输入单位' }] }]" |
||||||
|
/> |
||||||
|
</a-form-item> |
||||||
|
<a-form-item label="回复内容" :labelCol="labelCol" :wrapperCol="wrapperCol"> |
||||||
|
<a-textarea |
||||||
|
v-decorator="['answer', { rules: [{ required: true, message: '请输入回复内容' }] }]" |
||||||
|
/> |
||||||
|
</a-form-item> |
||||||
|
</a-form> |
||||||
|
</a-spin> |
||||||
|
</a-modal> |
||||||
|
</template> |
||||||
|
|
||||||
|
<script> |
||||||
|
import * as Api from '@/api/feedback' |
||||||
|
import { SelectImage } from '@/components' |
||||||
|
export default { |
||||||
|
components: { |
||||||
|
SelectImage |
||||||
|
}, |
||||||
|
props: { |
||||||
|
// 分类列表 |
||||||
|
}, |
||||||
|
data () { |
||||||
|
return { |
||||||
|
typeList: [ |
||||||
|
'功能异常:系统功能异常或不可用', |
||||||
|
'系统建议:用的不爽,我有建议', |
||||||
|
'功能新增:我想用的功能,希望能开发新增', |
||||||
|
'服务建议:服务商服务不到位,我有建议' |
||||||
|
], |
||||||
|
accountList: [], |
||||||
|
// 对话框标题 |
||||||
|
title: '', |
||||||
|
// 标签布局属性 |
||||||
|
labelCol: { |
||||||
|
span: 7 |
||||||
|
}, |
||||||
|
// 输入框布局属性 |
||||||
|
wrapperCol: { |
||||||
|
span: 13 |
||||||
|
}, |
||||||
|
// modal(对话框)是否可见 |
||||||
|
visible: false, |
||||||
|
// modal(对话框)确定按钮 loading |
||||||
|
confirmLoading: false, |
||||||
|
// 当前表单元素 |
||||||
|
form: this.$form.createForm(this), |
||||||
|
info: {} |
||||||
|
} |
||||||
|
}, |
||||||
|
methods: { |
||||||
|
// 显示对话框 |
||||||
|
add (info) { |
||||||
|
// 显示窗口 |
||||||
|
this.visible = true |
||||||
|
// 当前分类记录 |
||||||
|
this.info = info |
||||||
|
// 设置默认值 |
||||||
|
this.setFieldsValue() |
||||||
|
}, |
||||||
|
// 设置默认值 |
||||||
|
setFieldsValue () { |
||||||
|
const { |
||||||
|
form: { setFieldsValue } |
||||||
|
} = this |
||||||
|
// 设置表单内容 |
||||||
|
this.$nextTick(() => { |
||||||
|
setFieldsValue( |
||||||
|
// eslint-disable-next-line no-undef |
||||||
|
_.pick(this.info, [ |
||||||
|
'type', |
||||||
|
'suggest', |
||||||
|
'imgs', |
||||||
|
'name', |
||||||
|
'phone', |
||||||
|
'unit', |
||||||
|
'answer' |
||||||
|
]) |
||||||
|
) |
||||||
|
}) |
||||||
|
}, |
||||||
|
// 确认按钮 |
||||||
|
handleSubmit (e) { |
||||||
|
e.preventDefault() |
||||||
|
// 表单验证 |
||||||
|
const { |
||||||
|
form: { validateFields } |
||||||
|
} = this |
||||||
|
validateFields((errors, values) => { |
||||||
|
// 提交到后端api |
||||||
|
if (!errors) { |
||||||
|
this.onFormSubmit(values) |
||||||
|
} |
||||||
|
}) |
||||||
|
}, |
||||||
|
|
||||||
|
// 关闭对话框事件 |
||||||
|
handleCancel () { |
||||||
|
this.visible = false |
||||||
|
this.form.resetFields() |
||||||
|
}, |
||||||
|
|
||||||
|
// 提交到后端api |
||||||
|
onFormSubmit (values) { |
||||||
|
this.confirmLoading = true |
||||||
|
Api.editFeedback({ form: { feedback_id: this.info['feedback_id'], ...values, imgs: (values.imgs && (Array.isArray(values.imgs) ? values.imgs.join(',') : values.imgs)) || '' } }) |
||||||
|
.then((result) => { |
||||||
|
// 显示成功 |
||||||
|
this.$message.success(result.message, 1.5) |
||||||
|
// 关闭对话框事件 |
||||||
|
this.handleCancel() |
||||||
|
// 通知父端组件提交完成了 |
||||||
|
this.$emit('handleSubmit', values) |
||||||
|
}) |
||||||
|
.finally((result) => { |
||||||
|
this.confirmLoading = false |
||||||
|
}) |
||||||
|
} |
||||||
|
} |
||||||
|
} |
||||||
|
</script> |
||||||
|
|
||||||
|
<style> |
||||||
|
.ant-form textarea { |
||||||
|
height: 120px!important; |
||||||
|
} |
||||||
|
</style> |
Loading…
Reference in new issue