列表格式化与样式:formatter、titleStyle/valueStyle、extra、click

<template>
	<view class="table-demo">
		<vol-alert type="primary">
			<view>只读展示:formatter HTML、列/表级 titleStyle/valueStyle、extra 后缀、click + @valueClick。</view>
		</vol-alert>
		<vol-table direction="list" titleField="OrderNo" :table-data="tableData" :columns="columns"
			:titleStyle="titleStyle" :valueStyle="valueStyle" @valueClick="onValueClick" />
	</view>
</template>

<!--
更多表单配置:http://app.volcore.xyz/docs/app/form/
更多表格配置:http://app.volcore.xyz/docs/app/table/
-->
<script setup>
import { ref, getCurrentInstance } from 'vue'
const { proxy } = getCurrentInstance()

const titleStyle = (fields, item) => {
	if (item.field === 'TotalPrice') return 'color:#007aff;font-weight:600;'
}
const valueStyle = (fields, item) => {
	if (item.field === 'StatusText') return 'color:#16a34a;font-weight:600;'
}
const onValueClick = (item, row) => {
	proxy.$toast(`点击:${item.field}=${row[item.field]}`)
}

const columns = ref([
	{ field: 'OrderNo', title: '订单号' },
	{
		title: '总价', field: 'TotalPrice', type: 'text',
		formatter: (val) => `<span style="color:#dc2626;font-weight:700;">¥${Number(val).toFixed(2)}</span>`,
		extra: { text: '元', style: 'margin-left:8rpx;color:#94a3b8;' }
	},
	{ title: '数量', field: 'TotalQty', type: 'text', valueStyle: 'color:#0f172a;font-weight:600;' },
	{ title: '状态', field: 'StatusText', type: 'text', click: true },
	{ title: '备注', field: 'Remark', type: 'text', itemStyle: 'background:#f8fafc;' }
])

const tableData = ref([{ OrderNo: 'SO001', TotalPrice: 12800.5, TotalQty: 120, StatusText: '已发货', Remark: '演示' }])
</script>
Last Updated 2026/10/23 15:32:21