소스 검색

Merge branch 'master' of http://47.101.159.18:3000/Muchinfo/THJ_Mobile

li.shaoyi 3 년 전
부모
커밋
04166e62d9

+ 73 - 13
src/business/trade/index.ts

@@ -1,4 +1,4 @@
-import { reactive, ref, shallowRef } from 'vue'
+import { reactive, ref, shallowRef, computed } from 'vue'
 import { v4 } from 'uuid'
 import { ClientType, OrderSrc } from '@/constants/client'
 import { useLoginStore } from '@/stores'
@@ -11,7 +11,8 @@ import {
     wrListingCancelOrder,
     spotPresaleDeliveryConfirm,
     wrOutApply,
-    spotPresaleBreachOfContractApply
+    spotPresaleBreachOfContractApply,
+    hdWROrder
 } from '@/services/api/trade'
 import { formatDate } from "@/filters";
 import Long from 'long'
@@ -255,31 +256,35 @@ export function useWrListingCancelOrder() {
     }
 }
 
-// 仓单明细挂牌请求接口
-export function useWrOutInApply(holdlb: Model.HoldLBRsp) {
+// 仓单明细提货请求接口
+export function useWrOutInApply(holdlb?: Model.HoldLBRsp) {
     const loading = shallowRef(false)
     const { getUserId, getFirstAccountId, getLoginId } = useLoginStore()
+    const orderQty = shallowRef(0.0)
+    const checked = shallowRef('3')
 
     const formData = reactive<Partial<Proto.WROutApplyReq>>({
         AppointmentRemark: '',
         UserID: getUserId(),             // 用户ID,必填
         AccountID: getFirstAccountId(),  // 申请人账户ID
         CreatorID: getLoginId(),         // 创建人ID
-        WRStandardID: holdlb.wrstandardid,
-        WarehouseID: holdlb.warehouseid,
-        ClientSerialID: Number(v4()),    // 客户端流水号
+        WRStandardID: holdlb?.wrstandardid,
+        WarehouseID: holdlb?.warehouseid,
+        ClientSerialID: <number><unknown>v4(),    // 客户端流水号
+        AppointmentModel: <number><unknown>checked.value,
+        AppointmentDate: formatDate(new Date().toString(), 'YYYY-MM-DD'),
     })
 
-    const applySubmit = (qty: number) => {
+    const applySubmit = () => {
         loading.value = true
         return wrOutApply({
             data: {
                 ...formData,
                 WROutInDetails: [{
-                    LadingBillID: holdlb.ladingbillid,
-                    SubNum: holdlb.subnum,
-                    Qty: qty,
-                    OutQty: qty,
+                    LadingBillID: holdlb?.ladingbillid,
+                    SubNum: holdlb?.subnum,
+                    Qty: orderQty.value,
+                    OutQty: orderQty.value,
                 }]
             },
             complete: () => {
@@ -291,6 +296,61 @@ export function useWrOutInApply(holdlb: Model.HoldLBRsp) {
     return {
         loading,
         formData,
-        applySubmit
+        applySubmit,
+        orderQty,
+        checked
+    }
+}
+
+// 仓单明细挂牌请求接口
+export function useHdWROrder(holdlb?: Model.HoldLBRsp) {
+    const loading = shallowRef(false)
+    const { getUserId, getFirstAccountId, getLoginId } = useLoginStore()
+    
+    const formData = reactive<Partial<Proto.HdWROrderReq>>({
+        TradeDate: formatDate(new Date().toString(), "YYYYMMDD"),
+        IsSpecified: 0,
+        PriceFactor: 1.0,
+        FirstRatio: 0.0,
+        CanBargain: 0,
+        CanPart: 1,
+        UserID: getUserId(),
+        AccountID: getFirstAccountId(),
+        OperatorID: getLoginId(),
+        ClientSerialNo: v4(),
+        ClientOrderTime: formatDate(new Date().toString(), 'YYYY-MM-DD HH:mm:ss'),
+        BuyOrSell: 1,
+        WRPriceType: 1,
+        MarginFlag: 0,
+        TimevalidType: 4,
+        HasWr: 1,
+        WRStandardID: holdlb?.wrstandardid,
+        DeliveryGoodsID: holdlb?.deliverygoodsid,
+        LadingBillId: <number><unknown>holdlb?.ladingbillid,
+        WRFactorTypeId: <number><unknown>holdlb?.wrfactortypeid,
+    })
+
+    const amount = computed( () => {
+        const { OrderQty=0, FixedPrice=0 }=formData
+        return (OrderQty*FixedPrice).toFixed(2)
+    })
+
+    const listingSubmit = () => {
+        loading.value = true
+        return hdWROrder({
+            data: {
+                ...formData
+            },
+            complete: () => {
+                loading.value = false
+            }
+        })
+    }
+
+    return {
+        loading,
+        formData,
+        listingSubmit,
+        amount
     }
 }

+ 17 - 0
src/constants/order.ts

@@ -61,4 +61,21 @@ export function getTHJOrderStatusList() {
 export function getTHJOrderStatusName(value: number) {
     const enums = getTHJDeliveryModeList()
     return getEnumTypeName(enums, value)
+}
+
+/**
+ * 获取申请状态类型列表
+ * @returns 
+ */
+ export function getApplyStatusList() {
+    return getEnumTypeList('applystatus')
+}
+
+/**
+ * 获取申请状态类型名称
+ * @returns 
+ */
+export function getApplyStatusName(value: number) {
+    const enums = getTHJDeliveryModeList()
+    return getEnumTypeName(enums, value)
 }

+ 10 - 10
src/packages/mobile/router/index.ts

@@ -216,16 +216,6 @@ const routes: Array<RouteRecordRaw> = [
         path: 'transferdetail',
         name: 'transfer-detail',
         component: () => import('../views/mine/order/detail/transfer/index.vue'),
-      },
-      {
-        path: 'pickup',
-        name: 'warehouse-pickup',
-        component: () => import('../views/mine/order/pickup/index.vue'),
-      },
-      {
-        path: 'listing',
-        name: 'warehouse-listing',
-        component: () => import('../views/mine/order/listing/index.vue'),
       }
     ]
   },
@@ -242,6 +232,16 @@ const routes: Array<RouteRecordRaw> = [
         path: 'wroutinapplydetail',
         name: 'wroutinapply-detail',
         component: () => import('../views/mine/wareorder/wroutinapplydetail/index.vue'),
+      },
+      {
+        path: 'pickup',
+        name: 'warehouse-pickup',
+        component: () => import('../views/mine/wareorder/pickup/index.vue'),
+      },
+      {
+        path: 'listing',
+        name: 'warehouse-listing',
+        component: () => import('../views/mine/wareorder/listing/index.vue'),
       }
     ]
   },

+ 12 - 8
src/packages/mobile/views/mine/order/detail/purchasetrade/index.vue

@@ -5,20 +5,24 @@
         </template>
         <div v-if="detail" class="order-detail__container g-form__container">
             <CellGroup title="采购信息">
-                <Cell title="商品" :value="detail.warehousename" />
+                <Cell title="商品" :value="detail.wrstandardname" />
+                <Cell title="预售价" :value="detail.tradeprice.toFixed(2)" />
+                <Cell title="定金" :value="detail.payeddeposit.toFixed(2)" />
+                <Cell title="尾款" :value="detail.remainamount.toFixed(2)" />
+                <Cell title="状态" :value="detail.thjorderstatusdisplay" />
+                <Cell title="提货方式" :value="detail.thjdeliverymodedisplay" />
+                <Cell title="联系人" :value="detail.contactname" v-if="detail.contactname" />
                 <Cell title="仓库" :value="detail.warehousename" />
-                <Cell title="预售价" :value="detail.tradeprice" />
                 <Cell title="数量" :value="detail.tradeqty" />
-                <Cell title="定金" :value="detail.payeddeposit" />
-                <Cell title="实际价" :value="detail.lastprice" />
-                <Cell title="尾款" :value="detail.remainamount" />
-                <Cell title="状态" :value="detail.orderstatus" />
-                <Cell title="总货款" :value="detail.tradeamount" />
+                <Cell title="实际价" :value="detail.lastprice.toFixed(2)" />
+                <Cell title="优惠" :value="detail.discountamount.toFixed(2)" />
+                <Cell title="总货款" :value="detail.tradeamount.toFixed(2)" />
                 <Cell title="摘牌时间:" :value="formatDate(detail.tradetime, 'YYYY/MM/DD HH:mm:ss')" />
+                <Cell title="到期日期" :value="detail.enddate" />
+                <Cell title="到期月份:" :value="detail.enddatemonth" />
             </CellGroup>
             <CellGroup title="提货信息">
                 <Cell title="提货方式" :value="detail.thjdeliverymodedisplay" />
-                <Cell title="联系人" :value="detail.contactname" v-if="detail.contactname" />
                 <Cell title="联系方式" :value="detail.contactinfo" v-if="detail.contactinfo" />
                 <Cell title="目的地地址" :value="detail.desaddress" v-if="detail.desaddress" />
                 <Cell title="发票信息" :value="detail.receiptinfo" v-if="detail.receiptinfo" />

+ 1 - 1
src/packages/mobile/views/mine/order/detail/wrorder/index.vue

@@ -48,7 +48,7 @@ if (item) {
 
 const { cancelSubmit } = useWrListingCancelOrder()
 
-/// 确认交收
+/// 确认撤销
 const spotConfirmSubmit = () => {
     const param = detail.value
     if (param) {

+ 0 - 7
src/packages/mobile/views/mine/order/listing/index.vue

@@ -1,7 +0,0 @@
-<template>
-    <app-view class="mine-order">
-        <template #header>
-            <app-navbar title="供求挂牌" />
-        </template>
-    </app-view>
-</template>

+ 0 - 11
src/packages/mobile/views/mine/order/pickup/index.vue

@@ -1,11 +0,0 @@
-<template>
-    <app-view class="mine-order">
-        <template #header>
-            <app-navbar title="提货" />
-        </template>
-    </app-view>
-</template>
-
-<script lang="ts" setup>
-
-</script>

+ 16 - 6
src/packages/mobile/views/mine/wareorder/list/components/holdlb/index.vue

@@ -2,8 +2,12 @@
     <app-view class="order-list-purchase">
         <app-pull-refresh v-model:error="error" v-model:pageIndex="pageIndex" :page-count="pageCount"
             @refresh="onRefresh">
-            <app-list :columns="columns" :data-list="dataList" @click="onClick" />
-            <!-- <Button>更多</Button> -->
+            <app-list :columns="columns" :data-list="dataList">
+                <template #operator="{row}">
+                    <Button size="small" type="primary" round @click="listing(row)">挂牌</Button>
+                    <Button size="small" type="danger" round @click="pickup(row)">提货</Button>
+                </template>
+            </app-list>
         </app-pull-refresh>
     </app-view>
 </template>
@@ -11,9 +15,9 @@
 <script lang="ts" setup>
 
 import { shallowRef } from 'vue'
-// import { Button } from 'vant'
 import { useNavigation } from '@/hooks/navigation'
 import { useQueryHoldLB } from '@/business/order'
+import { Button } from 'vant'
 import AppPullRefresh from '@mobile/components/base/pull-refresh/index.vue'
 import AppList from '@mobile/components/base/list/index.vue'
 
@@ -27,11 +31,17 @@ const columns: Model.TableColumn[] = [
     { prop: 'qty', label: '库存' },
     { prop: 'freezerqty', label: '冻结' },
     { prop: 'enableqty', label: '可用' },
-    { prop: 'warehousename', label: '仓库' }
+    { prop: 'warehousename', label: '仓库' },
+    { prop: 'operator', label: '操作' }
 ]
 
-const onClick = (item: Model.HoldLBRsp) => {
-    router.push({ name: '', params: { item: JSON.stringify(item) } })
+const pickup = (item: Model.HoldLBRsp) => {
+    router.push({ name: 'warehouse-pickup', params: { item: JSON.stringify(item) } })
+}
+
+const listing = (item: Model.HoldLBRsp) => {
+    console.log('sssssss', item)
+    router.push({ name: 'warehouse-listing', params: { item: JSON.stringify(item) } })
 }
 
 const onRefresh = (finish: () => void) => {

+ 86 - 3
src/packages/mobile/views/mine/wareorder/listing/index.vue

@@ -1,7 +1,90 @@
 <template>
-    <app-view class="listing g-form">
+    <app-view class="wareorder-listing">
         <template #header>
-            <app-navbar title="挂牌" />
+            <app-navbar title="供求挂牌" />
+        </template>
+
+        <Form ref="formRef" class="g-form__container" @submit="formSubmit">
+            <CellGroup inset>
+                <Field label="商品">
+                    <template #input>
+                        {{ detail?.wrstandardname }}
+                    </template>
+                </Field>
+                <Field label="仓库">
+                    <template #input>
+                        {{ detail?.warehousename }}
+                    </template>
+                </Field>
+                <Field label="参考价格">
+                    <template #input>
+                        7000元/吨
+                    </template>
+                </Field>
+                <Field name="Price" label="挂牌价格" v-model="formData.FixedPrice" placeholder="请输入挂牌价格"
+                    :rules="formRules.FixedPrice" />
+                <Field name="Qty" label="挂牌数量" v-model="formData.OrderQty" placeholder="请输入挂牌数量"
+                    :rules="formRules.OrderQty" />
+                <Field label="货款金额" >
+                    <template #input>
+                        {{ amount }}
+                    </template>
+                </Field> 
+            </CellGroup>
+        </Form>
+
+        <template #footer>
+            <div class="g-form__footer">
+                <Button type="primary" round block @click="formRef?.submit()">卖出</Button>
+            </div>
         </template>
     </app-view>
-</template>
+</template>
+
+
+<script lang="ts" setup>
+
+import { shallowRef } from 'vue'
+import { CellGroup, Button, Field, Form, FormInstance, FieldRule, Toast } from 'vant'
+import { useHdWROrder } from "@/business/trade";
+import { useNavigation } from '@/hooks/navigation'
+import { fullloading, dialog } from '@/utils/vant'
+     
+const { router, route } = useNavigation()
+const formRef = shallowRef<FormInstance>()
+
+const item = route.params.item
+const detail = shallowRef<Model.HoldLBRsp>()
+
+if (item) {
+    detail.value = JSON.parse(item.toString())
+}
+
+const { formData, listingSubmit, amount} = useHdWROrder(detail.value)
+
+// 表单验证规则
+const formRules: { [key in keyof Proto.HdWROrderReq]?: FieldRule[] } = {
+    FixedPrice: [{
+        required: true,
+        message: '请输入挂牌价格',
+    }],
+    OrderQty: [{
+        required: true,
+        message: '请输入挂牌数量',
+    }],
+}
+
+const formSubmit = () => {
+    fullloading((hideLoading) => {
+        listingSubmit().then(() => {
+            hideLoading()
+            dialog('挂牌提交成功。').then(() => {
+                router.back()
+            })
+        }).catch((err) => {
+            Toast.fail(err)
+        })
+    })
+}
+
+</script>

+ 174 - 2
src/packages/mobile/views/mine/wareorder/pickup/index.vue

@@ -1,7 +1,179 @@
 <template>
-    <app-view class="pickup g-form">
+    <app-view class="wareorder-pickup">
         <template #header>
             <app-navbar title="提货" />
         </template>
+
+        <Form ref="formRef" class="g-form__container" @submit="formSubmit">
+            <CellGroup inset>
+                <Field label="商品" readonly>
+                    <template #input>
+                        {{ detail?.wrstandardname }}
+                    </template>
+                </Field>
+                <Field label="仓库" readonly>
+                    <template #input>
+                        {{ detail?.warehousename }}
+                    </template>
+                </Field>
+                <Field name="OrderQty" label="提货数量" v-model="orderQty" placeholder="请输入提货数量"
+                    :rules="formRules.orderQty" />
+
+                <Field label="提货方式" readonly>
+                   <template #input>
+                      <RadioGroup v-model="checked" direction="horizontal">
+                        <Radio name="3">代办运输</Radio>
+                        <Radio name="2">自提</Radio>
+                      </RadioGroup>
+                   </template>
+                </Field>
+                <Field name="ContractName" label="联系人" v-model="formData.ContactName" placeholder="请输入联系人"
+                :rules="formRules.ContactName">
+                    <template #button>
+                        <Button size="normal" icon="add-o" @click="showContact = true" />
+                    </template>
+                </Field>
+                <Field name="ContactNum" label="联系方式" v-model="formData.ContactNum" placeholder="请输入联系方式"
+                :rules="formRules.ContactNum"/>
+                <Field name="Address" label="目的地地址" v-model="formData.Address" placeholder="请输入目的地地址"
+                :rules="formRules.Address" v-if="checked === '3'" />
+                <Field name="AppointmentRemark" label="发票信息" rows="10" autosize v-model="formData.AppointmentRemark" placeholder="请填入发票信息"
+                :rules="formRules.AppointmentRemark">
+                    <template #button>
+                        <Button size="normal" icon="add-o" @click="showReceipt = true"/>
+                    </template>
+                </Field>
+            </CellGroup>
+        </Form>
+        <template #footer>
+            <div class="g-form__footer">
+                <Button type="primary" round block @click="formRef?.submit()">提货</Button>
+            </div>
+        </template>
     </app-view>
-</template>
+    <app-contact v-model:show="showContact" @change="contactChange" />
+    <app-receipt v-model:show="showReceipt" @change="receiptChange" />
+</template>
+
+<script lang="ts" setup>
+import { shallowRef } from 'vue'
+import { CellGroup, Button, Field, Form, FormInstance, FieldRule, Toast, Radio, RadioGroup } from 'vant'
+import { useWrOutInApply } from "@/business/trade";
+import { useNavigation } from '@/hooks/navigation'
+import { fullloading, dialog } from '@/utils/vant'
+import { getReceiptTypeName } from '@/constants/receipt'
+import { validateRules } from '@/constants/regex'
+import AppContact from '@mobile/components/modules/contact/index.vue'
+import AppReceipt from '@mobile/components/modules/receipt/index.vue'
+
+const showContact = shallowRef(false) // 显示联系人选择列表
+const showReceipt = shallowRef(false) // 显示发票选择列表
+const { router, route } = useNavigation()
+const formRef = shallowRef<FormInstance>()
+const item = route.params.item
+const detail = shallowRef<Model.HoldLBRsp>()
+
+if (item) {
+    detail.value = JSON.parse(item.toString())
+}
+
+const { formData, applySubmit, orderQty, checked} = useWrOutInApply(detail.value)
+
+// 表单验证规则
+const formRules: { [key in keyof Proto.WROutApplyReq | 'orderQty']?: FieldRule[] } = {
+    orderQty: [{
+        required: true,
+        message: '请输入提货数量',
+    }],
+    ContactName: [{
+        required: true,
+        message: '请输入联系人',
+    }],
+    ContactNum: [{
+        required: true,
+        message: '请输入联系方式',
+        validator: (val) => {
+            if (validateRules.phone.validate(val)) {
+                return true
+            }
+            return validateRules.phone.message
+        }
+    }],
+    Address: [{
+        required: checked.value === '3',
+        message: '请输入目的地地址',
+    }],
+    AppointmentRemark: [{
+        required: true,
+        message: '请输入发票信息',
+    }],
+}
+
+const formSubmit = () => {
+    fullloading((hideLoading) => {
+        applySubmit().then(() => {
+            hideLoading()
+            dialog('提货申请提交成功。').then(() => {
+                router.back()
+            })
+        }).catch((err) => {
+            Toast.fail(err)
+        })
+    })
+}
+
+// 选择联系信息
+const contactChange = (item: Model.UserReceiveInfoRsp) => {
+    formData.ContactName = item.receivername
+    formData.ContactNum = item.phonenum
+
+    if (checked.value === '3') {
+        formData.Address = [item.provincename, item.cityname, item.districtname, item.address].join(' ')
+    } else {
+        formData.Address = ''
+    }
+}
+
+// 选择发票信息
+const receiptChange = (item: Model.WrUserReceiptInfoRsp) => {
+    formData.AppointmentRemark = ''
+    Object.entries(item).forEach(([key, value]) => {
+        if (value !== '') {
+            switch (key) {
+                case 'receipttype': {
+                    formData.AppointmentRemark += '发票类型:' + getReceiptTypeName(Number(value)) + '\n'
+                    break
+                }
+                case 'username': {
+                    formData.AppointmentRemark += '发票抬头:' + value + '\n'
+                    break
+                }
+                case 'taxpayerid': {
+                    formData.AppointmentRemark += '税号:' + value + '\n'
+                    break
+                }
+                case 'receiptbank': {
+                    formData.AppointmentRemark += '开户银行:' + value + '\n'
+                    break
+                }
+                case 'receiptaccount': {
+                    formData.AppointmentRemark += '银行账号:' + value + '\n'
+                    break
+                }
+                case 'address': {
+                    formData.AppointmentRemark += '企业地址:' + value + '\n'
+                    break
+                }
+                case 'contactinfo': {
+                    formData.AppointmentRemark += '企业电话:' + value + '\n'
+                    break
+                }
+                case 'email': {
+                    formData.AppointmentRemark += '邮箱:' + value + '\n'
+                    break
+                }
+            }
+        }
+    })
+}
+</script>

+ 7 - 6
src/packages/mobile/views/mine/wareorder/wroutinapplydetail/index.vue

@@ -8,12 +8,12 @@
                 <Cell title="商品" :value="detail.wrstandardname" />
                 <Cell title="仓库" :value="detail.warehousename" />
                 <Cell title="提货数量" :value="detail.qty" />
-                <Cell title="提货方式"  />
-                <Cell title="联系人"  />
-                <Cell title="联系方式"  />
-                <Cell title="目的地地址"  />
-                <Cell title="发票信息"  />
-                <Cell title="提货状态" />
+                <Cell title="提货方式" :value="detail.appointmentmodeldisplay" />
+                <Cell title="联系人" :value="detail.contactname" />
+                <Cell title="联系方式" :value="detail.contactnum" />
+                <Cell title="目的地地址" :value="detail.address" />
+                <Cell title="发票信息" :value="detail.appointmentremark" />
+                <Cell title="提货状态" :value="getApplyStatusName(detail.applystatus)" />
             </CellGroup>
         </div>
         <div v-else>
@@ -27,6 +27,7 @@
 import { shallowRef } from 'vue'
 import { useNavigation } from '@/hooks/navigation'
 import { CellGroup, Cell, Empty } from 'vant'
+import { getApplyStatusName } from "@/constants/order";
 
 const { route } = useNavigation()
 const item = route.params.item

+ 2 - 2
src/services/api/trade/index.ts

@@ -48,14 +48,14 @@ export function wrListingCancelOrder(params: TradeParams<Proto.WRListingCancelOr
  * 仓单出库申请
  */
 export function wrOutApply(params: TradeParams<Proto.WROutApplyReq, Proto.WROutApplyRsp>) {
-    return tradeServerRequest('WROutApplyReq', 'WROutApplyRsp', params, Market.THJ);
+    return tradeServerRequest('WROutApplyReq', 'WROutApplyRsp', params);
 }
 
 /**
  * 持仓单挂牌请求
  */
 export function hdWROrder(params: TradeParams<Proto.HdWROrderReq, Proto.HdWROrderRsp>) {
-    return tradeServerRequest('HdWROrderReq', 'HdWROrderRsp', params, Market.THJ);
+    return tradeServerRequest('HdWROrderReq', 'HdWROrderRsp', params, Market.THJ_Listing);
 }
 
 /**

+ 1 - 1
src/stores/modules/enum.ts

@@ -16,7 +16,7 @@ interface StoreState {
     loading: boolean;
     allEnums: ShallowRef<Model.EnumRsp[]>;
 }
-const enumKeys = ['clientType', 'scoreConfigType', 'accountBusinessCode', 'certificatetype', 'signstatus', 'thjOrderStatus', 'thjDeliveryMode', 'goodsunit'] as const
+const enumKeys = ['clientType', 'scoreConfigType', 'accountBusinessCode', 'certificatetype', 'signstatus', 'thjOrderStatus', 'thjDeliveryMode', 'goodsunit', 'applystatus'] as const
 
 /**
  * 枚举存储类

+ 16 - 0
src/types/model/order.d.ts

@@ -267,6 +267,10 @@ declare namespace Model {
         desaddress: string
         /// 优惠总金额(优惠金额*TradeQty)
         discountamount: number
+        /// 到期日期
+        enddate: string
+        /// 到期月份
+        enddatemonth: string
         /// 处理状态
         handlestatus: number
         /// 到期总货款 = 到期价格 * 摘牌数量
@@ -431,6 +435,8 @@ declare namespace Model {
 
     /* 查询提货申请 响应*/
     interface WrOutInApplyRsp {
+        /// 详细地址
+        address: string
         /// 申请单id
         applyid: string
         /// 申请状态 - 0:预约成功 1:待初审 2:初审通过 3:初审拒绝 4:初审失败 5复审通过 6:复审拒绝 7:复审失败 8:已撤销
@@ -438,11 +444,21 @@ declare namespace Model {
         /// 申请时间
         applytime: string
         /// 申请类型 - 1:预约入库 2:预约出库 3:入库注册 4:出库注销
+        appointmentmodel: number
+        /// 预约方式 - 1:物流 2:自送 3:自提
         applytype: number
+        /// 预约方式(显示枚举)
+        appointmentmodeldisplay: string
+        /// 申请备注
+        appointmentremark: string
         /// Banner图
         bannerpicurl: string
         /// 开始交易日(yyyymmdd)
         begindate: string
+        /// 联系人
+        contactname: string
+        /// 联系方式
+        contactnum: string
         /// 品种代码
         deliverygoodscode: string
         /// 品种ID

+ 47 - 47
src/types/proto/trade.d.ts

@@ -138,10 +138,10 @@ declare global {
 
         // 仓单出库提单明细数据
         interface WROutInDetail {
-            LadingBillID: string; // 提单ID
-            SubNum: number; // 提单子单号
-            Qty: number; // 子提单总数量
-            OutQty: number; // 预约数量
+            LadingBillID?: string; // 提单ID
+            SubNum?: number; // 提单子单号
+            Qty?: number; // 子提单总数量
+            OutQty?: number; // 预约数量
         }
 
         // 仓单出库申请
@@ -194,48 +194,48 @@ declare global {
         // 持仓单挂牌请求
         interface HdWROrderReq {
             Header?: IMessageHead;
-            LadingBillId: number; // 提单id(wrholdlb的LadingBillId字段),卖的时候填写
-            TradeDate: string; // 交易日
-            SubNum: number; // 提单子单号(wrholdlb的SubNum字段),卖的时候填写
-            WRFactorTypeId: number; // 仓单要素ID(wrholdlb的WRFactorTypeId字段),卖的时候填写
-            UserID: number; // 用户ID
-            AccountID: number; // 资金账号
-            IsSpecified: number; // 是否指定对手
-            MatchAccIDs: number; // 仓单贸易对手用户ID集合(指定对手时填写)
-            OrderQty: number; // 委托数量(可挂部分数据量)
-            DeliveryGoodsID: number; // 交割商品商品ID
-            WRPriceType: number; // 价格方式
-            FixedPrice: number; // 固定价格
-            WRTradeGoods: WRGoodsInfo; // 仓单贸易商品配置集合(浮动价时填写)
-            PriceFactor: number; // 价格系数(浮动价时填写)-[挂牌]
-            PriceMove: number; // 升贴水(浮动价时填写)
-            TimevalidType: number; // 时间有效类型
-            ValidTime: string; // 有效期限
-            FirstRatio: number; // 首付比例
-            PerformanceTemplateID: number; // 履约计划模板ID
-            OrderSrc: number; // 委托来源
-            ClientSerialNo: string; // 客户端流水号
-            ClientOrderTime: string; // 客户端委托时间
-            ClientType: number; // 终端类型
-            OperatorID: number; // 操作员账号ID
-            BuyOrSell: number; // 买卖方向
-            PriceDisplayMode: number; // 浮动价显示方式
-            CanBargain: number; // 挂牌是否可议价0:不可1:可-摘牌是否议价
-            Attachment1: string; // 附件1
-            Attachment2: string; // 附件2
-            Remark: string; // 备注
-            ApplyID: number; // 申请ID
-            CanPart: number; // 是否允许部份摘牌0:不允许;1:允许
-            MatchAccIDsString: string; // 仓单贸易对手用户ID集合(指定对手时填写)
-            DeliveryMonth: string; // 交收月
-            HasWr: number; // 是否有仓单-0:没有仓单1:有仓单
-            WRStandardID: number; // 现货品种ID
-            FactoryItems: DGFactoryItems; // 要素类型明细集合(没有仓单要素ID填写)
-            DelistMinQty: number; // 起摘数量
-            MarginFlag: number; // 挂牌是否指定保证金0:否1:是
-            MarginAlgorithm: number; // 指定保证金方式1:比率2:固定
-            MarginValue: number; // 指定保证金设置值
-            AllFriendsFlag: number; // 是否全好友可见0:否1:是
+            LadingBillId?: number; // 提单id(wrholdlb的LadingBillId字段),卖的时候填写
+            TradeDate?: string; // 交易日
+            SubNum?: number; // 提单子单号(wrholdlb的SubNum字段),卖的时候填写
+            WRFactorTypeId?: number; // 仓单要素ID(wrholdlb的WRFactorTypeId字段),卖的时候填写
+            UserID?: number; // 用户ID
+            AccountID?: number; // 资金账号
+            IsSpecified?: number; // 是否指定对手
+            MatchAccIDs?: number; // 仓单贸易对手用户ID集合(指定对手时填写)
+            OrderQty?: number; // 委托数量(可挂部分数据量)
+            DeliveryGoodsID?: number; // 交割商品商品ID
+            WRPriceType?: number; // 价格方式
+            FixedPrice?: number; // 固定价格
+            WRTradeGoods?: WRGoodsInfo; // 仓单贸易商品配置集合(浮动价时填写)
+            PriceFactor?: number; // 价格系数(浮动价时填写)-[挂牌]
+            PriceMove?: number; // 升贴水(浮动价时填写)
+            TimevalidType?: number; // 时间有效类型
+            ValidTime?: string; // 有效期限
+            FirstRatio?: number; // 首付比例
+            PerformanceTemplateID?: number; // 履约计划模板ID
+            OrderSrc?: number; // 委托来源
+            ClientSerialNo?: string; // 客户端流水号
+            ClientOrderTime?: string; // 客户端委托时间
+            ClientType?: number; // 终端类型
+            OperatorID?: number; // 操作员账号ID
+            BuyOrSell?: number; // 买卖方向
+            PriceDisplayMode?: number; // 浮动价显示方式
+            CanBargain?: number; // 挂牌是否可议价0:不可1:可-摘牌是否议价
+            Attachment1?: string; // 附件1
+            Attachment2?: string; // 附件2
+            Remark?: string; // 备注
+            ApplyID?: number; // 申请ID
+            CanPart?: number; // 是否允许部份摘牌0:不允许;1:允许
+            MatchAccIDsString?: string; // 仓单贸易对手用户ID集合(指定对手时填写)
+            DeliveryMonth?: string; // 交收月
+            HasWr?: number; // 是否有仓单-0:没有仓单1:有仓单
+            WRStandardID?: number; // 现货品种ID
+            FactoryItems?: DGFactoryItems; // 要素类型明细集合(没有仓单要素ID填写)
+            DelistMinQty?: number; // 起摘数量
+            MarginFlag?: number; // 挂牌是否指定保证金0:否1:是
+            MarginAlgorithm?: number; // 指定保证金方式1:比率2:固定
+            MarginValue?: number; // 指定保证金设置值
+            AllFriendsFlag?: number; // 是否全好友可见0:否1:是
         }
 
         // 持仓单挂牌应答
@@ -256,7 +256,7 @@ declare global {
             Header?: IMessageHead;
             UserID: number; // 用户ID
             AccountID: number; // 资金账号
-            RelatedWRTradeOrderI: numberD; // 关联委托单号(摘牌委托关联挂牌委托单ID)
+            RelatedWRTradeOrderID: number; // 关联委托单号(摘牌委托关联挂牌委托单ID)
             WRTransferUserID: number; // 仓单受让用户
             OrderQty: number; // 委托数量
             OrderSrc: number; // 委托来源