Explorar o código

Merge branch 'mtp_v6' of http://47.101.159.18:3000/Muchinfo/MTP2.0_WEB into mtp_v6

huangbin %!s(int64=4) %!d(string=hai) anos
pai
achega
512da4f4f8

+ 5 - 1
src/common/setup/table/clolumn.ts

@@ -2,6 +2,7 @@ import * as FormatterFn from '@/common/constants/enumsName';
 import { ColumnType, getTableHead } from '@/common/methods/table';
 import { TableKey } from '@/common/methods/table/interface';
 import { ref } from "vue";
+import { getDecimalsNum } from '@/utils/number';
 
 /**
  * 获取动态表头数据
@@ -104,7 +105,10 @@ function getFromatterFn(val: string) {
 
     switch (first) {
         case 'FormatterUnit':   // 处理单位
-            result = (obj: any) => arr[1] ? obj.text + obj.record[arr[1]] : obj.text
+            result = (obj: any) => {
+                const value = getDecimalsNum(obj.text, 2, 2); // 不在这里处理,待优化
+                return arr[1] ? value + obj.record[arr[1]] : value;
+            }
             break;
         case 'FromatterPercent':  // 数值百分比
             result = (obj: any) => (Number(obj.text) * 100).toFixed(2) + '%'

+ 19 - 0
src/services/go/ermcp/subject/index.ts

@@ -0,0 +1,19 @@
+/** ================================= 交易主体 ================================**/
+import { getUserId } from '@/services/bus/user';
+import { commonSearch_go } from '@/services/go';
+import { Ermcp3SubjectReq, Ermcp3SubjectRsp } from './interface';
+
+/**
+ * 查询交易主体
+ */
+export function QueryPaAreaSubject(req?: Ermcp3SubjectReq): Promise<Ermcp3SubjectRsp[]> {
+    const param: Ermcp3SubjectReq = {
+        userid: getUserId()
+    }
+    if (req) {
+        Object.assign(param, req);
+    }
+    return commonSearch_go('/Ermcp3/QueryPaAreaSubject', param).catch((err) => {
+        throw new Error(`查询交易主体: ${err}`);
+    });
+}

+ 29 - 0
src/services/go/ermcp/subject/interface.ts

@@ -0,0 +1,29 @@
+/**
+ * 交易主体请求
+ */
+export interface Ermcp3SubjectReq {
+    userid: number    //  用户id
+    subjectid?: number    //  主体ID(SEQ_ERMCP_PA_AREASUBJECT)
+    subjecttype?: string  //  主体类型 - 1:交易主体 2:业务部门
+    subjectstatus?: number  // 主体状态 - 1:正常 2: 停用
+}
+
+/**
+ * 交易主体返回
+ */
+export interface Ermcp3SubjectRsp {
+    areauserid: number//所属机构
+    canmodify: number//是否可修改 - 0:否 1:是
+    createtime: string//创建时间
+    creatorid: string//创建人ID
+    creatorsrc: number//创建人来源 - 1:管理端 2:终端 3:交易
+    modifierid: string//修改人
+    modifiersrc: number//修改人来源 - 1:管理端 2:终端
+    modifytime: string//修改时间
+    parentsubjectid: string//上级主体ID
+    remark: string//备注
+    subjectid: number//主体ID(SEQ_ERMCP_PA_AREASUBJECT)
+    subjectname: string//主体名称
+    subjectstatus: number//主体状态 - 1:正常 2: 停用
+    subjecttype: number//主体类型 - 1:交易主体 2:业务部门
+}

+ 7 - 7
src/services/proto/hedgeplan/index.ts

@@ -23,10 +23,10 @@ export const hedgePlanReq = (param: ErmcpHedgePlanReq): Promise<any> => {
  * 老的计划操作接口 我只负责撤销 传5则进行撤销 !!!!! 注意
  * @param param
  */
-export const oldHedgePlanReq = (param: HedgePlanOperateReq): Promise<any> => {
-    param.OperateSrc = 2; // 操作来源-1:管理端2:终端
-    param.ClientTicket = uuidv4(); // 流水号
-    param.Remark = ''
-    param.UserID = getUserId()
-    return protoMiddleware<HedgePlanOperateReq>(param, 'HedgePlanOperateReq', 'HedgePlanOperateRsp', 2)
-}
+// export const oldHedgePlanReq = (param: HedgePlanOperateReq): Promise<any> => {
+//     param.OperateSrc = 2; // 操作来源-1:管理端2:终端
+//     param.ClientTicket = uuidv4(); // 流水号
+//     param.Remark = ''
+//     param.UserID = getUserId()
+//     return protoMiddleware<HedgePlanOperateReq>(param, 'HedgePlanOperateReq', 'HedgePlanOperateRsp', 2)
+// }

+ 3 - 4
src/services/proto/hedgeplan/interface.ts

@@ -14,8 +14,7 @@ export interface ErmcpHedgePlanReq {
     ApplySrc?: number // int32 申请来源 - 1:管理端 2:终端
     ApplyId?: number // uint64 申请人
     Remark?: string // string 计划备注
-    OperateType?: number // int32 操作类型-1:保存草稿2:提交申请
-
+    OperateType?: 1 | 2 | 3 | 4 | 5 // int32 操作类型-1:保存草稿2:提交申请3:删除4审核通过5审核拒绝
     WRStandardID?: number; // uint64 现货品类ID
     AccountID?: number; // uint64 期货账户ID(默认为0,也可不传)
     Tradeuserid?: number; // uint64 交易用户ID
@@ -36,8 +35,8 @@ export interface ErmcpHedgePlanRsp {
 // 套保计划操作请求 0 18 2
 export interface HedgePlanOperateReq {
     HedgePlanID: number; // uint64 套保计划ID(601+Unix秒时间戳(10位)+xxxxxx)
-    OperateType: number; // uint32 操作类型-1:保存草稿2:提交申请3:审核通过4:审核拒绝5:撤回
-    OperateSrc?: number; // uint32 操作来源-1:管理端2:终端
+    OperateType: 1 | 2 | 3 | 4 | 5; // uint32 操作类型-1:保存草稿2:提交申请3:审核通过4:审核拒绝5:撤回
+    OperateSrc?: 1 | 2; // uint32 操作来源-1:管理端2:终端
     UserID?: number; // uint64 操作用户ID
     Remark?: string; // string 备注
     ClientTicket?: string; // string 客户端流水号

+ 40 - 70
src/views/business/exposure/list/realTime/index.vue

@@ -1,75 +1,45 @@
 <template>
-  <!-- 实时敞口-->
-  <div class="exposure-real-time table-height"
-       :loading="loading">
-    <div class="real-time-header"
-         v-if="isPingAnOem()">
-      <span class="dialogSpan">每隔</span>
-      <a-select class="typeSelect real-time-select"
-                style="width: 100px"
-                v-model:value="timer"
-                @change="timerChange"
-                placeholder="请选择间隔时间">
-        <a-select-option :value="item.id"
-                         v-for="item in diffTimes"
-                         :key="item.id">
-          {{ item.name }}
-        </a-select-option>
-      </a-select>
-      <span class="dialogSpan">刷新一次,倒计时 </span> <span class="red">{{ num }}</span>
-      <a-button type="button"
-                class="operBtn ant-btn"
-                @click="setTimerAction">{{ isStart ? '停止监控' : '开始监控' }}</a-button>
+    <!-- 实时敞口-->
+    <div class="exposure-real-time table-height" :loading="loading">
+        <div class="real-time-header" v-if="isPingAnOem()">
+            <span class="dialogSpan">每隔</span>
+            <a-select class="typeSelect real-time-select" style="width: 100px" v-model:value="timer" @change="timerChange" placeholder="请选择间隔时间">
+                <a-select-option :value="item.id" v-for="item in diffTimes" :key="item.id">
+                    {{ item.name }}
+                </a-select-option>
+            </a-select>
+            <span class="dialogSpan">刷新一次,倒计时 </span> <span class="red">{{ num }}</span>
+            <a-button type="button" class="operBtn ant-btn" @click="setTimerAction">{{ isStart ? '停止监控' : '开始监控' }}</a-button>
+        </div>
+        <filterCustomTable @search="updateColumn" v-else> </filterCustomTable>
+        <a-table :columns="columns" class="srcollYTable" :pagination="false" :expandedRowKeys="expandedRowKeys" :customRow="Rowclick" rowKey="key" :data-source="tableList" :scroll="{ x: '100%', y: 'calc(100vh - 163px)' }">
+            <template v-if="isPingAnOem()" #index="{ index }">
+                <span>{{ index + 1 }}</span>
+            </template>
+            <template #MiddleGoodsName="{ record }">
+                <span>{{ `${record.MiddleGoodsName}/${record.MiddleGoodsCode}` }}</span>
+            </template>
+        </a-table>
+        <!-- 明细 -->
+        <Description v-if="visible" @close="closeDrawer" @changeTab="changeTab" :tabList="tabList">
+            <a-table :columns="columnsDetail" class="topTable" :pagination="false" rowKey="key" :data-source="detailTableList" :scroll="{ x: '100%', y: 'calc(100vh - 163px)' }">
+                <!-- 套保品种/代码 -->
+                <template #middlegoodsname="{ record }" v-if="!isPingAnOem()">
+                    <span>{{ record.middlegoodsname + '/' + record.middlegoodscode }}</span>
+                </template>
+                <template #goodsname="{ record }" v-if="!isPingAnOem()">
+                    <span>{{ record.goodsname + '/' + record.goodscode }}</span>
+                </template>
+                <template v-if="isPingAnOem()" #index="{ index }">
+                    <span>{{ index + 1 }}</span>
+                </template>
+                <!-- 类型 -->
+                <template #contracttype="{ record }">
+                    <span>{{ getPlanContractType(record.contracttype) }}</span>
+                </template>
+            </a-table>
+        </Description>
     </div>
-    <filterCustomTable @search="updateColumn"
-                       v-else> </filterCustomTable>
-    <a-table :columns="columns"
-             class="srcollYTable"
-             :pagination="false"
-             :expandedRowKeys="expandedRowKeys"
-             :customRow="Rowclick"
-             rowKey="key"
-             :data-source="tableList"
-             :scroll="{ x: '100%', y: 'calc(100vh - 163px)' }">
-      <template v-if="isPingAnOem()"
-                #index="{ index }">
-        <span>{{ index + 1 }}</span>
-      </template>
-      <template #MiddleGoodsName="{ record }">
-        <span>{{`${record.MiddleGoodsName}/${record.MiddleGoodsCode}`}}</span>
-      </template>
-    </a-table>
-    <!-- 明细 -->
-    <Description v-if="visible"
-                 @close="closeDrawer"
-                 @changeTab="changeTab"
-                 :tabList="tabList">
-      <a-table :columns="columnsDetail"
-               class="topTable"
-               :pagination="false"
-               rowKey="key"
-               :data-source="detailTableList"
-               :scroll="{ x: '100%', y: 'calc(100vh - 163px)' }">
-        <!-- 套保品种/代码 -->
-        <template #middlegoodsname="{ record }"
-                  v-if="!isPingAnOem()">
-          <span>{{ record.middlegoodsname + '/' + record.middlegoodscode }}</span>
-        </template>
-        <template #goodsname="{ record }"
-                  v-if="!isPingAnOem()">
-          <span>{{ record.goodsname + '/' + record.goodscode }}</span>
-        </template>
-        <template v-if="isPingAnOem()"
-                  #index="{ index }">
-          <span>{{ index + 1 }}</span>
-        </template>
-        <!-- 类型 -->
-        <template #contracttype="{ record }">
-          <span>{{ getPlanContractType(record.contracttype) }}</span>
-        </template>
-      </a-table>
-    </Description>
-  </div>
 </template>
 
 <script lang="ts">

+ 5 - 5
src/views/business/plan/components/cancel/index.vue

@@ -77,10 +77,10 @@ import { Ermcp3HedgePlan } from '@/services/go/ermcp/plan/interface';
 import { formatValue } from '@/common/methods';
 import { getPlanContractType } from '@/views/business/plan/setup';
 import { Modal } from 'ant-design-vue';
-import { HedgePlanOperateReq } from '@/services/proto/hedgeplan/interface';
+import { ErmcpHedgePlanReq } from '@/services/proto/hedgeplan/interface';
 import * as Long from 'long';
 import { requestResultLoadingAndInfo } from '@/common/methods/request/resultInfo';
-import { oldHedgePlanReq } from '@/services/proto/hedgeplan';
+import { hedgePlanReq } from '@/services/proto/hedgeplan';
 import { getPayCurrencyTypeEnumList } from '@/common/constants/enumsList';
 import { _closeModal } from '@/common/setup/modal/modal';
 
@@ -104,11 +104,11 @@ export default defineComponent({
                 okText: '确认撤销',
                 cancelText: '取消',
                 onOk() {
-                    const params: HedgePlanOperateReq = {
+                    const params: ErmcpHedgePlanReq = {
                         HedgePlanID: Long.fromString(props.selectedRow.hedgeplanid),
-                        OperateType: 5,
+                        OperateType: 3,
                     };
-                    requestResultLoadingAndInfo(oldHedgePlanReq, params, loading, ['撤销成功', '撤销失败:']).then(() => {
+                    requestResultLoadingAndInfo(hedgePlanReq, params, loading, ['撤销成功', '撤销失败:']).then(() => {
                         cancel(true);
                     });
                 },

+ 1 - 1
src/views/business/spotmarket/list/price/index.vue

@@ -37,7 +37,7 @@ export default defineComponent({
         const buttons = getTableButton();
 
         // 表格列表数据
-        const { loading, tableList, queryTable } = queryTableList<Ermcp3SpotGoodsPrice>();
+        const { loading, tableList, queryTable } = queryTableList<Ermcp3SpotGoodsPrice>(true, 2);
 
         // 获取列表数据
         const queryTableAction = () => queryTable(querySpotGoodsPrice);

+ 1 - 1
src/views/information/spot-contract/components/add/setup.ts

@@ -61,7 +61,7 @@ export function addContractReq() {
         info.ContractAttachment = form.ContractAttachment ? objectToUint8Array(form.ContractAttachment) : new Uint8Array()
 
         const params: GldErmcpSpotContractOperateReq = {
-            SpotContractID: '0',
+            SpotContractID: form.SpotContractID,
             OperateType,
             Remark: '',
             Info: info,

+ 1 - 0
src/views/information/spot-contract/components/interface.ts

@@ -35,4 +35,5 @@ export interface FormState {
     AccountID: number | undefined // uint64 期货账户ID
     BizType: number // uint32 业务类型 - 1:套保 2:套利
     CurrencyID: number | undefined // 结算币种ID
+    SpotContractID: string;//现货合同ID(6number;
 }

+ 34 - 22
src/views/information/spot-contract/components/modify/index.vue

@@ -70,6 +70,15 @@
                             <UploadImg :visible="visible" :imgList="uploadImgList" @upload="uploadImgAction" />
                         </a-form-item>
                     </a-col>
+                    <a-col :span="12">
+                        <a-form-item label="交易主体" name="BuyUserID">
+                            <a-select class="inlineFormSelect" style="width: 200px" v-model:value="formState.BuyUserID" placeholder="请选择主体">
+                                <a-select-option :value="item.subjectid" v-for="item in subjectList" :key="item.subjectid">
+                                    {{ item.subjectname }}
+                                </a-select-option>
+                            </a-select>
+                        </a-form-item>
+                    </a-col>
                 </a-row>
             </fieldset>
             <fieldset class="formFieldSet">
@@ -103,11 +112,6 @@
                         </a-form-item>
                     </a-col>
                     <a-col :span="12">
-                        <a-form-item label="标仓系数" name="ConvertFactor">
-                            <a-input class="dialogInput" style="width: 200px" v-model:value="formState.ConvertFactor" readonly placeholder="选择商品后自动填入" />
-                        </a-form-item>
-                    </a-col>
-                    <a-col :span="24">
                         <a-form-item label="商品规格" name="SpotGoodsDesc">
                             <a-input class="dialogInput" style="width: 200px" v-model:value="formState.SpotGoodsDesc" placeholder="请输入商品规格" />
                         </a-form-item>
@@ -255,6 +259,8 @@ import { addContractReq } from '@/views/information/spot-contract/components/add
 import { mergeTwoObj } from '@/utils/objHandle';
 import { validateAction } from '@/common/setup/form';
 import { ErmcpLoginUser } from '@/services/go/ermcp/account/interface';
+import { Ermcp3SubjectRsp } from '@/services/go/ermcp/subject/interface';
+import { QueryPaAreaSubject } from '@/services/go/ermcp/subject';
 import { handlerManagerList } from '@/common/setup/user';
 import { getUploadImg } from '@/common/setup/upload';
 import UploadImg from '@/common/components/uploadImg/index.vue';
@@ -293,24 +299,34 @@ export default defineComponent({
         // 获取 业务账户
         const { queryTable: queryBusinessManager, getBusinesserOrMerchandiser } = handlerManagerList(loading, 1);
         const { tableList: traderList, queryTable: queryTradeManager } = handlerManagerList(loading, 2, true);
+
         // 业务员
         const businesserList = ref<ErmcpLoginUser[]>([]);
         // 跟单员
         const merchandiserList = ref<ErmcpLoginUser[]>([]);
+        queryBusinessManager().then(() => {
+            businesserList.value = getBusinesserOrMerchandiser('22');
+            merchandiserList.value = getBusinesserOrMerchandiser('23');
+        });
+
         // 现货商品列表
         const goodsList = ref<Goods[]>([]);
+        goodsList.value = getGoodsList().filter((el) => el.goodsid === props.selectedRow.goodsid);
+
+        // 交易主体列表
+        const subjectList = ref<Ermcp3SubjectRsp[]>([]);
+        QueryPaAreaSubject().then((res) => {
+            subjectList.value = res;
+        });
+
         const { uploadImgAction, uploadImgList, handleImg } = getUploadImg();
         queryCustomList();
         getDeliveryGoods();
-        goodsList.value = getGoodsList();
-        queryBusinessManager().then(() => {
-            businesserList.value = getBusinesserOrMerchandiser('22');
-            merchandiserList.value = getBusinesserOrMerchandiser('23');
-        });
         queryTradeManager();
         mergeTwoObj(formState, props.selectedRow);
         isSell.value = formState.ContractType === 1 ? false : true;
-        const { deliverygoodsid, qty, price, wrstandardid, spotgoodsbrandid, currencyid, attachment, deliverystartdate, deliveryenddate, startdate, enddate, meruserid, tradeuserid } = props.selectedRow;
+
+        const { deliverygoodsid, qty, price, wrstandardid, spotcontractid, spotgoodsbrandid, currencyid, attachment, deliverystartdate, deliveryenddate, startdate, enddate, meruserid, tradeuserid } = props.selectedRow;
         if (deliverygoodsid) {
             deliveryGoodsChange(deliverygoodsid);
             if (wrstandardid) {
@@ -325,16 +341,17 @@ export default defineComponent({
         formState.ContractAttachment = attachment;
         formState.MerUserID = meruserid;
         formState.TradeUserID = tradeuserid;
-        if (deliverystartdate) {
+        formState.SpotContractID = spotcontractid;
+        if (deliverystartdate && deliverystartdate !== '--') {
             deliveryDate.value.push(moment(deliverystartdate));
         }
-        if (deliveryenddate) {
+        if (deliveryenddate && deliveryenddate !== '--') {
             deliveryDate.value.push(moment(deliveryenddate));
         }
-        if (startdate) {
+        if (startdate && startdate !== '--') {
             priceDate.value.push(moment(startdate));
         }
-        if (enddate) {
+        if (enddate && enddate !== '--') {
             priceDate.value.push(moment(enddate));
         }
         if (attachment) {
@@ -406,13 +423,8 @@ export default defineComponent({
             merchandiserList,
             uploadImgAction,
             uploadImgList,
+            subjectList,
         };
     },
 });
-</script>
-
-<style lang="less">
-.modify-custom {
-}
-</style
->;
+</script>

+ 1 - 0
src/views/information/spot-contract/components/setup.ts

@@ -99,6 +99,7 @@ export function handleFromState() {
             StartDate: '', //                       点价开始时间
             EndDate: '', //                           点价结束时间
             TradeUserID: undefined, //           交易员ID
+            SpotContractID: '0',//现货合同ID
         }
     }
     const formState: UnwrapRef<FormState> = reactive(initFormData())