diff --git a/README.md b/README.md
new file mode 100644
index 0000000..ec8ba82
--- /dev/null
+++ b/README.md
@@ -0,0 +1 @@
+维伦
\ No newline at end of file
diff --git a/api/page/cart.js b/api/page/cart.js
index 120a63c..b82b3b1 100644
--- a/api/page/cart.js
+++ b/api/page/cart.js
@@ -27,4 +27,9 @@ export const toCartApi = async (listId, productId) => {
product_id: productId
})
}
-
+export const submitHighIntentApi = async (list_id, intent_remark = '') => {
+ return await post(`${prefix}submit-high-intent`, { list_id, intent_remark })
+}
+export const savePreferSkuApi = async (params) => {
+ return await post(`${prefix}save-prefer-sku`, params)
+}
diff --git a/api/page/product.js b/api/page/product.js
index 9ed451b..30ab55e 100644
--- a/api/page/product.js
+++ b/api/page/product.js
@@ -1,5 +1,5 @@
-import {get} from '../request';
+import {get, post} from '../request';
const prefix = 'product/'
@@ -12,3 +12,6 @@ export const getCategoryListByPidApi = async (pid = 0) => {
export const getProductDetailApi = async (id = 0, p_user_id = 0) => {
return await get(`${prefix}detail`, {id, p_user_id})
}
+export const productViewApi = async (id) => {
+ return await post(`${prefix}view`, { id })
+}
diff --git a/api/page/user.js b/api/page/user.js
index 9916daa..7e842a2 100644
--- a/api/page/user.js
+++ b/api/page/user.js
@@ -15,3 +15,6 @@ export const updateNickNameApi = async (nick_name) => {
nick_name
})
}
+export const updateProfileApi = async (nick_name, avatar) => {
+ return await post(`${prefix}update-profile`, { nick_name, avatar })
+}
diff --git a/pages.json b/pages.json
index 09465e4..f1bc9c3 100644
--- a/pages.json
+++ b/pages.json
@@ -63,6 +63,12 @@
"enablePullDownRefresh": false
}
},
+ {
+ "path": "pages/cart/quote",
+ "style": {
+ "navigationBarTitleText": "查看报价"
+ }
+ },
{
"path": "pages/search/search",
"style": {
diff --git a/pages/cart/cart.vue b/pages/cart/cart.vue
index dbaf3c9..2ae1714 100644
--- a/pages/cart/cart.vue
+++ b/pages/cart/cart.vue
@@ -29,6 +29,11 @@
{{ item.created_at }}
+
+ 已申请
+ 已报价
+ 报价中
+
@@ -319,6 +324,35 @@ view, scroll-view, text, image {
font-family: Arial, sans-serif;
}
+.list-status-badges {
+ display: flex;
+ flex-wrap: wrap;
+ gap: 8rpx;
+ margin-left: 16rpx;
+}
+
+.list-badge {
+ font-size: 18rpx;
+ padding: 2rpx 10rpx;
+ border-radius: 4rpx;
+ font-weight: 600;
+}
+
+.list-badge.intent {
+ color: #B4854D;
+ background: rgba(180, 133, 77, 0.1);
+}
+
+.list-badge.quoted {
+ color: #fff;
+ background: #B4854D;
+}
+
+.list-badge.quoting {
+ color: #B4854D;
+ border: 1rpx solid rgba(180, 133, 77, 0.4);
+}
+
.delete-btn {
padding: 10rpx;
margin-right: -10rpx; /* 增加点击热区修正视觉位置 */
diff --git a/pages/cart/detail.vue b/pages/cart/detail.vue
index 8efa240..c91a7dc 100644
--- a/pages/cart/detail.vue
+++ b/pages/cart/detail.vue
@@ -1,6 +1,5 @@
-
-
-
-
NO.{{ index + 1 < 10 ? '0' + (index + 1) : index + 1 }}
|
- 已选配置
+ {{ specStatusText(item) }}
-
-
-
甄选家具
+ {{ item.selected_sku }}
-
-
{{ spec.dimension }}
-
+
¥{{ pItem }}
@@ -91,12 +96,90 @@
+
+
+
+
+
+ 已申请报价
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ skuPickerTitle }}
+
+
+ {{ opt.displayLabel }}
+ {{ opt.priceText }}
+
+ 暂无可选规格
+
+
+
+
\ No newline at end of file
+
+.action-bar-wrapper {
+ position: fixed;
+ bottom: 0;
+ left: 0;
+ right: 0;
+ background: #fff;
+ box-shadow: 0 -4rpx 20rpx rgba(0, 0, 0, 0.05);
+ padding: 20rpx 30rpx;
+ padding-bottom: calc(20rpx + env(safe-area-inset-bottom));
+ z-index: 100;
+}
+
+.action-bar {
+ display: flex;
+ align-items: stretch;
+ gap: 20rpx;
+ width: 100%;
+ min-height: 88rpx;
+}
+
+.bar-btn {
+ flex: 1;
+ margin: 0;
+ font-size: 30rpx;
+ padding: 0 24rpx;
+ height: 88rpx;
+ line-height: 88rpx;
+ border-radius: 12rpx;
+}
+
+.bar-btn::after {
+ border: none;
+}
+
+.bar-btn.primary {
+ background: #B4854D;
+ color: #fff;
+ font-weight: 600;
+}
+
+.bar-btn.outline {
+ background: #fff;
+ color: #B4854D;
+ border: 1rpx solid #B4854D;
+ font-weight: 600;
+}
+
+.intent-status-bar {
+ flex: 1;
+ height: 88rpx;
+ line-height: 88rpx;
+ text-align: center;
+ background: #F3F1EC;
+ border-radius: 12rpx;
+ border: 1rpx solid #E8E4DC;
+}
+
+.intent-status-bar text {
+ font-size: 30rpx;
+ color: #999;
+ letter-spacing: 2rpx;
+}
+
+.apply-popup {
+ padding: 36rpx 32rpx calc(32rpx + env(safe-area-inset-bottom));
+ max-height: 80vh;
+ display: flex;
+ flex-direction: column;
+}
+
+.apply-popup-title {
+ font-size: 34rpx;
+ font-weight: 600;
+ color: #1A1A1A;
+ text-align: center;
+ margin-bottom: 28rpx;
+}
+
+.apply-field {
+ margin-bottom: 24rpx;
+}
+
+.apply-label {
+ display: block;
+ font-size: 26rpx;
+ color: #666;
+ margin-bottom: 12rpx;
+}
+
+.apply-remark {
+ width: 100%;
+ min-height: 140rpx;
+ padding: 20rpx;
+ background: #F7F8FA;
+ border-radius: 12rpx;
+ font-size: 28rpx;
+ color: #333;
+}
+
+.apply-sku-section {
+ flex: 1;
+ min-height: 0;
+ margin-bottom: 24rpx;
+}
+
+.apply-sku-list {
+ max-height: 420rpx;
+}
+
+.apply-sku-row {
+ display: flex;
+ align-items: center;
+ gap: 20rpx;
+ padding: 20rpx 0;
+ border-bottom: 1rpx solid #F0F0F0;
+}
+
+.apply-sku-cover {
+ width: 88rpx;
+ height: 88rpx;
+ border-radius: 8rpx;
+ background: #F5F5F5;
+ flex-shrink: 0;
+}
+
+.apply-sku-info {
+ flex: 1;
+ min-width: 0;
+ display: flex;
+ flex-direction: column;
+ gap: 8rpx;
+}
+
+.apply-sku-title {
+ font-size: 28rpx;
+ color: #222;
+ overflow: hidden;
+ text-overflow: ellipsis;
+ white-space: nowrap;
+}
+
+.apply-sku-value {
+ font-size: 24rpx;
+ color: #B4854D;
+}
+
+.apply-sku-value--empty {
+ color: #E07040;
+}
+
+.apply-confirm-btn {
+ margin: 0;
+ height: 88rpx;
+ line-height: 88rpx;
+ background: #B4854D;
+ color: #fff;
+ font-size: 30rpx;
+ font-weight: 600;
+ border-radius: 12rpx;
+}
+
+.apply-confirm-btn::after {
+ border: none;
+}
+
+.sku-picker {
+ padding: 36rpx 32rpx calc(32rpx + env(safe-area-inset-bottom));
+ max-height: 70vh;
+ display: flex;
+ flex-direction: column;
+}
+
+.sku-picker-title {
+ font-size: 32rpx;
+ font-weight: 600;
+ color: #1A1A1A;
+ text-align: center;
+ margin-bottom: 20rpx;
+}
+
+.sku-picker-list {
+ max-height: 560rpx;
+}
+
+.sku-picker-item {
+ display: flex;
+ justify-content: space-between;
+ align-items: center;
+ gap: 20rpx;
+ padding: 28rpx 20rpx;
+ border-bottom: 1rpx solid #F0F0F0;
+}
+
+.sku-picker-item--active {
+ background: rgba(180, 133, 77, 0.08);
+}
+
+.sku-picker-label {
+ flex: 1;
+ font-size: 28rpx;
+ color: #333;
+ line-height: 1.4;
+}
+
+.sku-picker-price {
+ font-size: 26rpx;
+ color: #B4854D;
+ flex-shrink: 0;
+}
+
+.sku-picker-empty {
+ padding: 60rpx 0;
+ text-align: center;
+ color: #999;
+ font-size: 28rpx;
+}
+
diff --git a/pages/cart/quote.vue b/pages/cart/quote.vue
new file mode 100644
index 0000000..8ad8f1c
--- /dev/null
+++ b/pages/cart/quote.vue
@@ -0,0 +1,463 @@
+
+
+
+
+
+
+
+
+ 清单名
+ {{ listName }}
+
+
+ 商品数
+ {{ quoteItems.length }} 件
+
+
+ 明细合计
+ ¥{{ formatMoney(quote_items_total) }}
+
+
+ 套餐优惠总价
+ ¥{{ formatMoney(quote_preferential_total) }}
+
+
+
+
+
+ {{ index + 1 }}
+
+
+ {{ itemTitle(item) }}
+ {{ itemIdentifier(item) }}
+
+ 预选规格
+ {{ item.selected_sku }}
+
+
+
+ 单价
+ ¥{{ formatMoney(item.unit_price) }}
+
+
+ 优惠价
+ ¥{{ formatMoney(item.preferential_price) }}
+
+
+ 成交价
+ ¥{{ formatMoney(item.final_price) }}
+
+
+
+
+
+
+ 暂无报价明细
+
+
+
+
+ 已选规格 {{ preferSkuCount }} / {{ quoteItems.length }} 件计入合计
+
+ 总计金额
+ ¥{{ quoteFinalTotalDisplay }}
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/pages/goods/index.vue b/pages/goods/index.vue
index 7feaa8a..0149a37 100644
--- a/pages/goods/index.vue
+++ b/pages/goods/index.vue
@@ -67,6 +67,7 @@
+ {{ item.name_en || '-' }}
{{ item.name }}
@@ -316,6 +317,18 @@ export default {
max-width: 100%;
}
+.category-name-en {
+ font-size: 20rpx;
+ color: #B4854D;
+ letter-spacing: 1rpx;
+ white-space: nowrap;
+ overflow: hidden;
+ text-overflow: ellipsis;
+ max-width: 100%;
+ margin-bottom: 4rpx;
+ text-transform: uppercase;
+}
+
/* 卡片文字下方的点缀,增加设计感 */
.category-indicator {
width: 24rpx;
diff --git a/pages/product/detail.vue b/pages/product/detail.vue
index 5569516..b22c163 100644
--- a/pages/product/detail.vue
+++ b/pages/product/detail.vue
@@ -99,6 +99,36 @@
+
+
+
+
+
+
+
+
@@ -119,9 +149,10 @@