|  | @@ -1,43 +1,93 @@
 | 
	
		
			
				|  |  | -import { defineComponent, onMounted, onUnmounted, reactive, ref } from 'vue'
 | 
	
		
			
				|  |  | -import styles from './index.module.less'
 | 
	
		
			
				|  |  | -import signinTips from './images/signin-tips.png'
 | 
	
		
			
				|  |  | -import { Button, CellGroup, Field, Picker, Popup, closeToast, showToast } from 'vant'
 | 
	
		
			
				|  |  | -import { useRoute, useRouter } from 'vue-router'
 | 
	
		
			
				|  |  | -import OWxTip from '@/components/m-wx-tip'
 | 
	
		
			
				|  |  | -import { browser, getUrlCode } from '@/helpers/utils'
 | 
	
		
			
				|  |  | -import qs from 'query-string'
 | 
	
		
			
				|  |  | -import request from '@/helpers/request'
 | 
	
		
			
				|  |  | -import { goWechatAuth } from '@/state'
 | 
	
		
			
				|  |  | -import { useInterval, useIntervalFn } from '@vueuse/core'
 | 
	
		
			
				|  |  | -const classList: any[] = []
 | 
	
		
			
				|  |  | +import { defineComponent, onMounted, onUnmounted, reactive, ref } from 'vue';
 | 
	
		
			
				|  |  | +import styles from './index.module.less';
 | 
	
		
			
				|  |  | +import signinTips from './images/signin-tips.png';
 | 
	
		
			
				|  |  | +import {
 | 
	
		
			
				|  |  | +  Button,
 | 
	
		
			
				|  |  | +  CellGroup,
 | 
	
		
			
				|  |  | +  Field,
 | 
	
		
			
				|  |  | +  Picker,
 | 
	
		
			
				|  |  | +  Popup,
 | 
	
		
			
				|  |  | +  closeToast,
 | 
	
		
			
				|  |  | +  showToast
 | 
	
		
			
				|  |  | +} from 'vant';
 | 
	
		
			
				|  |  | +import { useRoute, useRouter } from 'vue-router';
 | 
	
		
			
				|  |  | +import OWxTip from '@/components/m-wx-tip';
 | 
	
		
			
				|  |  | +import { browser, getUrlCode } from '@/helpers/utils';
 | 
	
		
			
				|  |  | +import qs from 'query-string';
 | 
	
		
			
				|  |  | +import request from '@/helpers/request';
 | 
	
		
			
				|  |  | +import { goWechatAuth } from '@/state';
 | 
	
		
			
				|  |  | +import { useInterval, useIntervalFn } from '@vueuse/core';
 | 
	
		
			
				|  |  | +import MMessageTip from '@/components/m-message-tip';
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +const classList: any = [];
 | 
	
		
			
				|  |  |  for (let i = 1; i <= 40; i++) {
 | 
	
		
			
				|  |  | -  classList.push({ text: i + '班', value: i })
 | 
	
		
			
				|  |  | +  classList.push({ text: i + '班', value: i });
 | 
	
		
			
				|  |  |  }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +const GRADE_ENUM = {
 | 
	
		
			
				|  |  | +  '1': '一年级',
 | 
	
		
			
				|  |  | +  '2': '二年级',
 | 
	
		
			
				|  |  | +  '3': '三年级',
 | 
	
		
			
				|  |  | +  '4': '四年级',
 | 
	
		
			
				|  |  | +  '5': '五年级',
 | 
	
		
			
				|  |  | +  '6': '六年级',
 | 
	
		
			
				|  |  | +  '7': '七年级',
 | 
	
		
			
				|  |  | +  '8': '八年级',
 | 
	
		
			
				|  |  | +  '9': '九年级'
 | 
	
		
			
				|  |  | +} as any;
 | 
	
		
			
				|  |  | +const getGradeList = (gradeYear: string, instrumentCode?: string) => {
 | 
	
		
			
				|  |  | +  let tempList: any = [];
 | 
	
		
			
				|  |  | +  const five = [
 | 
	
		
			
				|  |  | +    { text: '一年级', value: 1, instrumentCode },
 | 
	
		
			
				|  |  | +    { text: '二年级', value: 2, instrumentCode },
 | 
	
		
			
				|  |  | +    { text: '三年级', value: 3, instrumentCode },
 | 
	
		
			
				|  |  | +    { text: '四年级', value: 4, instrumentCode },
 | 
	
		
			
				|  |  | +    { text: '五年级', value: 5, instrumentCode }
 | 
	
		
			
				|  |  | +  ];
 | 
	
		
			
				|  |  | +  const one = [{ text: '六年级', value: 6, instrumentCode }];
 | 
	
		
			
				|  |  | +  const three = [
 | 
	
		
			
				|  |  | +    { text: '七年级', value: 7, instrumentCode },
 | 
	
		
			
				|  |  | +    { text: '八年级', value: 8, instrumentCode },
 | 
	
		
			
				|  |  | +    { text: '九年级', value: 9, instrumentCode }
 | 
	
		
			
				|  |  | +  ];
 | 
	
		
			
				|  |  | +  if (gradeYear === 'FIVE_YEAR_SYSTEM') {
 | 
	
		
			
				|  |  | +    tempList.push(...[...five]);
 | 
	
		
			
				|  |  | +  } else if (gradeYear === 'SIX_YEAR_SYSTEM') {
 | 
	
		
			
				|  |  | +    tempList.push(...[...five, ...one]);
 | 
	
		
			
				|  |  | +  } else if (gradeYear === 'THREE_YEAR_SYSTEM') {
 | 
	
		
			
				|  |  | +    tempList.push(...[...three]);
 | 
	
		
			
				|  |  | +  } else if (gradeYear === 'FORE_YEAR_SYSTEM') {
 | 
	
		
			
				|  |  | +    tempList.push(...[...one, ...three]);
 | 
	
		
			
				|  |  | +  } else {
 | 
	
		
			
				|  |  | +    tempList.push(...[...five, ...one, ...three]);
 | 
	
		
			
				|  |  | +  }
 | 
	
		
			
				|  |  | +  return tempList;
 | 
	
		
			
				|  |  | +};
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |  export default defineComponent({
 | 
	
		
			
				|  |  |    name: 'pre-register',
 | 
	
		
			
				|  |  |    setup() {
 | 
	
		
			
				|  |  |      // 页面定时
 | 
	
		
			
				|  |  | -    const pageTimer = useInterval(1000, { controls: true })
 | 
	
		
			
				|  |  | -    pageTimer.pause()
 | 
	
		
			
				|  |  | -    const router = useRouter()
 | 
	
		
			
				|  |  | -    const route = useRoute()
 | 
	
		
			
				|  |  | +    const pageTimer = useInterval(1000, { controls: true });
 | 
	
		
			
				|  |  | +    pageTimer.pause();
 | 
	
		
			
				|  |  | +    const router = useRouter();
 | 
	
		
			
				|  |  | +    const route = useRoute();
 | 
	
		
			
				|  |  |      const forms = reactive({
 | 
	
		
			
				|  |  |        loading: true,
 | 
	
		
			
				|  |  | -      orchestraId: route.query.id,
 | 
	
		
			
				|  |  | +      schoolId: route.query.id,
 | 
	
		
			
				|  |  |        code: null,
 | 
	
		
			
				|  |  | -      currentGradeList: [
 | 
	
		
			
				|  |  | -        { text: '一年级', value: 1 },
 | 
	
		
			
				|  |  | -        { text: '二年级', value: 2 },
 | 
	
		
			
				|  |  | -        { text: '三年级', value: 3 },
 | 
	
		
			
				|  |  | -        { text: '四年级', value: 4 },
 | 
	
		
			
				|  |  | -        { text: '五年级', value: 5 },
 | 
	
		
			
				|  |  | -        { text: '六年级', value: 6 },
 | 
	
		
			
				|  |  | -        { text: '七年级', value: 7 },
 | 
	
		
			
				|  |  | -        { text: '八年级', value: 8 },
 | 
	
		
			
				|  |  | -        { text: '九年级', value: 9 }
 | 
	
		
			
				|  |  | -      ], // 年级数组列表
 | 
	
		
			
				|  |  |        showPicker: false,
 | 
	
		
			
				|  |  |        classPicker: false,
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +      gradeStatus: false,
 | 
	
		
			
				|  |  | +      classStatus: false,
 | 
	
		
			
				|  |  | +      gradePopupShow: false,
 | 
	
		
			
				|  |  | +      gradePopupIndex: [] as any, // 年级下拉索引
 | 
	
		
			
				|  |  | +      classPopupShow: false,
 | 
	
		
			
				|  |  | +      classPopupIndex: [] as any, // 班级下拉索引
 | 
	
		
			
				|  |  | +      gradeList: [] as any,
 | 
	
		
			
				|  |  | +      classList: [] as any,
 | 
	
		
			
				|  |  | +      schoolInstrumentSetType: null as any,
 | 
	
		
			
				|  |  |        nameReg: /^[\u4E00-\u9FA5]+$/,
 | 
	
		
			
				|  |  |        openId: '' as any,
 | 
	
		
			
				|  |  |        id: null,
 | 
	
	
		
			
				|  | @@ -50,47 +100,47 @@ export default defineComponent({
 | 
	
		
			
				|  |  |        applyStatus: false,
 | 
	
		
			
				|  |  |        isPageHide: false,
 | 
	
		
			
				|  |  |        parentConferencesAgenda: ''
 | 
	
		
			
				|  |  | -    })
 | 
	
		
			
				|  |  | +    });
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -    const showPopup = ref(false)
 | 
	
		
			
				|  |  | -    const showPopupMessage = ref('')
 | 
	
		
			
				|  |  | +    const showPopup = ref(false);
 | 
	
		
			
				|  |  | +    const showPopupMessage = ref('');
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      const message = (value: string) => {
 | 
	
		
			
				|  |  |        if (!value) {
 | 
	
		
			
				|  |  | -        return '请填写学生真实姓名'
 | 
	
		
			
				|  |  | +        return '请填写学生真实姓名';
 | 
	
		
			
				|  |  |        } else if (!forms.nameReg.test(value)) {
 | 
	
		
			
				|  |  | -        return '学员姓名必须为中文'
 | 
	
		
			
				|  |  | +        return '学员姓名必须为中文';
 | 
	
		
			
				|  |  |        } else if (value.length < 2 || value.length > 15) {
 | 
	
		
			
				|  |  | -        return '学员姓名必须为2~15个字'
 | 
	
		
			
				|  |  | +        return '学员姓名必须为2~15个字';
 | 
	
		
			
				|  |  |        }
 | 
	
		
			
				|  |  | -    }
 | 
	
		
			
				|  |  | +    };
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      const onSubmit = async () => {
 | 
	
		
			
				|  |  |        try {
 | 
	
		
			
				|  |  |          if (forms.applyStatus) {
 | 
	
		
			
				|  |  | -          showToast('家长会调查问卷已结束')
 | 
	
		
			
				|  |  | -          return
 | 
	
		
			
				|  |  | +          showToast('家长会调查问卷已结束');
 | 
	
		
			
				|  |  | +          return;
 | 
	
		
			
				|  |  |          }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |          if (message(forms.username)) {
 | 
	
		
			
				|  |  | -          showToast(message(forms.username))
 | 
	
		
			
				|  |  | -          return
 | 
	
		
			
				|  |  | +          showToast(message(forms.username));
 | 
	
		
			
				|  |  | +          return;
 | 
	
		
			
				|  |  |          }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |          if (!forms.currentGrade) {
 | 
	
		
			
				|  |  | -          showToast('请选择年级')
 | 
	
		
			
				|  |  | -          return
 | 
	
		
			
				|  |  | +          showToast('请选择年级');
 | 
	
		
			
				|  |  | +          return;
 | 
	
		
			
				|  |  |          }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |          if (!forms.currentClass) {
 | 
	
		
			
				|  |  | -          showToast('请选择班级')
 | 
	
		
			
				|  |  | -          return
 | 
	
		
			
				|  |  | +          showToast('请选择班级');
 | 
	
		
			
				|  |  | +          return;
 | 
	
		
			
				|  |  |          }
 | 
	
		
			
				|  |  |          // 暂停回调
 | 
	
		
			
				|  |  | -        forms.intervalFnRef?.pause()
 | 
	
		
			
				|  |  | +        forms.intervalFnRef?.pause();
 | 
	
		
			
				|  |  |          // 页面计时暂停
 | 
	
		
			
				|  |  | -        pageTimer.pause()
 | 
	
		
			
				|  |  | -        await request.post('/api-student/open/studentBrowseRecord/updateStat', {
 | 
	
		
			
				|  |  | +        pageTimer.pause();
 | 
	
		
			
				|  |  | +        await request.post('/edu-app/open/studentBrowseRecord/updateStat', {
 | 
	
		
			
				|  |  |            data: {
 | 
	
		
			
				|  |  |              id: forms.id,
 | 
	
		
			
				|  |  |              pageBrowseTime: pageTimer.counter.value,
 | 
	
	
		
			
				|  | @@ -98,137 +148,206 @@ export default defineComponent({
 | 
	
		
			
				|  |  |              currentGrade: forms.currentGrade,
 | 
	
		
			
				|  |  |              currentClass: forms.currentClass ? Number(forms.currentClass) : null
 | 
	
		
			
				|  |  |            }
 | 
	
		
			
				|  |  | -        })
 | 
	
		
			
				|  |  | +        });
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |          router.push({
 | 
	
		
			
				|  |  |            path: '/pre-register-video',
 | 
	
		
			
				|  |  |            query: {
 | 
	
		
			
				|  |  |              saveId: forms.id,
 | 
	
		
			
				|  |  | -            id: forms.orchestraId, // 乐团编号
 | 
	
		
			
				|  |  | +            id: forms.schoolId, // 乐团编号
 | 
	
		
			
				|  |  |              openId: forms.openId //
 | 
	
		
			
				|  |  |            }
 | 
	
		
			
				|  |  | -        })
 | 
	
		
			
				|  |  | +        });
 | 
	
		
			
				|  |  |        } catch {
 | 
	
		
			
				|  |  |          // 还原
 | 
	
		
			
				|  |  | -        forms.intervalFnRef?.resume()
 | 
	
		
			
				|  |  | -        pageTimer.resume()
 | 
	
		
			
				|  |  | +        forms.intervalFnRef?.resume();
 | 
	
		
			
				|  |  | +        pageTimer.resume();
 | 
	
		
			
				|  |  |        }
 | 
	
		
			
				|  |  |        // router.push('/pre-register-video')
 | 
	
		
			
				|  |  | -    }
 | 
	
		
			
				|  |  | +    };
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      const formatterClass = (value: any, list: any[]) => {
 | 
	
		
			
				|  |  | -      let txt = ''
 | 
	
		
			
				|  |  | +      let txt = '';
 | 
	
		
			
				|  |  |        list.forEach((listItem: any) => {
 | 
	
		
			
				|  |  |          if (listItem.value == value) {
 | 
	
		
			
				|  |  | -          txt = listItem.text
 | 
	
		
			
				|  |  | +          txt = listItem.text;
 | 
	
		
			
				|  |  |          }
 | 
	
		
			
				|  |  | -      })
 | 
	
		
			
				|  |  | -      return txt
 | 
	
		
			
				|  |  | -    }
 | 
	
		
			
				|  |  | +      });
 | 
	
		
			
				|  |  | +      return txt;
 | 
	
		
			
				|  |  | +    };
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      // 更新时间
 | 
	
		
			
				|  |  |      const updateStat = async (pageBrowseTime = 10) => {
 | 
	
		
			
				|  |  |        try {
 | 
	
		
			
				|  |  | -        await request.post('/api-student/open/studentBrowseRecord/updateStat', {
 | 
	
		
			
				|  |  | +        await request.post('/edu-app/open/studentBrowseRecord/updateStat', {
 | 
	
		
			
				|  |  |            data: {
 | 
	
		
			
				|  |  |              id: forms.id,
 | 
	
		
			
				|  |  |              pageBrowseTime // 固定10秒
 | 
	
		
			
				|  |  |            }
 | 
	
		
			
				|  |  | -        })
 | 
	
		
			
				|  |  | +        });
 | 
	
		
			
				|  |  |        } catch {
 | 
	
		
			
				|  |  |          //
 | 
	
		
			
				|  |  |        }
 | 
	
		
			
				|  |  | -    }
 | 
	
		
			
				|  |  | +    };
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      onMounted(async () => {
 | 
	
		
			
				|  |  |        try {
 | 
	
		
			
				|  |  | -        if (!forms.orchestraId) {
 | 
	
		
			
				|  |  | -          showToast('信息获取失败,请联系老师')
 | 
	
		
			
				|  |  | +        if (!forms.schoolId) {
 | 
	
		
			
				|  |  | +          showToast('信息获取失败,请联系老师');
 | 
	
		
			
				|  |  |          }
 | 
	
		
			
				|  |  |          const { data } = await request.get(
 | 
	
		
			
				|  |  | -          '/api-student/open/orchestra/detail/' + forms.orchestraId
 | 
	
		
			
				|  |  | -        )
 | 
	
		
			
				|  |  | -        forms.parentConferencesAgenda = data.parentConferencesAgenda
 | 
	
		
			
				|  |  | +          '/edu-app/open/schoolExtend/detail?id=' + forms.schoolId
 | 
	
		
			
				|  |  | +        );
 | 
	
		
			
				|  |  | +        const schoolExtend = data.schoolExtend;
 | 
	
		
			
				|  |  | +        forms.parentConferencesAgenda = schoolExtend.parentConferencesAgenda;
 | 
	
		
			
				|  |  | +        forms.schoolInstrumentSetType = data.school?.instrumentSetType;
 | 
	
		
			
				|  |  | +        const schoolInstrumentList = data.school?.schoolInstrumentList || [];
 | 
	
		
			
				|  |  | +        if (forms.schoolInstrumentSetType === 'SCHOOL') {
 | 
	
		
			
				|  |  | +          const instrumentCode = schoolInstrumentList[0]?.instrumentCode;
 | 
	
		
			
				|  |  | +          forms.gradeList = getGradeList(data.gradeYear, instrumentCode);
 | 
	
		
			
				|  |  | +          forms.classList = classList;
 | 
	
		
			
				|  |  | +        } else if (forms.schoolInstrumentSetType === 'GRADE') {
 | 
	
		
			
				|  |  | +          schoolInstrumentList.forEach((item: any) => {
 | 
	
		
			
				|  |  | +            forms.gradeList.push({
 | 
	
		
			
				|  |  | +              text: GRADE_ENUM[item.gradeNum],
 | 
	
		
			
				|  |  | +              value: item.gradeNum,
 | 
	
		
			
				|  |  | +              instrumentId: item.instrumentId,
 | 
	
		
			
				|  |  | +              instrumentCode: item.instrumentCode
 | 
	
		
			
				|  |  | +            });
 | 
	
		
			
				|  |  | +          });
 | 
	
		
			
				|  |  | +          forms.gradeList.sort((a: any, b: any) => a.value - b.value);
 | 
	
		
			
				|  |  | +          forms.classList = classList;
 | 
	
		
			
				|  |  | +        } else if (forms.schoolInstrumentSetType === 'CLASS') {
 | 
	
		
			
				|  |  | +          // 班级
 | 
	
		
			
				|  |  | +          const tempGradeList: any[] = [];
 | 
	
		
			
				|  |  | +          schoolInstrumentList.forEach((item: any) => {
 | 
	
		
			
				|  |  | +            if (!tempGradeList.includes(item.gradeNum)) {
 | 
	
		
			
				|  |  | +              tempGradeList.push(item.gradeNum);
 | 
	
		
			
				|  |  | +            }
 | 
	
		
			
				|  |  | +          });
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | +          const lastGradeList: any[] = [];
 | 
	
		
			
				|  |  | +          tempGradeList.forEach((temp: any) => {
 | 
	
		
			
				|  |  | +            const list = {
 | 
	
		
			
				|  |  | +              text: GRADE_ENUM[temp],
 | 
	
		
			
				|  |  | +              value: temp,
 | 
	
		
			
				|  |  | +              instrumentId: '',
 | 
	
		
			
				|  |  | +              instrumentCode: '',
 | 
	
		
			
				|  |  | +              instrumentName: '',
 | 
	
		
			
				|  |  | +              classList: [] as any
 | 
	
		
			
				|  |  | +            };
 | 
	
		
			
				|  |  | +            schoolInstrumentList.forEach((item: any) => {
 | 
	
		
			
				|  |  | +              if (temp === item.gradeNum) {
 | 
	
		
			
				|  |  | +                list.instrumentId = item.instrumentId;
 | 
	
		
			
				|  |  | +                list.instrumentCode = item.instrumentCode;
 | 
	
		
			
				|  |  | +                list.instrumentName = item.instrumentName;
 | 
	
		
			
				|  |  | +                list.classList.push({
 | 
	
		
			
				|  |  | +                  text: item.classNum + '班',
 | 
	
		
			
				|  |  | +                  value: item.classNum,
 | 
	
		
			
				|  |  | +                  instrumentCode: item.instrumentCode
 | 
	
		
			
				|  |  | +                });
 | 
	
		
			
				|  |  | +              }
 | 
	
		
			
				|  |  | +            });
 | 
	
		
			
				|  |  | +            // 排序班级
 | 
	
		
			
				|  |  | +            list.classList.sort((a: any, b: any) => a.value - b.value);
 | 
	
		
			
				|  |  | +            lastGradeList.push(list);
 | 
	
		
			
				|  |  | +          });
 | 
	
		
			
				|  |  | +          lastGradeList.sort((a: any, b: any) => a.value - b.value);
 | 
	
		
			
				|  |  | +          forms.gradeList = lastGradeList;
 | 
	
		
			
				|  |  | +          forms.classList = [];
 | 
	
		
			
				|  |  | +        } else {
 | 
	
		
			
				|  |  | +          forms.gradeList = getGradeList(data.gradeYear);
 | 
	
		
			
				|  |  | +          forms.classList = classList;
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  |          // 判断是否获取微信code码
 | 
	
		
			
				|  |  | -        if (!forms.code) return
 | 
	
		
			
				|  |  | +        if (!forms.code) return;
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -        // 乐团注册
 | 
	
		
			
				|  |  | -        if (data.orchestraRegisterType === 'ORCHESTRA' && data.status !== 'PRE_REGISTER') {
 | 
	
		
			
				|  |  | -          showToast('家长会调查问卷已结束')
 | 
	
		
			
				|  |  | -          forms.applyStatus = true
 | 
	
		
			
				|  |  | -          return
 | 
	
		
			
				|  |  | -        }
 | 
	
		
			
				|  |  | +        // // 乐团注册
 | 
	
		
			
				|  |  | +        // if (data.status !== 'PRE_REGISTER') {
 | 
	
		
			
				|  |  | +        //   showToast('家长会调查问卷已结束')
 | 
	
		
			
				|  |  | +        //   forms.applyStatus = true
 | 
	
		
			
				|  |  | +        //   return
 | 
	
		
			
				|  |  | +        // }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |          // 家长会注册
 | 
	
		
			
				|  |  |          // 'DOING' | 'DONE'
 | 
	
		
			
				|  |  | -        if (
 | 
	
		
			
				|  |  | -          data.orchestraRegisterType === 'PARENT_CONFERENCES' &&
 | 
	
		
			
				|  |  | -          data.status !== 'PARENT_TEACHER_REGISTRATION' &&
 | 
	
		
			
				|  |  | -          data.status !== 'DOING' &&
 | 
	
		
			
				|  |  | -          data.status !== 'DONE'
 | 
	
		
			
				|  |  | -        ) {
 | 
	
		
			
				|  |  | -          showToast('家长会调查问卷已结束')
 | 
	
		
			
				|  |  | -          forms.applyStatus = true
 | 
	
		
			
				|  |  | -          return
 | 
	
		
			
				|  |  | -        }
 | 
	
		
			
				|  |  | +        // if (
 | 
	
		
			
				|  |  | +        //   data.orchestraRegisterType === 'PARENT_CONFERENCES' &&
 | 
	
		
			
				|  |  | +        //   data.status !== 'PARENT_TEACHER_REGISTRATION' &&
 | 
	
		
			
				|  |  | +        //   data.status !== 'DOING' &&
 | 
	
		
			
				|  |  | +        //   data.status !== 'DONE'
 | 
	
		
			
				|  |  | +        // ) {
 | 
	
		
			
				|  |  | +        //   showToast('家长会调查问卷已结束')
 | 
	
		
			
				|  |  | +        //   forms.applyStatus = true
 | 
	
		
			
				|  |  | +        //   return
 | 
	
		
			
				|  |  | +        // }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -        if (forms.orchestraId) {
 | 
	
		
			
				|  |  | -          // 提示乐团报名失败
 | 
	
		
			
				|  |  | -          showPopupMessage.value = '二维码已过期'
 | 
	
		
			
				|  |  | -          showPopup.value = true
 | 
	
		
			
				|  |  | -          return
 | 
	
		
			
				|  |  | -        }
 | 
	
		
			
				|  |  | +        // if (!forms.schoolId) {
 | 
	
		
			
				|  |  | +        //   // 提示乐团报名失败
 | 
	
		
			
				|  |  | +        //   showPopupMessage.value = '二维码已过期';
 | 
	
		
			
				|  |  | +        //   showPopup.value = true;
 | 
	
		
			
				|  |  | +        //   return;
 | 
	
		
			
				|  |  | +        // }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -        const recordAdd = await request.post('/api-student/open/studentBrowseRecord/add', {
 | 
	
		
			
				|  |  | -          data: {
 | 
	
		
			
				|  |  | -            orchestraId: forms.orchestraId,
 | 
	
		
			
				|  |  | -            code: forms.code,
 | 
	
		
			
				|  |  | -            openId: forms.openId
 | 
	
		
			
				|  |  | +        const recordAdd = await request.post(
 | 
	
		
			
				|  |  | +          '/edu-app/open/studentBrowseRecord/add',
 | 
	
		
			
				|  |  | +          {
 | 
	
		
			
				|  |  | +            data: {
 | 
	
		
			
				|  |  | +              schoolId: forms.schoolId,
 | 
	
		
			
				|  |  | +              code: forms.code,
 | 
	
		
			
				|  |  | +              openId: forms.openId
 | 
	
		
			
				|  |  | +            }
 | 
	
		
			
				|  |  |            }
 | 
	
		
			
				|  |  | -        })
 | 
	
		
			
				|  |  | -        const recordObj = recordAdd.data
 | 
	
		
			
				|  |  | -        forms.currentClass = recordObj.currentClass
 | 
	
		
			
				|  |  | -        forms.currentGrade = recordObj.currentGrade
 | 
	
		
			
				|  |  | -        forms.openId = recordObj.openId
 | 
	
		
			
				|  |  | -        forms.username = recordObj.username
 | 
	
		
			
				|  |  | -        forms.videoBrowseData = recordObj.videoBrowseData
 | 
	
		
			
				|  |  | -        forms.videoBrowsePoint = recordObj.videoBrowsePoint
 | 
	
		
			
				|  |  | -        forms.id = recordObj.id
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -        sessionStorage.setItem('active-open-id', recordObj.openId)
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -        pageTimer.resume()
 | 
	
		
			
				|  |  | +        );
 | 
	
		
			
				|  |  | +        const recordObj = recordAdd.data;
 | 
	
		
			
				|  |  | +        forms.currentClass = recordObj.currentClass;
 | 
	
		
			
				|  |  | +        forms.currentGrade = recordObj.currentGrade;
 | 
	
		
			
				|  |  | +        forms.openId = recordObj.openId;
 | 
	
		
			
				|  |  | +        forms.username = recordObj.username;
 | 
	
		
			
				|  |  | +        forms.videoBrowseData = recordObj.videoBrowseData;
 | 
	
		
			
				|  |  | +        forms.videoBrowsePoint = recordObj.videoBrowsePoint;
 | 
	
		
			
				|  |  | +        forms.id = recordObj.id;
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        sessionStorage.setItem('active-open-id', recordObj.openId);
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        console.log(forms, 'forms')
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        pageTimer.resume();
 | 
	
		
			
				|  |  |          // 间隔10秒更新停留时间
 | 
	
		
			
				|  |  |          forms.intervalFnRef = useIntervalFn(() => {
 | 
	
		
			
				|  |  |            // 页面时间恢复
 | 
	
		
			
				|  |  | -          pageTimer.counter.value = 0
 | 
	
		
			
				|  |  | -          pageTimer.resume()
 | 
	
		
			
				|  |  | -          updateStat()
 | 
	
		
			
				|  |  | -        }, 10000)
 | 
	
		
			
				|  |  | +          pageTimer.counter.value = 0;
 | 
	
		
			
				|  |  | +          pageTimer.resume();
 | 
	
		
			
				|  |  | +          updateStat();
 | 
	
		
			
				|  |  | +        }, 10000);
 | 
	
		
			
				|  |  |        } catch {
 | 
	
		
			
				|  |  |          //
 | 
	
		
			
				|  |  |        }
 | 
	
		
			
				|  |  | -    })
 | 
	
		
			
				|  |  | +    });
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      const getAppIdAndCode = async (url?: string) => {
 | 
	
		
			
				|  |  |        try {
 | 
	
		
			
				|  |  | -        const { data } = await request.get('/api-school/open/paramConfig/wechatAppId')
 | 
	
		
			
				|  |  | +        const { data } = await request.get(
 | 
	
		
			
				|  |  | +          '/edu-app/open/paramConfig/wechatAppId'
 | 
	
		
			
				|  |  | +        );
 | 
	
		
			
				|  |  |          // 判断是否有微信appId
 | 
	
		
			
				|  |  |          if (data) {
 | 
	
		
			
				|  |  | -          closeToast()
 | 
	
		
			
				|  |  | -          goWechatAuth(data, url)
 | 
	
		
			
				|  |  | +          closeToast();
 | 
	
		
			
				|  |  | +          goWechatAuth(data, url);
 | 
	
		
			
				|  |  |          }
 | 
	
		
			
				|  |  | -      } catch {
 | 
	
		
			
				|  |  | +      } catch(e) {
 | 
	
		
			
				|  |  |          //
 | 
	
		
			
				|  |  | +        console.log(e)
 | 
	
		
			
				|  |  |        }
 | 
	
		
			
				|  |  | -    }
 | 
	
		
			
				|  |  | +    };
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      if (browser().weixin) {
 | 
	
		
			
				|  |  |        //授权
 | 
	
		
			
				|  |  | -      const openId = sessionStorage.getItem('active-open-id')
 | 
	
		
			
				|  |  | -      forms.openId = openId
 | 
	
		
			
				|  |  | -      const code = getUrlCode()
 | 
	
		
			
				|  |  | +      const openId = sessionStorage.getItem('active-open-id');
 | 
	
		
			
				|  |  | +      forms.openId = openId;
 | 
	
		
			
				|  |  | +      const code = getUrlCode();
 | 
	
		
			
				|  |  | +      console.log(code, 'code')
 | 
	
		
			
				|  |  |        if (!code) {
 | 
	
		
			
				|  |  |          const newUrl =
 | 
	
		
			
				|  |  |            window.location.origin +
 | 
	
	
		
			
				|  | @@ -238,70 +357,47 @@ export default defineComponent({
 | 
	
		
			
				|  |  |            '?' +
 | 
	
		
			
				|  |  |            qs.stringify({
 | 
	
		
			
				|  |  |              ...route.query
 | 
	
		
			
				|  |  | -          })
 | 
	
		
			
				|  |  | -        getAppIdAndCode(newUrl)
 | 
	
		
			
				|  |  | -        return ''
 | 
	
		
			
				|  |  | +          });
 | 
	
		
			
				|  |  | +        getAppIdAndCode(newUrl);
 | 
	
		
			
				|  |  | +        return '';
 | 
	
		
			
				|  |  |        } else {
 | 
	
		
			
				|  |  | -        forms.code = code
 | 
	
		
			
				|  |  | +        forms.code = code;
 | 
	
		
			
				|  |  |        }
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      const onPageShow = () => {
 | 
	
		
			
				|  |  | -      console.log(forms.isPageHide, 'showInfo')
 | 
	
		
			
				|  |  | +      console.log(forms.isPageHide, 'showInfo');
 | 
	
		
			
				|  |  |        if (forms.isPageHide) {
 | 
	
		
			
				|  |  | -        window.location.reload()
 | 
	
		
			
				|  |  | +        window.location.reload();
 | 
	
		
			
				|  |  |        }
 | 
	
		
			
				|  |  | -    }
 | 
	
		
			
				|  |  | +    };
 | 
	
		
			
				|  |  |      // 处理监听页面返回不刷新的问题
 | 
	
		
			
				|  |  | -    window.addEventListener('pageshow', onPageShow)
 | 
	
		
			
				|  |  | +    window.addEventListener('pageshow', onPageShow);
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      const onPageHide = () => {
 | 
	
		
			
				|  |  | -      console.log(forms.isPageHide, 'showInfo')
 | 
	
		
			
				|  |  | -      forms.isPageHide = true
 | 
	
		
			
				|  |  | -    }
 | 
	
		
			
				|  |  | -    window.addEventListener('pagehide', onPageHide)
 | 
	
		
			
				|  |  | +      console.log(forms.isPageHide, 'showInfo');
 | 
	
		
			
				|  |  | +      forms.isPageHide = true;
 | 
	
		
			
				|  |  | +    };
 | 
	
		
			
				|  |  | +    window.addEventListener('pagehide', onPageHide);
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      onUnmounted(() => {
 | 
	
		
			
				|  |  | -      window.removeEventListener('pageshow', onPageShow)
 | 
	
		
			
				|  |  | -      window.removeEventListener('pagehide', onPageHide)
 | 
	
		
			
				|  |  | -    })
 | 
	
		
			
				|  |  | +      window.removeEventListener('pageshow', onPageShow);
 | 
	
		
			
				|  |  | +      window.removeEventListener('pagehide', onPageHide);
 | 
	
		
			
				|  |  | +    });
 | 
	
		
			
				|  |  |      return () => (
 | 
	
		
			
				|  |  |        <div class={styles['per-register-active']}>
 | 
	
		
			
				|  |  |          <div class={styles.flowPath}>
 | 
	
		
			
				|  |  |            <i class={styles.flowPathTitle}></i>
 | 
	
		
			
				|  |  | -          <div class={styles.flowPathContent} v-html={forms.parentConferencesAgenda}>
 | 
	
		
			
				|  |  | -            {/* 一、请所有家长进行<span>签到</span>
 | 
	
		
			
				|  |  | -            <br />
 | 
	
		
			
				|  |  | -            二、<span>观看</span>管乐团家长会议
 | 
	
		
			
				|  |  | -            <br />
 | 
	
		
			
				|  |  | -            1、学校领导讲话(5分钟)
 | 
	
		
			
				|  |  | -            <br />
 | 
	
		
			
				|  |  | -            2、基金会老师介绍乐团事项(20分钟)
 | 
	
		
			
				|  |  | -            <br />
 | 
	
		
			
				|  |  | -            <p
 | 
	
		
			
				|  |  | -              style={{
 | 
	
		
			
				|  |  | -                'padding-left': '1em'
 | 
	
		
			
				|  |  | -              }}
 | 
	
		
			
				|  |  | -            >
 | 
	
		
			
				|  |  | -              *乐团组建背景及政策
 | 
	
		
			
				|  |  | -              <br />
 | 
	
		
			
				|  |  | -              *乐团发展规划与乐器知识讲解
 | 
	
		
			
				|  |  | -              <br />
 | 
	
		
			
				|  |  | -              *学校/基金会/家长各方职责与投入
 | 
	
		
			
				|  |  | -              <br />
 | 
	
		
			
				|  |  | -              *入团流程讲解
 | 
	
		
			
				|  |  | -            </p>
 | 
	
		
			
				|  |  | -            三、请
 | 
	
		
			
				|  |  | -            <span>“有意向”</span>让孩子加入乐团的家长点击
 | 
	
		
			
				|  |  | -            <span>“乐团报名”</span>完成信息填报 */}
 | 
	
		
			
				|  |  | -          </div>
 | 
	
		
			
				|  |  | +          <div
 | 
	
		
			
				|  |  | +            class={styles.flowPathContent}
 | 
	
		
			
				|  |  | +            v-html={forms.parentConferencesAgenda}></div>
 | 
	
		
			
				|  |  |          </div>
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |          <div class={styles.signin}>
 | 
	
		
			
				|  |  |            <div class={styles.tips}>
 | 
	
		
			
				|  |  |              <img src={signinTips} class={styles.signinTips} />
 | 
	
		
			
				|  |  |              <p>
 | 
	
		
			
				|  |  | -              请先进行<span>签到</span>,再观看<span>管乐团家长会视频</span>
 | 
	
		
			
				|  |  | +              请先进行<span>签到</span>,再观看<span>家长会视频</span>
 | 
	
		
			
				|  |  |              </p>
 | 
	
		
			
				|  |  |            </div>
 | 
	
		
			
				|  |  |  
 | 
	
	
		
			
				|  | @@ -319,9 +415,12 @@ export default defineComponent({
 | 
	
		
			
				|  |  |                placeholder="请选择年级"
 | 
	
		
			
				|  |  |                isLink
 | 
	
		
			
				|  |  |                readonly
 | 
	
		
			
				|  |  | -              modelValue={formatterClass(forms.currentGrade, forms.currentGradeList)}
 | 
	
		
			
				|  |  | +              modelValue={formatterClass(forms.currentGrade, forms.gradeList)}
 | 
	
		
			
				|  |  |                clickable={false}
 | 
	
		
			
				|  |  | -              onClick={() => (forms.showPicker = true)}
 | 
	
		
			
				|  |  | +              onClick={() => {
 | 
	
		
			
				|  |  | +                forms.gradePopupIndex = [forms.currentGrade];
 | 
	
		
			
				|  |  | +                forms.gradeStatus = true;
 | 
	
		
			
				|  |  | +              }}
 | 
	
		
			
				|  |  |              />
 | 
	
		
			
				|  |  |              <Field
 | 
	
		
			
				|  |  |                label="班级"
 | 
	
	
		
			
				|  | @@ -329,9 +428,19 @@ export default defineComponent({
 | 
	
		
			
				|  |  |                placeholder="请选择班级"
 | 
	
		
			
				|  |  |                isLink
 | 
	
		
			
				|  |  |                readonly
 | 
	
		
			
				|  |  | -              modelValue={formatterClass(forms.currentClass, classList)}
 | 
	
		
			
				|  |  | +              modelValue={formatterClass(forms.currentClass, forms.classList)}
 | 
	
		
			
				|  |  |                clickable={false}
 | 
	
		
			
				|  |  | -              onClick={() => (forms.classPicker = true)}
 | 
	
		
			
				|  |  | +              onClick={() => {
 | 
	
		
			
				|  |  | +                if (
 | 
	
		
			
				|  |  | +                  forms.schoolInstrumentSetType === 'CLASS' &&
 | 
	
		
			
				|  |  | +                  forms.classList.length <= 0
 | 
	
		
			
				|  |  | +                ) {
 | 
	
		
			
				|  |  | +                  showToast('请先选择年级');
 | 
	
		
			
				|  |  | +                  return;
 | 
	
		
			
				|  |  | +                }
 | 
	
		
			
				|  |  | +                forms.classPopupIndex = [forms.currentClass];
 | 
	
		
			
				|  |  | +                forms.classStatus = true;
 | 
	
		
			
				|  |  | +              }}
 | 
	
		
			
				|  |  |              />
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |              <Button class={styles.submitBtn} onClick={onSubmit}></Button>
 | 
	
	
		
			
				|  | @@ -339,45 +448,85 @@ export default defineComponent({
 | 
	
		
			
				|  |  |          </div>
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |          {/* 是否在微信中打开 */}
 | 
	
		
			
				|  |  | -        {/* <OWxTip /> */}
 | 
	
		
			
				|  |  | +        <OWxTip />
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |          {/* 年级 */}
 | 
	
		
			
				|  |  | -        <Popup v-model:show={forms.showPicker} position="bottom" round>
 | 
	
		
			
				|  |  | -          <Picker
 | 
	
		
			
				|  |  | -            columns={forms.currentGradeList}
 | 
	
		
			
				|  |  | -            onCancel={() => (forms.showPicker = false)}
 | 
	
		
			
				|  |  | -            onConfirm={({ selectedValues }) => {
 | 
	
		
			
				|  |  | -              forms.currentGrade = selectedValues[0]
 | 
	
		
			
				|  |  | -              forms.showPicker = false
 | 
	
		
			
				|  |  | -            }}
 | 
	
		
			
				|  |  | -          />
 | 
	
		
			
				|  |  | -        </Popup>
 | 
	
		
			
				|  |  | +        <Popup
 | 
	
		
			
				|  |  | +          v-model:show={forms.gradeStatus}
 | 
	
		
			
				|  |  | +          position="bottom"
 | 
	
		
			
				|  |  | +          round
 | 
	
		
			
				|  |  | +          safeAreaInsetBottom
 | 
	
		
			
				|  |  | +          lazyRender={false}
 | 
	
		
			
				|  |  | +          class={'popupBottomSearch'}
 | 
	
		
			
				|  |  | +          onOpen={() => {
 | 
	
		
			
				|  |  | +            forms.gradePopupShow = true;
 | 
	
		
			
				|  |  | +          }}
 | 
	
		
			
				|  |  | +          onClosed={() => {
 | 
	
		
			
				|  |  | +            forms.gradePopupShow = false;
 | 
	
		
			
				|  |  | +          }}>
 | 
	
		
			
				|  |  | +          {forms.gradePopupShow && (
 | 
	
		
			
				|  |  | +            <Picker
 | 
	
		
			
				|  |  | +              showToolbar
 | 
	
		
			
				|  |  | +              v-model={forms.gradePopupIndex}
 | 
	
		
			
				|  |  | +              columns={forms.gradeList}
 | 
	
		
			
				|  |  | +              onCancel={() => (forms.gradeStatus = false)}
 | 
	
		
			
				|  |  | +              onConfirm={(val: any) => {
 | 
	
		
			
				|  |  | +                const selectedOption = val.selectedOptions[0];
 | 
	
		
			
				|  |  | +                forms.currentGrade = selectedOption.value;
 | 
	
		
			
				|  |  | +                forms.gradeStatus = false;
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | +                if (forms.schoolInstrumentSetType === 'CLASS') {
 | 
	
		
			
				|  |  | +                  forms.classList = selectedOption.classList;
 | 
	
		
			
				|  |  | +                }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +                if (
 | 
	
		
			
				|  |  | +                  ['CLASS', 'GRADE'].includes(forms.schoolInstrumentSetType)
 | 
	
		
			
				|  |  | +                ) {
 | 
	
		
			
				|  |  | +                  forms.currentClass = '';
 | 
	
		
			
				|  |  | +                }
 | 
	
		
			
				|  |  | +              }}
 | 
	
		
			
				|  |  | +            />
 | 
	
		
			
				|  |  | +          )}
 | 
	
		
			
				|  |  | +        </Popup>
 | 
	
		
			
				|  |  |          {/* 班级 */}
 | 
	
		
			
				|  |  | -        <Popup v-model:show={forms.classPicker} position="bottom" round>
 | 
	
		
			
				|  |  | -          <Picker
 | 
	
		
			
				|  |  | -            columns={classList}
 | 
	
		
			
				|  |  | -            onCancel={() => (forms.classPicker = false)}
 | 
	
		
			
				|  |  | -            onConfirm={({ selectedValues }) => {
 | 
	
		
			
				|  |  | -              forms.currentClass = selectedValues[0]
 | 
	
		
			
				|  |  | -              forms.classPicker = false
 | 
	
		
			
				|  |  | -            }}
 | 
	
		
			
				|  |  | -          />
 | 
	
		
			
				|  |  | +        <Popup
 | 
	
		
			
				|  |  | +          v-model:show={forms.classStatus}
 | 
	
		
			
				|  |  | +          position="bottom"
 | 
	
		
			
				|  |  | +          round
 | 
	
		
			
				|  |  | +          class={'popupBottomSearch'}
 | 
	
		
			
				|  |  | +          onOpen={() => {
 | 
	
		
			
				|  |  | +            forms.classPopupShow = true;
 | 
	
		
			
				|  |  | +          }}
 | 
	
		
			
				|  |  | +          onClosed={() => {
 | 
	
		
			
				|  |  | +            forms.classPopupShow = false;
 | 
	
		
			
				|  |  | +          }}>
 | 
	
		
			
				|  |  | +          {forms.classPopupShow && (
 | 
	
		
			
				|  |  | +            <Picker
 | 
	
		
			
				|  |  | +              showToolbar
 | 
	
		
			
				|  |  | +              v-model={forms.classPopupIndex}
 | 
	
		
			
				|  |  | +              columns={forms.classList}
 | 
	
		
			
				|  |  | +              onCancel={() => (forms.classStatus = false)}
 | 
	
		
			
				|  |  | +              onConfirm={({ selectedValues }) => {
 | 
	
		
			
				|  |  | +                forms.currentClass = selectedValues[0];
 | 
	
		
			
				|  |  | +                forms.classStatus = false;
 | 
	
		
			
				|  |  | +              }}
 | 
	
		
			
				|  |  | +            />
 | 
	
		
			
				|  |  | +          )}
 | 
	
		
			
				|  |  |          </Popup>
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -        <Popup
 | 
	
		
			
				|  |  | +        {/* <Popup
 | 
	
		
			
				|  |  |            v-model:show={showPopup.value}
 | 
	
		
			
				|  |  |            round
 | 
	
		
			
				|  |  |            style={{ width: '88%' }}
 | 
	
		
			
				|  |  |            closeOnClickOverlay={false}
 | 
	
		
			
				|  |  | -          class={styles.wxPopupDialog}
 | 
	
		
			
				|  |  | -        >
 | 
	
		
			
				|  |  | +          class={styles.wxPopupDialog}>
 | 
	
		
			
				|  |  |            <div class={styles.popupContainer}>
 | 
	
		
			
				|  |  |              <p class={styles.title}>温馨提示</p>
 | 
	
		
			
				|  |  |              <p class={styles.popupTips} v-html={showPopupMessage.value}></p>
 | 
	
		
			
				|  |  |            </div>
 | 
	
		
			
				|  |  | -        </Popup>
 | 
	
		
			
				|  |  | +        </Popup> */}
 | 
	
		
			
				|  |  | +        <MMessageTip show={showPopup.value} title='温馨提示' message={showPopupMessage.value} showCloseButton={false} showConfirmButton={false} />
 | 
	
		
			
				|  |  |        </div>
 | 
	
		
			
				|  |  | -    )
 | 
	
		
			
				|  |  | +    );
 | 
	
		
			
				|  |  |    }
 | 
	
		
			
				|  |  | -})
 | 
	
		
			
				|  |  | +});
 |