uploadOrdown.vue 2.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103
  1. <template>
  2. <div class="uploadOrdown">
  3. <a-form :model="formState" :label-col="{ span: 7 }" :wrapper-col="{ span: 14 }" autocomplete="off">
  4. <a-form-item label="巡检类型:">
  5. <JDictSelectTag v-model:value="formState.insType" placeholder="请选择巡检类型" dictCode="ins_type"
  6. style="width: 240px" />
  7. </a-form-item>
  8. <a-form-item label="选择文件:" v-if="modalType == 'upload'">
  9. <a-upload :before-upload="beforeUpload" @remove="handleRemove" :multiple="false" :file-list="fileList">
  10. <a-button type="primary" preIcon="ant-design:cloud-upload-outlined">选择文件</a-button>
  11. </a-upload>
  12. </a-form-item>
  13. </a-form>
  14. <div class="btn">
  15. <a-button class="btn-item" type="primary" @click="handlerComfirm">确定</a-button>
  16. <a-button class="btn-item" @click="handlerCancel">取消</a-button>
  17. </div>
  18. </div>
  19. </template>
  20. <script setup lang=ts>
  21. import { ref, reactive, computed } from 'vue'
  22. import { message } from 'ant-design-vue';
  23. import JDictSelectTag from '/@/components/Form/src/jeecg/components/JDictSelectTag.vue';
  24. let props = defineProps({
  25. modalType: {
  26. type: String,
  27. default: ''
  28. }
  29. })
  30. let formState = reactive({
  31. insType: '',
  32. })
  33. let fileList = reactive<any[]>([])
  34. let $emit = defineEmits(['handlerComfirm', 'handlerCancel'])
  35. //选择文件
  36. let beforeUpload = (file) => {
  37. console.log(file, '选中文件');
  38. fileList.length = 0;
  39. let index = file.name.indexOf('.');
  40. let name = file.name.substring(index + 1);
  41. if (name == 'png' || name == 'jpg' || name == 'gif' || name == 'psd' || name == 'webp') {
  42. message.warning('禁止上传图片类型的文件!');
  43. } else {
  44. fileList.push(file);
  45. }
  46. };
  47. // 文件移除
  48. let handleRemove = (file) => {
  49. const index = fileList.indexOf(file);
  50. const newFileList = fileList.slice();
  51. newFileList.splice(index, 1);
  52. fileList.length = 0;
  53. };
  54. //确认
  55. let handlerComfirm = () => {
  56. if (props.modalType == 'upload') {
  57. const formData = new FormData();
  58. formData.append('file', fileList[0]);
  59. formData.append('insType', formState.insType);
  60. $emit('handlerComfirm', formData)
  61. } else {
  62. $emit('handlerComfirm', formState)
  63. }
  64. }
  65. //取消
  66. let handlerCancel = () => {
  67. formState.insType = ''
  68. $emit('handlerCancel', formState)
  69. }
  70. </script>
  71. <style lang="less" scoped>
  72. .uploadOrdown {
  73. position: relative;
  74. padding: 10px 15px;
  75. box-sizing: border-box;
  76. .btn {
  77. padding: 10px 10px 0px 10px;
  78. display: flex;
  79. justify-content: flex-end;
  80. .btn-item {
  81. margin: 0px 5px;
  82. }
  83. }
  84. }
  85. ::v-deep .zxm-upload-list-item-name {
  86. color: #fff;
  87. }
  88. ::v-deep .zxm-upload-list-item-name:hover {
  89. background-color: transparent !important;
  90. }
  91. </style>