import { defineComponent, onMounted, reactive, ref } from 'vue'; import styles from './index.module.less'; import { List, Popup, DatePicker, Popover, Field, Picker, } from 'vant'; import request from '@/helpers/request'; import { useRoute, useRouter } from 'vue-router'; import OEmpty from '@/components/m-empty'; import MWxTip from '@/components/m-wx-tip'; import OSearch from '@/components/m-search'; import positionIcon from './images/position_icon.png'; import scIcon1 from './images/sc_icon1.png'; import scIcon2 from './images/sc_icon2.png'; import scIcon3 from './images/sc_icon3.png'; import schoolIcon from './images/school_icon.png'; import schoolIcon2 from './images/school_icon2.png'; import searchIcon from './images/search_icon.png'; import searchBtn from './images/search_btn.png'; import tjnumIicon from './images/tjnum_icon.png'; import totalBoxBg from './images/total_box_icon.png'; import useWeChatShare from '@/hooks/useWeChatShare'; import { browser } from '@/helpers/utils'; import OFullRefresh from '@/components/m-full-refresh'; import tbgIcon1 from './images/new_tbg_icon1.png'; import tbgIcon2 from './images/new_tbg_icon2.png'; import tbgIcon3 from './images/new_tbg_icon3.png'; export default defineComponent({ name: 'questionnaire-statistics', setup() { const route = useRoute(); const router = useRouter(); const tabName = ref('all'); const forms = reactive({ schoolName: '', id: route.query.id, // id: '1687275949971763202', yearStatus: false, schoolId: null, classList: [] as any, page: 1, rows: 20, isClick: false, tenantId: route.query.id, areaList: [] as any, areaColumns: [] as any, areaStatus: false, areaPopupShow: false, areaOptionIndex: [] as any, currentArea: null as any, // 当前的区域 currentAreaInfo: null as any, schoolList: [] as any, totalInfo: {} as any, sortType: 'DESC' as any, // 排序方式,ASC(升序)/DESC(降序) sortField: 'totalNum', // totalNum: 总人数,supportNum:支持人数,supportRate:支持率 areaIdx: 0 as any, }); const refreshing = ref(false); const loading = ref(true); const finished = ref(false); const showContact = ref(false); const list = ref([]); const queryArea = async () => { try { const { data } = await request.get( `/edu-app/open/tenantInfo/getArea?tenantId=${forms.tenantId}`, { hideLoading: false, } ); forms.areaList = data || [] data.forEach((item: any, index: number) => { const {provinceName='',cityName='',regionName=''} = item forms.areaColumns.push({ text: provinceName + ' ' + cityName + ' ' + (regionName ? regionName : ''), value: index }) }) // 没有缓存 if (!sessionStorage.getItem('areaIdx')) { const defaultIndex = data.findIndex((item: any) => item.defaultFlag) forms.areaIdx = defaultIndex !== -1 ? Number(defaultIndex) : 0 } forms.currentArea = forms.areaColumns.length ? forms.areaColumns[forms.areaIdx].text : '' forms.currentAreaInfo = forms.areaList.length ? forms.areaList[forms.areaIdx] : null; } catch (error) { } await queryInfo(); await getList(); } const queryInfo = async () => { try { const { provinceCode='',cityCode='',regionCode='' } = forms.currentAreaInfo const res = await request.post( '/edu-app/open/schoolMeetingQuestion/areaSummarySum', { data: { tenantId: forms.tenantId, provinceCode, cityCode, districtCode: regionCode, } } ); forms.totalInfo = res.data|| {} } catch (error) { } } const getList = async () => { try { const { provinceCode='',cityCode='',regionCode='' } = forms.currentAreaInfo const res = await request.post( '/edu-app/open/schoolMeetingQuestion/areaSummary', { data: { tenantId: forms.tenantId, schoolName: forms.schoolName, provinceCode, cityCode, districtCode: regionCode, sortType: forms.sortType, sortField: forms.sortField, } } ); forms.schoolList = res?.data || [] } catch { // } finally { // } }; const state = reactive({ saveLoading: false, image: null as any, shareLoading: false }); const skipDetail = (id: any) => { // sessionStorage.setItem('areaIdx', forms.areaIdx) // sessionStorage.setItem('areaTenantName', forms.totalInfo.tenantName || '') sessionStorage.setItem('yqsFilterParams', JSON.stringify({ schoolName: forms.schoolName, sortType: forms.sortType, sortField: forms.sortField, })) router.push({ path: '/statistics-detail', query: { id, } }); } const filterList = (val: string) => { if (forms.sortField !== val) { forms.sortType = 'DESC' } else { forms.sortType = forms.sortType === 'DESC' ? 'ASC' : 'DESC' } forms.sortField = val getList() } const formatNumberWithComma = (num: number | string) => { // 将数字转换为字符串,去掉小数点后面的部分 let [integer, decimal] = num.toString().split('.'); // 使用正则表达式添加千分位分隔符 integer = integer.replace(/\B(?=(\d{3})+(?!\d))/g, ','); // 如果有小数部分,则保留小数部分 return decimal ? `${integer}.${decimal}` : integer; } const initWxShare = () => { const shareTitle = (forms.totalInfo.tenantName||'') + '音乐(器乐)数字化转型问卷统计'; const weChatShare = useWeChatShare( shareTitle, '科技赋能音乐(器乐)学习,在每一个孩子心中奏响美妙的乐章。', window.location.origin + '/classroom-app/shareImg/questionnaire-statistics.png' ); if (browser().weixin) { weChatShare.getAppSignature() } } const onRefresh = async () => { console.log('刷新111') forms.areaColumns = [] finished.value = false; forms.areaColumns = [] // 重新加载数据 // 将 loading 设置为 true,表示处于加载状态 loading.value = true; await queryArea(); refreshing.value = false }; onMounted(async () => { console.log('刷新页面') forms.areaIdx = sessionStorage.getItem('areaIdx') || 0; // @ts-ignore const qsFilterParams: any = sessionStorage.getItem('yqsFilterParams') ? JSON.parse(sessionStorage.getItem('yqsFilterParams')) : {}; forms.schoolName = qsFilterParams.schoolName || '' forms.sortField = qsFilterParams.sortField || 'totalNum' forms.sortType = qsFilterParams.sortType || 'DESC' await queryArea(); initWxShare(); }); return () => (
{ forms.areaColumns.length > 1 &&
{ forms.areaOptionIndex = [Number(forms.areaIdx)] forms.areaStatus = true }}>

{forms.currentArea}

}
{/*
参与学校
{formatNumberWithComma(forms.totalInfo.schoolNum || 0)}
*/} {/*
  • {formatNumberWithComma(forms.totalInfo.totalNum || 0)}
    参与调查
  • {formatNumberWithComma(forms.totalInfo.supportNum || 0)}
    支持学校开展
  • {Number(forms.totalInfo.supportRate || 0).toFixed(2)}%
    支持率
*/}
学校登记
{formatNumberWithComma(forms.totalInfo.schoolNum || 0)}
参与登记
{formatNumberWithComma(forms.totalInfo.totalNum || 0)}
{/** 搜索栏 */}
{/* { forms.schoolName = val; forms.page = 1; refreshing.value = true; getList(); }}> */} { // 输入框内容变化时触发 // console.log('搜索内容变化',val) forms.schoolName = val sessionStorage.setItem('yqsFilterParams', JSON.stringify({ schoolName: forms.schoolName, sortType: forms.sortType, sortField: forms.sortField, })) getList() }}>
{/** 排序栏 */} {/* */} {/** 学校列表 */} { forms.schoolList.length ?
{forms.schoolList.map((item: any) => (
skipDetail(item.schoolAreaId)}>
{/* */}

{item.schoolName}

参与登记 {formatNumberWithComma(item.totalNum)}
{/*
  • {formatNumberWithComma(item.totalNum)}

    参与调查

  • {formatNumberWithComma(item.supportNum)}

    支持学校开展

  • {Number(item.supportRate).toFixed(2)}%

    支持率

*/}
))}
: } {/* 区域 */} { forms.areaPopupShow = true; }} onClosed={() => { forms.areaPopupShow = false; }}> {forms.areaPopupShow && ( (forms.areaStatus = false)} onConfirm={(val: any) => { // forms.gradeAndClassIndex = [val.selectedOptions[0].value, val.selectedOptions[1].value] // forms.currentArea = val.selectedOptions[0].text; // forms.currentClass = val.selectedOptions[1].text; forms.currentArea = val.selectedOptions[0].text forms.areaOptionIndex = [val.selectedOptions[0].value] forms.areaIdx = val.selectedOptions[0].value forms.areaStatus = false; forms.schoolName = ''; forms.currentAreaInfo = forms.areaList[val.selectedOptions[0].value] sessionStorage.setItem('areaIdx', forms.areaIdx) queryInfo() getList() console.log('选择1111',val,forms.areaOptionIndex) }} /> )} {/* */}
); } });