successModel.vue 2.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116
  1. <template>
  2. <Popup ref="popRef" mode="center" closeOnClickOverlay>
  3. <template #content>
  4. <view class="content">
  5. <view class="content_success">
  6. <image src="/static/shop/success.png" class="img"></image>
  7. <trans _t="支付成功"></trans>
  8. </view>
  9. </view>
  10. </template>
  11. <template #footer>
  12. <slot name="footer">
  13. <view class="footer">
  14. <view class="submit_btn submit_shop" @click="toShop">
  15. <trans _t="继续购物" />
  16. </view>
  17. <view class="submit_btn" @click="seeOrder">
  18. <trans _t="查看订单" />
  19. </view>
  20. </view>
  21. </slot>
  22. </template>
  23. </Popup>
  24. </template>
  25. <script setup>
  26. import { ref } from "vue";
  27. import Popup from "@/components/popup.vue";
  28. import { t } from "@/locale";
  29. import { useTabbarStore } from "@/store";
  30. import { onLoad } from "@dcloudio/uni-app";
  31. const useTabbar = useTabbarStore();
  32. const popRef = ref(null);
  33. const optionObj = ref({});
  34. const emit = defineEmits(["complete", "close", "open"]);
  35. const open = () => {
  36. popRef.value && popRef.value.open();
  37. emit("open");
  38. };
  39. const close = () => {
  40. emit("close");
  41. popRef.value && popRef.value.close();
  42. };
  43. const toShop = () => {
  44. if (optionObj.value.type == "sellerorder") {
  45. uni.navigateTo({ url: "/pagesBuyer/home/index" });
  46. useTabbar.getPageCur("home");
  47. } else {
  48. uni.navigateTo({ url: "/pages/index/products?channel=1" });
  49. }
  50. };
  51. const seeOrder = () => {
  52. if (optionObj.value.type == "sellerorder") {
  53. return uni.navigateTo({ url: "/pagesBuyer/home/index" });
  54. }
  55. uni.switchTab({ url: "/pages/order/index" });
  56. useTabbar.getPageCur("order");
  57. };
  58. onLoad((options) => {
  59. optionObj.value = options;
  60. console.log(options);
  61. });
  62. defineExpose({ open, close });
  63. </script>
  64. <style lang="less" scoped>
  65. @import url("@/style.less");
  66. :deep(.conts) {
  67. min-width: 65vw;
  68. }
  69. .content {
  70. flex: 1;
  71. .flex_center();
  72. &_success {
  73. .flex_center();
  74. flex-direction: column;
  75. gap: 20rpx;
  76. }
  77. .img {
  78. width: 90rpx;
  79. height: 90rpx;
  80. }
  81. }
  82. .footer {
  83. .hor(space-between);
  84. column-gap: 20rpx;
  85. .submit_btn {
  86. height: 76rpx;
  87. padding: 16rpx 30rpx;
  88. background-color: var(--black);
  89. color: var(--light);
  90. .flex_center();
  91. border-radius: 16rpx;
  92. .size(24rpx);
  93. &.submit_shop {
  94. background-color: var(--bg);
  95. border: 1rpx solid var(--black);
  96. color: var(--black);
  97. }
  98. }
  99. }
  100. </style>