| 
					
				 | 
			
			
				@@ -0,0 +1,202 @@ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import { defineComponent, onMounted, reactive, ref } from 'vue'; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import styles from './index.module.less'; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import MSticky from '@/components/m-sticky'; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import MHeader from '@/components/m-header'; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import MSearch from '@/components/m-search'; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  Cell, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  CellGroup, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  DropdownItem, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  DropdownMenu, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  Icon, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  List, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  Tag 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+} from 'vant'; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import DropDownModal from '../site-management/drop-down-modal'; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import { activityStatus } from '@/helpers/constant'; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import SkeletionIndexModal from './skeletion-index.modal'; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import MFullRefresh from '@/components/m-full-refresh'; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import MEmpty from '@/components/m-empty'; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import request from '@/helpers/request'; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import iconAdd from '@/common/images/icon-add.png'; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import { useRouter } from 'vue-router'; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+export default defineComponent({ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  name: 'activtiy-record', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  setup() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    const router = useRouter(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    const dropDownRef = ref(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    const forms = reactive({ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      activeValue: '', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      activeColumns: [{ text: '全部活动', value: '' }], // 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      isClick: false, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      listState: { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        dataShow: true, // 判断是否有数据 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        loading: true, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        finished: false, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        refreshing: false 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      params: { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        page: 1, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        rows: 20 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      list: [] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    }); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    const onDropDownClose = (item: any) => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      item.value && item.value.toggle(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    }; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    const formatName = () => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      let name = ''; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      forms.activeColumns.forEach((item: any) => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        if (forms.activeValue === item.value) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          name = item.text; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      }); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      return name; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    }; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    const getList = async () => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      try { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        if (forms.isClick) return; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        forms.isClick = true; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        const { data } = await request.post('/api-web/schoolActivity/page', { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          data: forms.params 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        }); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        const result = data || {}; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        // 处理重复请求数据 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        if (forms.list.length > 0 && result.pageNo === 1) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          return; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        // 判断是否有数据 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        if (forms.listState.refreshing) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          forms.list = result.rows || []; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          forms.list = forms.list.concat(result.rows || []); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        forms.listState.finished = result.pageNo >= result.totalPage; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        forms.params.page = result.pageNo + 1; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      } catch { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        forms.listState.finished = true; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      } finally { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        forms.listState.dataShow = forms.list.length > 0; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        forms.listState.refreshing = false; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        forms.listState.loading = false; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        forms.isClick = false; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    }; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    const onRefresh = () => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      forms.params.page = 1; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      getList(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    }; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    onMounted(() => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      for (const key in activityStatus) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        if (Object.prototype.hasOwnProperty.call(activityStatus, key)) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          forms.activeColumns.push({ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            text: activityStatus[key], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            value: key 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          }); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      getList(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    }); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    return () => ( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      <div class={styles['activity-record']}> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        <MSticky position="top"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          <MHeader> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            {{ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              right: () => ( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                <Icon 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                  name={iconAdd} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                  class={styles.iconAdd} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                  onClick={() => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    router.push('activity-record-operation'); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                  }} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                /> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              ) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            }} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          </MHeader> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          <MSearch placeholder="请输入活动名称"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            {{ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              left: () => ( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                <DropdownMenu 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                  class={styles.patrolDetailDropDown} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                  closeOnClickOutside={false}> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                  <DropdownItem title={formatName()} ref={dropDownRef}> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    <DropDownModal 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                      selectValues={forms.activeValue} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                      columns={forms.activeColumns} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                      open={dropDownRef.value.state.showPopup} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                      onDropDownClose={() => onDropDownClose(dropDownRef)} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                      onDropDownConfirm={(values: any) => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        forms.activeValue = values[0]; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        onDropDownClose(dropDownRef); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                      }} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    /> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                  </DropdownItem> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                </DropdownMenu> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              ) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            }} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          </MSearch> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        </MSticky> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        <SkeletionIndexModal v-model:show={forms.listState.loading}> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          <MFullRefresh 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            v-model:modelValue={forms.listState.refreshing} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            onRefresh={() => onRefresh()} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            style={{ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              minHeight: `calc(100vh - var(--header-height))` 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            }}> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            <List 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              finished={forms.listState.finished} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              finishedText=" " 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              style={{ overflow: 'hidden' }} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              onLoad={getList} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              immediateCheck={false}> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              {forms.listState.dataShow ? ( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                forms.list.map(() => ( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                  <CellGroup inset class={styles.cellGroup}> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    <Cell 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                      center 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                      isLink 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                      class={styles.cellTitle} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                      clickable={false}> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                      {{ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        icon: () => ( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                          <Tag plain type="primary" class={styles.tag}> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                            泥泞 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                          </Tag> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        ), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        title: () => ( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                          <div class={[styles.title, 'van-ellipsis']}> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                            武汉小学23年元旦晚会武汉小学23年元旦晚会武汉小学23年元旦晚会 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                          </div> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        ) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                      }} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    </Cell> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    <Cell 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                      class={styles.cellTimer} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                      center 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                      title={'活动日期:2022年12月10日'} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                      value={'进行中'} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                      valueClass={styles.ing}></Cell> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                  </CellGroup> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                )) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              ) : ( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                <MEmpty 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                  style={{ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    minHeight: `calc(100vh - var(--header-height))` 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                  }} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                  description="暂无数据" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                /> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              )} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            </List> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          </MFullRefresh> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        </SkeletionIndexModal> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      </div> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    ); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+}); 
			 |