religiousConferenceList.vue 8.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349
  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. readonly="true"
  18. clearable
  19. show-action
  20. shape="round"
  21. placeholder="请选择"
  22. label="场所名称"
  23. input-align="center"
  24. @search="onSearch"
  25. @cancel="onCancel"
  26. @click-input="showPlace = true"
  27. />
  28. <van-popup v-model:show="showPlace" round position="bottom">
  29. <van-picker
  30. title="场所选择"
  31. :columns="places"
  32. :columns-field-names="customFieldName"
  33. @cancel="showPlace = false"
  34. @confirm="getPlace"
  35. />
  36. </van-popup>
  37. <van-tabs
  38. v-show="!searchShow"
  39. v-model:active="active"
  40. title-inactive-color="#bdbdbd"
  41. title-active-color="#36a7f3"
  42. @click-tab="onClickTab"
  43. >
  44. <van-tab title="未审核" name="0">
  45. <van-list
  46. v-model:loading="loading"
  47. :finished="finished"
  48. finished-text="没有更多了"
  49. @load="onLoad"
  50. >
  51. <van-swipe-cell v-for="item in list" :key="item">
  52. <div class="list_item" @click="goInfo(item.id)">
  53. <div class="item-left">
  54. <p style="color: #c4c4c4">
  55. {{ item.updateDate }}
  56. </p>
  57. <p style="color: red">待审核</p>
  58. </div>
  59. <van-cell>
  60. <template #title>
  61. {{ item.siteName.name }}({{ item.meetingTime }})
  62. <!-- <van-text-ellipsis
  63. rows="2"
  64. :content="`${item.siteName.name}(${ item.placeDel})`"
  65. /> -->
  66. </template>
  67. <template #label>
  68. {{ item.participants.name }}
  69. </template>
  70. </van-cell>
  71. </div>
  72. <template #right>
  73. <van-button
  74. square
  75. type="danger"
  76. text="删除"
  77. class="button"
  78. @click="deleteItem(item.id)"
  79. />
  80. <van-button
  81. square
  82. type="primary"
  83. text="修改"
  84. class="button"
  85. @click="updateItem(item)"
  86. />
  87. </template>
  88. </van-swipe-cell>
  89. </van-list>
  90. </van-tab>
  91. <van-tab title="已审核" name="1">
  92. <van-list
  93. v-model:loading="loading"
  94. :finished="finished"
  95. finished-text="没有更多了"
  96. @load="onLoad"
  97. >
  98. <van-swipe-cell v-for="item in list" :key="item">
  99. <div class="list_item" @click="goInfo(item.id)">
  100. <div class="item-left">
  101. <p style="color: #c4c4c4">
  102. {{ item.updateDate }}
  103. </p>
  104. <p style="color: gray">已审核</p>
  105. </div>
  106. <van-cell>
  107. <template #title>
  108. {{ item.siteName.name }}({{ item.meetingTime }})
  109. <!-- <van-text-ellipsis
  110. rows="2"
  111. :content="`${item.siteName.name}(${ item.placeDel})`"
  112. /> -->
  113. </template>
  114. <template #label>
  115. {{ item.participants.name }}
  116. </template>
  117. </van-cell>
  118. </div>
  119. </van-swipe-cell>
  120. </van-list>
  121. </van-tab>
  122. </van-tabs>
  123. <!-- 搜索结果 -->
  124. <van-list
  125. v-show="searchShow"
  126. v-model:loading="loading"
  127. :finished="finished"
  128. finished-text="没有更多了"
  129. @load="onLoad"
  130. >
  131. <van-swipe-cell v-for="item in searchList" :key="item">
  132. <div class="list_item" @click="goInfo(item.id)">
  133. <div class="item-left">
  134. <p style="color: #c4c4c4">
  135. {{ item.updateDate }}
  136. </p>
  137. <p style="color: red">
  138. <span v-if="item.assessment == 1">已审核</span>
  139. <span v-else>待审核</span>
  140. </p>
  141. </div>
  142. <van-cell>
  143. <template #title>
  144. {{ item.siteName.name }}({{ item.meetingTime }})
  145. <!-- <van-text-ellipsis
  146. rows="2"
  147. :content="`${item.siteName.name}(${ item.placeDel})`"
  148. /> -->
  149. </template>
  150. <template #label>
  151. {{ item.participants.name }}
  152. </template>
  153. </van-cell>
  154. </div>
  155. </van-swipe-cell>
  156. </van-list>
  157. <van-dialog
  158. v-model:show="showDel"
  159. show-cancel-button
  160. confirmButtonText="删除"
  161. message="请确认删除该记录"
  162. @confirm="Itemdel"
  163. >
  164. </van-dialog>
  165. </div>
  166. </template>
  167. <script>
  168. import { ref } from "vue";
  169. import router from "@/router";
  170. import religiousConferenceService from "@/api/religiousConference/religiousConferenceService";
  171. import tools from "@/api/sys/tools";
  172. export default {
  173. name: "religiousConferenceList",
  174. setup() {
  175. const onClickLeft = () => {
  176. history.back();
  177. };
  178. const onClickRight = () => {
  179. router.push("/religiousConferenceView");
  180. };
  181. let active = ref(0);
  182. let list = ref([]);
  183. const loading = ref(false);
  184. const finished = ref(false);
  185. let index = 0;
  186. //tab切换
  187. const onClickTab= ({name}) => {
  188. // 清空列表数据
  189. finished.value = false;
  190. list.value = [];
  191. loading.value = true;
  192. index = 0;
  193. onLoad();
  194. };
  195. const onLoad = (val) => {
  196. loading.value = true;
  197. finished.value = false;
  198. // 异步更新数据active绑定的是标签中的name值
  199. new religiousConferenceService()
  200. .list({
  201. current: index + 1,
  202. size: 10,
  203. assessment:active.value,
  204. siteName:{id:searchValId.value}
  205. })
  206. .then((res) => {
  207. list.value.push(...res.records) ;
  208. // 加载状态结束
  209. loading.value = false;
  210. // 数据全部加载完成
  211. if (res.pages <= index + 1) {
  212. finished.value = true;
  213. }
  214. index++;
  215. });
  216. };
  217. // 搜索
  218. let searchShow = ref(false);
  219. let searchList = ref([]);
  220. const searchVal = ref("");
  221. const searchValId = ref("");
  222. const onSearch = () => {
  223. searchShow.value = true;
  224. searchList.value = [];
  225. new siteInspectionService()
  226. .list({
  227. current: 1,
  228. size: 10000,
  229. activityName: searchVal.value,
  230. })
  231. .then(({ records }) => {
  232. searchList.value.push(...records);
  233. // 加载状态结束
  234. loading.value = false;
  235. });
  236. };
  237. const onCancel = () => {
  238. searchVal.value = "";
  239. searchValId.value = "";
  240. searchShow.value = false;
  241. finished.value = false;
  242. list.value = [];
  243. loading.value = true;
  244. index = 0;
  245. onLoad();
  246. };
  247. // 场所名称
  248. let places = ref([]);
  249. const customFieldName = {
  250. text: "name",
  251. value: "id",
  252. };
  253. new tools()
  254. .placeList({
  255. current: 1,
  256. size: 10000,
  257. })
  258. .then(({ records }) => {
  259. places.value.push(...records);
  260. });
  261. let showPlace = ref(false);
  262. const getPlace = ({ selectedOptions }) => {
  263. if(selectedOptions[0]!=undefined&&selectedOptions[0]!=null){
  264. showPlace.value = false;
  265. searchVal.value=selectedOptions[0].name;
  266. searchValId.value=selectedOptions[0].id;
  267. finished.value = false;
  268. list.value = [];
  269. loading.value = true;
  270. index = 0;
  271. onLoad();
  272. }
  273. };
  274. // 删除确认
  275. let showDel = ref(false);
  276. let ids = ref("");
  277. const deleteItem = (val) => {
  278. showDel.value = true;
  279. ids.value = val;
  280. };
  281. // 删除
  282. const Itemdel = () => {
  283. new siteInspectionService().delete(ids.value).then((res) => {
  284. index = 0;
  285. loading.value = true;
  286. list.value = [];
  287. onLoad();
  288. });
  289. };
  290. // 修改跳转
  291. const updateItem = (val) => {
  292. router.push({
  293. path: "/religiousConferenceView",
  294. query: { id: val.id },
  295. });
  296. };
  297. // 详情跳转
  298. const goInfo = (val) => {
  299. router.push({
  300. path: "/religiousConferenceInfo",
  301. query: { id: val },
  302. });
  303. };
  304. return {
  305. active,
  306. onClickTab,
  307. onClickLeft,
  308. onClickRight,
  309. //列表
  310. list,
  311. onLoad,
  312. loading,
  313. finished,
  314. //搜索
  315. searchShow,
  316. searchVal,
  317. searchValId,
  318. searchList,
  319. onSearch,
  320. onCancel,
  321. // 场所
  322. customFieldName,
  323. showPlace,
  324. places,
  325. getPlace,
  326. deleteItem,
  327. updateItem,
  328. goInfo,
  329. showDel,
  330. Itemdel,
  331. };
  332. },
  333. };
  334. </script>
  335. <style scoped>
  336. </style>