| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587 |
- import { reactive, ref, shallowRef, computed } from 'vue'
- import { v4 } from 'uuid'
- import { ClientType, EBuildType, EDelistingType, EListingSelectType, EOperateType, EOrderOperateType, EValidType, OrderSrc } from '@/constants/client'
- import { useLoginStore, useAccountStore } from '@/stores'
- import {
- spotPresaleDestingOrder,
- spotPresaleTransferCancel,
- spotPresaleTransferDesting,
- spotPresaleTransferListing,
- spotPresalePlayment,
- wrListingCancelOrder,
- spotPresaleDeliveryConfirm,
- wrOutApply,
- spotPresaleBreachOfContractApply,
- hdWROrder,
- hdWRDealOrder,
- thjProfitDrawApply,
- spotPresalePointPrice,
- cancelOrder,
- holderClose,
- order
- } from '@/services/api/trade'
- import { formatDate } from "@/filters";
- import Long from 'long'
- import { BuyOrSell } from '@/constants/order'
- const loginStore = useLoginStore()
- const accountStore = useAccountStore()
- // 采购摘牌
- export function usePurchaseOrderDesting() {
- const loading = shallowRef(false)
- const formData = ref<Partial<Proto.SpotPresaleDestingOrderReq>>({
- UserID: loginStore.userId, // 用户ID,必填
- AccountID: accountStore.accountId, // 资金账号,必填
- ClientType: ClientType.Web, // 终端类型
- UpdatorID: loginStore.loginId, // 操作人,必填
- })
- const formSubmit = async () => {
- try {
- loading.value = true
- return await spotPresaleDestingOrder({
- data: {
- ...formData.value,
- Qty: Number(formData.value.Qty),
- ClientSerialNo: v4() // 客户端流水号
- }
- })
- } finally {
- loading.value = false
- }
- }
- return {
- loading,
- formData,
- formSubmit,
- }
- }
- // 铁合金现货预售交收确认
- export function useSpotPresaleDeliveryConfirm() {
- const loading = shallowRef(false)
- const confirmSubmit = async (id: string) => {
- try {
- loading.value = true
- return await spotPresaleDeliveryConfirm({
- data: {
- UserID: loginStore.userId,
- Remark: '',
- WRTradeDetailID: Long.fromString(id),
- ClientSerialNo: v4(),
- ClientType: ClientType.Web // 终端类型
- }
- })
- } finally {
- loading.value = false
- }
- }
- return {
- loading,
- confirmSubmit
- }
- }
- // 铁合金现货预售违约申请
- export function useSpotPresaleBreachOfContractApply() {
- const loading = shallowRef(false)
- const applySubmit = async (id: string) => {
- try {
- loading.value = true
- return await spotPresaleBreachOfContractApply({
- data: {
- UserID: loginStore.userId,
- WRTradeDetailID: Long.fromString(id),
- ClientSerialNo: v4(),
- ClientType: ClientType.Web // 终端类型
- }
- })
- } finally {
- loading.value = false
- }
- }
- return {
- loading,
- applySubmit,
- }
- }
- // 铁合金现货预售付款处理接口
- export function useSpotPresalePlayment() {
- const loading = shallowRef(false)
- const formData = reactive<Partial<Proto.SpotPresalePlaymentReq>>({
- UserID: loginStore.userId, // 用户ID,必填
- ClientType: ClientType.Web, // 终端类型
- ClientSerialNo: v4(), // 客户端流水号
- })
- const playmentSubmit = async (id: string) => {
- try {
- loading.value = true
- return await spotPresalePlayment({
- data: {
- ...formData,
- WRTradeDetailID: Long.fromString(id),
- }
- })
- } finally {
- loading.value = false
- }
- }
- return {
- loading,
- playmentSubmit
- }
- }
- // 铁合金现货预售转让挂牌接口
- export function useSpotPresaleTransferListing() {
- const loading = shallowRef(false)
- const formData = reactive<Partial<Proto.SpotPresaleTransferListingReq>>({
- UserID: loginStore.userId, // 用户ID,必填
- ClientType: ClientType.Web, // 终端类型
- ClientSerialNo: v4(), // 客户端流水号
- })
- const listingSubmit = async (id: string) => {
- try {
- loading.value = true
- /// 转让价格不能为0
- if (!formData.TransferPrice) {
- return Promise.reject('转让价格不能为0')
- }
- return await spotPresaleTransferListing({
- data: {
- ...formData,
- WRTradeDetailID: Long.fromString(id),
- }
- })
- } finally {
- loading.value = false
- }
- }
- return {
- loading,
- formData,
- listingSubmit
- }
- }
- // 铁合金现货预售转让撤销接口请求
- export function useSpotPresaleTransferCancel() {
- const loading = shallowRef(false)
- const transferCancelSubmit = async (wrtradedetailid?: string) => {
- try {
- loading.value = true
- return await spotPresaleTransferCancel({
- data: {
- UserID: loginStore.userId,
- WRTradeDetailID: Long.fromString(wrtradedetailid ?? '0'),
- ClientSerialNo: v4(),
- ClientType: ClientType.Web // 终端类型
- }
- })
- } finally {
- loading.value = false
- }
- }
- return {
- loading,
- transferCancelSubmit
- }
- }
- // 铁合金现货预售转让摘牌接口请求
- export function useSpotPresaleTransferDesting() {
- const loading = shallowRef(false)
- const formData = reactive<Proto.SpotPresaleTransferDestingReq>({
- UserID: loginStore.userId,
- AccountID: accountStore.accountId,
- TransferID: Long.fromNumber(0),
- ClientType: ClientType.Web // 终端类型
- })
- const destingSubmit = async () => {
- try {
- loading.value = true
- return await spotPresaleTransferDesting({
- data: {
- ...formData,
- ClientSerialNo: v4(), // 客户端流水号
- }
- })
- } finally {
- loading.value = false
- }
- }
- return {
- loading,
- formData,
- destingSubmit
- }
- }
- // 挂牌撤单请求接口
- export function useWrListingCancelOrder() {
- const loading = shallowRef(false)
- const cancelSubmit = async (id: string, buyorsell: number) => {
- try {
- loading.value = true
- return await wrListingCancelOrder({
- data: {
- UserID: loginStore.userId,
- AccountID: accountStore.accountId,
- OperatorID: loginStore.loginId,
- OrderSrc: OrderSrc.ORDERSRC_CLIENT,
- OldWRTradeOrderID: Long.fromString(id),
- ClientOrderTime: formatDate(new Date().toString(), 'YYYY-MM-DD HH:mm:ss'),
- ClientSerialNo: v4(),
- ClientType: ClientType.Web,
- BuyOrSell: buyorsell,
- }
- })
- } finally {
- loading.value = false
- }
- }
- return {
- loading,
- cancelSubmit
- }
- }
- // 仓单明细提货请求接口
- export function useWrOutInApply(holdlb: Model.HoldLBRsp) {
- const loading = shallowRef(false)
- const orderQty = shallowRef(0.0)
- 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,
- AppointmentModel: 1,
- ClientSerialID: new Date().getTime(), // 客户端流水号
- AppointmentDate: formatDate(new Date().toISOString(), 'YYYY-MM-DD'),
- })
- const applySubmit = async () => {
- try {
- loading.value = true
- return await wrOutApply({
- data: {
- ...formData,
- WROutInDetails: [{
- LadingBillID: holdlb.ladingbillid,
- SubNum: holdlb.subnum,
- Qty: orderQty.value,
- OutQty: orderQty.value,
- }]
- }
- })
- } finally {
- loading.value = false
- }
- }
- return {
- loading,
- formData,
- applySubmit,
- orderQty,
- }
- }
- // 仓单明细挂牌请求接口
- export function useHdWROrder() {
- const loading = shallowRef(false)
- const formData = reactive<Proto.HdWROrderReq>({
- IsSpecified: 0,
- PriceFactor: 1.0,
- FirstRatio: 0.0,
- CanBargain: 0,
- CanPart: 1,
- UserID: loginStore.userId,
- AccountID: accountStore.accountId,
- OperatorID: loginStore.loginId,
- ClientType: ClientType.Web,
- BuyOrSell: BuyOrSell.Sell,
- WRPriceType: 1,
- MarginFlag: 0,
- TimevalidType: 4,
- HasWr: 1,
- PerformanceTemplateID: -1,
- })
- const amount = computed(() => {
- const { OrderQty = 0, FixedPrice = 0 } = formData
- return (OrderQty * FixedPrice).toFixed(2)
- })
- const listingSubmit = async () => {
- try {
- loading.value = true
- const date = new Date().toISOString()
- return await hdWROrder({
- data: {
- ...formData,
- TradeDate: formatDate(date, 'YYYYMMDD'),
- ClientSerialNo: v4(),
- ClientOrderTime: formatDate(date),
- }
- })
- } finally {
- loading.value = false
- }
- }
- return {
- loading,
- formData,
- listingSubmit,
- amount
- }
- }
- // 仓单摘牌
- export function useHdWRDealOrder() {
- const loading = shallowRef(false)
- const formData = reactive<Proto.HdWRDealOrderReq>({
- UserID: loginStore.userId, // 用户ID
- AccountID: accountStore.accountId, // 资金账号
- RelatedWRTradeOrderID: '0', // 关联委托单号(摘牌委托关联挂牌委托单ID)
- WRTransferUserID: loginStore.userId, // 仓单受让用户
- OrderQty: 0, // 委托数量
- OrderSrc: OrderSrc.ORDERSRC_CLIENT, // 委托来源
- ClientSerialNo: '', // 客户端流水号
- ClientOrderTime: '', // 客户端委托时间
- ClientType: ClientType.Web, // 终端类型
- OperatorID: loginStore.loginId, // 操作员账号ID
- TradeDate: '', // 交易日
- HasWr: 1, // 是否有仓单-0:没有仓单1:有仓单
- IsFinancing: 0, // 是否融资购买(买摘牌时有效)-0:否1:是
- })
- const formSubmit = async () => {
- try {
- loading.value = true
- const date = new Date().toISOString()
- return await hdWRDealOrder({
- data: {
- ...formData,
- TradeDate: formatDate(date, 'YYYYMMDD'),
- ClientSerialNo: v4(),
- ClientOrderTime: formatDate(date),
- }
- })
- } finally {
- loading.value = false
- }
- }
- return {
- loading,
- formData,
- formSubmit,
- }
- }
- // 铁合金收益支取申请接口
- export function useTHJProfitDrawApplyReq() {
- const loading = shallowRef(false)
- const formData = reactive<Proto.THJProfitDrawApplyReq>({
- UserID: loginStore.userId, // 用户ID
- ApplySrc: ClientType.Web,
- ApplyerID: loginStore.loginId,
- ClientType: ClientType.Web
- })
- const onSubmit = async (drawMonth: string, amount: number) => {
- try {
- loading.value = true
- return await thjProfitDrawApply({
- data: {
- ...formData,
- DrawMonth: formatDate(drawMonth, 'YYYYMM'),
- DrawAmount: amount,
- ClientSerialNo: v4(),
- }
- })
- } finally {
- loading.value = false
- }
- }
- return {
- loading,
- formData,
- onSubmit,
- }
- }
- // 铁合金预售点价
- export function useSpotPresalePointPrice(WRTradeDetailID = '0') {
- const loading = shallowRef(false)
- const formData = reactive<Proto.SpotPresalePointPriceReq>({
- UserID: loginStore.userId, // 用户ID,必填
- WRTradeDetailID: Long.fromString(WRTradeDetailID), // 预售成交明细ID
- ClientType: ClientType.Web, // 终端类型
- ClientSerialNo: '' // 客户端流水号
- })
- const formSubmit = async () => {
- try {
- loading.value = true
- return await spotPresalePointPrice({
- data: {
- ...formData,
- ClientSerialNo: v4(),
- }
- })
- } finally {
- loading.value = false
- }
- }
- return {
- loading,
- formData,
- formSubmit,
- }
- }
- // 撤单请求接口
- export function useCancelOrder() {
- const loading = shallowRef(false)
- /// 参数信息
- const formData = reactive<Partial<Proto.CancelOrderReq>> ({
- OperatorID: loginStore.loginId,
- OrderSrc: OrderSrc.ORDERSRC_CLIENT,
- AccountID: accountStore.accountId,
- ClientSerialNo: v4(),
- ClientOrderTime: formatDate(new Date().toString(), 'YYYY-MM-DD HH:mm:ss'),
- ClientType: ClientType.Web,
- OperateType: EOperateType.OPERATETYPE_ORDERCANCEL,
- })
- const cancelSubmit = async (orderid: string) => {
- try {
- loading.value = true
- return await cancelOrder({
- data: {
- ...formData,
- OldOrderId: orderid
- }
- })
- } finally {
- loading.value = false
- }
- }
- return {
- loading,
- cancelSubmit,
- formData
- }
- }
- // 按单平仓
- export function useHolderClose() {
- const loading = shallowRef(false)
- /// 参数信息
- const formData = reactive<Partial<Proto.HolderCloseReq>>({
- ClientSerialNo: v4(),
- ClientOrderTime: formatDate(new Date().toString(), 'YYYY-MM-DD HH:mm:ss'),
- ClientType: ClientType.Web,
- LoginID: loginStore.loginId,
- AccountID: accountStore.accountId,
- OrderSrc: OrderSrc.ORDERSRC_CLIENT,
- OperatorID: loginStore.loginId,
- })
- const holderCloseSubmit = async () => {
- try {
- loading.value = true
- return await holderClose({
- data: {
- ...formData
- }
- })
- } finally {
- loading.value = false
- }
- }
- return {
- formData,
- loading,
- holderCloseSubmit
- }
- }
- // 交易委托
- export function useOrder() {
- const loading = shallowRef(false)
- const formData = reactive<Partial<Proto.OrderReq>>({
- ClientSerialNo: v4(),
- ClientOrderTime: formatDate(new Date().toISOString()),
- ClientType: ClientType.Web,
- LoginID: loginStore.loginId,
- AccountID: accountStore.accountId,
- ValidType: EValidType.VALIDTYPE_DR,
- OperateType: EOrderOperateType.ORDEROPERATETYPE_NORMAL,
- OrderSrc: OrderSrc.ORDERSRC_CLIENT,
- OperatorID: loginStore.loginId,
- ListingSelectType: EListingSelectType.LISTINGSELECTTYPE_DELISTING,
- DelistingType: EDelistingType.DELISTINGTYPE_SELECTED,
- BuildType: EBuildType.BUILDTYPE_OPEN,
- TimevalidType: 1,
- OrderFlag: 1,
- })
- const formSubmit = async () => {
- try {
- loading.value = true
- return await order({
- data: formData
- })
- } finally {
- loading.value = false
- }
- }
- return {
- loading,
- formData,
- formSubmit
- }
- }
|