This commit is contained in:
parent
87c7fffd3e
commit
66d4805935
|
|
@ -184,18 +184,7 @@ export const permissionRoutes = [
|
||||||
// requiresAuth: true
|
// requiresAuth: true
|
||||||
// }
|
// }
|
||||||
// },
|
// },
|
||||||
{
|
|
||||||
path: 'users/:id/invites',
|
|
||||||
name: 'AdminUserInvites',
|
|
||||||
component: AdminUserInvites,
|
|
||||||
meta: {
|
|
||||||
title: '邀请列表',
|
|
||||||
icon: 'UserFilled',
|
|
||||||
menuOrder: 9,
|
|
||||||
hideInMenu: true,
|
|
||||||
requiresAuth: true
|
|
||||||
}
|
|
||||||
},
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -268,7 +257,18 @@ const routes = [
|
||||||
hideInMenu: true,
|
hideInMenu: true,
|
||||||
requiresAuth: true
|
requiresAuth: true
|
||||||
}
|
}
|
||||||
}
|
},{
|
||||||
|
path: 'users/:id/invites',
|
||||||
|
name: 'AdminUserInvites',
|
||||||
|
component: AdminUserInvites,
|
||||||
|
meta: {
|
||||||
|
title: '邀请列表',
|
||||||
|
icon: 'UserFilled',
|
||||||
|
menuOrder: 9,
|
||||||
|
hideInMenu: true,
|
||||||
|
requiresAuth: true
|
||||||
|
}
|
||||||
|
},
|
||||||
]//[]//
|
]//[]//
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
|
|
||||||
|
|
@ -95,7 +95,7 @@
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column prop="orderPrice" :label="t('admin.review.orderPrice')" min-width="120">
|
<el-table-column prop="orderPrice" :label="t('admin.review.orderPrice')" min-width="120">
|
||||||
<template #default="{ row }">
|
<template #default="{ row }">
|
||||||
¥{{ row.orderPrice.toFixed(2) }}
|
${{ row.orderPrice.toFixed(2) }}
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column prop="status" :label="t('admin.review.status')" min-width="120">
|
<el-table-column prop="status" :label="t('admin.review.status')" min-width="120">
|
||||||
|
|
|
||||||
|
|
@ -58,7 +58,7 @@
|
||||||
<el-icon><Money /></el-icon>
|
<el-icon><Money /></el-icon>
|
||||||
</div>
|
</div>
|
||||||
<div class="stat-info">
|
<div class="stat-info">
|
||||||
<div class="stat-number">¥{{ formatNumber(stats.revenue) }}</div>
|
<div class="stat-number">${{ formatNumber(stats.revenue) }}</div>
|
||||||
<div class="stat-label">{{ t('admin.dashboard.stats.revenue') }}</div>
|
<div class="stat-label">{{ t('admin.dashboard.stats.revenue') }}</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
@ -91,7 +91,7 @@
|
||||||
height: `${(point.value / maxSalesValue) * 200}px`,
|
height: `${(point.value / maxSalesValue) * 200}px`,
|
||||||
background: `linear-gradient(to top, #6b46c1, #a78bfa)`
|
background: `linear-gradient(to top, #6b46c1, #a78bfa)`
|
||||||
}"
|
}"
|
||||||
:title="`${point.date}: ¥${formatNumber(point.value)}`"
|
:title="`${point.date}: $${formatNumber(point.value)}`"
|
||||||
></div>
|
></div>
|
||||||
</div>
|
</div>
|
||||||
<div class="chart-labels">
|
<div class="chart-labels">
|
||||||
|
|
|
||||||
|
|
@ -37,7 +37,7 @@
|
||||||
<el-icon><Money /></el-icon>
|
<el-icon><Money /></el-icon>
|
||||||
</div>
|
</div>
|
||||||
<div class="stat-info">
|
<div class="stat-info">
|
||||||
<div class="stat-number">¥{{ orderStats.revenue.toLocaleString() }}</div>
|
<div class="stat-number">${{ orderStats.revenue.toLocaleString() }}</div>
|
||||||
<div class="stat-label">{{ t('admin.orders.stats.revenue') }}</div>
|
<div class="stat-label">{{ t('admin.orders.stats.revenue') }}</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
@ -131,7 +131,7 @@
|
||||||
<el-table-column prop="customerName" :label="t('admin.orders.customer')" width="120" />
|
<el-table-column prop="customerName" :label="t('admin.orders.customer')" width="120" />
|
||||||
<el-table-column prop="totalAmount" :label="t('admin.orders.total')" width="120">
|
<el-table-column prop="totalAmount" :label="t('admin.orders.total')" width="120">
|
||||||
<template #default="{ row }">
|
<template #default="{ row }">
|
||||||
¥{{ row.totalAmount.toFixed(2) }}
|
${{ row.totalAmount.toFixed(2) }}
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column prop="status" :label="t('admin.orders.status')" width="120">
|
<el-table-column prop="status" :label="t('admin.orders.status')" width="120">
|
||||||
|
|
@ -239,7 +239,7 @@
|
||||||
{{ selectedOrder.customerName }}
|
{{ selectedOrder.customerName }}
|
||||||
</el-descriptions-item>
|
</el-descriptions-item>
|
||||||
<el-descriptions-item :label="t('admin.orders.total')">
|
<el-descriptions-item :label="t('admin.orders.total')">
|
||||||
¥{{ selectedOrder.totalAmount.toFixed(2) }}
|
${{ selectedOrder.totalAmount.toFixed(2) }}
|
||||||
</el-descriptions-item>
|
</el-descriptions-item>
|
||||||
<el-descriptions-item :label="t('admin.orders.status')">
|
<el-descriptions-item :label="t('admin.orders.status')">
|
||||||
<el-tag :type="getStatusTagType(selectedOrder.status)">
|
<el-tag :type="getStatusTagType(selectedOrder.status)">
|
||||||
|
|
@ -257,7 +257,7 @@
|
||||||
<el-table-column prop="quantity" :label="t('admin.orders.quantity')" width="100" />
|
<el-table-column prop="quantity" :label="t('admin.orders.quantity')" width="100" />
|
||||||
<el-table-column prop="price" :label="t('admin.orders.price')" width="120">
|
<el-table-column prop="price" :label="t('admin.orders.price')" width="120">
|
||||||
<template #default="{ row }">
|
<template #default="{ row }">
|
||||||
¥{{ row.price.toFixed(2) }}
|
${{ row.price.toFixed(2) }}
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
</el-table>
|
</el-table>
|
||||||
|
|
|
||||||
|
|
@ -37,7 +37,7 @@
|
||||||
<el-icon><Money /></el-icon>
|
<el-icon><Money /></el-icon>
|
||||||
</div>
|
</div>
|
||||||
<div class="stat-info">
|
<div class="stat-info">
|
||||||
<div class="stat-number">¥{{ orderStats.revenue }}</div>
|
<div class="stat-number">${{ orderStats.revenue }}</div>
|
||||||
<div class="stat-label">{{ t('admin.orders.stats.revenue') }}</div>
|
<div class="stat-label">{{ t('admin.orders.stats.revenue') }}</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
@ -126,7 +126,7 @@
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column prop="actual_amount" :label="t('admin.orders.total')" width="120">
|
<el-table-column prop="actual_amount" :label="t('admin.orders.total')" width="120">
|
||||||
<template #default="{ row }">
|
<template #default="{ row }">
|
||||||
¥{{ row.actual_amount.toFixed(2) }}
|
${{ row.actual_amount.toFixed(2) }}
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column prop="status" :label="t('admin.orders.status')" width="120">
|
<el-table-column prop="status" :label="t('admin.orders.status')" width="120">
|
||||||
|
|
@ -188,7 +188,7 @@
|
||||||
{{ selectedOrder?.order_info?.shipping?.firstName || '-'+selectedOrder?.order_info?.shipping?.lastName || '-' }}
|
{{ selectedOrder?.order_info?.shipping?.firstName || '-'+selectedOrder?.order_info?.shipping?.lastName || '-' }}
|
||||||
</el-descriptions-item>
|
</el-descriptions-item>
|
||||||
<el-descriptions-item :label="t('admin.orders.total')">
|
<el-descriptions-item :label="t('admin.orders.total')">
|
||||||
¥{{ selectedOrder?.actual_amount?.toFixed(2) || '-' }}
|
${{ selectedOrder?.actual_amount?.toFixed(2) || '-' }}
|
||||||
</el-descriptions-item>
|
</el-descriptions-item>
|
||||||
<el-descriptions-item :label="t('admin.orders.status')">
|
<el-descriptions-item :label="t('admin.orders.status')">
|
||||||
<el-tag :type="getStatusTagType(selectedOrder).status">
|
<el-tag :type="getStatusTagType(selectedOrder).status">
|
||||||
|
|
@ -216,7 +216,7 @@
|
||||||
<el-table-column prop="quantity" :label="t('admin.orders.quantity')" width="100" />
|
<el-table-column prop="quantity" :label="t('admin.orders.quantity')" width="100" />
|
||||||
<el-table-column prop="price" :label="t('admin.orders.price')" width="120">
|
<el-table-column prop="price" :label="t('admin.orders.price')" width="120">
|
||||||
<template #default="{ row }">
|
<template #default="{ row }">
|
||||||
¥{{ row.price.toFixed(2) }}
|
${{ row.price.toFixed(2) }}
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
</el-table>
|
</el-table>
|
||||||
|
|
|
||||||
|
|
@ -36,7 +36,7 @@
|
||||||
<span class="product-name">{{ order.order_info.ipName||'rob' }}</span>
|
<span class="product-name">{{ order.order_info.ipName||'rob' }}</span>
|
||||||
<span class="product-quantity">x{{ order.order_info.quantity }}</span>
|
<span class="product-quantity">x{{ order.order_info.quantity }}</span>
|
||||||
</div>
|
</div>
|
||||||
<div class="product-price">¥{{order.actual_amount}}</div>
|
<div class="product-price">${{order.actual_amount}}</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
|
||||||
|
|
@ -9,20 +9,20 @@
|
||||||
<div class="summary-items">
|
<div class="summary-items">
|
||||||
<div class="summary-item">
|
<div class="summary-item">
|
||||||
<span>{{ $t('payment.subtotal') }}</span>
|
<span>{{ $t('payment.subtotal') }}</span>
|
||||||
<span>¥{{ (amount / 100).toFixed(2) }}</span>
|
<span>${{ (amount / 100).toFixed(2) }}</span>
|
||||||
</div>
|
</div>
|
||||||
<div class="summary-item">
|
<div class="summary-item">
|
||||||
<span>{{ $t('payment.tax') }}</span>
|
<span>{{ $t('payment.tax') }}</span>
|
||||||
<span>¥{{ (taxAmount / 100).toFixed(2) }}</span>
|
<span>${{ (taxAmount / 100).toFixed(2) }}</span>
|
||||||
</div>
|
</div>
|
||||||
<div class="summary-item">
|
<div class="summary-item">
|
||||||
<span>{{ $t('payment.shipping') }}</span>
|
<span>{{ $t('payment.shipping') }}</span>
|
||||||
<span>{{ shippingAmount > 0 ? `¥${(shippingAmount / 100).toFixed(2)}` : $t('payment.free') }}</span>
|
<span>{{ shippingAmount > 0 ? `$${(shippingAmount / 100).toFixed(2)}` : $t('payment.free') }}</span>
|
||||||
</div>
|
</div>
|
||||||
<div class="summary-divider"></div>
|
<div class="summary-divider"></div>
|
||||||
<div class="summary-item total">
|
<div class="summary-item total">
|
||||||
<span>{{ $t('payment.total') }}</span>
|
<span>{{ $t('payment.total') }}</span>
|
||||||
<span>¥{{ ((amount + taxAmount + shippingAmount) / 100).toFixed(2) }}</span>
|
<span>${{ ((amount + taxAmount + shippingAmount) / 100).toFixed(2) }}</span>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
@ -45,7 +45,7 @@
|
||||||
:disabled="!canPay"
|
:disabled="!canPay"
|
||||||
>
|
>
|
||||||
<el-icon v-if="!processing"><Lock /></el-icon>
|
<el-icon v-if="!processing"><Lock /></el-icon>
|
||||||
{{ $t('payment.payNow') }} ¥{{ ((amount + taxAmount + shippingAmount - discountAmount) / 100).toFixed(2) }}
|
{{ $t('payment.payNow') }} ${{ ((amount + taxAmount + shippingAmount - discountAmount) / 100).toFixed(2) }}
|
||||||
</el-button>
|
</el-button>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -315,10 +315,10 @@
|
||||||
<!-- 官方服务 -->
|
<!-- 官方服务 -->
|
||||||
<el-form-item
|
<el-form-item
|
||||||
:label="t('agentTemplate.officialServices')"
|
:label="t('agentTemplate.officialServices')"
|
||||||
prop="knowledge_base_ids"
|
prop="mcp_endpoints"
|
||||||
class="knowledge-base-item"
|
class="knowledge-base-item"
|
||||||
>
|
>
|
||||||
<el-checkbox-group v-model="agentForm.knowledge_base_ids" style="width: 100%;">
|
<el-checkbox-group v-model="agentForm.mcp_endpoints" style="width: 100%;">
|
||||||
<el-checkbox label="2" style="margin-right: 20px;">{{ t('agentTemplate.weather') }}</el-checkbox>
|
<el-checkbox label="2" style="margin-right: 20px;">{{ t('agentTemplate.weather') }}</el-checkbox>
|
||||||
<el-checkbox label="8" style="margin-right: 20px;">{{ t('agentTemplate.jokes') }}</el-checkbox>
|
<el-checkbox label="8" style="margin-right: 20px;">{{ t('agentTemplate.jokes') }}</el-checkbox>
|
||||||
<el-checkbox label="9" style="margin-right: 20px;">{{ t('agentTemplate.music') }}</el-checkbox>
|
<el-checkbox label="9" style="margin-right: 20px;">{{ t('agentTemplate.music') }}</el-checkbox>
|
||||||
|
|
@ -473,7 +473,7 @@ Communication Style:
|
||||||
asr_speed: 'normal',
|
asr_speed: 'normal',
|
||||||
tts_speech_speed: 'normal',
|
tts_speech_speed: 'normal',
|
||||||
tts_pitch: 0,
|
tts_pitch: 0,
|
||||||
knowledge_base_ids: ['2', '8', '9', '101']
|
mcp_endpoints: ['2', '8', '9', '101']// 知识库ID列表
|
||||||
})
|
})
|
||||||
|
|
||||||
// 自定义模板数据
|
// 自定义模板数据
|
||||||
|
|
@ -618,7 +618,7 @@ const formRules = computed(() => ({
|
||||||
tts_pitch: [
|
tts_pitch: [
|
||||||
{ required: true, message: '请调整角色音调', trigger: 'change' }
|
{ required: true, message: '请调整角色音调', trigger: 'change' }
|
||||||
],
|
],
|
||||||
knowledge_base_ids: [
|
mcp_endpoints: [
|
||||||
{ type: 'array', message: '请至少选择一个官方服务', trigger: 'change' }
|
{ type: 'array', message: '请至少选择一个官方服务', trigger: 'change' }
|
||||||
]
|
]
|
||||||
}))
|
}))
|
||||||
|
|
@ -739,7 +739,7 @@ const saveAgent = async () => {
|
||||||
character: agentForm.introduction,
|
character: agentForm.introduction,
|
||||||
memory: agentForm.memory,
|
memory: agentForm.memory,
|
||||||
memory_type: agentForm.memoryType,
|
memory_type: agentForm.memoryType,
|
||||||
knowledge_base_ids: agentForm.knowledge_base_ids
|
mcp_endpoints: agentForm.mcp_endpoints
|
||||||
}
|
}
|
||||||
|
|
||||||
let result
|
let result
|
||||||
|
|
@ -873,7 +873,7 @@ const getAgentDetail = async (agentId) => {
|
||||||
agentForm.asr_speed = agentDetail.asr_speed || 'normal'
|
agentForm.asr_speed = agentDetail.asr_speed || 'normal'
|
||||||
agentForm.tts_speech_speed = agentDetail.tts_speech_speed || 'normal'
|
agentForm.tts_speech_speed = agentDetail.tts_speech_speed || 'normal'
|
||||||
agentForm.tts_pitch = agentDetail.tts_pitch || 0
|
agentForm.tts_pitch = agentDetail.tts_pitch || 0
|
||||||
agentForm.knowledge_base_ids = agentDetail.knowledge_base_ids || []
|
agentForm.mcp_endpoints = agentDetail.mcp_endpoints || []
|
||||||
|
|
||||||
// 保存智能体id到表单数据中
|
// 保存智能体id到表单数据中
|
||||||
agentForm.id = agentId
|
agentForm.id = agentId
|
||||||
|
|
|
||||||
|
|
@ -20,7 +20,7 @@
|
||||||
<span class="name">{{ order.order_info.ipName }}</span>
|
<span class="name">{{ order.order_info.ipName }}</span>
|
||||||
<span style="margin-top: 10px;" class="qty">x{{ order.order_info.quantity }}</span>
|
<span style="margin-top: 10px;" class="qty">x{{ order.order_info.quantity }}</span>
|
||||||
</div>
|
</div>
|
||||||
<div class="price">¥{{order.actual_amount}}</div>
|
<div class="price">${{order.actual_amount}}</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
|
||||||
|
|
@ -296,9 +296,9 @@ const userData = ref({
|
||||||
combinedInviteList: [],
|
combinedInviteList: [],
|
||||||
|
|
||||||
// 佣金统计(独立模块)
|
// 佣金统计(独立模块)
|
||||||
totalConsumption: '¥0',
|
totalConsumption: '$0',
|
||||||
totalCommission: '¥0',
|
totalCommission: '$0',
|
||||||
availableCommission: '¥0'
|
availableCommission: '$0'
|
||||||
})
|
})
|
||||||
|
|
||||||
// 加载状态
|
// 加载状态
|
||||||
|
|
|
||||||
|
|
@ -295,9 +295,9 @@ const userData = ref({
|
||||||
combinedInviteList: [],
|
combinedInviteList: [],
|
||||||
|
|
||||||
// 佣金统计(独立模块)
|
// 佣金统计(独立模块)
|
||||||
totalConsumption: '¥0',
|
totalConsumption: '$0',
|
||||||
totalCommission: '¥0',
|
totalCommission: '$0',
|
||||||
availableCommission: '¥0'
|
availableCommission: '$0'
|
||||||
})
|
})
|
||||||
|
|
||||||
// 加载状态
|
// 加载状态
|
||||||
|
|
|
||||||
|
|
@ -27,7 +27,7 @@ export function formatCurrency(amount, currency = 'CNY', locale = 'zh-CN', decim
|
||||||
}).format(amount)
|
}).format(amount)
|
||||||
} catch {
|
} catch {
|
||||||
// 回退到简单的格式化
|
// 回退到简单的格式化
|
||||||
const symbol = currency === 'CNY' ? '¥' : currency
|
const symbol = currency === 'CNY' ? '$' : currency
|
||||||
return symbol + formatNumber(amount, decimals)
|
return symbol + formatNumber(amount, decimals)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue