|
|
@@ -1,6 +1,7 @@
|
|
|
<!-- 预售转让-转让持仓 -->
|
|
|
<template>
|
|
|
- <app-table :data="dataList" v-model:columns="tableColumns" :loading="loading">
|
|
|
+ <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 }}
|
|
|
@@ -21,20 +22,46 @@
|
|
|
<template #paystatus="{ value }">
|
|
|
{{ getPayStatusName(value) }}
|
|
|
</template>
|
|
|
+ <!-- 展开行 -->
|
|
|
+ <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="success" 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="{ selectedRow }" :is="componentMap.get(componentId)"
|
|
|
+ @closed="closeComponent" v-if="componentId" />
|
|
|
+ </template>
|
|
|
</app-table>
|
|
|
</template>
|
|
|
|
|
|
<script lang="ts" setup>
|
|
|
-import { shallowRef } from 'vue'
|
|
|
+import { ref, defineAsyncComponent } from 'vue'
|
|
|
import { parsePercent } from '@/filters'
|
|
|
import { useRequest } from '@/hooks/request'
|
|
|
import { queryMineTradePositionExs } from '@/services/api/transfer'
|
|
|
-import { getPayStatusName } from '@/constants/order'
|
|
|
+import { getPayStatusName, PayStatus } from '@/constants/order'
|
|
|
+import { useComponent } from '@/hooks/component'
|
|
|
+import { useComposeTable } from '@pc/components/base/table'
|
|
|
import AppTable from '@pc/components/base/table/index.vue'
|
|
|
|
|
|
-const { loading, dataList } = useRequest(queryMineTradePositionExs, {})
|
|
|
+const componentMap = new Map<string, unknown>([
|
|
|
+ ['append', defineAsyncComponent(() => import('./append/index.vue'))], // 追加定金
|
|
|
+ ['delivery', defineAsyncComponent(() => import('./delivery/index.vue'))], // 交收
|
|
|
+ ['listing', defineAsyncComponent(() => import('./listing/index.vue'))], // 转让
|
|
|
+])
|
|
|
+
|
|
|
+const { loading, dataList, run } = useRequest(queryMineTradePositionExs, {})
|
|
|
|
|
|
-const tableColumns = shallowRef<Model.TableColumn[]>([
|
|
|
+const { componentRef, componentId, openComponent, closeComponent } = useComponent(() => {
|
|
|
+ run()
|
|
|
+})
|
|
|
+
|
|
|
+const { rowKey, expandKeys, selectedRow, rowClick } = useComposeTable<Model.MineTradePositionExsRsp>({ rowKey: 'goodsid' })
|
|
|
+
|
|
|
+const tableColumns = ref<Model.TableColumn[]>([
|
|
|
{ prop: 'goodsname', label: '商品代码/名称' },
|
|
|
{ prop: 'buycurholderamount', label: '持仓金额' },
|
|
|
{ prop: 'buycurpositionqty', label: '持仓数量' },
|
|
|
@@ -49,4 +76,9 @@ const tableColumns = shallowRef<Model.TableColumn[]>([
|
|
|
{ prop: 'paystatus', label: '支付状态' },
|
|
|
{ prop: 'lasttradedate', label: '最后交易日' }
|
|
|
])
|
|
|
+
|
|
|
+const showComponent = (componentName: string, row?: Model.MineTradePositionExsRsp) => {
|
|
|
+ selectedRow.value = row
|
|
|
+ openComponent(componentName)
|
|
|
+}
|
|
|
</script>
|