placeActivityList.vue 7.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287
  1. <template>
  2. <van-nav-bar
  3. fixed
  4. title="场所活动"
  5. left-text=""
  6. left-arrow
  7. @click-left="onClickLeft"
  8. @click-right="onClickRight"
  9. >
  10. <template #right>
  11. <van-icon name="plus" size="18" />
  12. </template>
  13. </van-nav-bar>
  14. <div class="main">
  15. <van-search
  16. v-model="searchVal"
  17. clearable
  18. show-action
  19. shape="round"
  20. placeholder="请输入搜索关键词"
  21. label="活动名称"
  22. input-align="center"
  23. @search="onSearch"
  24. @cancel="onCancel"
  25. />
  26. <van-tabs
  27. v-show="!searchShow"
  28. v-model:active="active"
  29. title-inactive-color="#bdbdbd"
  30. title-active-color="#36a7f3"
  31. >
  32. <van-tab title="未审核" name="0">
  33. <van-list
  34. v-model:loading="loading"
  35. :finished="finished"
  36. finished-text="没有更多了"
  37. @load="onLoad"
  38. >
  39. <van-swipe-cell v-for="item in list" :key="item">
  40. <div class="list_item" @click="goInfo(item.id)">
  41. <div class="item-left">
  42. <p v-show="item.activityTime != ''" style="color: #c4c4c4">
  43. {{ item.activityTime }}
  44. </p>
  45. <p style="color: red">待审核</p>
  46. </div>
  47. <van-cell>
  48. <template #title>
  49. <van-text-ellipsis
  50. rows="2"
  51. :content="`${item.reporter.name}申请于${item.placeDel}举办${item.activityName}活动`"
  52. />
  53. </template>
  54. <template #label>
  55. {{ item.place }}
  56. </template>
  57. </van-cell>
  58. </div>
  59. <template #right>
  60. <van-button
  61. square
  62. type="danger"
  63. text="删除"
  64. class="button"
  65. @click="deleteItem(item.id)"
  66. />
  67. <van-button
  68. square
  69. type="primary"
  70. text="修改"
  71. class="button"
  72. @click="updateItem(item)"
  73. />
  74. </template>
  75. </van-swipe-cell>
  76. </van-list>
  77. </van-tab>
  78. <van-tab title="已审核" name="1">
  79. <van-list
  80. v-model:loading="loading"
  81. :finished="finished"
  82. finished-text="没有更多了"
  83. @load="onLoad"
  84. >
  85. <van-swipe-cell v-for="item in readList" :key="item">
  86. <div class="list_item" @click="goInfo(item.id)">
  87. <div class="item-left">
  88. <p v-show="item.activityTime != ''" style="color: #c4c4c4">
  89. {{ item.activityTime }}
  90. </p>
  91. <p style="color: red">已审核</p>
  92. </div>
  93. <van-cell>
  94. <template #title>
  95. <van-text-ellipsis
  96. rows="2"
  97. :content="`${item.reporter.name}申请于${item.placeDel}举办${item.activityName}活动`"
  98. />
  99. </template>
  100. <template #label>
  101. {{ item.place }}
  102. </template>
  103. </van-cell>
  104. </div>
  105. </van-swipe-cell>
  106. </van-list>
  107. </van-tab>
  108. </van-tabs>
  109. <!-- 搜索结果 -->
  110. <van-list
  111. v-show="searchShow"
  112. v-model:loading="loading"
  113. :finished="finished"
  114. finished-text="没有更多了"
  115. @load="onLoad"
  116. >
  117. <van-swipe-cell v-for="item in searchList" :key="item">
  118. <div class="list_item" @click="goInfo(item.id)">
  119. <div class="item-left">
  120. <p v-show="item.activityTime != ''" style="color: #c4c4c4">
  121. {{ item.activityTime }}
  122. </p>
  123. <p style="color: red">
  124. <span v-if="item.assessment == 1">已审核</span>
  125. <span v-else>待审核</span>
  126. </p>
  127. </div>
  128. <van-cell>
  129. <template #title>
  130. <van-text-ellipsis
  131. rows="2"
  132. :content="` ${item.reporter.name}申请于${item.placeDel}举办${item.activityName}活动`"
  133. />
  134. </template>
  135. <template #label>
  136. {{ item.place }}
  137. </template>
  138. </van-cell>
  139. </div>
  140. </van-swipe-cell>
  141. </van-list>
  142. <van-dialog
  143. v-model:show="showDel"
  144. show-cancel-button
  145. confirmButtonText="删除"
  146. message="请确认删除该记录"
  147. @confirm="Itemdel"
  148. >
  149. </van-dialog>
  150. </div>
  151. </template>
  152. <script>
  153. import { ref } from "vue";
  154. import placeActivityServer from "@/api/placeActivity/placeActivityServer";
  155. import { useRouter } from "vue-router";
  156. export default {
  157. name: "placeActivityList",
  158. setup() {
  159. // 返回
  160. const onClickLeft = () => {
  161. history.back();
  162. };
  163. let router = useRouter();
  164. // 上报
  165. const onClickRight = () => {
  166. router.push("placeActivity");
  167. };
  168. // 切换
  169. let active = ref(0);
  170. // 未审核列表
  171. let list = ref([]);
  172. // 已审核列表
  173. let readList = ref([]);
  174. const loading = ref(false);
  175. const finished = ref(false);
  176. let index = 0;
  177. const onLoad = () => {
  178. loading.value = true;
  179. finished.value = false;
  180. // 异步更新数据
  181. new placeActivityServer()
  182. .list({
  183. current: index + 1,
  184. size: 10,
  185. })
  186. .then(({ records, total }) => {
  187. records.forEach((item) => {
  188. if (item.assessment == 0) {
  189. list.value.push(item);
  190. } else {
  191. readList.value.push(item);
  192. }
  193. });
  194. // 加载状态结束
  195. loading.value = false;
  196. let page = parseInt(total / 10);
  197. // 数据全部加载完成
  198. if (index >= page || total < 10) {
  199. finished.value = true;
  200. } else {
  201. index++;
  202. }
  203. });
  204. };
  205. // 搜索
  206. let searchShow = ref(false);
  207. let searchList = ref([]);
  208. const searchVal = ref("");
  209. const onSearch = () => {
  210. searchShow.value = true;
  211. searchList.value = [];
  212. new placeActivityServer()
  213. .list({
  214. current: 1,
  215. size: 10000,
  216. activityName: searchVal.value,
  217. })
  218. .then(({ records }) => {
  219. searchList.value.push(...records);
  220. // 加载状态结束
  221. loading.value = false;
  222. });
  223. };
  224. const onCancel = () => {
  225. searchVal.value = "";
  226. searchShow.value = false;
  227. };
  228. // 删除确认
  229. let showDel = ref(false);
  230. let ids = ref("");
  231. const deleteItem = (val) => {
  232. showDel.value = true;
  233. ids.value = val;
  234. };
  235. // 删除
  236. const Itemdel = () => {
  237. new placeActivityServer().delete(ids.value).then((res) => {
  238. console.log("删除", res);
  239. index = 0;
  240. loading.value = true;
  241. list.value = [];
  242. readList.value = [];
  243. onLoad();
  244. });
  245. };
  246. // 修改跳转
  247. const updateItem = (val) => {
  248. router.push({
  249. path: "/placeActivity",
  250. query: { id: val.id },
  251. });
  252. };
  253. // 详情跳转
  254. const goInfo = (val) => {
  255. router.push({
  256. path: "/placeActivityInfo",
  257. query: { id: val },
  258. });
  259. };
  260. return {
  261. active,
  262. onClickLeft,
  263. list,
  264. readList,
  265. onLoad,
  266. loading,
  267. finished,
  268. searchShow,
  269. searchVal,
  270. searchList,
  271. onSearch,
  272. onCancel,
  273. onClickRight,
  274. deleteItem,
  275. updateItem,
  276. goInfo,
  277. showDel,
  278. Itemdel,
  279. };
  280. },
  281. };
  282. </script>
  283. <style scoped>
  284. </style>