|
@@ -1,25 +1,75 @@
|
|
|
import { browser } from '@/helpers/utils';
|
|
|
-import { defineComponent, reactive } from 'vue';
|
|
|
+import { defineComponent, onMounted, reactive } from 'vue';
|
|
|
import styles from './index.module.less';
|
|
|
import MSticky from '@/components/m-sticky';
|
|
|
import MHeader from '@/components/m-header';
|
|
|
import { useRouter } from 'vue-router';
|
|
|
+import { postMessage } from '@/helpers/native-message';
|
|
|
import MSearch from '@/components/m-search';
|
|
|
import { Calendar, List } from 'vant';
|
|
|
import dayjs from 'dayjs';
|
|
|
import isBetween from 'dayjs/plugin/isBetween';
|
|
|
+import request from '@/helpers/request';
|
|
|
+import MEmpty from '@/components/m-empty';
|
|
|
dayjs.extend(isBetween);
|
|
|
|
|
|
+const vipGiftPeriodType = {
|
|
|
+ DAY: '天',
|
|
|
+ MONTH: '个月',
|
|
|
+ YEAR: '年'
|
|
|
+} as any;
|
|
|
+
|
|
|
export default defineComponent({
|
|
|
name: 'activationCode',
|
|
|
setup() {
|
|
|
const router = useRouter();
|
|
|
const state = reactive({
|
|
|
- showPopoverTime: false
|
|
|
+ showPopoverTime: false,
|
|
|
+ background: 'transparent',
|
|
|
+ loading: false,
|
|
|
+ finished: false,
|
|
|
+ list: [] as any
|
|
|
});
|
|
|
+
|
|
|
const forms = reactive({
|
|
|
- startTime: dayjs().subtract(1, 'months').format('YYYYMMDD'),
|
|
|
- endTime: dayjs().format('YYYY-MM-DD')
|
|
|
+ page: 1,
|
|
|
+ rows: 20,
|
|
|
+ code: null as any,
|
|
|
+ activateStartTime: dayjs().subtract(1, 'months').format('YYYY-MM-DD'),
|
|
|
+ activateEndTime: dayjs().format('YYYY-MM-DD')
|
|
|
+ });
|
|
|
+
|
|
|
+ const getList = async () => {
|
|
|
+ state.loading = true;
|
|
|
+ try {
|
|
|
+ const params = {
|
|
|
+ ...forms
|
|
|
+ };
|
|
|
+
|
|
|
+ if (forms.activateEndTime && forms.activateStartTime) {
|
|
|
+ params.activateEndTime = forms.activateEndTime + ' 23:59:59';
|
|
|
+ params.activateStartTime = forms.activateStartTime + ' 00:00:00';
|
|
|
+ }
|
|
|
+ const res = await request.post('/edu-app/activationCodeRecord/page', {
|
|
|
+ data: params
|
|
|
+ });
|
|
|
+ if (res.code === 200 && Array.isArray(res?.data?.rows)) {
|
|
|
+ state.list = [...state.list, ...res.data.rows];
|
|
|
+ state.finished = !res.data.next;
|
|
|
+ forms.page = res.data.current + 1;
|
|
|
+ // state.listState.dataShow = state.list.length > 0;
|
|
|
+ } else {
|
|
|
+ state.finished = true;
|
|
|
+ }
|
|
|
+ } catch (error) {
|
|
|
+ // console.log('🚀 ~ error:', error);
|
|
|
+ state.finished = true;
|
|
|
+ }
|
|
|
+ state.loading = false;
|
|
|
+ };
|
|
|
+
|
|
|
+ onMounted(() => {
|
|
|
+ getList();
|
|
|
});
|
|
|
return () => (
|
|
|
<div
|
|
@@ -61,7 +111,11 @@ export default defineComponent({
|
|
|
<MSearch
|
|
|
inputBackground="white"
|
|
|
shape="round"
|
|
|
- onSearch={(val: any) => {}}
|
|
|
+ placeholder="请输入互通码"
|
|
|
+ onSearch={(val: any) => {
|
|
|
+ forms.code = val;
|
|
|
+ getList();
|
|
|
+ }}
|
|
|
/>
|
|
|
|
|
|
<div class={styles.prodSection}>
|
|
@@ -74,7 +128,8 @@ export default defineComponent({
|
|
|
onClick={() => {
|
|
|
state.showPopoverTime = true;
|
|
|
}}>
|
|
|
- {dayjs(forms.startTime).format('YYYY-MM-DD')}至{forms.endTime}
|
|
|
+ {dayjs(forms.activateStartTime).format('YYYY-MM-DD')}至
|
|
|
+ {forms.activateEndTime}
|
|
|
</div>
|
|
|
</div>
|
|
|
</div>
|
|
@@ -82,61 +137,34 @@ export default defineComponent({
|
|
|
</MSticky>
|
|
|
|
|
|
<div class={styles.sectionList}>
|
|
|
- <div class={styles.sectionItem}>
|
|
|
- <div class={styles.itemTitle}>乐器AI学练工具1年</div>
|
|
|
- <div class={styles.itemCode}>SZKT765649LsRB</div>
|
|
|
- <div class={styles.itemTime}>
|
|
|
- 激活时间:<span>2024-07-12</span>
|
|
|
- </div>
|
|
|
- </div>
|
|
|
- </div>
|
|
|
-
|
|
|
- {/* <List
|
|
|
- loading={state.loading}
|
|
|
- finished={state.finished}
|
|
|
- finishedText=" "
|
|
|
- onLoad={getMusicList}
|
|
|
- immediateCheck={false}>
|
|
|
- {state.musics.length > 0 && (
|
|
|
- <div class={styles.musicList}>
|
|
|
- {state.musics.map((item: any) => (
|
|
|
- <Cell
|
|
|
- class={styles.musicItem}
|
|
|
- border={false}
|
|
|
- center
|
|
|
- onClick={() => onDetail(item)}>
|
|
|
- {{
|
|
|
- icon: () => (
|
|
|
- <div class={styles.musicImg}>
|
|
|
- <i
|
|
|
- class={[
|
|
|
- styles.iconType,
|
|
|
- styles[item.paymentType]
|
|
|
- ]}></i>
|
|
|
- <Image class={styles.musicImg} src={item.titleImg} />
|
|
|
- </div>
|
|
|
- ),
|
|
|
- title: () => (
|
|
|
- <div class={styles.musicContnet}>
|
|
|
- <h2>{item.musicSheetName}</h2>
|
|
|
- {item.composer && <p>{item.composer}</p>}
|
|
|
- </div>
|
|
|
- ),
|
|
|
- 'right-icon': () => (
|
|
|
- <Image class={styles.musicPlayIcon} src={iconPlayer} />
|
|
|
- )
|
|
|
- }}
|
|
|
- </Cell>
|
|
|
+ <List
|
|
|
+ loading={state.loading}
|
|
|
+ finished={state.finished}
|
|
|
+ finishedText=" "
|
|
|
+ onLoad={getList}
|
|
|
+ immediateCheck={false}>
|
|
|
+ {state.list.length > 0 &&
|
|
|
+ state.list.map((item: any) => (
|
|
|
+ <div class={styles.sectionItem}>
|
|
|
+ <div class={styles.itemTitle}>
|
|
|
+ 乐器AI学练工具{item.times}
|
|
|
+ {vipGiftPeriodType[item.type]}
|
|
|
+ </div>
|
|
|
+ <div class={styles.itemCode}>{item.code}</div>
|
|
|
+ <div class={styles.itemTime}>
|
|
|
+ 激活时间:
|
|
|
+ <span>{dayjs(item.activateTime).format('YYYY-MM-DD')}</span>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
))}
|
|
|
+ </List>
|
|
|
+
|
|
|
+ {!state.loading && state.list.length === 0 && (
|
|
|
+ <div style={{ height: '100%' }}>
|
|
|
+ <MEmpty description="暂无激活记录~" />
|
|
|
</div>
|
|
|
)}
|
|
|
- </List> */}
|
|
|
-
|
|
|
- {/* {!state.loading && state.musics.length === 0 && (
|
|
|
- <div class={styles.emptyGroup}>
|
|
|
- <MEmpty description="暂无曲谱" />
|
|
|
- </div>
|
|
|
- )} */}
|
|
|
+ </div>
|
|
|
|
|
|
<Calendar
|
|
|
v-model:show={state.showPopoverTime}
|
|
@@ -146,15 +174,15 @@ export default defineComponent({
|
|
|
title="周期选择"
|
|
|
minDate={new Date('2023-02-27')}
|
|
|
defaultDate={[
|
|
|
- dayjs(forms.startTime).toDate(),
|
|
|
- dayjs(forms.endTime).toDate()
|
|
|
+ dayjs(forms.activateStartTime).toDate(),
|
|
|
+ dayjs(forms.activateEndTime).toDate()
|
|
|
]}
|
|
|
style={{
|
|
|
height: '70%'
|
|
|
}}
|
|
|
onConfirm={(item: any) => {
|
|
|
- forms.startTime = dayjs(item[0]).format('YYYYMMDD');
|
|
|
- forms.endTime = dayjs(item[1]).format('YYYY-MM-DD');
|
|
|
+ forms.activateStartTime = dayjs(item[0]).format('YYYY-MM-DD');
|
|
|
+ forms.activateEndTime = dayjs(item[1]).format('YYYY-MM-DD');
|
|
|
state.showPopoverTime = false;
|
|
|
}}
|
|
|
/>
|