|
|
@@ -0,0 +1,115 @@
|
|
|
+<!-- 交易市场-预售转让-竞拍预售-详情-出价 -->
|
|
|
+<template>
|
|
|
+ <app-drawer title="出价" v-model:show="show" :loading="loading" :refresh="refresh">
|
|
|
+ <el-form ref="formRef" label-width="100px" :model="formData" :rules="formRules">
|
|
|
+ <el-form-item label="起拍价">
|
|
|
+ <span>{{ selectedRow.refprice }}</span>
|
|
|
+ </el-form-item>
|
|
|
+ <el-form-item prop="OrderPrice" label="认购价">
|
|
|
+ <el-input-number placeholder="请输入" :min="selectedRow.startprice" :precision="2"
|
|
|
+ v-model="formData.OrderPrice" />
|
|
|
+ </el-form-item>
|
|
|
+ <el-form-item prop="OrderQty" label="认购量">
|
|
|
+ <el-input-number placeholder="请输入" :min="0" :max="selectedRow.presaleqty" :precision="0"
|
|
|
+ v-model="formData.OrderQty" />
|
|
|
+ </el-form-item>
|
|
|
+ <el-form-item label="预售定金">
|
|
|
+ <span>{{ deposit }}</span>
|
|
|
+ </el-form-item>
|
|
|
+ <el-form-item label="可用资金">
|
|
|
+ <span>{{ accountStore.currentAccount.avaiableMoney?.toFixed(2) }}</span>
|
|
|
+ </el-form-item>
|
|
|
+ </el-form>
|
|
|
+ <template #footer>
|
|
|
+ <el-button type="info" @click="onCancel(false)">取消</el-button>
|
|
|
+ <el-button type="primary" @click="onSubmit">提交</el-button>
|
|
|
+ </template>
|
|
|
+ </app-drawer>
|
|
|
+</template>
|
|
|
+
|
|
|
+<script lang="ts" setup>
|
|
|
+import { shallowRef, computed, PropType } from 'vue'
|
|
|
+import { ElMessage, FormInstance, FormRules } from 'element-plus'
|
|
|
+import { handleRequestBigNumber } from '@/filters'
|
|
|
+import { BuyOrSell } from '@/constants/order'
|
|
|
+import { useOrder } from '@/business/trade'
|
|
|
+import { useAccountStore } from '@/stores'
|
|
|
+import AppDrawer from '@pc/components/base/drawer/index.vue'
|
|
|
+import { EPriceMode, EValidType } from '@/constants/client'
|
|
|
+
|
|
|
+const props = defineProps({
|
|
|
+ selectedRow: {
|
|
|
+ type: Object as PropType<Model.PresaleAuctionsRsp>,
|
|
|
+ required: true,
|
|
|
+ }
|
|
|
+})
|
|
|
+
|
|
|
+const { formData, formSubmit, loading } = useOrder()
|
|
|
+const accountStore = useAccountStore()
|
|
|
+const show = shallowRef(true)
|
|
|
+const refresh = shallowRef(false)
|
|
|
+const formRef = shallowRef<FormInstance>()
|
|
|
+
|
|
|
+// 预售定金
|
|
|
+const deposit = computed(() => {
|
|
|
+ const { refprice, presaledepositalgorithm, presaledepositvalue } = props.selectedRow
|
|
|
+ const qty = formData.OrderQty ?? 0
|
|
|
+
|
|
|
+ switch (presaledepositalgorithm) {
|
|
|
+ case 1:
|
|
|
+ return (presaledepositvalue * refprice * qty).toFixed(2)
|
|
|
+ case 2:
|
|
|
+ return (presaledepositvalue * qty).toFixed(2)
|
|
|
+ default:
|
|
|
+ return '0.0'
|
|
|
+ }
|
|
|
+})
|
|
|
+
|
|
|
+const formRules: FormRules = {
|
|
|
+ OrderPrice: [{
|
|
|
+ required: true,
|
|
|
+ message: '请输入认购价',
|
|
|
+ }],
|
|
|
+ OrderQty: [{
|
|
|
+ required: true,
|
|
|
+ validator: (rule, value, callback) => {
|
|
|
+ if (value) {
|
|
|
+ const maxbuyqty = props.selectedRow.presaleqty
|
|
|
+ if (value <= maxbuyqty) {
|
|
|
+ callback()
|
|
|
+ } else {
|
|
|
+ callback(new Error('认购量不能大于' + maxbuyqty))
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ callback(new Error('请输入认购量'))
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }],
|
|
|
+}
|
|
|
+
|
|
|
+const onCancel = (isRefresh = false) => {
|
|
|
+ show.value = false
|
|
|
+ refresh.value = isRefresh
|
|
|
+}
|
|
|
+
|
|
|
+const onSubmit = () => {
|
|
|
+ formRef.value?.validate((valid) => {
|
|
|
+ if (valid) {
|
|
|
+ const { applyid, goodsid, marketid } = props.selectedRow
|
|
|
+ formData.GoodsID = goodsid
|
|
|
+ formData.MarketID = marketid
|
|
|
+ formData.BuyOrSell = BuyOrSell.Buy
|
|
|
+ formData.RelatedID = handleRequestBigNumber(applyid)
|
|
|
+ formData.PriceMode = EPriceMode.PRICEMODE_LIMIT
|
|
|
+ formData.TimevalidType = EValidType.VALIDTYPE_YZ
|
|
|
+ /// 代码提交
|
|
|
+ formSubmit().then(() => {
|
|
|
+ ElMessage.success('提交成功')
|
|
|
+ onCancel(true)
|
|
|
+ }).catch((err) => {
|
|
|
+ ElMessage.error('提交失败:' + err)
|
|
|
+ })
|
|
|
+ }
|
|
|
+ })
|
|
|
+}
|
|
|
+</script>
|