index.ts 1.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
  1. import { defineStore } from "pinia";
  2. /**
  3. * 在小数绘图的图生文功能中
  4. * 用户需要先上传一张图片,然后发布一段文字,询问上传的图片的一些信息
  5. * 当用户上传一张图片后,如果不发布文字,继续上传图片,则会引起功能异常
  6. * 为了避免用户连续上传图片,而不发布文字,特意做限制:
  7. * 用户在上传一张图片后,必须发送一段文本,否则不能继续上传图片
  8. * 此store的定义,就是为了处理该场景
  9. * img_upload_status 表示图片上传的状态 0 表示图片未上传 1 表示图片已上传
  10. * msg_send_status 表示文字发送的状态 0 表示文字未发送 1 表示文字已发送
  11. *
  12. * 当用户上传一张图片后,应将 img_upload_status 设置为 1,且将 msg_send_status 设置为0
  13. * 当用户发送一段文字后,应将 msg_send_status 设置为 1,且将 img_upload_status 设置为 0
  14. *
  15. * 在上传图片的位置,应检查 img_upload_status 和 msg_send_status 的值,如果 img_upload_status === 1 但是 msg_send_status === 0,则图片上传功能不可用
  16. */
  17. const useImageUploadStatus = defineStore("imageUploadStatus", {
  18. state: () => ({
  19. img_upload_status: 0,
  20. msg_send_status: 0
  21. }),
  22. getters: {
  23. uploadStatus(state) {
  24. return state.img_upload_status;
  25. },
  26. messageStatus(state) {
  27. return state.msg_send_status;
  28. },
  29. /**
  30. * 是否允许继续上传图片
  31. * @param state
  32. * @returns
  33. */
  34. canUploadContinue(state) {
  35. return state.img_upload_status === 0;
  36. }
  37. },
  38. actions: {
  39. /**
  40. * 图片已上传
  41. */
  42. uploadFinish() {
  43. this.img_upload_status = 1;
  44. this.msg_send_status = 0;
  45. },
  46. /**
  47. * 文本消息已发送
  48. */
  49. messageFinish() {
  50. this.msg_send_status = 1;
  51. this.img_upload_status = 0;
  52. }
  53. }
  54. });
  55. export default useImageUploadStatus;