file.vue 3.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121
  1. <template>
  2. <HcCard actionUi="text-center">
  3. <div class="hc-tabs-simple-extra-btn" v-if="infoData.pdfUrl && !isDisabled">
  4. <el-button size="large" type="primary" hc-btn @click="reuploadClick">
  5. <HcIcon name="upload-cloud-2"/>
  6. <span>点击重新上传</span>
  7. </el-button>
  8. </div>
  9. <div class="hc-project-contract-form-file">
  10. <div class="hc-form-file-pdf" v-show="infoData.pdfUrl">
  11. <HcPdf :src="infoData.pdfUrl"/>
  12. </div>
  13. <div class="hc-form-file-upload" v-show="!infoData.pdfUrl">
  14. <HcUploadFile ref="HcUploadFileRef" :options="UploadFileOptions" @success="HcUploadFileSuccess" drop v-if="!isDisabled">
  15. <div class="accept-tip">支持的文件格式:图片(png、jpg、jpeg)、 Excel(xls、xlsx) PDF 、Word(doc、docx)</div>
  16. </HcUploadFile>
  17. <HcStatus text="未上传相关附件文件" v-else/>
  18. </div>
  19. </div>
  20. <template #action>
  21. <el-button size="large" type="info" hc-btn @click="goBackClick">
  22. <HcIcon name="arrow-go-back"/>
  23. <span v-if="isDisabled">返回上一级</span>
  24. <span v-else>取消并返回</span>
  25. </el-button>
  26. <el-button size="large" type="primary" hc-btn @click="saveClick" v-if="!isDisabled" :loading="saveLoaingVal">
  27. <HcIcon name="check-double"/>
  28. <span>提交保存</span>
  29. </el-button>
  30. </template>
  31. </HcCard>
  32. </template>
  33. <script setup>
  34. import {ref, watch} from "vue";
  35. import {useRouter} from 'vue-router'
  36. import {getObjValue} from "js-fast-way";
  37. import {getTokenHeader} from "~src/api/request/header";
  38. const router = useRouter()
  39. //参数
  40. const props = defineProps({
  41. datas: {
  42. type: Object,
  43. default: () => ({})
  44. },
  45. disabled: {
  46. type: Boolean,
  47. default: false
  48. },
  49. saveLoaing:{
  50. type: Boolean,
  51. default: false
  52. }
  53. })
  54. const infoData = ref(props.datas)
  55. const isDisabled = ref(props.disabled)
  56. const saveLoaingVal=ref(props.saveLoaing)
  57. //深度监听
  58. watch(() => [
  59. props.datas,
  60. infoData
  61. ], ([datas,infoData]) => {
  62. infoData.value = datas
  63. emit('update:datas', infoData)
  64. }, {deep: true})
  65. //监听
  66. watch(() => [
  67. props.disabled,
  68. props.saveLoaing,
  69. ], ([disabled,saveLoaing]) => {
  70. isDisabled.value = disabled
  71. saveLoaingVal.value=saveLoaing
  72. })
  73. //上传配置
  74. const HcUploadFileRef = ref(null)
  75. const UploadFileOptions = {
  76. headers: getTokenHeader(), //此处设置header
  77. }
  78. // 文件上传成功的回调
  79. const HcUploadFileSuccess = (res) => {
  80. const { pdfUrl } = getObjValue(res.resData)
  81. infoData.value.pdfUrl = pdfUrl
  82. HcUploadFileRef.value?.setModalShow(false);
  83. }
  84. //重新上传
  85. const reuploadClick = () => {
  86. HcUploadFileRef.value?.selectFile()
  87. }
  88. //返回
  89. const goBackClick = () => {
  90. router.back()
  91. }
  92. const emit= defineEmits(['saveClick',"update:datas"])
  93. //提交保存
  94. const saveClick = () => {
  95. console.log(infoData.value,'infoData');
  96. emit('saveClick')
  97. }
  98. </script>
  99. <style scoped lang="scss">
  100. @import "~src/styles/project/contract/form.scoped.scss";
  101. </style>
  102. <style lang="scss">
  103. @import "~src/styles/project/contract/form.scss";
  104. </style>