DsFilePicker.vue 2.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102
  1. <template>
  2. <uni-file-picker ref="handlerImgRef" v-model="baseFormData.handlerImgList" limit="3" @success="handlerImgSuccess" @fail="handlerImgFail" @select="handlerImgSelect" @delete="handlerImgDelete" title="(支持JPG/PNG格式图片,单张大小10M以内)"></uni-file-picker>
  3. </template>
  4. <script setup>
  5. import { defineEmits, ref, reactive, defineProps, defineExpose } from 'vue'
  6. import { onLoad } from '@dcloudio/uni-app'
  7. import { useLoginUserStore } from '@/stores/loginUser'
  8. import { useUploadFile } from '@/share/useUploadFile.js'
  9. const emit = defineEmits(['cancelEmit', 'knowEmit']);
  10. const { inspectionExecuteId, extra } = defineProps({
  11. inspectionExecuteId: {
  12. type: Number,
  13. },
  14. extra: {
  15. type: Number,
  16. },
  17. });
  18. const loginUserStore = useLoginUserStore();
  19. const { uploadFile } = useUploadFile();
  20. // 表单数据
  21. const baseFormData = reactive({
  22. handlerImgList: [],
  23. })
  24. // 处理图片
  25. const handlerImgRef = ref(null)
  26. // 上传图片
  27. const uploadFn = () => {
  28. handlerImgRef.value.upload();
  29. }
  30. defineExpose({
  31. uploadFn,
  32. baseFormData,
  33. extra,
  34. inspectionExecuteId,
  35. })
  36. // 处理图片
  37. function handlerOrderImg(imgObj){
  38. return uploadFile(imgObj, 'inspection', inspectionExecuteId, extra)
  39. }
  40. // 上传报修图片成功
  41. function handlerImgSuccess(e){
  42. baseFormData.handlerImgList.forEach(v => {
  43. v.url = v.path;
  44. })
  45. let requestList = [];
  46. // 处理图片
  47. baseFormData.handlerImgList.forEach(v => {
  48. let handlerOrderImg$ = handlerOrderImg(v);
  49. requestList.push(handlerOrderImg$);
  50. })
  51. Promise.all(requestList).then(resList => {
  52. // uni.hideLoading();
  53. // console.log(resList);
  54. // uni.showToast({
  55. // icon: 'none',
  56. // title: '建单成功',
  57. // mask: true,
  58. // });
  59. // setTimeout(() => {
  60. // uni.reLaunch({
  61. // url: '/pages/incidentList/incidentList',
  62. // })
  63. // }, 1500)
  64. })
  65. }
  66. // 上传报修图片失败
  67. function handlerImgFail(e){
  68. baseFormData.handlerImgList.forEach(v => {
  69. v.url = v.path;
  70. })
  71. }
  72. // 选择上传图片
  73. function handlerImgSelect(e){
  74. baseFormData.handlerImgList = baseFormData.handlerImgList.concat(e.tempFiles);
  75. }
  76. // 删除上传图片
  77. function handlerImgDelete(e){
  78. baseFormData.handlerImgList = baseFormData.handlerImgList.filter(v => e.tempFile.uuid != v.uuid);
  79. }
  80. onLoad((option) => {
  81. console.log(extra)
  82. })
  83. </script>
  84. <style lang="scss" scoped>
  85. </style>