reward-detail.tsx 3.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108
  1. import { ActionSheet, ActionSheetAction, Cell, Grid, GridItem } from 'vant'
  2. import { computed, defineComponent, ref } from 'vue'
  3. import styles from '../index.module.less'
  4. import iconA from '../images/icon-photo.png'
  5. import iconArrow from '../images/icon-arrow.png'
  6. export default defineComponent({
  7. name: 'subsidy-reward-detail',
  8. setup() {
  9. const actions = computed(() => {
  10. return [
  11. {
  12. name: '全部声部',
  13. color: activeName.value == '全部声部' ? 'var(--van-primary-color)' : ''
  14. },
  15. { name: '待审批', color: activeName.value == '待审批' ? 'var(--van-primary-color)' : '' },
  16. { name: '已完成', color: activeName.value == '已完成' ? 'var(--van-primary-color)' : '' }
  17. ]
  18. })
  19. const activeName = ref('全部声部')
  20. const show = ref(false)
  21. return () => (
  22. <div>
  23. <div class={styles.item}>
  24. <Cell center>
  25. {{
  26. title: () => (
  27. <div class={styles.itemTitle}>
  28. <div class={styles.titleLine}></div>
  29. <span>练习奖励</span>
  30. </div>
  31. )
  32. }}
  33. </Cell>
  34. <Grid class={styles.grid} columnNum={3} border={false}>
  35. <GridItem>
  36. <div class={styles.gridItem}>
  37. <div class={styles.gridItemTop}>
  38. <span class={styles.topNum}>5</span>元/人
  39. </div>
  40. <div>补助标准</div>
  41. </div>
  42. </GridItem>
  43. <GridItem>
  44. <div class={styles.gridItem}>
  45. <div class={styles.gridItemTop}>
  46. <span class={styles.topNum}>78</span>人
  47. </div>
  48. <div>练习达标人数</div>
  49. </div>
  50. </GridItem>
  51. <GridItem>
  52. <div class={styles.gridItem}>
  53. <div class={styles.gridItemTop}>
  54. <span class={styles.topNum}>240</span>元
  55. </div>
  56. <div>实际奖励</div>
  57. </div>
  58. </GridItem>
  59. </Grid>
  60. </div>
  61. <div class={styles.itemSelect}>
  62. <div class={styles.select} onClick={() => (show.value = true)}>
  63. <span>{activeName.value}</span>
  64. <img src={iconArrow} />
  65. </div>
  66. </div>
  67. <div class={styles.item}>
  68. {[1, 2, 3].map((item: any) => {
  69. return (
  70. <Cell center class={styles.rewardItem}>
  71. {{
  72. icon: <img class={styles.itemPicture} src={iconA} />,
  73. title: () => (
  74. <div class={styles.itemTitle}>
  75. <span>邓同学</span>
  76. </div>
  77. ),
  78. label: () => <span class={styles.itemTag}>长笛</span>,
  79. value: () => (
  80. <div class={styles.gridItem}>
  81. <div class={styles.gridItemTop}>
  82. <span class={styles.topNum}>40</span>分钟
  83. </div>
  84. <div class={styles.valeLabel}>练习时长</div>
  85. </div>
  86. )
  87. }}
  88. </Cell>
  89. )
  90. })}
  91. </div>
  92. <ActionSheet
  93. teleport="body"
  94. cancelText="取消"
  95. v-model:show={show.value}
  96. actions={actions.value}
  97. onSelect={(action: ActionSheetAction, index: number) => {
  98. activeName.value = action.name || '待审批'
  99. show.value = false
  100. }}
  101. ></ActionSheet>
  102. </div>
  103. )
  104. }
  105. })