diff --git a/apps/FrontendDesigner/src/components/admin/AdminLayout.vue b/apps/FrontendDesigner/src/components/admin/AdminLayout.vue
index 731c761..e394f4c 100644
--- a/apps/FrontendDesigner/src/components/admin/AdminLayout.vue
+++ b/apps/FrontendDesigner/src/components/admin/AdminLayout.vue
@@ -269,10 +269,10 @@ const handleUserAction = async (command) => {
localStorage.removeItem('user')
localStorage.removeItem('permissionButtonList')
localStorage.removeItem('permissionRouter')
- router.push('/login')
- setTimeout(() => {
- window.location.reload();
- }, 50);
+ router.replace('/login')
+ // setTimeout(() => {
+ // window.location.reload();
+ // }, 50);
})
break
}
diff --git a/apps/FrontendDesigner/src/locales/lang/en-US.js b/apps/FrontendDesigner/src/locales/lang/en-US.js
index a471746..8f8d2d0 100644
--- a/apps/FrontendDesigner/src/locales/lang/en-US.js
+++ b/apps/FrontendDesigner/src/locales/lang/en-US.js
@@ -23,7 +23,12 @@ export default {
all: 'All',
operation:'Operation',
},
-
+ greetingCard: {
+ cancelButton: 'Cancel',
+ exportButton: 'Export',
+ greetingCard: 'Greeting Card',
+ exportSuccess: 'Export Successful',
+ },
// Shop Management
shop: {
pleaseEnterAddress: 'Please enter address',
@@ -602,6 +607,7 @@ export default {
dateRange: 'Date Range',
orderNumber: 'Order Number',
customer: 'Customer',
+ series: 'Series',
total: 'Total Amount',
payment: 'Payment Method',
date: 'Order Date',
@@ -636,6 +642,7 @@ export default {
logisticsStatus: 'Logistics Status',
currentLocation: 'Current Location',
noLogisticsData: 'No logistics data available',
+ previewCard: 'Preview Card',
stats: {
total: 'Total Orders',
pending: 'Pending',
@@ -1040,6 +1047,8 @@ export default {
productName: 'Product Name',
enterProductName: 'Enter Product Name',
productImage: 'Product Image',
+ mark: 'Mark',
+ enterMark: 'Enter Product Mark',
imageUploadTip: 'Support JPG, PNG, GIF format, max size 5MB',
imageTypeError: 'Please upload image file only',
imageSizeError: 'Image size cannot exceed 5MB',
diff --git a/apps/FrontendDesigner/src/locales/lang/zh-CN.js b/apps/FrontendDesigner/src/locales/lang/zh-CN.js
index a8e8b5b..6493b6f 100644
--- a/apps/FrontendDesigner/src/locales/lang/zh-CN.js
+++ b/apps/FrontendDesigner/src/locales/lang/zh-CN.js
@@ -1,5 +1,11 @@
// 中文语言包
export default {
+ greetingCard: {
+ cancelButton: '取消',
+ exportButton: '导出',
+ greetingCard: '贺卡',
+ exportSuccess: '导出成功',
+ },
orderManagement: {
title: '订单',
description: '查看和管理您的购买和订阅信息',
@@ -454,6 +460,7 @@ orderManagement: {
dateRange: '日期范围',
orderNumber: '订单号',
customer: '客户',
+ series: '系列',
total: '总金额',
payment: '支付方式',
date: '下单日期',
@@ -488,6 +495,7 @@ orderManagement: {
logisticsStatus: '物流状态',
currentLocation: '当前位置',
noLogisticsData: '暂无物流信息',
+ previewCard: '预览贺卡',
stats: {
total: '总订单',
pending: '待处理',
@@ -893,6 +901,8 @@ orderManagement: {
productName: '产品名称',
enterProductName: '请输入产品名称',
productImage: '产品图片',
+ mark: '标识',
+ enterMark: '请输入产品标识',
imageUploadTip: '支持JPG、PNG、GIF格式,最大5MB',
imageTypeError: '请上传图片文件',
imageSizeError: '图片大小不能超过5MB',
diff --git a/apps/FrontendDesigner/src/router/index.js b/apps/FrontendDesigner/src/router/index.js
index 194a3d6..9c0e83c 100644
--- a/apps/FrontendDesigner/src/router/index.js
+++ b/apps/FrontendDesigner/src/router/index.js
@@ -328,7 +328,6 @@ const routes = [
requiresAuth: true
},
children: [
-
{
path: 'disassembly-orders/:id',
name: 'AdminDisassemblyDetail',
diff --git a/apps/FrontendDesigner/src/stores/index.js b/apps/FrontendDesigner/src/stores/index.js
index bf6fe9e..c3dea89 100644
--- a/apps/FrontendDesigner/src/stores/index.js
+++ b/apps/FrontendDesigner/src/stores/index.js
@@ -12,6 +12,7 @@ export const useAuthStore = defineStore('auth', {
router: null,
routesUpdated: 0,//路由更新次数
routerList: window.location.hostname.indexOf('local') === -1 ? [] : permissionRoutes,//侧边栏路由
+ // routerList:[],//侧边栏路由
}),
getters: {
diff --git a/apps/FrontendDesigner/src/views/AdminLogin/AdminLogin.vue b/apps/FrontendDesigner/src/views/AdminLogin/AdminLogin.vue
index e8f3056..7f6a2ff 100644
--- a/apps/FrontendDesigner/src/views/AdminLogin/AdminLogin.vue
+++ b/apps/FrontendDesigner/src/views/AdminLogin/AdminLogin.vue
@@ -155,7 +155,7 @@ const handleLogin = async () => {
let data = response.data;
authStore.login(data,()=>{
window.location.reload();
- // router.push('/admin')
+ // router.replace('/')
})
} catch (error) {
ElMessage.error(t('admin.login.loginFailed'))
diff --git a/apps/FrontendDesigner/src/views/admin/AdminOrders/AdminOrders.vue b/apps/FrontendDesigner/src/views/admin/AdminOrders/AdminOrders.vue
index 3d83969..8f8c396 100644
--- a/apps/FrontendDesigner/src/views/admin/AdminOrders/AdminOrders.vue
+++ b/apps/FrontendDesigner/src/views/admin/AdminOrders/AdminOrders.vue
@@ -124,6 +124,11 @@
{{ (row?.order_info?.shipping?.firstName || '-')+(row?.order_info?.shipping?.lastName || '-') }}
+
+
+ {{ row?.order_info?.series || '通用' }}
+
+
${{ row.actual_amount.toFixed(2) }}
@@ -187,6 +192,9 @@
{{ selectedOrder?.order_info?.shipping?.firstName || '-'+selectedOrder?.order_info?.shipping?.lastName || '-' }}
+
+ {{ selectedOrder?.order_info?.series || '通用' }}
+
${{ selectedOrder?.actual_amount?.toFixed(2) || '-' }}
@@ -420,6 +428,16 @@
>
{{ t('admin.disassemblyOrders.list.disassembly') }}
+
+
+ {{ t('admin.orders.previewCard') }}
+
+
@@ -492,7 +516,13 @@ import {
} from '@element-plus/icons-vue'
import { ElMessage, ElMessageBox } from 'element-plus'
import {AdminOrders} from './AdminOrders'
-
+const previewVisible = ref(false)
+const currentPreviewCard = ref({
+ imageUrl: '',
+ message: '',
+ cardMessage: '',
+ id: ''
+})
// 物流服务实例
const logisticsService = new LogistIcsService()
const adminOrders = new AdminOrders()
@@ -542,6 +572,15 @@ const handleDisassemble = (order) => {
params: { id: order.id }
})
}
+
+// 预览贺卡 - 仅A1系列显示
+const handlePreviewCard = (order) => {
+ currentPreviewCard.value.imageUrl = order?.order_info?.greetingCard?.imageUrl || ''
+ currentPreviewCard.value.message = order?.order_info?.greetingCard?.message || ''
+ currentPreviewCard.value.cardMessage = order?.order_info?.greetingCard?.cardMessage || ''
+ currentPreviewCard.value.id = order?.order_info?.greetingCard?.id || ''
+ previewVisible.value = true
+}
// 发货表单
const shippingForm = reactive({
trackingNo: '',
diff --git a/apps/FrontendDesigner/src/views/admin/AdminRoleManagement/AdminUserList.vue b/apps/FrontendDesigner/src/views/admin/AdminRoleManagement/AdminUserList.vue
index d4e69ed..88eca06 100644
--- a/apps/FrontendDesigner/src/views/admin/AdminRoleManagement/AdminUserList.vue
+++ b/apps/FrontendDesigner/src/views/admin/AdminRoleManagement/AdminUserList.vue
@@ -117,7 +117,7 @@
-
+
@@ -261,7 +261,7 @@ const userFormRules = reactive({
],
email: [
{ required: true, message: t('admin.userList.emailRequired'), trigger: 'blur' },
- { type: 'email', message: t('admin.userList.emailFormat'), trigger: 'blur' }
+ { message: t('admin.userList.emailFormat'), trigger: 'blur' }
],
password: [
{ required: true, message: t('admin.userList.passwordRequired'), trigger: 'blur' },
diff --git a/apps/FrontendDesigner/src/views/admin/AdminRoleManagement/index.js b/apps/FrontendDesigner/src/views/admin/AdminRoleManagement/index.js
index 7b6825c..57df434 100644
--- a/apps/FrontendDesigner/src/views/admin/AdminRoleManagement/index.js
+++ b/apps/FrontendDesigner/src/views/admin/AdminRoleManagement/index.js
@@ -314,7 +314,12 @@ export class AdminRoleManagement {
userId: data.id,
newPassword: data.newPassword
}
- return requestUtils.common(adminApi.default.resetAdminUserPassword, params);
+ const requestUrl = {
+ method: adminApi.default.resetAdminUserPassword.method,
+ url: adminApi.default.resetAdminUserPassword.url.replace('{userId}', data.id)+'?newPassword='+data.newPassword,
+ isLoading: adminApi.default.resetAdminUserPassword.isLoading
+ }
+ return requestUtils.common(requestUrl, params);
}
//根据用户ID查询管理员用户详情
async getAdminUserDetail(data) {
diff --git a/apps/FrontendDesigner/src/views/admin/ProductManagement/ProductManagement.vue b/apps/FrontendDesigner/src/views/admin/ProductManagement/ProductManagement.vue
index 71e49c9..086facb 100644
--- a/apps/FrontendDesigner/src/views/admin/ProductManagement/ProductManagement.vue
+++ b/apps/FrontendDesigner/src/views/admin/ProductManagement/ProductManagement.vue
@@ -143,6 +143,13 @@
+
+
+
+
{
amount: 0,
currency: 'USD',
current_price_id: '',
- image: ''
+ image: '',
+ mark: ''
}
dialogVisible.value = true
}
@@ -381,7 +390,8 @@ const showEditDialog = async (product) => {
amount: product.amount,
currency: product.currency,
current_price_id: product.current_price_id || '',
- image: response.product_info?.image || ''
+ image: response.product_info?.image || '',
+ mark: response.product_info?.mark || ''
}
dialogVisible.value = true
}
diff --git a/apps/FrontendDesigner/src/views/admin/ProductManagement/index.js b/apps/FrontendDesigner/src/views/admin/ProductManagement/index.js
index cf3462a..770fe88 100644
--- a/apps/FrontendDesigner/src/views/admin/ProductManagement/index.js
+++ b/apps/FrontendDesigner/src/views/admin/ProductManagement/index.js
@@ -9,6 +9,7 @@ export class ProductManagement {
currency: data.currency,//货币类型,默认USD
product_info:{
image:data.image,//产品图片
+ mark:data.mark,//产品标识
}
}
return await requestUtils.common(adminApi.default.createProduct, params);
@@ -39,6 +40,7 @@ export class ProductManagement {
"current_price_id": data.current_price_id,//当前价格ID
product_info:{
image:data.image,//产品图片
+ mark:data.mark,//产品标识
}
}
return await requestUtils.common(adminApi.default.updateProduct, params);
diff --git a/apps/frontend/package.json b/apps/frontend/package.json
index 0f56056..c53d75c 100644
--- a/apps/frontend/package.json
+++ b/apps/frontend/package.json
@@ -29,7 +29,6 @@
"country-state-city": "^3.2.1",
"dayjs": "^1.11.13",
"element-plus": "^2.11.7",
- "html2canvas": "^1.4.1",
"install": "^0.13.0",
"jose": "^6.1.1",
"motion-v": "^1.7.4",
@@ -37,7 +36,6 @@
"nprogress": "^0.2.0",
"pinia": "^3.0.4",
"pinia-plugin-persistedstate": "^4.7.1",
- "qrcode": "^1.5.4",
"three": "^0.180.0",
"twind": "^0.16.19",
"vue": "^3.5.24",
diff --git a/apps/frontend/src/App.vue b/apps/frontend/src/App.vue
index 17ab19a..ac847f1 100644
--- a/apps/frontend/src/App.vue
+++ b/apps/frontend/src/App.vue
@@ -101,6 +101,13 @@ onMounted(() => {
\ No newline at end of file
diff --git a/packages/ui/src/index.js b/packages/ui/src/index.js
index 00a95de..c9889f7 100644
--- a/packages/ui/src/index.js
+++ b/packages/ui/src/index.js
@@ -1,10 +1,10 @@
import 'element-plus/dist/index.css'
+import './style.css'
// UI组件库入口文件
import LoadingCom from './components/LoadingCom/index.vue'
+import CardPreview from './components/CardPreview/CardPreview.vue'
import CanvasEditor from './components/CanvasEditor/CanvasEditor.vue'
-import './style.css'
-
// 创建带有Dt前缀的组件
const DtLoadingCom = {
...LoadingCom,
@@ -20,17 +20,26 @@ const DtCanvasEditor = {
app.component('DtCanvasEditor', DtCanvasEditor)
}
}
+const DtCardPreview = {
+ ...CardPreview,
+ name: 'DtCardPreview',
+ install(app) {
+ app.component('DtCardPreview', DtCardPreview)
+ }
+}
// 组件列表
const components = [
DtLoadingCom,
- DtCanvasEditor
+ DtCanvasEditor,
+ DtCardPreview
]
// 导出组件
export {
DtLoadingCom,
- DtCanvasEditor
+ DtCanvasEditor,
+ DtCardPreview
}
// 批量注册组件的函数
diff --git a/packages/ui/vite.config.js b/packages/ui/vite.config.js
index be9450e..975f928 100644
--- a/packages/ui/vite.config.js
+++ b/packages/ui/vite.config.js
@@ -1,8 +1,6 @@
import { defineConfig } from 'vite'
import vue from '@vitejs/plugin-vue'
import { resolve } from 'path'
-import { fileURLToPath, URL } from 'node:url'
-
export default defineConfig({
plugins: [vue()],
build: {
diff --git a/packages/utils/src/api/frontend/greetingCard.js b/packages/utils/src/api/frontend/greetingCard.js
new file mode 100644
index 0000000..6be56e9
--- /dev/null
+++ b/packages/utils/src/api/frontend/greetingCard.js
@@ -0,0 +1,9 @@
+const greetingCardApi = {
+ GENERATE_IMAGE:{url:'/api-core/front/gemini/generate-image',method:'POST',isLoading: true,},// 生图模型任务创建
+ CREATE_GREETING_CARD:{url:'/api-base/greeting-card',method:'POST',isLoading: true,},// 创建贺卡
+ UPDATE_GREETING_CARD:{url:'/api-base/greeting-card/update',method:'POST',isLoading: true,},// 更新贺卡
+ DELETE_GREETING_CARD:{url:'/api-base/greeting-card/delete/{id}',method:'POST',isLoading: true,},// 删除贺卡
+ GET_GREETING_CARD_DETAIL:{url:'/api-base/greeting-card/public/{id}',method:'GET',isLoading: true,},// 查询贺卡详情
+ GET_MY_GREETING_CARD_LIST:{url:'/api-base/greeting-card/my-list',method:'GET',isLoading: true,},// 查询我的贺卡列表
+}
+export default greetingCardApi;
diff --git a/packages/utils/src/api/frontend/index.js b/packages/utils/src/api/frontend/index.js
index 989c582..fc12678 100644
--- a/packages/utils/src/api/frontend/index.js
+++ b/packages/utils/src/api/frontend/index.js
@@ -11,6 +11,7 @@ import rechargeconfig from './rechargeconfig.js';
import voucher from './voucher.js';
import shop from './shop.js';
import agreement from './agreement.js';
+import greetingCard from './greetingCard.js';
export default {
...meshy,
...login,
@@ -25,4 +26,5 @@ export default {
...voucher,
...shop,
...agreement,
+ ...greetingCard,
};
\ No newline at end of file
diff --git a/packages/utils/src/servers/meshyserver.js b/packages/utils/src/servers/meshyserver.js
index fc94409..8f21f9c 100644
--- a/packages/utils/src/servers/meshyserver.js
+++ b/packages/utils/src/servers/meshyserver.js
@@ -45,9 +45,8 @@ export class MeshyServer extends FileServer {
ai_model: 'latest',
enable_pbr: false,
should_remesh: false,
- should_texture: false,//是否生成纹理
+ should_texture: false,
save_pre_remeshed_model: true,
- // target_polycount:300000,
...config
}
}
diff --git a/packages/utils/src/utils/request.js b/packages/utils/src/utils/request.js
index d8d95ce..12135b4 100644
--- a/packages/utils/src/utils/request.js
+++ b/packages/utils/src/utils/request.js
@@ -17,7 +17,7 @@ const getEnvBaseURL = () => {
// }
var baseURL = '';
const hostname = window.location.hostname;
- if(hostname=='localhost'||hostname=='192.168.101.2'){
+ if(hostname=='localhost'||hostname=='192.168.0.146'){
baseURL = '/api'
}else if(hostname.indexOf('deotaland.ai')>-1||hostname.indexOf('deota.cn')>-1){
baseURL = 'https://api.deotaland.ai'
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index b74583a..b996bb5 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -177,9 +177,6 @@ importers:
element-plus:
specifier: ^2.11.7
version: 2.11.7(vue@3.5.24)
- html2canvas:
- specifier: ^1.4.1
- version: 1.4.1
install:
specifier: ^0.13.0
version: 0.13.0
@@ -201,9 +198,6 @@ importers:
pinia-plugin-persistedstate:
specifier: ^4.7.1
version: 4.7.1(pinia@3.0.4)
- qrcode:
- specifier: ^1.5.4
- version: 1.5.4
three:
specifier: ^0.180.0
version: 0.180.0
@@ -280,9 +274,18 @@ importers:
packages/ui:
dependencies:
+ dom-to-image-more:
+ specifier: ^3.7.2
+ version: 3.7.2
element-plus:
specifier: ^2.0.0
version: 2.11.7(vue@3.5.24)
+ html2canvas:
+ specifier: ^1.4.1
+ version: 1.4.1
+ qrcode:
+ specifier: ^1.5.4
+ version: 1.5.4
vue:
specifier: ^3.0.0
version: 3.5.24
@@ -2242,6 +2245,10 @@ packages:
entities: 2.2.0
dev: false
+ /dom-to-image-more@3.7.2:
+ resolution: {integrity: sha512-uQf+pHv6eQhgfI8t2bFuinV0KsPyT8TZgCLwcSU8uBVgN9v6leb0mMpvp6HQAlAcplP3NCcGjxbdqef6pTzvmw==}
+ dev: false
+
/dom7@3.0.0:
resolution: {integrity: sha512-oNlcUdHsC4zb7Msx7JN3K0Nro1dzJ48knvBOnDPKJ2GV9wl1i5vydJZUSyOfrkKFDZEud/jBsTk92S/VGSAe/g==}
dependencies: