approvalButton.vue 2.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657
  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', mode)">暂存</el-button>
  5. <el-button v-if="submitButtonShow" :loading="props.buttonLoading" type="primary" @click="submitForm('submit', mode)">提 交</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. mode: propTypes.bool.def(false)
  24. });
  25. const emits = defineEmits(['submitForm', 'approvalVerifyOpen', 'handleApprovalRecord']);
  26. //暂存,提交
  27. const submitForm = async (type, mode) => {
  28. emits('submitForm', type, mode);
  29. };
  30. //审批
  31. const approvalVerifyOpen = async () => {
  32. emits('approvalVerifyOpen');
  33. };
  34. //审批记录
  35. const handleApprovalRecord = () => {
  36. emits('handleApprovalRecord');
  37. };
  38. //校验提交按钮是否显示
  39. const submitButtonShow = computed(() => {
  40. return (
  41. props.pageType === 'add' ||
  42. (props.pageType === 'update' && props.status && (props.status === 'draft' || props.status === 'cancel' || props.status === 'back'))
  43. );
  44. });
  45. //校验审批按钮是否显示
  46. const approvalButtonShow = computed(() => {
  47. return props.pageType === 'approval' && props.status && props.status === 'waiting';
  48. });
  49. //返回
  50. const goBack = () => {
  51. proxy.$tab.closePage(proxy.$route);
  52. proxy.$router.go(-1);
  53. };
  54. </script>