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.

331 lines
7.8 KiB

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

<template>
<!-- 20221220 -->
<view class="feedback-index-page">
<!-- 页面内容 -->
<view class="page-content">
<!-- 顶部固定 -->
<view class="jc-header bg-ff">
<!-- 图片 -->
<view class="padding-lr-30 padding-tb-10">
<image class="jc-image" style="width: 690rpx;height: 220rpx;" mode="aspectFill" :src="topImg">
</image>
</view>
<!-- 切换标签 -->
<view class="">
<ty-tab-around :list="tabsList" :list-key="listKey" :active.sync="tabsIndex" :color="'#2F97FF'"
@click="changeTabs">
</ty-tab-around>
</view>
</view>
<!-- 意见反馈 -->
<view class="content-block">
<view class="" v-if="tabsIndex == 0">
<!-- 反馈内容 -->
<view class="padding-lr-30 bg-ff ">
<view class="line-height-100 text-28 text-4d">问题反馈类型</view>
<!-- 类别 -->
<view class="flex flex-wrap">
<view class="category-item margin-bottom-20" :class="{ 'active' : categoryIndex == index}"
v-for="(item,index) in categoryList" :key="index" @click="categoryClick(index)">
{{item.name}}
</view>
</view>
<!-- 文本框 -->
<view class="dashed-bottom-ed padding-bottom-10">
<textarea class="feedback-content margin-top-20 line-40" placeholder="选择问题类型,帮助我们更快处理您的反馈"
placeholder-class="text-28 text-b3" maxlength="500" v-model="content"></textarea>
<view class="margin-top-30 flex justify-end text-28" style="color: #d8d8d8;">
{{content.length > 500 ? 500 : content.length}}/500
</view>
</view>
<!-- 图片上传 -->
<view class="padding-top-30">
<ty-image-images-upload :count="imageCount" :image_list="imagePath"
:video-count="videoCount" @imageChange="imageChange">
</ty-image-images-upload>
</view>
</view>
<!-- 个人信息 -->
<view class="margin-top-15 padding-lr-30 bg-ff">
<view class="line-100 border-bottom flex align-center">
<view class="width-160">联系人姓名</view>
<input class="flex-one margin-left-30" placeholder="请输入联系人姓名" type="text" v-model="linkman"
placeholder-class="text-b3 text-28" />
</view>
<view class="line-100 flex align-center">
<view class="width-160">手机号码</view>
<input class="flex-one margin-left-30" placeholder="请输入手机号" type="number" maxlength="11"
v-model="mobilePhone" placeholder-class="text-b3 text-28" />
</view>
</view>
<!-- 提交按钮 -->
<view class="btn width-100p padding-lr-30" @click="submit">
<view class="line-height-80 radius-40 bg-2f9 text-center text-28 text-ff">提交</view>
</view>
</view>
<view class="text-28" v-if="tabsIndex == 1">
<ty-list-list :status="load_status">
<view class="margin-20 bg-ff radius-10" v-for="(item,index) in list" :key="index">
<!-- -->
<view class="padding-30 border-bottom-ed"
@click="go('/pages/feedback/detail?id=' + item.id)">
<view class="flex align-center justify-between">
<view class="text-28" style="color: #2A2A2A;">
<text class="margin-right-50" v-if="item.linkman">{{item.linkman}}</text>
<text>{{item.mobile_phone}}</text>
</view>
<view class="text-28" style="color: #2A2A2A;">
{{item.category_name}}
</view>
</view>
<view class="margin-top-30 height-80 line-40 text-26 text-4d text-cut-two">
{{item.content}}
</view>
</view>
<!-- 操作按钮 -->
<view class="flex align-center justify-between padding-lr-30 height-100">
<view class="text-24 text-b3">
{{item.show_create_time}}
</view>
<view class="flex align-center justify-end">
<view class="line-btn" @click="del(index)">
</view>
<view class="full-btn" @click="go('/pages/feedback/detail?id=' + item.id)">
查看详情
</view>
</view>
</view>
</view>
</ty-list-list>
</view>
</view>
</view>
<!-- 页面浮层 -->
<view class="page-layer">
</view>
</view>
</template>
<script>
import feedback from "./api/feedback.js"
export default {
data() {
return {
// 顶部图片
topImg: "",
// 分类列表
categoryList: [],
// 分类选中INDEX
categoryIndex: -1,
// tab标签选中INDEX
tabsIndex: 0,
// 显示key
listKey: '',
// tab标签
tabsList: ['意见反馈', '反馈记录'],
// 图片数量
imageCount: 9,
// 视频数量为0没有视频
videoCount: 0,
// 上传的图片
imagePath: [],
// 意见反馈内容
content: '',
// 联系人
linkman: '',
// 联系电话
mobilePhone: '',
// 列表状态
load_status: '',
// 列表
list: []
}
},
onReady() {
// 获取配置
this.getConfig()
// 获取分类列表
this.listCategory()
},
methods: {
/**
* 获取配置
* @date 2022-10-20
*/
getConfig() {
feedback.getFeedbackConfig().then(res => {
if (res.code == 0) {
// 顶部图片
this.topImg = res.data.top_img
}
})
},
/**
* 获取分类列表
* @date 2022-10-20
*/
listCategory() {
feedback.listCategory().then(res => {
if (res.code == 0) {
// 分类列表
this.categoryList = res.data.category_list
}
})
},
/**
* 切换标签
* @date 2022-10-20
*/
changeTabs(e) {
if (e.index == 1) {
this.loadList(1)
}
},
/**
* 切换分类
* @date 2022-10-20
*/
categoryClick(index) {
this.categoryIndex = index
},
/**
* 上传图片
* @date 2022-12-20
*/
imageChange(e) {
this.imagePath = e.image_list
},
/**
* 提交反馈
* @date 2022-12-20
*/
submit() {
if (this.categoryIndex == -1) {
this.cn.toast('请选择类别')
return false
}
if (!this.mobilePhone) {
this.cn.toast('请填写手机号码')
return false
}
if (!this.content) {
this.cn.toast('请填写反馈内容')
return false
}
feedback.insertFeedback(this.categoryList[this.categoryIndex].id, this.content, this.imagePath, this
.mobilePhone, this.linkman).then(res => {
if (res.code == 0) {
this.cn.alert(res.msg).then(res => {
this.linkman = ''
this.mobilePhone = ''
this.content = ''
this.imagePath = []
this.categoryIndex = -1
this.tabsIndex = 1
this.loadList(1)
})
}
})
},
/**
* 删除意见反馈
* @param {int} index 第INDEX条数据
* @date 2022-12-22
*/
del(index) {
let feedbackId = this.list[index].id
this.cn.confirm('确认要删除吗?').then(res => {
if (res.confirm) {
feedback.deleteFeedback(feedbackId).then(res => {
if (res.code == 0) {
this.loadList(1)
}
})
}
})
},
/**
* 加载列表
* @param {int} isFirstPage 是否第一页 0--不是 1--是
* @date 2022-12-22
*/
loadList(isFirstPage) {
feedback.listFeedback(this, isFirstPage)
}
}
}
</script>
<style scoped>
/* 内容区域 */
.content-block {
margin-top: calc(240rpx + 88rpx + 15rpx);
padding-bottom: calc(env(safe-area-inset-bottom) + 80rpx + 40rpx);
}
/* 分类 */
.category-item {
margin-right: 15rpx;
padding: 0 30rpx;
height: 60rpx;
line-height: 60rpx;
border-radius: 30rpx;
background: #F5F5F5;
text-align: center;
font-size: 26rpx;
color: #4D4D4D;
}
.category-item.active {
background: #2F97FF;
color: #fff;
}
/* 意见反馈内容 */
.feedback-content {
width: 100%;
height: 160rpx;
line-height: 40rpx;
}
/* 提交按钮 */
.btn {
position: fixed;
left: 0;
bottom: calc(20rpx + env(safe-area-inset-bottom));
}
</style>