123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172 |
- import { Grid, GridItem, Icon, Image, Loading } from 'vant'
- import { defineComponent, PropType } from 'vue'
- import styles from './index.module.less'
- import IconXin from '../images/icon-xin2.png'
- export default defineComponent({
- name: 'TheMusicGrid',
- props: {
- isHiddenTag: {
- type: Boolean,
- default: false
- },
- showLight: {
- type: Boolean,
- default: false
- },
- /** 需要高亮的文案 */
- lightText: {
- type: String,
- default: ''
- },
- list: {
- type: Array as any,
- default: () => []
- }
- },
- emits: ['goto'],
- setup(props, { emit }) {
- return () => (
- <div class={styles.theMusicGrid}>
- <Grid border={false} columnNum={3}>
- {props.list.map((n: any) => {
- let name = ''
- console.log(props.lightText, 'props.lightText')
- if (props.lightText) {
- name = n.albumName.replace(
- props.lightText,
- `<span style="color: #FE2451">${props.lightText}</span>`
- )
- } else {
- name = n.albumName
- }
- return (
- <GridItem>
- <div class={styles.item} onClick={() => emit('goto', n)}>
- <div class={styles.imgWrap}>
- {n.paymentType === 'CHARGE' && !props.isHiddenTag && (
- <span class={styles.albumType}>付费</span>
- )}
- <Image
- class={styles.image}
- width="100%"
- height="100%"
- fit="cover"
- src={n.albumCoverUrl}
- />
- <div class={styles.model}>
- <Icon name={IconXin} />
- <span class={styles.num}>{n.albumFavoriteCount}人</span>
- </div>
- </div>
- <div class={styles.title} v-html={name}></div>
- {/* <div class={styles.des}>共{n.musicSheetCount}首</div> */}
- </div>
- </GridItem>
- )
- })}
- </Grid>
- </div>
- )
- }
- })
|