Просмотр исходного кода

Merge remote-tracking branch 'origin/master'

yu jie 4 лет назад
Родитель
Сommit
0d2ac5d577
28 измененных файлов с 690 добавлено и 459 удалено
  1. 30 2
      src/assets/styles/mixin.less
  2. 24 0
      src/services/bus/goods.ts
  3. 9 3
      src/services/go/useInfo/index.ts
  4. 9 5
      src/views/information/account_info/compoments/add-child-traders/index.vue
  5. 87 66
      src/views/information/account_info/compoments/add-managers-permission/index.vue
  6. 0 1
      src/views/information/account_info/compoments/detail-futures/index.vue
  7. 13 8
      src/views/information/account_info/compoments/modify-child-traders/index.vue
  8. 5 4
      src/views/information/account_info/list/account_info_futures/index.vue
  9. 0 2
      src/views/information/account_info/list/setup.ts
  10. 1 2
      src/views/information/custom/compoments/filterTable/index.vue
  11. 4 4
      src/views/information/spot-contract/components/add/index.vue
  12. 24 8
      src/views/manage/finance-review/components/invoiceAudit/index.vue
  13. 4 3
      src/views/manage/finance-review/components/invoiceCancel/index.vue
  14. 7 8
      src/views/manage/finance-review/components/invoiceDetail/index.vue
  15. 90 91
      src/views/manage/finance-review/list/invoice/index.vue
  16. 33 26
      src/views/market/spot_trade/components/buy-sell-market/components/buy/index.vue
  17. 32 26
      src/views/market/spot_trade/components/buy-sell-market/components/sell/index.vue
  18. 3 18
      src/views/market/spot_trade/components/buy-sell-market/index.vue
  19. 135 133
      src/views/market/spot_trade/components/post_buying/index.vue
  20. 76 15
      src/views/order/spot_warran/components/spot_warrant_spot_details/components/listing/index.vue
  21. 64 14
      src/views/order/spot_warran/components/spot_warrant_spot_details/components/listing/setup.ts
  22. 11 9
      src/views/report/exposure-report/list/exposure_report/index.vue
  23. 4 2
      src/views/report/finance-report/list/finance_report_finance/index.vue
  24. 8 5
      src/views/report/future_report/list/future_report/index.vue
  25. 4 1
      src/views/report/inventory-report/list/category/index.vue
  26. 4 1
      src/views/report/inventory-report/list/warehouse/index.vue
  27. 4 1
      src/views/report/spot-report/list/spot_report/index.vue
  28. 5 1
      src/views/report/sum_pl_report/list/sum_pl_report/index.vue

+ 30 - 2
src/assets/styles/mixin.less

@@ -1846,7 +1846,6 @@ input:-internal-autofill-selected {
 // 买卖大厅表格
 .buyHallTable,.sellHallTable {
     .ant-table-fixed-header > .ant-table-content > .ant-table-scroll > .ant-table-body {
-        min-height: calc(100vh - 470px);
         background: transparent;
     }
     .ant-table {
@@ -1876,7 +1875,6 @@ input:-internal-autofill-selected {
             }
         }
         .ant-table-tbody {
-            min-height: calc(100vh - 470px);
             background: @m-red2;
             tr {
                 td {
@@ -1950,6 +1948,36 @@ input:-internal-autofill-selected {
 .sellHallTable .ant-table .ant-table-tbody tr td:not(:first-child),.buyHallTable .ant-table .ant-table-tbody tr td:not(:first-child) {
     background-color: @m-black2;
 }
+.buyHallTable,.sellHallTable {
+    .ant-table-fixed-header > .ant-table-content > .ant-table-scroll > .ant-table-body {
+        min-height: calc(100vh - 470px);
+    }
+    .ant-table {
+        .ant-table-tbody {
+            min-height: calc(100vh - 470px);
+        }
+    }
+}
+.noDataTable {
+    .ant-table {
+        .ant-table-header {
+            height: 35px;
+            margin-bottom: 0 !important;
+            overflow: hidden !important;
+        }
+    }
+}
+// 没有底部时买卖大厅表格高度
+.buyHallTableHigh,.sellHallTableHigh {
+    .ant-table-fixed-header > .ant-table-content > .ant-table-scroll > .ant-table-body {
+        min-height: calc(100vh - 180px);
+    }
+    .ant-table {
+        .ant-table-tbody {
+            min-height: calc(100vh - 180px);
+        }
+    }
+}
 // 表单里面的内容
 .formBar {
     ::v-deep.formProgress {

+ 24 - 0
src/services/bus/goods.ts

@@ -24,6 +24,30 @@ export function getQuoteDayInfoByCode(goodsCode: string): QueryQuoteDayRsp | und
     return getAllQuoteDayInfo().find(e => e.goodscode === goodsCode)
 }
 
+// 通过goodcode 获取商品最新价
+export function getQuoteDayInfoByCodeFindPrice(goodsCode: string) {
+    const goods = getGoodsByCode(goodsCode);
+    let result: number | string = '--';
+    if (goods) {
+        const n = Math.pow(10, goods.decimalplace);
+        const quoteData = getQuoteDayInfoByCode(goodsCode);
+        // 期货合约取价顺序:现价->实时结算价->昨结算价
+        if (quoteData) {
+            if (quoteData.last) {
+                result = quoteData.last / n;
+            } else if (quoteData.settle) {
+                result = quoteData.settle / n;
+            } else if (quoteData.presettle) {
+                result = quoteData.presettle / n;
+            } else {
+                result = '--'
+            }
+        }
+        result = typeof result === 'number' ? Number(result.toFixed(goods?.decimalplace)) : result;
+    }
+    return result
+}
+
 // 获取全部商品组信息
 export function getAllGoodsGroups(): Goodsgroup[] {
     return APP.get('goodsgroups')

+ 9 - 3
src/services/go/useInfo/index.ts

@@ -1,8 +1,9 @@
 import APP from '@/services';
 import { getLongTypeLoginID } from '@/services/bus/login';
+import { getUsrId } from '@/services/bus/user';
 import { commonSearch_go } from '../index';
 import * as type from './interface';
-import {Ermcp3RootUserAccount} from "./interface";
+import { Ermcp3RootUserAccount } from "./interface";
 
 /**
  * 获取登录ID
@@ -50,6 +51,7 @@ export function LoginQuery(): Promise<type.LoginQueryRsp> {
         userInfo && APP.set('userInfo', userInfo);
         username && APP.set('username', username);
         console.log('LoginQuery', res);
+        QueryRootUserAccount()
         return res
     })
 }
@@ -67,8 +69,12 @@ export function QueryUserInfo(userID: number, isDecrypt?: boolean): Promise<type
  * 查询顶级用户信息
  * /Ermcp3/QueryRootUserAccount
  */
-export function QueryRootUserAccount(userid: number): Promise<Ermcp3RootUserAccount> {
-    return commonSearch_go('/Ermcp3/QueryRootUserAccount', { userid } ).catch((err) => {
+export function QueryRootUserAccount(): Promise<Ermcp3RootUserAccount> {
+    const userid = getUsrId()
+    return commonSearch_go('/Ermcp3/QueryRootUserAccount', { userid }).then(res => {
+        console.log('查询顶级用户信息', res)
+        return res
+    }).catch((err) => {
         throw new Error(`查询顶级用户信息: ${err}`);
     });
 }

+ 9 - 5
src/views/information/account_info/compoments/add-child-traders/index.vue

@@ -69,10 +69,11 @@
                               v-model:value="formState.logintaaccounts">
               <a-row>
                 <a-col :span="12"
-                       v-for="(item, index) in accountList"
+                       v-for="(item, index) in filerAccount()"
                        :key="index"
                        :class="[index > 1 ? 'mt10' : '']">
-                  <a-checkbox :value="item.accountid" v-if="item.tradestatus === 1">{{item.accountname}}/{{item.accountid}}
+                  <a-checkbox :value="item.accountid"
+                              v-if="item.tradestatus === 1">{{item.accountname}}/{{item.accountid}}
                   </a-checkbox>
                 </a-col>
               </a-row>
@@ -104,12 +105,11 @@ export default defineComponent({
             type: Object as PropType<ErmcpLoginUserEx>,
         },
         accountList: {
-            default: {},
-            type: Object as PropType<ErmcpTaAccount>,
+            default: [],
+            type: Array as PropType<ErmcpTaAccount[]>,
         },
     },
     setup(props, context) {
-      console.log('asddsdddddddsdaasdasddasasdasdsdadsdasdassdasdasad',props.accountList)
         const loading = ref<boolean>(false);
         // 控制关闭弹窗
         const { visible, cancel } = closeModal('account_info_trade_child_btn_add');
@@ -118,6 +118,9 @@ export default defineComponent({
             formRef.value.resetFields();
             cancel();
         }
+        function filerAccount() {
+            return props.accountList.filter((e) => e.relateduserid === props.selectedData.roleid);
+        }
         function submit() {
             validateAction<BusinessFormState>(formRef, formState).then((res) => {
                 const reqParam: LoginaccountOperateReq = {
@@ -149,6 +152,7 @@ export default defineComponent({
             close,
             submit,
             loading,
+            filerAccount,
         };
     },
 });

+ 87 - 66
src/views/information/account_info/compoments/add-managers-permission/index.vue

@@ -1,71 +1,79 @@
 <template>
-    <!-- 新增角色 -->
-    <a-modal
-        class="commonModal add-roles"
-        title="新增角色"
-        v-model:visible="visible"
-        @cancel="cancel"
-        centered
-        :maskClosable="false"
-        width="100%"
-    >
-        <template #footer>
-            <a-button key="cancel" type="primary" :loading="loading" @click="cancel">取消</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-row :gutter="24">
-                <a-col :span="24">
-                    <a-form-item label="角色名称">
-                        <a-input
-                            class="dialogInput"
-                            style="width: 200px"
-                            v-model:value="name"
-                            placeholder="请输入角色名称"
-                        />
-                    </a-form-item>
-                </a-col>
-                <a-col :span="24">
-                    <a-form-item label="权限功能" name></a-form-item>
-                </a-col>
-                <a-col :span="24">
-                    <div class="powerTable">
-                        <!-- <a-checkbox-group class="commonCheckboxGroup"
+  <!-- 新增角色 -->
+  <a-modal class="commonModal add-roles"
+           title="新增角色"
+           v-model:visible="visible"
+           @cancel="cancel"
+           centered
+           :maskClosable="false"
+           width="100%">
+    <template #footer>
+      <a-button key="cancel"
+                type="primary"
+                :loading="loading"
+                @click="cancel">取消</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-row :gutter="24">
+        <a-col :span="24">
+          <a-form-item label="角色名称">
+            <a-input class="dialogInput"
+                     style="width: 200px"
+                     v-model:value="name"
+                     placeholder="请输入角色名称" />
+          </a-form-item>
+        </a-col>
+        <a-col :span="24">
+          <a-form-item label="权限功能"
+                       name></a-form-item>
+        </a-col>
+        <a-col :span="24">
+          <div class="powerTable">
+            <!-- <a-checkbox-group class="commonCheckboxGroup"
 
                         >-->
-                        <div class="powerRow" v-for="(item, i) in tableList" :key="i + '0'">
-                            <div class="powerLeft">
-                                <a-checkbox
-                                    v-model:checked="item.Menu.ishadrole"
-                                >{{item.Menu.resourcename}}</a-checkbox>
-                            </div>
-                            <div class="powerRight">
-                                <div class="line" v-for="(sub, j) in item.SubMenu" :key="j + '1'">
-                                    <div class="left">
-                                        <a-checkbox
-                                            v-model:checked="sub.Menu.ishadrole"
-                                            @change="secondChange(item, sub)"
-                                            :value="sub.Menu.resourcecode"
-                                        >{{sub.Menu.resourcename}}</a-checkbox>
-                                    </div>
-                                    <div class="right">
-                                        <a-checkbox
-                                            v-for="(subNext, l) in sub.SubMenu"
-                                            :key="l + '3'"
-                                            v-model:checked="subNext.Menu.ishadrole"
-                                            @change="thirdChange(item, sub, subNext)"
-                                            :value="subNext.Menu.resourcecode"
-                                        >{{subNext.Menu.resourcename}}</a-checkbox>
-                                    </div>
-                                </div>
-                            </div>
-                        </div>
-                        <!-- </a-checkbox-group> -->
-                    </div>
-                </a-col>
-            </a-row>
-        </a-form>
-    </a-modal>
+            <div class="powerRow"
+                 v-for="(item, i) in tableList"
+                 :key="i + '0'">
+              <div class="powerLeft">
+                <a-checkbox @change="firstChaneg(item)"
+                            v-model:checked="item.Menu.ishadrole">{{item.Menu.resourcename}}
+                </a-checkbox>
+              </div>
+              <div class="powerRight">
+                <div class="line"
+                     v-for="(sub, j) in item.SubMenu"
+                     :key="j + '1'">
+                  <div class="left">
+                    <a-checkbox v-model:checked="sub.Menu.ishadrole"
+                                @change="secondChange(item, sub)"
+                                :value="sub.Menu.resourcecode">{{sub.Menu.resourcename}}
+                    </a-checkbox>
+                  </div>
+                  <div class="right">
+                    <a-checkbox v-for="(subNext, l) in sub.SubMenu"
+                                :key="l + '3'"
+                                v-model:checked="subNext.Menu.ishadrole"
+                                @change="thirdChange(item, sub, subNext)"
+                                :value="subNext.Menu.resourcecode">{{subNext.Menu.resourcename}}
+                    </a-checkbox>
+                  </div>
+                </div>
+              </div>
+            </div>
+            <!-- </a-checkbox-group> -->
+          </div>
+        </a-col>
+      </a-row>
+    </a-form>
+  </a-modal>
 </template>
 
 <script lang="ts">
@@ -143,7 +151,19 @@ export default defineComponent({
                 context.emit('refresh');
             });
         }
-
+        function firstChaneg(value: ErmcpRoleMenuEx) {
+            if (value.Menu.ishadrole) {
+                value.SubMenu.forEach((el) => {
+                    el.Menu.ishadrole = true;
+                    el.SubMenu.forEach((item) => (item.Menu.ishadrole = true));
+                });
+            } else {
+                value.SubMenu.forEach((el) => {
+                    el.Menu.ishadrole = false;
+                    el.SubMenu.forEach((item) => (item.Menu.ishadrole = false));
+                });
+            }
+        }
         function secondChange(item: ErmcpRoleMenuEx, sub: ErmcpRoleMenuEx) {
             if (sub.Menu.ishadrole) {
                 item.Menu.ishadrole = true;
@@ -169,6 +189,7 @@ export default defineComponent({
             thirdChange,
             loading,
             tableList,
+            firstChaneg,
         };
     },
 });

+ 0 - 1
src/views/information/account_info/compoments/detail-futures/index.vue

@@ -4,7 +4,6 @@
            title="账号详情"
            v-model:visible="visible"
            centered
-           maskClosable="false"
            @cancel="cancel"
            width="890px">
     <template #footer>

+ 13 - 8
src/views/information/account_info/compoments/modify-child-traders/index.vue

@@ -60,10 +60,11 @@
                               v-model:value="formState.logintaaccounts">
               <a-row>
                 <a-col :span="12"
-                       v-for="(item, index) in accountList"
+                       v-for="(item, index) in filerAccount()"
                        :key="index"
                        :class="[index > 1 ? 'mt10' : '']">
-                  <a-checkbox :value="item.accountid">{{item.accountname}}/{{item.accountid}}</a-checkbox>
+                  <a-checkbox :value="item.accountid">{{item.accountname}}/{{item.accountid}}
+                  </a-checkbox>
                 </a-col>
               </a-row>
             </a-checkbox-group>
@@ -78,10 +79,10 @@
 import { closeModal } from '@/common/setup/modal/index';
 import { defineComponent, ref, PropType, watchEffect } from 'vue';
 import { ErmcpLoginUser, ErmcpLoginUserEx, ErmcpTaAccount } from '@/services/go/ermcp/account/interface';
-import {LoginaccountOperateReq, LoginTaaccount} from '@/services/proto/accountinfo/interface';
+import { LoginaccountOperateReq, LoginTaaccount } from '@/services/proto/accountinfo/interface';
 import { requestResultLoadingAndInfo } from '@/common/methods/request/resultInfo';
 import { loginAccountOperate } from '@/services/proto/accountinfo';
-import { handleBusinessForm, } from '../setup';
+import { handleBusinessForm } from '../setup';
 import { mergeTwoObj } from '@/utils/objHandle';
 import { validateAction } from '@/common/setup/form';
 import { BusinessFormState } from '../interface';
@@ -89,7 +90,7 @@ import { BusinessFormState } from '../interface';
 export default defineComponent({
     name: 'account_info_trade_btn_child_modify',
     props: {
-      firstBtnData: {
+        firstBtnData: {
             type: Object as PropType<ErmcpLoginUserEx>,
             default: {},
         },
@@ -111,6 +112,9 @@ export default defineComponent({
         const { visible, cancel } = closeModal('account_info_trade_btn_child_modify');
         const loading = ref<boolean>(false);
         const { rules, formState, formRef } = handleBusinessForm();
+        function filerAccount() {
+            return props.accountList.filter((e) => e.relateduserid === props.firstBtnData.roleid);
+        }
         watchEffect(() => {
             if (visible.value && props.selectedData) {
                 const { selectedData } = props;
@@ -130,11 +134,11 @@ export default defineComponent({
                     roleids: [24], // uint64 账号角色
                     userid: +props.selectedData.userid,
                     loginid: +props.selectedData.loginid,
-                    logintaaccounts: res.logintaaccounts.map(res => {
+                    logintaaccounts: res.logintaaccounts.map((res) => {
                         const taAccount: LoginTaaccount = {
-                            accountid: res
+                            accountid: res,
                         };
-                        return taAccount
+                        return taAccount;
                     }), // LoginTaaccount 期货账户(勾选交易员必填)
                 };
                 requestResultLoadingAndInfo(loginAccountOperate, reqParam, loading, ['修改交易员成功', '修改交易员失败:']).then(() => {
@@ -151,6 +155,7 @@ export default defineComponent({
             cancel,
             submit,
             loading,
+            filerAccount,
         };
     },
 });

+ 5 - 4
src/views/information/account_info/list/account_info_futures/index.vue

@@ -42,13 +42,14 @@
           </a-row>
         </template>
         <a-collapse class="busyCollapse"
-                    v-for="(sub, i) in item.subacclist"
-                    :key="i + '11'"
+                    accordion
                     :bordered="false">
-          <a-collapse-panel :show-arrow="false">
+          <a-collapse-panel :show-arrow="false"
+                            v-for="(sub, i) in item.subacclist"
+                            :key="i + '11'">
             <template #header>
               <a-row class="contRow">
-                <a-col :span="12">{{sub.accountname}} {{sub.accountid}}</a-col>
+                <a-col :span="12">{{sub.accountname}}-{{sub.accountid}}</a-col>
                 <a-col :span="12">{{getTaAccountStatus(sub.tradestatus)}}</a-col>
               </a-row>
             </template>

+ 0 - 2
src/views/information/account_info/list/setup.ts

@@ -146,8 +146,6 @@ export function handleBtnClickData() {
     const secondBtnData = ref<any>(null)
     const thirdBtnDat = ref<any>(null)
     function btnClick(...rest: any[]) {
-        console.log(rest);
-
         firstBtnData.value = rest[0];
         secondBtnData.value = rest[1];
         thirdBtnDat.value = rest[0];

+ 1 - 2
src/views/information/custom/compoments/filterTable/index.vue

@@ -31,7 +31,7 @@ export default defineComponent({
         const input: InputList[] = [
             { value: '', placeholder: '模糊搜索客户简称', key: 'nickname' },
             { value: '', placeholder: '模糊搜索客户名称', key: 'name' },
-            { value: '', placeholder: '模糊搜索手机号码', key: 'phone' },
+            { value: '', placeholder: '模糊搜索手机号码', key: 'mobile' },
         ];
         const { selectList, inputList, fixedBtnList } = handleFilter(select, input, context);
         return {
@@ -44,5 +44,4 @@ export default defineComponent({
 </script>
 
 <style lang="less">
-
 </style>;

+ 4 - 4
src/views/information/spot-contract/components/add/index.vue

@@ -88,14 +88,14 @@
             </a-col>
             <a-col :span="12">
               <a-form-item label="销售方">
-                <span class="white">{{getAreaUserName()}}</span>
+                <span class="white">{{getUserName()}}</span>
               </a-form-item>
             </a-col>
           </template>
           <template v-else>
             <a-col :span="12">
               <a-form-item label="采购方">
-                <span class="white">{{getAreaUserName()}}</span>
+                <span class="white">{{getUserName()}}</span>
               </a-form-item>
             </a-col>
             <a-col :span="12">
@@ -426,7 +426,7 @@
 <script lang="ts">
 import { defineComponent, PropType, ref } from 'vue';
 import { addContractReq } from './setup';
-import {getAreaUserName, getUserName, getUsrId} from '@/services/bus/user';
+import { getAreaUserName, getUserName, getUsrId } from '@/services/bus/user';
 import { getGoodsList } from '@/services/bus/goods';
 import { Goods } from '@/services/go/ermcp/goodsInfo/interface';
 import { FormState } from '../interface';
@@ -553,7 +553,7 @@ export default defineComponent({
             payCurrencyUnit,
             parCurrencyChange,
             numberUnit,
-            getAreaUserName,
+            getUserName,
             deliveryDate,
             priceDate,
             disabledDate,

+ 24 - 8
src/views/manage/finance-review/components/invoiceAudit/index.vue

@@ -71,7 +71,11 @@
         <a-row :gutter="24">
           <a-col :span="12">
             <a-form-item label="发票附件">
-              <span class="white">{{ formatValue(selectedRow.invoiceamount) }}</span>
+              <span class="white"
+                    v-if="selectedRow.attachurl"></span>
+              <span class="blue"
+                    v-else
+                    @click="previewImg(selectedRow.attachurl )">查看</span>
             </a-form-item>
           </a-col>
           <a-col :span="12">
@@ -90,6 +94,13 @@
       </fieldset>
     </a-form>
   </a-modal>
+  <a-modal :visible="previewVisible"
+           :footer="null"
+           @cancel="cancelImg">
+    <img alt="预览附件"
+         style="width: 100%"
+         :src="previewImage" />
+  </a-modal>
 </template>
 
 <script lang="ts">
@@ -108,10 +119,12 @@ import Long from 'long';
 import { somePriceControl } from '@/views/manage/business-review/components/setup';
 import { financeControl } from '@/views/manage/finance-review/components/setup';
 import { isShowContractCheck } from '@/views/manage/inventory-review/setup';
+import { handlePreviewImg } from '@/common/setup/upload';
+import { _closeModal } from '@/common/setup/modal/modal';
 
 export default defineComponent({
     name: 'finance_review_invoice_audit',
-    components: {},
+    emits: ['cancel', 'update'],
     props: {
         selectedRow: {
             type: Object as PropType<QryBussinessFpRsp>,
@@ -119,10 +132,11 @@ export default defineComponent({
         },
     },
     setup(props, context) {
-        const { visible, cancel } = closeModal('finance_review_invoice_audit');
+        const { visible, cancel } = _closeModal(context);
         const loading = ref<boolean>(false);
         const maskClosableFlag = ref<boolean>(false);
-
+        // 预览附件
+        const { previewVisible, previewImage, cancelImg, previewImg } = handlePreviewImg();
         function submit() {
             loading.value = true;
             setTimeout(() => {
@@ -144,8 +158,7 @@ export default defineComponent({
                     };
                     financeControl(param, loading)
                         .then((res) => {
-                            context.emit('refresh');
-                            cancel();
+                            cancel(true);
                         })
                         .catch((err) => {});
                 },
@@ -166,8 +179,7 @@ export default defineComponent({
                     };
                     financeControl(param, loading)
                         .then((res) => {
-                            context.emit('refresh');
-                            cancel();
+                            cancel(true);
                         })
                         .catch((err) => {});
                 },
@@ -188,6 +200,10 @@ export default defineComponent({
             pass,
             refuse,
             isShowContractCheck,
+            previewVisible,
+            previewImage,
+            cancelImg,
+            previewImg,
         };
     },
 });

+ 4 - 3
src/views/manage/finance-review/components/invoiceCancel/index.vue

@@ -101,9 +101,11 @@ import { ContractOperateApplyReq } from '@/services/proto/contract/interface';
 import Long from 'long';
 import { somePriceControl } from '@/views/manage/business-review/components/setup';
 import { financeControl } from '@/views/manage/finance-review/components/setup';
+import { _closeModal } from '@/common/setup/modal/modal';
 
 export default defineComponent({
     name: 'finance_review_invoice_cancel',
+    emits: ['cancel', 'update'],
     components: {},
     props: {
         selectedRow: {
@@ -112,7 +114,7 @@ export default defineComponent({
         },
     },
     setup(props, context) {
-        const { visible, cancel } = closeModal('finance_review_invoice_cancel');
+        const { visible, cancel } = _closeModal(context);
         const loading = ref<boolean>(false);
         const maskClosableFlag = ref<boolean>(false);
 
@@ -130,8 +132,7 @@ export default defineComponent({
                     };
                     financeControl(param, loading)
                         .then((res) => {
-                            context.emit('refresh');
-                            cancel();
+                            cancel(true);
                         })
                         .catch((err) => {});
                 },

+ 7 - 8
src/views/manage/finance-review/components/invoiceDetail/index.vue

@@ -96,19 +96,19 @@
 </template>
 
 <script lang="ts">
-import { defineComponent, PropType, reactive, ref, watchEffect } from 'vue';
+import { defineComponent, PropType, ref } from 'vue';
 import { closeModal } from '@/common/setup/modal/index';
-import { QueryCustomInfoType } from '@/services/go/ermcp/customInfo/interface';
-import { mergeObj } from '@/utils/objHandle';
 import { getStatusName } from '@/common/constants/enumsName';
-import { formatValue, formatTime } from '@/common/methods';
+import { formatValue } from '@/common/methods';
 import { QryBussinessFpRsp } from '@/services/go/ermcp/finance-review/interface';
 import { invoiceStatusName } from '@/views/manage/finance-review/setup';
 import { getContractTypeName, getPriceTypeName } from '@/common/constants/enumsName';
 import { handlePreviewImg } from '@/common/setup/upload';
+import { _closeModal } from '@/common/setup/modal/modal';
 
 export default defineComponent({
     name: 'finance_review_invoice_detail',
+    emits: ['cancel', 'update'],
     components: {},
     props: {
         selectedRow: {
@@ -117,14 +117,13 @@ export default defineComponent({
         },
     },
     setup(props, context) {
-        const { visible, cancel } = closeModal('detail');
+        const { visible, cancel } = _closeModal(context);
         const loading = ref<boolean>(false);
         const maskClosableFlag = ref<boolean>(false);
         // 预览附件
-        const { previewVisible, previewImage, cancelImg, previewImg, getImgName } = handlePreviewImg();
+        const { previewVisible, previewImage, cancelImg, previewImg } = handlePreviewImg();
         function submit() {
-            context.emit('refresh');
-            cancel();
+            cancel(true);
         }
 
         return {

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

@@ -3,56 +3,56 @@
   <div class="finance_review_invoice"
        :loading="loading">
     <Filter @search="updateColumn">
-      <BtnList :btnList="commonBtn" />
     </Filter>
-    <contextMenu :contextMenuList="forDataBtn">
-      <a-table :columns="columns"
-               class="topTable"
-               :pagination="false"
-               :expandedRowKeys="expandedRowKeys"
-               :customRow="Rowclick"
-               rowKey="key"
-               :data-source="tableList">
-        <!-- 额外的展开行 -->
-        <template #expandedRowRender="{ record }">
-          <BtnList :btnList="record.btnList" />
-        </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>
+    <a-table :columns="columns"
+             class="topTable"
+             :pagination="false"
+             :expandedRowKeys="expandedRowKeys"
+             :customRow="Rowclick"
+             rowKey="key"
+             :data-source="tableList">
+      <!-- 额外的展开行 -->
+      <!-- 额外的展开行 -->
+      <template #expandedRowRender="{ record }">
+        <BtnList :btnList="handlePermissionBtn(firstBtn, 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(firstBtn, selectedRow)">
     </contextMenu>
-    <!-- 点价记录详情 -->
-    <InvoiceDetail :selectedRow="selectedRow"
-                   @refresh="getTableData" />
-    <!-- 交收审核 -->
-    <InvoiceAudit :selectedRow="selectedRow"
-                  @refresh="getTableData" />
-    <!-- 撤销点价登记 -->
-    <InvoiceCancel :selectedRow="selectedRow"
-                   @refresh="getTableData" />
+    <component :is="componentId"
+               v-if="componentId"
+               :selectedRow="selectedRow"
+               @cancel="closeComponent"></component>
   </div>
 </template>
 
 <script lang="ts">
-import { defineComponent, initData, getTableColumns, getTableEvent, getBtnList, contextMenu, BtnList } from '@/common/export/table';
+import { BtnList, contextMenu, defineAsyncComponent, defineComponent, ModalEnum, handleComposeTable, ComposeTableParam } from '@/common/export/commonTable';
 
 import { InvoiceAudit, InvoiceCancel, InvoiceDetail, Filter } from '../../components';
 
@@ -60,6 +60,12 @@ import { queryTableList, QryBussinessFpRsp } from './setup';
 import { invoiceStatusName, operateApplyTypeName } from '@/views/manage/finance-review/setup';
 import { Column, ColumnType } from '@/common/setup/table';
 import { getContractTypeName, getApplyStatusName } from '@/common/constants/enumsName';
+import { EnumRouterName } from '@/common/constants/enumRouterName';
+import { BtnList as BtnListType } from '@/common/components/btnList/interface';
+
+const Detail = defineAsyncComponent(() => import('../../components/invoiceDetail/index.vue'));
+const Audit = defineAsyncComponent(() => import('../../components/invoiceAudit/index.vue'));
+const Cancel = defineAsyncComponent(() => import('../../components/invoiceCancel/index.vue'));
 
 export default defineComponent({
     name: 'finance_review_invoice',
@@ -67,68 +73,61 @@ export default defineComponent({
         contextMenu,
         Filter,
         BtnList,
-        InvoiceDetail,
-        InvoiceAudit,
-        InvoiceCancel,
+        [ModalEnum.detail]: Detail,
+        [ModalEnum.business_review_settlement_audit]: Audit,
+        [ModalEnum.business_review_settlement_cancel]: Cancel,
     },
     setup() {
-        // 表头数据
-        const { columns, registerColumn, updateColumn } = getTableColumns();
-        // 表格事件
-        const { expandedRowKeys, selectedRow, Rowclick } = getTableEvent<QryBussinessFpRsp>({});
-        // 表格操作按钮列表
-        const { commonBtn, forDataBtn } = getBtnList('finance_review_invoice', true);
         // 表格列表数据
         const { loading, tableList, queryTable } = queryTableList({});
-        function getTableData() {
-            // 获取列表数据
-            queryTable().then(() => {
-                tableList.value.forEach((el) => {
-                    if (el.applystatus === 1) {
-                        // 1:待审核
-                        Object.assign(el, { btnList: forDataBtn.value });
+
+        // 获取列表数据
+        const queryTableAction = () => queryTable();
+        const filtrFn = (e: Column, item: ColumnType, filtered: any) => {
+            if (e.columnfield === 'buyusernameOrsellusername') {
+                item.onFilter = (value: string, record: QryBussinessFpRsp) => {
+                    const { contracttype, buyusername, sellusername } = record;
+                    if (contracttype === 1) {
+                        // 采购
+                        return sellusername.includes(value);
                     } else {
-                        const item = forDataBtn.value.find((e) => e.lable === '详情');
-                        item && Object.assign(el, { btnList: [item] });
+                        return buyusername.includes(value);
                     }
-                });
-            });
-        }
-        initData(() => {
-            getTableData();
-            // 注册表头信息 过滤
-            registerColumn('table_pcweb_fincial_aduit_fp', ['contracttype', 'contractno', 'deliverygoodsname'], (e: Column, item: ColumnType, filtered: any) => {
-                if (e.columnfield === 'buyusernameOrsellusername') {
-                    item.onFilter = (value: string, record: QryBussinessFpRsp) => {
-                        const { contracttype, buyusername, sellusername } = record;
-                        if (contracttype === 1) {
-                            // 采购
-                            return sellusername.includes(value);
-                        } else {
-                            return buyusername.includes(value);
-                        }
-                    };
-                    item.filteredValue = filtered.buyusernameOrsellusername || null;
+                };
+                item.filteredValue = filtered.buyusernameOrsellusername || null;
+            }
+        };
+        // 表格通用逻辑
+        const param: ComposeTableParam = {
+            queryFn: queryTableAction,
+            menuType: EnumRouterName.finance_review_invoice,
+            tableName: 'table_pcweb_fincial_aduit_fp',
+            tableFilterKey: ['contracttype', 'contractno', 'deliverygoodsname'],
+            tableFilterCB: filtrFn,
+            isDetail: true,
+        };
+        function handlePermissionBtn(btnList: BtnListType[], item: QryBussinessFpRsp) {
+            if (item) {
+                const { applystatus } = item;
+                if (applystatus === 1) {
+                    return btnList;
+                } else {
+                    return btnList.filter((e) => e.code === 'detail');
                 }
-            });
-        });
+            } else {
+                return [];
+            }
+        }
 
         return {
-            columns,
-
-            expandedRowKeys,
-            selectedRow,
-            Rowclick,
-            commonBtn,
-            forDataBtn,
+            ...handleComposeTable<QryBussinessFpRsp>(param),
             loading,
             tableList,
-            updateColumn,
+            handlePermissionBtn,
             getContractTypeName,
             invoiceStatusName,
             getApplyStatusName,
             operateApplyTypeName,
-            getTableData,
         };
     },
 });

+ 33 - 26
src/views/market/spot_trade/components/buy-sell-market/components/buy/index.vue

@@ -1,30 +1,33 @@
 <template>
-  <!-- 买大厅 -->
-  <a-table :columns="handleColumn(columns)"
-           class="buyHallTable"
-           :scroll="{ x: '100%', y: 'calc(100vh- 470px)' }"
-           :pagination="false"
-           :loading="loading"
-           :expandedRowKeys="expandedRowKeys"
-           :customRow="Rowclick"
-           :expandIcon="expandIcon"
-           :expandIconAsCell="false"
-           rowKey="key"
-           :data-source="tableList">
-    <!-- 额外的展开行 -->
-    <template #expandedRowRender="{ record }">
-      <BtnList :btnList="btnList"
-               :record="record"
-               @click="openComponent" />
-    </template>
-  </a-table>
-  <component :is="componentId"
-             v-if="componentId"
-             :selectedRow="selectedRow"
-             :buyOrSell="BuyOrSell.buy"
-             :enumName="enumName"
-             :parantSelectedRow="parantSelectedRow"
-             @cancel="closeComponent"></component>
+    <!-- 买大厅 -->
+    <a-table
+        :columns="handleColumn(columns)"
+        :class="['buyHallTable', isBottom ? '' : 'buyHallTableHigh', tableList.length ? '' : 'noDataTable']"
+        :scroll="{ x: '100%', y: isBottom ? 'calc(100vh- 470px)' : 'calc(100vh - 180px)' }"
+        :pagination="false"
+        :loading="loading"
+        :expandedRowKeys="expandedRowKeys"
+        :customRow="Rowclick"
+        :expandIcon="expandIcon"
+        :expandIconAsCell="false"
+        rowKey="key"
+        :data-source="tableList"
+    >
+        <!-- ,  -->
+        <!-- 额外的展开行 -->
+        <template #expandedRowRender="{ record }">
+            <BtnList :btnList="btnList" :record="record" @click="openComponent" />
+        </template>
+    </a-table>
+    <component
+        :is="componentId"
+        v-if="componentId"
+        :selectedRow="selectedRow"
+        :buyOrSell="BuyOrSell.buy"
+        :enumName="enumName"
+        :parantSelectedRow="parantSelectedRow"
+        @cancel="closeComponent"
+    ></component>
 </template>
 
 <script lang="ts">
@@ -41,6 +44,7 @@ import { expandIcon } from '@/common/setup/table/clolumn';
 import { ColumnType } from '@/common/methods/table/interface';
 import { Moment } from 'moment';
 import moment from 'moment';
+import { getHasBottom } from '@/common/setup/order/orderData';
 
 export default defineComponent({
     emits: ['cancel', 'openComponent'],
@@ -68,6 +72,8 @@ export default defineComponent({
         [ModalEnum.spot_trade_warehouse_delisting]: defineAsyncComponent(() => import('../delisting/index.vue')),
     },
     setup(props, context) {
+        const isBottom = getHasBottom();
+        console.log(isBottom.value, 'isBottom');
         // 表格列表数据
         const { loading, tableList, queryTable } = queryTableList<WrOrderQuoteDetail>();
         const { wrpricetype, haswr, tableKey } = getBuyMarketParam(props.enumName);
@@ -104,6 +110,7 @@ export default defineComponent({
         }
         function handleBtnList() {}
         return {
+            isBottom,
             ...handleComposeTable<WrOrderQuoteDetail>(param),
             queryTableAction,
             BuyOrSell,

+ 32 - 26
src/views/market/spot_trade/components/buy-sell-market/components/sell/index.vue

@@ -1,30 +1,32 @@
 <template>
-  <!-- 卖大厅 -->
-  <a-table :columns="handleColumn(columns)"
-           class="sellHallTable"
-           :scroll="{ x: '100%', y: 'calc(100vh - 470px)' }"
-           :pagination="false"
-           :loading="loading"
-           :expandedRowKeys="expandedRowKeys"
-           :customRow="Rowclick"
-           :expandIcon="expandIcon"
-           :expandIconAsCell="false"
-           rowKey="key"
-           :data-source="tableList">
-    <!-- 额外的展开行 -->
-    <template #expandedRowRender="{ record }">
-      <BtnList :btnList="btnList"
-               :record="record"
-               @click="openComponent" />
-    </template>
-  </a-table>
-  <component :is="componentId"
-             v-if="componentId"
-             :selectedRow="selectedRow"
-             :enumName="enumName"
-             :buyOrSell="BuyOrSell.sell"
-             :parantSelectedRow="parantSelectedRow"
-             @cancel="closeComponent"></component>
+    <!-- 卖大厅 -->
+    <a-table
+        :columns="handleColumn(columns)"
+        :class="['sellHallTable', isBottom ? '' : 'sellHallTableHigh', tableList.length ? '' : 'noDataTable']"
+        :scroll="{ x: '100%', y: isBottom ? 'calc(100vh- 470px)' : 'calc(100vh - 180px)' }"
+        :pagination="false"
+        :loading="loading"
+        :expandedRowKeys="expandedRowKeys"
+        :customRow="Rowclick"
+        :expandIcon="expandIcon"
+        :expandIconAsCell="false"
+        rowKey="key"
+        :data-source="tableList"
+    >
+        <!-- 额外的展开行 -->
+        <template #expandedRowRender="{ record }">
+            <BtnList :btnList="btnList" :record="record" @click="openComponent" />
+        </template>
+    </a-table>
+    <component
+        :is="componentId"
+        v-if="componentId"
+        :selectedRow="selectedRow"
+        :enumName="enumName"
+        :buyOrSell="BuyOrSell.sell"
+        :parantSelectedRow="parantSelectedRow"
+        @cancel="closeComponent"
+    ></component>
 </template>
 
 <script lang="ts">
@@ -41,6 +43,7 @@ import { expandIcon } from '@/common/setup/table/clolumn';
 import { ColumnType } from '@/common/methods/table/interface';
 import { Moment } from 'moment';
 import moment from 'moment';
+import { getHasBottom } from '@/common/setup/order/orderData';
 
 export default defineComponent({
     emits: ['cancel', 'openComponent'],
@@ -69,6 +72,8 @@ export default defineComponent({
         [ModalEnum.spot_trade_warehouse_financing_delisting]: defineAsyncComponent(() => import('../financing_delisting/index.vue')),
     },
     setup(props, context) {
+        const isBottom = getHasBottom();
+        console.log(isBottom.value, 'isBottom');
         // 表格列表数据
         const { loading, tableList, queryTable } = queryTableList<WrOrderQuoteDetail>();
 
@@ -107,6 +112,7 @@ export default defineComponent({
             return columns;
         }
         return {
+            isBottom,
             ...handleComposeTable<WrOrderQuoteDetail>(param),
             queryTableAction,
             loading,

+ 3 - 18
src/views/market/spot_trade/components/buy-sell-market/index.vue

@@ -117,7 +117,7 @@ import { handleSpotBtnList } from '../../setup';
 import { v4 } from 'uuid';
 import { addSubscribeQuotation, removeSubscribeQuotation } from '@/services/socket/quota';
 import Bus from '@/utils/eventBus/index';
-import { getGoodsByCode, getQuoteDayInfoByCode } from '@/services/bus/goods';
+import { getGoodsByCode, getQuoteDayInfoByCode, getQuoteDayInfoByCodeFindPrice } from '@/services/bus/goods';
 import TimerUtils from '@/utils/timer/timerUtil';
 import { BtnList as BtnListType } from '@/common/components/btnList/interface';
 import moment, { Moment } from 'moment';
@@ -164,24 +164,9 @@ export default defineComponent({
         // 获取浮动价商品实时价格
 
         function getGoodsPrice() {
-            const goods = getGoodsByCode(props.selectedRow.goodscode);
-            let result: number | string = '--';
-            if (goods) {
-                const n = Math.pow(10, goods.decimalplace);
-                const quoteData = getQuoteDayInfoByCode(props.selectedRow.goodscode);
-                // 期货合约取价顺序:现价->实时结算价->昨结算价
-                if (quoteData) {
-                    if (quoteData.last) {
-                        result = quoteData.last / n;
-                    } else if (quoteData.settle) {
-                        result = quoteData.settle / n;
-                    } else if (quoteData.presettle) {
-                        result = quoteData.presettle / n;
-                    }
-                }
-            }
+            const result = getQuoteDayInfoByCodeFindPrice(props.selectedRow.goodscode);
             setGoodsPrice(result);
-            return typeof result === 'number' ? result.toFixed(goods?.decimalplace) : result;
+            return result;
         }
         const uuid = v4();
         if (isFloat()) {

+ 135 - 133
src/views/market/spot_trade/components/post_buying/index.vue

@@ -1,138 +1,140 @@
 <template>
-  <!-- 挂牌求购 -->
-  <Drawer :title="'挂牌求购'"
-          :placement="'top'"
-          :visible="visible"
-          @cancel="cancel"
-          class="top">
-    <div class="post_buying">
-      <div class="formBar">
-        <a-form class="inlineForm dialogForm"
-                ref="formRef"
-                :model="formState"
-                :rules="rules">
-          <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-select>
-              </a-form-item>
-            </a-col>
-            <a-col :span="24"
-                   v-if="!isFloat()">
-              <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"
-                   v-else>
-              <a-form-item label="基差"
-                           name="PriceMove">
-                <a-input-number class="commonInput"
-                                style="width: 260px"
-                                v-model:value="formState.PriceMove" />
-              </a-form-item>
-            </a-col>
+    <!-- 挂牌求购 -->
+    <Drawer :title="'挂牌求购'" :placement="'top'" :visible="visible" @cancel="cancel" class="top">
+        <div class="post_buying">
+            <div class="formBar">
+                <a-form
+                    class="inlineForm dialogForm"
+                    ref="formRef"
+                    :model="formState"
+                    :rules="rules"
+                >
+                    <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-select>
+                            </a-form-item>
+                        </a-col>
+                        <a-col :span="24" v-if="!isFloat()">
+                            <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" v-else>
+                            <a-form-item label="基差" name="PriceMove">
+                                <a-input-number
+                                    class="commonInput"
+                                    style="width: 260px"
+                                    v-model:value="formState.PriceMove"
+                                />
+                            </a-form-item>
+                        </a-col>
+                        <a-col :span="24" v-if="isFloat()">
+                            <a-form-item label="估算价" name="PriceMove">
+                                <span>估算价估算价</span>
+                            </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" />
-                <span class="input-enumdicname">{{selectedRow.enumdicname}}</span>
-              </a-form-item>
-            </a-col>
-            <a-col :span="24"
-                   v-if="!isWR()">
-              <a-form-item label="交收月"
-                           name="DeliveryMonth">
-                <a-month-picker style="width: 260px"
-                                v-model:value="formState.DeliveryMonth"
-                                :allowClear="false"
-                                class="commonDatePicker dialogDatePicker" />
-              </a-form-item>
-            </a-col>
-            <a-col :span="24"
-                   class="mt-10">
-              <a-form-item>
-                <a-slider ::min="0"
-                          v-model:value="formState.OrderQty"
-                          :max="99999999"
-                          class="formSlider" />
-                <div class="unit">
-                  <span>{{selectedRow.minivalue}}</span>
-                  <span>{{getMaxNum()}}{{selectedRow.enumdicname}}</span>
-                </div>
-              </a-form-item>
-            </a-col>
-            <a-col :span="24">
-              <a-form-item label="起摘数量"
-                           class="relative">
-                <a-input class="commonInput"
-                         :suffix="selectedRow.enumdicname"
-                         :min="selectedRow.minivalue"
-                         style="width: 260px" />
-                <div class="tip">最小单位:{{selectedRow.minivalue}}{{selectedRow.enumdicname}}</div>
-              </a-form-item>
-            </a-col>
-            <a-col :span="24"
-                   class="relative">
-              <a-form-item :label="isFloat() ? '估算金额' : '摘牌金额'">
-                <span class="white ml8">{{getMoney()}}</span>
-              </a-form-item>
-            </a-col>
-            <a-col :span="24"
-                   class="relative">
-              <a-form-item :label="getMargin() ? '履约保证金' : ''">
-                <a-row>
-                  <a-col :span="8"
-                         v-if="getMargin()">
-                    <span class="white ml8">{{getMargin()}}</span>
-                  </a-col>
-                  <a-col :span="4"
-                         class="tr">
-                    <span class="grey1">可用资金</span>
-                  </a-col>
-                  <a-col :span="12">
-                    <span class="white ml8"> {{getCanUseMoney(getSelectedAccount())}}</span>
-                  </a-col>
-                </a-row>
-              </a-form-item>
-            </a-col>
-          </a-row>
-          <a-row :gutter="24"
-                 type="flex"
-                 justify="center">
-            <a-col :span="24"
-                   class="mt20">
-              <a-form-item class="tc">
-                <a-button class="listedBtn"
-                          @click="submit">买入</a-button>
-                <a-button class="ml10 cancelBtn"
-                          @click="cancel">取消</a-button>
-              </a-form-item>
-            </a-col>
-          </a-row>
-        </a-form>
-      </div>
-    </div>
-  </Drawer>
+                        <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"
+                                />
+                                <span class="input-enumdicname">{{selectedRow.enumdicname}}</span>
+                            </a-form-item>
+                        </a-col>
+                        <a-col :span="24" v-if="!isWR()">
+                            <a-form-item label="交收月" name="DeliveryMonth">
+                                <a-month-picker
+                                    style="width: 260px"
+                                    v-model:value="formState.DeliveryMonth"
+                                    :allowClear="false"
+                                    class="commonDatePicker dialogDatePicker"
+                                />
+                            </a-form-item>
+                        </a-col>
+                        <a-col :span="24" class="mt-10">
+                            <a-form-item>
+                                <a-slider
+                                    ::min="0"
+                                    v-model:value="formState.OrderQty"
+                                    :max="99999999"
+                                    class="formSlider"
+                                />
+                                <div class="unit">
+                                    <span>{{selectedRow.minivalue}}</span>
+                                    <span>{{getMaxNum()}}{{selectedRow.enumdicname}}</span>
+                                </div>
+                            </a-form-item>
+                        </a-col>
+                        <a-col :span="24">
+                            <a-form-item label="起摘数量" class="relative">
+                                <a-input
+                                    class="commonInput"
+                                    :suffix="selectedRow.enumdicname"
+                                    :min="selectedRow.minivalue"
+                                    style="width: 260px"
+                                />
+                                <div
+                                    class="tip"
+                                >最小单位:{{selectedRow.minivalue}}{{selectedRow.enumdicname}}</div>
+                            </a-form-item>
+                        </a-col>
+                        <a-col :span="24" class="relative mt20">
+                            <a-form-item :label="isFloat() ? '估算金额' : '摘牌金额'">
+                                <span class="white ml8">{{getMoney()}}</span>
+                            </a-form-item>
+                        </a-col>
+                        <a-col :span="24" class="relative">
+                            <a-form-item :label="getMargin() ? '履约保证金' : ''">
+                                <a-row>
+                                    <a-col :span="8" v-if="getMargin()">
+                                        <span class="white ml8">{{getMargin()}}</span>
+                                    </a-col>
+                                    <a-col :span="4" class="tr">
+                                        <span class="grey1">可用资金</span>
+                                    </a-col>
+                                    <a-col :span="12">
+                                        <span
+                                            class="white ml8"
+                                        >{{getCanUseMoney(getSelectedAccount())}}</span>
+                                    </a-col>
+                                </a-row>
+                            </a-form-item>
+                        </a-col>
+                    </a-row>
+                    <a-row :gutter="24" type="flex" justify="center">
+                        <a-col :span="24" class="mt20">
+                            <a-form-item class="tc">
+                                <a-button class="listedBtn" @click="submit">买入</a-button>
+                                <a-button class="ml10 cancelBtn" @click="cancel">取消</a-button>
+                            </a-form-item>
+                        </a-col>
+                    </a-row>
+                </a-form>
+            </div>
+        </div>
+    </Drawer>
 </template>
 
 <script lang="ts">

+ 76 - 15
src/views/order/spot_warran/components/spot_warrant_spot_details/components/listing/index.vue

@@ -29,7 +29,7 @@
               </a-form-item>
             </a-col>
             <a-col :span="12"
-                   v-if="formState.WRPriceType === 1">
+                   v-if="!isFloat()">
               <a-form-item label="挂牌价"
                            name="FixedPrice">
                 <a-input-number class="dialogInput"
@@ -40,8 +40,8 @@
               </a-form-item>
             </a-col>
             <a-col :span="12"
-                   v-if="formState.WRPriceType === 2">
-              <a-form-item label="升贴水"
+                   v-if="isFloat()">
+              <a-form-item label="基差"
                            name="PriceMove">
                 <a-input-number class="commonInput"
                                 :min="0"
@@ -92,7 +92,7 @@
             <a-col :span="12">&nbsp;</a-col>
           </a-row>
           <a-row :gutter="24"
-                 v-if="formState.WRPriceType === 2">
+                 v-if="isFloat()">
             <a-col :span="24">
               <a-form-item label="行情商品"
                            name="goodsid">
@@ -117,11 +117,39 @@
                           placeholder="请选择合约">
                   <a-select-option v-for="item in goodsList"
                                    :value="item.goodsid"
-                                   :key="item.goodsid">{{item.goodsname}}</a-select-option>
+                                   :key="item.goodsid">{{item.goodsname}}
+                  </a-select-option>
                 </a-select>
               </a-form-item>
             </a-col>
           </a-row>
+          <a-row :gutter="24">
+            <a-col :span="24"
+                   class="relative">
+              <a-form-item :label="isFloat() ? '估算金额' : '摘牌金额'">
+                <span class="white ml8">{{getMoney()}}</span>
+              </a-form-item>
+            </a-col>
+            <a-col :span="24"
+                   class="relative">
+              <a-form-item :label="getMargin() ? '履约保证金' : ''">
+                <a-row>
+                  <a-col :span="8"
+                         v-if="getMargin()">
+                    <span class="white ml8">{{getMargin()}}</span>
+                  </a-col>
+                  <a-col :span="4"
+                         class="tr">
+                    <span class="grey1">可用资金</span>
+                  </a-col>
+                  <a-col :span="12">
+                    <span class="white ml8"> {{getCanUseMoney(handleSelectedAccount())}}</span>
+                  </a-col>
+                </a-row>
+              </a-form-item>
+            </a-col>
+          </a-row>
+
           <a-row :gutter="24"
                  type="flex"
                  justify="center">
@@ -132,6 +160,8 @@
                           :disabled="loading"
                           @click="submit">卖出</a-button>
                 <a-button class="ml10 cancelBtn"
+                          :loading="loading"
+                          :disabled="loading"
                           @click="cancel">取消</a-button>
               </a-form-item>
             </a-col>
@@ -143,27 +173,29 @@
 </template>
 
 <script lang="ts">
-import { defineComponent, PropType, ref } from 'vue';
+import { defineComponent, onMounted, PropType, ref } from 'vue';
 import { enumOrderComponents } from '@/common/constants/enumOrderComponents';
 import Drawer from '@/common/components/drawer/index.vue';
 import { QueryWrPositionReq, WrHoldLB, WrPosition } from '@/services/go/wrtrade/interface';
-import { getInTaAccount, getUserId } from '@/services/bus/account';
+import { getAccountTypeList, getInTaAccount, getSelectedAccount, getUserId } from '@/services/bus/account';
 import { requestResultLoadingAndInfo } from '@/common/methods/request/resultInfo';
 import { hdWROrder } from '@/services/proto/warehousetrade';
-import { v4 as uuidv4 } from 'uuid';
+import { v4 } from 'uuid';
 import moment from 'moment';
 import { ModalEnum } from '@/common/constants/modalNameEnum';
 import { _closeModal } from '@/common/setup/modal/modal';
-import { handleGoods, handleForm } from './setup';
+import { handleGoods, handleForm, handleNumAndPrice, handlePriceRule } from './setup';
 import { validateAction } from '@/common/setup/form';
 import { ListingForm } from './interface';
-import { getMarketRunByTradeMode } from '@/services/bus/market';
+import { getMarketByTradeMode, getMarketRunByTradeMode } from '@/services/bus/market';
 import { message } from 'ant-design-vue';
 import { getGoodsGroupsByTradeMode } from '@/services/bus/goods';
 import { TradeMode } from '@/common/constants/enumCommon';
 import { WRGoodsInfo } from '@/services/proto/warehousetrade/interface';
 import { BuyOrSell } from '@/common/constants/enumCommon';
 import Bus from '@/utils/eventBus/index';
+import { addSubscribeQuotation, removeSubscribeQuotation } from '@/services/socket/quota';
+import { getCanUseMoney } from '@/services/bus/account';
 
 export default defineComponent({
     name: ModalEnum.spot_warrant_spot_details_listed,
@@ -176,18 +208,42 @@ export default defineComponent({
         },
     },
     setup(props, context) {
+        const loading = ref<boolean>(false);
+        const marketInfo = getMarketByTradeMode(TradeMode.WarehouseReceiptTrade);
+        if (marketInfo) {
+            // 获取计算规则
+            handlePriceRule(loading, marketInfo.marketid);
+        }
         const { visible, cancel } = _closeModal(context);
         const { rules, formState, formRef } = handleForm(props.selectedRow);
-        const data = props.selectedRow;
-        const loading = ref<boolean>(false);
+
         const { goodsGroup, goodsList, groupsChange, findGoodsCode } = handleGoods();
+        // 切换商品组
         function handleGoodsGroups(value: number) {
             groupsChange(value);
             formRef.value.validate();
         }
-        function handleGoodsChange() {
+        const uuid = v4();
+        // 切换商品
+        function handleGoodsChange(id: number) {
+            //行情订阅
+            removeSubscribeQuotation(uuid);
+            const goodsCode = goodsList.value.find((e) => e.goodsid === id)?.goodscode as string;
+            const arr = [{ exchangeCode: 250, goodsCode: goodsCode, subState: 0 }];
+            addSubscribeQuotation(uuid, arr);
             formRef.value.validate();
         }
+
+        onMounted(() => {
+            removeSubscribeQuotation(uuid);
+        });
+        const { getMoney, getMargin, isFloat } = handleNumAndPrice();
+        // 处理内部资金账号
+        function handleSelectedAccount() {
+            const item = getSelectedAccount();
+            const list = getAccountTypeList([2]);
+            return item.taaccounttype === 2 ? item : list[0];
+        }
         function submit() {
             const marketInfo = getMarketRunByTradeMode(17);
             if (marketInfo) {
@@ -204,7 +260,7 @@ export default defineComponent({
 
                     const param = {
                         AccountID: getInTaAccount(), // 默认内部资金账号第一个
-                        ClientSerialNo: uuidv4(), // 客户端流水号
+                        ClientSerialNo: v4(), // 客户端流水号
                         // OperateSrc: 2,
                         ClientType: 4,
                         // MarketID: marketInfo.marketid,
@@ -218,7 +274,7 @@ export default defineComponent({
                         IsSpecified: 0, // 是否指定对手 0:不指定 1:指定 uint32
                         // MatchUserIDs: 0, // 仓单贸易对手资金账号ID集合(指定对手时填写) uint32
                         OrderQty: res.OrderQty, // 委托数量(可挂部分数据量) ======
-                        DeliveryGoodsID: data.deliverygoodsid, // 交割商品商品ID
+                        DeliveryGoodsID: props.selectedRow.deliverygoodsid, // 交割商品商品ID
                         WRPriceType: res.WRPriceType, // 价格方式 1:固定价 2:浮动价
                         FixedPrice: res.FixedPrice, // 固定价格
                         PriceFactor: 1, // 价格系数(浮动价时填写)
@@ -265,6 +321,11 @@ export default defineComponent({
             goodsList,
             handleGoodsGroups,
             handleGoodsChange,
+            isFloat,
+            getMoney,
+            getMargin,
+            getCanUseMoney,
+            handleSelectedAccount,
         };
     },
 });

+ 64 - 14
src/views/order/spot_warran/components/spot_warrant_spot_details/components/listing/setup.ts

@@ -1,23 +1,27 @@
 import { TradeMode } from '@/common/constants/enumCommon';
+import { queryResultLoadingAndInfo } from '@/common/methods/request/resultInfo';
 import { validateCommon } from '@/common/setup/validate';
-import { getGoodsGroupsByTradeMode, getGoodsList } from '@/services/bus/goods';
+import { getGoodsGroupsByTradeMode, getGoodsList, getQuoteDayInfoByCodeFindPrice } from '@/services/bus/goods';
 import { Goods } from "@/services/go/ermcp/goodsInfo/interface";
-import { WrHoldLB } from "@/services/go/wrtrade/interface";
+import { queryWrMarketTradeConfig } from '@/services/go/wrtrade';
+import { WrHoldLB, WrMarketTradeConfig } from "@/services/go/wrtrade/interface";
 import { RuleObject } from 'ant-design-vue/lib/form/interface';
-import { reactive, ref, UnwrapRef } from "vue";
+import { reactive, Ref, ref, UnwrapRef } from "vue";
 import { ListingForm } from "./interface";
 
+const formState: UnwrapRef<ListingForm> = reactive({
+    WRPriceType: 1,
+    FixedPrice: 0,
+    OrderQty: 0,
+    DelistMinQty: 0,
+    PriceMove: 1,
+    goodsgroupid: undefined,
+    goodsid: undefined,
+})
+
 export function handleForm(data: WrHoldLB) {
     const formRef = ref();
-    const formState: UnwrapRef<ListingForm> = reactive({
-        WRPriceType: 1,
-        FixedPrice: 0,
-        OrderQty: 0,
-        DelistMinQty: 0,
-        PriceMove: 1,
-        goodsgroupid: undefined,
-        goodsid: undefined,
-    })
+
     const v_group = async (rule: RuleObject, value: number) => {
         if (formState.goodsgroupid) {
             return validateCommon(value, '请选择合约');
@@ -47,11 +51,10 @@ export function handleForm(data: WrHoldLB) {
     return { rules, formState, formRef }
 }
 
-
+const goodsList = ref<Goods[]>([])
 export function handleGoods() {
     const goodsGroup = getGoodsGroupsByTradeMode(TradeMode.quote99);
     const allGoods = getGoodsList()
-    const goodsList = ref<Goods[]>([])
     function groupsChange(id: number) {
         goodsList.value = allGoods.filter(e => e.goodsgroupid === id)
     }
@@ -59,4 +62,51 @@ export function handleGoods() {
         return allGoods.find(e => e.goodsid === id)?.goodscode
     }
     return { goodsGroup, goodsList, groupsChange, findGoodsCode }
+}
+
+// 获取金额计算规则
+const rules = ref<WrMarketTradeConfig[]>([])
+export function handlePriceRule(loading: Ref<boolean>, marketid: number) {
+    queryResultLoadingAndInfo(queryWrMarketTradeConfig, loading, { marketid }).then(res => {
+        rules.value = res;
+    })
+}
+
+export function handleNumAndPrice() {
+    function isFloat() {
+        return formState.WRPriceType === 2;
+    }
+    // 获取选中的资金账号
+    const hasRules = () => rules.value.length > 0
+    //  摘牌金额
+    function getMoney() {
+        let result = 0
+        if (isFloat()) {
+            if (hasRules()) {
+                const goodsCode = goodsList.value.find(e => e.goodsid === formState.goodsid)?.goodscode as string
+                const goodsPrice = getQuoteDayInfoByCodeFindPrice(goodsCode);
+                if (goodsPrice && goodsPrice !== '--') {
+                    // 浮动价挂牌金额=(基差价格+期货合约最新价)*挂牌数量
+                    result = (formState.PriceMove + (goodsPrice as number)) * formState.OrderQty
+                }
+            }
+        } else {
+            // 摘牌金额=挂牌价格*摘牌数量
+            result = formState.OrderQty * formState.FixedPrice
+        }
+        return Number(result.toFixed(2))
+    }
+    // 履约保证金
+    function getMargin() {
+        if (hasRules()) {
+            const { sellmarginvalue } = rules.value[0]
+            // 浮动价 履约保证金=估算总额*买方履约保证金比例
+            // 一口价 履约保证金=挂牌金额*买方履约保证金比例
+            return Number((getMoney() * sellmarginvalue).toFixed(2))
+        } else {
+            return 0
+        }
+
+    }
+    return { getMoney, getMargin, isFloat }
 }

+ 11 - 9
src/views/report/exposure-report/list/exposure_report/index.vue

@@ -27,12 +27,12 @@
         <template #contracttype="{ text }">
           <a>{{ getContractTypeName(text) }}</a>
         </template>
-          <template #biztype="{ text }">
-              <a>{{ getBizTypeName(text) }}</a>
-          </template>
-          <template #buyorsell="{ text }">
-              <a>{{ getBuyOrSellName(text) }}</a>
-          </template>
+        <template #biztype="{ text }">
+          <a>{{ getBizTypeName(text) }}</a>
+        </template>
+        <template #buyorsell="{ text }">
+          <a>{{ getBuyOrSellName(text) }}</a>
+        </template>
 
       </a-table>
 
@@ -49,10 +49,10 @@ import { AreaExpourseReportReq, Ermcp3ExpourseReport, QryAreaExpourseHedgeplanDe
 import { qryAreaExpourseContractDetail, qryAreaExpourseFutuDetail, qryAreaExpourseHedgeplanDetail, qryAreaExpourseParamChLogDetail, qryAreaExpourseReport } from '@/services/go/ermcp/report';
 import { ComposeTableDetailParam, handleComposeTable_detail } from '@/common/setup/table/compose';
 import Description from '@/common/components/description/index.vue';
-import { watchEffect } from 'vue';
+import { ref, watchEffect } from 'vue';
 import { queryResultLoadingAndInfo } from '@/common/methods/request/resultInfo';
 import { TabList } from '@/common/components/description/interface';
-import {getBizTypeName, getBuyOrSellName, getContractTypeName} from '@/common/constants/enumsName';
+import { getBizTypeName, getBuyOrSellName, getContractTypeName } from '@/common/constants/enumsName';
 import { EnumRouterName } from '@/common/constants/enumRouterName';
 
 export default defineComponent({
@@ -96,7 +96,7 @@ export default defineComponent({
             Rowclick, // 表格事件
             tabList,
         } = handleComposeTable_detail<Ermcp3ExpourseReport>(param);
-
+        const chaceSearchValue = ref<TypeAndTime>();
         // 切换明细
         function changeTab(index: number, current: TabList) {
             const { code, lable } = current;
@@ -106,6 +106,7 @@ export default defineComponent({
                 middlegoodsid,
                 cycletype,
                 cycletime,
+                userid: chaceSearchValue.value?.userid,
             };
             let fn = null;
             if (code === 'exposure_report_exposure_contract_changes') {
@@ -147,6 +148,7 @@ export default defineComponent({
         });
 
         function search(value: TypeAndTime) {
+            chaceSearchValue.value = value;
             cycletime = value.cycletime;
             const obj = Object.assign(value, { querytype: 1 });
             queryTable(qryAreaExpourseReport, obj);

+ 4 - 2
src/views/report/finance-report/list/finance_report_finance/index.vue

@@ -39,7 +39,7 @@ import { ComposeTableDetailParam, handleComposeTable_detail } from '@/common/set
 import Description from '@/common/components/description/index.vue';
 import { TabList } from '@/common/components/description/interface';
 import { queryResultLoadingAndInfo } from '@/common/methods/request/resultInfo';
-import { watchEffect } from 'vue';
+import { ref, watchEffect } from 'vue';
 import { EnumRouterName } from '@/common/constants/enumRouterName';
 
 export default defineComponent({
@@ -83,7 +83,7 @@ export default defineComponent({
             Rowclick, // 表格事件
             tabList,
         } = handleComposeTable_detail<Ermcp3FinanceReport>(param);
-
+        const chaceSearchValue = ref<TypeAndTime>();
         // 切换明细
         function changeTab(index: number, current: TabList) {
             const { code, lable } = current;
@@ -95,6 +95,7 @@ export default defineComponent({
                 cycletime,
                 currencyid,
                 sumfields: '2',
+                userid: chaceSearchValue.value?.userid,
             };
             if (code === 'finance_report_finance_category_breakdown') {
                 // 品类明细
@@ -123,6 +124,7 @@ export default defineComponent({
             }
         });
         function search(value: TypeAndTime) {
+            chaceSearchValue.value = value;
             cycletime = value.cycletime;
             const obj = Object.assign(value, { querytype: 1 });
             queryTable(qryFinanceReport, obj);

+ 8 - 5
src/views/report/future_report/list/future_report/index.vue

@@ -29,10 +29,10 @@
                rowKey="key"
                :data-source="detailTableList"
                :scroll="{ x: '100%', y: 'calc(100vh - 163px)' }">
-          <!-- 持仓方向 -->
-          <template #buyorsell="{ record }">
-              <a>{{ record.buyorsell === 1 ? "卖出" : "买入" }}</a>
-          </template>
+        <!-- 持仓方向 -->
+        <template #buyorsell="{ record }">
+          <a>{{ record.buyorsell === 1 ? "卖出" : "买入" }}</a>
+        </template>
       </a-table>
 
     </Description>
@@ -44,7 +44,7 @@ import Filter from '../../components/filterTable/index.vue';
 import { defineComponent, queryTableList } from '@/common/export/table';
 import { ComposeTableDetailParam, handleComposeTable_detail } from '@/common/setup/table/compose';
 import Description from '@/common/components/description/index.vue';
-import { watchEffect } from 'vue';
+import { ref, watchEffect } from 'vue';
 import { queryResultLoadingAndInfo } from '@/common/methods/request/resultInfo';
 import { handleInitTypeAndTime } from '@/views/report/setup';
 import { qryTaFutureDataReport } from '@/services/go/ermcp/report';
@@ -94,6 +94,7 @@ export default defineComponent({
             Rowclick, // 表格事件
             tabList,
         } = handleComposeTable_detail<Ermcp3TaFutuReDataReport>(param);
+        const chaceSearchValue = ref<TypeAndTime>();
 
         // 切换明细
         function changeTab(index: number, current: TabList) {
@@ -108,6 +109,7 @@ export default defineComponent({
                 goodsgroupid,
                 goodsid,
                 buyorsell,
+                userid: chaceSearchValue.value?.userid,
             };
             if (code === 'future_report_future_detail') {
                 // 账户明细
@@ -130,6 +132,7 @@ export default defineComponent({
             }
         });
         function search(value: TypeAndTime) {
+            chaceSearchValue.value = value;
             cycletime = value.cycletime;
             const obj = Object.assign(value, { querytype: 1 });
             queryTable(qryTaFutureDataReport, obj);

+ 4 - 1
src/views/report/inventory-report/list/category/index.vue

@@ -33,7 +33,7 @@ import Filter from '../../components/filterTable/index.vue';
 import { defineComponent, queryTableList } from '@/common/export/table';
 import { ComposeTableDetailParam, handleComposeTable_detail } from '@/common/setup/table/compose';
 import Description from '@/common/components/description/index.vue';
-import { watchEffect } from 'vue';
+import { ref, watchEffect } from 'vue';
 import { queryResultLoadingAndInfo } from '@/common/methods/request/resultInfo';
 import { handleInitTypeAndTime } from '@/views/report/setup';
 import { qryAreaStockReport } from '@/services/go/ermcp/report';
@@ -52,6 +52,7 @@ export default defineComponent({
         let cycletime = '';
         // 表格列表数据
         const { loading, tableList, queryTable } = queryTableList<Ermcp3AreaStockReport>();
+        const chaceSearchValue = ref<TypeAndTime>();
         // 获取列表数据
         const queryTableAction = () => {
             const { getInitTime, getInitType } = handleInitTypeAndTime();
@@ -101,6 +102,7 @@ export default defineComponent({
                 wrstandardid,
                 spotgoodsbrandid,
                 warehouseinfoid,
+                userid: chaceSearchValue.value?.userid,
             };
             if (code === 'inventory_report_inventory_category_brand_detail') {
                 // 品牌明细
@@ -130,6 +132,7 @@ export default defineComponent({
             }
         });
         function search(value: TypeAndTime) {
+            chaceSearchValue.value = value;
             cycletime = value.cycletime;
             const obj = Object.assign(value, { querytype: 1, sumfields: '1,2' });
             queryTable(qryAreaStockReport, obj);

+ 4 - 1
src/views/report/inventory-report/list/warehouse/index.vue

@@ -33,7 +33,7 @@ import Filter from '../../components/filterTable/index.vue';
 import { defineComponent, queryTableList } from '@/common/export/table';
 import { ComposeTableDetailParam, handleComposeTable_detail } from '@/common/setup/table/compose';
 import Description from '@/common/components/description/index.vue';
-import { watchEffect } from 'vue';
+import { ref, watchEffect } from 'vue';
 import { queryResultLoadingAndInfo } from '@/common/methods/request/resultInfo';
 import { handleInitTypeAndTime } from '@/views/report/setup';
 import { qryAreaStockReport } from '@/services/go/ermcp/report';
@@ -84,6 +84,7 @@ export default defineComponent({
             Rowclick, // 表格事件
             tabList,
         } = handleComposeTable_detail<Ermcp3AreaStockReport>(param);
+        const chaceSearchValue = ref<TypeAndTime>();
         // 切换明细
         function changeTab(index: number, current: TabList) {
             const { code, lable } = current;
@@ -99,6 +100,7 @@ export default defineComponent({
                 wrstandardid,
                 spotgoodsbrandid,
                 warehouseinfoid,
+                userid: chaceSearchValue.value?.userid,
             };
             if (code === 'inventory_report_warehouse_inventory_detail') {
                 // 库存明细
@@ -121,6 +123,7 @@ export default defineComponent({
             }
         });
         function search(value: TypeAndTime) {
+            chaceSearchValue.value = value;
             cycletime = value.cycletime;
             const obj = Object.assign(value, { querytype: 1, sumfields: '1,2,4' });
             queryTable(qryAreaStockReport, obj);

+ 4 - 1
src/views/report/spot-report/list/spot_report/index.vue

@@ -68,7 +68,7 @@ import { AreaSpotplReportReq, Ermcp3AreaSpotPLReport } from '@/services/go/ermcp
 import { TypeAndTime } from '@/views/report/interface';
 import { ComposeTableDetailParam, handleComposeTable_detail } from '@/common/setup/table/compose';
 import Description from '@/common/components/description/index.vue';
-import { watchEffect } from 'vue';
+import { ref, watchEffect } from 'vue';
 import { queryResultLoadingAndInfo } from '@/common/methods/request/resultInfo';
 import { TabList } from '@/common/components/description/interface';
 import { EnumRouterName } from '@/common/constants/enumRouterName';
@@ -114,6 +114,7 @@ export default defineComponent({
             Rowclick, // 表格事件
             tabList,
         } = handleComposeTable_detail<Ermcp3AreaSpotPLReport>(param);
+        const chaceSearchValue = ref<TypeAndTime>();
 
         // 切换明细
         function changeTab(index: number, current: TabList) {
@@ -126,6 +127,7 @@ export default defineComponent({
                 cycletime,
                 deliverygoodsid,
                 currencyid,
+                userid: chaceSearchValue.value?.userid,
             };
             if (code === 'spot_report_spot_detail') {
                 // 现货明细
@@ -148,6 +150,7 @@ export default defineComponent({
             }
         });
         function search(value: TypeAndTime) {
+            chaceSearchValue.value = value;
             cycletime = value.cycletime;
             const obj = Object.assign(value, { querytype: 1 });
             queryTable(QryAreaSpotplReport, obj);

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

@@ -54,7 +54,7 @@ import Filter from '../../components/filterTable/index.vue';
 import { defineComponent, queryTableList } from '@/common/export/table';
 import { ComposeTableDetailParam, handleComposeTable_detail } from '@/common/setup/table/compose';
 import Description from '@/common/components/description/index.vue';
-import { watchEffect } from 'vue';
+import { ref, watchEffect } from 'vue';
 import { queryResultLoadingAndInfo } from '@/common/methods/request/resultInfo';
 import { TypeAndTime } from '@/views/report/interface';
 import { handleInitTypeAndTime } from '@/views/report/setup';
@@ -103,6 +103,7 @@ export default defineComponent({
             Rowclick, // 表格事件
             tabList,
         } = handleComposeTable_detail<Ermcp3ArealSumPL>(param);
+        const chaceSearchValue = ref<TypeAndTime>();
 
         // 切换明细
         function changeTab(index: number, current: TabList) {
@@ -114,6 +115,7 @@ export default defineComponent({
                 cycletype,
                 cycletime,
                 currencyid,
+                userid: chaceSearchValue.value?.userid,
             };
             if (code === 'sum_pl_report_profit_and_loss_details') {
                 // 损益明细
@@ -135,7 +137,9 @@ export default defineComponent({
                 }
             }
         });
+
         function search(value: TypeAndTime) {
+            chaceSearchValue.value = value;
             cycletime = value.cycletime;
             const obj = Object.assign(value, { querytype: 1 });
             queryTable(qryAreaSumPL, obj);