li.shaoyi 2 роки тому
батько
коміт
851bb2a041

+ 2 - 2
oem/gstj/config/router.json

@@ -30,14 +30,14 @@
                                 "authType": 3,
                                 "title": "交收",
                                 "code": "bottom_goods_position_delivery16",
-                                "component": "views/footer/goods/position/components/delivery/index.vue",
+                                "component": "views/footer/goods/position/components/delivery16/index.vue",
                                 "className": "el-button--primary"
                             },
                             {
                                 "authType": 3,
                                 "title": "交收",
                                 "code": "bottom_goods_position_delivery50",
-                                "component": "views/footer/goods/position/components/delivery/index.vue",
+                                "component": "views/footer/goods/position/components/delivery50/index.vue",
                                 "className": "el-button--primary"
                             }
                         ]

+ 2 - 2
oem/qxst/config/router.json

@@ -23,7 +23,7 @@
                         "authType": 3,
                         "title": "交收",
                         "code": "bottom_goods_position_delivery16",
-                        "component": "views/footer/goods/position/components/delivery/index.vue",
+                        "component": "views/footer/goods/position/components/delivery16/index.vue",
                         "className": "el-button--primary",
                         "hidden": true
                     },
@@ -31,7 +31,7 @@
                         "authType": 3,
                         "title": "交收",
                         "code": "bottom_goods_position_delivery50",
-                        "component": "views/footer/goods/position/components/delivery/index.vue",
+                        "component": "views/footer/goods/position/components/delivery50/index.vue",
                         "className": "el-button--primary",
                         "hidden": true
                     }

+ 2 - 2
oem/zrwyt/config/router.json

@@ -30,7 +30,7 @@
                                 "authType": 3,
                                 "title": "交收",
                                 "code": "bottom_goods_position_delivery16",
-                                "component": "views/footer/goods/position/components/delivery/index.vue",
+                                "component": "views/footer/goods/position/components/delivery16/index.vue",
                                 "className": "el-button--primary",
                                 "hidden": true
                             },
@@ -38,7 +38,7 @@
                                 "authType": 3,
                                 "title": "交收",
                                 "code": "bottom_goods_position_delivery50",
-                                "component": "views/footer/goods/position/components/delivery/index.vue",
+                                "component": "views/footer/goods/position/components/delivery50/index.vue",
                                 "className": "el-button--primary",
                                 "hidden": true
                             }

+ 1 - 1
public/config/router.json

@@ -37,7 +37,7 @@
                                 "authType": 3,
                                 "title": "交收",
                                 "code": "bottom_goods_position_delivery50",
-                                "component": "views/footer/goods/position/components/delivery/index.vue",
+                                "component": "views/footer/goods/position/components/delivery50/index.vue",
                                 "className": "el-button--primary"
                             }
                         ]

+ 11 - 7
src/packages/pc/views/footer/goods/position/components/delivery16/index.less → src/packages/pc/components/modules/delivery/index.less

@@ -72,18 +72,22 @@
         padding: 6px;
         margin-bottom: 20px;
 
-        li {
+        ul {
             display: flex;
             justify-content: space-between;
             padding: 6px;
 
-            span:not(:first-child) {
-                margin-left: 10px;
-            }
-
-            .block-right {
-                margin-left: auto;
+            li {
+                span:not(:first-child) {
+                    margin-left: 10px;
+                }
             }
         }
     }
+
+    &__empty {
+        color: #546373;
+        text-align: center;
+        padding: 20px;
+    }
 }

+ 161 - 0
src/packages/pc/components/modules/delivery/index.vue

@@ -0,0 +1,161 @@
+<!-- 交收操作 -->
+<template>
+    <app-drawer class="app-delivery" title="交收" :width="600" v-model:show="show" :loading="loading" :refresh="refresh">
+        <div class="app-delivery__header">
+            <slot name="header"></slot>
+        </div>
+        <div class="app-delivery__form el-form--vertical" v-if="dataList.length">
+            <table cellspacing="0" cellpadding="0">
+                <thead>
+                    <tr>
+                        <th>持有人/商品/仓库</th>
+                        <th>升贴水</th>
+                        <th>数量</th>
+                        <th>交收数量</th>
+                    </tr>
+                </thead>
+                <template v-for="(item, index) in dataList" :key="index">
+                    <tbody>
+                        <tr>
+                            <td colspan="4">
+                                <span>{{ item.username }}</span>
+                            </td>
+                        </tr>
+                        <tr>
+                            <td>
+                                <span>{{ item.wrstandardname }}</span>
+                                <span>{{ item.warehousename }}</span>
+                            </td>
+                            <td>{{ item.pricemove }}</td>
+                            <td>{{ item.avalidqty }}</td>
+                            <td>
+                                <el-input-number placeholder="请输入" v-model="item.deliveryLot" :precision="0"
+                                    :max="maxQty(index)" :min="0" />
+                            </td>
+                        </tr>
+                    </tbody>
+                    <tbody class="spacing" v-if="(dataList.length - 1) > index"></tbody>
+                </template>
+            </table>
+        </div>
+        <div class="app-delivery__empty" v-else>暂无数据</div>
+        <template #footer>
+            <div class="app-delivery__details">
+                <slot name="footer" :discount="discount" :qty="qty"></slot>
+            </div>
+            <div class="app-delivery__btnbar">
+                <el-button type="info" @click="onCancel(false)">取消</el-button>
+                <el-button type="primary" @click="onSubmit">交收</el-button>
+            </div>
+        </template>
+    </app-drawer>
+</template>
+
+<script lang="ts" setup>
+import { ref, computed } from 'vue'
+import { v4 } from 'uuid'
+import { ElMessage } from 'element-plus'
+import { ClientType } from '@/constants/client'
+import { useRequest } from '@/hooks/request'
+import { queryWrDeliveryAvalidHoldLB } from '@/services/api/transfer'
+import { deliveryOrder } from '@/services/api/trade'
+import { useAccountStore } from '@/stores'
+import moment from 'moment'
+import AppDrawer from '@pc/components/base/drawer/index.vue'
+
+const props = defineProps({
+    goodsId: {
+        type: Number,
+        required: true,
+    },
+    total: {
+        type: Number,
+        required: true,
+    }
+})
+
+const accountStore = useAccountStore()
+const show = ref(true)
+const refresh = ref(false)
+const loading = ref(false)
+const dataList = ref<(Model.WrDeliveryAvalidHoldLBRsp & { deliveryLot: number })[]>([])
+
+useRequest(queryWrDeliveryAvalidHoldLB, {
+    params: {
+        goodsid: props.goodsId,
+    },
+    onSuccess: (res) => {
+        dataList.value = res.data.map((e) => ({
+            ...e,
+            deliveryLot: 0,
+        }))
+    }
+})
+
+// 已点选数量
+const qty = computed(() => dataList.value.reduce((pre, cur) => pre + cur.deliveryLot, 0))
+
+// 升贴水
+const discount = computed(() => {
+    return dataList.value.reduce((pre, cur) => pre + cur.deliveryLot * cur.pricemove, 0)
+})
+
+// 最大交收数量
+const maxQty = (index: number) => {
+    const item = dataList.value[index]
+    const count = dataList.value.reduce((pre, cur, i) => i === index ? pre : pre + cur.deliveryLot, 0) // 计算已点选数量
+    const max = props.total - count
+    return max >= item.avalidqty ? item.avalidqty : max
+}
+
+const onCancel = (isRefresh = false) => {
+    show.value = false
+    refresh.value = isRefresh
+}
+
+const onSubmit = async () => {
+    if (dataList.value.some((e) => e.deliveryLot)) {
+        const errMessage: string[] = []
+        loading.value = true
+        for (let i = 0; i < dataList.value.length; i++) {
+            const e = dataList.value[i]
+            if (e.deliveryLot) {
+                await deliveryOrder({
+                    data: {
+                        ClientType: ClientType.Web,
+                        AccountID: accountStore.currentAccountId,
+                        XGoodsID: props.goodsId,
+                        DeliveryGoodsID: e.deliverygoodsid,
+                        ClientSerialNo: v4(),
+                        ClientOrderTime: moment(new Date()).format('YYYY-MM-DD HH:mm:ss'),
+                        XQty: e.deliveryLot,
+                        DeliveryQty: e.deliveryLot,
+                        DeliveryOrderDetail: {
+                            AccountID: e.accountid, // 对手方账号
+                            Qty: e.deliveryLot, // 点选数量
+                            LadingBillID: e.ladingbillid,// 提单ID
+                            SubNum: e.subnum, // 提单子单号
+                            WRFactorTypeID: e.wrfactortypeid, // 仓单要素类型ID
+                        }
+                    }
+                }).catch((err) => {
+                    errMessage.push(err)
+                })
+            }
+        }
+        loading.value = false
+        if (errMessage.length) {
+            ElMessage.error('部分交收失败:' + errMessage[0])
+        } else {
+            ElMessage.success('提交成功')
+        }
+        onCancel(true)
+    } else {
+        ElMessage.warning('请输入交收数量')
+    }
+}
+</script>
+
+<style lang="less">
+@import './index.less';
+</style>

+ 18 - 151
src/packages/pc/views/footer/goods/position/components/delivery16/index.vue

@@ -1,170 +1,37 @@
 <!-- 商品订单-合约汇总-交收 -->
 <template>
-    <app-drawer class="app-delivery" title="交收" :width="600" v-model:show="show" :loading="loading" :refresh="refresh">
-        <div class="app-delivery__header">
+    <Delivery v-bind="{ goodsId: selectedRow.goodsid, total: selectedRow.enableqty }">
+        <template #header>
             <span>持仓数量:{{ selectedRow.curpositionqty }}</span>
             <span>可用数量:{{ selectedRow.enableqty }}</span>
-        </div>
-        <div class="app-delivery__form el-form--vertical">
-            <table cellspacing="0" cellpadding="0">
-                <thead>
-                    <tr>
-                        <th>持有人/商品/仓库</th>
-                        <th>升贴水</th>
-                        <th>数量</th>
-                        <th>交收数量</th>
-                    </tr>
-                </thead>
-                <template v-for="(item, index) in dataList" :key="index">
-                    <tbody>
-                        <tr>
-                            <td colspan="4">
-                                <span>{{ item.username }}</span>
-                            </td>
-                        </tr>
-                        <tr>
-                            <td>
-                                <span>{{ item.wrstandardname }}</span>
-                                <span>{{ item.warehousename }}</span>
-                            </td>
-                            <td>{{ item.pricemove }}</td>
-                            <td>{{ item.avalidqty }}</td>
-                            <td>
-                                <el-input-number placeholder="请输入" v-model="item.deliveryLot" :precision="0"
-                                    :max="maxQty(index)" :min="0" />
-                            </td>
-                        </tr>
-                    </tbody>
-                    <tbody class="spacing" v-if="(dataList.length - 1) > index"></tbody>
-                </template>
-            </table>
-        </div>
-        <template #footer>
-            <ul class="app-delivery__details">
+        </template>
+        <template #footer="{ discount, qty }">
+            <ul>
                 <li>
-                    <div class="block-left">
-                        <span>{{ selectedRow.goodsname }}</span>
-                        <span :class="selectedRow.lastColor">{{ selectedRow.lastprice }}</span>
-                    </div>
-                    <div class="block-right">
-                        <span>已点选数量:{{ totalQty }}</span>
-                    </div>
+                    <span>{{ selectedRow.goodsname }}</span>
+                    <span :class="selectedRow.lastColor">{{ selectedRow.lastprice }}</span>
                 </li>
                 <li>
-                    <div class="block-right">
-                        <span>升贴水:{{ discount }}</span>
-                    </div>
+                    <span>已点数量:{{ qty }}</span>
+                </li>
+            </ul>
+            <ul>
+                <li style="margin-left: auto;">
+                    <span>升贴水:{{ discount }}</span>
                 </li>
             </ul>
-            <div class="app-delivery__btnbar">
-                <el-button type="info" @click="onCancel(false)">取消</el-button>
-                <el-button type="primary" @click="onSubmit">交收</el-button>
-            </div>
         </template>
-    </app-drawer>
+    </Delivery>
 </template>
 
 <script lang="ts" setup>
-import { ref, PropType, computed } from 'vue'
-import { v4 } from 'uuid'
-import { ElMessage } from 'element-plus'
-import { ClientType } from '@/constants/client'
-import { useRequest } from '@/hooks/request'
-import { queryWrDeliveryAvalidHoldLB } from '@/services/api/transfer'
-import { deliveryOrder } from '@/services/api/trade'
-import { useAccountStore } from '@/stores'
-import moment from 'moment'
-import AppDrawer from '@pc/components/base/drawer/index.vue'
+import { PropType } from 'vue'
+import Delivery from '@pc/components/modules/delivery/index.vue'
 
-const props = defineProps({
+defineProps({
     selectedRow: {
         type: Object as PropType<Model.TradePositionRsp & { lastColor: string }>,
         required: true,
     }
 })
-
-const accountStore = useAccountStore()
-const show = ref(true)
-const refresh = ref(false)
-const loading = ref(false)
-const dataList = ref<(Model.WrDeliveryAvalidHoldLBRsp & { deliveryLot: number })[]>([])
-
-useRequest(queryWrDeliveryAvalidHoldLB, {
-    params: {
-        goodsid: props.selectedRow.goodsid,
-    },
-    onSuccess: (res) => {
-        dataList.value = res.data.map((e) => ({
-            ...e,
-            deliveryLot: 0,
-        }))
-    }
-})
-
-// 已点选数量
-const totalQty = computed(() => dataList.value.reduce((pre, cur) => pre + cur.deliveryLot, 0))
-
-// 升贴水
-const discount = computed(() => {
-    return dataList.value.reduce((pre, cur) => pre + cur.deliveryLot * cur.pricemove, 0)
-})
-
-// 最大交收数量
-const maxQty = (index: number) => {
-    const item = dataList.value[index]
-    const total = dataList.value.reduce((pre, cur, i) => i === index ? pre : pre + cur.deliveryLot, 0) // 计算已点选数量
-    const max = props.selectedRow.enableqty - total
-    return max >= item.avalidqty ? item.avalidqty : max
-}
-
-const onCancel = (isRefresh = false) => {
-    show.value = false
-    refresh.value = isRefresh
-}
-
-const onSubmit = async () => {
-    if (dataList.value.some((e) => e.deliveryLot)) {
-        const errMessage: string[] = []
-        loading.value = true
-        for (let i = 0; i < dataList.value.length; i++) {
-            const e = dataList.value[i]
-            if (e.deliveryLot) {
-                await deliveryOrder({
-                    data: {
-                        ClientType: ClientType.Web,
-                        AccountID: accountStore.currentAccountId,
-                        XGoodsID: props.selectedRow.goodsid,
-                        DeliveryGoodsID: e.deliverygoodsid,
-                        ClientSerialNo: v4(),
-                        ClientOrderTime: moment(new Date()).format('YYYY-MM-DD HH:mm:ss'),
-                        XQty: e.deliveryLot,
-                        DeliveryQty: e.deliveryLot,
-                        DeliveryOrderDetail: {
-                            AccountID: e.accountid, // 对手方账号
-                            Qty: e.deliveryLot, // 点选数量
-                            LadingBillID: e.ladingbillid,// 提单ID
-                            SubNum: e.subnum, // 提单子单号
-                            WRFactorTypeID: e.wrfactortypeid, // 仓单要素类型ID
-                        }
-                    }
-                }).catch((err) => {
-                    errMessage.push(err)
-                })
-            }
-        }
-        loading.value = false
-        if (errMessage.length) {
-            ElMessage.error('部分交收失败:' + errMessage[0])
-        } else {
-            ElMessage.success('提交成功')
-        }
-        onCancel(true)
-    } else {
-        ElMessage.warning('请输入交收数量')
-    }
-}
-</script>
-
-<style lang="less">
-@import './index.less';
-</style>
+</script>

+ 0 - 0
src/packages/pc/views/footer/goods/position/components/delivery/index.vue → src/packages/pc/views/footer/goods/position/components/delivery50/index.vue


+ 0 - 1
src/packages/pc/views/footer/goods/position/index.vue

@@ -44,7 +44,6 @@ defineProps({
 })
 
 const componentMap = new Map<string, unknown>([
-    ['delivery', defineAsyncComponent(() => import('./components/delivery/index.vue'))],
     ['transfer', defineAsyncComponent(() => import('./components/transfer/index.vue'))],
 ])
 

+ 47 - 59
src/packages/pc/views/footer/presell/transferposition/delivery/index.vue

@@ -1,78 +1,66 @@
 <!-- 预售转让-转让持仓-交收申请 -->
 <template>
-     <app-drawer title="交收申请" v-model:show="show" :loading="loading" :refresh="refresh" :width="900">
-        <app-table :data="dataList" v-model:columns="tableColumns" :loading="loading" :row-key="rowKey"
-            :expand-row-keys="expandKeys" @row-click="rowClick">
-            <!-- 商品代码/名称 -->
-            <template #wrstandardname="{ row }">
-                {{ row.wrstandardcode }}/{{ row.wrstandardname }}
-            </template>
-            <!-- 展开行 -->
-            <template #expand="{ row }">
-                <div class="buttonbar">
-                    <el-button type="danger" size="small" @click="showComponent('trader', row)">点选</el-button>
-                </div>
-            </template>
-            <template #footer>
-                <component ref="componentRef" v-bind="{ selectedRow, detail }" :is="componentMap.get(componentId)"
-                    @closed="closeComponent" v-if="componentId" />
-            </template>
-        </app-table>
-        <template #footer>
-            <el-button type="info" @click="onCancel(false)">取消</el-button>
+    <Delivery v-bind="{ goodsId: selectedRow.goodsid, total: enableqty }">
+        <template #header>
+            <span>持仓数量:{{ selectedRow.buycurpositionqty }}</span>
+            <span>可用数量:{{ enableqty }}</span>
         </template>
-    </app-drawer>
+        <template #footer="{ qty, discount }">
+            <ul>
+                <li>
+                    <span>{{ selectedRow.goodscode }}/{{ selectedRow.goodsname }}</span>
+                </li>
+                <li>
+                    <span>已点数量:{{ qty }}</span>
+                </li>
+            </ul>
+            <ul>
+                <li>
+                    <span>总货款:{{ payment(qty) }}</span>
+                </li>
+                <li>
+                    <span>升贴水:{{ discount }}</span>
+                </li>
+            </ul>
+            <ul>
+                <li>
+                    <span>剩余货款:{{ available(qty, discount) }}</span>
+                </li>
+                <li>
+                    <span>已付定金:{{ deposit(qty) }}</span>
+                </li>
+
+            </ul>
+        </template>
+    </Delivery>
 </template>
 
 <script lang="ts" setup>
-import { ref, defineAsyncComponent, PropType } from 'vue'
-import { useRequest } from '@/hooks/request'
-import { queryWrDeliveryAvalidHoldLB } from '@/services/api/transfer'
-import { useComponent } from '@/hooks/component'
-import { useComposeTable } from '@pc/components/base/table'
-import AppDrawer from '@pc/components/base/drawer/index.vue'
-import AppTable from '@pc/components/base/table/index.vue'
-
-const componentMap = new Map<string, unknown>([
-    ['trader', defineAsyncComponent(() => import('./trader/index.vue'))], // 追加定金
-])
-const show = ref(true)
-const refresh = ref(false)
+import { PropType, computed } from 'vue'
+import Delivery from '@pc/components/modules/delivery/index.vue'
 
 const props = defineProps({
-    detail: {
+    selectedRow: {
         type: Object as PropType<Model.MineTradePositionExsRsp>,
         required: true,
     }
 })
 
-const { loading, dataList, run } = useRequest(queryWrDeliveryAvalidHoldLB, {
-    params: {
-        pagesize: 20,
-        goodsid: props.detail.goodsid,
-    },
-})
-
-const { componentRef, componentId, openComponent, closeComponent } = useComponent(() => {
-    run()
-})
-
-const { rowKey, expandKeys, selectedRow, rowClick } = useComposeTable<Model.WrDeliveryAvalidHoldLBRsp>({ rowKey: 'ladingbillid' })
+// 可用数量
+const enableqty = computed(() => props.selectedRow.buycurpositionqty - props.selectedRow.buyfrozenqty)
 
-const tableColumns = ref<Model.TableColumn[]>([
-    { prop: 'wrstandardname', label: '商品代码/名称' },
-    { prop: 'username', label: '仓单持有人' },
-    { prop: 'warehousename', label: '仓库' },
-    { prop: 'pricemove', label: '升贴水' },
-    { prop: 'avalidqty', label: '可用数量' },
-])
+// 总货款
+const payment = (qty: number) => {
+    return props.selectedRow.presaleprice * qty
+}
 
-const showComponent = (componentName: string) => {
-    openComponent(componentName)
+// 已付定金
+const deposit = (qty: number) => {
+    return payment(qty) * props.selectedRow.transferdepositratio
 }
 
-const onCancel = (isRefresh = false) => {
-    show.value = false
-    refresh.value = isRefresh
+// 剩余货款
+const available = (qty: number, discount: number) => {
+    return payment(qty) - deposit(qty) + discount
 }
 </script>

+ 0 - 129
src/packages/pc/views/footer/presell/transferposition/delivery/trader/index.vue

@@ -1,129 +0,0 @@
-<!-- 预售转让-转让持仓-交收申请-点选 -->
-<template>
-    <app-drawer title="点选" v-model:show="show" :refresh="refresh" :width="800">
-        <el-form ref="formRef" class="el-form--horizontal" label-width="120px" label-position="left" :model="formData"
-            :rules="formRules">
-            <el-form-item label="商品代码/名称">
-                <span>{{ selectedRow.wrstandardcode }}/{{ selectedRow.wrstandardname }}</span>
-            </el-form-item>
-            <el-form-item label="仓库">
-                <span>{{ selectedRow.warehousename }}</span>
-            </el-form-item>
-            <el-form-item label="升贴水">
-                <span>{{ discount.toFixed(2) }}</span>
-            </el-form-item>
-            <el-form-item label="数量">
-                <span>{{ selectedRow.avalidqty }}</span>
-            </el-form-item>
-            <el-form-item label="总货款">
-                <span>{{ payment.toFixed(2) }}</span>
-            </el-form-item>
-            <el-form-item label="已付定金">
-                <span>{{ deposit.toFixed(2) }}</span>
-            </el-form-item>
-            <el-form-item label="剩余货款">
-                <span>{{ available.toFixed(2) }}</span>
-            </el-form-item>
-            <el-form-item prop="DeliveryQty" label="点选数量">
-                <el-input-number placeholder="请输入点选数量" v-model="formData.DeliveryQty" :max="selectedRow.avalidqty" :min="0" />
-            </el-form-item>
-        </el-form>
-        <template #footer>
-            <el-button type="info" @click="onCancel(false)">取消</el-button>
-            <el-button type="primary" @click="onSubmit">提交</el-button>
-        </template>
-    </app-drawer>
-</template>
-
-<script lang="ts" setup>
-import { ref, PropType, computed, reactive } from 'vue'
-import { ElMessage, FormInstance, FormRules } from 'element-plus'
-import { deliveryOrder } from '@/services/api/trade'
-import { v4 } from 'uuid'
-import { ClientType } from '@/constants/client'
-import { useAccountStore } from '@/stores'
-import moment from 'moment'
-import AppDrawer from '@pc/components/base/drawer/index.vue'
-
-const props = defineProps({
-    selectedRow: {
-        type: Object as PropType<Model.WrDeliveryAvalidHoldLBRsp>,
-        required: true
-    },
-    detail: {
-        type: Object as PropType<Model.MineTradePositionExsRsp>,
-        required: true
-    },
-})
-
-// 可用数量
-const accountStore = useAccountStore()
-
-const show = ref(true)
-const refresh = ref(false)
-const formRef = ref<FormInstance>()
-const formData = reactive<Partial<Proto.DeliveryOrderReq>>({
-    ClientType: ClientType.Web,
-    AccountID: accountStore.currentAccountId,
-    XGoodsID: props.selectedRow.goodsid,
-    DeliveryGoodsID: props.selectedRow.deliverygoodsid,
-})
-
-// 升贴水
-const discount = computed(() => {
-    return props.selectedRow.pricemove * (formData.DeliveryQty ?? 0)
-})
-
-// 总货款
-const payment = computed(() => {
-    return props.detail.presaleprice * (formData.DeliveryQty ?? 0)
-})
-
-// 剩余货款
-const available = computed(() => {
-    return payment.value - deposit.value + discount.value
-})
-
-// 已付定金
-const deposit = computed(() => {
-    return payment.value * props.detail.transferdepositratio
-})
-
-const formRules: FormRules = {
-    DeliveryQty: [{
-        message: '请输入数量',
-        validator: () => {
-            return !!formData.DeliveryQty
-        }
-    }],
-}
-
-const onCancel = (isRefresh = false) => {
-    show.value = false
-    refresh.value = isRefresh
-}
-
-const onSubmit = () => {
-    formRef.value?.validate((valid) => {
-        if (valid) {
-            formData.ClientSerialNo = v4()
-            formData.ClientOrderTime = moment(new Date()).format('YYYY-MM-DD HH:mm:ss')
-            formData.XQty = formData.DeliveryQty
-            formData.DeliveryOrderDetail = {
-                AccountID: props.selectedRow.accountid, // 对手方账号
-                Qty: formData.DeliveryQty, // 点选数量
-                LadingBillID: props.selectedRow.ladingbillid,// 提单ID
-                SubNum: props.selectedRow.subnum, // 提单子单号
-                WRFactorTypeID: props.selectedRow.wrfactortypeid, // 仓单要素类型ID
-            }
-            /// 提交
-            deliveryOrder({ data: formData  }).then(() => {
-                ElMessage.success('挂牌提交成功')
-                onCancel(true)
-            }).catch((err) => {
-                ElMessage.error('挂牌提交失败:' + err)
-            })
-        }
-    })
-}
-</script>

+ 16 - 17
src/packages/pc/views/footer/presell/transferposition/index.vue

@@ -1,11 +1,7 @@
 <!-- 预售转让-转让持仓 -->
 <template>
     <app-table :data="dataList" v-model:columns="tableColumns" :loading="loading" :row-key="rowKey"
-            :expand-row-keys="expandKeys" @row-click="rowClick">
-        <!-- 商品代码/名称 -->
-        <template #goodsname="{ row }">
-            {{ row.goodscode }}/{{ row.goodsname }}
-        </template>
+        :expand-row-keys="expandKeys" @row-click="rowClick">
         <!-- 可用数量-->
         <template #enableqty="{ row }">
             {{ row.buycurpositionqty - row.buyfrozenqty }}
@@ -14,9 +10,9 @@
         <template #transferdepositratio="{ value }">
             {{ parsePercent(value) }}
         </template>
-         <!-- 总货款-->
-         <template #totalamount="{ row }">
-            {{ row.buycurpositionqty*row.presaleprice }}
+        <!-- 总货款-->
+        <template #totalamount="{ row }">
+            {{ row.buycurpositionqty * row.presaleprice }}
         </template>
         <!-- 支付状态 -->
         <template #paystatus="{ value }">
@@ -25,20 +21,23 @@
         <!-- 展开行 -->
         <template #expand="{ row }">
             <div class="buttonbar">
-                <el-button type="danger" v-if="row.paystatus === PayStatus.UnPay" size="small" @click="showComponent('append', row)">追加定金</el-button>
-                <el-button type="danger" v-if="row.paystatus === 2" size="small" @click="showComponent('listing', row)">转让</el-button>
-                <el-button type="primary" v-if="row.paystatus === 2" size="small" @click="showComponent('delivery', row)">交收</el-button>
+                <el-button type="danger" v-if="row.paystatus === PayStatus.UnPay" size="small"
+                    @click="showComponent('append', row)">追加定金</el-button>
+                <el-button type="danger" v-if="row.paystatus === 2" size="small"
+                    @click="showComponent('listing', row)">转让</el-button>
+                <el-button type="primary" v-if="row.paystatus === 2" size="small"
+                    @click="showComponent('delivery', row)">交收</el-button>
             </div>
         </template>
         <template #footer>
-            <component ref="componentRef" v-bind="{ detail }" :is="componentMap.get(componentId)"
+            <component ref="componentRef" v-bind="{ selectedRow }" :is="componentMap.get(componentId)"
                 @closed="closeComponent" v-if="componentId" />
         </template>
     </app-table>
 </template>
 
 <script lang="ts" setup>
-import { ref, defineAsyncComponent, shallowRef } from 'vue'
+import { ref, defineAsyncComponent } from 'vue'
 import { parsePercent } from '@/filters'
 import { useRequest } from '@/hooks/request'
 import { queryMineTradePositionExs } from '@/services/api/transfer'
@@ -53,17 +52,17 @@ const componentMap = new Map<string, unknown>([
     ['listing', defineAsyncComponent(() => import('./listing/index.vue'))], // 转让
 ])
 
-const detail = shallowRef<Model.MineTradePositionExsRsp>()
 const { loading, dataList, run } = useRequest(queryMineTradePositionExs, {})
 
 const { componentRef, componentId, openComponent, closeComponent } = useComponent(() => {
     run()
 })
 
-const { rowKey, expandKeys, rowClick } = useComposeTable<Model.MineTradePositionExsRsp>({ rowKey: 'goodsid' })
+const { selectedRow, rowKey, expandKeys, rowClick } = useComposeTable<Model.MineTradePositionExsRsp>({ rowKey: 'goodsid' })
 
 const tableColumns = ref<Model.TableColumn[]>([
-    { prop: 'goodsname', label: '商品代码/名称' },
+    { prop: 'goodscode', label: '代码' },
+    { prop: 'goodsname', label: '名称' },
     { prop: 'buycurholderamount', label: '持仓金额' },
     { prop: 'buycurpositionqty', label: '持仓数量' },
     { prop: 'buyfrozenqty', label: '冻结数量' },
@@ -79,7 +78,7 @@ const tableColumns = ref<Model.TableColumn[]>([
 ])
 
 const showComponent = (componentName: string, row?: Model.MineTradePositionExsRsp) => {
-    detail.value = row
+    selectedRow.value = row
     openComponent(componentName)
 }
 </script>