|  | @@ -1,6 +1,16 @@
 | 
	
		
			
				|  |  |  import { defineComponent, onMounted, reactive, ref } from 'vue';
 | 
	
		
			
				|  |  |  import styles from './index.module.less';
 | 
	
		
			
				|  |  | -import { Cell, CellGroup, Col, Picker, Popup, Row, Tab, Tabs } from 'vant';
 | 
	
		
			
				|  |  | +import {
 | 
	
		
			
				|  |  | +  Cell,
 | 
	
		
			
				|  |  | +  CellGroup,
 | 
	
		
			
				|  |  | +  Col,
 | 
	
		
			
				|  |  | +  List,
 | 
	
		
			
				|  |  | +  Picker,
 | 
	
		
			
				|  |  | +  Popup,
 | 
	
		
			
				|  |  | +  Row,
 | 
	
		
			
				|  |  | +  Tab,
 | 
	
		
			
				|  |  | +  Tabs
 | 
	
		
			
				|  |  | +} from 'vant';
 | 
	
		
			
				|  |  |  import MSticky from '@/components/m-sticky';
 | 
	
		
			
				|  |  |  import icon1 from './images/icon1.png';
 | 
	
		
			
				|  |  |  import icon2 from './images/icon2.png';
 | 
	
	
		
			
				|  | @@ -9,20 +19,35 @@ import icon4 from './images/icon4.png';
 | 
	
		
			
				|  |  |  import iconTimer from './images/icon-timer.png';
 | 
	
		
			
				|  |  |  import request from '@/helpers/request';
 | 
	
		
			
				|  |  |  import { useRoute } from 'vue-router';
 | 
	
		
			
				|  |  | +import { moneyFormat, numberFormat } from '@/helpers/utils';
 | 
	
		
			
				|  |  | +import OFullRefresh from '@/components/m-full-refresh';
 | 
	
		
			
				|  |  | +import OEmpty from '@/components/m-empty';
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  export default defineComponent({
 | 
	
		
			
				|  |  |    name: 'tenant-apply-data',
 | 
	
		
			
				|  |  |    setup() {
 | 
	
		
			
				|  |  |      const route = useRoute();
 | 
	
		
			
				|  |  | -    const tabName = ref('all');
 | 
	
		
			
				|  |  | +    const tabName = ref('detail');
 | 
	
		
			
				|  |  |      const forms = reactive({
 | 
	
		
			
				|  |  |        id: route.query.id,
 | 
	
		
			
				|  |  |        classStatus: false,
 | 
	
		
			
				|  |  | +      schoolId: null,
 | 
	
		
			
				|  |  |        classList: [] as any,
 | 
	
		
			
				|  |  | +      statObj: {} as any,
 | 
	
		
			
				|  |  |        classStatus1: false,
 | 
	
		
			
				|  |  | -      classList1: [] as any
 | 
	
		
			
				|  |  | +      schoolId1: null,
 | 
	
		
			
				|  |  | +      classList1: [] as any,
 | 
	
		
			
				|  |  | +      page: 1,
 | 
	
		
			
				|  |  | +      rows: 20,
 | 
	
		
			
				|  |  | +      isClick: false
 | 
	
		
			
				|  |  |      });
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | +    const refreshing = ref(false);
 | 
	
		
			
				|  |  | +    const loading = ref(true);
 | 
	
		
			
				|  |  | +    const finished = ref(false);
 | 
	
		
			
				|  |  | +    const showContact = ref(false);
 | 
	
		
			
				|  |  | +    const list = ref([]);
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |      const getSchoolList = async () => {
 | 
	
		
			
				|  |  |        try {
 | 
	
		
			
				|  |  |          const { data } = await request.get('/edu-app/open/school/list', {
 | 
	
	
		
			
				|  | @@ -53,14 +78,70 @@ export default defineComponent({
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      const getStat = async () => {
 | 
	
		
			
				|  |  |        try {
 | 
	
		
			
				|  |  | -        // open/school/registerStat
 | 
	
		
			
				|  |  | +        const { data } = await request.post(
 | 
	
		
			
				|  |  | +          '/edu-app/open/school/registerStat',
 | 
	
		
			
				|  |  | +          {
 | 
	
		
			
				|  |  | +            data: {
 | 
	
		
			
				|  |  | +              tenantId: forms.id,
 | 
	
		
			
				|  |  | +              schoolId: forms.schoolId
 | 
	
		
			
				|  |  | +            }
 | 
	
		
			
				|  |  | +          }
 | 
	
		
			
				|  |  | +        );
 | 
	
		
			
				|  |  | +        forms.statObj = data;
 | 
	
		
			
				|  |  |        } catch {
 | 
	
		
			
				|  |  |          //
 | 
	
		
			
				|  |  |        }
 | 
	
		
			
				|  |  |      };
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | +    const getOrderPage = async () => {
 | 
	
		
			
				|  |  | +      if (forms.isClick) {
 | 
	
		
			
				|  |  | +        return;
 | 
	
		
			
				|  |  | +      }
 | 
	
		
			
				|  |  | +      forms.isClick = true;
 | 
	
		
			
				|  |  | +      if (refreshing.value) {
 | 
	
		
			
				|  |  | +        list.value = [];
 | 
	
		
			
				|  |  | +        forms.page = 1;
 | 
	
		
			
				|  |  | +        refreshing.value = false;
 | 
	
		
			
				|  |  | +      }
 | 
	
		
			
				|  |  | +      try {
 | 
	
		
			
				|  |  | +        const res = await request.post('/edu-app/open/school/orderPage', {
 | 
	
		
			
				|  |  | +          data: {
 | 
	
		
			
				|  |  | +            tenantId: forms.id,
 | 
	
		
			
				|  |  | +            schoolId: forms.schoolId,
 | 
	
		
			
				|  |  | +            page: forms.page,
 | 
	
		
			
				|  |  | +            rows: forms.rows
 | 
	
		
			
				|  |  | +          }
 | 
	
		
			
				|  |  | +        });
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        if (list.value.length > 0 && res.data.current === 1) {
 | 
	
		
			
				|  |  | +          return;
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        list.value = list.value.concat(res.data.rows || []);
 | 
	
		
			
				|  |  | +        forms.page = res.data.current + 1;
 | 
	
		
			
				|  |  | +        showContact.value = list.value.length > 0;
 | 
	
		
			
				|  |  | +        loading.value = false;
 | 
	
		
			
				|  |  | +        finished.value = res.data.current >= res.data.pages;
 | 
	
		
			
				|  |  | +      } catch {
 | 
	
		
			
				|  |  | +        showContact.value = false;
 | 
	
		
			
				|  |  | +        finished.value = true;
 | 
	
		
			
				|  |  | +      } finally {
 | 
	
		
			
				|  |  | +        loading.value = false;
 | 
	
		
			
				|  |  | +      }
 | 
	
		
			
				|  |  | +      forms.isClick = false;
 | 
	
		
			
				|  |  | +    };
 | 
	
		
			
				|  |  | +    const onRefresh = () => {
 | 
	
		
			
				|  |  | +      finished.value = false;
 | 
	
		
			
				|  |  | +      // 重新加载数据
 | 
	
		
			
				|  |  | +      // 将 loading 设置为 true,表示处于加载状态
 | 
	
		
			
				|  |  | +      loading.value = true;
 | 
	
		
			
				|  |  | +      getOrderPage();
 | 
	
		
			
				|  |  | +    };
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |      onMounted(async () => {
 | 
	
		
			
				|  |  |        await getSchoolList();
 | 
	
		
			
				|  |  | +      await getStat();
 | 
	
		
			
				|  |  | +      await getOrderPage();
 | 
	
		
			
				|  |  |      });
 | 
	
		
			
				|  |  |      return () => (
 | 
	
		
			
				|  |  |        <div class={styles.tenantApplyData}>
 | 
	
	
		
			
				|  | @@ -77,7 +158,9 @@ export default defineComponent({
 | 
	
		
			
				|  |  |                <Row gutter={12}>
 | 
	
		
			
				|  |  |                  <Col span={12}>
 | 
	
		
			
				|  |  |                    <div class={[styles.item, styles.item1]}>
 | 
	
		
			
				|  |  | -                    <p class={styles.price}>1,200,000.00</p>
 | 
	
		
			
				|  |  | +                    <p class={styles.price}>
 | 
	
		
			
				|  |  | +                      {moneyFormat(forms.statObj.totalAmount)}
 | 
	
		
			
				|  |  | +                    </p>
 | 
	
		
			
				|  |  |                      <p class={styles.text}>
 | 
	
		
			
				|  |  |                        <img src={icon4} class={styles.icon} />
 | 
	
		
			
				|  |  |                        缴费总金额
 | 
	
	
		
			
				|  | @@ -86,7 +169,9 @@ export default defineComponent({
 | 
	
		
			
				|  |  |                  </Col>
 | 
	
		
			
				|  |  |                  <Col span={12}>
 | 
	
		
			
				|  |  |                    <div class={[styles.item, styles.item1]}>
 | 
	
		
			
				|  |  | -                    <p class={styles.price}>1,200,000.00</p>
 | 
	
		
			
				|  |  | +                    <p class={styles.price}>
 | 
	
		
			
				|  |  | +                      {numberFormat(forms.statObj.totalNum)}
 | 
	
		
			
				|  |  | +                    </p>
 | 
	
		
			
				|  |  |                      <p class={styles.text}>
 | 
	
		
			
				|  |  |                        <img src={icon1} class={styles.icon} />
 | 
	
		
			
				|  |  |                        缴费总人数
 | 
	
	
		
			
				|  | @@ -95,7 +180,9 @@ export default defineComponent({
 | 
	
		
			
				|  |  |                  </Col>
 | 
	
		
			
				|  |  |                  <Col span={12}>
 | 
	
		
			
				|  |  |                    <div class={[styles.item, styles.item3]}>
 | 
	
		
			
				|  |  | -                    <p class={styles.price}>1,200,000.00</p>
 | 
	
		
			
				|  |  | +                    <p class={styles.price}>
 | 
	
		
			
				|  |  | +                      {moneyFormat(forms.statObj.instrumentAmount)}
 | 
	
		
			
				|  |  | +                    </p>
 | 
	
		
			
				|  |  |                      <p class={styles.text}>
 | 
	
		
			
				|  |  |                        <img src={icon4} class={styles.icon} />
 | 
	
		
			
				|  |  |                        乐器缴费金额
 | 
	
	
		
			
				|  | @@ -104,7 +191,9 @@ export default defineComponent({
 | 
	
		
			
				|  |  |                  </Col>
 | 
	
		
			
				|  |  |                  <Col span={12}>
 | 
	
		
			
				|  |  |                    <div class={[styles.item, styles.item3]}>
 | 
	
		
			
				|  |  | -                    <p class={styles.price}>1,200,000.00</p>
 | 
	
		
			
				|  |  | +                    <p class={styles.price}>
 | 
	
		
			
				|  |  | +                      {numberFormat(forms.statObj.instrumentNum)}
 | 
	
		
			
				|  |  | +                    </p>
 | 
	
		
			
				|  |  |                      <p class={styles.text}>
 | 
	
		
			
				|  |  |                        <img src={icon2} class={styles.icon} />
 | 
	
		
			
				|  |  |                        乐器购买人数
 | 
	
	
		
			
				|  | @@ -113,7 +202,9 @@ export default defineComponent({
 | 
	
		
			
				|  |  |                  </Col>
 | 
	
		
			
				|  |  |                  <Col span={12}>
 | 
	
		
			
				|  |  |                    <div class={[styles.item, styles.item4]}>
 | 
	
		
			
				|  |  | -                    <p class={styles.price}>1,200,000.00</p>
 | 
	
		
			
				|  |  | +                    <p class={styles.price}>
 | 
	
		
			
				|  |  | +                      {moneyFormat(forms.statObj.vipAmount)}
 | 
	
		
			
				|  |  | +                    </p>
 | 
	
		
			
				|  |  |                      <p class={styles.text}>
 | 
	
		
			
				|  |  |                        <img src={icon4} class={styles.icon} />
 | 
	
		
			
				|  |  |                        学练工具缴费金额
 | 
	
	
		
			
				|  | @@ -122,7 +213,9 @@ export default defineComponent({
 | 
	
		
			
				|  |  |                  </Col>
 | 
	
		
			
				|  |  |                  <Col span={12}>
 | 
	
		
			
				|  |  |                    <div class={[styles.item, styles.item4]}>
 | 
	
		
			
				|  |  | -                    <p class={styles.price}>1,200,000.00</p>
 | 
	
		
			
				|  |  | +                    <p class={styles.price}>
 | 
	
		
			
				|  |  | +                      {numberFormat(forms.statObj.vipNum)}
 | 
	
		
			
				|  |  | +                    </p>
 | 
	
		
			
				|  |  |                      <p class={styles.text}>
 | 
	
		
			
				|  |  |                        <img src={icon3} class={styles.icon} />
 | 
	
		
			
				|  |  |                        学练工具购买人数
 | 
	
	
		
			
				|  | @@ -140,38 +233,63 @@ export default defineComponent({
 | 
	
		
			
				|  |  |                arrowDirection="down"
 | 
	
		
			
				|  |  |                onClick={() => (forms.classStatus1 = true)}></Cell>
 | 
	
		
			
				|  |  |              <div class={styles.buyList}>
 | 
	
		
			
				|  |  | -              <CellGroup class={styles.buyItem}>
 | 
	
		
			
				|  |  | -                <Cell>
 | 
	
		
			
				|  |  | -                  {{
 | 
	
		
			
				|  |  | -                    title: () => (
 | 
	
		
			
				|  |  | -                      <div class={styles.buyHeader}>
 | 
	
		
			
				|  |  | -                        <span class={styles.buyTimer}>
 | 
	
		
			
				|  |  | -                          <img src={iconTimer} class={styles.iconTimer} />
 | 
	
		
			
				|  |  | -                          2023/03/29 12:20:34
 | 
	
		
			
				|  |  | -                        </span>
 | 
	
		
			
				|  |  | -                        <span class={styles.buyPrice}>
 | 
	
		
			
				|  |  | -                          <i>¥</i> 310.00
 | 
	
		
			
				|  |  | -                        </span>
 | 
	
		
			
				|  |  | -                      </div>
 | 
	
		
			
				|  |  | -                    )
 | 
	
		
			
				|  |  | -                  }}
 | 
	
		
			
				|  |  | -                </Cell>
 | 
	
		
			
				|  |  | -                <Cell>
 | 
	
		
			
				|  |  | -                  {{
 | 
	
		
			
				|  |  | -                    title: () => (
 | 
	
		
			
				|  |  | -                      <div class={styles.contact}>
 | 
	
		
			
				|  |  | -                        <span class={styles.b}>张丹丹</span>
 | 
	
		
			
				|  |  | -                        <span class={styles.b}>武昌区武珞路第二小学</span>
 | 
	
		
			
				|  |  | -                      </div>
 | 
	
		
			
				|  |  | -                    ),
 | 
	
		
			
				|  |  | -                    label: () => (
 | 
	
		
			
				|  |  | -                      <div class={styles.buyContent}>
 | 
	
		
			
				|  |  | -                        <span>购买内容</span>竖笛、乐器AI学练工具
 | 
	
		
			
				|  |  | -                      </div>
 | 
	
		
			
				|  |  | -                    )
 | 
	
		
			
				|  |  | -                  }}
 | 
	
		
			
				|  |  | -                </Cell>
 | 
	
		
			
				|  |  | -              </CellGroup>
 | 
	
		
			
				|  |  | +              {showContact.value ? (
 | 
	
		
			
				|  |  | +                <OFullRefresh
 | 
	
		
			
				|  |  | +                  v-model:modelValue={refreshing.value}
 | 
	
		
			
				|  |  | +                  onRefresh={onRefresh}
 | 
	
		
			
				|  |  | +                  class={styles.refreshC}>
 | 
	
		
			
				|  |  | +                  <List
 | 
	
		
			
				|  |  | +                    loading-text=" "
 | 
	
		
			
				|  |  | +                    finished={finished.value}
 | 
	
		
			
				|  |  | +                    finished-text=" "
 | 
	
		
			
				|  |  | +                    onLoad={getOrderPage}>
 | 
	
		
			
				|  |  | +                    {list.value.map((item: any) => (
 | 
	
		
			
				|  |  | +                      <CellGroup class={styles.buyItem}>
 | 
	
		
			
				|  |  | +                        <Cell>
 | 
	
		
			
				|  |  | +                          {{
 | 
	
		
			
				|  |  | +                            title: () => (
 | 
	
		
			
				|  |  | +                              <div class={styles.buyHeader}>
 | 
	
		
			
				|  |  | +                                <span class={styles.buyTimer}>
 | 
	
		
			
				|  |  | +                                  <img
 | 
	
		
			
				|  |  | +                                    src={iconTimer}
 | 
	
		
			
				|  |  | +                                    class={styles.iconTimer}
 | 
	
		
			
				|  |  | +                                  />
 | 
	
		
			
				|  |  | +                                  {item.payTime}
 | 
	
		
			
				|  |  | +                                </span>
 | 
	
		
			
				|  |  | +                                <span class={styles.buyPrice}>
 | 
	
		
			
				|  |  | +                                  <i>¥</i> {moneyFormat(item.paymentCashAmount)}
 | 
	
		
			
				|  |  | +                                </span>
 | 
	
		
			
				|  |  | +                              </div>
 | 
	
		
			
				|  |  | +                            )
 | 
	
		
			
				|  |  | +                          }}
 | 
	
		
			
				|  |  | +                        </Cell>
 | 
	
		
			
				|  |  | +                        <Cell>
 | 
	
		
			
				|  |  | +                          {{
 | 
	
		
			
				|  |  | +                            title: () => (
 | 
	
		
			
				|  |  | +                              <div class={styles.contact}>
 | 
	
		
			
				|  |  | +                                <span class={styles.b}>{item.userName}</span>
 | 
	
		
			
				|  |  | +                                <span class={styles.b}>{item.schoolName}</span>
 | 
	
		
			
				|  |  | +                              </div>
 | 
	
		
			
				|  |  | +                            ),
 | 
	
		
			
				|  |  | +                            label: () => (
 | 
	
		
			
				|  |  | +                              <div class={styles.buyContent}>
 | 
	
		
			
				|  |  | +                                <span>购买内容</span>
 | 
	
		
			
				|  |  | +                                {item.goodsName}
 | 
	
		
			
				|  |  | +                              </div>
 | 
	
		
			
				|  |  | +                            )
 | 
	
		
			
				|  |  | +                          }}
 | 
	
		
			
				|  |  | +                        </Cell>
 | 
	
		
			
				|  |  | +                      </CellGroup>
 | 
	
		
			
				|  |  | +                    ))}
 | 
	
		
			
				|  |  | +                  </List>
 | 
	
		
			
				|  |  | +                </OFullRefresh>
 | 
	
		
			
				|  |  | +              ) : (
 | 
	
		
			
				|  |  | +                ''
 | 
	
		
			
				|  |  | +              )}
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +              {showContact.value && loading.value && (
 | 
	
		
			
				|  |  | +                <OEmpty description="暂无购买详情" class={styles.emptyC} />
 | 
	
		
			
				|  |  | +              )}
 | 
	
		
			
				|  |  |              </div>
 | 
	
		
			
				|  |  |            </Tab>
 | 
	
		
			
				|  |  |          </Tabs>
 | 
	
	
		
			
				|  | @@ -186,7 +304,10 @@ export default defineComponent({
 | 
	
		
			
				|  |  |              columns={forms.classList}
 | 
	
		
			
				|  |  |              onCancel={() => (forms.classStatus = false)}
 | 
	
		
			
				|  |  |              onConfirm={(val: any) => {
 | 
	
		
			
				|  |  | -              // const selectedOption = val.selectedOptions[0];
 | 
	
		
			
				|  |  | +              const selectedOption = val.selectedOptions[0];
 | 
	
		
			
				|  |  | +              forms.schoolId = selectedOption.value;
 | 
	
		
			
				|  |  | +              getStat();
 | 
	
		
			
				|  |  | +              forms.classStatus = false;
 | 
	
		
			
				|  |  |              }}
 | 
	
		
			
				|  |  |            />
 | 
	
		
			
				|  |  |          </Popup>
 |