Skip to content

Commit 5270c83

Browse files
author
puhui999
committed
订单列表:完善表头宽度自适应
1 parent 04d88ce commit 5270c83

File tree

1 file changed

+57
-35
lines changed

1 file changed

+57
-35
lines changed

src/views/mall/trade/order/components/OrderTableColumn.vue

Lines changed: 57 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -1,27 +1,43 @@
11
<template>
22
<el-table-column class-name="order-table-col">
33
<template #header>
4-
<!-- TODO @puhui999:小屏幕下,会有偏移,后续看看 -->
54
<div class="flex items-center" style="width: 100%">
6-
<div class="ml-100px mr-200px">商品信息</div>
7-
<div class="mr-60px">单价(元)/数量</div>
8-
<div class="mr-60px">售后状态</div>
9-
<div class="mr-60px">实付金额(元)</div>
10-
<div class="mr-60px">买家/收货人</div>
11-
<div class="mr-60px">配送方式</div>
12-
<div class="mr-60px">订单状态</div>
13-
<div class="mr-60px">操作</div>
5+
<div :style="{ width: orderTableHeadWidthList[0] + 'px' }" class="flex justify-center">
6+
商品信息
7+
</div>
8+
<div :style="{ width: orderTableHeadWidthList[1] + 'px' }" class="flex justify-center">
9+
单价(元)/数量
10+
</div>
11+
<div :style="{ width: orderTableHeadWidthList[2] + 'px' }" class="flex justify-center">
12+
售后状态
13+
</div>
14+
<div :style="{ width: orderTableHeadWidthList[3] + 'px' }" class="flex justify-center">
15+
实付金额(元)
16+
</div>
17+
<div :style="{ width: orderTableHeadWidthList[4] + 'px' }" class="flex justify-center">
18+
买家/收货人
19+
</div>
20+
<div :style="{ width: orderTableHeadWidthList[5] + 'px' }" class="flex justify-center">
21+
配送方式
22+
</div>
23+
<div :style="{ width: orderTableHeadWidthList[6] + 'px' }" class="flex justify-center">
24+
订单状态
25+
</div>
26+
<div :style="{ width: orderTableHeadWidthList[7] + 'px' }" class="flex justify-center">
27+
操作
28+
</div>
1429
</div>
1530
</template>
1631
<template #default="scope">
1732
<el-table
33+
:ref="setOrderTableRef"
1834
:border="true"
1935
:data="scope.row.items"
2036
:header-cell-style="headerStyle"
2137
:span-method="spanMethod"
2238
style="width: 100%"
2339
>
24-
<el-table-column class-name="table-col-1" min-width="300" prop="spuName">
40+
<el-table-column min-width="300" prop="spuName">
2541
<template #header>
2642
<div
2743
class="flex items-center"
@@ -60,36 +76,25 @@
6076
</div>
6177
</template>
6278
</el-table-column>
63-
<el-table-column class-name="table-col-2" label="商品原价*数量" prop="price" width="150">
79+
<el-table-column label="商品原价*数量" prop="price" width="150">
6480
<template #default="{ row }">
6581
{{ floatToFixed2(row.price) }} 元 / {{ row.count }}
6682
</template>
6783
</el-table-column>
68-
<el-table-column
69-
class-name="table-col-3"
70-
label="售后状态"
71-
prop="afterSaleStatus"
72-
width="120"
73-
>
84+
<el-table-column label="售后状态" prop="afterSaleStatus" width="120">
7485
<template #default="{ row }">
7586
<dict-tag
7687
:type="DICT_TYPE.TRADE_ORDER_ITEM_AFTER_SALE_STATUS"
7788
:value="row.afterSaleStatus"
7889
/>
7990
</template>
8091
</el-table-column>
81-
<el-table-column
82-
align="center"
83-
class-name="table-col-4"
84-
label="实际支付"
85-
min-width="120"
86-
prop="payPrice"
87-
>
92+
<el-table-column align="center" label="实际支付" min-width="120" prop="payPrice">
8893
<template #default>
8994
{{ floatToFixed2(scope.row.payPrice) + '元' }}
9095
</template>
9196
</el-table-column>
92-
<el-table-column class-name="table-col-5" label="买家/收货人" min-width="160">
97+
<el-table-column label="买家/收货人" min-width="160">
9398
<template #default>
9499
<!-- 快递发货 -->
95100
<div
@@ -122,23 +127,17 @@
122127
</div>
123128
</template>
124129
</el-table-column>
125-
<el-table-column align="center" class-name="table-col-6" label="配送方式" width="120">
130+
<el-table-column align="center" label="配送方式" width="120">
126131
<template #default>
127132
<dict-tag :type="DICT_TYPE.TRADE_DELIVERY_TYPE" :value="scope.row.deliveryType" />
128133
</template>
129134
</el-table-column>
130-
<el-table-column align="center" class-name="table-col-7" label="订单状态" width="120">
135+
<el-table-column align="center" label="订单状态" width="120">
131136
<template #default>
132137
<dict-tag :type="DICT_TYPE.TRADE_ORDER_STATUS" :value="scope.row.status" />
133138
</template>
134139
</el-table-column>
135-
<el-table-column
136-
align="center"
137-
class-name="table-col-8"
138-
fixed="right"
139-
label="操作"
140-
width="160"
141-
>
140+
<el-table-column align="center" fixed="right" label="操作" width="160">
142141
<template #default>
143142
<slot :row="scope.row"></slot>
144143
</template>
@@ -154,7 +153,7 @@ import { formatDate } from '@/utils/formatTime'
154153
import { floatToFixed2 } from '@/utils'
155154
import * as TradeOrderApi from '@/api/mall/trade/order'
156155
import { OrderVO } from '@/api/mall/trade/order'
157-
import { TableColumnCtx } from 'element-plus'
156+
import type { TableColumnCtx, TableInstance } from 'element-plus'
158157
import { createImageViewer } from '@/components/ImageViewer'
159158
import type { DeliveryPickUpStoreVO } from '@/api/mall/trade/delivery/pickUpStore'
160159
@@ -208,6 +207,29 @@ const spanMethod = ({ row, rowIndex, columnIndex }: SpanMethodProps): spanMethod
208207
}
209208
}
210209
210+
/** 解决 ref 在 v-for 中的获取问题*/
211+
const setOrderTableRef = (el: TableInstance) => {
212+
if (!el) return
213+
// 只要第一个表也就是开始的第一行
214+
if (el.tableId !== 'el-table_2') {
215+
return
216+
}
217+
tableHeadWidthAuto(el)
218+
}
219+
// 头部 col 宽度初始化
220+
const orderTableHeadWidthList = ref([300, 150, 120, 120, 160, 120, 120, 160])
221+
// 头部宽度自适应
222+
const tableHeadWidthAuto = (el: TableInstance) => {
223+
const columns = el.store.states.columns.value
224+
if (columns.length === 0) {
225+
return
226+
}
227+
columns.forEach((col: TableColumnCtx<TableInstance>, index: number) => {
228+
if (col.realWidth) {
229+
orderTableHeadWidthList.value[index] = col.realWidth
230+
}
231+
})
232+
}
211233
/** 商品图预览 */
212234
const imagePreview = (imgUrl: string) => {
213235
createImageViewer({

0 commit comments

Comments
 (0)