MyApproval.tsx 1.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940
  1. import { ActionSheet, ActionSheetAction } from 'vant'
  2. import { computed, defineComponent, ref } from 'vue'
  3. import EndApproval from './components/end-approval'
  4. import WaitApproval from './components/wait-approval'
  5. import iconArrow from './images/icon-arrow.png'
  6. import styles from './index.module.less'
  7. export default defineComponent({
  8. name: 'MyApproval',
  9. setup(props, ctx) {
  10. const actions = computed(() => {
  11. return [
  12. { name: '待审批', color: activeName.value == '待审批' ? 'var(--van-primary-color)' : '' },
  13. { name: '已完成', color: activeName.value == '已完成' ? 'var(--van-primary-color)' : '' }
  14. ]
  15. })
  16. const activeName = ref('待审批')
  17. const show = ref(false)
  18. return () => (
  19. <div class={styles.MyApproval}>
  20. <div class={styles.select} onClick={() => (show.value = true)}>
  21. <span>{activeName.value}</span>
  22. <img src={iconArrow} />
  23. </div>
  24. <ActionSheet
  25. teleport="body"
  26. cancelText="取消"
  27. v-model:show={show.value}
  28. actions={actions.value}
  29. onSelect={(action: ActionSheetAction, index: number) => {
  30. activeName.value = action.name || '待审批'
  31. show.value = false
  32. }}
  33. ></ActionSheet>
  34. {activeName.value == '待审批' ? <WaitApproval /> : <EndApproval />}
  35. </div>
  36. )
  37. }
  38. })