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.

343 lines
7.7 KiB

4 weeks ago
4 weeks ago
4 weeks ago
4 weeks ago
4 weeks ago
  1. <template>
  2. <view class="main">
  3. <view class="top" :style="{height:iSMT+'px'}"></view>
  4. <!-- 头部导航 -->
  5. <view class="header">
  6. <view class="back-icon">
  7. <image @click="goBack()" src="/static/customer-service-platform/cs-platform-back.png"
  8. class="header-icon-image"></image>
  9. </view>
  10. <view class="title">智能客服中台</view>
  11. <view class="notification-icon">
  12. <image src="/static/customer-service-platform/message.png" class="header-icon-image"></image>
  13. </view>
  14. </view>
  15. <!-- 内容区域 - 使用滚动视图 -->
  16. <scroll-view scroll-y class="content-container">
  17. <view class="list-wrapper" v-if="historyList.length > 0">
  18. <view class="content-header">
  19. <text class="content-title">历史反馈内容</text>
  20. </view>
  21. <view class="card-line"></view>
  22. <view v-for="(item, idx) in historyList" :key="item.id" class="history-item card">
  23. <view class="item-head">
  24. <view class="dot-outer">
  25. <view class="dot-inner"></view>
  26. </view>
  27. <text class="feedback-time">{{ item.time }}</text>
  28. <text class="feedback-status">
  29. {{ item.statusText }}
  30. <image class="smile-icon" src="/static/customer-service-platform/smile-icon.png"></image>
  31. </text>
  32. </view>
  33. <view class="content-box">
  34. <text class="content-text">{{ item.content }}</text>
  35. <text class="count">{{ item.content.length }}/200</text>
  36. </view>
  37. <view v-if="item.images && item.images.length" class="thumb-row">
  38. <view v-for="(img, i) in item.images" :key="i" class="thumb-slot"
  39. @click="previewImage(item.images, i)">
  40. <image :src="img" mode="scaleToFill" class="thumb-img" />
  41. </view>
  42. </view>
  43. </view>
  44. </view>
  45. <!-- 如果没有历史显示空态 -->
  46. <view v-if="historyList.length === 0" class="empty">
  47. <image mode="aspectFit" class="empty-img" src="/static/customer-service-platform/empty-content.png">
  48. </image>
  49. <text class="empty-tip">暂无内容~</text>
  50. </view>
  51. </scroll-view>
  52. </view>
  53. </template>
  54. <script>
  55. import { getFeedbackRecords, addFeedbackRecord} from "../../api/customerServicePlatform/customerServicePlatform";
  56. export default {
  57. data() {
  58. return {
  59. iSMT: 0,
  60. // historyList: [],
  61. historyList: [{
  62. id: 1,
  63. time: '2025/10/16 11:46',
  64. status: '成功', // 成功/失败/处理中等
  65. statusText: '反馈成功',
  66. content: '你是不是总是看着股票回调时心里发慌,不知道什么时候进场才是最安全的?追高买错被套牢,亏得眼泪直流aaa,回调时又不敢进,错过了反弹的机会?今天,我将带你掌握一套精准确认底部的三步法——通过超卖信号、关键K线和强势启动点,帮助你轻松识别市场底部,稳健进场,避开高位追涨,赚取大波利润!我们今天会结合特斯拉(TSLA)和阿里巴巴(BABA)的经aaa典案例,帮助你更好地理解这些技巧,赶快拿起纸笔,开始学',
  67. images: []
  68. },
  69. {
  70. id: 2,
  71. time: '2025/10/16 11:46',
  72. status: '成功',
  73. statusText: '反馈成功',
  74. content: '请描述您想反馈的内容\n第二条示例文本,长度可以不一样,测试多行显示和字数统计功能。这里补充一些文字以便测试外观和换行效果。',
  75. images: []
  76. }
  77. ]
  78. };
  79. },
  80. mounted() {
  81. this.iSMT = uni.getSystemInfoSync().statusBarHeight;
  82. this.loadHistoryList()
  83. },
  84. methods: {
  85. goBack() {
  86. if (typeof uni !== 'undefined' && uni.navigateBack) {
  87. uni.navigateBack();
  88. } else {
  89. window.history.back();
  90. }
  91. },
  92. async loadHistoryList(){
  93. console.log("????")
  94. const res = await getFeedbackRecords({
  95. token:'dccec0b65a94f498b8183a17589ab16e'
  96. })
  97. console.log(res)
  98. if(res.code == 200){
  99. }
  100. },
  101. previewImage(list, index) {
  102. if (typeof uni !== 'undefined' && uni.previewImage) {
  103. uni.previewImage({
  104. current: list[index],
  105. urls: list
  106. });
  107. } else {
  108. // H5 fallback
  109. window.open(list[index], '_blank');
  110. }
  111. }
  112. }
  113. };
  114. </script>
  115. <style scoped>
  116. .main {
  117. display: flex;
  118. flex-direction: column;
  119. height: 100vh;
  120. background-color: #ffffff;
  121. }
  122. .header {
  123. display: flex;
  124. justify-content: space-between;
  125. align-items: center;
  126. padding: 20rpx 30rpx;
  127. background-color: #ffffff;
  128. }
  129. .title {
  130. color: #000000;
  131. text-align: center;
  132. font-size: 32rpx;
  133. font-style: normal;
  134. font-weight: 400;
  135. }
  136. .back-icon,
  137. .notification-icon {
  138. width: 40rpx;
  139. display: flex;
  140. align-items: center;
  141. justify-content: center;
  142. }
  143. .header-icon-image {
  144. width: 40rpx;
  145. height: 40rpx;
  146. object-fit: contain;
  147. }
  148. .content-container {
  149. padding: 20rpx;
  150. padding-top: 0;
  151. width: 100%;
  152. box-sizing: border-box;
  153. overflow-x: hidden;
  154. }
  155. /* 列表包装器,居中卡片 */
  156. .list-wrapper {
  157. width: 90%;
  158. margin: 0 auto;
  159. padding: 20rpx 40rpx;
  160. flex-direction: column;
  161. align-items: center;
  162. gap: 20rpx;
  163. box-sizing: border-box;
  164. border-radius: 12rpx;
  165. border: 4rpx solid #FCC8D4;
  166. background: linear-gradient(180deg, #FCC8D3 0%, #FEF0F3 30%, #FFF 100%);
  167. }
  168. .content-header {
  169. width: 100%;
  170. display: flex;
  171. align-items: center;
  172. justify-content: space-between;
  173. }
  174. .content-title {
  175. color: #000000;
  176. font-size: 32rpx;
  177. font-style: normal;
  178. font-weight: 400;
  179. line-height: normal;
  180. }
  181. .card-line {
  182. margin-top: 20rpx;
  183. width: 100%;
  184. height: 2rpx;
  185. border-radius: 2rpx;
  186. background: #FFF;
  187. }
  188. /* 每一条历史卡片 */
  189. .history-item {
  190. border-radius: 10rpx;
  191. padding: 20rpx;
  192. margin-bottom: 20rpx;
  193. box-sizing: border-box;
  194. box-shadow: 0 4rpx 12rpx rgba(255, 77, 128, 0.06);
  195. }
  196. .item-head {
  197. display: flex;
  198. align-items: center;
  199. gap: 12rpx;
  200. margin-bottom: 12rpx;
  201. }
  202. .dot-outer {
  203. width: 24rpx;
  204. height: 24rpx;
  205. border-radius: 50%;
  206. background: rgba(255, 214, 230, 0.5);
  207. /*粉色外圈*/
  208. display: flex;
  209. align-items: center;
  210. justify-content: center;
  211. box-shadow: 0 0 0 4rpx #ffffff;
  212. /* 最外层白色 */
  213. }
  214. .dot-inner {
  215. width: 14rpx;
  216. height: 14rpx;
  217. border-radius: 50%;
  218. background: #ff4150;
  219. /* 中心红色 */
  220. }
  221. .feedback-time {
  222. color: #000000;
  223. flex: 1;
  224. font-size: 22rpx;
  225. font-style: normal;
  226. font-weight: 400;
  227. line-height: normal;
  228. padding-left: 26rpx;
  229. }
  230. .feedback-status {
  231. color: #ff4150;
  232. font-size: 12rpx;
  233. font-style: normal;
  234. font-weight: 400;
  235. line-height: normal;
  236. display: flex;
  237. align-items: center;
  238. }
  239. .smile-icon {
  240. width: 32rpx;
  241. height: 32rpx;
  242. }
  243. /* 内容框 */
  244. .content-box {
  245. border: 2rpx solid #f0e6ea;
  246. background: #fff;
  247. border-radius: 8rpx;
  248. padding: 18rpx;
  249. position: relative;
  250. box-sizing: border-box;
  251. min-height: 160rpx;
  252. }
  253. .content-text {
  254. display: block;
  255. white-space: pre-wrap;
  256. word-break: break-word;
  257. color: #8a8a8a;
  258. font-size: 24rpx;
  259. font-style: normal;
  260. font-weight: 700;
  261. line-height: normal;
  262. padding-bottom: 26rpx;
  263. }
  264. .count {
  265. position: absolute;
  266. right: 14rpx;
  267. bottom: 10rpx;
  268. color: #000000;
  269. font-size: 24rpx;
  270. font-style: normal;
  271. font-weight: 400;
  272. line-height: normal;
  273. }
  274. .thumb-row {
  275. display: flex;
  276. flex-wrap: wrap;
  277. justify-content: flex-start;
  278. align-items: flex-start;
  279. align-content: flex-start;
  280. width: 100%;
  281. box-sizing: border-box;
  282. gap: 20rpx;
  283. margin-top: 14rpx;
  284. background: #F9FAFE;
  285. padding: 20rpx;
  286. }
  287. .thumb-slot {
  288. width: calc((100% - 2 * 25rpx) / 3);
  289. aspect-ratio: 1 / 1;
  290. border-radius: 7rpx;
  291. border: 1.2rpx solid #F0F1F1;
  292. display: flex;
  293. align-items: center;
  294. justify-content: center;
  295. overflow: hidden;
  296. }
  297. .thumb-img {
  298. width: 100%;
  299. height: 100%;
  300. }
  301. .empty {
  302. padding: 50rpx 0;
  303. text-align: center;
  304. color: #afafaf;
  305. font-size: 32rpx;
  306. font-style: normal;
  307. font-weight: 500;
  308. line-height: 48rpx;
  309. }
  310. .empty-img {
  311. width: 100%;
  312. }
  313. </style>