DsFilePicker.vue 2.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788
  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 } 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 } = defineProps({
  11. inspectionExecuteId: {
  12. type: Number,
  13. }
  14. });
  15. const loginUserStore = useLoginUserStore();
  16. const { uploadFile } = useUploadFile();
  17. // 表单数据
  18. const baseFormData = reactive({
  19. handlerImgList: [],
  20. })
  21. // 处理图片
  22. const handlerImgRef = ref(null)
  23. // handlerImgRef.value.upload();
  24. // 处理图片
  25. function handlerOrderImg(imgObj){
  26. return uploadFile(imgObj, 'incident', inspectionExecuteId.value)
  27. }
  28. // 上传报修图片成功
  29. function handlerImgSuccess(e){
  30. baseFormData.handlerImgList.forEach(v => {
  31. v.url = v.path;
  32. })
  33. let requestList = [];
  34. // 处理图片
  35. baseFormData.handlerImgList.forEach(v => {
  36. let handlerOrderImg$ = handlerOrderImg(v);
  37. requestList.push(handlerOrderImg$);
  38. })
  39. Promise.all(requestList).then(resList => {
  40. uni.hideLoading();
  41. console.log(resList);
  42. uni.showToast({
  43. icon: 'none',
  44. title: '建单成功',
  45. mask: true,
  46. });
  47. setTimeout(() => {
  48. uni.reLaunch({
  49. url: '/pages/incidentList/incidentList',
  50. })
  51. }, 1500)
  52. })
  53. }
  54. // 上传报修图片失败
  55. function handlerImgFail(e){
  56. baseFormData.handlerImgList.forEach(v => {
  57. v.url = v.path;
  58. })
  59. }
  60. // 选择上传图片
  61. function handlerImgSelect(e){
  62. baseFormData.handlerImgList = baseFormData.handlerImgList.concat(e.tempFiles);
  63. }
  64. // 删除上传图片
  65. function handlerImgDelete(e){
  66. baseFormData.handlerImgList = baseFormData.handlerImgList.filter(v => e.tempFile.uuid != v.uuid);
  67. }
  68. onLoad((option) => {
  69. console.log(inspectionExecuteId)
  70. })
  71. </script>
  72. <style lang="scss" scoped>
  73. </style>