|
|
@@ -33,6 +33,11 @@
|
|
|
</div>
|
|
|
</template>
|
|
|
</Field>
|
|
|
+ <Field name="Region" v-model="formData.AddrInfo" type="textarea" autosize clearable :rules="formRules.AddrInfo" maxlength="50" label="地址" :placeholder="$t('common.required')">
|
|
|
+ <template #right-icon>
|
|
|
+ <Icon name="add-o" @click="showContact = true" />
|
|
|
+ </template>
|
|
|
+ </Field>
|
|
|
</Form>
|
|
|
<Tabs v-model:active="active">
|
|
|
<template v-for="(item, index) in components.filter(e => e.show === true)" :key="index">
|
|
|
@@ -41,7 +46,8 @@
|
|
|
</Tab>
|
|
|
</template>
|
|
|
</Tabs>
|
|
|
- <template #footer v-if="goods">
|
|
|
+ <app-contact v-model:show="showContact" @change="contactChange" />
|
|
|
+ <template #footer v-if="goods">
|
|
|
<div class="g-form__footer inset">
|
|
|
<Button type="danger" block :disabled="orderQty === 0" @click="onSubmit">
|
|
|
{{ $t('operation.buynow') }}
|
|
|
@@ -53,7 +59,7 @@
|
|
|
|
|
|
<script lang="ts" setup>
|
|
|
import { shallowRef, onMounted, onUnmounted, computed, defineAsyncComponent } from 'vue'
|
|
|
-import { Form, Field, Button, FormInstance, Radio, RadioGroup, Tab, Tabs } from 'vant'
|
|
|
+import { Form, Field, Button, FormInstance, FieldRule, Radio, RadioGroup, Tab, Tabs, Icon } from 'vant'
|
|
|
import { useFuturesStore, useUserStore, i18n } from '@/stores'
|
|
|
import { useNavigation } from '@mobile/router/navigation'
|
|
|
import { currencyFormat } from '@/filters'
|
|
|
@@ -64,6 +70,7 @@ import eventBus from '@/services/bus'
|
|
|
import quoteSocket from '@/services/websocket/quote'
|
|
|
import Stepper from '@mobile/components/base/stepper/index.vue'
|
|
|
import Banner from '@mobile/components/base/banner/index.vue'
|
|
|
+import AppContact from '@mobile/components/modules/contact/index.vue'
|
|
|
|
|
|
const { getQueryString, getQueryStringToNumber, routerBack } = useNavigation()
|
|
|
|
|
|
@@ -79,7 +86,8 @@ const subscribe = quoteSocket.createSubscribe()
|
|
|
|
|
|
const formRef = shallowRef<FormInstance>()
|
|
|
const { formData, formSubmit } = useOrder()
|
|
|
-
|
|
|
+// 显示联系人选择列表
|
|
|
+const showContact = shallowRef(false)
|
|
|
const { getSystemParamValue } = useUserStore()
|
|
|
const system_1012 = getSystemParamValue('1012') ?? '1'
|
|
|
|
|
|
@@ -102,8 +110,8 @@ const marketPrice = computed(() => {
|
|
|
|
|
|
// Banner图
|
|
|
const topBanners = computed(() => {
|
|
|
- const { bannerurls } = futuresStore.getGoods(goodsCode) ?? {}
|
|
|
- return bannerurls?.split(',') ?? []
|
|
|
+ const { thumurls } = futuresStore.getGoods(goodsCode) ?? {}
|
|
|
+ return thumurls?.split(',') ?? []
|
|
|
})
|
|
|
|
|
|
const pictureurl = computed(() => {
|
|
|
@@ -115,6 +123,25 @@ const onQtyRadioChange = (value: number) => {
|
|
|
orderQty.value = value
|
|
|
}
|
|
|
|
|
|
+// 选择联系信息
|
|
|
+const contactChange = (item: Model.UserReceiveInfoRsp) => {
|
|
|
+ const contact = `${item.receivername} ${item.phonenum}`
|
|
|
+ const address = `${item.provincename} ${item.cityname} ${item.districtname} ${item.address}`
|
|
|
+ formData.AddrInfo = [contact, address].join('\n')
|
|
|
+ formRef.value?.validate('Region')
|
|
|
+}
|
|
|
+
|
|
|
+// 表单验证规则
|
|
|
+const formRules: { [key: string]: FieldRule[] } = {
|
|
|
+ AddrInfo: [{
|
|
|
+ required: true,
|
|
|
+ message: '请选择地址',
|
|
|
+ validator: () => {
|
|
|
+ return !!formData.AddrInfo
|
|
|
+ }
|
|
|
+ }],
|
|
|
+}
|
|
|
+
|
|
|
const components = [
|
|
|
{
|
|
|
name: 'images',
|