Compare commits

...

2 Commits

Author SHA1 Message Date
zhonghua.li
f373f591dd 调整接待中验页面的4个按钮。 2026-04-18 21:45:23 +08:00
zhonghua.li
453b6e8841 解决页面显示空白的问题。 2026-04-18 17:15:26 +08:00
26 changed files with 1363 additions and 1319 deletions

View File

@@ -19,7 +19,7 @@
class="tab-item"
:class="{ active: activeTab === 'reception' }"
@click="switchTab('reception')">
<text>开始接待</text>
<text>客户接待</text>
</view>
<view
class="tab-item"
@@ -27,6 +27,12 @@
@click="switchTab('status')">
<text>接待中</text>
</view>
<view
class="tab-item"
:class="{ active: activeTab === 'tag' }"
@click="switchTab('tag')">
<text>标签管理</text>
</view>
</view>
<common-begin-reception
v-if="activeTab === 'reception'"
@@ -42,10 +48,15 @@
ref="serviceListRef"
class="service-status-container"
:style="{ top: computedContentTop || contentTop }"
record-state-label="接待中"
:show-record-state-indicator="false"
empty-list-hint="暂无接待中记录"
:show-reception-entry-shortcut="true"
/>
<tag-management-panel
v-if="activeTab === 'tag'"
ref="tagPanelRef"
:content-top="computedContentTop || contentTop"
/>
</view>
</view>
</template>
@@ -56,6 +67,7 @@ import statusBar from '@/uni_modules/uni-nav-bar/components/uni-nav-bar/uni-stat
// #endif
import CommonBeginReception from './common_begin_reception.vue';
import ServiceListFurniture from './serviceListFurniture.vue';
import TagManagementPanel from './tag_management_panel.vue';
export default {
name: '接待中',
@@ -64,12 +76,14 @@ export default {
statusBar,
CommonBeginReception,
ServiceListFurniture,
TagManagementPanel,
},
// #endif
// #ifndef APP
components: {
CommonBeginReception,
ServiceListFurniture,
TagManagementPanel,
},
// #endif
data() {
@@ -133,6 +147,13 @@ export default {
list.onServiceStatusRefresh();
}
});
} else if (this.activeTab === 'tag') {
this.$nextTick(() => {
const tagPanel = this.$refs.tagPanelRef;
if (tagPanel && typeof tagPanel.refreshTagList === 'function') {
tagPanel.refreshTagList();
}
});
}
});
},
@@ -186,12 +207,21 @@ export default {
});
},
switchTab(tab) {
if (tab !== 'reception' && tab !== 'status') {
if (tab !== 'reception' && tab !== 'status' && tab !== 'tag') {
return;
}
this.activeTab = tab;
if (tab === 'reception') {
this.resetReceptionForm();
} else if (tab === 'tag') {
this.$nextTick(() => {
this.$nextTick(() => {
const p = this.$refs.tagPanelRef;
if (p && typeof p.refreshTagList === 'function') {
p.refreshTagList();
}
});
});
}
},
resetReceptionForm() {

View File

@@ -63,31 +63,45 @@
<text class="staff-name">{{ item.staffName || '未分配销售' }}</text>
</view>
<view class="service-status">
<view class="action-trigger">
<view class="action-trigger__primary" @click.stop="finishService(item)">
<text class="action-trigger__primary-text">结束服务</text>
</view>
<view class="action-trigger__more" @click.stop="toggleActionMenu(item.id)">
<uni-icons type="bottom" size="16" color="#007AFF"></uni-icons>
</view>
</view>
<view
v-if="!isRecordingItem(item.id)"
class="service-action-btn service-action-btn--record"
@click.stop="startPhoneRecord(item)"
v-if="actionMenuForId && String(actionMenuForId) === String(item.id)"
class="action-menu"
@click.stop
>
<text>录音</text>
<view
class="action-menu-item"
@click.stop="onActionMenuSelect('record', item)"
>
<text>{{ isRecordingItem(item.id) ? '停止录音' : '开始录音' }}</text>
</view>
<view
class="action-menu-item"
@click.stop="onActionMenuSelect('supplement', item)"
>
<text>补录客户</text>
</view>
<view
class="action-menu-item"
:class="{ 'action-menu-item--disabled': isUploading(item.id) }"
@click.stop="onActionMenuSelect('upload', item)"
>
<text>{{ isUploading(item.id) ? '上传中' : '上传录音' }}</text>
</view>
</view>
<view
v-else
class="service-action-btn service-action-btn--record service-action-btn--recording"
@click.stop="stopPhoneRecordAndUpload(item)"
>
<text>停止</text>
</view>
<view class="service-action-btn service-action-btn--supplement" @click.stop="showSupplementDialog(item)">
<text>补录</text>
</view>
<view class="service-action-btn service-action-btn--upload" @click.stop="chooseAndUploadFile(item)">
<text>{{ isUploading(item.id) ? '上传中' : '上传' }}</text>
</view>
<view class="service-action-btn service-action-btn--finish" @click.stop="finishService(item)">
<text>结束</text>
</view>
<uni-icons type="bars" size="16" color="#007AFF"></uni-icons>
<text>{{ recordStateLabel }}</text>
<template v-if="showRecordStateIndicator">
<uni-icons type="bars" size="16" color="#007AFF"></uni-icons>
<text>{{ recordStateLabel }}</text>
</template>
</view>
</view>
@@ -139,6 +153,12 @@
<text>正在加载更多...</text>
</view>
</scroll-view>
<view
v-if="actionMenuForId"
class="action-menu-mask"
@click="closeActionMenu"
/>
<!-- 补录弹窗 -->
<view class="supplement-dialog-mask" v-if="showSupplementModal" @click="closeSupplementDialog">
@@ -231,6 +251,11 @@ export default {
type: Boolean,
default: false,
},
/** 卡片右侧是否显示状态横杠图标与 recordStateLabel 文案 */
showRecordStateIndicator: {
type: Boolean,
default: true,
},
},
data() {
return {
@@ -261,7 +286,8 @@ export default {
recorderSupported: false,
recorderManager: null,
recordingServiceId: null,
recordingContext: null
recordingContext: null,
actionMenuForId: null
}
},
mounted() {
@@ -282,6 +308,51 @@ export default {
}
},
methods: {
toggleActionMenu(recordId) {
const id = recordId === undefined || recordId === null ? null : String(recordId);
if (!id) {
this.actionMenuForId = null;
return;
}
this.actionMenuForId = this.actionMenuForId === id ? null : id;
},
closeActionMenu() {
this.actionMenuForId = null;
},
onActionMenuSelect(action, item) {
if (!item || !item.id) {
this.closeActionMenu();
return;
}
const id = String(item.id);
if (this.actionMenuForId && String(this.actionMenuForId) !== id) {
// 避免列表复用导致错点
this.actionMenuForId = id;
}
if (action === 'record') {
if (this.isRecordingItem(item.id)) {
this.stopPhoneRecordAndUpload(item);
} else {
this.startPhoneRecord(item);
}
this.closeActionMenu();
return;
}
if (action === 'supplement') {
this.showSupplementDialog(item);
this.closeActionMenu();
return;
}
if (action === 'upload') {
if (this.isUploading(item.id)) {
return;
}
this.chooseAndUploadFile(item);
this.closeActionMenu();
return;
}
this.closeActionMenu();
},
initServiceRecorder() {
this.recorderSupported = typeof uni.getRecorderManager === 'function';
if (!this.recorderSupported) {
@@ -749,6 +820,7 @@ export default {
},
async uploadFileForRecord(item, selectedFile) {
const recordId = String(item.id);
this.closeActionMenu();
this.uploadingIds = [...this.uploadingIds, recordId];
try {
uni.showLoading({
@@ -806,6 +878,7 @@ export default {
});
return;
}
this.closeActionMenu();
uni.showModal({
title: '确认结束',
@@ -1148,6 +1221,7 @@ export default {
margin-bottom: 24rpx;
box-shadow: 0 2rpx 8rpx rgba(0, 0, 0, 0.04);
overflow: visible;
position: relative;
}
.card-header {
@@ -1217,6 +1291,82 @@ export default {
align-items: center;
gap: 8rpx;
}
.action-trigger {
display: inline-flex;
align-items: center;
gap: 6rpx;
padding: 0;
border-radius: 10rpx;
background-color: #EEF4FF;
overflow: hidden;
}
.action-trigger__primary {
padding: 6rpx 12rpx;
display: inline-flex;
align-items: center;
justify-content: center;
background-color: transparent;
}
.action-trigger__primary-text {
font-size: 26rpx;
color: #007AFF;
white-space: nowrap;
}
.action-trigger__more {
padding: 6rpx 10rpx 6rpx 6rpx;
display: inline-flex;
align-items: center;
justify-content: center;
border-left: 1px solid rgba(0, 122, 255, 0.15);
background-color: transparent;
}
.action-menu {
position: absolute;
right: 24rpx;
top: 96rpx;
min-width: 220rpx;
background-color: #FFFFFF;
border-radius: 16rpx;
box-shadow: 0 8rpx 24rpx rgba(0, 0, 0, 0.12);
border: 1px solid #EEF0F3;
z-index: 50;
overflow: hidden;
}
.action-menu-item {
padding: 22rpx 24rpx;
display: flex;
align-items: center;
justify-content: flex-start;
}
.action-menu-item text {
font-size: 28rpx;
color: #111827;
}
.action-menu-item:active {
background-color: #F5F7FA;
}
.action-menu-item--disabled {
opacity: 0.55;
}
.action-menu-mask {
position: fixed;
left: 0;
top: 0;
right: 0;
bottom: 0;
background-color: transparent;
z-index: 40;
}
.service-status text {
font-size: 26rpx;
@@ -1379,58 +1529,6 @@ export default {
font-size: 26rpx;
color: #999;
}
.service-action-btn {
padding: 6rpx 16rpx;
border-radius: 4rpx;
font-size: 26rpx;
font-weight: 400;
display: flex;
align-items: center;
justify-content: center;
margin-right: 12rpx;
cursor: pointer;
}
.service-action-btn--finish {
color: #007AFF;
background-color: transparent;
}
.service-action-btn--finish:active {
opacity: 0.7;
}
.service-action-btn--supplement {
color: #10B981;
background-color: transparent;
}
.service-action-btn--supplement:active {
opacity: 0.7;
}
.service-action-btn--upload {
color: #7C3AED;
background-color: transparent;
}
.service-action-btn--upload:active {
opacity: 0.7;
}
.service-action-btn--record {
color: #007AFF;
background-color: transparent;
}
.service-action-btn--record:active {
opacity: 0.7;
}
.service-action-btn--recording {
color: #FF3B30;
}
.service-status-empty {
padding: 48rpx 0;

File diff suppressed because it is too large Load Diff

View File

@@ -12,16 +12,11 @@
<text class="function-name">开始接待</text>
<text class="function-desc"></text>
</view>
<view class="function-item" @click="openReceptionTab('status')">
<view class="function-item" @click="goReceptionInProgressPage('跳转服务中失败')">
<view class="function-icon">📌</view>
<text class="function-name">服务中</text>
<text class="function-desc"></text>
</view>
<view class="function-item" @click="openReceptionInProgress">
<view class="function-icon"></view>
<text class="function-name">接待中</text>
<text class="function-desc"></text>
</view>
<view class="function-item" @click="openReceptionTab('tag')">
<view class="function-icon">🗂</view>
<text class="function-name">标签管理</text>
@@ -80,15 +75,18 @@ export default {
},
});
},
/** 独立「接待中」列表页(与接待页内「服务中」列表同源逻辑) */
openReceptionInProgress() {
/** 独立「接待中 / 服务中」列表页:`/pages-subpackage/furniture_reception/reception_in_progress` */
goReceptionInProgressPage(failTitle) {
uni.navigateTo({
url: '/pages-subpackage/furniture_reception/reception_in_progress',
fail: () => {
uni.showToast({ title: '跳转接待中失败', icon: 'none' });
uni.showToast({ title: failTitle || '页面打开失败', icon: 'none' });
},
});
},
openReceptionInProgress() {
this.goReceptionInProgressPage('跳转接待中失败');
},
openCustomerTab(tab) {
const url = `/pages-subpackage/furniture_customer/furniture_customer?tab=${tab}`;
uni.navigateTo({ url });

View File

@@ -1 +1 @@
"use strict";const e=require("../common/vendor.js"),o={name:"AiAnalysisDashboardBody",props:{contentTop:{type:String,default:""},contentBottom:{type:String,default:"96rpx"}},data:()=>({showQualityCoverage:!1,openQualityCoverageTrigger:0}),computed:{scrollTop(){return this.contentTop||"88rpx"},scrollBottom(){return this.contentBottom||"96rpx"}},methods:{showQualityCoveragePopup(){this.showQualityCoverage=!0,this.$nextTick((()=>{this.openQualityCoverageTrigger++}))},onQualityCoveragePopupClose(){this.showQualityCoverage=!1},navigateToPage(o){const t=`pages-subpackage/ai_features/${o}/${o}`;e.index.navigateTo({url:`/${t}`,fail:o=>{console.error("导航失败:",o),e.index.showToast({title:"页面跳转失败",icon:"none"})}})},quickJumpReceptionTab(o){if(["status","reception","tag"].includes(o)){try{e.index.setStorageSync("workbench-reception-tab",o)}catch(t){console.warn("[AiAnalysisDashboardBody] 写入接待tab快捷跳转参数失败:",t)}e.index.navigateTo({url:`/pages-subpackage/furniture_reception/furniture_reception_entry?tab=${encodeURIComponent(o)}`,fail:o=>{console.error("[AiAnalysisDashboardBody] 快捷跳转接待页失败:",o),e.index.showToast({title:"跳转失败,请稍后重试",icon:"none"})}})}},quickJumpReceptionInProgress(){e.index.navigateTo({url:"/pages-subpackage/furniture_reception/reception_in_progress",fail:o=>{console.error("[AiAnalysisDashboardBody] 快捷跳转接待中页失败:",o),e.index.showToast({title:"跳转失败,请稍后重试",icon:"none"})}})},quickJumpCustomerTab(o){["service","customer"].includes(o)&&e.index.navigateTo({url:`/pages-subpackage/furniture_customer/furniture_customer?tab=${o}`,fail:o=>{console.error("[AiAnalysisDashboardBody] 快捷跳转客户页失败:",o),e.index.showToast({title:"跳转失败,请稍后重试",icon:"none"})}})}}};if(!Array){e.resolveComponent("QualityCoveragePopup")()}const t=e._export_sfc(o,[["render",function(o,t,a,i,n,r){return e.e({a:e.o((e=>r.quickJumpReceptionTab("reception")),"80"),b:e.o((e=>r.quickJumpReceptionTab("status")),"3c"),c:e.o(((...e)=>r.quickJumpReceptionInProgress&&r.quickJumpReceptionInProgress(...e)),"e2"),d:e.o((e=>r.quickJumpReceptionTab("tag")),"e5"),e:e.o((e=>r.quickJumpCustomerTab("customer")),"95"),f:e.o((e=>r.quickJumpCustomerTab("service")),"0e"),g:e.o((e=>r.navigateToPage("recording_duration")),"ff"),h:e.o((e=>r.navigateToPage("customer_count")),"79"),i:e.o(((...e)=>r.showQualityCoveragePopup&&r.showQualityCoveragePopup(...e)),"2c"),j:e.o((e=>r.navigateToPage("speech_rating")),"6a"),k:e.o((e=>r.navigateToPage("intent_level")),"76"),l:e.o((e=>r.navigateToPage("deal_attribution")),"96"),m:e.o((e=>r.navigateToPage("opening_rate")),"94"),n:e.o((e=>r.navigateToPage("over_commitment")),"43"),o:e.o((e=>r.navigateToPage("red_line_touch")),"01"),p:r.scrollTop,q:r.scrollBottom,r:n.showQualityCoverage},n.showQualityCoverage?{s:e.o(r.onQualityCoveragePopupClose,"14"),t:e.p({"open-trigger":n.openQualityCoverageTrigger})}:{})}],["__scopeId","data-v-e2fd5293"]]);wx.createComponent(t);
"use strict";const e=require("../common/vendor.js"),o={name:"AiAnalysisDashboardBody",props:{contentTop:{type:String,default:""},contentBottom:{type:String,default:"96rpx"}},data:()=>({showQualityCoverage:!1,openQualityCoverageTrigger:0}),computed:{scrollTop(){return this.contentTop||"88rpx"},scrollBottom(){return this.contentBottom||"96rpx"}},methods:{showQualityCoveragePopup(){this.showQualityCoverage=!0,this.$nextTick((()=>{this.openQualityCoverageTrigger++}))},onQualityCoveragePopupClose(){this.showQualityCoverage=!1},navigateToPage(o){const t=`pages-subpackage/ai_features/${o}/${o}`;e.index.navigateTo({url:`/${t}`,fail:o=>{console.error("导航失败:",o),e.index.showToast({title:"页面跳转失败",icon:"none"})}})},quickJumpReceptionTab(o){if(["status","reception","tag"].includes(o)){try{e.index.setStorageSync("workbench-reception-tab",o)}catch(t){console.warn("[AiAnalysisDashboardBody] 写入接待tab快捷跳转参数失败:",t)}e.index.navigateTo({url:`/pages-subpackage/furniture_reception/furniture_reception_entry?tab=${encodeURIComponent(o)}`,fail:o=>{console.error("[AiAnalysisDashboardBody] 快捷跳转接待页失败:",o),e.index.showToast({title:"跳转失败,请稍后重试",icon:"none"})}})}},quickJumpReceptionInProgress(){e.index.navigateTo({url:"/pages-subpackage/furniture_reception/reception_in_progress",fail:o=>{console.error("[AiAnalysisDashboardBody] 快捷跳转接待中页失败:",o),e.index.showToast({title:"跳转失败,请稍后重试",icon:"none"})}})},quickJumpCustomerTab(o){["service","customer"].includes(o)&&e.index.navigateTo({url:`/pages-subpackage/furniture_customer/furniture_customer?tab=${o}`,fail:o=>{console.error("[AiAnalysisDashboardBody] 快捷跳转客户页失败:",o),e.index.showToast({title:"跳转失败,请稍后重试",icon:"none"})}})}}};if(!Array){e.resolveComponent("QualityCoveragePopup")()}const t=e._export_sfc(o,[["render",function(o,t,a,i,n,r){return e.e({a:e.o((e=>r.quickJumpReceptionTab("reception")),"9a"),b:e.o((e=>r.quickJumpReceptionTab("status")),"18"),c:e.o(((...e)=>r.quickJumpReceptionInProgress&&r.quickJumpReceptionInProgress(...e)),"fb"),d:e.o((e=>r.quickJumpReceptionTab("tag")),"c6"),e:e.o((e=>r.quickJumpCustomerTab("customer")),"14"),f:e.o((e=>r.quickJumpCustomerTab("service")),"a1"),g:e.o((e=>r.navigateToPage("recording_duration")),"84"),h:e.o((e=>r.navigateToPage("customer_count")),"1e"),i:e.o(((...e)=>r.showQualityCoveragePopup&&r.showQualityCoveragePopup(...e)),"7c"),j:e.o((e=>r.navigateToPage("speech_rating")),"41"),k:e.o((e=>r.navigateToPage("intent_level")),"b6"),l:e.o((e=>r.navigateToPage("deal_attribution")),"e5"),m:e.o((e=>r.navigateToPage("opening_rate")),"ef"),n:e.o((e=>r.navigateToPage("over_commitment")),"00"),o:e.o((e=>r.navigateToPage("red_line_touch")),"92"),p:r.scrollTop,q:r.scrollBottom,r:n.showQualityCoverage},n.showQualityCoverage?{s:e.o(r.onQualityCoveragePopupClose,"e9"),t:e.p({"open-trigger":n.openQualityCoverageTrigger})}:{})}],["__scopeId","data-v-28d86573"]]);wx.createComponent(t);

File diff suppressed because one or more lines are too long

View File

@@ -1 +1 @@
.ai-dashboard-body.data-v-e2fd5293{position:relative;width:100%}.content.data-v-e2fd5293{padding-top:0!important;margin-top:0!important;position:relative;top:0;min-height:calc(100vh - 200rpx)}.content-scroll.data-v-e2fd5293{position:absolute;left:0;right:0;top:0;bottom:0;padding:0!important;margin:0!important;box-sizing:border-box}.content-scroll>view.data-v-e2fd5293{margin-top:0;padding-top:0;margin-bottom:0;padding-bottom:0}.category-section.data-v-e2fd5293{margin:20rpx 30rpx;background:#fff;border-radius:16rpx;overflow:hidden;box-shadow:0 2rpx 8rpx rgba(0,0,0,.04)}.category-section.data-v-e2fd5293:first-child{margin-top:0}.category-section.data-v-e2fd5293:last-child{margin-bottom:0}.category-header.data-v-e2fd5293{display:flex;align-items:center;padding:30rpx;background:#fff;border-bottom:1rpx solid #f0f0f0}.category-icon.data-v-e2fd5293{font-size:32rpx;margin-right:20rpx}.category-title.data-v-e2fd5293{font-size:32rpx;font-weight:500;color:#333}.function-grid.data-v-e2fd5293{display:flex;flex-wrap:wrap;padding:10rpx}.quick-links-section .function-item.data-v-e2fd5293{width:calc(33.333% - 10rpx);background:#fff;border-radius:12rpx;padding:24rpx 12rpx;margin:5rpx;text-align:center;box-shadow:0 2rpx 4rpx rgba(0,0,0,.04);transition:all .3s ease;border:1rpx solid #f0f0f0;box-sizing:border-box}.two-column .function-item.data-v-e2fd5293{flex:1;background:#fff;border-radius:12rpx;padding:24rpx 16rpx;margin:0 5rpx;text-align:center;box-shadow:0 2rpx 4rpx rgba(0,0,0,.04);transition:all .3s ease;border:1rpx solid #f0f0f0}.three-column .function-item.data-v-e2fd5293{width:31%;background:#fff;border-radius:12rpx;padding:24rpx 12rpx;margin:1%;text-align:center;box-shadow:0 2rpx 4rpx rgba(0,0,0,.04);transition:all .3s ease;border:1rpx solid #f0f0f0}.sales-analysis .function-item.full-row-item.data-v-e2fd5293{flex:1;width:calc(50% - 10rpx);background:#fff;border-radius:12rpx;padding:24rpx 16rpx;margin:0 5rpx;text-align:center;box-shadow:0 2rpx 4rpx rgba(0,0,0,.04);transition:all .3s ease;border:1rpx solid #f0f0f0}.sales-analysis .function-item.new-line-item.data-v-e2fd5293{flex-basis:100%;width:calc(50% - 10rpx);margin-top:10rpx}.function-item.data-v-e2fd5293:active{transform:scale(.95);box-shadow:0 1rpx 2rpx rgba(0,0,0,.1)}.function-icon.data-v-e2fd5293{font-size:48rpx;margin-bottom:12rpx}.function-name.data-v-e2fd5293{display:block;font-size:28rpx;font-weight:500;color:#333;margin-bottom:8rpx}.function-desc.data-v-e2fd5293{display:block;font-size:24rpx;color:#666;line-height:1.4}
.ai-dashboard-body.data-v-28d86573{position:relative;width:100%}.content.data-v-28d86573{padding-top:0!important;margin-top:0!important;position:relative;top:0;min-height:calc(100vh - 200rpx)}.content-scroll.data-v-28d86573{position:absolute;left:0;right:0;top:0;bottom:0;padding:0!important;margin:0!important;box-sizing:border-box}.content-scroll>view.data-v-28d86573{margin-top:0;padding-top:0;margin-bottom:0;padding-bottom:0}.category-section.data-v-28d86573{margin:20rpx 30rpx;background:#fff;border-radius:16rpx;overflow:hidden;box-shadow:0 2rpx 8rpx rgba(0,0,0,.04)}.category-section.data-v-28d86573:first-child{margin-top:0}.category-section.data-v-28d86573:last-child{margin-bottom:0}.category-header.data-v-28d86573{display:flex;align-items:center;padding:30rpx;background:#fff;border-bottom:1rpx solid #f0f0f0}.category-icon.data-v-28d86573{font-size:32rpx;margin-right:20rpx}.category-title.data-v-28d86573{font-size:32rpx;font-weight:500;color:#333}.function-grid.data-v-28d86573{display:flex;flex-wrap:wrap;padding:10rpx}.quick-links-section .function-item.data-v-28d86573{width:calc(33.333% - 10rpx);background:#fff;border-radius:12rpx;padding:24rpx 12rpx;margin:5rpx;text-align:center;box-shadow:0 2rpx 4rpx rgba(0,0,0,.04);transition:all .3s ease;border:1rpx solid #f0f0f0;box-sizing:border-box}.two-column .function-item.data-v-28d86573{flex:1;background:#fff;border-radius:12rpx;padding:24rpx 16rpx;margin:0 5rpx;text-align:center;box-shadow:0 2rpx 4rpx rgba(0,0,0,.04);transition:all .3s ease;border:1rpx solid #f0f0f0}.three-column .function-item.data-v-28d86573{width:31%;background:#fff;border-radius:12rpx;padding:24rpx 12rpx;margin:1%;text-align:center;box-shadow:0 2rpx 4rpx rgba(0,0,0,.04);transition:all .3s ease;border:1rpx solid #f0f0f0}.sales-analysis .function-item.full-row-item.data-v-28d86573{flex:1;width:calc(50% - 10rpx);background:#fff;border-radius:12rpx;padding:24rpx 16rpx;margin:0 5rpx;text-align:center;box-shadow:0 2rpx 4rpx rgba(0,0,0,.04);transition:all .3s ease;border:1rpx solid #f0f0f0}.sales-analysis .function-item.new-line-item.data-v-28d86573{flex-basis:100%;width:calc(50% - 10rpx);margin-top:10rpx}.function-item.data-v-28d86573:active{transform:scale(.95);box-shadow:0 1rpx 2rpx rgba(0,0,0,.1)}.function-icon.data-v-28d86573{font-size:48rpx;margin-bottom:12rpx}.function-name.data-v-28d86573{display:block;font-size:28rpx;font-weight:500;color:#333;margin-bottom:8rpx}.function-desc.data-v-28d86573{display:block;font-size:24rpx;color:#666;line-height:1.4}

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@@ -3,7 +3,7 @@
"usingComponents": {
"common-begin-reception": "./common_begin_reception",
"service-list-furniture": "./serviceListFurniture",
"uni-nav-bar": "../../uni_modules/uni-nav-bar/components/uni-nav-bar/uni-nav-bar",
"uni-icons": "../../uni_modules/uni-icons/components/uni-icons/uni-icons"
"tag-management-panel": "./tag_management_panel",
"uni-nav-bar": "../../uni_modules/uni-nav-bar/components/uni-nav-bar/uni-nav-bar"
}
}

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@@ -1 +1 @@
"use strict";const e=require("../../common/vendor.js"),t={name:"接待中",components:{CommonBeginReception:()=>"./common_begin_reception.js",ServiceListFurniture:()=>"./serviceListFurniture.js"},data:()=>({activeTab:"status",navbarTop:"88rpx",contentTop:"160rpx",receptionForm:{id:"",customerName:"",contact:"",customerSource:"",gender:"女",age:"",dealershipId:"",dealershipName:"",salesId:"",salesName:"",salesPhone:"",recordingCount:0,intendedModel:"",infoCard:"",remark:"",detailedAddress:"",contactCount:0}}),computed:{computedNavbarTop(){const t=e.index.getSystemInfoSync();return((t.statusBarHeight||20)+44)*(750/(t.windowWidth||t.screenWidth||375))+"rpx"},computedContentTop(){const t=e.index.getSystemInfoSync();return((t.statusBarHeight||20)+44)*(750/(t.windowWidth||t.screenWidth||375))+72+"rpx"}},onLoad(){this.updateNavbarPosition(),this.loadCurrentUserInfo()},onShow(){this.$nextTick((()=>{this.updateNavbarPosition(),setTimeout((()=>this.updateNavbarPosition()),50),"status"===this.activeTab&&this.$nextTick((()=>{const e=this.$refs.serviceListRef;e&&"function"==typeof e.onServiceStatusRefresh&&e.onServiceStatusRefresh()}))}))},methods:{updateNavbarPosition(){const t=2*(e.index.getSystemInfoSync().statusBarHeight||20)+88;this.$set(this,"navbarTop",t+"rpx"),this.$set(this,"contentTop",t+72+"rpx"),this.$forceUpdate()},loadCurrentUserInfo(){try{const t=e.index.getStorageSync("backend-login-response")||{};t.userName&&(this.receptionForm.salesName=t.userName),t.phone?this.receptionForm.salesPhone=t.phone:t.userName&&(this.receptionForm.salesPhone=t.userName),t.userId&&(this.receptionForm.salesId=String(t.userId))}catch(t){console.error("[ReceptionInProgress] 加载当前登录用户信息失败:",t)}},goBack(){getCurrentPages().length<=1?e.index.switchTab({url:"/pages/workbench/workbench",fail:e=>{console.error("[ReceptionInProgress] 切回工作台失败:",e)}}):e.index.navigateBack({fail:e=>{console.error("[ReceptionInProgress] 返回失败:",e)}})},switchTab(e){"reception"!==e&&"status"!==e||(this.activeTab=e,"reception"===e&&this.resetReceptionForm())},resetReceptionForm(){this.receptionForm={id:"",customerName:"",contact:"",customerSource:"",gender:"女",age:"",dealershipId:"",dealershipName:"",salesId:"",salesName:"",salesPhone:"",recordingCount:0,intendedModel:"",infoCard:"",remark:"",detailedAddress:"",contactCount:0},this.loadCurrentUserInfo()},onReceptionCancel(){this.resetReceptionForm()},onReceptionSaveSuccess({action:e,data:t}){t&&(this.receptionForm={...this.receptionForm,...t}),this.resetReceptionForm(),"start"===e&&(this.activeTab="status",this.$nextTick((()=>{const e=this.$refs.serviceListRef;e&&"function"==typeof e.onServiceStatusRefresh&&e.onServiceStatusRefresh()})))},onReceptionSaveError({action:e,error:t}){console.error("[ReceptionInProgress] 保存失败:",e,t)}}};if(!Array){(e.resolveComponent("uni-nav-bar")+e.resolveComponent("common-begin-reception")+e.resolveComponent("service-list-furniture"))()}Math;const o=e._export_sfc(t,[["render",function(t,o,r,n,s,i){return e.e({a:e.o(i.goBack,"42"),b:e.p({fixed:!0,statusBar:!0,border:!1,title:"接待中",leftIcon:"left",color:"#333",backgroundColor:"#FFFFFF"}),c:"reception"===s.activeTab?1:"",d:e.o((e=>i.switchTab("reception")),"3d"),e:"status"===s.activeTab?1:"",f:e.o((e=>i.switchTab("status")),"30"),g:i.computedNavbarTop||s.navbarTop,h:"reception"===s.activeTab},"reception"===s.activeTab?{i:i.computedContentTop||s.contentTop,j:e.o(i.onReceptionCancel,"06"),k:e.o(i.onReceptionSaveSuccess,"f9"),l:e.o(i.onReceptionSaveError,"4b"),m:e.p({"initial-data":s.receptionForm})}:{},{n:"status"===s.activeTab},"status"===s.activeTab?{o:e.sr("serviceListRef","199fff57-2"),p:i.computedContentTop||s.contentTop,q:e.p({"record-state-label":"接待中","empty-list-hint":"暂无接待中记录","show-reception-entry-shortcut":!0})}:{})}]]);wx.createPage(o);
"use strict";const e=require("../../common/vendor.js"),t={name:"接待中",components:{CommonBeginReception:()=>"./common_begin_reception.js",ServiceListFurniture:()=>"./serviceListFurniture.js",TagManagementPanel:()=>"./tag_management_panel.js"},data:()=>({activeTab:"status",navbarTop:"88rpx",contentTop:"160rpx",receptionForm:{id:"",customerName:"",contact:"",customerSource:"",gender:"女",age:"",dealershipId:"",dealershipName:"",salesId:"",salesName:"",salesPhone:"",recordingCount:0,intendedModel:"",infoCard:"",remark:"",detailedAddress:"",contactCount:0}}),computed:{computedNavbarTop(){const t=e.index.getSystemInfoSync();return((t.statusBarHeight||20)+44)*(750/(t.windowWidth||t.screenWidth||375))+"rpx"},computedContentTop(){const t=e.index.getSystemInfoSync();return((t.statusBarHeight||20)+44)*(750/(t.windowWidth||t.screenWidth||375))+72+"rpx"}},onLoad(){this.updateNavbarPosition(),this.loadCurrentUserInfo()},onShow(){this.$nextTick((()=>{this.updateNavbarPosition(),setTimeout((()=>this.updateNavbarPosition()),50),"status"===this.activeTab?this.$nextTick((()=>{const e=this.$refs.serviceListRef;e&&"function"==typeof e.onServiceStatusRefresh&&e.onServiceStatusRefresh()})):"tag"===this.activeTab&&this.$nextTick((()=>{const e=this.$refs.tagPanelRef;e&&"function"==typeof e.refreshTagList&&e.refreshTagList()}))}))},methods:{updateNavbarPosition(){const t=2*(e.index.getSystemInfoSync().statusBarHeight||20)+88;this.$set(this,"navbarTop",t+"rpx"),this.$set(this,"contentTop",t+72+"rpx"),this.$forceUpdate()},loadCurrentUserInfo(){try{const t=e.index.getStorageSync("backend-login-response")||{};t.userName&&(this.receptionForm.salesName=t.userName),t.phone?this.receptionForm.salesPhone=t.phone:t.userName&&(this.receptionForm.salesPhone=t.userName),t.userId&&(this.receptionForm.salesId=String(t.userId))}catch(t){console.error("[ReceptionInProgress] 加载当前登录用户信息失败:",t)}},goBack(){getCurrentPages().length<=1?e.index.switchTab({url:"/pages/workbench/workbench",fail:e=>{console.error("[ReceptionInProgress] 切回工作台失败:",e)}}):e.index.navigateBack({fail:e=>{console.error("[ReceptionInProgress] 返回失败:",e)}})},switchTab(e){"reception"!==e&&"status"!==e&&"tag"!==e||(this.activeTab=e,"reception"===e?this.resetReceptionForm():"tag"===e&&this.$nextTick((()=>{this.$nextTick((()=>{const e=this.$refs.tagPanelRef;e&&"function"==typeof e.refreshTagList&&e.refreshTagList()}))})))},resetReceptionForm(){this.receptionForm={id:"",customerName:"",contact:"",customerSource:"",gender:"女",age:"",dealershipId:"",dealershipName:"",salesId:"",salesName:"",salesPhone:"",recordingCount:0,intendedModel:"",infoCard:"",remark:"",detailedAddress:"",contactCount:0},this.loadCurrentUserInfo()},onReceptionCancel(){this.resetReceptionForm()},onReceptionSaveSuccess({action:e,data:t}){t&&(this.receptionForm={...this.receptionForm,...t}),this.resetReceptionForm(),"start"===e&&(this.activeTab="status",this.$nextTick((()=>{const e=this.$refs.serviceListRef;e&&"function"==typeof e.onServiceStatusRefresh&&e.onServiceStatusRefresh()})))},onReceptionSaveError({action:e,error:t}){console.error("[ReceptionInProgress] 保存失败:",e,t)}}};if(!Array){(e.resolveComponent("uni-nav-bar")+e.resolveComponent("common-begin-reception")+e.resolveComponent("service-list-furniture")+e.resolveComponent("tag-management-panel"))()}Math;const o=e._export_sfc(t,[["render",function(t,o,n,s,r,a){return e.e({a:e.o(a.goBack,"42"),b:e.p({fixed:!0,statusBar:!0,border:!1,title:"接待中",leftIcon:"left",color:"#333",backgroundColor:"#FFFFFF"}),c:"reception"===r.activeTab?1:"",d:e.o((e=>a.switchTab("reception")),"3d"),e:"status"===r.activeTab?1:"",f:e.o((e=>a.switchTab("status")),"30"),g:"tag"===r.activeTab?1:"",h:e.o((e=>a.switchTab("tag")),"70"),i:a.computedNavbarTop||r.navbarTop,j:"reception"===r.activeTab},"reception"===r.activeTab?{k:a.computedContentTop||r.contentTop,l:e.o(a.onReceptionCancel,"c8"),m:e.o(a.onReceptionSaveSuccess,"98"),n:e.o(a.onReceptionSaveError,"09"),o:e.p({"initial-data":r.receptionForm})}:{},{p:"status"===r.activeTab},"status"===r.activeTab?{q:e.sr("serviceListRef","199fff57-2"),r:a.computedContentTop||r.contentTop,s:e.p({"show-record-state-indicator":!1,"empty-list-hint":"暂无接待中记录","show-reception-entry-shortcut":!0})}:{},{t:"tag"===r.activeTab},"tag"===r.activeTab?{v:e.sr("tagPanelRef","199fff57-3"),w:e.p({"content-top":a.computedContentTop||r.contentTop})}:{})}]]);wx.createPage(o);

View File

@@ -3,6 +3,7 @@
"usingComponents": {
"common-begin-reception": "./common_begin_reception",
"service-list-furniture": "./serviceListFurniture",
"tag-management-panel": "./tag_management_panel",
"uni-nav-bar": "../../uni_modules/uni-nav-bar/components/uni-nav-bar/uni-nav-bar"
}
}

View File

@@ -1 +1 @@
<view class="page"><uni-nav-bar wx:if="{{b}}" bindclickLeft="{{a}}" u-i="199fff57-0" bind:__l="__l" u-p="{{b}}"/><view class="content"><view class="tabs" style="{{'top:' + g}}"><view class="{{['tab-item', c && 'active']}}" bindtap="{{d}}"><text>开始接待</text></view><view class="{{['tab-item', e && 'active']}}" bindtap="{{f}}"><text>接待中</text></view></view><common-begin-reception wx:if="{{h}}" class="reception-form-container" style="{{'top:' + i}}" bindcancel="{{j}}" bindsaveSuccess="{{k}}" bindsaveError="{{l}}" u-i="199fff57-1" bind:__l="__l" u-p="{{m}}"/><service-list-furniture wx:if="{{n}}" u-r="serviceListRef" class="service-status-container r" style="{{'top:' + p}}" u-i="199fff57-2" bind:__l="__l" u-p="{{q}}"/></view></view>
<view class="page"><uni-nav-bar wx:if="{{b}}" bindclickLeft="{{a}}" u-i="199fff57-0" bind:__l="__l" u-p="{{b}}"/><view class="content"><view class="tabs" style="{{'top:' + i}}"><view class="{{['tab-item', c && 'active']}}" bindtap="{{d}}"><text>客户接待</text></view><view class="{{['tab-item', e && 'active']}}" bindtap="{{f}}"><text>接待中</text></view><view class="{{['tab-item', g && 'active']}}" bindtap="{{h}}"><text>标签管理</text></view></view><common-begin-reception wx:if="{{j}}" class="reception-form-container" style="{{'top:' + k}}" bindcancel="{{l}}" bindsaveSuccess="{{m}}" bindsaveError="{{n}}" u-i="199fff57-1" bind:__l="__l" u-p="{{o}}"/><service-list-furniture wx:if="{{p}}" u-r="serviceListRef" class="service-status-container r" style="{{'top:' + r}}" u-i="199fff57-2" bind:__l="__l" u-p="{{s}}"/><tag-management-panel wx:if="{{t}}" class="r" u-r="tagPanelRef" u-i="199fff57-3" bind:__l="__l" u-p="{{w}}"/></view></view>

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1,6 @@
{
"component": true,
"usingComponents": {
"uni-icons": "../../uni_modules/uni-icons/components/uni-icons/uni-icons"
}
}

View File

@@ -0,0 +1 @@
<view class="tag-mgmt-host" style="{{'top:' + S}}"><scroll-view wx:if="{{a}}" class="tag-mgmt-scroll tag-list" scroll-y bindscrolltolower="{{s}}"><view class="service-status-toolbar"><text class="toolbar-total">共{{b}}条</text><input class="toolbar-input" placeholder="标签分类" placeholder-style="color: #b0b0b0" confirm-type="search" bindconfirm="{{c}}" value="{{d}}" bindinput="{{e}}"/><input class="toolbar-input" placeholder="标签名称" placeholder-style="color: #b0b0b0" confirm-type="search" bindconfirm="{{f}}" value="{{g}}" bindinput="{{h}}"/><view class="toolbar-actions"><view class="toolbar-btn toolbar-btn--refresh" bindtap="{{j}}"><uni-icons wx:if="{{i}}" u-i="0806a306-0" bind:__l="__l" u-p="{{i}}"></uni-icons></view><view class="toolbar-btn toolbar-btn--add" bindtap="{{l}}"><uni-icons wx:if="{{k}}" u-i="0806a306-1" bind:__l="__l" u-p="{{k}}"></uni-icons></view></view></view><view wx:for="{{m}}" wx:for-item="item" wx:key="s" class="{{['service-card', 'tag-card-item', item.t && 'tag-card-item--active']}}"><view class="card-header"><view class="staff-info" catchtap="{{item.c}}"><view class="staff-avatar"><text class="avatar-text">{{item.a}}</text></view><text class="staff-name">{{item.b}}</text></view><view class="tag-card-action-btn" catchtap="{{item.e}}"><uni-icons wx:if="{{n}}" u-i="{{item.d}}" bind:__l="__l" u-p="{{n}}"></uni-icons></view></view><view class="customer-info" catchtap="{{item.h}}"><text wx:if="{{item.f}}" class="customer-name">所属行业:{{item.g}}</text></view><view wx:if="{{item.i}}" class="customer-tags" catchtap="{{item.n}}"><view wx:if="{{item.j}}" class="tag-item tag-blue"><text>详情:{{item.k}}</text></view><view wx:if="{{item.l}}" class="tag-item tag-orange"><text>备注:{{item.m}}</text></view></view><view wx:if="{{item.o}}" class="tag-action-menu" catchtap="{{item.r}}"><view class="tag-action-menu-item" bindtap="{{item.p}}"><text>编辑</text></view><view class="tag-action-menu-divider"></view><view class="tag-action-menu-item tag-action-menu-item--danger" bindtap="{{item.q}}"><text>删除</text></view></view></view><view wx:if="{{o}}" class="tag-action-menu-mask" bindtap="{{p}}"></view><view wx:if="{{q}}" class="service-status-empty"><text>暂无标签</text></view><view wx:if="{{r}}" class="service-status-loading-more"><text>正在加载更多...</text></view></scroll-view><view wx:if="{{t}}" class="tag-management"><scroll-view class="tag-form" scroll-y><view class="form-card"><view wx:if="{{v}}" class="form-item"><text class="form-item__label">所属行业</text><input class="form-item__input" placeholder="请输入所属行业" placeholder-style="color: #9ca3af" value="{{w}}" bindinput="{{x}}"/></view><view class="form-item tag-select-wrapper"><text class="form-item__label">标签分类</text><view ref="tagTypeSelect" class="tag-select" catchtap="{{B}}"><text class="{{z}}">{{y}}</text><uni-icons wx:if="{{A}}" u-i="0806a306-3" bind:__l="__l" u-p="{{A}}"></uni-icons></view><view wx:if="{{C}}" ref="tagTypeDropdown" class="tag-select-dropdown" catchtap="{{E}}"><view wx:for="{{D}}" wx:for-item="option" wx:key="c" class="tag-select-dropdown__item" bindtap="{{option.d}}"><text class="{{[option.b && 'active']}}">{{option.a}}</text></view></view></view><view class="form-item"><text class="form-item__label">标签名</text><input class="form-item__input" placeholder="请输入标签名" placeholder-style="color: #9ca3af" value="{{F}}" bindinput="{{G}}"/></view><view class="form-item form-item--textarea"><text class="form-item__label">详情</text><block wx:if="{{r0}}"><textarea class="form-item__textarea" placeholder="请输入详情" placeholder-style="color: #9ca3af" maxlength="{{500}}" auto-height value="{{H}}" bindinput="{{I}}"/></block></view><view class="form-item form-item--textarea"><text class="form-item__label">备注</text><block wx:if="{{r0}}"><textarea class="form-item__textarea" placeholder="请输入备注" placeholder-style="color: #9ca3af" maxlength="{{500}}" auto-height value="{{J}}" bindinput="{{K}}"/></block></view><view class="form-item form-item--switch"><text class="form-item__label">是否启用</text><switch checked="{{L}}" bindchange="{{M}}" color="#007AFF"/></view></view><view class="form-actions"><view class="form-btn form-btn--cancel" bindtap="{{N}}"><text class="form-btn__text">取消</text></view><view class="form-btn form-btn--save" bindtap="{{P}}"><text class="form-btn__text">{{O}}</text></view></view></scroll-view><view wx:if="{{Q}}" class="tag-select-mask" bindtap="{{R}}"></view></view></view>

File diff suppressed because one or more lines are too long

View File

@@ -1 +1 @@
"use strict";const e=require("../../../common/vendor.js"),o={name:"SalesScenarioNew",props:{contentTop:{type:String,default:"0rpx"},contentBottom:{type:String,default:"0rpx"}},methods:{openReceptionTab(o){if(!["status","reception","tag"].includes(o))return;const n=`/pages-subpackage/furniture_reception/furniture_reception_entry?tab=${encodeURIComponent(o)}`;e.index.navigateTo({url:n,fail:()=>{e.index.showToast({title:"跳转接待页失败",icon:"none"})}})},openReceptionInProgress(){e.index.navigateTo({url:"/pages-subpackage/furniture_reception/reception_in_progress",fail:()=>{e.index.showToast({title:"跳转接待中失败",icon:"none"})}})},openCustomerTab(o){const n=`/pages-subpackage/furniture_customer/furniture_customer?tab=${o}`;e.index.navigateTo({url:n})}}};const n=e._export_sfc(o,[["render",function(o,n,t,r,a,i){return{a:e.o((e=>i.openReceptionTab("reception")),"04"),b:e.o((e=>i.openReceptionTab("status")),"8d"),c:e.o(((...e)=>i.openReceptionInProgress&&i.openReceptionInProgress(...e)),"f7"),d:e.o((e=>i.openReceptionTab("tag")),"07"),e:e.o((e=>i.openCustomerTab("service")),"6e"),f:e.o((e=>i.openCustomerTab("customer")),"4a"),g:t.contentTop,h:t.contentBottom}}],["__scopeId","data-v-101b35ee"]]);wx.createComponent(n);
"use strict";const e=require("../../../common/vendor.js"),o={name:"SalesScenarioNew",props:{contentTop:{type:String,default:"0rpx"},contentBottom:{type:String,default:"0rpx"}},methods:{openReceptionTab(o){if(!["status","reception","tag"].includes(o))return;const n=`/pages-subpackage/furniture_reception/furniture_reception_entry?tab=${encodeURIComponent(o)}`;e.index.navigateTo({url:n,fail:()=>{e.index.showToast({title:"跳转接待页失败",icon:"none"})}})},goReceptionInProgressPage(o){e.index.navigateTo({url:"/pages-subpackage/furniture_reception/reception_in_progress",fail:()=>{e.index.showToast({title:o||"页面打开失败",icon:"none"})}})},openReceptionInProgress(){this.goReceptionInProgressPage("跳转接待中失败")},openCustomerTab(o){const n=`/pages-subpackage/furniture_customer/furniture_customer?tab=${o}`;e.index.navigateTo({url:n})}}};const n=e._export_sfc(o,[["render",function(o,n,t,r,a,i){return{a:e.o((e=>i.openReceptionTab("reception")),"28"),b:e.o((e=>i.goReceptionInProgressPage("跳转服务中失败")),"e9"),c:e.o((e=>i.openReceptionTab("tag")),"2f"),d:e.o((e=>i.openCustomerTab("service")),"74"),e:e.o((e=>i.openCustomerTab("customer")),"34"),f:t.contentTop,g:t.contentBottom}}],["__scopeId","data-v-fecda258"]]);wx.createComponent(n);

View File

@@ -1 +1 @@
<view class="scenario-wrapper data-v-101b35ee" style="{{'top:' + g + ';' + ('bottom:' + h)}}"><scroll-view class="content-scroll data-v-101b35ee" scroll-y="true"><view class="category-section two-column data-v-101b35ee"><view class="category-header data-v-101b35ee"><text class="category-icon data-v-101b35ee">🏷️</text><text class="category-title data-v-101b35ee">接待</text></view><view class="function-grid data-v-101b35ee"><view class="function-item data-v-101b35ee" bindtap="{{a}}"><view class="function-icon data-v-101b35ee">🛎️</view><text class="function-name data-v-101b35ee">开始接待</text><text class="function-desc data-v-101b35ee"></text></view><view class="function-item data-v-101b35ee" bindtap="{{b}}"><view class="function-icon data-v-101b35ee">📌</view><text class="function-name data-v-101b35ee">服务中</text><text class="function-desc data-v-101b35ee"></text></view><view class="function-item data-v-101b35ee" bindtap="{{c}}"><view class="function-icon data-v-101b35ee">⏳</view><text class="function-name data-v-101b35ee">接待中</text><text class="function-desc data-v-101b35ee"></text></view><view class="function-item data-v-101b35ee" bindtap="{{d}}"><view class="function-icon data-v-101b35ee">🗂️</view><text class="function-name data-v-101b35ee">标签管理</text><text class="function-desc data-v-101b35ee"></text></view></view></view><view class="category-section two-column data-v-101b35ee"><view class="category-header data-v-101b35ee"><text class="category-icon data-v-101b35ee">👤</text><text class="category-title data-v-101b35ee">客户</text></view><view class="function-grid data-v-101b35ee"><view class="function-item data-v-101b35ee" bindtap="{{e}}"><view class="function-icon data-v-101b35ee">📝</view><text class="function-name data-v-101b35ee">服务记录</text><text class="function-desc data-v-101b35ee"></text></view><view class="function-item data-v-101b35ee" bindtap="{{f}}"><view class="function-icon data-v-101b35ee">👥</view><text class="function-name data-v-101b35ee">客户</text><text class="function-desc data-v-101b35ee"></text></view></view></view></scroll-view></view>
<view class="scenario-wrapper data-v-fecda258" style="{{'top:' + f + ';' + ('bottom:' + g)}}"><scroll-view class="content-scroll data-v-fecda258" scroll-y="true"><view class="category-section two-column data-v-fecda258"><view class="category-header data-v-fecda258"><text class="category-icon data-v-fecda258">🏷️</text><text class="category-title data-v-fecda258">接待</text></view><view class="function-grid data-v-fecda258"><view class="function-item data-v-fecda258" bindtap="{{a}}"><view class="function-icon data-v-fecda258">🛎️</view><text class="function-name data-v-fecda258">开始接待</text><text class="function-desc data-v-fecda258"></text></view><view class="function-item data-v-fecda258" bindtap="{{b}}"><view class="function-icon data-v-fecda258">📌</view><text class="function-name data-v-fecda258">服务中</text><text class="function-desc data-v-fecda258"></text></view><view class="function-item data-v-fecda258" bindtap="{{c}}"><view class="function-icon data-v-fecda258">🗂️</view><text class="function-name data-v-fecda258">标签管理</text><text class="function-desc data-v-fecda258"></text></view></view></view><view class="category-section two-column data-v-fecda258"><view class="category-header data-v-fecda258"><text class="category-icon data-v-fecda258">👤</text><text class="category-title data-v-fecda258">客户</text></view><view class="function-grid data-v-fecda258"><view class="function-item data-v-fecda258" bindtap="{{d}}"><view class="function-icon data-v-fecda258">📝</view><text class="function-name data-v-fecda258">服务记录</text><text class="function-desc data-v-fecda258"></text></view><view class="function-item data-v-fecda258" bindtap="{{e}}"><view class="function-icon data-v-fecda258">👥</view><text class="function-name data-v-fecda258">客户</text><text class="function-desc data-v-fecda258"></text></view></view></view></scroll-view></view>

View File

@@ -1 +1 @@
.scenario-wrapper.data-v-101b35ee{position:absolute;left:0;right:0}.content-scroll.data-v-101b35ee{height:100%}.category-section.data-v-101b35ee{margin:20rpx 30rpx;background:#fff;border-radius:16rpx;overflow:hidden;box-shadow:0 2rpx 8rpx rgba(0,0,0,.04)}.category-section.data-v-101b35ee:first-child{margin-top:0}.category-section.data-v-101b35ee:last-child{margin-bottom:0}.category-header.data-v-101b35ee{display:flex;align-items:center;padding:30rpx;background:#fff;border-bottom:1rpx solid #f0f0f0}.category-icon.data-v-101b35ee{font-size:32rpx;margin-right:20rpx}.category-title.data-v-101b35ee{font-size:32rpx;font-weight:500;color:#333}.function-grid.data-v-101b35ee{display:flex;flex-wrap:wrap;padding:10rpx}.two-column .function-item.data-v-101b35ee{flex:1;background:#fff;border-radius:12rpx;padding:24rpx 16rpx;margin:0 5rpx;text-align:center;box-shadow:0 2rpx 4rpx rgba(0,0,0,.04);transition:all .3s ease;border:1rpx solid #f0f0f0}.function-item.data-v-101b35ee{min-width:42%}.function-item.data-v-101b35ee:active{transform:scale(.95);box-shadow:0 1rpx 2rpx rgba(0,0,0,.1)}.function-icon.data-v-101b35ee{font-size:48rpx;margin-bottom:12rpx}.function-name.data-v-101b35ee{display:block;font-size:28rpx;font-weight:500;color:#333;margin-bottom:8rpx}.function-desc.data-v-101b35ee{display:block;font-size:24rpx;color:#666;line-height:1.4}
.scenario-wrapper.data-v-fecda258{position:absolute;left:0;right:0}.content-scroll.data-v-fecda258{height:100%}.category-section.data-v-fecda258{margin:20rpx 30rpx;background:#fff;border-radius:16rpx;overflow:hidden;box-shadow:0 2rpx 8rpx rgba(0,0,0,.04)}.category-section.data-v-fecda258:first-child{margin-top:0}.category-section.data-v-fecda258:last-child{margin-bottom:0}.category-header.data-v-fecda258{display:flex;align-items:center;padding:30rpx;background:#fff;border-bottom:1rpx solid #f0f0f0}.category-icon.data-v-fecda258{font-size:32rpx;margin-right:20rpx}.category-title.data-v-fecda258{font-size:32rpx;font-weight:500;color:#333}.function-grid.data-v-fecda258{display:flex;flex-wrap:wrap;padding:10rpx}.two-column .function-item.data-v-fecda258{flex:1;background:#fff;border-radius:12rpx;padding:24rpx 16rpx;margin:0 5rpx;text-align:center;box-shadow:0 2rpx 4rpx rgba(0,0,0,.04);transition:all .3s ease;border:1rpx solid #f0f0f0}.function-item.data-v-fecda258{min-width:42%}.function-item.data-v-fecda258:active{transform:scale(.95);box-shadow:0 1rpx 2rpx rgba(0,0,0,.1)}.function-icon.data-v-fecda258{font-size:48rpx;margin-bottom:12rpx}.function-name.data-v-fecda258{display:block;font-size:28rpx;font-weight:500;color:#333;margin-bottom:8rpx}.function-desc.data-v-fecda258{display:block;font-size:24rpx;color:#666;line-height:1.4}