Pārlūkot izejas kodu

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

chen.zujie 4 gadi atpakaļ
vecāks
revīzija
944d310900

+ 6 - 6
src/common/components/thirdMenu/index.vue

@@ -1,10 +1,10 @@
 <template>
-    <div class="thirdMenu">
-        <a-tabs v-model:activeKey="current" @change="menuClick">
-            <a-tab-pane :key="String(index)" v-for="(item, index) in list" :tab="item[value]"></a-tab-pane>
-        </a-tabs>
-        <slot></slot>
-    </div>
+  <div class="thirdMenu">
+    <a-tabs v-model:activeKey="current" @change="menuClick">
+      <a-tab-pane :key="String(index)" v-for="(item, index) in list" :tab="item[value]"></a-tab-pane>
+    </a-tabs>
+    <slot></slot>
+  </div>
 </template>
 
 <script lang="ts">

+ 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)
+}

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

@@ -1,74 +1,74 @@
 <template>
-    <!-- 计划撤销-->
-    <a-modal class="commonModal custom-detail" title="计划撤销" v-model:visible="visible" centered :maskClosable="false" @cancel="cancel" width="890px">
-        <template #footer>
-            <a-button key="submit" class="cancelBtn" @click="cancel">取消 </a-button>
-            <a-button key="submit" type="primary" :loading="loading" @click="submit">确认撤销 </a-button>
-        </template>
-        <a-form class="inlineForm" :form="form" @submit="handleSearch">
-            <fieldset class="formFieldSet">
-                <legend>基本信息</legend>
-                <a-row :gutter="24">
-                    <a-col :span="12">
-                        <a-form-item label="计划类型">
-                            <span class="white">{{ getPlanContractType(selectedRow.contracttype) }}</span>
-                        </a-form-item>
-                    </a-col>
-                    <a-col :span="12">
-                        <a-form-item label="计划名称">
-                            <span class="white">{{ formatValue(selectedRow.hedgeplanno) }}</span>
-                        </a-form-item>
-                    </a-col>
-                </a-row>
-                <a-row :gutter="24">
-                    <a-col :span="12">
-                        <a-form-item label="现货品种">
-                            <span class="white">{{ formatValue(selectedRow.deliverygoodsname) }}</span>
-                        </a-form-item>
-                    </a-col>
-                    <a-col :span="12">
-                        <a-form-item label="标仓系数">
-                            <span class="white">{{ formatValue(selectedRow.convertfactor) }}</span>
-                        </a-form-item>
-                    </a-col>
-                </a-row>
-                <a-row :gutter="24">
-                    <a-col :span="12">
-                        <a-form-item label="计划量">
-                            <span class="white">{{ formatValue(selectedRow.planqty) }}</span>
-                        </a-form-item>
-                    </a-col>
-                    <a-col :span="12">
-                        <a-form-item label="备注">
-                            <span class="white">{{ formatValue(selectedRow.remark) }}</span>
-                        </a-form-item>
-                    </a-col>
-                </a-row>
-            </fieldset>
-            <fieldset class="formFieldSet">
-                <legend>其它信息</legend>
-                <a-row :gutter="24">
-                    <a-col :span="12">
-                        <a-form-item label="交易用户">
-                            <span class="white">{{ formatValue(selectedRow.tradeusername) }}</span>
-                        </a-form-item>
-                    </a-col>
-                    <a-col :span="12">
-                        <a-form-item label="结算币种">
-                            <span class="white">{{ formatValue(selectedRow.currencyname) }}</span>
-                        </a-form-item>
-                    </a-col>
-                </a-row>
-                <a-row :gutter="24">
-                    <a-col :span="12">
-                        <a-form-item label="备注">
-                            <span class="white">{{ formatValue(selectedRow.remark) }}</span>
-                        </a-form-item>
-                    </a-col>
-                </a-row>
-            </fieldset>
-        </a-form>
-    </a-modal>
+  <!-- 计划撤销-->
+  <a-modal class="commonModal custom-detail" title="计划撤销" v-model:visible="visible" centered :maskClosable="false" @cancel="cancel" width="890px">
+    <template #footer>
+      <a-button key="submit" class="cancelBtn" @click="cancel">取消 </a-button>
+      <a-button key="submit" type="primary" :loading="loading" @click="submit">确认撤销 </a-button>
+    </template>
+    <a-form class="inlineForm" :form="form" @submit="handleSearch">
+      <fieldset class="formFieldSet">
+        <legend>基本信息</legend>
+        <a-row :gutter="24">
+          <a-col :span="12">
+            <a-form-item label="计划类型">
+              <span class="white">{{ getPlanContractType(selectedRow.contracttype) }}</span>
+            </a-form-item>
+          </a-col>
+          <a-col :span="12">
+            <a-form-item label="计划名称">
+              <span class="white">{{ formatValue(selectedRow.hedgeplanno) }}</span>
+            </a-form-item>
+          </a-col>
+        </a-row>
+        <a-row :gutter="24">
+          <a-col :span="12">
+            <a-form-item label="现货品种">
+              <span class="white">{{ formatValue(selectedRow.deliverygoodsname) }}</span>
+            </a-form-item>
+          </a-col>
+          <a-col :span="12">
+            <a-form-item label="标仓系数">
+              <span class="white">{{ formatValue(selectedRow.convertfactor) }}</span>
+            </a-form-item>
+          </a-col>
+        </a-row>
+        <a-row :gutter="24">
+          <a-col :span="12">
+            <a-form-item label="计划量">
+              <span class="white">{{ formatValue(selectedRow.planqty) }}</span>
+            </a-form-item>
+          </a-col>
+          <a-col :span="12">
+            <a-form-item label="备注">
+              <span class="white">{{ formatValue(selectedRow.remark) }}</span>
+            </a-form-item>
+          </a-col>
+        </a-row>
+      </fieldset>
+      <fieldset class="formFieldSet">
+        <legend>其它信息</legend>
+        <a-row :gutter="24">
+          <a-col :span="12">
+            <a-form-item label="交易用户">
+              <span class="white">{{ formatValue(selectedRow.tradeusername) }}</span>
+            </a-form-item>
+          </a-col>
+          <a-col :span="12">
+            <a-form-item label="结算币种">
+              <span class="white">{{ formatValue(selectedRow.currencyname) }}</span>
+            </a-form-item>
+          </a-col>
+        </a-row>
+        <a-row :gutter="24">
+          <a-col :span="12">
+            <a-form-item label="备注">
+              <span class="white">{{ formatValue(selectedRow.remark) }}</span>
+            </a-form-item>
+          </a-col>
+        </a-row>
+      </fieldset>
+    </a-form>
+  </a-modal>
 </template>
 
 <script lang="ts">
@@ -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 { ErmcpHedgePlanReq } from '@/services/proto/hedgeplan/interface';
+import { HedgePlanOperateReq } from '@/services/proto/hedgeplan/interface';
 import * as Long from 'long';
 import { requestResultLoadingAndInfo } from '@/common/methods/request/resultInfo';
-import { hedgePlanReq } from '@/services/proto/hedgeplan';
+import { oldHedgePlanReq } from '@/services/proto/hedgeplan';
 import { getPayCurrencyTypeEnumList } from '@/common/constants/enumsList';
 import { _closeModal } from '@/common/setup/modal/modal';
 
@@ -104,11 +104,24 @@ export default defineComponent({
                 okText: '确认撤销',
                 cancelText: '取消',
                 onOk() {
-                    const params: ErmcpHedgePlanReq = {
-                        HedgePlanID: Long.fromString(props.selectedRow.hedgeplanid),
-                        OperateType: 3,
+                    const { hedgeplanid, hedgeplanno, contracttype, areauserid, deliverygoodsid, wrstandardid, producttype, spotgoodsdesc, planqty, convertfactor, plantime } = props.selectedRow;
+                    const params: HedgePlanOperateReq = {
+                        HedgePlanID: Long.fromString(hedgeplanid),
+                        OperateType: 5,
+                        Info: {
+                            HedgePlanNo: hedgeplanno, // string 套保计划编号
+                            ContractType: contracttype, // int32 计划类型-1:采购-1:销售
+                            AreaUserID: areauserid, // uint32 机构ID
+                            DeliveryGoodsID: deliverygoodsid, // uint32 现货品种ID
+                            WrStandardID: wrstandardid, // uint32 现货商品ID
+                            ProductType: producttype, // uint32 产品类型-1:标准仓单2:等标3:非标
+                            SpotGoodsDesc: spotgoodsdesc, // string 商品型号
+                            PlanQty: planqty, // double 计划数量
+                            ConvertFactor: convertfactor, // double 标仓系数
+                            PlanTime: plantime, // string 计划时间
+                        },
                     };
-                    requestResultLoadingAndInfo(hedgePlanReq, params, loading, ['撤销成功', '撤销失败:']).then(() => {
+                    requestResultLoadingAndInfo(oldHedgePlanReq, params, loading, ['撤销成功', '撤销失败:']).then(() => {
                         cancel(true);
                     });
                 },

+ 6 - 26
src/views/business/plan/components/delete/index.vue

@@ -1,24 +1,11 @@
 <template>
   <!-- 删除计划-->
-  <a-modal class="commonModal fieldsetDialog plan_uncommitted_delete"
-           title="删除计划"
-           centered
-           v-model:visible="visible"
-           @cancel="cancel"
-           width="890px">
+  <a-modal class="commonModal fieldsetDialog plan_uncommitted_delete" title="删除计划" centered v-model:visible="visible" @cancel="cancel" width="890px">
     <template #footer>
-      <a-button key="submit"
-                type="primary"
-                :loading="loading"
-                @click="submit">删除</a-button>
-      <a-button key="cancel"
-                type="primary"
-                :loading="loading"
-                @click="cancel">取消</a-button>
+      <a-button key="submit" type="primary" :loading="loading" @click="submit">删除</a-button>
+      <a-button key="cancel" type="primary" :loading="loading" @click="cancel">取消</a-button>
     </template>
-    <a-form class="inlineForm"
-            :form="form"
-            @submit="handleSearch">
+    <a-form class="inlineForm" :form="form" @submit="handleSearch">
       <fieldset class="formFieldSet">
         <legend>套保计划</legend>
         <a-row :gutter="24">
@@ -72,8 +59,7 @@
         <a-row :gutter="24">
           <a-col :span="12">
             <a-form-item label="状态">
-              <span
-                    class="white">{{ formatValue(getPlanStatusName(selectedRow.hedgeplanstatus)) }}</span>
+              <span class="white">{{ formatValue(getPlanStatusName(selectedRow.hedgeplanstatus)) }}</span>
             </a-form-item>
           </a-col>
         </a-row>
@@ -164,10 +150,4 @@ export default defineComponent({
         };
     },
 });
-</script>
-
-<style lang="less">
-.plan_uncommitted_delete {
-}
-</style
->;
+</script>

+ 31 - 100
src/views/business/plan/components/recommit/index.vue

@@ -1,136 +1,74 @@
 <template>
   <!-- 计划 重新提交-->
-  <a-modal class="commonModal plan-recommit"
-           title="重新提交"
-           v-model:visible="visible"
-           centered
-           @cancel="cancel"
-           width="890px">
+  <a-modal class="commonModal plan-recommit" title="重新提交" v-model:visible="visible" centered @cancel="cancel" width="890px">
     <template #footer>
-      <a-button key="submit"
-                type="primary"
-                :loading="loading"
-                @click="submit">完成</a-button>
+      <a-button key="submit" type="primary" :loading="loading" @click="submit">完成</a-button>
     </template>
-    <a-form class="inlineForm"
-            ref="formRef"
-            :model="formState"
-            :rules="rules">
+    <a-form class="inlineForm" ref="formRef" :model="formState" :rules="rules">
       <a-row :gutter="24">
         <a-col :span="12">
-          <a-form-item label="计划类型"
-                       name="ContractType">
-            <a-select class="inlineFormSelect"
-                      style="width: 200px"
-                      v-model:value="formState.ContractType"
-                      placeholder="请选择计划类型">
-              <a-select-option v-for="item in planTye"
-                               :value="item.enumitemname"
-                               :key="item.autoid">
+          <a-form-item label="计划类型" name="ContractType">
+            <a-select class="inlineFormSelect" style="width: 200px" v-model:value="formState.ContractType" placeholder="请选择计划类型">
+              <a-select-option v-for="item in planTye" :value="item.enumitemname" :key="item.autoid">
                 {{item.enumdicname}}
               </a-select-option>
             </a-select>
           </a-form-item>
         </a-col>
         <a-col :span="12">
-          <a-form-item label="计划名称"
-                       name="HedgePlanNo">
-            <a-input class="dialogInput"
-                     v-model:value="formState.HedgePlanNo"
-                     style="width: 200px"
-                     placeholder="请输入计划名称" />
+          <a-form-item label="计划名称" name="HedgePlanNo">
+            <a-input class="dialogInput" v-model:value="formState.HedgePlanNo" style="width: 200px" placeholder="请输入计划名称" />
           </a-form-item>
         </a-col>
         <a-col :span="12">
-          <a-form-item label="现货品种"
-                       name="DeliveryGoodsID">
-            <a-select class="inlineFormSelect"
-                      style="width: 200px"
-                      v-model:value="formState.DeliveryGoodsID"
-                      @change="chooseMG"
-                      placeholder="请选择现货品种">
-              <a-select-option v-for="item in DGList"
-                               :value="item.data.deliverygoodsid"
-                               :key="item.data.deliverygoodsid">
+          <a-form-item label="现货品种" name="DeliveryGoodsID">
+            <a-select class="inlineFormSelect" style="width: 200px" v-model:value="formState.DeliveryGoodsID" @change="chooseMG" placeholder="请选择现货品种">
+              <a-select-option v-for="item in DGList" :value="item.data.deliverygoodsid" :key="item.data.deliverygoodsid">
                 {{item.data.deliverygoodsname}}
               </a-select-option>
             </a-select>
           </a-form-item>
         </a-col>
         <a-col :span="12">
-          <a-form-item label="商品"
-                       name="WRStandardID">
-            <a-select class="inlineFormSelect"
-                      style="width: 200px"
-                      @change="chooseWR"
-                      v-model:value="formState.WRStandardID"
-                      placeholder="请选择商品">
-              <a-select-option v-for="item in gmlist"
-                               :value="item.wrstandardid"
-                               :key="item.wrstandardid">
+          <a-form-item label="商品" name="WRStandardID">
+            <a-select class="inlineFormSelect" style="width: 200px" @change="chooseWR" v-model:value="formState.WRStandardID" placeholder="请选择商品">
+              <a-select-option v-for="item in gmlist" :value="item.wrstandardid" :key="item.wrstandardid">
                 {{item.wrstandardname}}
               </a-select-option>
             </a-select>
           </a-form-item>
         </a-col>
         <a-col :span="12">
-          <a-form-item label="标仓系数"
-                       name="">
-            <a-input class="dialogInput ConvertFactor"
-                     v-model:value="formState.ConvertFactor"
-                     readonly
-                     style="width: 200px"
-                     placeholder="请输入标仓系数" />
+          <a-form-item label="标仓系数" name="">
+            <a-input class="dialogInput ConvertFactor" v-model:value="formState.ConvertFactor" readonly style="width: 200px" placeholder="请输入标仓系数" />
           </a-form-item>
         </a-col>
         <a-col :span="12">
-          <a-form-item label="计划量"
-                       class="relative"
-                       name="PlanQty">
-            <a-input class="dialogInput"
-                     style="width: 200px"
-                     v-model:value="formState.PlanQty"
-                     placeholder="请输入计划量" />
+          <a-form-item label="计划量" class="relative" name="PlanQty">
+            <a-input class="dialogInput" style="width: 200px" v-model:value="formState.PlanQty" placeholder="请输入计划量" />
           </a-form-item>
         </a-col>
         <a-col :span="12">
-          <a-form-item label="交易用户"
-                       name="Tradeuserid">
-            <a-select class="inlineFormSelect"
-                      style="width: 200px"
-                      v-model:value="formState.Tradeuserid"
-                      placeholder="请选择交易用户">
-              <a-select-option v-for="item in tableList"
-                               :value="item.roleid"
-                               :key="item.roleid">
+          <a-form-item label="交易用户" name="Tradeuserid">
+            <a-select class="inlineFormSelect" style="width: 200px" v-model:value="formState.Tradeuserid" placeholder="请选择交易用户">
+              <a-select-option v-for="item in tableList" :value="item.roleid" :key="item.roleid">
                 {{item.rolename}}
               </a-select-option>
             </a-select>
           </a-form-item>
         </a-col>
         <a-col :span="12">
-          <a-form-item label="结算币种"
-                       name="Currencyid">
-            <a-select class="inlineFormSelect"
-                      style="width: 200px"
-                      v-model:value="formState.Currencyid"
-                      placeholder="请选择结算币种">
-              <a-select-option v-for="item in priceTyep"
-                               :key="item.enumitemname"
-                               :value="item.enumitemname">
+          <a-form-item label="结算币种" name="Currencyid">
+            <a-select class="inlineFormSelect" style="width: 200px" v-model:value="formState.Currencyid" placeholder="请选择结算币种">
+              <a-select-option v-for="item in priceTyep" :key="item.enumitemname" :value="item.enumitemname">
                 {{item.enumdicname}}
               </a-select-option>
             </a-select>
           </a-form-item>
         </a-col>
         <a-col :span="24">
-          <a-form-item label="备注"
-                       class="relative"
-                       name="Remark">
-            <a-input class="dialogInput"
-                     v-model:value="formState.Remark"
-                     style="width: 636px"
-                     placeholder="请输入备注" />
+          <a-form-item label="备注" class="relative" name="Remark">
+            <a-input class="dialogInput" v-model:value="formState.Remark" style="width: 636px" placeholder="请输入备注" />
           </a-form-item>
         </a-col>
       </a-row>
@@ -140,7 +78,7 @@
 
 <script lang="ts">
 import { defineComponent, PropType, ref, watchEffect } from 'vue';
-import { closeModal } from '@/common/setup/modal/index';
+import { _closeModal } from '@/common/setup/modal/modal';
 import { formatTime } from '@/common/methods/index';
 import { getPayCurrencyTypeEnumList, getSpotContractTypeEnumList } from '@/common/constants/enumsList';
 import { AllEnums } from '@/services/go/commonService/interface';
@@ -159,7 +97,7 @@ import { handlerManagerList } from '@/common/setup/user';
 
 export default defineComponent({
     name: 'plan-recommit',
-    emits:['refresh'],
+    emits: ['cancel', 'update'],
     components: {},
     props: {
         selectedRow: {
@@ -168,7 +106,7 @@ export default defineComponent({
         },
     },
     setup(props, context) {
-        const { visible, cancel } = closeModal('plan_uncommitted_recommit');
+        const { visible, cancel } = _closeModal(context);
         const loading = ref<boolean>(false);
         const planTye = ref<AllEnums[]>(getSpotContractTypeEnumList());
         // 表单
@@ -216,8 +154,7 @@ export default defineComponent({
                     Tradeuserid: param.Tradeuserid, // 交易用户id
                 };
                 requestResultLoadingAndInfo(hedgePlanReq, reqParam, loading, ['重新提交计划成功', '重新提交计划失败:']).then(() => {
-                    context.emit('refresh');
-                    cancel();
+                    cancel(true);
                 });
             });
         }
@@ -239,10 +176,4 @@ export default defineComponent({
         };
     },
 });
-</script>
-
-<style lang="less">
-.plan-recommit {
-}
-</style
->;
+</script>

+ 20 - 20
src/views/business/plan/list/audit/index.vue

@@ -1,23 +1,23 @@
 <template>
-    <!-- 计划: 审核中-->
-    <div class="plan_uncommitted" :loading="loading">
-        <Filter @search="updateColumn"></Filter>
-        <a-table :columns="columns" class="srcollYTable" :scroll="{ x: '100%', y: 'calc(100vh - 163px)' }" :pagination="false" :loading="loading" :expandedRowKeys="expandedRowKeys" :customRow="Rowclick" rowKey="key" :data-source="tableList">
-            <!-- 额外的展开行 -->
-            <template #expandedRowRender="{ record }">
-                <mtp-table-button class="btn-list-sticky" :buttons="buttons" :record="record" @click="openComponent" />
-            </template>
-            <template #contracttype="{ text }">
-                <a>{{ getPlanContractType(text) }}</a>
-            </template>
-            <template #hedgeplanstatus="{ text }">
-                <a>{{ getPlanStatusName(text) }}</a>
-            </template>
-        </a-table>
-        <!-- 右键 -->
-        <contextMenu :contextMenu="contextMenu" @cancel="closeContext" :list="buttons"> </contextMenu>
-        <component :is="componentId" v-if="componentId" :selectedRow="selectedRow" @cancel="closeComponent"> </component>
-    </div>
+  <!-- 计划: 审核中-->
+  <div class="plan_uncommitted" :loading="loading">
+    <Filter @search="updateColumn"></Filter>
+    <a-table :columns="columns" class="srcollYTable" :scroll="{ x: '100%', y: 'calc(100vh - 163px)' }" :pagination="false" :loading="loading" :expandedRowKeys="expandedRowKeys" :customRow="Rowclick" rowKey="key" :data-source="tableList">
+      <!-- 额外的展开行 -->
+      <template #expandedRowRender="{ record }">
+        <mtp-table-button class="btn-list-sticky" :buttons="buttons" :record="record" @click="openComponent" />
+      </template>
+      <template #contracttype="{ text }">
+        <a>{{ getPlanContractType(text) }}</a>
+      </template>
+      <template #hedgeplanstatus="{ text }">
+        <a>{{ getPlanStatusName(text) }}</a>
+      </template>
+    </a-table>
+    <!-- 右键 -->
+    <contextMenu :contextMenu="contextMenu" @cancel="closeContext" :list="buttons"> </contextMenu>
+    <component :is="componentId" v-if="componentId" :selectedRow="selectedRow" @cancel="closeComponent"> </component>
+  </div>
 </template>
 
 <script lang="ts">
@@ -55,7 +55,7 @@ export default defineComponent({
                     queryTable(QueryHedgePlan, '1');
                     break;
                 case 'plan_performance':
-                    queryTable(QueryHedgePlan, '2');
+                    queryTable(QueryHedgePlan, '2,4');
                     break;
             }
         };

+ 29 - 30
src/views/manage/business-review/list/settlement/index.vue

@@ -1,32 +1,32 @@
 <template>
-    <!-- 管理-业务审核-交收 -->
-    <div class="business-review-js" :loading="loading">
-        <Filter @search="updateColumn"></Filter>
-        <a-table :columns="columns" class="topTable" :pagination="false" :expandedRowKeys="expandedRowKeys" :customRow="Rowclick" rowKey="key" :scroll="{ x: '100%', y: 'calc(100vh - 163px)' }" :data-source="tableList">
-            <!-- 额外的展开行 -->
-            <template #expandedRowRender="{ record }">
-                <mtp-table-button class="btn-list-sticky" :buttons="handlePermissionBtn(buttons, record)" :record="record" @click="openComponent" />
-            </template>
-            <template #operateapplytype="{ text }">
-                <a>{{ getPriceTypeName(text) }}</a>
-            </template>
-            <template #contracttype="{ text }">
-                <a>{{ getContractTypeName(text) }}</a>
-            </template>
-            <template #applystatus="{ text }">
-                <a>{{ getApplyStatusName(text) }}</a>
-            </template>
-            <template #buyusernameOrsellusername="{ record }">
-                <a>{{ getAnalogueName(record.contracttype, record.buyusername, record.sellusername) }}</a>
-            </template>
-            <template #addmargin||decmargin="{ record }">
-                <a>{{ record.addmargin !== 0 && record.addmargin !== undefined ? '+' + record.addmargin : record.decmargin === 0 || record.decmargin === undefined ? '' : '-' + record.decmargin }} </a>
-            </template>
-        </a-table>
-        <!-- 右键 -->
-        <contextMenu :contextMenu="contextMenu" @cancel="closeContext" :list="handlePermissionBtn(buttons, selectedRow)"> </contextMenu>
-        <component :is="componentId" v-if="componentId" :selectedRow="selectedRow" @cancel="closeComponent"></component>
-    </div>
+  <!-- 管理-业务审核-交收 -->
+  <div class="business-review-js" :loading="loading">
+    <Filter @search="updateColumn"></Filter>
+    <a-table :columns="columns" class="topTable" :pagination="false" :expandedRowKeys="expandedRowKeys" :customRow="Rowclick" rowKey="key" :scroll="{ x: '100%', y: 'calc(100vh - 163px)' }" :data-source="tableList">
+      <!-- 额外的展开行 -->
+      <template #expandedRowRender="{ record }">
+        <mtp-table-button class="btn-list-sticky" :buttons="handlePermissionBtn(buttons, record)" :record="record" @click="openComponent" />
+      </template>
+      <template #operateapplytype="{ text }">
+        <a>{{ getPriceTypeName(text) }}</a>
+      </template>
+      <template #contracttype="{ text }">
+        <a>{{ getContractTypeName(text) }}</a>
+      </template>
+      <template #applystatus="{ text }">
+        <a>{{ getApplyStatusName(text) }}</a>
+      </template>
+      <template #buyusernameOrsellusername="{ record }">
+        <a>{{ getAnalogueName(record.contracttype, record.buyusername, record.sellusername) }}</a>
+      </template>
+      <template #addmargin||decmargin="{ record }">
+        <a>{{ record.addmargin !== 0 && record.addmargin !== undefined ? '+' + record.addmargin : record.decmargin === 0 || record.decmargin === undefined ? '' : '-' + record.decmargin }} </a>
+      </template>
+    </a-table>
+    <!-- 右键 -->
+    <contextMenu :contextMenu="contextMenu" @cancel="closeContext" :list="handlePermissionBtn(buttons, selectedRow)"> </contextMenu>
+    <component :is="componentId" v-if="componentId" :selectedRow="selectedRow" @cancel="closeComponent"></component>
+  </div>
 </template>
 
 <script lang="ts">
@@ -68,12 +68,11 @@ export default defineComponent({
                     queryTable(QueryBusinessJs, { applystatus: '1' });
                     break;
                 case 'settlement_performance':
-                    queryTable(QueryBusinessJs, { applystatus: '2' });
+                    queryTable(QueryBusinessJs, { applystatus: '2,3' });
                     break;
             }
         };
 
-
         // 获取表头名称
         const getTableName = () => {
             switch (routeName) {

+ 37 - 38
src/views/manage/business-review/list/someprice/index.vue

@@ -1,32 +1,32 @@
 <template>
-    <!-- 管理-业务审核-点价 -->
-    <div class="business-review-dj" :loading="loading">
-        <Filter @search="updateColumn"></Filter>
-        <a-table :columns="columns" class="srcollYTable" :scroll="{ x: '100%', y: 'calc(100vh - 163px)' }" :pagination="false" :expandedRowKeys="expandedRowKeys" :customRow="Rowclick" rowKey="key" :data-source="tableList">
-            <!-- 额外的展开行 -->
-            <template #expandedRowRender="{ record }">
-                <mtp-table-button class="btn-list-sticky" :buttons="handlePermissionBtn(buttons, record)" :record="record" @click="openComponent" />
-            </template>
-            <template #pricetype="{ text }">
-                <a>{{ getPriceTypeName(text) }}</a>
-            </template>
-            <template #applystatus="{ text }">
-                <a>{{ getApplyStatusName(text) }}</a>
-            </template>
-            <template #contracttype="{ text }">
-                <a>{{ getContractTypeName(text) }}</a>
-            </template>
-            <template #contractstatus="{ text }">
-                <a>{{ getContractStatusName(text) }}</a>
-            </template>
-            <template #buyusernameOrsellusername="{ record }">
-                <a>{{ getAnalogueName(record.contracttype, record.buyusername, record.sellusername) }}</a>
-            </template>
-        </a-table>
-        <!-- 右键 -->
-        <contextMenu :contextMenu="contextMenu" @cancel="closeContext" :list="handlePermissionBtn(buttons, selectedRow)"> </contextMenu>
-        <component :is="componentId" v-if="componentId" :selectedRow="selectedRow" @cancel="closeComponent"></component>
-    </div>
+  <!-- 管理-业务审核-点价 -->
+  <div class="business-review-dj" :loading="loading">
+    <Filter @search="updateColumn"></Filter>
+    <a-table :columns="columns" class="srcollYTable" :scroll="{ x: '100%', y: 'calc(100vh - 163px)' }" :pagination="false" :expandedRowKeys="expandedRowKeys" :customRow="Rowclick" rowKey="key" :data-source="tableList">
+      <!-- 额外的展开行 -->
+      <template #expandedRowRender="{ record }">
+        <mtp-table-button class="btn-list-sticky" :buttons="handlePermissionBtn(buttons, record)" :record="record" @click="openComponent" />
+      </template>
+      <template #pricetype="{ text }">
+        <a>{{ getPriceTypeName(text) }}</a>
+      </template>
+      <template #applystatus="{ text }">
+        <a>{{ getApplyStatusName(text) }}</a>
+      </template>
+      <template #contracttype="{ text }">
+        <a>{{ getContractTypeName(text) }}</a>
+      </template>
+      <template #contractstatus="{ text }">
+        <a>{{ getContractStatusName(text) }}</a>
+      </template>
+      <template #buyusernameOrsellusername="{ record }">
+        <a>{{ getAnalogueName(record.contracttype, record.buyusername, record.sellusername) }}</a>
+      </template>
+    </a-table>
+    <!-- 右键 -->
+    <contextMenu :contextMenu="contextMenu" @cancel="closeContext" :list="handlePermissionBtn(buttons, selectedRow)"> </contextMenu>
+    <component :is="componentId" v-if="componentId" :selectedRow="selectedRow" @cancel="closeComponent"></component>
+  </div>
 </template>
 
 <script lang="ts">
@@ -41,8 +41,7 @@ import { getTableButton } from '@/common/setup/table/button';
 import { QueryBusinessDj } from '@/services/go/ermcp/business-review';
 import { QryBusinessDjRsp } from '@/services/go/ermcp/business-review/interface';
 import { useRoute } from 'vue-router';
-import moment from "moment"
-
+import moment from 'moment';
 
 export default defineComponent({
     name: 'business-review-dj',
@@ -68,17 +67,17 @@ export default defineComponent({
         const queryTableAction = () => {
             switch (routeName) {
                 case 'someprice_checkpending':
-                    queryTable(QueryBusinessDj, { applystatus: '1' }).then(res => {
-                        tableList.value.sort((a,b)=>{
-                            return moment(b.audittime).valueOf()-moment(a.audittime).valueOf()
-                        })
+                    queryTable(QueryBusinessDj, { applystatus: '1' }).then((res) => {
+                        tableList.value.sort((a, b) => {
+                            return moment(b.audittime).valueOf() - moment(a.audittime).valueOf();
+                        });
                     });
                     break;
                 case 'someprice_performance':
-                    queryTable(QueryBusinessDj, { applystatus: '2' }).then(res => {
-                        tableList.value.sort((a,b)=>{
-                            return moment(b.audittime).valueOf()-moment(a.audittime).valueOf()
-                        })
+                    queryTable(QueryBusinessDj, { applystatus: '2,3' }).then((res) => {
+                        tableList.value.sort((a, b) => {
+                            return moment(b.audittime).valueOf() - moment(a.audittime).valueOf();
+                        });
                     });
             }
         };

+ 42 - 42
src/views/manage/finance-review/list/funds/index.vue

@@ -1,45 +1,45 @@
 <template>
-    <!-- 管理 - 财务审核 - 款项 -->
-    <div class="business-review-js" :loading="loading">
-        <Filter @search="updateColumn"></Filter>
-        <a-table :columns="columns" class="srcollYTable" :scroll="{ x: '100%', y: 'calc(100vh - 163px)' }" :pagination="false" :expandedRowKeys="expandedRowKeys" :customRow="Rowclick" rowKey="key" :data-source="tableList">
-            <!-- 额外的展开行 -->
-            <template #expandedRowRender="{ record }">
-                <mtp-table-button class="btn-list-sticky" :buttons="handlePermissionBtn(buttons, record)" :record="record" @click="openComponent" />
-            </template>
-            <!-- 现货合同类型 -->
-            <template #contractstatus="{ record }">
-                <a>{{ getApplyStatusName(record.applystatus) }}</a>
-            </template>
-            <!-- 合同类型-->
-            <template #contracttype="{ record }">
-                <a>{{ getContractTypeName(record.contracttype) }}</a>
-            </template>
-            <!-- 状态 -->
-            <template #applystatus="{ text }">
-                <a>{{ getApplyStatusName(text) }}</a>
-            </template>
-            <!-- 点价类型 -->
-            <template #operateapplytype="{ text }">
-                <a>{{ operateApplyTypeName(text) }}</a>
-            </template>
-            <!-- 款项类型 -->
-            <template #kxtype="{ record }">
-                <a>{{ stateName(record.deductamount, record.contracttype) }}</a>
-            </template>
-            <!-- 对手方 -->
-            <template #buyusernameOrsellusername="{ record }">
-                <a>{{ record.contracttype === 1 ? record.sellusername : record.buyusername }}</a>
-            </template>
-            <!-- 金额 如果是退款 则使用deductamount  如果是付款则使用payamount-->
-            <template #payamount="{ record }">
-                <a>{{ record.deductamount === undefined || record.deductamount === 0 ? record.payamount : record.deductamount }}</a>
-            </template>
-        </a-table>
-        <!-- 右键 -->
-        <contextMenu :contextMenu="contextMenu" @cancel="closeContext" :list="handlePermissionBtn(buttons, selectedRow)"> </contextMenu>
-        <component :is="componentId" v-if="componentId" :selectedRow="selectedRow" @cancel="closeComponent"></component>
-    </div>
+  <!-- 管理 - 财务审核 - 款项 -->
+  <div class="business-review-js" :loading="loading">
+    <Filter @search="updateColumn"></Filter>
+    <a-table :columns="columns" class="srcollYTable" :scroll="{ x: '100%', y: 'calc(100vh - 163px)' }" :pagination="false" :expandedRowKeys="expandedRowKeys" :customRow="Rowclick" rowKey="key" :data-source="tableList">
+      <!-- 额外的展开行 -->
+      <template #expandedRowRender="{ record }">
+        <mtp-table-button class="btn-list-sticky" :buttons="handlePermissionBtn(buttons, record)" :record="record" @click="openComponent" />
+      </template>
+      <!-- 现货合同类型 -->
+      <template #contractstatus="{ record }">
+        <a>{{ getApplyStatusName(record.applystatus) }}</a>
+      </template>
+      <!-- 合同类型-->
+      <template #contracttype="{ record }">
+        <a>{{ getContractTypeName(record.contracttype) }}</a>
+      </template>
+      <!-- 状态 -->
+      <template #applystatus="{ text }">
+        <a>{{ getApplyStatusName(text) }}</a>
+      </template>
+      <!-- 点价类型 -->
+      <template #operateapplytype="{ text }">
+        <a>{{ operateApplyTypeName(text) }}</a>
+      </template>
+      <!-- 款项类型 -->
+      <template #kxtype="{ record }">
+        <a>{{ stateName(record.deductamount, record.contracttype) }}</a>
+      </template>
+      <!-- 对手方 -->
+      <template #buyusernameOrsellusername="{ record }">
+        <a>{{ record.contracttype === 1 ? record.sellusername : record.buyusername }}</a>
+      </template>
+      <!-- 金额 如果是退款 则使用deductamount  如果是付款则使用payamount-->
+      <template #payamount="{ record }">
+        <a>{{ record.deductamount === undefined || record.deductamount === 0 ? record.payamount : record.deductamount }}</a>
+      </template>
+    </a-table>
+    <!-- 右键 -->
+    <contextMenu :contextMenu="contextMenu" @cancel="closeContext" :list="handlePermissionBtn(buttons, selectedRow)"> </contextMenu>
+    <component :is="componentId" v-if="componentId" :selectedRow="selectedRow" @cancel="closeComponent"></component>
+  </div>
 </template>
 
 <script lang="ts">
@@ -80,7 +80,7 @@ export default defineComponent({
                     queryTable(QueryBusinessKx, { applystatus: '1' });
                     break;
                 case 'funds_performance':
-                    queryTable(QueryBusinessKx, { applystatus: '2' });
+                    queryTable(QueryBusinessKx, { applystatus: '2,3' });
                     break;
             }
         };

+ 34 - 34
src/views/manage/finance-review/list/invoice/index.vue

@@ -1,37 +1,37 @@
 <template>
-    <!-- 管理 - 财务审核 - 发票 -->
-    <div class="finance_review_invoice" :loading="loading">
-        <Filter @search="updateColumn"> </Filter>
-        <a-table :columns="columns" class="topTable" :pagination="false" :expandedRowKeys="expandedRowKeys" :customRow="Rowclick" rowKey="key" :scroll="{ x: '100%', y: 'calc(100vh - 163px)' }" :data-source="tableList">
-            <!-- 额外的展开行 -->
-            <template #expandedRowRender="{ record }">
-                <mtp-table-button class="btn-list-sticky" :buttons="handlePermissionBtn(buttons, record)" :record="record" @click="openComponent" />
-            </template>
-            <!-- 现货合同类型 -->
-            <template #contracttype="{ text }">
-                <a>{{ getContractTypeName(text) }}</a>
-            </template>
-            <!-- 发票类型-->
-            <template #invoicetype="{ record }">
-                <a>{{ invoiceStatusName(record.contracttype) }}</a>
-            </template>
-            <!-- 状态 -->
-            <template #applystatus="{ text }">
-                <a>{{ getApplyStatusName(text) }}</a>
-            </template>
-            <!-- 点价类型 -->
-            <template #operateapplytype="{ text }">
-                <a>{{ operateApplyTypeName(text) }}</a>
-            </template>
-            <!-- 对手方 -->
-            <template #buyusernameOrsellusername="{ record }">
-                <a>{{ record.contracttype === 1 ? record.sellusername : record.buyusername }}</a>
-            </template>
-        </a-table>
-        <!-- 右键 -->
-        <contextMenu :contextMenu="contextMenu" @cancel="closeContext" :list="handlePermissionBtn(buttons, selectedRow)"> </contextMenu>
-        <component :is="componentId" v-if="componentId" :selectedRow="selectedRow" @cancel="closeComponent"></component>
-    </div>
+  <!-- 管理 - 财务审核 - 发票 -->
+  <div class="finance_review_invoice" :loading="loading">
+    <Filter @search="updateColumn"> </Filter>
+    <a-table :columns="columns" class="topTable" :pagination="false" :expandedRowKeys="expandedRowKeys" :customRow="Rowclick" rowKey="key" :scroll="{ x: '100%', y: 'calc(100vh - 163px)' }" :data-source="tableList">
+      <!-- 额外的展开行 -->
+      <template #expandedRowRender="{ record }">
+        <mtp-table-button class="btn-list-sticky" :buttons="handlePermissionBtn(buttons, record)" :record="record" @click="openComponent" />
+      </template>
+      <!-- 现货合同类型 -->
+      <template #contracttype="{ text }">
+        <a>{{ getContractTypeName(text) }}</a>
+      </template>
+      <!-- 发票类型-->
+      <template #invoicetype="{ record }">
+        <a>{{ invoiceStatusName(record.contracttype) }}</a>
+      </template>
+      <!-- 状态 -->
+      <template #applystatus="{ text }">
+        <a>{{ getApplyStatusName(text) }}</a>
+      </template>
+      <!-- 点价类型 -->
+      <template #operateapplytype="{ text }">
+        <a>{{ operateApplyTypeName(text) }}</a>
+      </template>
+      <!-- 对手方 -->
+      <template #buyusernameOrsellusername="{ record }">
+        <a>{{ record.contracttype === 1 ? record.sellusername : record.buyusername }}</a>
+      </template>
+    </a-table>
+    <!-- 右键 -->
+    <contextMenu :contextMenu="contextMenu" @cancel="closeContext" :list="handlePermissionBtn(buttons, selectedRow)"> </contextMenu>
+    <component :is="componentId" v-if="componentId" :selectedRow="selectedRow" @cancel="closeComponent"></component>
+  </div>
 </template>
 
 <script lang="ts">
@@ -72,7 +72,7 @@ export default defineComponent({
                     queryTable(QueryBusinessFp, { applystatus: '1' });
                     break;
                 case 'invoice_performance':
-                    queryTable(QueryBusinessFp, { applystatus: '2' });
+                    queryTable(QueryBusinessFp, { applystatus: '2,3' });
                     break;
             }
         };

+ 34 - 34
src/views/manage/inventory-review/list/audit/index.vue

@@ -1,37 +1,37 @@
 <template>
-    <!-- 库存审核 入库-->
-    <div class="inventory_review_checkin" :loading="loading">
-        <Filter @search="updateColumn" :inOrOut="'in'"></Filter>
-        <a-table :columns="columns" class="srcollYTable" :scroll="{ x: '100%', y: 'calc(100vh - 163px)' }" :pagination="false" :expandedRowKeys="expandedRowKeys" :customRow="Rowclick" rowKey="key" :data-source="tableList">
-            <!-- 额外的展开行 -->
-            <template #expandedRowRender="{ record }">
-                <mtp-table-button class="btn-list-sticky" :buttons="handlePermissionBtn(buttons, record)" :record="record" @click="openComponent" />
-            </template>
-            <!-- 状态 -->
-            <template #applystatus="{ text }">
-                <a>{{ getApplyStatusName(text) }}</a>
-            </template>
-            <!-- 现货合同类型 -->
-            <template #contracttype="{ text }">
-                <a>{{ getContractTypeName(text) }}</a>
-            </template>
-            <!-- 点价类型 -->
-            <template #pricetype="{ text }">
-                <a>{{ getPriceTypeName(text) }}</a>
-            </template>
-            <!-- 出入库类型 -->
-            <template #inouttype="{ text }">
-                <a>{{ InOutTypeName(text) }}</a>
-            </template>
-            <!-- 对手方 -->
-            <template #buynicknameOrsellusername="{ record }">
-                <a>{{ handleName(record) }}</a>
-            </template>
-        </a-table>
-        <!-- 右键 -->
-        <contextMenu :contextMenu="contextMenu" @cancel="closeContext" :list="handlePermissionBtn(buttons, selectedRow)"> </contextMenu>
-        <component :is="componentId" v-if="componentId" :selectedRow="selectedRow" @cancel="closeComponent"></component>
-    </div>
+  <!-- 库存审核 入库-->
+  <div class="inventory_review_checkin" :loading="loading">
+    <Filter @search="updateColumn" :inOrOut="'in'"></Filter>
+    <a-table :columns="columns" class="srcollYTable" :scroll="{ x: '100%', y: 'calc(100vh - 163px)' }" :pagination="false" :expandedRowKeys="expandedRowKeys" :customRow="Rowclick" rowKey="key" :data-source="tableList">
+      <!-- 额外的展开行 -->
+      <template #expandedRowRender="{ record }">
+        <mtp-table-button class="btn-list-sticky" :buttons="handlePermissionBtn(buttons, record)" :record="record" @click="openComponent" />
+      </template>
+      <!-- 状态 -->
+      <template #applystatus="{ text }">
+        <a>{{ getApplyStatusName(text) }}</a>
+      </template>
+      <!-- 现货合同类型 -->
+      <template #contracttype="{ text }">
+        <a>{{ getContractTypeName(text) }}</a>
+      </template>
+      <!-- 点价类型 -->
+      <template #pricetype="{ text }">
+        <a>{{ getPriceTypeName(text) }}</a>
+      </template>
+      <!-- 出入库类型 -->
+      <template #inouttype="{ text }">
+        <a>{{ InOutTypeName(text) }}</a>
+      </template>
+      <!-- 对手方 -->
+      <template #buynicknameOrsellusername="{ record }">
+        <a>{{ handleName(record) }}</a>
+      </template>
+    </a-table>
+    <!-- 右键 -->
+    <contextMenu :contextMenu="contextMenu" @cancel="closeContext" :list="handlePermissionBtn(buttons, selectedRow)"> </contextMenu>
+    <component :is="componentId" v-if="componentId" :selectedRow="selectedRow" @cancel="closeComponent"></component>
+  </div>
 </template>
 
 <script lang="ts">
@@ -74,7 +74,7 @@ export default defineComponent({
                     break;
                 // 已审核
                 case 'stock_performance':
-                    queryTable(QueryAreaStockApply, { applystatus: '2' });
+                    queryTable(QueryAreaStockApply, { applystatus: '2,3' });
                     break;
             }
         };

+ 168 - 0
src/views/market/futures/compoments/futures-trade/index.less

@@ -0,0 +1,168 @@
+.futures_trade {
+    display: flex;
+    height : 100%;
+
+    &__left {
+        flex: 1;
+    }
+}
+
+.post_buying {
+    width : 100%;
+    height: 100%;
+    .flex;
+    flex-direction: column;
+    position      : relative;
+    overflow      : hidden;
+
+    .ant-form {
+        height: 100%;
+    }
+
+    .condition {
+        width        : 100%;
+        height       : 48px;
+        margin       : 0 16px;
+        padding      : 10px 0;
+        border-bottom: 1px solid @m-black6;
+        .inlineflex;
+
+        .conditionBtn {
+            align-self : center;
+            align-items: center;
+            border     : 0;
+            min-width  : 80px;
+            height     : 28px;
+            line-height: 28px;
+            background : @m-black7;
+            .rounded-corners(3px);
+            font-size: 14px;
+            color    : @m-blue0;
+
+            &:hover {
+                background: @m-black7-hover;
+                color     : @m-blue0-hover;
+            }
+        }
+
+        .conditionBtn+.conditionBtn {
+            margin-left: 10px;
+        }
+    }
+}
+
+.unit {
+    margin-left: 70px;
+    width      : 260px;
+    .flex;
+    justify-content: space-between;
+    font-size      : 14px;
+    color          : @m-grey41;
+    height         : 14px;
+    line-height    : 14px;
+}
+
+.listedBtn {
+    width        : 120px;
+    height       : 30px;
+    line-height  : 30px;
+    background   : linear-gradient(0deg, @m-blue2 0%, @m-blue0 100%);
+    border-radius: 3px;
+    color        : @m-white0;
+    font-size    : 14px;
+    text-align   : center;
+    border       : 0;
+
+    &:hover {
+        background: linear-gradient(0deg, @m-blue0-hover 0%, @m-blue2-hover 100%);
+        color     : @m-white0-hover;
+    }
+}
+
+.cancelBtn:extend(.listedBtn) {
+    background: linear-gradient(0deg, @m-grey12 0%, @m-grey13 100%) !important;
+
+    &:hover {
+        background: linear-gradient(0deg, @m-grey12-hover 0%, @m-grey13-hover 100%) !important;
+        color     : @m-white0-hover;
+    }
+}
+
+.ml10 {
+    margin-left: 10px;
+}
+
+.ant-form.dialogForm .ant-row.ant-form-item {
+    margin-bottom: 14px;
+}
+
+.mt20 {
+    margin-top: 20px;
+}
+
+.mt-10 {
+    margin-top: -10px;
+}
+
+.ant-input-suffix {
+    position: absolute;
+    right   : -25px;
+}
+
+.minusBtn,
+.plusBtn {
+    width      : 15px;
+    height     : 32px;
+    line-height: 32px;
+    font-size  : 15px;
+    color      : @m-blue15;
+    cursor     : pointer;
+}
+
+.minusBtn {
+    position: absolute;
+    top     : -6px;
+    left    : 14px;
+    z-index : 1;
+}
+
+.plusBtn {
+    position: absolute;
+    top     : -6px;
+    right   : 14px;
+    z-index : 1;
+}
+
+.stepper {
+    padding-left : 30px;
+    padding-right: 30px;
+    text-align   : center;
+    color        : @m-yellow1;
+    font-size    : 16px;
+}
+
+.ant-slider.formSlider {
+    width      : 260px !important;
+    margin-left: 70px;
+
+    .ant-slider-rail {
+        margin-right    : 0;
+        padding-right   : 0;
+        height          : 3px !important;
+        border-radius   : 2px !important;
+        background-color: @m-blue14;
+    }
+
+    .ant-slider-track {
+        height          : 3px;
+        background-color: @m-blue0;
+    }
+
+    .ant-slider-step {
+        height: 3px;
+    }
+
+    .ant-progress-text {
+        display: none;
+    }
+}

+ 49 - 189
src/views/market/futures/compoments/futures-trade/index.vue

@@ -1,66 +1,71 @@
 <template>
-  <!-- 挂牌求购 -->
-  <Drawer :title="'挂牌求购'"
-          :placement="'right'"
-          :visible="visible"
-          @cancel="cancel"
-          class="top">
-    <div class="post_buying">
-      <a-form class="inlineForm dialogForm"
-              ref="formRef"
-              :model="formState"
-              :rules="rules">
+  <!-- 期货交易 -->
+  <Drawer :title="'期货交易'" :placement="'right'" :visible="visible" @cancel="cancel" class="top">
+    <div class="futures_trade">
+      <div class="futures_trade__left">
+        <a-form class="inlineForm">
+          <a-form-item label="账号">
+            <a-select class="inlineFormSelect" placeholder="请选择" v-model:value="formState.accountid">
+              <a-select-option v-for="item in accountList" :value="item.accountid" :key="item.accountid">{{ item.accountid }}</a-select-option>
+            </a-select>
+          </a-form-item>
+          <a-form-item label="合约">
+            <a-select class="inlineFormSelect" placeholder="请选择"></a-select>
+          </a-form-item>
+          <a-form-item label="交易价格">
+            <a-input-number class="commonInput" />
+            <MinusOutlined @click="decreaseNumber" />
+            <PlusOutlined @click="increaseNumber" />
+            <a-select class="inlineFormSelect" placeholder="请选择"></a-select>
+          </a-form-item>
+          <a-form-item label="交易数量">
+            <a-input-number class="commonInput" />
+            <MinusOutlined @click="decreaseNumber" />
+            <PlusOutlined @click="increaseNumber" />
+            <a-button>复位</a-button>
+          </a-form-item>
+        </a-form>
+        <div>
+          <a-button>买入</a-button>
+          <a-button>卖出</a-button>
+          <a-button>平仓</a-button>
+        </div>
+      </div>
+      <div class="futures_trade__right">
+
+      </div>
+      <!-- <a-form class="inlineForm dialogForm" ref="formRef" :model="formState" :rules="rules">
         <div class="formBar">
           <a-row :gutter="24">
             <a-col :span="24">
-              <a-form-item label="交易账户"
-                           name="accountid">
-                <a-select class="inlineFormSelect"
-                          style="width: 260px"
-                          v-model:value="formState.accountid"
-                          placeholder="请选择">
-                  <a-select-option v-for="item in accountList"
-                                   :value="item.accountid"
-                                   :key="item.accountid">{{ item.accountid }}</a-select-option>
+              <a-form-item label="交易账户" name="accountid">
+                <a-select class="inlineFormSelect" style="width: 260px" v-model:value="formState.accountid" placeholder="请选择">
+                  <a-select-option v-for="item in accountList" :value="item.accountid" :key="item.accountid">{{ item.accountid }}</a-select-option>
                 </a-select>
               </a-form-item>
             </a-col>
             <a-col :span="24">
-              <a-form-item label="挂牌价格"
-                           name="FixedPrice">
-                <a-input-number class="commonInput"
-                                style="width: 260px"
-                                :min="0"
-                                v-model:value="formState.FixedPrice" />
+              <a-form-item label="挂牌价格" name="FixedPrice">
+                <a-input-number class="commonInput" style="width: 260px" :min="0" v-model:value="formState.FixedPrice" />
               </a-form-item>
             </a-col>
             <a-col :span="24">
-              <a-form-item label="挂牌数量"
-                           name="OrderQty">
-                <a-input-number class="commonInput"
-                                style="width: 260px"
-                                :min="0"
-                                :max="getMaxNum()"
-                                v-model:value="formState.OrderQty" />
+              <a-form-item label="挂牌数量" name="OrderQty">
+                <a-input-number class="commonInput" style="width: 260px" :min="0" v-model:value="formState.OrderQty" />
                 <span class="input-enumdicname">{{ selectedRow.enumdicname }}</span>
               </a-form-item>
             </a-col>
           </a-row>
         </div>
         <a-row :gutter="24">
-          <a-col :span="24"
-                 class="fixedBtns">
+          <a-col :span="24" class="fixedBtns">
             <a-form-item class="btnCenter">
-              <a-button class="listedBtn"
-                        @click="submit"
-                        :loading="loading">买入</a-button>
-              <a-button class="ml10 cancelBtn"
-                        @click="cancel"
-                        :disabled="loading">取消</a-button>
+              <a-button class="listedBtn" @click="submit" :loading="loading">买入</a-button>
+              <a-button class="ml10 cancelBtn" @click="cancel" :disabled="loading">取消</a-button>
             </a-form-item>
           </a-col>
         </a-row>
-      </a-form>
+      </a-form> -->
     </div>
   </Drawer>
 </template>
@@ -68,8 +73,6 @@
 <script lang="ts">
 import { Des } from '@/common/components/commonDes';
 import Drawer from '@/common/components/drawer/index.vue';
-import { EnumRouterName } from '@/common/constants/enumRouterName';
-import { ModalEnum } from '@/common/constants/modalNameEnum';
 import { _closeModal } from '@/common/setup/modal/modal';
 import { getAccountTypeList } from '@/services/bus/account';
 import { MinusOutlined, PlusOutlined } from '@ant-design/icons-vue';
@@ -87,20 +90,12 @@ export default defineComponent({
             type: Object as PropType<TempWrOrderQuoteDetail>,
             default: {},
         },
-        enumName: {
-            default: '',
-            type: String as PropType<EnumRouterName>,
-        },
-        time: {
-            type: Object as PropType<Moment>,
-            default: moment(),
-        },
     },
     setup(props, context) {
         const { visible, cancel } = _closeModal(context);
         const { rules, formState, formRef } = handleForm(props.selectedRow);
         const loading = ref<boolean>(false);
-        const accountList = getAccountTypeList([2]);
+        const accountList = getAccountTypeList([1]);
         if (accountList.length) {
             formState.accountid = accountList[0].accountid;
         }
@@ -130,140 +125,5 @@ export default defineComponent({
 </script>
 
 <style lang="less">
-.post_buying {
-    width: 100%;
-    height: 100%;
-    .flex;
-    flex-direction: column;
-    position: relative;
-    overflow: hidden;
-    .ant-form {
-        height: 100%;
-    }
-    .condition {
-        width: 100%;
-        height: 48px;
-        margin: 0 16px;
-        padding: 10px 0;
-        border-bottom: 1px solid @m-black6;
-        .inlineflex;
-        .conditionBtn {
-            align-self: center;
-            align-items: center;
-            border: 0;
-            min-width: 80px;
-            height: 28px;
-            line-height: 28px;
-            background: @m-black7;
-            .rounded-corners(3px);
-            font-size: 14px;
-            color: @m-blue0;
-            &:hover {
-                background: @m-black7-hover;
-                color: @m-blue0-hover;
-            }
-        }
-        .conditionBtn + .conditionBtn {
-            margin-left: 10px;
-        }
-    }
-}
-
-.unit {
-    margin-left: 70px;
-    width: 260px;
-    .flex;
-    justify-content: space-between;
-    font-size: 14px;
-    color: @m-grey41;
-    height: 14px;
-    line-height: 14px;
-}
-.listedBtn {
-    width: 120px;
-    height: 30px;
-    line-height: 30px;
-    background: linear-gradient(0deg, @m-blue2 0%, @m-blue0 100%);
-    border-radius: 3px;
-    color: @m-white0;
-    font-size: 14px;
-    text-align: center;
-    border: 0;
-    &:hover {
-        background: linear-gradient(0deg, @m-blue0-hover 0%, @m-blue2-hover 100%);
-        color: @m-white0-hover;
-    }
-}
-.cancelBtn:extend(.listedBtn) {
-    background: linear-gradient(0deg, @m-grey12 0%, @m-grey13 100%) !important;
-    &:hover {
-        background: linear-gradient(0deg, @m-grey12-hover 0%, @m-grey13-hover 100%) !important;
-        color: @m-white0-hover;
-    }
-}
-.ml10 {
-    margin-left: 10px;
-}
-.ant-form.dialogForm .ant-row.ant-form-item {
-    margin-bottom: 14px;
-}
-.mt20 {
-    margin-top: 20px;
-}
-.mt-10 {
-    margin-top: -10px;
-}
-.ant-input-suffix {
-    position: absolute;
-    right: -25px;
-}
-.minusBtn,
-.plusBtn {
-    width: 15px;
-    height: 32px;
-    line-height: 32px;
-    font-size: 15px;
-    color: @m-blue15;
-    cursor: pointer;
-}
-.minusBtn {
-    position: absolute;
-    top: -6px;
-    left: 14px;
-    z-index: 1;
-}
-.plusBtn {
-    position: absolute;
-    top: -6px;
-    right: 14px;
-    z-index: 1;
-}
-.stepper {
-    padding-left: 30px;
-    padding-right: 30px;
-    text-align: center;
-    color: @m-yellow1;
-    font-size: 16px;
-}
-.ant-slider.formSlider {
-    width: 260px !important;
-    margin-left: 70px;
-    .ant-slider-rail {
-        margin-right: 0;
-        padding-right: 0;
-        height: 3px !important;
-        border-radius: 2px !important;
-        background-color: @m-blue14;
-    }
-    .ant-slider-track {
-        height: 3px;
-        background-color: @m-blue0;
-    }
-    .ant-slider-step {
-        height: 3px;
-    }
-    .ant-progress-text {
-        display: none;
-    }
-}
+@import './index.less';
 </style>

+ 76 - 24
src/views/market/futures/index.vue

@@ -1,13 +1,7 @@
 <template>
   <!--期货-->
   <div class="topTableHeight">
-    <a-table :columns="getColumnsList()"
-             :class="['srcollYTable', isBottom ? 'condSecondTabTable' : 'condSecondTabTableNoBottom', tableList.length ? 'noPlaceHolder' : 'hasPlaceHolder']"
-             :scroll="{ x: '100%', y: isBottom ? 'calc(100vh- 443px)' : 'calc(100vh - 196px)' }"
-             :pagination="false"
-             :loading="loading"
-             rowKey="key"
-             :data-source="tableList">
+    <a-table :columns="getColumnsList()" :class="['srcollYTable', isBottom ? 'condSecondTabTable' : 'condSecondTabTableNoBottom', tableList.length ? 'noPlaceHolder' : 'hasPlaceHolder']" :scroll="{ x: '100%', y: isBottom ? 'calc(100vh- 443px)' : 'calc(100vh - 196px)' }" :pagination="false" :loading="loading" :customRow="Rowclick" rowKey="key" :data-source="tableList">
       <template #totalturnover="{ text }">
         <span>{{changeUnit(text)}}</span>
       </template>
@@ -47,17 +41,10 @@
         <span :class="handleQuotePriceColor(text, record.presettle)">{{text}}</span>
       </template>
     </a-table>
-    <ThridMenu :list="tabList"
-               :selectedKey="index"
-               @selectMenu="changeTab" />
+    <ThridMenu :list="tabList" :selectedKey="index" @selectMenu="changeTab" />
     <!-- 右键 -->
-    <contextMenu :contextMenu="contextMenu"
-                 @cancel="closeContext"
-                 :list="buttons"></contextMenu>
-    <component :is="componentId"
-               v-if="componentId"
-               :selectedRow="selectedRow"
-               @cancel="closeComponent"></component>
+    <contextMenu :contextMenu="contextMenu" @cancel="closeContext" :list="buttons"></contextMenu>
+    <component :is="componentId" v-if="componentId" :selectedRow="selectedRow" @cancel="closeComponent"></component>
   </div>
 </template>
 
@@ -68,11 +55,18 @@ import { getShowBottomValue } from '@/common/config/constrolBottom';
 import { handleModalComponent } from '@/common/setup/asyncComponent';
 import { handleQuotePriceColor, handleSubcriteOnDemandQuote, quoteAmplitude, quoteAmplituOfVibration, quoteChange } from '@/common/setup/table/tableQuote';
 import { QueryQuoteDayRsp } from '@/services/go/quote/interface';
-import { ref } from 'vue';
+import { ref, reactive, Ref, toRefs } from 'vue';
 import { getColumnsList, useExternalexchange } from './setup';
 import { getTableButton } from '@/common/setup/table/button';
 import { contextMenu, defineAsyncComponent, defineComponent } from '@/common/export/commonTable';
 import { handleContextMenu } from '@/common/components/contextMenu/setup';
+import { TableEventCB } from '@/common/setup/table/interface';
+import { getTableEvent } from '@/common/export/table';
+import { ContextMenuTemp } from '@/common/components/contextMenu/interface';
+import { BtnListType } from '@/common/components/btnList/interface';
+import APP from '@/services';
+import { Goods } from '@/services/go/ermcp/goodsInfo/interface';
+import { getQuoteDayInfoByCode } from '@/services/bus/goods';
 
 export default defineComponent({
     name: 'spot_trade_order_transaction_swap',
@@ -82,21 +76,75 @@ export default defineComponent({
         trade: defineAsyncComponent(() => import('./compoments/futures-trade/index.vue')),
     },
     setup() {
+        interface Quote {
+            goodscode: string;
+            goodsname: string;
+            decimalplace: number;
+            last?: Ref;
+            presettle?: Ref;
+        }
+
+        const goodsList = APP.get('Goods') as Goods[];
+        const tableList = reactive<Quote[]>([]);
+        const quoteList = ref<QueryQuoteDayRsp[]>([]);
+
+        goodsList.forEach((el) => {
+            const quote = getQuoteDayInfoByCode(el.goodscode);
+            if (quote) {
+                quoteList.value.push(quote);
+            }
+            tableList.push({
+                goodscode: el.goodscode,
+                goodsname: el.goodsname,
+                decimalplace: el.decimalplace,
+            });
+        });
+
         const isBottom = getShowBottomValue();
-        const selectedRow = ref<QueryQuoteDayRsp>();
         const buttons = getTableButton();
         console.log('buttons', buttons);
-        const { index, loading, tabList, tableList, hanldeQuoteData } = useExternalexchange();
+        const { index, loading, tabList, hanldeQuoteData } = useExternalexchange();
         // 行情按需订阅
-        let stopSubcribe = handleSubcriteOnDemandQuote<QueryQuoteDayRsp>(tableList);
+        let stopSubcribe = handleSubcriteOnDemandQuote<QueryQuoteDayRsp>(quoteList);
         function changeTab(index: number, current: TabList) {
             hanldeQuoteData(index);
             console.log(index, current);
             // 停止上次订阅
             stopSubcribe();
             // 重新发起订阅
-            stopSubcribe = handleSubcriteOnDemandQuote<QueryQuoteDayRsp>(tableList);
+            stopSubcribe = handleSubcriteOnDemandQuote<QueryQuoteDayRsp>(quoteList);
         }
+
+        quoteList.value.forEach((item) => {
+            const refs = toRefs(item);
+            const index = tableList.findIndex((e) => e.goodscode === item.goodscode);
+            if (index > -1) {
+                tableList[index].last = refs.last;
+                tableList[index].presettle = refs.presettle;
+            }
+        });
+
+        // 右键逻辑
+        const { contextMenu, closeContext: closeContextAction } = handleContextMenu();
+        // 右键回调函数
+        const eventsCB: TableEventCB = {
+            contextmenuCB: (record: QueryQuoteDayRsp, value: ContextMenuTemp) => {
+                // 控制打开右键
+                contextMenu.value = value;
+            },
+        };
+        // 表格事件
+        const { selectedRow, Rowclick } = getTableEvent<QueryQuoteDayRsp>(eventsCB);
+        // 控制异步组件
+        const { componentId, closeComponent, openComponent } = handleModalComponent(() => {}, selectedRow);
+        // 关闭右键
+        function closeContext(value: BtnListType | null) {
+            // 打开对应的弹窗组件
+            if (value) openComponent(value, selectedRow.value);
+            // 关闭右键
+            closeContextAction();
+        }
+
         return {
             index,
             loading,
@@ -110,8 +158,12 @@ export default defineComponent({
             quoteAmplituOfVibration,
             getColumnsList,
             buttons,
-            ...handleModalComponent(() => {}, selectedRow),
-            ...handleContextMenu(),
+            contextMenu,
+            closeContext,
+            Rowclick,
+            componentId,
+            closeComponent,
+            selectedRow,
         };
     },
 });

+ 127 - 0
src/views/market/futures/setup.ts

@@ -90,6 +90,133 @@ export const useExternalexchange = () => {
             const quote = getQuoteDayInfoByCode(el.goodscode);
             if (quote) {
                 tableList.value.push(quote)
+            } else {
+                tableList.value.push({
+                    ask: 0,
+                    ask1number: 0,
+                    ask2: 0,
+                    ask3: 0,
+                    ask4: 0,
+                    ask5: 0,
+                    ask6: 0,
+                    ask7: 0,
+                    ask8: 0,
+                    ask9: 0,
+                    askorderid: 0,
+                    askorderid2: 0,
+                    askorderid3: 0,
+                    askorderid4: 0,
+                    askorderid5: 0,
+                    askordervolume: 0,
+                    askordervolume1number: 0,
+                    askordervolume2: 0,
+                    askordervolume3: 0,
+                    askordervolume4: 0,
+                    askordervolume5: 0,
+                    askordervolume6: 0,
+                    askordervolume7: 0,
+                    askordervolume8: 0,
+                    askordervolume9: 0,
+                    askqueueinfo: '',
+                    askvolume: 0,
+                    askvolume1number: 0,
+                    askvolume2: 0,
+                    askvolume3: 0,
+                    askvolume4: 0,
+                    askvolume5: 0,
+                    askvolume6: 0,
+                    askvolume7: 0,
+                    askvolume8: 0,
+                    askvolume9: 0,
+                    averageprice: 0,
+                    bid: 0,
+                    bid1number: 0,
+                    bid2: 0,
+                    bid3: 0,
+                    bid4: 0,
+                    bid5: 0,
+                    bid6: 0,
+                    bid7: 0,
+                    bid8: 0,
+                    bid9: 0,
+                    bidorderid: 0,
+                    bidorderid2: 0,
+                    bidorderid3: 0,
+                    bidorderid4: 0,
+                    bidorderid5: 0,
+                    bidordervolume: 0,
+                    bidordervolume1number: 0,
+                    bidordervolume2: 0,
+                    bidordervolume3: 0,
+                    bidordervolume4: 0,
+                    bidordervolume5: 0,
+                    bidordervolume6: 0,
+                    bidordervolume7: 0,
+                    bidordervolume8: 0,
+                    bidordervolume9: 0,
+                    bidqueueinfo: '',
+                    bidvolume: 0,
+                    bidvolume1number: 0,
+                    bidvolume2: 0,
+                    bidvolume3: 0,
+                    bidvolume4: 0,
+                    bidvolume5: 0,
+                    bidvolume6: 0,
+                    bidvolume7: 0,
+                    bidvolume8: 0,
+                    bidvolume9: 0,
+                    calloptionpremiums: 0,
+                    calloptionpremiums2: 0,
+                    calloptionpremiums3: 0,
+                    calloptionpremiums4: 0,
+                    calloptionpremiums5: 0,
+                    cleartime: 0,
+                    exchangecode: 0,
+                    exchangedate: 0,
+                    goodscode: '',
+                    refgoodscode: '',
+                    grepmarketprice: 0,
+                    highest: 0,
+                    holdincrement: 0,
+                    holdvolume: 0,
+                    iep: 0,
+                    iev: 0,
+                    inventory: 0,
+                    iscleared: 0,
+                    issettled: 0,
+                    last: 0,
+                    lastlot: 0,
+                    lasttime: '',
+                    lastturnover: 0,
+                    lastvolume: 0,
+                    limitdown: 0,
+                    limitup: 0,
+                    lowest: 0,
+                    nontotalholdervolume: 0,
+                    nontotallot: 0,
+                    nontotalturnover: 0,
+                    nontotalvolume: 0,
+                    opened: 0,
+                    opentime: '',
+                    orderid: 0,
+                    preclose: 0,
+                    preholdvolume: 0,
+                    presettle: 0,
+                    publictradetype: '',
+                    putoptionpremiums: 0,
+                    putoptionpremiums2: 0,
+                    putoptionpremiums3: 0,
+                    putoptionpremiums4: 0,
+                    putoptionpremiums5: 0,
+                    settle: 0,
+                    strikeprice: 0,
+                    totalaskvolume: 0,
+                    totalbidvolume: 0,
+                    totallot: 0,
+                    totalturnover: 0,
+                    totalvolume: 0,
+                    utclasttime: '',
+                })
             }
         })
     }

+ 5 - 21
src/views/report/sum_pl_report/list/sum_pl_report/index.vue

@@ -1,16 +1,8 @@
 <template>
   <!-- 汇总损益报表 -->
-  <div class="table-detail-container table-height"
-       :loading="loading">
+  <div class="table-detail-container table-height" :loading="loading">
     <Filter @update="search"></Filter>
-    <a-table :columns="columns"
-             class="srcollYTable"
-             :scroll="{ x: '100%', y: 'calc(100vh - 163px)' }"
-             :pagination="false"
-             :expandedRowKeys="expandedRowKeys"
-             :customRow="customRow"
-             rowKey="key"
-             :data-source="tableList">
+    <a-table :columns="columns" class="srcollYTable" :scroll="{ x: '100%', y: 'calc(100vh - 163px)' }" :pagination="false" :expandedRowKeys="expandedRowKeys" :customRow="customRow" rowKey="key" :data-source="tableList">
       <!-- 出现浮点失真  强行处理-->
       <template #spotactualpl="{ record }">
         <span>{{ record.spotactualpl.toFixed(2) }}</span>
@@ -29,16 +21,8 @@
       </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)' }">
+    <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)' }">
         <!-- 出现浮点失真  强行处理 * 2-->
         <template #spotactualpl="{ record }">
           <span>{{ record.spotactualpl.toFixed(2) }}</span>
@@ -87,7 +71,7 @@ export default defineComponent({
         // 周期类型
         const cycletype = ref(0);
         // 表格列表数据
-        const { loading, tableList, queryTable } = queryTableList<Ermcp3ArealSumPL>();
+        const { loading, tableList, queryTable } = queryTableList<Ermcp3ArealSumPL>(true, 2);
         // 获取列表数据
         const queryTableAction = () => {
             const { getInitTime, getInitType } = handleInitTypeAndTime();