AlipayPage.vue 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768
  1. <template>
  2. <q-page>
  3. <div
  4. v-if="renderComponent"
  5. id="container"
  6. style="width: 100%"
  7. ref="pay"
  8. ></div>
  9. </q-page>
  10. </template>
  11. <script>
  12. import { onMounted, nextTick, ref } from "vue";
  13. import { orderPaymentParamStore } from "stores/orderPaymentParamStore";
  14. export default {
  15. name: "AlipayPage",
  16. setup() {
  17. const oStore = orderPaymentParamStore();
  18. const codeUrl = ref("");
  19. const orderId = ref("");
  20. const price = ref("");
  21. const htmlContent = ref("");
  22. const renderComponent = ref(true);
  23. function b64_to_utf8(str) {
  24. return window.atob(str);
  25. }
  26. const forceRerender = async () => {
  27. renderComponent.value = false;
  28. // Wait for the change to get flushed to the DOM
  29. await nextTick();
  30. // Add the component back in
  31. renderComponent.value = true;
  32. };
  33. onMounted(async () => {
  34. var allParamsFromPreviousPage = oStore.getPaymentDetail;
  35. console.log("what I got from book form:");
  36. console.log(allParamsFromPreviousPage);
  37. codeUrl.value = allParamsFromPreviousPage.codeUrl;
  38. console.log("decoded");
  39. htmlContent.value = b64_to_utf8(codeUrl.value);
  40. console.log(htmlContent.value);
  41. orderId.value = allParamsFromPreviousPage.orderId;
  42. price.value = allParamsFromPreviousPage.price;
  43. // forceRerender();
  44. var container = document.getElementById("container");
  45. container.innerHTML += htmlContent.value;
  46. // container.innerHTML += "<p>this is a test text</p>";
  47. // document.write(htmlContent.value);
  48. forceRerender();
  49. });
  50. return {
  51. renderComponent,
  52. htmlContent,
  53. };
  54. },
  55. };
  56. </script>