feat: 添加用户ID和订单ID链接跳转功能
Build and Deploy Vue3 / build (push) Successful in 1m30s
Build and Deploy Vue3 / deploy (push) Successful in 1m15s

- 在团购活动页面中为用户ID添加点击跳转到用户详情的功能
- 在团购管理页面中为用户ID添加点击跳转到用户详情的功能
- 在审核相关页面中为容器ID添加点击跳转到容器详情的功能
- 在营销相关页面中为用户ID和订单ID添加点击跳转功能
- 在订单列表页面中为用户ID和商品ID添加点击跳转功能
- 在商品列表页面中为用户和商品添加点击跳转功能
- 在工单列表页面中为用户名添加点击跳转到用户详情的功能
- 在用户虚拟机列表中为商品和用户添加点击跳转功能
- 在用户余额页面中为支付订单ID添加点击跳转到订单详情的功能
- 统一使用el-link组件实现可点击的链接样式
- 添加useRouter依赖并创建router实例用于页面跳转
This commit is contained in:
shiran
2026-04-24 18:06:29 +08:00
parent c0daa6ed11
commit 475c62aefc
14 changed files with 134 additions and 36 deletions
+9 -1
View File
@@ -119,7 +119,12 @@
</el-avatar> </el-avatar>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column prop="userId" label="用户ID" width="100" /> <el-table-column label="用户ID" width="100">
<template #default="{ row }">
<el-link v-if="row.userId" type="primary" :underline="false" @click="router.push({ path: '/user/detail', query: { user_id: row.userId } })">{{ row.userId }}</el-link>
<span v-else>-</span>
</template>
</el-table-column>
<el-table-column prop="username" label="用户名" min-width="120" /> <el-table-column prop="username" label="用户名" min-width="120" />
<el-table-column label="队长" width="80" align="center"> <el-table-column label="队长" width="80" align="center">
<template #default="{ row }"> <template #default="{ row }">
@@ -156,6 +161,7 @@
<script setup> <script setup>
import { ref, reactive, onMounted } from 'vue' import { ref, reactive, onMounted } from 'vue'
import { useRouter } from 'vue-router'
import { ElMessage, ElMessageBox } from 'element-plus' import { ElMessage, ElMessageBox } from 'element-plus'
import { import {
getGroupBuyList, getGroupBuyList,
@@ -167,6 +173,8 @@ import {
} from '@/api/admin/activity' } from '@/api/admin/activity'
import { getGroupBuyTypeList, getGroupBuyTypeTags, removeGroupBuy, clearAllGroupBuy, clearUserGroupBuy } from '@/api/groupBuy' import { getGroupBuyTypeList, getGroupBuyTypeTags, removeGroupBuy, clearAllGroupBuy, clearUserGroupBuy } from '@/api/groupBuy'
const router = useRouter()
// 数据状态 // 数据状态
const loading = ref(false) const loading = ref(false)
const exportLoading = ref(false) const exportLoading = ref(false)
+8 -2
View File
@@ -172,7 +172,12 @@
</el-avatar> </el-avatar>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column prop="userId" label="用户ID" width="100" /> <el-table-column label="用户ID" width="100">
<template #default="{ row }">
<el-link v-if="row.userId" type="primary" :underline="false" @click="router.push({ path: '/user/detail', query: { user_id: row.userId } })">{{ row.userId }}</el-link>
<span v-else>-</span>
</template>
</el-table-column>
<el-table-column prop="username" label="用户名" min-width="120" /> <el-table-column prop="username" label="用户名" min-width="120" />
<el-table-column label="队长" width="80" align="center"> <el-table-column label="队长" width="80" align="center">
<template #default="{ row }"> <template #default="{ row }">
@@ -267,7 +272,7 @@
<script setup> <script setup>
import { ref, reactive, onMounted, watch } from 'vue' import { ref, reactive, onMounted, watch } from 'vue'
import { useRoute } from 'vue-router' import { useRoute, useRouter } from 'vue-router'
import { ElMessage, ElMessageBox } from 'element-plus' import { ElMessage, ElMessageBox } from 'element-plus'
import { import {
getGroupBuyList, getGroupBuyList,
@@ -289,6 +294,7 @@ import {
} from '@/api/groupBuy' } from '@/api/groupBuy'
const route = useRoute() const route = useRoute()
const router = useRouter()
// 当前激活的标签页 // 当前激活的标签页
const activeTab = ref('activity') const activeTab = ref('activity')
+9 -1
View File
@@ -67,7 +67,12 @@
:header-cell-style="{ background: '#fafafa', color: '#333', fontWeight: 600 }" :header-cell-style="{ background: '#fafafa', color: '#333', fontWeight: 600 }"
> >
<el-table-column type="selection" width="55" /> <el-table-column type="selection" width="55" />
<el-table-column prop="container_id" label="容器ID" width="280" show-overflow-tooltip /> <el-table-column label="容器ID" width="280" show-overflow-tooltip>
<template #default="{ row }">
<el-link v-if="row.container_id" type="primary" :underline="false" @click="router.push({ path: '/servers/container', query: { container_id: row.container_id } })">{{ row.container_id }}</el-link>
<span v-else>-</span>
</template>
</el-table-column>
<el-table-column prop="url" label="访问地址" min-width="200" show-overflow-tooltip> <el-table-column prop="url" label="访问地址" min-width="200" show-overflow-tooltip>
<template #default="{ row }"> <template #default="{ row }">
<el-link :href="row.url" target="_blank" type="primary" v-if="row.url"> <el-link :href="row.url" target="_blank" type="primary" v-if="row.url">
@@ -146,6 +151,7 @@
<script setup> <script setup>
import { ref, reactive, onMounted, computed } from 'vue' import { ref, reactive, onMounted, computed } from 'vue'
import { useRouter } from 'vue-router'
import { ElMessage, ElMessageBox, ElNotification } from 'element-plus' import { ElMessage, ElMessageBox, ElNotification } from 'element-plus'
import { import {
Refresh, Download, Search, Delete, View, Warning, Refresh, Download, Search, Delete, View, Warning,
@@ -159,6 +165,8 @@ import {
} from '@/utils/acs/audit' } from '@/utils/acs/audit'
const router = useRouter()
// 查询参数 // 查询参数
const queryParams = reactive({ const queryParams = reactive({
domain: '', domain: '',
+9 -1
View File
@@ -35,7 +35,12 @@
:header-cell-style="{ background: '#fafafa', color: '#333', fontWeight: 600 }" :header-cell-style="{ background: '#fafafa', color: '#333', fontWeight: 600 }"
> >
<el-table-column type="selection" width="55" /> <el-table-column type="selection" width="55" />
<el-table-column prop="container_id" label="容器ID" width="280" show-overflow-tooltip /> <el-table-column label="容器ID" width="280" show-overflow-tooltip>
<template #default="{ row }">
<el-link v-if="row.container_id" type="primary" :underline="false" @click="router.push({ path: '/servers/container', query: { container_id: row.container_id } })">{{ row.container_id }}</el-link>
<span v-else>-</span>
</template>
</el-table-column>
<el-table-column prop="url" label="违规地址" min-width="200" show-overflow-tooltip> <el-table-column prop="url" label="违规地址" min-width="200" show-overflow-tooltip>
<template #default="{ row }"> <template #default="{ row }">
<el-link :href="row.url" target="_blank" type="danger" v-if="row.url"> <el-link :href="row.url" target="_blank" type="danger" v-if="row.url">
@@ -195,6 +200,7 @@
<script setup> <script setup>
import { ref, reactive, onMounted } from 'vue' import { ref, reactive, onMounted } from 'vue'
import { useRouter } from 'vue-router'
import { ElMessage, ElMessageBox, ElNotification } from 'element-plus' import { ElMessage, ElMessageBox, ElNotification } from 'element-plus'
import { import {
Refresh, Download, Search, Delete, View, Warning, Refresh, Download, Search, Delete, View, Warning,
@@ -208,6 +214,8 @@ import {
} from '@/utils/acs/audit' } from '@/utils/acs/audit'
const router = useRouter()
// 查询参数 // 查询参数
const queryParams = reactive({ const queryParams = reactive({
domain: '', domain: '',
+5 -1
View File
@@ -71,7 +71,8 @@
<el-table-column prop="discountId" label="代金券ID" width="120" v-if="!codeId" /> <el-table-column prop="discountId" label="代金券ID" width="120" v-if="!codeId" />
<el-table-column label="用户名" min-width="150"> <el-table-column label="用户名" min-width="150">
<template #default="{ row }"> <template #default="{ row }">
{{ row?.user?.user_name || '-' }} <el-link v-if="row.userId && row?.user?.user_name" type="primary" :underline="false" @click="router.push({ path: '/user/detail', query: { user_id: row.userId } })">{{ row.user.user_name }}</el-link>
<span v-else>{{ row?.user?.user_name || '-' }}</span>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="手机号" min-width="150"> <el-table-column label="手机号" min-width="150">
@@ -239,6 +240,7 @@
<script setup> <script setup>
import { ref, reactive, onMounted, watch } from 'vue' import { ref, reactive, onMounted, watch } from 'vue'
import { useRouter } from 'vue-router'
import { ElMessage, ElMessageBox } from 'element-plus' import { ElMessage, ElMessageBox } from 'element-plus'
import { Delete, Search, Plus, Refresh, User } from '@element-plus/icons-vue' import { Delete, Search, Plus, Refresh, User } from '@element-plus/icons-vue'
import { import {
@@ -261,6 +263,8 @@ const props = defineProps({
} }
}) })
const router = useRouter()
// 查询参数 // 查询参数
const queryParams = reactive({ const queryParams = reactive({
code_id: props.codeId || '', code_id: props.codeId || '',
+15 -2
View File
@@ -43,7 +43,12 @@
stripe stripe
> >
<el-table-column prop="id" label="记录ID" width="80" fixed="left" /> <el-table-column prop="id" label="记录ID" width="80" fixed="left" />
<el-table-column prop="user_id" label="用户ID" width="100" /> <el-table-column label="用户ID" width="100">
<template #default="{ row }">
<el-link v-if="row.user_id" type="primary" :underline="false" @click="router.push({ path: '/user/detail', query: { user_id: row.user_id } })">{{ row.user_id }}</el-link>
<span v-else>-</span>
</template>
</el-table-column>
<el-table-column prop="username" label="用户名" width="150" /> <el-table-column prop="username" label="用户名" width="150" />
<el-table-column prop="email" label="邮箱" min-width="200" /> <el-table-column prop="email" label="邮箱" min-width="200" />
<el-table-column prop="discount_id" label="代金券ID" width="120" v-if="!codeId" /> <el-table-column prop="discount_id" label="代金券ID" width="120" v-if="!codeId" />
@@ -58,7 +63,12 @@
<span>¥{{ row.order_amount ? (row.order_amount / 100).toFixed(2) : '0.00' }}</span> <span>¥{{ row.order_amount ? (row.order_amount / 100).toFixed(2) : '0.00' }}</span>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column prop="order_id" label="订单ID" width="150" /> <el-table-column label="订单ID" width="150">
<template #default="{ row }">
<el-link v-if="row.order_id" type="primary" :underline="false" @click="router.push({ path: '/order/list', query: { key: row.order_id } })">{{ row.order_id }}</el-link>
<span v-else>-</span>
</template>
</el-table-column>
<el-table-column label="使用状态" width="100"> <el-table-column label="使用状态" width="100">
<template #default="{ row }"> <template #default="{ row }">
<el-tag :type="getStatusType(row.status)"> <el-tag :type="getStatusType(row.status)">
@@ -174,6 +184,7 @@
<script setup> <script setup>
import { ref, reactive, onMounted, computed, watch } from 'vue' import { ref, reactive, onMounted, computed, watch } from 'vue'
import { useRouter } from 'vue-router'
import { ElMessage } from 'element-plus' import { ElMessage } from 'element-plus'
import { Search, Refresh, Download } from '@element-plus/icons-vue' import { Search, Refresh, Download } from '@element-plus/icons-vue'
import { getUserVoucherHistory, getDiscountCodeList } from '@/api/admin/discount' import { getUserVoucherHistory, getDiscountCodeList } from '@/api/admin/discount'
@@ -187,6 +198,8 @@ const props = defineProps({
} }
}) })
const router = useRouter()
// 查询参数 // 查询参数
const queryParams = reactive({ const queryParams = reactive({
user_id: undefined, user_id: undefined,
+9 -1
View File
@@ -40,7 +40,12 @@
style="width: 100%" style="width: 100%"
> >
<el-table-column prop="Id" label="ID" width="80" /> <el-table-column prop="Id" label="ID" width="80" />
<el-table-column prop="UserId" label="用户ID" min-width="100" /> <el-table-column label="用户ID" min-width="100">
<template #default="{ row }">
<el-link v-if="row.UserId" type="primary" :underline="false" @click="router.push({ path: '/user/detail', query: { user_id: row.UserId } })">{{ row.UserId }}</el-link>
<span v-else>-</span>
</template>
</el-table-column>
<el-table-column label="代金券ID" min-width="110" v-if="!codeId"> <el-table-column label="代金券ID" min-width="110" v-if="!codeId">
<template #default="{ row }"> <template #default="{ row }">
{{ row.discountId || '-' }} {{ row.discountId || '-' }}
@@ -212,6 +217,7 @@
<script setup> <script setup>
import { ref, reactive, onMounted, watch } from 'vue' import { ref, reactive, onMounted, watch } from 'vue'
import { useRouter } from 'vue-router'
import { ElMessage, ElMessageBox } from 'element-plus' import { ElMessage, ElMessageBox } from 'element-plus'
import { Search, Refresh, Plus, User } from '@element-plus/icons-vue' import { Search, Refresh, Plus, User } from '@element-plus/icons-vue'
import { import {
@@ -230,6 +236,8 @@ const props = defineProps({
} }
}) })
const router = useRouter()
// 查询参数 // 查询参数
const queryParams = reactive({ const queryParams = reactive({
user_id: undefined, user_id: undefined,
+19 -2
View File
@@ -73,8 +73,18 @@
<el-table-column type="selection" width="55" /> <el-table-column type="selection" width="55" />
<el-table-column prop="id" label="订单ID" width="100" /> <el-table-column prop="id" label="订单ID" width="100" />
<el-table-column prop="name" label="订单名称" min-width="180" /> <el-table-column prop="name" label="订单名称" min-width="180" />
<el-table-column prop="userId" label="用户ID" width="100" /> <el-table-column label="用户ID" width="100">
<el-table-column prop="commodityId" label="商品ID" width="100" /> <template #default="{ row }">
<el-link v-if="row.userId" type="primary" :underline="false" @click.stop="router.push({ path: '/user/detail', query: { user_id: row.userId } })">{{ row.userId }}</el-link>
<span v-else>-</span>
</template>
</el-table-column>
<el-table-column label="商品ID" width="100">
<template #default="{ row }">
<el-link v-if="row.commodityId" type="primary" :underline="false" @click.stop="router.push({ path: '/user-goods/list', query: { good_id: row.commodityId } })">{{ row.commodityId }}</el-link>
<span v-else>-</span>
</template>
</el-table-column>
<el-table-column label="表名" width="120"> <el-table-column label="表名" width="120">
<template #default="{ row }"> <template #default="{ row }">
<el-tag size="small">{{ row.table || '未知' }}</el-tag> <el-tag size="small">{{ row.table || '未知' }}</el-tag>
@@ -409,6 +419,7 @@
<script setup> <script setup>
import { ref, reactive, onMounted } from 'vue' import { ref, reactive, onMounted } from 'vue'
import { useRouter, useRoute } from 'vue-router'
import { ElMessage, ElMessageBox } from 'element-plus' import { ElMessage, ElMessageBox } from 'element-plus'
import { Plus, Delete, Search, Download, Refresh, User, ShoppingCart, Ticket, Money, Close } from '@element-plus/icons-vue' import { Plus, Delete, Search, Download, Refresh, User, ShoppingCart, Ticket, Money, Close } from '@element-plus/icons-vue'
import { getOrderList, getOrderDetail, createOrder, updateOrder, deleteOrder, retryOrderHook } from '@/api/admin/order' import { getOrderList, getOrderDetail, createOrder, updateOrder, deleteOrder, retryOrderHook } from '@/api/admin/order'
@@ -418,6 +429,9 @@ import DiscountCodeSelector from '@/components/admin/DiscountCodeSelector.vue'
import VoucherSelector from '@/components/admin/VoucherSelector.vue' import VoucherSelector from '@/components/admin/VoucherSelector.vue'
import { isoToMilliseconds, timeToTimestamp, formatDate as formatDateTool } from '@/utils/tool' import { isoToMilliseconds, timeToTimestamp, formatDate as formatDateTool } from '@/utils/tool'
const router = useRouter()
const route = useRoute()
// 查询参数 // 查询参数
const queryParams = reactive({ const queryParams = reactive({
page: 1, page: 1,
@@ -845,6 +859,9 @@ const clearAllSelections = () => {
// 初始化 // 初始化
onMounted(() => { onMounted(() => {
if (route.query.key) queryParams.key = String(route.query.key)
if (route.query.user_id) queryParams.user_id = String(route.query.user_id)
if (route.query.state) queryParams.state = String(route.query.state)
fetchOrderList() fetchOrderList()
}) })
</script> </script>
+27 -16
View File
@@ -634,6 +634,25 @@
inactive-text="禁止" inactive-text="禁止"
/> />
</el-form-item> </el-form-item>
<el-form-item label="购买类型" prop="arg_type">
<el-select
v-model="productForm.arg_type"
placeholder="请选择购买类型"
style="width: 100%"
>
<el-option label="所有类型" value="all" />
<el-option label="仅套餐" value="plan" />
<el-option label="仅自定义参数" value="customize" />
</el-select>
</el-form-item>
<el-form-item label="需要实名" prop="require_real_name">
<el-switch
v-model="productForm.require_real_name"
active-text="需要"
inactive-text="不需要"
/>
<div style="font-size:12px;color:#909399;margin-top:4px">启用后用户购买/续费/升级此商品前须完成实名认证</div>
</el-form-item>
</div> </div>
</div> </div>
@@ -686,18 +705,6 @@
style="width: 100%" style="width: 100%"
/> />
</el-form-item> </el-form-item>
<el-form-item label="参数类型" prop="arg_type" class="arg-type-item">
<el-select
v-model="productForm.arg_type"
placeholder="请选择参数类型"
style="width: 100%"
>
<el-option label="所有参数" value="all" />
<el-option label="套餐" value="plan" />
<el-option label="自定义" value="customize" />
</el-select>
<div class="form-tip">all: 所有参数 / plan: 套餐 / customize: 自定义</div>
</el-form-item>
</div> </div>
</div> </div>
</el-form> </el-form>
@@ -865,7 +872,8 @@ const productForm = reactive({
recommend: false, recommend: false,
recommend_rebate: 0, recommend_rebate: 0,
arg_type: 'all', arg_type: 'all',
can_renew: true can_renew: true,
require_real_name: false
}) })
const productRules = { const productRules = {
@@ -1514,7 +1522,8 @@ const handleAddProduct = () => {
expire_time: 0, expire_time: 0,
recommend: false, recommend: false,
recommend_rebate: 0, recommend_rebate: 0,
arg_type: 'all' arg_type: 'all',
require_real_name: false
}) })
selectedProductGroup.value = null selectedProductGroup.value = null
@@ -1547,7 +1556,8 @@ const handleEditProduct = (product, parentGroupId) => {
recommend: product.recommend, recommend: product.recommend,
recommend_rebate: product.recommendRebate, recommend_rebate: product.recommendRebate,
arg_type: product.argType || 'all', arg_type: product.argType || 'all',
can_renew: product.canRenew !== undefined ? product.canRenew : (product.can_renew !== undefined ? product.can_renew : true) can_renew: product.canRenew !== undefined ? product.canRenew : (product.can_renew !== undefined ? product.can_renew : true),
require_real_name: product.requireRealName ?? product.require_real_name ?? false
}) })
productDialogVisible.value = true productDialogVisible.value = true
@@ -1572,7 +1582,8 @@ const submitProductForm = () => {
recommend: productForm.recommend, recommend: productForm.recommend,
recommend_rebate: Number(productForm.recommend_rebate) || 0, recommend_rebate: Number(productForm.recommend_rebate) || 0,
arg_type: productForm.arg_type, arg_type: productForm.arg_type,
can_renew: productForm.can_renew can_renew: productForm.can_renew,
require_real_name: productForm.require_real_name
} }
let res let res
+11 -3
View File
@@ -68,13 +68,18 @@
<el-table-column label="用户" min-width="140"> <el-table-column label="用户" min-width="140">
<template #default="{ row }"> <template #default="{ row }">
<div class="user-cell"> <div class="user-cell">
<span class="user-name">{{ row.user?.UserName || row.user?.username || '-' }}</span> <el-link v-if="row.userId || row.user_id" type="primary" :underline="false" @click.stop="router.push({ path: '/user/detail', query: { user_id: row.userId || row.user_id } })">{{ row.user?.UserName || row.user?.username || '-' }}</el-link>
<span v-else class="user-name">-</span>
<span class="user-id">({{ row.userId || row.user_id || '-' }})</span> <span class="user-id">({{ row.userId || row.user_id || '-' }})</span>
</div> </div>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="商品" min-width="180" show-overflow-tooltip> <el-table-column label="商品" min-width="180" show-overflow-tooltip>
<template #default="{ row }">{{ row.good?.name || '-' }} <span style="color:#909399;font-size:12px">(ID:{{ row.good?.id || row.goodId || '-' }})</span></template> <template #default="{ row }">
<el-link v-if="row.good?.name" type="primary" :underline="false" @click.stop="handleDetail(row)">{{ row.good.name }}</el-link>
<span v-else>-</span>
<span style="color:#909399;font-size:12px"> (ID:{{ row.good?.id || row.goodId || '-' }})</span>
</template>
</el-table-column> </el-table-column>
<el-table-column label="标签" width="100"> <el-table-column label="标签" width="100">
<template #default="{ row }"> <template #default="{ row }">
@@ -86,7 +91,10 @@
<template #default="{ row }">{{ row.goodPlanId || row.good_plan_id || '-' }}</template> <template #default="{ row }">{{ row.goodPlanId || row.good_plan_id || '-' }}</template>
</el-table-column> </el-table-column>
<el-table-column label="订单" min-width="180" show-overflow-tooltip> <el-table-column label="订单" min-width="180" show-overflow-tooltip>
<template #default="{ row }">{{ row.order?.name || (row.orderId ? `订单 #${row.orderId}` : '-') }}</template> <template #default="{ row }">
<el-link v-if="row.orderId" type="primary" :underline="false" @click.stop="router.push({ path: '/order/list', query: { key: row.orderId } })">{{ row.order?.name || `订单 #${row.orderId}` }}</el-link>
<span v-else>-</span>
</template>
</el-table-column> </el-table-column>
<el-table-column label="续费价格" width="110"> <el-table-column label="续费价格" width="110">
<template #default="{ row }"> <template #default="{ row }">
@@ -608,7 +608,7 @@ const reorderAttrs = async (param, src, dst) => {
attr_id: item.id, attr_id: item.id,
attr_name: item.name, attr_name: item.name,
attr_value: item.value || '', attr_value: item.value || '',
attr_price: Number(item.price) || 0, attr_price: Number(item.price) / 100 || 0,
index: newIndex index: newIndex
} }
if (param?.type === 'number') { if (param?.type === 'number') {
+2 -1
View File
@@ -76,7 +76,8 @@
<template #default="{ row }"> <template #default="{ row }">
<div class="user-info"> <div class="user-info">
<el-avatar :size="32" :src="row.avatar">{{ row.username?.charAt(0) }}</el-avatar> <el-avatar :size="32" :src="row.avatar">{{ row.username?.charAt(0) }}</el-avatar>
<span class="username">{{ row.username }}</span> <el-link v-if="row.userId" type="primary" :underline="false" @click.stop="router.push({ path: '/user/detail', query: { user_id: row.userId } })">{{ row.username }}</el-link>
<span v-else class="username">{{ row.username }}</span>
</div> </div>
</template> </template>
</el-table-column> </el-table-column>
+7 -2
View File
@@ -55,11 +55,16 @@
</el-table-column> </el-table-column>
<el-table-column label="商品名称" min-width="150" show-overflow-tooltip> <el-table-column label="商品名称" min-width="150" show-overflow-tooltip>
<template #default="{ row }"> <template #default="{ row }">
{{ row.good?.name ? `${row.good.name}(ID:${row.good.id})` : '-' }} <el-link v-if="row.good?.name && row.itemId" type="primary" :underline="false" @click.stop="goDetail(row)">{{ row.good.name }}(ID:{{ row.good.id }})</el-link>
<span v-else>{{ row.good?.name ? `${row.good.name}(ID:${row.good.id})` : '-' }}</span>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="用户" min-width="140" show-overflow-tooltip> <el-table-column label="用户" min-width="140" show-overflow-tooltip>
<template #default="{ row }">{{ row.user?.UserName || '-' }} <span style="color:#909399;font-size:12px">(ID:{{ row.userId || row.user_id || '-' }})</span></template> <template #default="{ row }">
<el-link v-if="row.userId || row.user_id" type="primary" :underline="false" @click.stop="router.push({ path: '/user/detail', query: { user_id: row.userId || row.user_id } })">{{ row.user?.UserName || '-' }}</el-link>
<span v-else>-</span>
<span style="color:#909399;font-size:12px"> (ID:{{ row.userId || row.user_id || '-' }})</span>
</template>
</el-table-column> </el-table-column>
<el-table-column label="绑定状态" width="90"> <el-table-column label="绑定状态" width="90">
<template #default="{ row }"> <template #default="{ row }">
+3 -2
View File
@@ -81,9 +81,10 @@
</template> </template>
</el-table-column> </el-table-column>
<el-table-column prop="Note" label="备注" min-width="200" show-overflow-tooltip /> <el-table-column prop="Note" label="备注" min-width="200" show-overflow-tooltip />
<el-table-column prop="PaymentOrderId" label="支付订单ID" width="150" show-overflow-tooltip> <el-table-column label="支付订单ID" width="150" show-overflow-tooltip>
<template #default="{ row }"> <template #default="{ row }">
{{ row.PaymentOrderId || '-' }} <el-link v-if="row.PaymentOrderId" type="primary" :underline="false" @click="router.push({ path: '/order/list', query: { key: row.PaymentOrderId } })">{{ row.PaymentOrderId }}</el-link>
<span v-else>-</span>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="创建时间" width="180"> <el-table-column label="创建时间" width="180">