TradingBuy.vue 3.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114
  1. <script setup>
  2. import { onMounted, ref } from 'vue';
  3. import sHeader from "@/components/SimpleHeader";
  4. import { showConfirmDialog, showFailToast, showSuccessToast } from 'vant';
  5. import { addPendOrder, queryAllowPendNum } from "@/service/trading";
  6. // import { useRouter } from 'vue-router'
  7. const buyNum = ref('100');
  8. const unitPrice = ref('10');
  9. const allowMaximum = ref(0);
  10. const active = ref(0);
  11. // const router = useRouter();
  12. onMounted(async () => {
  13. try {
  14. const { data } = await queryAllowPendNum();
  15. if (data.code === "00000") {
  16. allowMaximum.value = data.data.allowBuyNum
  17. // console.log("允许挂单份额 >>>", allowMaximum.value);
  18. }
  19. } catch (error) {
  20. console.error("请求出错", error);
  21. }
  22. })
  23. const onSubmitBuy = async (values) => {
  24. try {
  25. const result = await queryAllowPendNum();
  26. if (result.data.code === "00000") {
  27. allowMaximum.value = result.data.data.allowBuyNum;
  28. console.log("允许挂单份额 >>>", allowMaximum.value);
  29. }
  30. // 等待用户确认对话框
  31. const confirmation = await showConfirmDialog({
  32. title: '提醒',
  33. message: '挂单后不可撤回',
  34. });
  35. if (confirmation) {
  36. console.log('submitBuy', values);
  37. const entrustNumber = parseInt(buyNum.value, 10);
  38. const price = parseFloat(unitPrice.value);
  39. const params = {
  40. entrustNumber: entrustNumber,
  41. price: price,
  42. type: '1', // 1 代表买,2 代表卖
  43. };
  44. const { data } = await addPendOrder(params);
  45. if (data.code === '00000') {
  46. showSuccessToast("买入挂单成功");
  47. // router.go(-1)
  48. } else {
  49. showFailToast(data.message);
  50. }
  51. } else {
  52. // 用户取消了对话框
  53. console.log('用户取消了挂单操作');
  54. }
  55. } catch (error) {
  56. console.error('处理买入挂单时发生错误:', error);
  57. }
  58. };
  59. </script>
  60. <template>
  61. <div class="tradingBuy flex-col">
  62. <div class="tradingBuyBox">
  63. <s-header :name="'股票交易'" :noback="false" :isFixed="false"></s-header>
  64. <div style="height: 200px;">
  65. <van-tabs v-model:active="active" animated>
  66. <van-tab><template #title> <van-icon name="points" />买入股票 </template>
  67. <van-form @submit="onSubmitBuy" style="margin: 10px;">
  68. <van-cell-group inset>
  69. <van-field name="买入量" label="买入量" placeholder="买入量"
  70. :rules="[{ required: true, message: '请填写买入量' }]">
  71. <template #input>
  72. <van-stepper v-model="buyNum" step="100" input-width="70px" integer min='0'
  73. :max="allowMaximum" />
  74. </template>
  75. </van-field>
  76. <van-field name="单价¥" label="单价¥" placeholder="每股单价,小数点后两位有效"
  77. :rules="[{ required: true, message: '请填写单价' }]">
  78. <template #input>
  79. <van-stepper v-model="unitPrice" step="0.01" input-width="70px"
  80. :decimal-length="2" />
  81. </template>
  82. </van-field>
  83. </van-cell-group>
  84. <div style="margin: 20px;">
  85. <van-button round block type="warning" native-type="submit">
  86. 提交
  87. </van-button>
  88. </div>
  89. </van-form>
  90. </van-tab>
  91. </van-tabs>
  92. </div>
  93. </div>
  94. </div>
  95. </template>
  96. <style scoped></style>