li.shaoyi 2 anos atrás
pai
commit
a271fa7f31

+ 14 - 11
public/proto/thj.proto

@@ -521,17 +521,20 @@ message t2bBankDepositRsp {
 message SpotPresaleDestingOrderReq {
 	optional MessageHead Header = 1;
 	optional uint32 UserID = 2; // 用户ID,必填
-	optional uint64 AccountID = 3; // 资金账号,必填
-	optional uint64 PresaleApplyID = 4; // 预售申请ID,必填
-	optional uint64 Qty = 5; // 预售数量,必填
-	optional uint64 DepositID = 6; // 定金方式,THJ_PresaleApplyDeposit表ID,必填
-	optional uint32 THJDeliveryMode = 7; // 交割方式,必填1:平台仓储2:自提
-	optional string ContactName = 8; // 联系人姓名,THJDeliveryMode=2,3时必填
-	optional string ContactInfo = 9; // 联系方式,THJDeliveryMode=2,3时必填
-	optional string DesAddress = 10; // 目的地地址,THJDeliveryMode=3时必填
-	optional string ReceiptInfo = 11; // 发票信息,THJDeliveryMode=2,3时必填
-	optional uint32 ClientType = 12; // 终端类型
-	optional string ClientSerialNo = 13; // 客户端流水号
+		optional uint64 AccountID = 3; // 资金账号,必填
+		optional uint64 PresaleApplyID = 4; // 预售申请ID,必填
+		optional uint64 Qty = 5; // 预售数量,必填
+		optional uint64 DepositID = 6; // 定金方式,THJ_PresaleApplyDeposit表ID,必填
+		optional uint32 THJDeliveryMode = 7; // 交割方式,必填1:平台仓储2:自提
+		optional string ContactName = 8; // 联系人姓名,THJDeliveryMode=2,3时必填
+		optional string ContactInfo = 9; // 联系方式,THJDeliveryMode=2,3时必填
+		optional string DesAddress = 10; // 目的地地址,THJDeliveryMode=3时必填
+		optional string ReceiptInfo = 11; // 发票信息,THJDeliveryMode=2,3时必填
+		optional uint32 ClientType = 12; // 终端类型
+		optional string ClientSerialNo = 13; // 客户端流水号
+		optional uint32 DepositType = 14; // 定金类型,必填,1.商品2.个性化
+		optional double DepositRate = 15; // 定金比例,必填,4位小数
+		optional uint32 UpdatorID = 16; // 操作人,必填
 }
 
 // 铁合金现货预售摘牌接口应答

+ 16 - 4
src/business/goods/index.ts

@@ -2,6 +2,7 @@ import { shallowRef, reactive } from 'vue'
 import { useDataTable } from '@/hooks/datatable'
 import { EchartsDataset } from '@/hooks/echarts/line/interface'
 import { BuyOrSell } from '@/constants/order'
+import { queryTHJinvesotrdeposit } from '@/services/api/common'
 import { queryTHJWrstandard, queryOrderQuote, queryOrderQuoteDetail, queryWrMarketTradeConfig, queryTHJWrstandardDetail, addUserFavoriteGoods, removeUserFavoriteGoods, queryTHJProduct, queryMarketRun, queryTHJTradeData } from '@/services/api/goods'
 import { loginStore } from '@/stores'
 
@@ -46,6 +47,7 @@ export function useWrstandardList() {
 export function useWrstandardDetails(wrstandardid: number) {
     const loading = shallowRef(false)
     const details = shallowRef<Partial<Model.THJWrstandardDetailRsp>>({})
+    const customDeposits = shallowRef<Model.THJinvesotrdepositRsp[]>([]) // 个性化定金比例
 
     // 图表数据
     const chartData = reactive<EchartsDataset['line']['source']>({
@@ -53,9 +55,9 @@ export function useWrstandardDetails(wrstandardid: number) {
         date: []
     })
 
-    const getWrstandardDetails = () => {
+    const getWrstandardDetails = async () => {
         loading.value = true
-        return queryTHJWrstandardDetail({
+        const task1 = queryTHJWrstandardDetail({
             data: {
                 wrstandardid,
             },
@@ -67,15 +69,25 @@ export function useWrstandardDetails(wrstandardid: number) {
                     chartData.date.push(tradedate)
                 })
             },
-            complete: () => {
-                loading.value = false
+        })
+        const task2 = queryTHJinvesotrdeposit({
+            data: {
+                userid: userId.value,
+                wrstandardid
+            },
+            success: (res) => {
+                customDeposits.value = res.data
             }
         })
+        await Promise.all([task1, task2]).finally(() => {
+            loading.value = false
+        })
     }
 
     return {
         loading,
         details,
+        customDeposits,
         chartData,
         getWrstandardDetails,
     }

+ 2 - 1
src/business/trade/index.ts

@@ -29,7 +29,8 @@ export function usePurchaseOrderDesting() {
     const formData = ref<Partial<Proto.SpotPresaleDestingOrderReq>>({
         UserID: userId.value, // 用户ID,必填
         AccountID: firstAccountId.value, // 资金账号,必填
-        ClientType: ClientType.Web // 终端类型
+        ClientType: ClientType.Web, // 终端类型
+        UpdatorID: loginId.value // 操作人,必填
     })
 
     const formSubmit = () => {

+ 20 - 2
src/mock/router.ts

@@ -10,7 +10,7 @@ const appmenu = {
                 authType: 1,
                 sort: 1,
                 title: '好友查询',
-                code: 'member',
+                code: 'Member',
                 url: '/member',
                 urlType: 1,
                 component: 'views/member/index.vue',
@@ -20,12 +20,30 @@ const appmenu = {
                 authType: 1,
                 sort: 1,
                 title: '收益查询',
-                code: 'profit',
+                code: 'Profit',
                 url: '/profit',
                 urlType: 1,
                 component: 'views/profit/index.vue',
                 icon: 'TrendCharts',
             },
+            {
+                authType: 1,
+                sort: 1,
+                title: '比例查询',
+                code: 'Ratio',
+                url: '/ratio',
+                urlType: 1,
+                component: 'views/ratio/index.vue',
+                icon: 'Histogram',
+                children: [
+                    {
+                        authType: 3,
+                        title: '流水',
+                        code: 'RatioHistory',
+                        component: 'views/ratio/components/history/index.vue',
+                    },
+                ]
+            },
         ]
     }
 };

+ 39 - 21
src/packages/mobile/views/purchase/detail/index.vue

@@ -115,7 +115,7 @@ const { router, getQueryStringToNumber } = useNavigation()
 const wrstandardid = getQueryStringToNumber('wrstandardid')
 const formRef = shallowRef<FormInstance>()
 
-const { loading, details, chartData, getWrstandardDetails } = useWrstandardDetails(wrstandardid)
+const { loading, details, customDeposits, chartData, getWrstandardDetails } = useWrstandardDetails(wrstandardid)
 const { formData, formSubmit } = usePurchaseOrderDesting()
 
 // 当前选中的交割日期
@@ -129,28 +129,37 @@ const goodsImages = computed(() => {
     return pictureurls.split(',').map((path) => getImageUrl(path))
 })
 
-// 预售申请列表
+// 定金比例列表,商品定金比例和个性化定金比例进行合并
 const presaleApplyDeposits = computed(() => {
     const deposits = details.value.presaleapplydeposits ?? []
-    const presaleApplyId = selectedDate.value?.presaleapplyid
+    const { presaleapplyid, remainqty = 0 } = selectedDate.value ?? {}
 
-    return deposits.filter((e) => e.presaleapplyid === presaleApplyId).map(({ depositid, depositrate }) => ({
-        label: parsePercent(depositrate),
-        value: depositid
+    const result = deposits.filter((e) => e.presaleapplyid === presaleapplyid).map((e) => ({
+        id: e.depositid,
+        label: parsePercent(e.depositrate),
+        value: e.depositrate,
+        qty: remainqty,
+        type: 1, // 定金类型
     }))
+
+    customDeposits.value.forEach((e) => {
+        result.push({
+            id: '0',
+            label: parsePercent(e.depositrate),
+            value: e.depositrate,
+            qty: e.qty,
+            type: 2, // 定金类型
+        })
+    })
+
+    return result.sort((a, b) => b.value - a.value)
 })
 
 // 计算定金
 const deposit = computed(() => {
-    const { Qty = 0, DepositID } = formData.value
-    const { presaleapplydeposits } = details.value
+    const { Qty = 0, DepositRate = 0 } = formData.value
     const { unitprice = 0 } = selectedDate.value ?? {}
-    const apply = presaleapplydeposits?.find((e) => e.depositid === DepositID?.toString()) // 选中的支付方式
-
-    if (apply) {
-        return (unitprice * apply.depositrate * Qty).toFixed(2)
-    }
-    return '0.00'
+    return (unitprice * DepositRate * Qty).toFixed(2)
 })
 
 // 是否显示收货信息
@@ -199,12 +208,15 @@ const formRules: { [key in keyof Proto.SpotPresaleDestingOrderReq | 'addressInfo
         message: '请输入采购数量',
         validator: (val) => {
             if (val) {
-                const qty = Number(val)
-                const { remainqty = 0 } = selectedDate.value ?? {}
-                if (qty > 0 && qty <= remainqty) {
-                    return true
+                const deposit = presaleApplyDeposits.value.find((e) => e.value === formData.value.DepositRate)
+                if (deposit) {
+                    const qty = Number(val)
+                    if (qty > 0 && qty <= deposit.qty) {
+                        return true
+                    }
+                    return '采购数量不能大于 ' + deposit.qty
                 }
-                return '采购数量不正确'
+                return true
             }
             return false
         }
@@ -227,9 +239,15 @@ const onMonthChange = (value: string) => {
 }
 
 // 切换支付方式
-const onDepositChange = (value: string) => {
-    formData.value.DepositID = Long.fromString(value)
+const onDepositChange = (value: number, index: number) => {
+    const item = presaleApplyDeposits.value[index]
+    formData.value.DepositID = Long.fromString(item.id)
+    formData.value.DepositType = item.type
+    formData.value.DepositRate = item.value
     formRef.value?.validate('DepositID')
+    if (formData.value.Qty) {
+        formRef.value?.validate('Qty')
+    }
 }
 
 // 更新表单数据

BIN
src/packages/pc/assets/images/avatar.png


+ 13 - 13
src/packages/pc/assets/themes/style.less

@@ -3,18 +3,18 @@
 @import './dark/variable.less';
 
 [class*='g-image'] {
-    position  : relative;
+    position: relative;
     object-fit: cover;
-    overflow  : hidden;
+    overflow: hidden;
 
     &:before {
-        content        : '';
-        position       : absolute;
-        left           : 0;
-        top            : 0;
-        width          : 100%;
-        height         : 100%;
-        background     : url("~@pc/assets/images/avatar.jpg") no-repeat center;
+        content: '';
+        position: absolute;
+        left: 0;
+        top: 0;
+        width: 100%;
+        height: 100%;
+        background: url("~@pc/assets/images/avatar.png") no-repeat center;
         background-size: cover;
     }
 }
@@ -32,7 +32,7 @@
 
     .el-menu {
         border-radius: 4px;
-        box-shadow   : 0 2px 30px 0 rgba(0, 0, 0, .15);
+        box-shadow: 0 2px 30px 0 rgba(0, 0, 0, .15);
 
         &--popup {
             min-width: 160px;
@@ -41,9 +41,9 @@
         &--vertical {
             .el-menu {
                 &-item {
-                    height     : 44px;
+                    height: 44px;
                     line-height: 44px;
-                    color      : #666;
+                    color: #666;
 
                     &.is-active {
                         color: var(--sidebar-menu-item-active);
@@ -59,6 +59,6 @@
 
     &__item {
         line-height: 36px;
-        padding    : 0 20px;
+        padding: 0 20px;
     }
 }

+ 10 - 3
src/packages/pc/components/layouts/header/index.vue

@@ -19,7 +19,7 @@
             </div>
             <el-dropdown class="user-dropdown" trigger="click">
                 <span class="user-dropdown__link">
-                    <img class="g-image--avatar" :title="accountName" />
+                    <img class="g-image--avatar" :title="accountName" :src="userAvatar" />
                     <span v-if="!state.isMobile">{{ accountName }}</span>
                     <app-icon class="el-icon--right" icon="ArrowDown" />
                 </span>
@@ -35,17 +35,24 @@
 </template>
 
 <script lang="ts" setup>
-import { ref, onMounted } from 'vue'
+import { ref, onMounted, computed } from 'vue'
 import { ArrowRight, SwitchButton } from '@element-plus/icons-vue'
+import { getImageUrl } from '@/filters'
 import { userStore } from '@/stores'
 import eventBus from '@/services/bus'
 import client from '@/utils/client'
 import AppIcon from '@pc/components/base/icon/index.vue'
 
 const { state } = client
-const { accountName } = userStore.$mapGetters()
+const { userInfo, accountName } = userStore.$mapGetters()
 const fullScreen = ref(false)
 
+// 用户头像
+const userAvatar = computed(() => {
+    const file = userInfo.value?.headurl
+    return file ? getImageUrl(file) : ''
+})
+
 // 全屏
 const setFullSreen = () => {
     document.documentElement.requestFullscreen();

+ 2 - 2
src/packages/pc/components/modules/auth-operation/index.vue

@@ -29,8 +29,8 @@
             </el-dropdown>
             <ul v-else>
                 <li v-for="(item, index) in dataList" :key="index">
-                    <el-button :class="item.className" :type="item.buttonType" :disabled="item.code === componentId"
-                        @click="openComponent(item.code)" :link="linkButton">
+                    <el-button :class="item.className" :type="item.buttonType" size="small"
+                        :disabled="item.code === componentId" @click="openComponent(item.code)" :link="linkButton">
                         <el-icon v-if="item.icon">
                             <component :is="item.icon" />
                         </el-icon>

+ 12 - 12
src/packages/pc/router/index.ts

@@ -38,43 +38,43 @@ const router = historyRouter.create({
 
 // 路由跳转拦截
 router.beforeEach((to, from, next) => {
-    const isLoginOrRegister = to.name === 'login' || to.name === 'register';
-    const title = to.meta.title;
-    document.title = title ? `推广查询系统 - ${title}` : '推广查询系统';
+    const isLoginOrRegister = to.name === 'login' || to.name === 'register'
+    const title = to.meta.title
+    document.title = title ? `推广查询系统 - ${title}` : '推广查询系统'
 
     // 判断服务是否加载完成
     if (service.isReady) {
         if (token.value) {
             if (dynamicRouter.isReady) {
                 if (isLoginOrRegister) {
-                    next('/');
+                    next('/')
                 } else {
-                    next();
+                    next()
                 }
             } else {
                 // 注册动态路由
-                dynamicRouter.registerRoutes();
-                next({ ...to, replace: true });
+                dynamicRouter.registerRoutes()
+                next({ ...to, replace: true })
             }
         } else {
-            dynamicRouter.isReady = false;
+            dynamicRouter.isReady = false
             if (isLoginOrRegister) {
-                next();
+                next()
             } else {
                 next({
                     name: 'login',
                     query: { redirect: to.fullPath },
-                });
+                })
             }
         }
     } else {
         if (to.name === 'boot' || to.name === 'login') {
-            next();
+            next()
         } else {
             next({
                 name: 'boot',
                 query: { redirect: to.fullPath },
-            });
+            })
         }
     }
 })

+ 63 - 0
src/packages/pc/views/ratio/components/history/index.vue

@@ -0,0 +1,63 @@
+<template>
+    <app-drawer title="比例流水" :width="960" v-model:show="show">
+        <app-table :data="dataList" :columns="tableColumns" :loading="loading" border>
+            <template #footer>
+                <app-pagination :total="total" v-model:page-size="pageSize" v-model:page-index="pageIndex"
+                    @change="onRefresh" />
+            </template>
+        </app-table>
+    </app-drawer>
+</template>
+
+<script lang="ts" setup>
+import { shallowRef, PropType } from 'vue'
+import { ElMessage } from 'element-plus'
+import { useDataTable } from '@/hooks/datatable'
+import { queryTHJInvesotrDepositLog } from '@/services/api/common'
+import AppDrawer from '@pc/components/base/drawer/index.vue'
+import AppTable from '@pc/components/base/table/index.vue'
+import AppPagination from '@pc/components/base/pagination/index.vue'
+
+const props = defineProps({
+    selectedRow: {
+        type: Object as PropType<Model.MyDepositRsp>,
+        required: true
+    },
+})
+
+const { dataList, total, pageIndex, pageSize } = useDataTable<Model.THJInvesotrDepositLogRsp>()
+const show = shallowRef(true)
+const loading = shallowRef(false)
+
+const tableColumns = shallowRef<Model.TableColumn[]>([
+    { prop: 'updatetime', label: '变更时间' },
+    { prop: 'oridepositqty', label: '变更前' },
+    { prop: 'changeqty', label: '变更值' },
+    { prop: 'curdepositqty', label: '变更后' },
+    { prop: 'accountname', label: '采购人' },
+    { prop: 'wrtradedetailid', label: '采购单号', width: 180 },
+])
+
+const getTHJInvesotrDepositLog = () => {
+    loading.value = true
+    return queryTHJInvesotrDepositLog({
+        data: {
+            userid: props.selectedRow.userid,
+            depositrate: props.selectedRow.depositrate,
+        },
+        success: (res) => {
+            total.value = res.total
+            dataList.value = res.data
+        },
+        complete: () => {
+            loading.value = false
+        }
+    })
+}
+
+const onRefresh = () => {
+    getTHJInvesotrDepositLog().catch((err) => ElMessage.error(err))
+}
+
+onRefresh()
+</script>

+ 53 - 0
src/packages/pc/views/ratio/index.vue

@@ -0,0 +1,53 @@
+<template>
+    <app-view>
+        <!-- 表格数据 -->
+        <app-table :data="dataList" v-model:columns="tableColumns" :loading="loading">
+            <!-- 比例 -->
+            <template #depositrate="{ value }">
+                {{ parsePercent(value) }}
+            </template>
+            <!-- 操作 -->
+            <template #operate="{ row }">
+                <app-auth-operation :options="{ selectedRow: row }" />
+            </template>
+        </app-table>
+    </app-view>
+</template>
+
+<script lang="ts" setup>
+import { shallowRef } from 'vue'
+import { ElMessage } from 'element-plus'
+import { parsePercent } from '@/filters'
+import { useDataTable } from '@/hooks/datatable'
+import { queryMyDeposit } from '@/services/api/common'
+import { loginStore } from '@/stores'
+import AppTable from '@pc/components/base/table/index.vue'
+import AppAuthOperation from '@pc/components/modules/auth-operation/index.vue'
+
+const { userId } = loginStore.$mapGetters()
+const { dataList } = useDataTable<Model.MyDepositRsp>()
+const loading = shallowRef(false)
+
+const tableColumns = shallowRef<Model.TableColumn[]>([
+    { prop: 'depositrate', label: '比例' },
+    { prop: 'depositqty', label: '剩余量' },
+    { prop: 'operate', label: '操作', width: 160, fixed: 'right' }
+])
+
+const getMyDeposit = () => {
+    loading.value = true
+    return queryMyDeposit({
+        data: {
+            userid: userId.value,
+        },
+        success: (res) => {
+            dataList.value = res.data
+        },
+        complete: () => {
+            loading.value = false
+        }
+    })
+}
+
+getMyDeposit().catch((err) => ElMessage.error(err))
+</script>

+ 21 - 0
src/services/api/common/index.ts

@@ -112,4 +112,25 @@ export function queryTHJFriends(params: HttpParams<{ req: Model.THJFriendsReq, r
  */
 export function queryTHJProfits(params: HttpParams<{ req: Model.THJProfitsReq, rsp: Model.THJProfitsRsp[] }>) {
     return httpRequest('/Ferroalloy/QueryTHJProfits', 'get', params);
+}
+
+/**
+ * 查询本人定金比例
+ */
+export function queryMyDeposit(params: HttpParams<{ req: Partial<Model.MyDepositReq>, rsp: Model.MyDepositRsp[] }>) {
+    return httpRequest('/Ferroalloy/QueryMyDeposit', 'get', params);
+}
+
+/**
+ * 定金比例个性化查询
+ */
+export function queryTHJinvesotrdeposit(params: HttpParams<{ req: Partial<Model.THJinvesotrdepositReq>, rsp: Model.THJinvesotrdepositRsp[] }>) {
+    return httpRequest('/Ferroalloy/QueryTHJinvesotrdeposit', 'get', params);
+}
+
+/**
+ * 比例变更流水查询
+ */
+export function queryTHJInvesotrDepositLog(params: HttpParams<{ req: Partial<Model.THJInvesotrDepositLogReq>, rsp: Model.THJInvesotrDepositLogRsp[] }>) {
+    return httpRequest('/Ferroalloy/QueryTHJInvesotrDepositLog', 'get', params);
 }

+ 9 - 9
src/services/api/order/index.ts

@@ -4,62 +4,62 @@ import { HttpParams } from '@/services/http/interface'
 /**
  * 查询仓单成交明细
  */
- export function queryWrTradeDetail(params: HttpParams<{ req: Partial< Model.WrTradeDetailReq>, rsp: Model.WrTradeDetailRsp[] }>) {
+export function queryWrTradeDetail(params: HttpParams<{ req: Partial<Model.WrTradeDetailReq>, rsp: Model.WrTradeDetailRsp[] }>) {
     return httpRequest('/WrTrade2/QueryWrTradeDetail', 'get', params);
 }
 
 /**
  * 查询仓单委托单
  */
- export function queryWrOrderDetail(params: HttpParams<{ req: Partial<Model.WrOrderDetailReq>, rsp: Model.WrOrderDetailRsp[] }>) {
+export function queryWrOrderDetail(params: HttpParams<{ req: Partial<Model.WrOrderDetailReq>, rsp: Model.WrOrderDetailRsp[] }>) {
     return httpRequest('/WrTrade2/QueryWrOrderDetail', 'get', params);
 }
 
 /**
  * 查询我的订单-采购订单
  */
- export function queryTHJPurchaseTradeDetail(params: HttpParams<{ req: Model.THJPurchaseTradeDetailReq, rsp: Model.THJPurchaseTradeDetailRsp[] }>) {
+export function queryTHJPurchaseTradeDetail(params: HttpParams<{ req: Model.THJPurchaseTradeDetailReq, rsp: Model.THJPurchaseTradeDetailRsp[] }>) {
     return httpRequest('/Ferroalloy/QueryTHJPurchaseTradeDetail', 'get', params);
 }
 
 /**
  * 查询仓单持有记录
  */
- export function queryHoldLB(params: HttpParams<{ req: Model.HoldLBReq, rsp: Model.HoldLBRsp[] }>) {
+export function queryHoldLB(params: HttpParams<{ req: Model.HoldLBReq, rsp: Model.HoldLBRsp[] }>) {
     return httpRequest('/WrTrade2/QueryHoldLB', 'get', params);
 }
 
 /**
  * 查询提货申请
  */
- export function queryWrOutInApply(params: HttpParams<{ req: Model.WrOutInApplyReq, rsp: Model.WrOutInApplyRsp[] }>) {
+export function queryWrOutInApply(params: HttpParams<{ req: Model.WrOutInApplyReq, rsp: Model.WrOutInApplyRsp[] }>) {
     return httpRequest('/WrTrade2/QueryWrOutInApply', 'get', params);
 }
 
 /**
  * 查询我的推广-推广收益
  */
- export function queryTHJPromotionIncome(params: HttpParams<{ req: Model.THJPromotionIncomeReq, rsp: Model.THJPromotionIncomeRsp[] }>) {
+export function queryTHJPromotionIncome(params: HttpParams<{ req: Model.THJPromotionIncomeReq, rsp: Model.THJPromotionIncomeRsp[] }>) {
     return httpRequest('/Ferroalloy/QueryTHJPromotionIncome', 'get', params);
 }
 
 /**
  * 查询我的推广-推广收益-明细
  */
- export function queryTHJPromotionIncomeDetail(params: HttpParams<{ req: Model.THJPromotionIncomeDetailReq, rsp: Model.THJPromotionIncomeDetailRsp[] }>) {
+export function queryTHJPromotionIncomeDetail(params: HttpParams<{ req: Model.THJPromotionIncomeDetailReq, rsp: Model.THJPromotionIncomeDetailRsp[] }>) {
     return httpRequest('/Ferroalloy/QueryTHJPromotionIncomeDetail', 'get', params);
 }
 
 /**
  * 查询我的订单-转让/受让订单
  */
- export function queryTHJPurchaseTransferOrder(params: HttpParams<{ req: Model.THJPurchaseTransferOrderReq, rsp: Model.THJPurchaseTransferOrderRsp[] }>) {
+export function queryTHJPurchaseTransferOrder(params: HttpParams<{ req: Model.THJPurchaseTransferOrderReq, rsp: Model.THJPurchaseTransferOrderRsp[] }>) {
     return httpRequest('/Ferroalloy/QueryTHJPurchaseTransferOrder', 'get', params);
 }
 
 /**
  * 查询我的订单-转让/受让订单-详情
  */
- export function queryTHJPurchaseTransferOrderDetail(params: HttpParams<{ req: Model.THJPurchaseTransferOrderDetailReq, rsp: Model.THJPurchaseTransferOrderDetailRsp[] }>) {
+export function queryTHJPurchaseTransferOrderDetail(params: HttpParams<{ req: Model.THJPurchaseTransferOrderDetailReq, rsp: Model.THJPurchaseTransferOrderDetailRsp[] }>) {
     return httpRequest('/Ferroalloy/QueryTHJPurchaseTransferOrderDetail', 'get', params);
 }

+ 36 - 0
src/services/socket/trade/protobuf/thj.js

@@ -4308,6 +4308,21 @@ var $root = ($protobuf.roots["default"] || ($protobuf.roots["default"] = new $pr
         oneof: [
           "ClientSerialNo"
         ]
+      },
+      _DepositType: {
+        oneof: [
+          "DepositType"
+        ]
+      },
+      _DepositRate: {
+        oneof: [
+          "DepositRate"
+        ]
+      },
+      _UpdatorID: {
+        oneof: [
+          "UpdatorID"
+        ]
       }
     },
     fields: {
@@ -4401,6 +4416,27 @@ var $root = ($protobuf.roots["default"] || ($protobuf.roots["default"] = new $pr
         options: {
           proto3_optional: true
         }
+      },
+      DepositType: {
+        type: "uint32",
+        id: 14,
+        options: {
+          proto3_optional: true
+        }
+      },
+      DepositRate: {
+        type: "double",
+        id: 15,
+        options: {
+          proto3_optional: true
+        }
+      },
+      UpdatorID: {
+        type: "uint32",
+        id: 16,
+        options: {
+          proto3_optional: true
+        }
       }
     }
   },

+ 50 - 0
src/types/model/common.d.ts

@@ -217,6 +217,56 @@ declare global {
             wrstandardname: string; // 商品
         }
 
+        /** 查询本人定金比例 请求 */
+        interface MyDepositReq {
+            userid: number; // 用户ID
+        }
+
+        /** 查询本人定金比例 响应 */
+        interface MyDepositRsp {
+            depositqty: number; // 可用量
+            depositrate: number; // 定金比例
+            userid: number; // 用户ID
+        }
+
+        /** 定金比例个性化查询 请求 */
+        interface THJinvesotrdepositReq {
+            userid: number; // 用户ID
+            wrstandardid: number; // 现货商品ID
+            page?: number; // 页码
+            pagesize?: number; // 每页条数
+        }
+
+        /** 定金比例个性化查询 响应 */
+        interface THJinvesotrdepositRsp {
+            depositrate: number; // 定金比例
+            qty: number; // 可用量
+            userid: number; // 用户ID
+        }
+
+        /** 比例变更流水查询 请求 */
+        interface THJInvesotrDepositLogReq {
+            userid: number; // 用户ID
+            depositrate: number;
+            page?: number; // 页码
+            pagesize?: number; // 每页条数
+        }
+
+        /** 比例变更流水查询 响应 */
+        interface THJInvesotrDepositLogRsp {
+            accountname: string; // 用户名
+            buyuserid: number; // 采购用户ID
+            changeqty: number; // 变更量
+            curdepositqty: string; // 可用量(变更后)
+            depositrate: number; // 定金比例(选中比例)
+            logid: string; // 流水ID(336+Unix秒时间戳(10位)+xxxxxx)
+            oridepositqty: number; // 可用量(变更前)
+            updatetime: string; // 更新时间
+            updatorid: number; // 更新人
+            userid: number; // 用户ID
+            wrtradedetailid: number; // 采购成交单ID
+        }
+
         /** 文件上传请求 */
         interface uploadFileReq {
             /// 文件信息

+ 3 - 0
src/types/proto/trade.d.ts

@@ -18,6 +18,9 @@ declare global {
             ReceiptInfo: string; // 发票信息,THJDeliveryMode=2,3时必填
             ClientType: number; // 终端类型
             ClientSerialNo: string; // 客户端流水号
+            DepositType: number;  // 定金类型,必填,1.商品2.个性化
+            DepositRate: number;  // 定金比例,必填,4位小数
+            UpdatorID: number;  // 操作人,必填
         }
 
         /** 铁合金现货预售摘牌接口应答 */