diff --git a/pages-subpackage/furniture_reception/furniture_reception-impl.vue b/pages-subpackage/furniture_reception/furniture_reception-impl.vue
index d8a5c29..a273962 100644
--- a/pages-subpackage/furniture_reception/furniture_reception-impl.vue
+++ b/pages-subpackage/furniture_reception/furniture_reception-impl.vue
@@ -45,6 +45,7 @@
ref="serviceListRef"
class="service-status-container"
:style="{ top: computedContentTop || contentTop }"
+ :show-record-state-indicator="false"
>
diff --git a/pages-subpackage/furniture_reception/serviceListFurniture.vue b/pages-subpackage/furniture_reception/serviceListFurniture.vue
index 8817475..6cf2a52 100644
--- a/pages-subpackage/furniture_reception/serviceListFurniture.vue
+++ b/pages-subpackage/furniture_reception/serviceListFurniture.vue
@@ -63,29 +63,41 @@
{{ item.staffName || '未分配销售' }}
+
+
+ 结束服务
+
+
+
+
+
+
- 录音
-
-
- 停止
-
-
- 补录
-
-
- {{ isUploading(item.id) ? '上传中' : '上传' }}
-
-
- 结束
+
+
+
+
{{ recordStateLabel }}
@@ -141,6 +153,12 @@
正在加载更多...
+
+
@@ -268,7 +286,8 @@ export default {
recorderSupported: false,
recorderManager: null,
recordingServiceId: null,
- recordingContext: null
+ recordingContext: null,
+ actionMenuForId: null
}
},
mounted() {
@@ -289,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) {
@@ -756,6 +820,7 @@ export default {
},
async uploadFileForRecord(item, selectedFile) {
const recordId = String(item.id);
+ this.closeActionMenu();
this.uploadingIds = [...this.uploadingIds, recordId];
try {
uni.showLoading({
@@ -813,6 +878,7 @@ export default {
});
return;
}
+ this.closeActionMenu();
uni.showModal({
title: '确认结束',
@@ -1155,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 {
@@ -1224,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;
@@ -1386,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;
diff --git a/unpackage/dist/build/mp-weixin/pages-subpackage/furniture_reception/furniture_reception-impl.js b/unpackage/dist/build/mp-weixin/pages-subpackage/furniture_reception/furniture_reception-impl.js
index 1da5974..5e5be14 100644
--- a/unpackage/dist/build/mp-weixin/pages-subpackage/furniture_reception/furniture_reception-impl.js
+++ b/unpackage/dist/build/mp-weixin/pages-subpackage/furniture_reception/furniture_reception-impl.js
@@ -1 +1 @@
-"use strict";const e=require("../../common/vendor.js"),t={props:{incomingTab:{type:String,default:""}},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}}),watch:{incomingTab:{immediate:!0,handler(e){this.applyIncomingTab(e)}}},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(){console.log("[FurnitureReception][onLoad] 页面加载"),this.updateNavbarPosition(),this.loadCurrentUserInfo()},onShow(){console.log("[FurnitureReception][onShow] 页面显示"),this.$nextTick((()=>{this.updateNavbarPosition(),setTimeout((()=>{this.updateNavbarPosition(),console.log("[FurnitureReception][onShow] 延迟更新后的位置:",{navbarTop:this.navbarTop,contentTop:this.contentTop,computedNavbarTop:this.computedNavbarTop,computedContentTop:this.computedContentTop})}),50)}))},onReady(){console.log("[FurnitureReception][onReady] 页面渲染完成"),console.log("[FurnitureReception][onReady] activeTab:",this.activeTab),console.log("[FurnitureReception][onReady] navbarTop:",this.navbarTop),console.log("[FurnitureReception][onReady] contentTop:",this.contentTop),console.log("[FurnitureReception][onReady] computedNavbarTop:",this.computedNavbarTop),console.log("[FurnitureReception][onReady] computedContentTop:",this.computedContentTop),this.updateNavbarPosition(),this.initUrlHidingAfterPageLoad();const t=e.index.getSystemInfoSync();console.log("[FurnitureReception][onReady] 系统信息:",{statusBarHeight:t.statusBarHeight,windowHeight:t.windowHeight,screenHeight:t.screenHeight}),setTimeout((()=>{e.index.createSelectorQuery().in(this).select(".tabs").boundingClientRect((e=>{console.log("[FurnitureReception][onReady] tab栏元素信息:",e),e?(console.log("[FurnitureReception][onReady] tab栏位置:",{top:e.top,left:e.left,width:e.width,height:e.height,expectedTop:this.navbarTop,computedNavbarTop:this.computedNavbarTop,isVisible:e.width>0&&e.height>0,isOnScreen:e.top>=0&&e.top{const e=this.$refs.serviceListRef;if("status"===this.activeTab)e&&"function"==typeof e.onServiceStatusRefresh&&e.onServiceStatusRefresh();else if("tag"===this.activeTab){const e=this.$refs.tagPanelRef;e&&"function"==typeof e.refreshTagList&&e.refreshTagList()}}))},scheduleTagPanelRefresh(){this.$nextTick((()=>{this.$nextTick((()=>{const e=this.$refs.tagPanelRef;e&&"function"==typeof e.refreshTagList&&e.refreshTagList()}))}))},applyIncomingTab(e){["status","reception","tag"].includes(e)&&(this.activeTab!==e&&(this.activeTab=e),"reception"===e?this.resetReceptionForm():"tag"===e?this.scheduleTagPanelRefresh():"status"===e&&this.$nextTick((()=>{this.refreshPageData()})))},updateNavbarPosition(){console.log("[FurnitureReception][updateNavbarPosition] 开始更新导航栏位置");const t=e.index.getSystemInfoSync().statusBarHeight||20,o=2*t+88,n=o+"rpx",i=o+72+"rpx";console.log("[FurnitureReception][updateNavbarPosition] 更新导航栏位置:",{statusBarHeight:t,navbarHeight:44,totalNavbarHeight:o,navbarTop:n,contentTop:i,currentNavbarTop:this.navbarTop,currentContentTop:this.contentTop}),this.$set(this,"navbarTop",n),this.$set(this,"contentTop",i),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("加载当前登录用户信息失败:",t)}},goBack(){getCurrentPages().length<=1?e.index.switchTab({url:"/pages/workbench/workbench",fail:e=>{console.error("[FurnitureReception][goBack] 切回工作台失败:",e)}}):e.index.navigateBack({fail:e=>{console.error("[FurnitureReception][goBack] 返回失败:",e)}})},switchTab(e){this.activeTab=e,"reception"===e?this.resetReceptionForm():"tag"===e&&this.scheduleTagPanelRefresh()},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&&console.log("开始接待成功",t)},onReceptionSaveError({action:e,error:t}){console.error("保存失败:",t)},initUrlHidingAfterPageLoad(){},attemptUrlHidingForCurrentPage(){},setupTabNavigationHiding(){},setupBrowserNavigationHiding(){}}};if(!Array){(e.resolveComponent("uni-nav-bar")+e.resolveComponent("service-list-furniture")+e.resolveComponent("common-begin-reception")+e.resolveComponent("tag-management-panel"))()}Math;const o=e._export_sfc(t,[["render",function(t,o,n,i,a,r){return e.e({a:e.o(r.goBack,"66"),b:e.p({fixed:!0,statusBar:!0,border:!1,title:"AI销冠系统",leftIcon:"left",color:"#333",backgroundColor:"#FFFFFF"}),c:"reception"===a.activeTab?1:"",d:e.o((e=>r.switchTab("reception")),"5d"),e:"status"===a.activeTab?1:"",f:e.o((e=>r.switchTab("status")),"a2"),g:"tag"===a.activeTab?1:"",h:e.o((e=>r.switchTab("tag")),"4c"),i:r.computedNavbarTop||a.navbarTop,j:"status"===a.activeTab},"status"===a.activeTab?{k:e.sr("serviceListRef","638dc4bb-1"),l:r.computedContentTop||a.contentTop}:{},{m:"reception"===a.activeTab},"reception"===a.activeTab?{n:r.computedContentTop||a.contentTop,o:e.o(r.onReceptionCancel,"4b"),p:e.o(r.onReceptionSaveSuccess,"7b"),q:e.o(r.onReceptionSaveError,"fc"),r:e.p({"initial-data":a.receptionForm})}:{},{s:"tag"===a.activeTab},"tag"===a.activeTab?{t:e.sr("tagPanelRef","638dc4bb-3"),v:e.p({"content-top":r.computedContentTop||a.contentTop})}:{})}]]);wx.createComponent(o);
+"use strict";const e=require("../../common/vendor.js"),t={props:{incomingTab:{type:String,default:""}},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}}),watch:{incomingTab:{immediate:!0,handler(e){this.applyIncomingTab(e)}}},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(){console.log("[FurnitureReception][onLoad] 页面加载"),this.updateNavbarPosition(),this.loadCurrentUserInfo()},onShow(){console.log("[FurnitureReception][onShow] 页面显示"),this.$nextTick((()=>{this.updateNavbarPosition(),setTimeout((()=>{this.updateNavbarPosition(),console.log("[FurnitureReception][onShow] 延迟更新后的位置:",{navbarTop:this.navbarTop,contentTop:this.contentTop,computedNavbarTop:this.computedNavbarTop,computedContentTop:this.computedContentTop})}),50)}))},onReady(){console.log("[FurnitureReception][onReady] 页面渲染完成"),console.log("[FurnitureReception][onReady] activeTab:",this.activeTab),console.log("[FurnitureReception][onReady] navbarTop:",this.navbarTop),console.log("[FurnitureReception][onReady] contentTop:",this.contentTop),console.log("[FurnitureReception][onReady] computedNavbarTop:",this.computedNavbarTop),console.log("[FurnitureReception][onReady] computedContentTop:",this.computedContentTop),this.updateNavbarPosition(),this.initUrlHidingAfterPageLoad();const t=e.index.getSystemInfoSync();console.log("[FurnitureReception][onReady] 系统信息:",{statusBarHeight:t.statusBarHeight,windowHeight:t.windowHeight,screenHeight:t.screenHeight}),setTimeout((()=>{e.index.createSelectorQuery().in(this).select(".tabs").boundingClientRect((e=>{console.log("[FurnitureReception][onReady] tab栏元素信息:",e),e?(console.log("[FurnitureReception][onReady] tab栏位置:",{top:e.top,left:e.left,width:e.width,height:e.height,expectedTop:this.navbarTop,computedNavbarTop:this.computedNavbarTop,isVisible:e.width>0&&e.height>0,isOnScreen:e.top>=0&&e.top{const e=this.$refs.serviceListRef;if("status"===this.activeTab)e&&"function"==typeof e.onServiceStatusRefresh&&e.onServiceStatusRefresh();else if("tag"===this.activeTab){const e=this.$refs.tagPanelRef;e&&"function"==typeof e.refreshTagList&&e.refreshTagList()}}))},scheduleTagPanelRefresh(){this.$nextTick((()=>{this.$nextTick((()=>{const e=this.$refs.tagPanelRef;e&&"function"==typeof e.refreshTagList&&e.refreshTagList()}))}))},applyIncomingTab(e){["status","reception","tag"].includes(e)&&(this.activeTab!==e&&(this.activeTab=e),"reception"===e?this.resetReceptionForm():"tag"===e?this.scheduleTagPanelRefresh():"status"===e&&this.$nextTick((()=>{this.refreshPageData()})))},updateNavbarPosition(){console.log("[FurnitureReception][updateNavbarPosition] 开始更新导航栏位置");const t=e.index.getSystemInfoSync().statusBarHeight||20,o=2*t+88,n=o+"rpx",i=o+72+"rpx";console.log("[FurnitureReception][updateNavbarPosition] 更新导航栏位置:",{statusBarHeight:t,navbarHeight:44,totalNavbarHeight:o,navbarTop:n,contentTop:i,currentNavbarTop:this.navbarTop,currentContentTop:this.contentTop}),this.$set(this,"navbarTop",n),this.$set(this,"contentTop",i),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("加载当前登录用户信息失败:",t)}},goBack(){getCurrentPages().length<=1?e.index.switchTab({url:"/pages/workbench/workbench",fail:e=>{console.error("[FurnitureReception][goBack] 切回工作台失败:",e)}}):e.index.navigateBack({fail:e=>{console.error("[FurnitureReception][goBack] 返回失败:",e)}})},switchTab(e){this.activeTab=e,"reception"===e?this.resetReceptionForm():"tag"===e&&this.scheduleTagPanelRefresh()},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&&console.log("开始接待成功",t)},onReceptionSaveError({action:e,error:t}){console.error("保存失败:",t)},initUrlHidingAfterPageLoad(){},attemptUrlHidingForCurrentPage(){},setupTabNavigationHiding(){},setupBrowserNavigationHiding(){}}};if(!Array){(e.resolveComponent("uni-nav-bar")+e.resolveComponent("service-list-furniture")+e.resolveComponent("common-begin-reception")+e.resolveComponent("tag-management-panel"))()}Math;const o=e._export_sfc(t,[["render",function(t,o,n,i,a,r){return e.e({a:e.o(r.goBack,"66"),b:e.p({fixed:!0,statusBar:!0,border:!1,title:"AI销冠系统",leftIcon:"left",color:"#333",backgroundColor:"#FFFFFF"}),c:"reception"===a.activeTab?1:"",d:e.o((e=>r.switchTab("reception")),"5d"),e:"status"===a.activeTab?1:"",f:e.o((e=>r.switchTab("status")),"a2"),g:"tag"===a.activeTab?1:"",h:e.o((e=>r.switchTab("tag")),"4c"),i:r.computedNavbarTop||a.navbarTop,j:"status"===a.activeTab},"status"===a.activeTab?{k:e.sr("serviceListRef","638dc4bb-1"),l:r.computedContentTop||a.contentTop,m:e.p({"show-record-state-indicator":!1})}:{},{n:"reception"===a.activeTab},"reception"===a.activeTab?{o:r.computedContentTop||a.contentTop,p:e.o(r.onReceptionCancel,"96"),q:e.o(r.onReceptionSaveSuccess,"5a"),r:e.o(r.onReceptionSaveError,"bf"),s:e.p({"initial-data":a.receptionForm})}:{},{t:"tag"===a.activeTab},"tag"===a.activeTab?{v:e.sr("tagPanelRef","638dc4bb-3"),w:e.p({"content-top":r.computedContentTop||a.contentTop})}:{})}]]);wx.createComponent(o);
diff --git a/unpackage/dist/build/mp-weixin/pages-subpackage/furniture_reception/furniture_reception-impl.wxml b/unpackage/dist/build/mp-weixin/pages-subpackage/furniture_reception/furniture_reception-impl.wxml
index 4a4d619..ab954d1 100644
--- a/unpackage/dist/build/mp-weixin/pages-subpackage/furniture_reception/furniture_reception-impl.wxml
+++ b/unpackage/dist/build/mp-weixin/pages-subpackage/furniture_reception/furniture_reception-impl.wxml
@@ -1 +1 @@
-开始接待服务中标签管理
\ No newline at end of file
+开始接待服务中标签管理
\ No newline at end of file
diff --git a/unpackage/dist/build/mp-weixin/pages-subpackage/furniture_reception/reception_in_progress.wxml b/unpackage/dist/build/mp-weixin/pages-subpackage/furniture_reception/reception_in_progress.wxml
index e588600..48ab300 100644
--- a/unpackage/dist/build/mp-weixin/pages-subpackage/furniture_reception/reception_in_progress.wxml
+++ b/unpackage/dist/build/mp-weixin/pages-subpackage/furniture_reception/reception_in_progress.wxml
@@ -1 +1 @@
-开发接待接待中标签管理
\ No newline at end of file
+客户接待接待中标签管理
\ No newline at end of file
diff --git a/unpackage/dist/build/mp-weixin/pages-subpackage/furniture_reception/serviceListFurniture.js b/unpackage/dist/build/mp-weixin/pages-subpackage/furniture_reception/serviceListFurniture.js
index d104059..431de2d 100644
--- a/unpackage/dist/build/mp-weixin/pages-subpackage/furniture_reception/serviceListFurniture.js
+++ b/unpackage/dist/build/mp-weixin/pages-subpackage/furniture_reception/serviceListFurniture.js
@@ -1 +1 @@
-"use strict";const e=require("../../common/vendor.js"),t=require("../../common/config.js"),i=require("../../common/store.js");function o(...e){for(const t of e){if(null==t)continue;const e=String(t).trim();if(e)return e}return""}const r={props:{recordStateLabel:{type:String,default:"服务中"},emptyListHint:{type:String,default:"暂无服务中记录"},showReceptionEntryShortcut:{type:Boolean,default:!1},showRecordStateIndicator:{type:Boolean,default:!0}},data:()=>({serviceStatusLoading:!1,serviceStatusTotal:0,serviceStatusPage:{current:1,size:10},serviceStatusQuery:{salesName:"",customerName:"",salesPhone:""},isAdmin:!1,currentUserPhone:"",serviceStatusList:[],showSupplementModal:!1,currentSupplementItem:null,uploadingIds:[],supplementForm:{customerName:"",contact:"",recordingName:"",remarks:""},recorderSupported:!1,recorderManager:null,recordingServiceId:null,recordingContext:null}),mounted(){this.checkUserRole(),this.loadCurrentUserPhone(),this.initServiceRecorder(),this.fetchServiceStatusList()},beforeUnmount(){if(this.recorderManager&&this.recordingServiceId)try{this.recorderManager.stop()}catch(e){}},methods:{initServiceRecorder(){this.recorderSupported="function"==typeof e.index.getRecorderManager,this.recorderSupported&&(this.recorderManager=e.index.getRecorderManager(),this.recorderManager.onStop((t=>{const i=this.recordingContext;this.recordingServiceId=null,this.recordingContext=null;const o=t.tempFilePath||"";if(!i||!i.id)return;if(!o)return void e.index.showToast({title:"未获取到录音文件",icon:"none"});const r=`service_record_${i.id}_${Date.now()}.mp3`;this.uploadFileForRecord(i,{path:o,name:r})})),this.recorderManager.onError((()=>{this.recordingServiceId=null,this.recordingContext=null,e.index.showToast({title:"录音出错",icon:"none"})})))},isRecordingItem(e){return!(!e||!this.recordingServiceId)&&String(e)===this.recordingServiceId},startPhoneRecord(t){if(this.recorderSupported&&this.recorderManager)if(t&&t.id)if(this.recordingServiceId)e.index.showToast({title:"请先停止当前录音",icon:"none"});else if(this.isUploading(t.id))e.index.showToast({title:"正在上传,请稍候",icon:"none"});else{this.recordingContext={...t},this.recordingServiceId=String(t.id);try{this.recorderManager.start({duration:6e5,sampleRate:44100,numberOfChannels:1,encodeBitRate:96e3,format:"mp3"})}catch(i){this.recordingServiceId=null,this.recordingContext=null,e.index.showToast({title:"无法开始录音",icon:"none"})}}else e.index.showToast({title:"无法获取服务记录ID",icon:"none"});else e.index.showToast({title:"当前环境不支持录音,请使用微信小程序或 App",icon:"none"})},stopPhoneRecordAndUpload(e){this.recorderManager&&(null==e?void 0:e.id)&&String(e.id)===this.recordingServiceId&&this.recorderManager.stop()},checkUserRole(){try{const t=e=>"string"==typeof e?e.split(",").map((e=>e.trim().toLowerCase())).filter(Boolean):[],i=e.index.getStorageSync("backend-role-name")||"",o=(e.index.getStorageSync("backend-login-response")||{}).roleName||"",r=[...t(i),...t(o)];this.isAdmin=r.some((e=>e.includes("admin"))),console.log("用户角色检查:",{storedRole:i,respRole:o,roles:r,isAdmin:this.isAdmin})}catch(t){console.error("检查用户角色失败:",t),this.isAdmin=!1}},loadCurrentUserPhone(){try{const t=e.index.getStorageSync("backend-login-response")||{};t.phone?this.currentUserPhone=t.phone:t.userName?this.currentUserPhone=t.userName:this.currentUserPhone=""}catch(t){console.error("加载当前用户手机号或登录账户失败:",t),this.currentUserPhone=""}},onServiceStatusSearch(){this.serviceStatusPage.current=1,this.fetchServiceStatusList({force:!0})},onServiceStatusRefresh(){this.serviceStatusPage.current=1,this.fetchServiceStatusList({force:!0})},goReceptionEntry(){e.index.navigateTo({url:"/pages-subpackage/furniture_reception/furniture_reception_entry?tab=reception",fail:()=>{e.index.showToast({title:"跳转接待失败",icon:"none"})}})},onServiceStatusReachBottom(){this.serviceStatusLoading||this.serviceStatusList.length>=this.serviceStatusTotal||(this.serviceStatusPage.current+=1,this.fetchServiceStatusList())},async fetchServiceStatusList({force:i=!1}={}){var o,r,s,n,a,c,l;if(!this.serviceStatusLoading||i){this.serviceStatusLoading=!0;try{const u={current:this.serviceStatusPage.current,size:this.serviceStatusPage.size,serviceStatus:"服务中"},h=null==(r=null==(o=this.serviceStatusQuery)?void 0:o.salesName)?void 0:r.trim(),m=null==(n=null==(s=this.serviceStatusQuery)?void 0:s.customerName)?void 0:n.trim();if(h&&(u.salesName=h),m&&(u.customerName=m),this.isAdmin){const e=null==(c=null==(a=this.serviceStatusQuery)?void 0:a.salesPhone)?void 0:c.trim();e&&(u.salesPhone=e)}else this.currentUserPhone&&(u.salesPhone=this.currentUserPhone);u.serviceStatus="服务中";const p=Object.keys(u).filter((e=>null!==u[e]&&void 0!==u[e]&&""!==u[e])).map((e=>`${encodeURIComponent(e)}=${encodeURIComponent(u[e])}`)).join("&");console.log("服务状态查询参数:",JSON.stringify(u)),console.log("查询字符串:",p);const S=t.getApiUrl("/api/audioManagement/list"),g=p?`${S}?${p}`:S;let v="",f="";try{v=e.index.getStorageSync("backend-tenant-id")||"",f=e.index.getStorageSync("backend-token")||""}catch(d){console.error("获取认证信息失败:",d)}const y={"Content-Type":"application/json"};f&&(y.Authorization=`Bearer ${f}`),v&&(y["X-Tenant-Id"]=v);const x=await e.index.request({url:g,method:"POST",data:{},header:y,timeout:3e4});if(200===x.statusCode&&x.data&&x.data.success){const e=Array.isArray(x.data.data)?x.data.data:[];if(0===e.length)return this.serviceStatusList=[],void(this.serviceStatusTotal=0);const t=e.map((e=>this.buildServiceStatusItem(e))).filter((e=>null!==e));1===this.serviceStatusPage.current||i?this.serviceStatusList=[...t]:this.serviceStatusList=[...this.serviceStatusList,...t],this.serviceStatusTotal=Number(x.data.total)||0}else this.serviceStatusList=[],this.serviceStatusTotal=0,e.index.showToast({title:(null==(l=x.data)?void 0:l.message)||"获取服务中列表失败",icon:"none"})}catch(u){console.error("获取服务中列表失败:",u);let t="获取服务状态失败,请稍后重试";u.errMsg&&(u.errMsg.includes("timeout")?t="请求超时,请检查网络连接后重试":u.errMsg.includes("fail")&&(t="网络请求失败,请检查网络连接")),e.index.showToast({title:t,icon:"none",duration:3e3})}finally{this.serviceStatusLoading=!1}}},buildServiceStatusItem(e={}){if(!e||"object"!=typeof e)return null;const t=this.formatDateTime(e.createTime),i=[];e.recordingName&&i.push({text:`录音:${e.recordingName}`,color:"blue"}),e.intentionLevel&&i.push({text:`意向:${e.intentionLevel}`,color:"orange"}),e.projectName&&i.push({text:`项目:${e.projectName}`,color:"blue"});const r=o(e.recordingName)||(o(e.customerName)?`${String(e.customerName).trim()}的接待记录`:"")||"";return{id:e.id||"",staffName:e.salesName||"未分配销售",status:e.syncStatus||"服务中",customerName:e.customerName||"",customerPhone:e.customerPhone||"",customerId:e.customerId||"",recordingName:e.recordingName||"",title:r,remarks:e.remarks||"",tags:i,durationText:t?`开始时间:${t}`:"暂无开始时间"}},formatDateTime(e){if(!e)return"";const t=new Date(e);if(Number.isNaN(t.getTime()))return"";return`${t.getFullYear()}-${String(t.getMonth()+1).padStart(2,"0")}-${String(t.getDate()).padStart(2,"0")} ${String(t.getHours()).padStart(2,"0")}:${String(t.getMinutes()).padStart(2,"0")}:${String(t.getSeconds()).padStart(2,"0")}`},viewServiceDetail(e){console.log("查看服务详情",e)},isUploading(e){return!!e&&this.uploadingIds.includes(String(e))},isMp3UploadFile(e){if(!e||!e.path)return!1;const t=e=>{if(!e||"string"!=typeof e)return"";return(e.split("/").pop()||e.split("\\").pop()||e).trim()},i=[t(e.name),t(e.path)].filter(Boolean);for(const o of i)if(o.toLowerCase().endsWith(".mp3"))return!0;return!1},async chooseAndUploadFile(t){if(!t||!t.id)return void e.index.showToast({title:"无法获取服务记录ID",icon:"none"});if(this.isUploading(t.id))return;const i=await this.selectUploadFile();i&&i.path&&await this.uploadFileForRecord(t,i)},selectUploadFile(){return new Promise((t=>{const i=i=>{const o=(e=>{const t=Array.isArray(null==e?void 0:e.tempFiles)?e.tempFiles:[];if(!t.length)return null;const i=t[0]||{},o=i.path||i.tempFilePath||i.url||"",r=i.name||o.split("/").pop()||`service_file_${Date.now()}`;return o?{path:o,name:r}:null})(i);return o?this.isMp3UploadFile(o)?void t(o):(e.index.showToast({title:"仅支持上传 MP3 文件",icon:"none"}),void t(null)):(e.index.showToast({title:"未选择有效文件",icon:"none"}),void t(null))},o=i=>{((null==i?void 0:i.errMsg)||"").includes("cancel")||(console.error("选择文件失败:",i),e.index.showToast({title:"选择文件失败",icon:"none"})),t(null)};"function"!=typeof e.index.chooseMessageFile?"function"!=typeof e.index.chooseFile?e.index.chooseImage({count:1,success:i,fail:o}):e.index.chooseFile({count:1,extension:[".mp3"],success:i,fail:o}):e.index.chooseMessageFile({count:1,type:"file",success:i,fail:o})}))},getAuthHeaders(){let t="",i="";try{t=e.index.getStorageSync("backend-tenant-id")||"",i=e.index.getStorageSync("backend-token")||""}catch(r){console.error("获取认证信息失败:",r)}const o={};return i&&(o.Authorization=`Bearer ${i}`),t&&(o["X-Tenant-Id"]=t),o},async uploadFileForRecord(i,o){const r=String(i.id);this.uploadingIds=[...this.uploadingIds,r];try{e.index.showLoading({title:"上传中..."});const n=await e.index.uploadFile({url:t.getApiUrl("/api/audio/upload"),filePath:o.path,name:"file",formData:{id:i.id,audioId:i.id,customerId:i.customerId||"",customerName:i.customerName||"",fileName:o.name||`service_file_${Date.now()}`},header:this.getAuthHeaders(),timeout:6e4});let a={};try{a="string"==typeof(null==n?void 0:n.data)?JSON.parse(n.data):(null==n?void 0:n.data)||{}}catch(s){a=(null==n?void 0:n.data)||{}}if(200===(null==n?void 0:n.statusCode)&&!1!==(null==a?void 0:a.success))return e.index.showToast({title:"上传成功",icon:"success"}),this.serviceStatusPage.current=1,void this.fetchServiceStatusList({force:!0});e.index.showToast({title:(null==a?void 0:a.message)||"上传失败",icon:"none"})}catch(n){console.error("上传文件失败:",n),e.index.showToast({title:(null==n?void 0:n.errMsg)||(null==n?void 0:n.message)||"上传失败",icon:"none"})}finally{e.index.hideLoading(),this.uploadingIds=this.uploadingIds.filter((e=>e!==r))}},async finishService(i){i&&i.id?e.index.showModal({title:"确认结束",content:"确定要结束这条服务记录吗?",success:async o=>{var r,s;if(o.confirm)try{e.index.showLoading({title:"结束中..."});const o=t.getApiUrl("/api/audioManagement/finishServiceById");let a="",c="";try{a=e.index.getStorageSync("backend-tenant-id")||"",c=e.index.getStorageSync("backend-token")||""}catch(n){console.error("获取认证信息失败:",n)}const l={"Content-Type":"application/json"};c&&(l.Authorization=`Bearer ${c}`),a&&(l["X-Tenant-Id"]=a);const d={id:i.id},u=await e.index.request({url:o,method:"POST",data:d,header:l,timeout:3e4});if(e.index.hideLoading(),200===u.statusCode&&u.data&&u.data.success){const t=((null==(r=u.data)?void 0:r.message)||"结束服务成功").replace(/[A-Za-z]+/g,"").split(/\n/).map((e=>e.trim())).filter(Boolean).join("\n")||"结束服务成功";e.index.showToast({title:t,icon:"success"}),this.serviceStatusPage.current=1,this.fetchServiceStatusList({force:!0})}else e.index.showToast({title:(null==(s=u.data)?void 0:s.message)||"结束服务失败",icon:"none"})}catch(a){e.index.hideLoading(),console.error("结束服务失败:",a);let t="结束服务失败,请重试";a.errMsg&&(a.errMsg.includes("timeout")?t="请求超时,请检查网络连接后重试":a.errMsg.includes("fail")&&(t="网络请求失败,请检查网络连接")),e.index.showToast({title:t,icon:"none",duration:3e3})}}}):e.index.showToast({title:"无法获取服务记录ID",icon:"none"})},showSupplementDialog(e){this.currentSupplementItem=e,this.supplementForm={customerName:e.customerName||"",contact:e.customerPhone||"",recordingName:e.recordingName||"",remarks:e.remarks||""},this.showSupplementModal=!0},closeSupplementDialog(){this.showSupplementModal=!1,this.currentSupplementItem=null,this.supplementForm={customerName:"",contact:"",recordingName:"",remarks:""}},async saveSupplement(){var r,s,n,a,c;const l=null==(r=this.supplementForm.contact)?void 0:r.trim();if(!l||this.isValidPhoneNumber(l))if(this.currentSupplementItem&&this.currentSupplementItem.id)try{e.index.showLoading({title:"保存中..."});let r="",u="";try{r=e.index.getStorageSync("backend-tenant-id")||"",u=e.index.getStorageSync("backend-token")||""}catch(d){console.error("获取认证信息失败:",d)}const h={"Content-Type":"application/json"};u&&(h.Authorization=`Bearer ${u}`),r&&(h["X-Tenant-Id"]=r);let m={};try{m=e.index.getStorageSync("backend-login-response")||{}}catch(d){console.error("读取登录信息失败:",d)}const p=i.store.userInfo||{},S=o(m.phone,m.userName,p.username),g=o(m.realName,m.name,m.nickName,p.nickname,m.userName,p.username),v={id:this.currentSupplementItem.id,customerId:this.currentSupplementItem.customerId||"",customerName:(null==(s=this.supplementForm.customerName)?void 0:s.trim())||"",customerPhone:l||"",recordingName:(null==(n=this.supplementForm.recordingName)?void 0:n.trim())||"",remarks:(null==(a=this.supplementForm.remarks)?void 0:a.trim())||"",salesPhone:S,salesName:g},f=await e.index.request({url:t.getApiUrl("/api/audioManagement/updateForCustomerInfo"),method:"PUT",data:v,header:h,timeout:3e4});e.index.hideLoading(),200===f.statusCode&&f.data&&f.data.success?(e.index.showToast({title:"补录成功",icon:"success"}),this.closeSupplementDialog(),this.serviceStatusPage.current=1,this.fetchServiceStatusList({force:!0})):e.index.showToast({title:(null==(c=f.data)?void 0:c.message)||"补录失败",icon:"none"})}catch(u){e.index.hideLoading(),console.error("补录失败:",u);let t="补录失败,请重试";u.errMsg&&(u.errMsg.includes("timeout")?t="请求超时,请检查网络连接后重试":u.errMsg.includes("fail")&&(t="网络请求失败,请检查网络连接")),e.index.showToast({title:t,icon:"none",duration:3e3})}else e.index.showToast({title:"无法获取服务记录ID",icon:"none"});else e.index.showToast({title:"请输入有效的客户电话",icon:"none"})},isValidPhoneNumber(e){const t=null==e?void 0:e.trim();return!!t&&/^1[3-9]\d{9}$/.test(t)}}};if(!Array){e.resolveComponent("uni-icons")()}Math;const s=e._export_sfc(r,[["render",function(t,i,o,r,s,n){return e.e({a:e.t(s.serviceStatusTotal),b:e.o(((...e)=>n.onServiceStatusSearch&&n.onServiceStatusSearch(...e)),"1e"),c:s.serviceStatusQuery.salesName,d:e.o((e=>s.serviceStatusQuery.salesName=e.detail.value),"5b"),e:e.o(((...e)=>n.onServiceStatusSearch&&n.onServiceStatusSearch(...e)),"4f"),f:s.serviceStatusQuery.customerName,g:e.o((e=>s.serviceStatusQuery.customerName=e.detail.value),"ff"),h:s.isAdmin},s.isAdmin?{i:e.o(((...e)=>n.onServiceStatusSearch&&n.onServiceStatusSearch(...e)),"91"),j:s.serviceStatusQuery.salesPhone,k:e.o((e=>s.serviceStatusQuery.salesPhone=e.detail.value),"86")}:{},{l:o.showReceptionEntryShortcut},o.showReceptionEntryShortcut?{m:e.p({type:"home",size:"18",color:"#2A68FF"}),n:e.o(((...e)=>n.goReceptionEntry&&n.goReceptionEntry(...e)),"5d")}:{},{o:e.p({type:"refresh",size:"18",color:"#2A68FF"}),p:e.o(((...e)=>n.onServiceStatusRefresh&&n.onServiceStatusRefresh(...e)),"84"),q:e.f(s.serviceStatusList,((t,i,r)=>e.e({a:e.t(t.staffName?t.staffName.charAt(0):"未"),b:e.t(t.staffName||"未分配销售"),c:!n.isRecordingItem(t.id)},n.isRecordingItem(t.id)?{e:e.o((e=>n.stopPhoneRecordAndUpload(t)),t.id||i)}:{d:e.o((e=>n.startPhoneRecord(t)),t.id||i)},{f:e.o((e=>n.showSupplementDialog(t)),t.id||i),g:e.t(n.isUploading(t.id)?"上传中":"上传"),h:e.o((e=>n.chooseAndUploadFile(t)),t.id||i),i:e.o((e=>n.finishService(t)),t.id||i)},o.showRecordStateIndicator?{j:"be40106d-2-"+r,k:e.p({type:"bars",size:"16",color:"#007AFF"}),l:e.t(o.recordStateLabel)}:{},{m:t.title},t.title?{n:e.t(t.title)}:{},{o:e.t(t.customerName||"未知客户"),p:t.customerPhone},t.customerPhone?{q:e.t(t.customerPhone)}:{},{r:e.f(t.tags,((t,i,o)=>({a:e.t(t.text),b:e.n("tag-"+t.color),c:i}))),s:t.alert},t.alert?e.e({t:e.t(t.alert.title),v:"risk"===t.alert.type},"risk"===t.alert.type?{w:e.t(t.alert.message)}:{x:e.f(t.alert.messages,((t,i,o)=>({a:e.t(t),b:i})))},{y:e.n("risk"===t.alert.type?"alert-risk-text":"alert-reminder-text"),z:e.n("risk"===t.alert.type?"alert-risk-box":"alert-reminder-box")}):{},{A:e.t(t.durationText),B:t.id||i,C:e.o((e=>n.viewServiceDetail(t)),t.id||i)}))),r:o.showRecordStateIndicator,s:!s.serviceStatusLoading&&!s.serviceStatusList.length},s.serviceStatusLoading||s.serviceStatusList.length?{}:{t:e.t(o.emptyListHint)},{v:s.serviceStatusLoading&&s.serviceStatusList.length},(s.serviceStatusLoading&&s.serviceStatusList.length,{}),{w:e.o(((...e)=>n.onServiceStatusReachBottom&&n.onServiceStatusReachBottom(...e)),"d2"),x:s.showSupplementModal},s.showSupplementModal?{y:e.p({type:"close",size:"20",color:"#999"}),z:e.o(((...e)=>n.closeSupplementDialog&&n.closeSupplementDialog(...e)),"d4"),A:s.supplementForm.customerName,B:e.o((e=>s.supplementForm.customerName=e.detail.value),"fc"),C:s.supplementForm.contact,D:e.o((e=>s.supplementForm.contact=e.detail.value),"4e"),E:s.supplementForm.recordingName,F:e.o((e=>s.supplementForm.recordingName=e.detail.value),"40"),G:s.supplementForm.remarks,H:e.o((e=>s.supplementForm.remarks=e.detail.value),"ac"),I:e.o(((...e)=>n.closeSupplementDialog&&n.closeSupplementDialog(...e)),"0a"),J:e.o(((...e)=>n.saveSupplement&&n.saveSupplement(...e)),"fb"),K:e.o((()=>{}),"80"),L:e.o(((...e)=>n.closeSupplementDialog&&n.closeSupplementDialog(...e)),"29")}:{})}],["__scopeId","data-v-be40106d"]]);wx.createComponent(s);
+"use strict";const e=require("../../common/vendor.js"),t=require("../../common/config.js"),i=require("../../common/store.js");function o(...e){for(const t of e){if(null==t)continue;const e=String(t).trim();if(e)return e}return""}const n={props:{recordStateLabel:{type:String,default:"服务中"},emptyListHint:{type:String,default:"暂无服务中记录"},showReceptionEntryShortcut:{type:Boolean,default:!1},showRecordStateIndicator:{type:Boolean,default:!0}},data:()=>({serviceStatusLoading:!1,serviceStatusTotal:0,serviceStatusPage:{current:1,size:10},serviceStatusQuery:{salesName:"",customerName:"",salesPhone:""},isAdmin:!1,currentUserPhone:"",serviceStatusList:[],showSupplementModal:!1,currentSupplementItem:null,uploadingIds:[],supplementForm:{customerName:"",contact:"",recordingName:"",remarks:""},recorderSupported:!1,recorderManager:null,recordingServiceId:null,recordingContext:null,actionMenuForId:null}),mounted(){this.checkUserRole(),this.loadCurrentUserPhone(),this.initServiceRecorder(),this.fetchServiceStatusList()},beforeUnmount(){if(this.recorderManager&&this.recordingServiceId)try{this.recorderManager.stop()}catch(e){}},methods:{toggleActionMenu(e){const t=null==e?null:String(e);this.actionMenuForId=t?this.actionMenuForId===t?null:t:null},closeActionMenu(){this.actionMenuForId=null},onActionMenuSelect(e,t){if(!t||!t.id)return void this.closeActionMenu();const i=String(t.id);if(this.actionMenuForId&&String(this.actionMenuForId)!==i&&(this.actionMenuForId=i),"record"===e)return this.isRecordingItem(t.id)?this.stopPhoneRecordAndUpload(t):this.startPhoneRecord(t),void this.closeActionMenu();if("supplement"===e)return this.showSupplementDialog(t),void this.closeActionMenu();if("upload"===e){if(this.isUploading(t.id))return;return this.chooseAndUploadFile(t),void this.closeActionMenu()}if("finish"===e)return this.finishService(t),void this.closeActionMenu();this.closeActionMenu()},initServiceRecorder(){this.recorderSupported="function"==typeof e.index.getRecorderManager,this.recorderSupported&&(this.recorderManager=e.index.getRecorderManager(),this.recorderManager.onStop((t=>{const i=this.recordingContext;this.recordingServiceId=null,this.recordingContext=null;const o=t.tempFilePath||"";if(!i||!i.id)return;if(!o)return void e.index.showToast({title:"未获取到录音文件",icon:"none"});const n=`service_record_${i.id}_${Date.now()}.mp3`;this.uploadFileForRecord(i,{path:o,name:n})})),this.recorderManager.onError((()=>{this.recordingServiceId=null,this.recordingContext=null,e.index.showToast({title:"录音出错",icon:"none"})})))},isRecordingItem(e){return!(!e||!this.recordingServiceId)&&String(e)===this.recordingServiceId},startPhoneRecord(t){if(this.recorderSupported&&this.recorderManager)if(t&&t.id)if(this.recordingServiceId)e.index.showToast({title:"请先停止当前录音",icon:"none"});else if(this.isUploading(t.id))e.index.showToast({title:"正在上传,请稍候",icon:"none"});else{this.recordingContext={...t},this.recordingServiceId=String(t.id);try{this.recorderManager.start({duration:6e5,sampleRate:44100,numberOfChannels:1,encodeBitRate:96e3,format:"mp3"})}catch(i){this.recordingServiceId=null,this.recordingContext=null,e.index.showToast({title:"无法开始录音",icon:"none"})}}else e.index.showToast({title:"无法获取服务记录ID",icon:"none"});else e.index.showToast({title:"当前环境不支持录音,请使用微信小程序或 App",icon:"none"})},stopPhoneRecordAndUpload(e){this.recorderManager&&(null==e?void 0:e.id)&&String(e.id)===this.recordingServiceId&&this.recorderManager.stop()},checkUserRole(){try{const t=e=>"string"==typeof e?e.split(",").map((e=>e.trim().toLowerCase())).filter(Boolean):[],i=e.index.getStorageSync("backend-role-name")||"",o=(e.index.getStorageSync("backend-login-response")||{}).roleName||"",n=[...t(i),...t(o)];this.isAdmin=n.some((e=>e.includes("admin"))),console.log("用户角色检查:",{storedRole:i,respRole:o,roles:n,isAdmin:this.isAdmin})}catch(t){console.error("检查用户角色失败:",t),this.isAdmin=!1}},loadCurrentUserPhone(){try{const t=e.index.getStorageSync("backend-login-response")||{};t.phone?this.currentUserPhone=t.phone:t.userName?this.currentUserPhone=t.userName:this.currentUserPhone=""}catch(t){console.error("加载当前用户手机号或登录账户失败:",t),this.currentUserPhone=""}},onServiceStatusSearch(){this.serviceStatusPage.current=1,this.fetchServiceStatusList({force:!0})},onServiceStatusRefresh(){this.serviceStatusPage.current=1,this.fetchServiceStatusList({force:!0})},goReceptionEntry(){e.index.navigateTo({url:"/pages-subpackage/furniture_reception/furniture_reception_entry?tab=reception",fail:()=>{e.index.showToast({title:"跳转接待失败",icon:"none"})}})},onServiceStatusReachBottom(){this.serviceStatusLoading||this.serviceStatusList.length>=this.serviceStatusTotal||(this.serviceStatusPage.current+=1,this.fetchServiceStatusList())},async fetchServiceStatusList({force:i=!1}={}){var o,n,r,s,a,c,l;if(!this.serviceStatusLoading||i){this.serviceStatusLoading=!0;try{const u={current:this.serviceStatusPage.current,size:this.serviceStatusPage.size,serviceStatus:"服务中"},h=null==(n=null==(o=this.serviceStatusQuery)?void 0:o.salesName)?void 0:n.trim(),m=null==(s=null==(r=this.serviceStatusQuery)?void 0:r.customerName)?void 0:s.trim();if(h&&(u.salesName=h),m&&(u.customerName=m),this.isAdmin){const e=null==(c=null==(a=this.serviceStatusQuery)?void 0:a.salesPhone)?void 0:c.trim();e&&(u.salesPhone=e)}else this.currentUserPhone&&(u.salesPhone=this.currentUserPhone);u.serviceStatus="服务中";const p=Object.keys(u).filter((e=>null!==u[e]&&void 0!==u[e]&&""!==u[e])).map((e=>`${encodeURIComponent(e)}=${encodeURIComponent(u[e])}`)).join("&");console.log("服务状态查询参数:",JSON.stringify(u)),console.log("查询字符串:",p);const S=t.getApiUrl("/api/audioManagement/list"),g=p?`${S}?${p}`:S;let v="",f="";try{v=e.index.getStorageSync("backend-tenant-id")||"",f=e.index.getStorageSync("backend-token")||""}catch(d){console.error("获取认证信息失败:",d)}const y={"Content-Type":"application/json"};f&&(y.Authorization=`Bearer ${f}`),v&&(y["X-Tenant-Id"]=v);const x=await e.index.request({url:g,method:"POST",data:{},header:y,timeout:3e4});if(200===x.statusCode&&x.data&&x.data.success){const e=Array.isArray(x.data.data)?x.data.data:[];if(0===e.length)return this.serviceStatusList=[],void(this.serviceStatusTotal=0);const t=e.map((e=>this.buildServiceStatusItem(e))).filter((e=>null!==e));1===this.serviceStatusPage.current||i?this.serviceStatusList=[...t]:this.serviceStatusList=[...this.serviceStatusList,...t],this.serviceStatusTotal=Number(x.data.total)||0}else this.serviceStatusList=[],this.serviceStatusTotal=0,e.index.showToast({title:(null==(l=x.data)?void 0:l.message)||"获取服务中列表失败",icon:"none"})}catch(u){console.error("获取服务中列表失败:",u);let t="获取服务状态失败,请稍后重试";u.errMsg&&(u.errMsg.includes("timeout")?t="请求超时,请检查网络连接后重试":u.errMsg.includes("fail")&&(t="网络请求失败,请检查网络连接")),e.index.showToast({title:t,icon:"none",duration:3e3})}finally{this.serviceStatusLoading=!1}}},buildServiceStatusItem(e={}){if(!e||"object"!=typeof e)return null;const t=this.formatDateTime(e.createTime),i=[];e.recordingName&&i.push({text:`录音:${e.recordingName}`,color:"blue"}),e.intentionLevel&&i.push({text:`意向:${e.intentionLevel}`,color:"orange"}),e.projectName&&i.push({text:`项目:${e.projectName}`,color:"blue"});const n=o(e.recordingName)||(o(e.customerName)?`${String(e.customerName).trim()}的接待记录`:"")||"";return{id:e.id||"",staffName:e.salesName||"未分配销售",status:e.syncStatus||"服务中",customerName:e.customerName||"",customerPhone:e.customerPhone||"",customerId:e.customerId||"",recordingName:e.recordingName||"",title:n,remarks:e.remarks||"",tags:i,durationText:t?`开始时间:${t}`:"暂无开始时间"}},formatDateTime(e){if(!e)return"";const t=new Date(e);if(Number.isNaN(t.getTime()))return"";return`${t.getFullYear()}-${String(t.getMonth()+1).padStart(2,"0")}-${String(t.getDate()).padStart(2,"0")} ${String(t.getHours()).padStart(2,"0")}:${String(t.getMinutes()).padStart(2,"0")}:${String(t.getSeconds()).padStart(2,"0")}`},viewServiceDetail(e){console.log("查看服务详情",e)},isUploading(e){return!!e&&this.uploadingIds.includes(String(e))},isMp3UploadFile(e){if(!e||!e.path)return!1;const t=e=>{if(!e||"string"!=typeof e)return"";return(e.split("/").pop()||e.split("\\").pop()||e).trim()},i=[t(e.name),t(e.path)].filter(Boolean);for(const o of i)if(o.toLowerCase().endsWith(".mp3"))return!0;return!1},async chooseAndUploadFile(t){if(!t||!t.id)return void e.index.showToast({title:"无法获取服务记录ID",icon:"none"});if(this.isUploading(t.id))return;const i=await this.selectUploadFile();i&&i.path&&await this.uploadFileForRecord(t,i)},selectUploadFile(){return new Promise((t=>{const i=i=>{const o=(e=>{const t=Array.isArray(null==e?void 0:e.tempFiles)?e.tempFiles:[];if(!t.length)return null;const i=t[0]||{},o=i.path||i.tempFilePath||i.url||"",n=i.name||o.split("/").pop()||`service_file_${Date.now()}`;return o?{path:o,name:n}:null})(i);return o?this.isMp3UploadFile(o)?void t(o):(e.index.showToast({title:"仅支持上传 MP3 文件",icon:"none"}),void t(null)):(e.index.showToast({title:"未选择有效文件",icon:"none"}),void t(null))},o=i=>{((null==i?void 0:i.errMsg)||"").includes("cancel")||(console.error("选择文件失败:",i),e.index.showToast({title:"选择文件失败",icon:"none"})),t(null)};"function"!=typeof e.index.chooseMessageFile?"function"!=typeof e.index.chooseFile?e.index.chooseImage({count:1,success:i,fail:o}):e.index.chooseFile({count:1,extension:[".mp3"],success:i,fail:o}):e.index.chooseMessageFile({count:1,type:"file",success:i,fail:o})}))},getAuthHeaders(){let t="",i="";try{t=e.index.getStorageSync("backend-tenant-id")||"",i=e.index.getStorageSync("backend-token")||""}catch(n){console.error("获取认证信息失败:",n)}const o={};return i&&(o.Authorization=`Bearer ${i}`),t&&(o["X-Tenant-Id"]=t),o},async uploadFileForRecord(i,o){const n=String(i.id);this.closeActionMenu(),this.uploadingIds=[...this.uploadingIds,n];try{e.index.showLoading({title:"上传中..."});const s=await e.index.uploadFile({url:t.getApiUrl("/api/audio/upload"),filePath:o.path,name:"file",formData:{id:i.id,audioId:i.id,customerId:i.customerId||"",customerName:i.customerName||"",fileName:o.name||`service_file_${Date.now()}`},header:this.getAuthHeaders(),timeout:6e4});let a={};try{a="string"==typeof(null==s?void 0:s.data)?JSON.parse(s.data):(null==s?void 0:s.data)||{}}catch(r){a=(null==s?void 0:s.data)||{}}if(200===(null==s?void 0:s.statusCode)&&!1!==(null==a?void 0:a.success))return e.index.showToast({title:"上传成功",icon:"success"}),this.serviceStatusPage.current=1,void this.fetchServiceStatusList({force:!0});e.index.showToast({title:(null==a?void 0:a.message)||"上传失败",icon:"none"})}catch(s){console.error("上传文件失败:",s),e.index.showToast({title:(null==s?void 0:s.errMsg)||(null==s?void 0:s.message)||"上传失败",icon:"none"})}finally{e.index.hideLoading(),this.uploadingIds=this.uploadingIds.filter((e=>e!==n))}},async finishService(i){i&&i.id?(this.closeActionMenu(),e.index.showModal({title:"确认结束",content:"确定要结束这条服务记录吗?",success:async o=>{var n,r;if(o.confirm)try{e.index.showLoading({title:"结束中..."});const o=t.getApiUrl("/api/audioManagement/finishServiceById");let a="",c="";try{a=e.index.getStorageSync("backend-tenant-id")||"",c=e.index.getStorageSync("backend-token")||""}catch(s){console.error("获取认证信息失败:",s)}const l={"Content-Type":"application/json"};c&&(l.Authorization=`Bearer ${c}`),a&&(l["X-Tenant-Id"]=a);const d={id:i.id},u=await e.index.request({url:o,method:"POST",data:d,header:l,timeout:3e4});if(e.index.hideLoading(),200===u.statusCode&&u.data&&u.data.success){const t=((null==(n=u.data)?void 0:n.message)||"结束服务成功").replace(/[A-Za-z]+/g,"").split(/\n/).map((e=>e.trim())).filter(Boolean).join("\n")||"结束服务成功";e.index.showToast({title:t,icon:"success"}),this.serviceStatusPage.current=1,this.fetchServiceStatusList({force:!0})}else e.index.showToast({title:(null==(r=u.data)?void 0:r.message)||"结束服务失败",icon:"none"})}catch(a){e.index.hideLoading(),console.error("结束服务失败:",a);let t="结束服务失败,请重试";a.errMsg&&(a.errMsg.includes("timeout")?t="请求超时,请检查网络连接后重试":a.errMsg.includes("fail")&&(t="网络请求失败,请检查网络连接")),e.index.showToast({title:t,icon:"none",duration:3e3})}}})):e.index.showToast({title:"无法获取服务记录ID",icon:"none"})},showSupplementDialog(e){this.currentSupplementItem=e,this.supplementForm={customerName:e.customerName||"",contact:e.customerPhone||"",recordingName:e.recordingName||"",remarks:e.remarks||""},this.showSupplementModal=!0},closeSupplementDialog(){this.showSupplementModal=!1,this.currentSupplementItem=null,this.supplementForm={customerName:"",contact:"",recordingName:"",remarks:""}},async saveSupplement(){var n,r,s,a,c;const l=null==(n=this.supplementForm.contact)?void 0:n.trim();if(!l||this.isValidPhoneNumber(l))if(this.currentSupplementItem&&this.currentSupplementItem.id)try{e.index.showLoading({title:"保存中..."});let n="",u="";try{n=e.index.getStorageSync("backend-tenant-id")||"",u=e.index.getStorageSync("backend-token")||""}catch(d){console.error("获取认证信息失败:",d)}const h={"Content-Type":"application/json"};u&&(h.Authorization=`Bearer ${u}`),n&&(h["X-Tenant-Id"]=n);let m={};try{m=e.index.getStorageSync("backend-login-response")||{}}catch(d){console.error("读取登录信息失败:",d)}const p=i.store.userInfo||{},S=o(m.phone,m.userName,p.username),g=o(m.realName,m.name,m.nickName,p.nickname,m.userName,p.username),v={id:this.currentSupplementItem.id,customerId:this.currentSupplementItem.customerId||"",customerName:(null==(r=this.supplementForm.customerName)?void 0:r.trim())||"",customerPhone:l||"",recordingName:(null==(s=this.supplementForm.recordingName)?void 0:s.trim())||"",remarks:(null==(a=this.supplementForm.remarks)?void 0:a.trim())||"",salesPhone:S,salesName:g},f=await e.index.request({url:t.getApiUrl("/api/audioManagement/updateForCustomerInfo"),method:"PUT",data:v,header:h,timeout:3e4});e.index.hideLoading(),200===f.statusCode&&f.data&&f.data.success?(e.index.showToast({title:"补录成功",icon:"success"}),this.closeSupplementDialog(),this.serviceStatusPage.current=1,this.fetchServiceStatusList({force:!0})):e.index.showToast({title:(null==(c=f.data)?void 0:c.message)||"补录失败",icon:"none"})}catch(u){e.index.hideLoading(),console.error("补录失败:",u);let t="补录失败,请重试";u.errMsg&&(u.errMsg.includes("timeout")?t="请求超时,请检查网络连接后重试":u.errMsg.includes("fail")&&(t="网络请求失败,请检查网络连接")),e.index.showToast({title:t,icon:"none",duration:3e3})}else e.index.showToast({title:"无法获取服务记录ID",icon:"none"});else e.index.showToast({title:"请输入有效的客户电话",icon:"none"})},isValidPhoneNumber(e){const t=null==e?void 0:e.trim();return!!t&&/^1[3-9]\d{9}$/.test(t)}}};if(!Array){e.resolveComponent("uni-icons")()}Math;const r=e._export_sfc(n,[["render",function(t,i,o,n,r,s){return e.e({a:e.t(r.serviceStatusTotal),b:e.o(((...e)=>s.onServiceStatusSearch&&s.onServiceStatusSearch(...e)),"1e"),c:r.serviceStatusQuery.salesName,d:e.o((e=>r.serviceStatusQuery.salesName=e.detail.value),"5b"),e:e.o(((...e)=>s.onServiceStatusSearch&&s.onServiceStatusSearch(...e)),"4f"),f:r.serviceStatusQuery.customerName,g:e.o((e=>r.serviceStatusQuery.customerName=e.detail.value),"ff"),h:r.isAdmin},r.isAdmin?{i:e.o(((...e)=>s.onServiceStatusSearch&&s.onServiceStatusSearch(...e)),"91"),j:r.serviceStatusQuery.salesPhone,k:e.o((e=>r.serviceStatusQuery.salesPhone=e.detail.value),"86")}:{},{l:o.showReceptionEntryShortcut},o.showReceptionEntryShortcut?{m:e.p({type:"home",size:"18",color:"#2A68FF"}),n:e.o(((...e)=>s.goReceptionEntry&&s.goReceptionEntry(...e)),"5d")}:{},{o:e.p({type:"refresh",size:"18",color:"#2A68FF"}),p:e.o(((...e)=>s.onServiceStatusRefresh&&s.onServiceStatusRefresh(...e)),"84"),q:e.f(r.serviceStatusList,((t,i,n)=>e.e({a:e.t(t.staffName?t.staffName.charAt(0):"未"),b:e.t(t.staffName||"未分配销售"),c:"6f0c59d0-2-"+n,d:e.o((e=>s.toggleActionMenu(t.id)),t.id||i),e:r.actionMenuForId&&String(r.actionMenuForId)===String(t.id)},r.actionMenuForId&&String(r.actionMenuForId)===String(t.id)?{f:e.t(s.isRecordingItem(t.id)?"停止录音":"开始录音"),g:e.o((e=>s.onActionMenuSelect("record",t)),t.id||i),h:e.o((e=>s.onActionMenuSelect("supplement",t)),t.id||i),i:e.t(s.isUploading(t.id)?"上传中":"上传录音"),j:s.isUploading(t.id)?1:"",k:e.o((e=>s.onActionMenuSelect("upload",t)),t.id||i),l:e.o((e=>s.onActionMenuSelect("finish",t)),t.id||i),m:e.o((()=>{}),t.id||i)}:{},o.showRecordStateIndicator?{n:"6f0c59d0-3-"+n,o:e.p({type:"bars",size:"16",color:"#007AFF"}),p:e.t(o.recordStateLabel)}:{},{q:t.title},t.title?{r:e.t(t.title)}:{},{s:e.t(t.customerName||"未知客户"),t:t.customerPhone},t.customerPhone?{v:e.t(t.customerPhone)}:{},{w:e.f(t.tags,((t,i,o)=>({a:e.t(t.text),b:e.n("tag-"+t.color),c:i}))),x:t.alert},t.alert?e.e({y:e.t(t.alert.title),z:"risk"===t.alert.type},"risk"===t.alert.type?{A:e.t(t.alert.message)}:{B:e.f(t.alert.messages,((t,i,o)=>({a:e.t(t),b:i})))},{C:e.n("risk"===t.alert.type?"alert-risk-text":"alert-reminder-text"),D:e.n("risk"===t.alert.type?"alert-risk-box":"alert-reminder-box")}):{},{E:e.t(t.durationText),F:t.id||i,G:e.o((e=>s.viewServiceDetail(t)),t.id||i)}))),r:e.p({type:"bottom",size:"16",color:"#007AFF"}),s:o.showRecordStateIndicator,t:!r.serviceStatusLoading&&!r.serviceStatusList.length},r.serviceStatusLoading||r.serviceStatusList.length?{}:{v:e.t(o.emptyListHint)},{w:r.serviceStatusLoading&&r.serviceStatusList.length},(r.serviceStatusLoading&&r.serviceStatusList.length,{}),{x:e.o(((...e)=>s.onServiceStatusReachBottom&&s.onServiceStatusReachBottom(...e)),"d2"),y:r.actionMenuForId},r.actionMenuForId?{z:e.o(((...e)=>s.closeActionMenu&&s.closeActionMenu(...e)),"8e")}:{},{A:r.showSupplementModal},r.showSupplementModal?{B:e.p({type:"close",size:"20",color:"#999"}),C:e.o(((...e)=>s.closeSupplementDialog&&s.closeSupplementDialog(...e)),"00"),D:r.supplementForm.customerName,E:e.o((e=>r.supplementForm.customerName=e.detail.value),"1c"),F:r.supplementForm.contact,G:e.o((e=>r.supplementForm.contact=e.detail.value),"26"),H:r.supplementForm.recordingName,I:e.o((e=>r.supplementForm.recordingName=e.detail.value),"bd"),J:r.supplementForm.remarks,K:e.o((e=>r.supplementForm.remarks=e.detail.value),"5c"),L:e.o(((...e)=>s.closeSupplementDialog&&s.closeSupplementDialog(...e)),"b1"),M:e.o(((...e)=>s.saveSupplement&&s.saveSupplement(...e)),"77"),N:e.o((()=>{}),"70"),O:e.o(((...e)=>s.closeSupplementDialog&&s.closeSupplementDialog(...e)),"d6")}:{})}],["__scopeId","data-v-6f0c59d0"]]);wx.createComponent(r);
diff --git a/unpackage/dist/build/mp-weixin/pages-subpackage/furniture_reception/serviceListFurniture.wxml b/unpackage/dist/build/mp-weixin/pages-subpackage/furniture_reception/serviceListFurniture.wxml
index 2c2071c..5a27107 100644
--- a/unpackage/dist/build/mp-weixin/pages-subpackage/furniture_reception/serviceListFurniture.wxml
+++ b/unpackage/dist/build/mp-weixin/pages-subpackage/furniture_reception/serviceListFurniture.wxml
@@ -1 +1 @@
-共{{a}}条接待刷新{{item.n}}客户:{{item.o}}电话:{{item.q}}{{tag.a}}{{item.w}}{{msg.a}}{{item.A}}{{t}}正在加载更多...客户姓名客户电话录音名客户详细地址
\ No newline at end of file
+共{{a}}条接待刷新{{item.r}}客户:{{item.s}}电话:{{item.v}}{{tag.a}}{{item.A}}{{msg.a}}{{item.E}}{{v}}正在加载更多...客户姓名客户电话录音名客户详细地址
\ No newline at end of file
diff --git a/unpackage/dist/build/mp-weixin/pages-subpackage/furniture_reception/serviceListFurniture.wxss b/unpackage/dist/build/mp-weixin/pages-subpackage/furniture_reception/serviceListFurniture.wxss
index 085c01f..5b3de36 100644
--- a/unpackage/dist/build/mp-weixin/pages-subpackage/furniture_reception/serviceListFurniture.wxss
+++ b/unpackage/dist/build/mp-weixin/pages-subpackage/furniture_reception/serviceListFurniture.wxss
@@ -1 +1 @@
-.service-list-container.data-v-be40106d{height:100%;width:100%;display:flex;flex-direction:column;background-color:#f5f5f5;padding:0 16rpx;box-sizing:border-box}.service-status-toolbar.data-v-be40106d{display:flex;flex-wrap:nowrap;align-items:center;gap:8rpx;padding:12rpx 8rpx;margin-bottom:24rpx;background-color:#f8f8fa;border-radius:8rpx;border:1px solid #EFEFF2;overflow-x:auto;min-height:64rpx;box-sizing:border-box;flex-shrink:0}.service-list.data-v-be40106d{flex:1;background-color:transparent;box-sizing:border-box;overflow-y:auto}.toolbar-total.data-v-be40106d{font-size:24rpx;color:#666;white-space:nowrap;flex-shrink:0;margin-right:8rpx;line-height:1.2;padding:0 4rpx}.toolbar-input.data-v-be40106d{flex:1;min-width:120rpx;max-width:200rpx;height:56rpx;line-height:56rpx;background-color:#f5f6fa;border-radius:8rpx;padding:0 12rpx;font-size:24rpx;border:1px solid transparent;box-sizing:border-box;flex-shrink:1}.toolbar-actions.data-v-be40106d{display:flex;align-items:center;margin-left:auto;flex-shrink:0;gap:8rpx}.toolbar-btn.data-v-be40106d{padding:0 12rpx;height:56rpx;min-width:56rpx;color:#2a68ff;display:flex;align-items:center;justify-content:center;gap:4rpx;font-size:24rpx;font-weight:400;line-height:1;box-sizing:border-box}.service-card.data-v-be40106d{width:100%;box-sizing:border-box;background-color:#fff;border-radius:16rpx;padding:32rpx;margin-bottom:24rpx;box-shadow:0 2rpx 8rpx rgba(0,0,0,.04);overflow:visible}.card-header.data-v-be40106d{display:flex;justify-content:space-between;align-items:center;margin-bottom:20rpx;width:100%;box-sizing:border-box;padding:0;margin:0}.service-title.data-v-be40106d{margin-top:16rpx;margin-bottom:8rpx}.service-title__text.data-v-be40106d{font-size:28rpx;font-weight:600;color:#111827;display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.staff-info.data-v-be40106d{display:flex;align-items:center;flex:1;min-width:0;margin:0;padding:0}.staff-avatar.data-v-be40106d{width:64rpx;height:64rpx;background-color:#2196f3;border-radius:50%;display:flex;align-items:center;justify-content:center;margin-right:16rpx;margin-left:0;margin-top:0;margin-bottom:0;flex-shrink:0}.avatar-text.data-v-be40106d{font-size:32rpx;color:#fff;font-weight:500}.staff-name.data-v-be40106d{font-size:32rpx;font-weight:500;color:#333}.service-status.data-v-be40106d{display:flex;align-items:center;gap:8rpx}.service-status text.data-v-be40106d{font-size:26rpx;color:#007aff}.customer-tags.data-v-be40106d{display:flex;flex-wrap:wrap;margin-bottom:20rpx;gap:12rpx;box-sizing:border-box;margin-left:0;margin-right:0;padding:0;width:100%;max-width:100%}.customer-info.data-v-be40106d{margin-bottom:16rpx;display:flex;flex-direction:column;gap:8rpx;box-sizing:border-box;margin-left:0;margin-right:0;padding:0;width:100%;max-width:100%}.customer-name.data-v-be40106d,.customer-phone.data-v-be40106d{font-size:28rpx;color:#555}.tag-item.data-v-be40106d{padding:8rpx 16rpx;border-radius:8rpx;box-sizing:border-box;word-wrap:break-word;word-break:break-all;display:inline-block;max-width:100%}.tag-blue.data-v-be40106d{background-color:#e3f2fd}.tag-blue text.data-v-be40106d{font-size:24rpx;color:#1976d2}.tag-orange.data-v-be40106d{background-color:#fff3e0}.tag-orange text.data-v-be40106d{font-size:24rpx;color:#f57c00}.ai-alert.data-v-be40106d{border-radius:8rpx;padding:20rpx;margin-bottom:20rpx}.alert-risk-box.data-v-be40106d{background-color:#fff5f5}.alert-reminder-box.data-v-be40106d{background-color:#f5f5f5}.alert-header.data-v-be40106d{display:flex;align-items:center;margin-bottom:12rpx}.alert-icon.data-v-be40106d{margin-right:8rpx}.icon-circle.data-v-be40106d{width:24rpx;height:24rpx;border:2rpx solid #333;border-radius:50%;position:relative}.icon-circle.data-v-be40106d:after{content:"";position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);width:8rpx;height:8rpx;background-color:#333;border-radius:50%}.alert-title.data-v-be40106d{font-size:28rpx;font-weight:500;color:#333}.alert-content.data-v-be40106d{font-size:26rpx;line-height:1.6}.alert-risk-text.data-v-be40106d{color:#ff5722}.alert-reminder-text.data-v-be40106d{color:#666}.alert-list.data-v-be40106d{display:flex;flex-direction:column;gap:8rpx}.alert-item.data-v-be40106d{display:flex;align-items:flex-start}.alert-item.data-v-be40106d:before{content:"\2022";margin-right:8rpx;color:#666}.alert-item text.data-v-be40106d{font-size:26rpx;color:#666;line-height:1.6}.service-duration.data-v-be40106d{padding-top:16rpx;border-top:1px solid #F0F0F0}.service-duration text.data-v-be40106d{font-size:26rpx;color:#999}.service-action-btn.data-v-be40106d{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.data-v-be40106d{color:#007aff;background-color:transparent}.service-action-btn--finish.data-v-be40106d:active{opacity:.7}.service-action-btn--supplement.data-v-be40106d{color:#10b981;background-color:transparent}.service-action-btn--supplement.data-v-be40106d:active{opacity:.7}.service-action-btn--upload.data-v-be40106d{color:#7c3aed;background-color:transparent}.service-action-btn--upload.data-v-be40106d:active{opacity:.7}.service-action-btn--record.data-v-be40106d{color:#007aff;background-color:transparent}.service-action-btn--record.data-v-be40106d:active{opacity:.7}.service-action-btn--recording.data-v-be40106d{color:#ff3b30}.service-status-empty.data-v-be40106d,.service-status-loading-more.data-v-be40106d{padding:48rpx 0;text-align:center;color:#999;font-size:28rpx}.supplement-dialog-mask.data-v-be40106d{position:fixed;top:0;left:0;right:0;bottom:0;background-color:rgba(0,0,0,.5);display:flex;align-items:center;justify-content:center;z-index:1000}.supplement-dialog.data-v-be40106d{width:640rpx;max-height:80vh;background-color:#fff;border-radius:24rpx;overflow:hidden;display:flex;flex-direction:column}.supplement-dialog__header.data-v-be40106d{display:flex;align-items:center;justify-content:space-between;padding:32rpx 32rpx 24rpx;border-bottom:1px solid #F0F0F0}.supplement-dialog__title.data-v-be40106d{font-size:32rpx;font-weight:500;color:#333}.supplement-dialog__close.data-v-be40106d{width:48rpx;height:48rpx;display:flex;align-items:center;justify-content:center}.supplement-dialog__body.data-v-be40106d{flex:1;padding:32rpx;overflow-y:auto}.supplement-form-item.data-v-be40106d{margin-bottom:32rpx}.supplement-form-item.data-v-be40106d:last-child{margin-bottom:0}.supplement-form-item__label.data-v-be40106d{display:block;font-size:28rpx;color:#333;font-weight:500;margin-bottom:16rpx}.supplement-form-item__input.data-v-be40106d{width:100%;height:88rpx;background-color:#f9fafb;border-radius:12rpx;padding:0 24rpx;font-size:28rpx;color:#333;box-sizing:border-box}.supplement-form-item__textarea.data-v-be40106d{width:100%;min-height:160rpx;background-color:#f9fafb;border-radius:12rpx;padding:24rpx;font-size:28rpx;color:#333;box-sizing:border-box;line-height:1.6}.supplement-dialog__footer.data-v-be40106d{display:flex;gap:24rpx;padding:24rpx 32rpx 32rpx;border-top:1px solid #F0F0F0}.supplement-dialog__btn.data-v-be40106d{flex:1;height:88rpx;border-radius:12rpx;display:flex;align-items:center;justify-content:center;font-size:32rpx;font-weight:500}.supplement-dialog__btn--cancel.data-v-be40106d{background-color:#f3f4f6;color:#6b7280}.supplement-dialog__btn--save.data-v-be40106d{background-color:#4c8dff;color:#fff}.supplement-dialog__btn.data-v-be40106d:active{opacity:.7}
+.service-list-container.data-v-6f0c59d0{height:100%;width:100%;display:flex;flex-direction:column;background-color:#f5f5f5;padding:0 16rpx;box-sizing:border-box}.service-status-toolbar.data-v-6f0c59d0{display:flex;flex-wrap:nowrap;align-items:center;gap:8rpx;padding:12rpx 8rpx;margin-bottom:24rpx;background-color:#f8f8fa;border-radius:8rpx;border:1px solid #EFEFF2;overflow-x:auto;min-height:64rpx;box-sizing:border-box;flex-shrink:0}.service-list.data-v-6f0c59d0{flex:1;background-color:transparent;box-sizing:border-box;overflow-y:auto}.toolbar-total.data-v-6f0c59d0{font-size:24rpx;color:#666;white-space:nowrap;flex-shrink:0;margin-right:8rpx;line-height:1.2;padding:0 4rpx}.toolbar-input.data-v-6f0c59d0{flex:1;min-width:120rpx;max-width:200rpx;height:56rpx;line-height:56rpx;background-color:#f5f6fa;border-radius:8rpx;padding:0 12rpx;font-size:24rpx;border:1px solid transparent;box-sizing:border-box;flex-shrink:1}.toolbar-actions.data-v-6f0c59d0{display:flex;align-items:center;margin-left:auto;flex-shrink:0;gap:8rpx}.toolbar-btn.data-v-6f0c59d0{padding:0 12rpx;height:56rpx;min-width:56rpx;color:#2a68ff;display:flex;align-items:center;justify-content:center;gap:4rpx;font-size:24rpx;font-weight:400;line-height:1;box-sizing:border-box}.service-card.data-v-6f0c59d0{width:100%;box-sizing:border-box;background-color:#fff;border-radius:16rpx;padding:32rpx;margin-bottom:24rpx;box-shadow:0 2rpx 8rpx rgba(0,0,0,.04);overflow:visible;position:relative}.card-header.data-v-6f0c59d0{display:flex;justify-content:space-between;align-items:center;margin-bottom:20rpx;width:100%;box-sizing:border-box;padding:0;margin:0}.service-title.data-v-6f0c59d0{margin-top:16rpx;margin-bottom:8rpx}.service-title__text.data-v-6f0c59d0{font-size:28rpx;font-weight:600;color:#111827;display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.staff-info.data-v-6f0c59d0{display:flex;align-items:center;flex:1;min-width:0;margin:0;padding:0}.staff-avatar.data-v-6f0c59d0{width:64rpx;height:64rpx;background-color:#2196f3;border-radius:50%;display:flex;align-items:center;justify-content:center;margin-right:16rpx;margin-left:0;margin-top:0;margin-bottom:0;flex-shrink:0}.avatar-text.data-v-6f0c59d0{font-size:32rpx;color:#fff;font-weight:500}.staff-name.data-v-6f0c59d0{font-size:32rpx;font-weight:500;color:#333}.service-status.data-v-6f0c59d0{display:flex;align-items:center;gap:8rpx}.action-trigger.data-v-6f0c59d0{display:inline-flex;align-items:center;gap:6rpx;padding:6rpx 12rpx;border-radius:10rpx;background-color:#eef4ff}.action-trigger__text.data-v-6f0c59d0{font-size:26rpx;color:#007aff;white-space:nowrap}.action-menu.data-v-6f0c59d0{position:absolute;right:24rpx;top:96rpx;min-width:220rpx;background-color:#fff;border-radius:16rpx;box-shadow:0 8rpx 24rpx rgba(0,0,0,.12);border:1px solid #EEF0F3;z-index:50;overflow:hidden}.action-menu-item.data-v-6f0c59d0{padding:22rpx 24rpx;display:flex;align-items:center;justify-content:flex-start}.action-menu-item text.data-v-6f0c59d0{font-size:28rpx;color:#111827}.action-menu-item.data-v-6f0c59d0:active{background-color:#f5f7fa}.action-menu-item--danger text.data-v-6f0c59d0{color:#ef4444}.action-menu-item--disabled.data-v-6f0c59d0{opacity:.55}.action-menu-mask.data-v-6f0c59d0{position:fixed;left:0;top:0;right:0;bottom:0;background-color:transparent;z-index:40}.service-status text.data-v-6f0c59d0{font-size:26rpx;color:#007aff}.customer-tags.data-v-6f0c59d0{display:flex;flex-wrap:wrap;margin-bottom:20rpx;gap:12rpx;box-sizing:border-box;margin-left:0;margin-right:0;padding:0;width:100%;max-width:100%}.customer-info.data-v-6f0c59d0{margin-bottom:16rpx;display:flex;flex-direction:column;gap:8rpx;box-sizing:border-box;margin-left:0;margin-right:0;padding:0;width:100%;max-width:100%}.customer-name.data-v-6f0c59d0,.customer-phone.data-v-6f0c59d0{font-size:28rpx;color:#555}.tag-item.data-v-6f0c59d0{padding:8rpx 16rpx;border-radius:8rpx;box-sizing:border-box;word-wrap:break-word;word-break:break-all;display:inline-block;max-width:100%}.tag-blue.data-v-6f0c59d0{background-color:#e3f2fd}.tag-blue text.data-v-6f0c59d0{font-size:24rpx;color:#1976d2}.tag-orange.data-v-6f0c59d0{background-color:#fff3e0}.tag-orange text.data-v-6f0c59d0{font-size:24rpx;color:#f57c00}.ai-alert.data-v-6f0c59d0{border-radius:8rpx;padding:20rpx;margin-bottom:20rpx}.alert-risk-box.data-v-6f0c59d0{background-color:#fff5f5}.alert-reminder-box.data-v-6f0c59d0{background-color:#f5f5f5}.alert-header.data-v-6f0c59d0{display:flex;align-items:center;margin-bottom:12rpx}.alert-icon.data-v-6f0c59d0{margin-right:8rpx}.icon-circle.data-v-6f0c59d0{width:24rpx;height:24rpx;border:2rpx solid #333;border-radius:50%;position:relative}.icon-circle.data-v-6f0c59d0:after{content:"";position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);width:8rpx;height:8rpx;background-color:#333;border-radius:50%}.alert-title.data-v-6f0c59d0{font-size:28rpx;font-weight:500;color:#333}.alert-content.data-v-6f0c59d0{font-size:26rpx;line-height:1.6}.alert-risk-text.data-v-6f0c59d0{color:#ff5722}.alert-reminder-text.data-v-6f0c59d0{color:#666}.alert-list.data-v-6f0c59d0{display:flex;flex-direction:column;gap:8rpx}.alert-item.data-v-6f0c59d0{display:flex;align-items:flex-start}.alert-item.data-v-6f0c59d0:before{content:"\2022";margin-right:8rpx;color:#666}.alert-item text.data-v-6f0c59d0{font-size:26rpx;color:#666;line-height:1.6}.service-duration.data-v-6f0c59d0{padding-top:16rpx;border-top:1px solid #F0F0F0}.service-duration text.data-v-6f0c59d0{font-size:26rpx;color:#999}.service-status-empty.data-v-6f0c59d0,.service-status-loading-more.data-v-6f0c59d0{padding:48rpx 0;text-align:center;color:#999;font-size:28rpx}.supplement-dialog-mask.data-v-6f0c59d0{position:fixed;top:0;left:0;right:0;bottom:0;background-color:rgba(0,0,0,.5);display:flex;align-items:center;justify-content:center;z-index:1000}.supplement-dialog.data-v-6f0c59d0{width:640rpx;max-height:80vh;background-color:#fff;border-radius:24rpx;overflow:hidden;display:flex;flex-direction:column}.supplement-dialog__header.data-v-6f0c59d0{display:flex;align-items:center;justify-content:space-between;padding:32rpx 32rpx 24rpx;border-bottom:1px solid #F0F0F0}.supplement-dialog__title.data-v-6f0c59d0{font-size:32rpx;font-weight:500;color:#333}.supplement-dialog__close.data-v-6f0c59d0{width:48rpx;height:48rpx;display:flex;align-items:center;justify-content:center}.supplement-dialog__body.data-v-6f0c59d0{flex:1;padding:32rpx;overflow-y:auto}.supplement-form-item.data-v-6f0c59d0{margin-bottom:32rpx}.supplement-form-item.data-v-6f0c59d0:last-child{margin-bottom:0}.supplement-form-item__label.data-v-6f0c59d0{display:block;font-size:28rpx;color:#333;font-weight:500;margin-bottom:16rpx}.supplement-form-item__input.data-v-6f0c59d0{width:100%;height:88rpx;background-color:#f9fafb;border-radius:12rpx;padding:0 24rpx;font-size:28rpx;color:#333;box-sizing:border-box}.supplement-form-item__textarea.data-v-6f0c59d0{width:100%;min-height:160rpx;background-color:#f9fafb;border-radius:12rpx;padding:24rpx;font-size:28rpx;color:#333;box-sizing:border-box;line-height:1.6}.supplement-dialog__footer.data-v-6f0c59d0{display:flex;gap:24rpx;padding:24rpx 32rpx 32rpx;border-top:1px solid #F0F0F0}.supplement-dialog__btn.data-v-6f0c59d0{flex:1;height:88rpx;border-radius:12rpx;display:flex;align-items:center;justify-content:center;font-size:32rpx;font-weight:500}.supplement-dialog__btn--cancel.data-v-6f0c59d0{background-color:#f3f4f6;color:#6b7280}.supplement-dialog__btn--save.data-v-6f0c59d0{background-color:#4c8dff;color:#fff}.supplement-dialog__btn.data-v-6f0c59d0:active{opacity:.7}