li.shaoyi vor 3 Jahren
Ursprung
Commit
e1f9c95f2c

+ 12 - 1
src/services/go/commonMarket/index.ts

@@ -1,7 +1,7 @@
 import APP from '@/services';
 import moment from 'moment';
 import { commonSearch_go } from '../index';
-// import * as type from './interface';
+import { QueryMarketCalendarReq, QueryMarketCalendarRsp } from './interface';
 
 /**
  * 获取服务器时间
@@ -34,4 +34,15 @@ export function queryMarketRun(marketID?: number): Promise<string> {
     }).catch((err) => {
         throw new Error(`查询市场运行信息: ${err}`);
     });
+}
+
+/**
+ * 市场节假日查询
+ * @param req 
+ * @returns 
+ */
+export function queryMarketCalendar(req: QueryMarketCalendarReq): Promise<QueryMarketCalendarRsp[]> {
+    return commonSearch_go('/Ermcp8/QueryMarketCalendar', req).catch((err) => {
+        throw new Error(`市场节假日查询: ${err}`);
+    })
 }

+ 37 - 22
src/services/go/commonMarket/interface.ts

@@ -1,27 +1,42 @@
-export interface Marketrun{
-    afternexttradedate	:string;//下下交易日
-    clearquoteflag	:number;//行情清盘标志- 1:未发送 2:已发送 3:已回复
-    lastreckondate	:string;//最新交易日(结算成功)
-    machinedate	:string;//机器时间
-    manualflag	:number;//手动开市标志- number;
-//:否 1:是 (市场为手动时,是否触发了手动开市标志)
-    marketid	:number;//市场ID
-    nexttradedate	:string;//下一交易日
-    pretradedate	:string;//上一交易日
-    reckonflag	:number;//结算标识 - number;
-//: 停止结算 1: 正常(管理端控制此字段,交易服务根据此字段判断是否做结算)
-    runstatus	:number;//运行状态 - number;
-//:初始化 1:待开市 2:开市 3:休市 4:手工休市 5:闭市 6:确认行权开始 7:确认行权结束 1number;
-//:日终处理开始 11:日终处理成功 12:日终处理失败 13基础服务结算开始 14基础服务结算成功 23.资金结算开始 24.资金结算成功 25.资金结算失败 26.系统结算成功 27.系统结算失败 28.盘中处理开始 29.盘中处理成功 3number;
-//.盘中处理失败 31.资金结算开始(内) 32.资金结算成功(内) 33.资金结算失败(内) 4number;
-//.签到开始 41.签到成功 42.签到部份成功 43.签到失败 44.签退开始 45.签退成功 46.签退部份成功 47.签退失败 48.对账开始 49.对账成功 5number;
-//.对账失败 51.清算开始 52.清算成功 53.清算失败 54.清算部分成功 55. 系统结算开始 62.今日免清算
-    sectionid	:number;//时间段号[多时段时用]
-    tradedate	:string;//当前交易日(服务) 资金结算完成即变更,供交易服务使用
-    tradedate2	:string;//当前交易日(行情) 在第一个市场待开市时变更为TradeDate,供行情及终端系统使用
-    updatetime	:string;//更新时间
+export interface Marketrun {
+    afternexttradedate: string;//下下交易日
+    clearquoteflag: number;//行情清盘标志- 1:未发送 2:已发送 3:已回复
+    lastreckondate: string;//最新交易日(结算成功)
+    machinedate: string;//机器时间
+    manualflag: number;//手动开市标志- number;
+    //:否 1:是 (市场为手动时,是否触发了手动开市标志)
+    marketid: number;//市场ID
+    nexttradedate: string;//下一交易日
+    pretradedate: string;//上一交易日
+    reckonflag: number;//结算标识 - number;
+    //: 停止结算 1: 正常(管理端控制此字段,交易服务根据此字段判断是否做结算)
+    runstatus: number;//运行状态 - number;
+    //:初始化 1:待开市 2:开市 3:休市 4:手工休市 5:闭市 6:确认行权开始 7:确认行权结束 1number;
+    //:日终处理开始 11:日终处理成功 12:日终处理失败 13基础服务结算开始 14基础服务结算成功 23.资金结算开始 24.资金结算成功 25.资金结算失败 26.系统结算成功 27.系统结算失败 28.盘中处理开始 29.盘中处理成功 3number;
+    //.盘中处理失败 31.资金结算开始(内) 32.资金结算成功(内) 33.资金结算失败(内) 4number;
+    //.签到开始 41.签到成功 42.签到部份成功 43.签到失败 44.签退开始 45.签退成功 46.签退部份成功 47.签退失败 48.对账开始 49.对账成功 5number;
+    //.对账失败 51.清算开始 52.清算成功 53.清算失败 54.清算部分成功 55. 系统结算开始 62.今日免清算
+    sectionid: number;//时间段号[多时段时用]
+    tradedate: string;//当前交易日(服务) 资金结算完成即变更,供交易服务使用
+    tradedate2: string;//当前交易日(行情) 在第一个市场待开市时变更为TradeDate,供行情及终端系统使用
+    updatetime: string;//更新时间
 }
 
 export interface QueryMarketRunReq {
     marketID?: number       // 市场ID,不传返回所有
 }
+
+/**
+ * 市场节假日查询请求
+ */
+export interface QueryMarketCalendarReq {
+    marketid?: number; // 市场ID
+}
+
+/**
+ * 市场节假日查询响应
+ */
+export interface QueryMarketCalendarRsp {
+    holidaydate: string; // 节假日期(yyyy-MM-dd)
+    marketid: number; // 市场ID
+}

+ 2 - 0
src/services/go/ermcp/hedgedItem/interface.ts

@@ -298,6 +298,7 @@ export interface InternalUncorrelatedTradeDetailRsp {
     tradetradedate: string; // 成交交易日(yyyyMMdd)
     userid: number; // 用户编号
     channelbuildtype: number; // 委托单据类型 0:无 1:建仓 2:平仓
+    tradeuserid: number;
 }
 
 /**
@@ -306,6 +307,7 @@ export interface InternalUncorrelatedTradeDetailRsp {
 export interface InternalEnableTradeDetailReq {
     areauserid: number; // 企业ID
     goodsid: number; // 期货合约ID
+    tradeuserid: number; // 交易用户ID
 }
 
 /**

+ 3 - 1
src/views/hedgeditem/futures/in/components/add/form.ts

@@ -55,13 +55,15 @@ export function useForm() {
 
     // 选择期货合约
     const changeGoods = () => {
+        const account = accountList.value.find((e) => e.accountid === formData.AccountID);
         tableList.value = [];
         selectedRowKeys.value = [];
 
-        if (formData.GoodsID) {
+        if (formData.GoodsID && account) {
             const param: InternalEnableTradeDetailReq = {
                 areauserid: getAreaUserId(),
                 goodsid: formData.GoodsID,
+                tradeuserid: account.relateduserid,
             }
             queryInternalEnableTradeDetail(param).then((res) => {
                 tableList.value = res;

+ 2 - 2
src/views/hedgeditem/futures/in/components/add/index.vue

@@ -9,7 +9,7 @@
                     <a-col :span="12">
                         <a-form-item label="期货合约" name="GoodsID">
                             <a-select class="inlineFormSelect" placeholder="请选择合约" :filterOption="filterOption"
-                                v-model:value="formData.GoodsID" @change="changeGoods" show-search style="width:200px">
+                                v-model:value="formData.GoodsID" show-search style="width:200px">
                                 <a-select-option v-for="item in goodsList" :value="item.goodsid" :key="item.goodsid">{{
                                         item.goodsname
                                 }}</a-select-option>
@@ -28,7 +28,7 @@
                     <a-col :span="12">
                         <a-form-item label="期货子账户" name="AccountID">
                             <a-select class="inlineFormSelect" placeholder="请选择账户" v-model:value="formData.AccountID"
-                                style="width:200px">
+                                @change="changeGoods" style="width:200px">
                                 <a-select-option v-for="item in accountList" :value="item.accountid"
                                     :key="item.accountid">
                                     {{ item.accountid }}/{{ item.accountname }}</a-select-option>

+ 2 - 1
src/views/hedgeditem/futures/in/components/bind/form.ts

@@ -11,7 +11,7 @@ import { innerTradeLink } from '@/services/proto/hedgedItem'
 import { getAreaUserId } from '@/services/bus/user'
 
 export function useForm(selectedRow: InternalUncorrelatedTradeDetailRsp) {
-    const { tradeid, goodsid, tradelot, relatedlot } = selectedRow;
+    const { tradeid, goodsid, tradelot, relatedlot, tradeuserid } = selectedRow;
     const { tableList, queryTable } = queryTableList<InternalEnableTradeDetailRsp>(true, 2); // 表格列表数据
     const loading = ref<boolean>(false);
     const selectedRowKeys = ref<number[]>([]); // 表格选中的 rowKey 数据 :rowKey="(record,index)=>index"
@@ -57,6 +57,7 @@ export function useForm(selectedRow: InternalUncorrelatedTradeDetailRsp) {
             const param: InternalEnableTradeDetailReq = {
                 areauserid: getAreaUserId(),
                 goodsid: goodsid,
+                tradeuserid,
             }
             queryTable(queryInternalEnableTradeDetail, param);
         },

+ 11 - 8
src/views/market/futures/compoments/futures-trade/index.vue

@@ -246,16 +246,19 @@ export default defineComponent({
 
     // 账户列表
     const accountList = computed(() => {
+      let tmpList = futuresAccountList.value;
+      // 现货合同
       if (isSpotContract) {
-        const tmpList = futuresAccountList.value.filter((e) => relatedTaAccountList.value.some((a) => a.accountid === e.accountid));
-        if (tmpList.length) {
-          formData.AccountID = tmpList[0].accountid;
-        } else {
-          formData.AccountID = undefined;
-        }
-        return tmpList;
+        tmpList = tmpList.filter((e) => relatedTaAccountList.value.some((a) => a.accountid === e.accountid));
+      }
+      // 套期项目
+      if (isHedgedItem) {
+        tmpList = tmpList.filter((e) => e.relateduserid === tradeuserid);
+      }
+      if (tmpList.length === 1) {
+        formData.AccountID = tmpList[0].accountid;
       }
-      return futuresAccountList.value;
+      return tmpList;
     })
 
     // 选中的账户

+ 20 - 8
src/views/report/components/filter/index.vue

@@ -9,10 +9,10 @@
         </a-select-option>
       </a-select>
       <a-space direction="vertical">
-        <a-month-picker v-model:value="time" :allowClear="false" @change="timeChange" class="commonDatePicker"
-          v-if="isMonth()" />
-        <a-date-picker v-model:value="time" :allowClear="false" v-else @change="timeChange" class="commonDatePicker"
-          :format="dateFormat" />
+        <a-month-picker v-model:value="time" :allowClear="false" :disabled-date="disabledDate" @change="timeChange"
+          class="commonDatePicker" v-if="isMonth()" />
+        <a-date-picker v-model:value="time" :allowClear="false" :disabled-date="disabledDate" @change="timeChange"
+          class="commonDatePicker" :format="dateFormat" v-else />
       </a-space>
       <a-select label-in-value v-if="showUser" class="conditionSelect ml10" style="width: 120px"
         v-model:value="selectedUser" @change="userChange" placeholder="请选择交易用户">
@@ -31,9 +31,11 @@ import { initData } from '@/common/methods';
 import { SelectOption } from '@/common/setup/filter/interface';
 import { handlerManagerList } from '@/common/setup/user';
 import { getUserId } from '@/services/bus/user';
-import { getAreaUserName } from '@/services/bus/user';
 import { defineComponent, ref } from 'vue';
 import { handleReprotType } from '../../setup';
+import { queryMarketCalendar } from '@/services/go/commonMarket'
+import { QueryMarketCalendarRsp } from '@/services/go/commonMarket/interface'
+import moment, { Moment } from 'moment';
 
 export default defineComponent({
   name: 'report-common-filter-table',
@@ -50,9 +52,15 @@ export default defineComponent({
     const oldSelectedUser = selectedUser.value
     const oldTime = time.value
     const loading = ref<boolean>(false);
-    // 交易用户
-    const userList = ref<SelectOption[]>([]);
+    const userList = ref<SelectOption[]>([]); // 交易用户
+    const marketCalendar = ref<QueryMarketCalendarRsp[]>([]);
     const { queryTradeManager } = handlerManagerList(loading, 2);
+
+    // 非交易日期不可选
+    const disabledDate = (current: Moment) => {
+      return marketCalendar.value.some((e) => current.isSame(moment(e.holidaydate), 'day'));
+    }
+
     function reset() { //重置
       selectedReportType.value = oldSelectedReportType
       selectedUser.value = oldSelectedUser
@@ -72,13 +80,17 @@ export default defineComponent({
           // });
         });
       });
-    });
+
+      queryMarketCalendar({ marketid: 15101 }).then((res) => marketCalendar.value = res);
+    })
+
     return {
       reportType,
       selectedReportType,
       dateFormat,
       timeChange,
       reportTypeChange,
+      disabledDate,
       selectedUser,
       userChange,
       isMonth,