li.shaoyi há 2 anos atrás
pai
commit
4c36e04093

+ 7 - 9
src/business/trade/index.ts

@@ -266,20 +266,19 @@ export function useWrListingCancelOrder() {
 }
 
 // 仓单明细提货请求接口
-export function useWrOutInApply(holdlb?: Model.HoldLBRsp) {
+export function useWrOutInApply(holdlb: Model.HoldLBRsp) {
     const loading = shallowRef(false)
     const orderQty = shallowRef(0.0)
-    const checked = shallowRef(3)
 
     const formData = reactive<Partial<Proto.WROutApplyReq>>({
         AppointmentRemark: '',
         UserID: loginStore.userId,             // 用户ID,必填
         AccountID: accountStore.accountId,  // 申请人账户ID
         CreatorID: loginStore.loginId,         // 创建人ID
-        WRStandardID: holdlb?.wrstandardid,
-        WarehouseID: holdlb?.warehouseid,
+        WRStandardID: holdlb.wrstandardid,
+        WarehouseID: holdlb.warehouseid,
+        AppointmentModel: 1,
         ClientSerialID: new Date().getTime(),    // 客户端流水号
-        AppointmentModel: checked.value,
         AppointmentDate: formatDate(new Date().toISOString(), 'YYYY-MM-DD'),
     })
 
@@ -290,8 +289,8 @@ export function useWrOutInApply(holdlb?: Model.HoldLBRsp) {
                 data: {
                     ...formData,
                     WROutInDetails: [{
-                        LadingBillID: holdlb?.ladingbillid,
-                        SubNum: holdlb?.subnum,
+                        LadingBillID: holdlb.ladingbillid,
+                        SubNum: holdlb.subnum,
                         Qty: orderQty.value,
                         OutQty: orderQty.value,
                     }]
@@ -307,7 +306,6 @@ export function useWrOutInApply(holdlb?: Model.HoldLBRsp) {
         formData,
         applySubmit,
         orderQty,
-        checked
     }
 }
 
@@ -371,7 +369,7 @@ export function useHdWRDealOrder() {
     const formData = reactive<Proto.HdWRDealOrderReq>({
         UserID: loginStore.userId, // 用户ID
         AccountID: accountStore.accountId, // 资金账号
-        RelatedWRTradeOrderID: Long.fromNumber(0), // 关联委托单号(摘牌委托关联挂牌委托单ID)
+        RelatedWRTradeOrderID: '0', // 关联委托单号(摘牌委托关联挂牌委托单ID)
         WRTransferUserID: loginStore.userId, // 仓单受让用户
         OrderQty: 0, // 委托数量
         OrderSrc: OrderSrc.ORDERSRC_CLIENT, // 委托来源

+ 8 - 0
src/constants/order.ts

@@ -112,4 +112,12 @@ export function getWRTradeOrderStatusList() {
 export function getWRTradeOrderStatusName(value: number) {
     const enums = getWRTradeOrderStatusList()
     return getEnumTypeName(enums, value)
+}
+
+/**
+ * 获取提货方式列表
+ * @returns 
+ */
+export function getAppointmentModelOutList() {
+    return getEnumTypeList('appointmentModelOut')
 }

+ 12 - 0
src/packages/mobile/assets/themes/global/global.less

@@ -30,6 +30,18 @@
         .van-cell-group--inset+.van-cell-group--inset {
             margin-top: .24rem;
         }
+
+        .van-field {
+            .van-stepper {
+                display: flex;
+                align-items: center;
+                width: 100%;
+
+                &__input {
+                    flex: 1;
+                }
+            }
+        }
     }
 
     &__footer {

+ 7 - 2
src/packages/mobile/components/base/region/index.vue

@@ -11,7 +11,7 @@
 </template>
 
 <script lang="ts" setup>
-import { shallowRef, computed } from 'vue'
+import { shallowRef, computed, watch } from 'vue'
 import { Popup, Cascader, CascaderOption } from 'vant'
 import axios from 'axios'
 
@@ -37,7 +37,7 @@ const props = defineProps({
     },
 })
 
-const emit = defineEmits(['update:modelValue', 'change', 'finish'])
+const emit = defineEmits(['update:modelValue', 'update:label', 'change', 'finish'])
 const show = shallowRef(false) // 是否弹出选择器
 const inputValue = shallowRef(props.label)
 const options = shallowRef<CascaderOption[]>([])
@@ -66,6 +66,7 @@ const onFinish = ({ selectedOptions }: { selectedOptions: CascaderOption[] }) =>
     inputValue.value = selectedOptions.map((option) => option.text).join(' ')
 
     emit('update:modelValue', [...selection].pop())
+    emit('update:label', inputValue.value)
     emit('finish', selection)
 }
 
@@ -88,6 +89,10 @@ const arrayToTree = (list: Model.Region[]) => {
     return getChildren('0086')
 }
 
+watch(() => props.label, (val) => {
+    inputValue.value = val
+})
+
 axios('./config/address.json').then((res) => {
     options.value = arrayToTree(res.data)
 })

+ 3 - 1
src/packages/mobile/views/order/position/components/spot/list/Index.vue

@@ -30,7 +30,9 @@
                     </ul>
                 </div>
                 <div class="g-order-list__btnbar">
-                    <Button size="small" @click="showComponent('listing', item)" round>挂牌</Button>
+                    <Button size="small"
+                        @click="$router.push({ name: 'spot-detail', query: { wrfactortypeid: item.wrfactortypeid } })"
+                        round>详情</Button>
                     <Button size="small" @click="showComponent('pickup', item)" round>提货</Button>
                 </div>
             </div>

+ 3 - 3
src/packages/mobile/views/order/position/components/spot/listing/Index.vue

@@ -6,14 +6,14 @@
                 <app-navbar title="挂牌" @back="closed" />
             </template>
             <Form ref="formRef" class="g-form__container" @submit="onSubmit">
-                <CellGroup title="现货持仓信息">
+                <CellGroup title="现货持仓信息" inset>
                     <Cell title="商品代码/名称" :value="selectedRow.wrstandardname" />
                     <Cell title="仓库" :value="selectedRow.warehousename" />
                     <Cell title="库存量" :value="selectedRow.qty" />
                     <Cell title="冻结量" :value="selectedRow.freezerqty" />
                     <Cell title="可用量" :value="selectedRow.enableqty" />
                 </CellGroup>
-                <CellGroup title="挂牌信息">
+                <CellGroup title="挂牌信息" inset>
                     <Field name="OrderQty" :rules="formRules.OrderQty" label="挂牌数量">
                         <template #input>
                             <Stepper v-model="formData.OrderQty" theme="round" button-size="22" :auto-fixed="false"
@@ -81,7 +81,7 @@ const formRules: { [key in keyof Proto.HdWROrderReq]?: FieldRule[] } = {
 const onSubmit = () => {
     fullloading((hideLoading) => {
         listingSubmit().then(() => {
-            hideLoading('下单成功', 'success')
+            hideLoading('挂牌成功', 'success')
             closed(true)
         }).catch((err) => {
             hideLoading(err, 'fail')

+ 213 - 1
src/packages/mobile/views/order/position/components/spot/pickup/Index.vue

@@ -1,7 +1,219 @@
 <!-- 我的持仓-现货持仓-提货 -->
 <template>
-    提货
+    <app-modal direction="right" height="100%" v-model:show="showModal" :refresh="refresh">
+        <template #default="{ animation }">
+            <app-view class="g-form">
+                <template #header>
+                    <app-navbar title="挂牌" @back="closed" />
+                </template>
+                <Form ref="formRef" class="g-form__container" @submit="onSubmit">
+                    <CellGroup title="现货持仓信息" inset>
+                        <Cell title="商品代码/名称" :value="selectedRow.wrstandardname" />
+                        <Cell title="仓库" :value="selectedRow.warehousename" />
+                        <Cell title="库存量" :value="selectedRow.qty" />
+                        <Cell title="冻结量" :value="selectedRow.freezerqty" />
+                        <Cell title="可用量" :value="selectedRow.enableqty" />
+                    </CellGroup>
+                    <CellGroup title="挂牌信息" inset>
+                        <Field name="OrderQty" :rules="formRules.orderQty" label="提货数量">
+                            <template #input>
+                                <Stepper v-model="orderQty" theme="round" button-size="22" :auto-fixed="false" integer />
+                            </template>
+                        </Field>
+                        <Field label="提货方式" is-link>
+                            <template #input>
+                                <app-select v-model="formData.AppointmentModel" :options="getAppointmentModelOutList()" />
+                            </template>
+                        </Field>
+                        <Field name="ContractName" label="联系人" v-model="formData.ContactName" placeholder="必填"
+                            :rules="formRules.ContactName" right-icon="add-o" @click-right-icon="showContact = true" />
+                        <Field name="ContactNum" label="联系方式" v-model="formData.ContactNum" placeholder="必填"
+                            :rules="formRules.ContactNum" />
+                        <template v-if="formData.AppointmentModel === 1">
+                            <Field :rules="formRules.Region" name="Region" label="收货地区" is-link v-if="!animation">
+                                <template #input>
+                                    <component :is="AppRegion" v-model="formData.DistrictID" v-model:label="regionName"
+                                        @finish="onRegionFinish" />
+                                </template>
+                            </Field>
+                            <Field name="Address" type="textarea" label="收货地址" row="2" v-model="formData.Address"
+                                placeholder="必填" :rules="formRules.Address" />
+                        </template>
+                        <Field name="AppointmentRemark" type="textarea" label="发票信息" rows="2" autosize
+                            v-model="formData.AppointmentRemark" placeholder="必填" :rules="formRules.AppointmentRemark"
+                            right-icon="add-o" @click-right-icon="showReceipt = true" />
+                    </CellGroup>
+                </Form>
+                <template #footer>
+                    <div class="g-form__footer">
+                        <Button block round type="primary" @click="formRef?.submit">提货</Button>
+                    </div>
+                </template>
+            </app-view>
+            <app-contact v-model:show="showContact" @change="contactChange" />
+            <app-receipt v-model:show="showReceipt" @change="receiptChange" />
+        </template>
+    </app-modal>
 </template>
 
 <script lang="ts" setup>
+import { shallowRef, PropType, defineAsyncComponent } from 'vue'
+import { CellGroup, Cell, Button, Stepper, Field, Form, FormInstance, FieldRule } from 'vant'
+import { fullloading } from '@/utils/vant'
+import { validateRules } from '@/constants/regex'
+import { getReceiptTypeName } from '@/constants/receipt'
+import { getAppointmentModelOutList } from '@/constants/order'
+import { useWrOutInApply } from '@/business/trade'
+import AppModal from '@/components/base/modal/index.vue'
+import AppSelect from '@mobile/components/base/select/index.vue'
+import AppContact from '@mobile/components/modules/contact/index.vue'
+import AppReceipt from '@mobile/components/modules/receipt/index.vue'
+
+// 地区选择
+const AppRegion = defineAsyncComponent(() => import('@mobile/components/base/region/index.vue'))
+
+const props = defineProps({
+    selectedRow: {
+        type: Object as PropType<Model.HoldLBRsp>,
+        required: true,
+    }
+})
+
+const { formData, applySubmit, orderQty } = useWrOutInApply(props.selectedRow)
+const formRef = shallowRef<FormInstance>()
+const showModal = shallowRef(true)
+const showContact = shallowRef(false) // 显示联系人选择列表
+const showReceipt = shallowRef(false) // 显示发票选择列表
+const refresh = shallowRef(false) // 是否刷新父组件数据
+const regionName = shallowRef('') // 地区名称
+
+// 表单验证规则
+const formRules: { [key in keyof Proto.WROutApplyReq | 'orderQty' | 'Region']?: FieldRule[] } = {
+    orderQty: [{
+        message: '请输入提货数量',
+        validator: () => {
+            return !!orderQty.value
+        }
+    }],
+    ContactName: [{
+        required: true,
+        message: '请输入联系人',
+    }],
+    ContactNum: [{
+        required: true,
+        message: '请输入联系方式',
+        validator: (val) => {
+            if (validateRules.phone.validate(val)) {
+                return true
+            }
+            return validateRules.phone.message
+        }
+    }],
+    Region: [{
+        message: '请选择收货地区',
+        validator: () => {
+            return !!formData.ProvinceID && !!formData.CityID && !!formData.DistrictID
+        }
+    }],
+    Address: [{
+        required: true,
+        message: '请输入收货地址',
+    }],
+    AppointmentRemark: [{
+        required: true,
+        message: '请输入发票信息',
+    }],
+}
+
+// 选择地区
+const onRegionFinish = ([province, city, district]: number[]) => {
+    formData.ProvinceID = province
+    formData.CityID = city
+    formData.DistrictID = district
+    formRef.value?.validate('Region')
+}
+
+// 选择联系信息
+const contactChange = (item: Model.UserReceiveInfoRsp) => {
+    formData.ContactName = item.receivername
+    formData.ContactNum = item.phonenum
+    formData.ProvinceID = item.provinceid
+    formData.CityID = item.cityid
+    formData.DistrictID = item.districtid
+    formData.Address = item.address
+    regionName.value = [item.provincename, item.cityname, item.districtname].join(' ')
+    formRef.value?.validate('Region')
+}
+
+// 选择发票信息
+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
+                }
+            }
+        }
+    })
+}
+
+const onSubmit = () => {
+    fullloading((hideLoading) => {
+        applySubmit().then(() => {
+            hideLoading('挂牌成功', 'success')
+            closed(true)
+        }).catch((err) => {
+            hideLoading(err, 'fail')
+        })
+    })
+}
+
+// 关闭弹窗
+const closed = (isRefresh = false) => {
+    refresh.value = isRefresh
+    if (showContact.value) {
+        showContact.value = false
+    } else if (showReceipt.value) {
+        showReceipt.value = false
+    } else {
+        refresh.value = isRefresh
+        showModal.value = false
+    }
+}
+
+// 暴露组件属性给父组件调用
+defineExpose({
+    closed,
+})
 </script>

+ 3 - 3
src/packages/mobile/views/presale/list/Index.vue

@@ -33,11 +33,11 @@
 import { Swipe, SwipeItem, Tag } from 'vant'
 import { getFileUrl } from '@/filters'
 import { useRequest } from '@/hooks/request'
-import { queryPresaleGoods } from '@/services/api/presale'
+import { queryPresaleAuctions } from '@/services/api/presale'
 
-const { dataList } = useRequest(queryPresaleGoods, {
+const { dataList } = useRequest(queryPresaleAuctions, {
     params: {
-        pagesize: 20,
+        presalemode: 2,
     },
 })
 </script>

+ 4 - 5
src/packages/mobile/views/spot/detail/components/delisting/index.vue

@@ -59,7 +59,6 @@ import { useAccountStore } from '@/stores'
 import { BuyOrSell } from '@/constants/order'
 import { queryHoldLB } from '@/services/api/order'
 import { useHdWRDealOrder } from '@/business/trade'
-import Long from 'long'
 import AppPopup from '@mobile/components/base/popup/index.vue'
 //import AppSelect from '@mobile/components/base/select/index.vue'
 
@@ -141,14 +140,14 @@ const onSubmit = () => {
         MarketID: marketid
     }
     formData.BuyOrSell = props.buyorsell
-    formData.RelatedWRTradeOrderID = Long.fromString(wrtradeorderid)
-    formData.WRFactorTypeId = Long.fromString(wrfactortypeid)
+    formData.RelatedWRTradeOrderID = wrtradeorderid
+    formData.WRFactorTypeId = wrfactortypeid
 
     if (formData.BuyOrSell === BuyOrSell.Sell) {
         const { subnum, ladingbillid = '0', wrfactortypeid = '0' } = selectedRow.value ?? {}
-        formData.LadingBillId = Long.fromString(ladingbillid)
+        formData.LadingBillId = ladingbillid
         formData.SubNum = subnum
-        formData.WRFactorTypeId = Long.fromString(wrfactortypeid)
+        formData.WRFactorTypeId = wrfactortypeid
     }
 
     fullloading((hideLoading) => {

+ 3 - 4
src/packages/mobile/views/spot/detail/components/listing/index.vue

@@ -50,7 +50,6 @@ import { useAccountStore } from '@/stores'
 import { BuyOrSell } from '@/constants/order'
 import { queryHoldLB } from '@/services/api/order'
 import { useHdWROrder } from '@/business/trade'
-import Long from 'long'
 import AppPopup from '@mobile/components/base/popup/index.vue'
 //import AppSelect from '@mobile/components/base/select/index.vue'
 
@@ -123,13 +122,13 @@ const onSubmit = () => {
         const { wrstandardid, deliverygoodsid, wrfactortypeid = '0' } = props.quoteItem ?? {}
         formData.WRStandardID = wrstandardid
         formData.DeliveryGoodsID = deliverygoodsid
-        formData.WRFactorTypeId = Long.fromString(wrfactortypeid)
+        formData.WRFactorTypeId = wrfactortypeid
     } else {
         const { wrstandardid, subnum, deliverygoodsid, ladingbillid = '0', wrfactortypeid = '0' } = selectedRow.value ?? {}
         formData.WRStandardID = wrstandardid
         formData.DeliveryGoodsID = deliverygoodsid
-        formData.LadingBillId = Long.fromString(ladingbillid)
-        formData.WRFactorTypeId = Long.fromString(wrfactortypeid)
+        formData.LadingBillId = ladingbillid
+        formData.WRFactorTypeId = wrfactortypeid
         formData.SubNum = subnum
     }
 

+ 4 - 4
src/services/api/presale/index.ts

@@ -3,11 +3,11 @@ import { RequestConfig } from '@/services/http/types'
 
 
 /**
- * 查询掉期报价列表
+ * 查询预售竞拍列表
  */
-export function queryPresaleGoods(config: RequestConfig<Model.PresaleGoodsReq> = {}) {
-    return http.commonRequest<Model.PresaleGoodsRsp[]>({
-        url: '/Hnsh/QueryPresaleGoods',
+export function queryPresaleAuctions(config: RequestConfig<Model.PresaleAuctionsReq> = {}) {
+    return http.commonRequest<Model.PresaleAuctionsRsp[]>({
+        url: '/Presale/QueryPresaleAuctions',
         params: config.data,
     })
 }

+ 1 - 1
src/services/http/index.ts

@@ -41,7 +41,7 @@ export default new (class {
             },
             (err) => {
                 console.error(err)
-                return Promise.reject('出现错误,请稍后再试')
+                return Promise.reject('发生错误,请稍后再试')
             }
         )
 

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

@@ -12,7 +12,7 @@ export interface EnumType {
     disabled?: boolean;
 }
 
-const enumKeys = ['clientType', 'scoreConfigType', 'accountBusinessCode', 'certificatetype', 'signstatus', 'thjOrderStatus', 'THJDeliveryMode', 'goodsunit', 'WROutInApplyStatus2', 'THJTransferStatus', 'WRTradeOrderStatus', 'THJMarket', 'THJProfitRoleType'] as const
+const enumKeys = ['clientType', 'scoreConfigType', 'accountBusinessCode', 'certificatetype', 'signstatus', 'thjOrderStatus', 'THJDeliveryMode', 'goodsunit', 'WROutInApplyStatus2', 'THJTransferStatus', 'WRTradeOrderStatus', 'THJMarket', 'THJProfitRoleType', 'appointmentModelOut'] as const
 
 const enumMap = new Map<typeof enumKeys[number], ShallowRef<Model.EnumRsp[]>>()
 

+ 7 - 7
src/types/model/presale.d.ts

@@ -1,12 +1,13 @@
 declare namespace Model {
-    /** 查询定金预售商品 请求 */
-    interface PresaleGoodsReq {
+    /** 查询预售竞拍列表 请求 */
+    interface PresaleAuctionsReq {
+        presalemode: number; // 预售模式 - 1:一口价 2:大宗式竞拍 3:挂牌预售(HSBY)
         page?: number; // 页码
         pagesize?: number; // 每页条数
     }
 
-    /** 查询定金预售商品 请求 */
-    interface PresaleGoodsRsp {
+    /** 查询预售竞拍列表 请求 */
+    interface PresaleAuctionsRsp {
         accountid: number; // 卖方账户ID
         applyid: number; // 关联申请ID
         attachmenturl: string; // 缩略图片(1:1)
@@ -26,15 +27,14 @@ declare namespace Model {
         presaledepositvalue: number; // 预售定金设置值(48)
         presaledqty: number; // 已预售量(预售结束时更新) 71-委托时更新
         presalemode: number; // 预售模式 - 1:一口价 2:大宗式竞拍 3:挂牌预售(HSBY)
-        presalemodestr: string; // 预售模式
-        presaleprice: number; // 发售价(49)
+        presalemodestr: string; // 预售模式 - 1:一口价 2:大宗式竞拍 3:挂牌预售(HSBY)
         presaleqty: number; // 预售数量
         presalestatus: number; // 预售状态 - 1:未开始 2:预售中 3:已结束
         provideruserid: number; // 发售方用户ID(49)
         refprice: number; // 参考价格[一口价]
         relatedgoodsid: number; // 关联交易合约ID
         relatedmarketid: number; // 关联交易合约市场ID
-        sellname: string; // 发售方
+        sellname: string; // [卖方名称]客户名称(企业名称)
         sellstatus: number; // 卖方处理状态 - 1:卖方头寸未处理 2:卖方头寸已处理
         startprice: number; // 起拍价[大宗式竞拍]
         starttime: string; // 预售开始时间

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

@@ -197,10 +197,10 @@ declare global {
         // 持仓单挂牌请求
         interface HdWROrderReq {
             Header?: IMessageHead;
-            LadingBillId?: Long; // 提单id(wrholdlb的LadingBillId字段),卖的时候填写
+            LadingBillId?: string; // 提单id(wrholdlb的LadingBillId字段),卖的时候填写
             TradeDate?: string; // 交易日
             SubNum?: number; // 提单子单号(wrholdlb的SubNum字段),卖的时候填写
-            WRFactorTypeId?: Long; // 仓单要素ID(wrholdlb的WRFactorTypeId字段),卖的时候填写
+            WRFactorTypeId?: string; // 仓单要素ID(wrholdlb的WRFactorTypeId字段),卖的时候填写
             UserID?: number; // 用户ID
             AccountID?: number; // 资金账号
             IsSpecified?: number; // 是否指定对手
@@ -259,7 +259,7 @@ declare global {
             Header?: IMessageHead;
             UserID: number; // 用户ID
             AccountID: number; // 资金账号
-            RelatedWRTradeOrderID: Long; // 关联委托单号(摘牌委托关联挂牌委托单ID)
+            RelatedWRTradeOrderID: string; // 关联委托单号(摘牌委托关联挂牌委托单ID)
             WRTransferUserID: number; // 仓单受让用户
             OrderQty: number; // 委托数量
             OrderSrc: number; // 委托来源
@@ -269,9 +269,9 @@ declare global {
             OperatorID: number; // 操作员账号ID
             BuyOrSell?: number; // 买卖方向
             ApplyID?: number; // 申请ID
-            LadingBillId?: Long; // 提单id(wrholdlb的LadingBillId字段),卖的时候填写
+            LadingBillId?: string; // 提单id(wrholdlb的LadingBillId字段),卖的时候填写
             SubNum?: number; // 提单子单号(wrholdlb的SubNum字段),卖的时候填写
-            WRFactorTypeId?: Long; // 仓单要素ID(wrholdlb的WRFactorTypeId字段),卖的时候填写
+            WRFactorTypeId?: string; // 仓单要素ID(wrholdlb的WRFactorTypeId字段),卖的时候填写
             TradeDate: string; // 交易日
             DeliveryMonth?: string; // 交收月
             HasWr: number; // 是否有仓单-0:没有仓单1:有仓单