-
+
{{ props.name }}
@@ -44,7 +44,7 @@ const {} = toRefs(data);
@@ -62,13 +62,14 @@ const {} = toRefs(data);
display: flex;
justify-content: space-between;
align-items: center;
- .text{
+ > .text{
color: #232323;
> .name{
font-family: "KaiseiOpti-Regular";
font-weight: 400;
font-size: var(--commodity-name-fontSize,1.6rem);
line-height: var(--commodity-name-lineHeight,2.3rem);
+ margin-bottom: var(--commodity-name-marginBottom,0rem);
}
> .price{
font-family: "KaiseiOpti-Regular";
diff --git a/src/components/checked.vue b/src/components/checked.vue
new file mode 100644
index 0000000..4954620
--- /dev/null
+++ b/src/components/checked.vue
@@ -0,0 +1,64 @@
+
+
+
+
+ {{ item.label }}
+
+
+
+
\ No newline at end of file
diff --git a/src/router/index.ts b/src/router/index.ts
index 1bff1b5..be8cbea 100644
--- a/src/router/index.ts
+++ b/src/router/index.ts
@@ -23,6 +23,11 @@ const router = createRouter({
name: 'brand',
component: () => import('../views/brand/index.vue')
},
+ {
+ path: '/digitalItem',
+ name: 'digitalItem',
+ component: () => import('../views/digitalItem/index.vue'),
+ },
{
path: '/settings',
name: 'settings',
@@ -34,6 +39,11 @@ const router = createRouter({
name: 'shoppingCart',
component: () => import('@/views/shoppingCart/index.vue')
},
+ {
+ path: '/notifications',
+ name: 'notifications',
+ component: () => import('@/views/notifications/index.vue')
+ },
{
path: '/:pathMatch(.*)',
name: '404',
diff --git a/src/views/digitalItem/commodity-list.vue b/src/views/digitalItem/commodity-list.vue
new file mode 100644
index 0000000..9c99b70
--- /dev/null
+++ b/src/views/digitalItem/commodity-list.vue
@@ -0,0 +1,115 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/src/views/digitalItem/index.vue b/src/views/digitalItem/index.vue
new file mode 100644
index 0000000..dcfb1cd
--- /dev/null
+++ b/src/views/digitalItem/index.vue
@@ -0,0 +1,101 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/src/views/digitalItem/merchant-info.vue b/src/views/digitalItem/merchant-info.vue
new file mode 100644
index 0000000..2063f15
--- /dev/null
+++ b/src/views/digitalItem/merchant-info.vue
@@ -0,0 +1,135 @@
+
+
+
+
+
Categories
+
+
+
+
+
Gender
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/views/main-header.vue b/src/views/main-header.vue
index c700cfb..04c4b41 100644
--- a/src/views/main-header.vue
+++ b/src/views/main-header.vue
@@ -120,11 +120,11 @@
}
const onNotifications = () => {
hideProfilePopover()
- console.log('notifications')
+ router.push('/notifications')
}
const onSettings = () => {
hideProfilePopover()
- console.log('settings')
+ router.push('/settings')
}
const onLogout = () => {
hideProfilePopover()
diff --git a/src/views/notifications/components/NotificationListItem.vue b/src/views/notifications/components/NotificationListItem.vue
new file mode 100644
index 0000000..e52039a
--- /dev/null
+++ b/src/views/notifications/components/NotificationListItem.vue
@@ -0,0 +1,136 @@
+
+
+
+
+
+
+
{{ item.title }}
+
{{ item.date }}
+
+
+
+
+
+
+ {{ item.content }}
+
+
+
+
+
+
diff --git a/src/views/notifications/components/NotificationsList.vue b/src/views/notifications/components/NotificationsList.vue
new file mode 100644
index 0000000..161d904
--- /dev/null
+++ b/src/views/notifications/components/NotificationsList.vue
@@ -0,0 +1,111 @@
+
+
+
+
+
+
diff --git a/src/views/notifications/index.vue b/src/views/notifications/index.vue
new file mode 100644
index 0000000..c1e08a2
--- /dev/null
+++ b/src/views/notifications/index.vue
@@ -0,0 +1,166 @@
+
+
+
+
+
+
diff --git a/src/views/notifications/types.ts b/src/views/notifications/types.ts
new file mode 100644
index 0000000..90fabf5
--- /dev/null
+++ b/src/views/notifications/types.ts
@@ -0,0 +1,8 @@
+export interface NotificationRecord {
+ id: string
+ title: string
+ date: string
+ content: string
+ isUnread: boolean
+ isExpanded: boolean
+}
diff --git a/src/views/setting/components/Radio.vue b/src/views/setting/components/Radio.vue
index 8d2376c..7c05e54 100644
--- a/src/views/setting/components/Radio.vue
+++ b/src/views/setting/components/Radio.vue
@@ -29,6 +29,7 @@ const props = defineProps<{
modelValue: string | number | boolean | Array
| null
options: Option[] // 按钮选项数组
multiple?: boolean // 是否支持多选,默认为 false
+ max?: number // 多选时最多可选数量,不传则不限制
}>()
const emit = defineEmits<{
@@ -54,6 +55,9 @@ const selectOption = (value: any) => {
if (index >= 0) {
current.splice(index, 1)
} else {
+ if (typeof props.max === 'number' && props.max > 0 && current.length >= props.max) {
+ current.shift()
+ }
current.push(value)
}
emit('update:modelValue', current)
diff --git a/src/views/setting/index.vue b/src/views/setting/index.vue
index 831ddb5..1a8eed3 100644
--- a/src/views/setting/index.vue
+++ b/src/views/setting/index.vue
@@ -18,9 +18,7 @@
-
-