diff --git a/db/schema_phase1.sql b/db/schema_phase1.sql index 4e0a9c8..e6a3021 100644 --- a/db/schema_phase1.sql +++ b/db/schema_phase1.sql @@ -127,7 +127,7 @@ CREATE TABLE IF NOT EXISTS `fa_order` ( `service_id` int(10) unsigned NOT NULL DEFAULT '0', `service_name` varchar(100) NOT NULL DEFAULT '' COMMENT '服务名称(快照)', `service_image` varchar(255) NOT NULL DEFAULT '' COMMENT '服务主图(快照)', - `price_type` enum('fixed','quote','range') NOT NULL DEFAULT 'fixed', + `price_type` enum('fixed','quote','range','custom') NOT NULL DEFAULT 'fixed' COMMENT '一口价/报价竞价/区间/用户自主定价', `goods_images` varchar(1000) NOT NULL DEFAULT '' COMMENT '商品图片(json)', `goods_model` varchar(100) NOT NULL DEFAULT '' COMMENT '商品型号', `goods_num` int(11) NOT NULL DEFAULT '1', diff --git a/db/schema_phase6.sql b/db/schema_phase6.sql new file mode 100644 index 0000000..140b09c --- /dev/null +++ b/db/schema_phase6.sql @@ -0,0 +1,15 @@ +-- ============================================================================ +-- 优匠优服 · Phase 6 下单三种计价方式 +-- 一口价 fixed / 师傅报价竞价 quote / 用户自主定价 custom +-- fa_service 仍使用 fixed / quote / range(服务默认价态) +-- 下单时用户可覆盖 price_type,因此 fa_order 增加 custom +-- ============================================================================ +SET NAMES utf8mb4; + +ALTER TABLE `fa_order` + MODIFY COLUMN `price_type` enum('fixed','quote','range','custom') NOT NULL DEFAULT 'fixed' + COMMENT '一口价/师傅报价竞价/区间/用户自主定价'; + +-- 回滚(先确认没有 custom 订单): +-- SELECT COUNT(*) FROM fa_order WHERE price_type='custom'; +-- ALTER TABLE fa_order MODIFY COLUMN price_type enum('fixed','quote','range') NOT NULL DEFAULT 'fixed'; diff --git a/pages/master/hall.vue b/pages/master/hall.vue index 5d2ec07..a44304b 100644 --- a/pages/master/hall.vue +++ b/pages/master/hall.vue @@ -23,6 +23,8 @@ 急单 + 师傅报价 + 用户定价 {{ o.service_name }} ¥{{ o.pay_amount }} @@ -36,7 +38,7 @@ {{ o.left_seconds > 0 ? ('剩余 ' + countdown(o.left_seconds)) : '即将关闭' }} 我要报价({{ o.quote_count }}) - 立即抢单 + {{ o.price_type === 'custom' ? '按此价接单' : '立即抢单' }} @@ -64,7 +66,8 @@ const typeTabs = [ { key: 'all', name: '全部订单' }, { key: 'fixed', name: '一口价' }, - { key: 'quote', name: '报价订单' } + { key: 'quote', name: '报价订单' }, + { key: 'custom', name: '用户定价' } ]; const sortTabs = [ { key: 'new', name: '最新' }, @@ -147,6 +150,9 @@ .item { background: #fff; border-radius: 20rpx; margin-bottom: 20rpx; padding: 22rpx 24rpx; box-shadow: 0 6rpx 20rpx rgba(240,129,31,0.06); } .hd { display: flex; align-items: center; padding-bottom: 14rpx; border-bottom: 1rpx solid #F4F4F4; } .tag-urgent { padding: 0 12rpx; line-height: 34rpx; border-radius: 8rpx; background: #FDEEEB; color: #E8331B; font-size: 20rpx; margin-right: 10rpx; } + .tag-mode { padding: 0 12rpx; line-height: 34rpx; border-radius: 8rpx; font-size: 20rpx; margin-right: 10rpx; } + .tag-mode.quote { background: #F0EDFF; color: #5B3FD8; } + .tag-mode.custom { background: #E9F7EE; color: #2FA84F; } .svc { flex: 1; font-size: 30rpx; font-weight: 700; color: #1F1F1F; } .amt { font-size: 32rpx; font-weight: 700; color: #F0710D; } .bd { display: flex; flex-direction: column; padding: 16rpx 0; } diff --git a/pages/order/create.vue b/pages/order/create.vue index 65c8b8c..419db95 100644 --- a/pages/order/create.vue +++ b/pages/order/create.vue @@ -6,11 +6,38 @@ {{ svc ? svc.name : '' }} {{ svc ? svc.price_text : '' }} - + {{ urgent ? '已加急 +20%' : '加急' }} + + + 选择下单方式 + + + {{ m.name }} + {{ m.desc }} + ✓ + + + {{ modeNote }} + + + 我的出价 + + ¥ + + + + + 服务地址 @@ -61,22 +88,42 @@ - 费用明细 - 基础价¥{{ amount.base_amount }} - 楼层费¥{{ amount.floor_amount }} - 加急费¥{{ amount.urgent_amount }} - 应付合计¥{{ amount.pay_amount }} + {{ priceType === 'quote' ? '费用预估' : '费用明细' }} + + {{ priceType === 'custom' ? '您的出价' : '基础价' }} + ¥{{ amount.base_amount }} + + + 楼层费 + ¥{{ amount.floor_amount }} + + + 加急费 + ¥{{ amount.urgent_amount }} + + + 优惠券抵扣 + -¥{{ amount.discount_amount }} + + + {{ priceType === 'quote' ? '参考合计' : '应付合计' }} + ¥{{ amount.pay_amount }} + + 先支付参考价,选定师傅报价后按最终报价结算 + 自主定价为含楼层/加急的总价,师傅接单即按此价服务 - 合计¥{{ amount ? amount.pay_amount : 0 }} - {{ submitting ? '提交中...' : '提交并支付' }} + {{ priceType === 'quote' ? '参考价' : '合计' }}¥{{ amount ? amount.pay_amount : 0 }} + + {{ submitting ? '提交中...' : (priceType === 'quote' ? '发布需求' : '提交并支付') }} +