approvalButton.vue 2.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  1. <template>
  2. <div style="display: flex; justify-content: space-between">
  3. <div>
  4. <el-button v-if="submitButtonShow" :loading="props.buttonLoading" type="info" @click="submitForm('draft')">暂存</el-button>
  5. <el-button v-if="submitButtonShow" :loading="props.buttonLoading" type="primary" @click="submitForm('submit')">提 交</el-button>
  6. <el-button v-if="approvalButtonShow" :loading="props.buttonLoading" type="primary" @click="approvalVerifyOpen">审批</el-button>
  7. <el-button v-if="props.id && props.status !== 'draft'" type="primary" @click="handleApprovalRecord">流程进度</el-button>
  8. <slot />
  9. </div>
  10. <div>
  11. <el-button style="float: right" @click="goBack()">返回</el-button>
  12. </div>
  13. </div>
  14. </template>
  15. <script setup lang="ts">
  16. import { propTypes } from '@/utils/propTypes';
  17. const { proxy } = getCurrentInstance() as ComponentInternalInstance;
  18. const props = defineProps({
  19. status: propTypes.string.def(''),
  20. pageType: propTypes.string.def(''),
  21. buttonLoading: propTypes.bool.def(false),
  22. id: propTypes.string.def('') || propTypes.number.def()
  23. });
  24. const emits = defineEmits(['submitForm', 'approvalVerifyOpen', 'handleApprovalRecord']);
  25. //暂存,提交
  26. const submitForm = async (type) => {
  27. emits('submitForm', type);
  28. };
  29. //审批
  30. const approvalVerifyOpen = async () => {
  31. emits('approvalVerifyOpen');
  32. };
  33. //审批记录
  34. const handleApprovalRecord = () => {
  35. emits('handleApprovalRecord');
  36. };
  37. //校验提交按钮是否显示
  38. const submitButtonShow = computed(() => {
  39. return (
  40. props.pageType === 'add' ||
  41. (props.pageType === 'update' && props.status && (props.status === 'draft' || props.status === 'cancel' || props.status === 'back'))
  42. );
  43. });
  44. //校验审批按钮是否显示
  45. const approvalButtonShow = computed(() => {
  46. return props.pageType === 'approval' && props.status && props.status === 'waiting';
  47. });
  48. //返回
  49. const goBack = () => {
  50. proxy.$tab.closePage(proxy.$route);
  51. proxy.$router.go(-1);
  52. };
  53. </script>