hookehuyr

✨ feat(我的留言): 列表,删除留言API联调

1 <template> 1 <template>
2 - <div class=""> 2 + <van-list v-model:loading="loading" :finished="finished" finished-text="没有更多了" @load="onLoad">
3 + <div v-for="(item, key) in commentList" :key="key" class="comment">
3 <div class="comment-wrapper"> 4 <div class="comment-wrapper">
4 <van-row style="font-size: 0.9rem;"> 5 <van-row style="font-size: 0.9rem;">
5 <van-col span="4"> 6 <van-col span="4">
6 - <van-image round width="3rem" height="3rem" src="https://cdn.jsdelivr.net/npm/@vant/assets/cat.jpeg" /> 7 + <van-image round width="3rem" height="3rem" :src="item.avatar" />
7 </van-col> 8 </van-col>
8 - <van-col span="16"> 9 + <van-col span="15">
9 - <p>娜娜~</p> 10 + <p>{{ item.name }}</p>
10 - <p>杨浦民办科技幼稚园</p> 11 + <p>{{ item.kg_name }}</p>
11 </van-col> 12 </van-col>
12 - <van-col span="4" style="text-align: center;"> 13 + <van-col span="5" style="text-align: right;">
13 - <p style="color: #333333;">删除</p> 14 + <p @click="deleteComment(item)" style="color: #333333;">删除</p>
14 - <p>2-25</p> 15 + <p>{{ item.comment_time }}</p>
15 </van-col> 16 </van-col>
16 </van-row> 17 </van-row>
17 <van-row> 18 <van-row>
18 <van-col> 19 <van-col>
19 - <span style="color: #222222;">留言<span style="color: #0B3A72;">@王忆慈</span>:感谢您的爱心捐赠,把这么优秀的书带给山区的小朋友!</span> 20 + <span style="color: #222222;">{{ item.c_action }}<span style="color: #0B3A72;">@{{ item.c_name }}</span>:{{ item.note }}</span>
20 </van-col> 21 </van-col>
21 </van-row> 22 </van-row>
22 </div> 23 </div>
23 24
24 - <div style="padding: 1rem; background-color: #F7F7F7;" @click="onClick(item)"> 25 + <div class="raw-ref" @click="onClick(item)">
25 <van-row> 26 <van-row>
26 - <van-col span="8" style="position: relative;"> 27 + <van-col span="8" class="image">
27 - <van-image width="8rem" height="5rem" lazy-load src="https://lanhu.oss-cn-beijing.aliyuncs.com/SketchPng67db765f866ac7aba573f734855380b0c1270fb19b8c5ce7fec681289eeae7d9" style="vertical-align: text-bottom;" > 28 + <van-image width="8rem" height="5rem" lazy-load
29 + src="https://lanhu.oss-cn-beijing.aliyuncs.com/SketchPng67db765f866ac7aba573f734855380b0c1270fb19b8c5ce7fec681289eeae7d9"
30 + style="vertical-align: text-bottom;">
28 <template v-slot:error>加载失败</template> 31 <template v-slot:error>加载失败</template>
29 </van-image> 32 </van-image>
30 <div style="position: absolute; top: 2rem; left: 3rem;"> 33 <div style="position: absolute; top: 2rem; left: 3rem;">
31 - <van-image width="2rem" height="2rem" :src="icon_player" style="vertical-align: text-bottom;" > </van-image> 34 + <van-image width="2rem" height="2rem" :src="icon_player" style="vertical-align: text-bottom;"> </van-image>
32 </div> 35 </div>
33 </van-col> 36 </van-col>
34 - <van-col span="14" style="line-height: 2; margin-left: 1rem;"> 37 + <van-col span="14" class="text">
35 - <p style="font-size: 1.15rem;">@王忆慈</p> 38 + <p style="font-size: 1.15rem;">{{ item.perf_name }}</p>
36 - <p style="color: #999999;">逃家小兔绘本|汉语</p> 39 + <p style="color: #999999;">{{ item.book_name }} | {{ item.localism_type }}</p>
37 </van-col> 40 </van-col>
38 </van-row> 41 </van-row>
39 </div> 42 </div>
40 </div> 43 </div>
44 + </van-list>
41 </template> 45 </template>
42 46
43 <script setup> 47 <script setup>
...@@ -46,53 +50,93 @@ import icon_player from '@images/bofang@2x.png' ...@@ -46,53 +50,93 @@ import icon_player from '@images/bofang@2x.png'
46 import { ref, reactive, onMounted } from 'vue' 50 import { ref, reactive, onMounted } from 'vue'
47 import { useRoute, useRouter } from 'vue-router' 51 import { useRoute, useRouter } from 'vue-router'
48 import axios from '@/utils/axios'; 52 import axios from '@/utils/axios';
49 -import $ from 'jquery' 53 +import _ from 'lodash'
50 -import { Toast } from 'vant'; 54 +import { Toast, Dialog } from 'vant';
51 const $route = useRoute(); 55 const $route = useRoute();
52 const $router = useRouter(); 56 const $router = useRouter();
53 57
54 -const item = ref({ 58 +// 我的留言接口联调
55 - "case_id": "424589807164071936", 59 +const loading = ref(false);
56 - "code": "N06", 60 +const finished = ref(false);
57 - "title": "复旦管理学奖励基金会", 61 +const commentList = ref([])
58 - "detail": "我国自古就有优秀的管理思想和实践,但中国现代管理科学则是在改革开放之后才逐步发展起来的。为进一步推动我国现代管理科学发展,原中共中央政治局常委、国务院副总理李岚清同志于2005年发起成立了复旦管理学奖励基金会,这也是中国人自己设立的管理学界第一个奖励基金会。\r\n“要真正解决好中国的管理问题,最终还是要依靠中国人自己。”这句话道出了“管理”必须根植于一个国家的社会组织和民族文化。管理科学,是兴国之道,也是一个国家软实力的重要组成部分。\r\n十六年来,基金会各项管理逐步完善,2020年首次参加社会组织等级评估即被授予“5A级社会组织”荣誉称号;FTI透明指数排名连获最优等级。基金会的评奖工作,及其开展的一系列公益项目,获得了来自各界人士的一致认可;同时借助媒体之力,不断拓宽公众对中国管理学的认识边界,受益人数不断增加。如今,基金会已逐渐发展成为中国管理学界最具影响力、最具公信力的基金会。\r\n作为一个“奖励性”的基金会,我们希望打造中国管理学界的“诺贝尔奖”。基金会目前设立了“复旦管理学杰出贡献奖”“复旦管理学终身成就奖”“复旦企业管理杰出贡献奖”三大奖项,已成为我国管理学界享有崇高声誉、具有广泛影响力的重要奖项。截至2020年,已评选出57位获奖人,他们中不乏成思危、苏东水等矢志推动中国特色的管理学及其研究走向世界的杰出专家学者,亦有张瑞敏、任正非等对中国管理学不断实践、探索的优秀民族企业家。\r\n评奖之外,基金会还积极开展了丰富多样的公益活动。自2013年起,面向我国高等学府,面向青年师生,面向中西部地区举办了“校园公益”系列讲座活动,辐射师生5000余人。\r\n联合我国管理学一级学会,举办了一系列具有国际影响力的管理学学术盛会。其中,“中国管理学年会”是中国管理学领域规模最大、层次最高的综合性学术会议。另外,基金会通过支持“中国管理学青年论坛”,为有潜力的优秀青年架起了跨学科、跨层次的学习交流平台,旨在培养中国管理学的中青年力量。\r\n为加强学术界和实业界的合作,基金会充分发挥“桥梁·引领·赋能”作用,做到将“管理学带出去”,“管理领进来”,邀请获奖人、专家学者与企业家共话“管理”。\r\n基金会还与复旦大学东方管理研究院、第一财经合作开展了“中国杰出企业家管理思想访谈录”项目,已通过42集电视专题片、6部《改变世界》、14本研究丛书等形式对外发布,另有10多个优秀案例走进了高校课堂,收益人数达10亿多人。\r\n基金会积极响应习近平总书记“把论文写在祖国大地上”的号召,与《管理学报》合作,举办专题学术研讨会,开辟“中国企业家管理思想”专栏;与知名企业合作开展“海尔生态雨林计划”等专项研究。\r\n2020年新冠疫情的突发,对全国各地的公共卫生治理都是前所未有的考验。为总结出应对疫情的科学、高效的经验,提供疫情应对经验给相关部门,基金会资助了“新冠疫情防控防治的中国特色管理理论与方法”系列专著及案例研究。于基金会而言,这件事意义非常。\r\n作为一个扎根于中国管理学领域发展的公益组织,基金会在各级领导的亲切关怀下不断发展。获奖人所提出管理思想、管理理论和实践的创新、各项公益活动等,对于上海乃至全国各地的社会治理、公共管理与企业管理都发挥了重要的作用。在每年的颁奖典礼上,历任上海市领导均受邀出席并致辞。当今世界正面临百年未有的大变局,发展中国特色的管理学、并让中国特色管理学发挥更大的影响力,这比任何时候都更加迫切。在未来的公益发展事业中,基金会将继续助力中国特色管理学的探索和创新,为增强上海自主创新能力,提高城市国际竞争力,做出新的重大的贡献!", 62 +let limit = ref(10);
59 - "cover": { 63 +let offset = ref(0)
60 - "name": "N06.jpg", 64 +
61 - "url": "http://gyzs.onwall.cn/2021gyzs/N06.jpg", 65 +const onLoad = () => {
62 - "uid": 1564543218846, 66 + axios.get('/srv/?a=my_comment', {
63 - "status": "success" 67 + params: {
64 - }, 68 + limit: limit.value,
65 - "video": { 69 + offset: offset.value
66 - "name": "N06.mp4", 70 + }
67 - "url": "http://gyzs.onwall.cn/2021gyzs/N06.mp4", 71 + })
68 - "uid": 1564543218846, 72 + .then(res => {
69 - "status": "success" 73 + if (res.data.code === 1) {
70 - }, 74 + _.each(res.data.data, item => {
71 - "status": "ENABLE", 75 + let arr = _.split(item.target_name, '@'); // 分割评论的动作和姓名
72 - "public_vote": 3406, 76 + item.c_action = arr[0]; // 评论动作
73 - "score": 0, 77 + item.c_name = arr[1]; // 评论姓名
74 - "award": null, 78 + })
75 - "optr_date": "2021-12-31T15:50:00.547Z", 79 + commentList.value = _.concat(commentList.value, res.data.data);
76 - "corp": { 80 + offset.value = commentList.value.length;
77 - "name": "复旦管理学奖励基金会" 81 + loading.value = false;
78 - }, 82 + // 数据全部加载完成
79 - "voted": false, 83 + if (!res.data.data.length) {
80 - "liked": false 84 + // 加载状态结束
81 -}) 85 + finished.value = true;
86 + }
87 + } else {
88 + console.warn(res);
89 + Toast({
90 + icon: 'close',
91 + message: res.data.msg
92 + });
93 + }
94 + })
95 + .catch(err => {
96 + console.error(err);
97 + })
98 +}
82 99
83 -const onClick = (item) => { 100 +const onClick = (item) => { // 跳转作品详情页
84 - // 调整书籍详情页
85 $router.push({ 101 $router.push({
86 - path: '/client/bookDetail', 102 + path: '/client/videoDetail',
87 query: { 103 query: {
88 - id: item.id 104 + prod_id: item.prod_id
89 } 105 }
90 }); 106 });
91 } 107 }
92 108
93 - onMounted(() => { 109 +const deleteComment = (item) => { // 删除评论
94 - 110 + Dialog.confirm({
111 + title: '温馨提示',
112 + message: '是否确认删除该评论?',
113 + confirmButtonColor: '#713610'
114 + })
115 + .then(() => {
116 + axios.post('/srv/?a=del_comment', {
117 + comment_id: item.id
118 + })
119 + .then(res => {
120 + if (res.data.code === 1) {
121 + // 移除当前选中评论,避免刷新页面
122 + _.remove(commentList.value, comment => comment.id === item.id);
123 + Toast.success('删除成功');
124 + } else {
125 + console.warn(res);
126 + Toast({
127 + icon: 'close',
128 + message: res.data.msg
129 + });
130 + }
131 + })
132 + .catch(err => {
133 + console.error(err);
134 + });
95 }) 135 })
136 + .catch(() => {
137 + // on cancel
138 + });
139 +}
96 </script> 140 </script>
97 141
98 <script> 142 <script>
...@@ -100,12 +144,12 @@ import mixin from 'common/mixin'; ...@@ -100,12 +144,12 @@ import mixin from 'common/mixin';
100 144
101 export default { 145 export default {
102 mixins: [mixin.init], 146 mixins: [mixin.init],
103 - data () { 147 + data() {
104 return { 148 return {
105 149
106 } 150 }
107 }, 151 },
108 - mounted () { 152 + mounted() {
109 153
110 }, 154 },
111 methods: { 155 methods: {
...@@ -132,4 +176,15 @@ export default { ...@@ -132,4 +176,15 @@ export default {
132 } 176 }
133 } 177 }
134 } 178 }
179 +.raw-ref {
180 + padding: 1rem;
181 + background-color: #F7F7F7;
182 + .image {
183 + position: relative;
184 + }
185 + .text {
186 + line-height: 2;
187 + margin-left: 1rem;
188 + }
189 +}
135 </style> 190 </style>
...\ No newline at end of file ...\ No newline at end of file
......