添加sop管理

This commit is contained in:
zhonghua.li
2026-04-23 16:27:48 +08:00
parent e1276a1906
commit 44dcc4b2b2
49 changed files with 817 additions and 456 deletions

View File

@@ -48,6 +48,8 @@
"furniture_customer/furniture_customer",
"furniture_reception/furniture_reception_entry",
"furniture_reception/reception_in_progress",
"furniture_reception/script_management_my",
"furniture_reception/sop_management_my",
"bluetooth-recorder/bluetooth-recorder",
"uni-agree/uni-agree",
"ucenter/settings/settings",

View File

@@ -1 +1 @@
"use strict";exports.envConfig={apiEnv:"prod"};
"use strict";exports.envConfig={apiEnv:"local"};

File diff suppressed because one or more lines are too long

View File

@@ -1 +0,0 @@
"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 +0,0 @@
.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}

View File

@@ -0,0 +1 @@
"use strict";const e=require("../common/vendor.js"),o={name:"SoftSalesScenario",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("[SoftSalesScenario] 写入接待tab快捷跳转参数失败:",t)}e.index.navigateTo({url:`/pages-subpackage/furniture_reception/furniture_reception_entry?tab=${encodeURIComponent(o)}`,fail:o=>{console.error("[SoftSalesScenario] 快捷跳转接待页失败:",o),e.index.showToast({title:"跳转失败,请稍后重试",icon:"none"})}})}},quickJumpReceptionInProgress(){e.index.navigateTo({url:"/pages-subpackage/furniture_reception/reception_in_progress",fail:o=>{console.error("[SoftSalesScenario] 快捷跳转接待中页失败:",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("[SoftSalesScenario] 快捷跳转客户页失败:",o),e.index.showToast({title:"跳转失败,请稍后重试",icon:"none"})}})},quickJumpScriptManagement(){e.index.navigateTo({url:"/pages-subpackage/furniture_reception/script_management_my",fail:o=>{console.error("[SoftSalesScenario] 跳转话术管理页失败:",o),e.index.showToast({title:"跳转失败,请稍后重试",icon:"none"})}})},quickJumpSopManagement(){e.index.navigateTo({url:"/pages-subpackage/furniture_reception/sop_management_my",fail:o=>{console.error("[SoftSalesScenario] 跳转SOP管理页失败:",o),e.index.showToast({title:"跳转失败,请稍后重试",icon:"none"})}})}}};if(!Array){e.resolveComponent("QualityCoveragePopup")()}const t=e._export_sfc(o,[["render",function(o,t,a,n,i,r){return e.e({a:e.o((e=>r.quickJumpReceptionTab("reception")),"9a"),b:e.o(((...e)=>r.quickJumpReceptionInProgress&&r.quickJumpReceptionInProgress(...e)),"74"),c:e.o((e=>r.quickJumpReceptionTab("tag")),"f0"),d:e.o(((...e)=>r.quickJumpScriptManagement&&r.quickJumpScriptManagement(...e)),"c6"),e:e.o(((...e)=>r.quickJumpSopManagement&&r.quickJumpSopManagement(...e)),"0b"),f:e.o((e=>r.quickJumpCustomerTab("customer")),"6d"),g:e.o((e=>r.quickJumpCustomerTab("service")),"d0"),h:e.o((e=>r.navigateToPage("recording_duration")),"4f"),i:e.o((e=>r.navigateToPage("customer_count")),"6c"),j:e.o(((...e)=>r.showQualityCoveragePopup&&r.showQualityCoveragePopup(...e)),"71"),k:e.o((e=>r.navigateToPage("speech_rating")),"46"),l:e.o((e=>r.navigateToPage("intent_level")),"6c"),m:e.o((e=>r.navigateToPage("deal_attribution")),"15"),n:e.o((e=>r.navigateToPage("opening_rate")),"d5"),o:e.o((e=>r.navigateToPage("over_commitment")),"90"),p:e.o((e=>r.navigateToPage("red_line_touch")),"bd"),q:r.scrollTop,r:r.scrollBottom,s:i.showQualityCoverage},i.showQualityCoverage?{t:e.o(r.onQualityCoveragePopupClose,"e8"),v:e.p({"open-trigger":i.openQualityCoverageTrigger})}:{})}],["__scopeId","data-v-b1056740"]]);wx.createComponent(t);

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1 @@
.ai-dashboard-body.data-v-b1056740{position:relative;width:100%}.content.data-v-b1056740{padding-top:0!important;margin-top:0!important;position:relative;top:0;min-height:calc(100vh - 200rpx)}.content-scroll.data-v-b1056740{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-b1056740{margin-top:0;padding-top:0;margin-bottom:0;padding-bottom:0}.category-section.data-v-b1056740{margin:20rpx 30rpx;background:#fff;border-radius:16rpx;overflow:hidden;box-shadow:0 2rpx 8rpx rgba(0,0,0,.04)}.category-section.data-v-b1056740:first-child{margin-top:0}.category-section.data-v-b1056740:last-child{margin-bottom:0}.category-header.data-v-b1056740{display:flex;align-items:center;padding:30rpx;background:#fff;border-bottom:1rpx solid #f0f0f0}.category-icon.data-v-b1056740{font-size:32rpx;margin-right:20rpx}.category-title.data-v-b1056740{font-size:32rpx;font-weight:500;color:#333}.function-grid.data-v-b1056740{display:flex;flex-wrap:wrap;padding:10rpx}.quick-links-section .function-item.data-v-b1056740{width:calc(20% - 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-b1056740{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-b1056740{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-b1056740{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-b1056740{flex-basis:100%;width:calc(50% - 10rpx);margin-top:10rpx}.function-item.data-v-b1056740:active{transform:scale(.95);box-shadow:0 1rpx 2rpx rgba(0,0,0,.1)}.function-icon.data-v-b1056740{font-size:48rpx;margin-bottom:12rpx}.function-name.data-v-b1056740{display:block;font-size:28rpx;font-weight:500;color:#333;margin-bottom:8rpx}.function-desc.data-v-b1056740{display:block;font-size:24rpx;color:#666;line-height:1.4}

View File

@@ -1,427 +0,0 @@
<template>
<view class="tabbar">
<view
v-for="item in visibleTabs"
:key="item.key"
class="tabbar-item"
:class="{ active: currentPath === item.pagePath }"
@click="switchTab(item)"
>
<image class="tabbar-icon" :src="currentPath === item.pagePath ? item.selectedIconPath : item.iconPath" />
<text class="tabbar-text">{{ item.text }}</text>
</view>
</view>
</template>
<script>
export default {
data() {
return {
roleName: '',
roles: [],
currentPath: '',
allTabs: [
{
key: 'furniture_reception',
text: '接待',
pagePath: '/pages/furniture_reception/furniture_reception',
iconPath: '/static/tabbar/reception.png',
selectedIconPath: '/static/tabbar/reception_active.png',
},
{
key: 'furniture_customer',
text: '客户',
pagePath: 'pages/furniture_customer/furniture_customer',
iconPath: '/static/tabbar/customer.png',
selectedIconPath: '/static/tabbar/customer_active.png',
},
{
key: 'furniture_top_sales',
text: '销冠',
pagePath: 'pages/furniture_top_sales/furniture_top_sales',
iconPath: '/static/tabbar/insight.png',
selectedIconPath: '/static/tabbar/insight_active.png',
},
{
key: 'ucenter',
text: '我的',
pagePath: 'pages/ucenter/ucenter',
iconPath: '/static/tabbar/me.png',
selectedIconPath: '/static/tabbar/me_active.png',
},
// 已从导航中移除,但保留代码
// {
// key: 'champion',
// text: '销冠',
// pagePath: '/pages/champion/champion',
// iconPath: '/static/tabbar/insight.png',
// selectedIconPath: '/static/tabbar/insight_active.png',
// },
// {
// key: 'workspace',
// text: '工作台',
// pagePath: '/pages/workspace/workspace',
// iconPath: '/static/tabbar/workspace.png',
// selectedIconPath: '/static/tabbar/workspace_active.png',
// },
{
key: 'ucenter',
text: '我的',
pagePath: '/pages/ucenter/ucenter',
iconPath: '/static/tabbar/me.png',
selectedIconPath: '/static/tabbar/me_active.png',
},
{
key: 'meeting_summary',
text: '总结和统计',
pagePath: '/pages-subpackage/meeting_summary/meeting_summary',
iconPath: '/static/tabbar/insight.png',
selectedIconPath: '/static/tabbar/insight_active.png',
},
],
};
},
computed: {
visibleTabs() {
const allowedKeys = this.getAllowedKeys();
console.log('[TabBar][visibleTabs] STEP1 - getAllowedKeys returned:', JSON.stringify(allowedKeys));
// 创建 key 到 tab 的映射
const tabMap = {};
this.allTabs.forEach(tab => {
tabMap[tab.key] = tab;
});
// 强制将 ucenter 移到最后一个位置:先收集所有非 ucenter 的 keys然后添加 ucenter
const otherKeys = [];
let hasUcenter = false;
allowedKeys.forEach(key => {
if (key !== 'ucenter') {
otherKeys.push(key);
} else {
hasUcenter = true;
}
});
console.log('[TabBar][visibleTabs] STEP2 - after filtering, otherKeys:', JSON.stringify(otherKeys), 'hasUcenter:', hasUcenter);
// 如果有 ucenter将其添加到最后一个位置
const finalKeys = hasUcenter ? [...otherKeys, 'ucenter'] : otherKeys;
console.log('[TabBar][visibleTabs] STEP3 - finalKeys after moving ucenter to end:', JSON.stringify(finalKeys));
// 按照排序后的 keys 顺序返回 tabs
const result = finalKeys
.filter(key => tabMap[key])
.map(key => tabMap[key]);
console.log('[TabBar][visibleTabs] STEP4 - final result keys:', result.map(t => t.key), 'texts:', result.map(t => t.text));
return result;
},
},
created() {
this.refreshRole();
this.updateActivePath();
},
mounted() {
// 监听外部刷新事件(登录后、页面切换时可触发)
uni.$on('tabbar:refresh', this.handleExternalRefresh);
// 初始化时同步一次
this.handleExternalRefresh();
// #ifdef H5
// H5平台额外延迟执行多次确保DOM已渲染
console.log('[TabBar][H5] Setting up delayed toggleNativeTabs');
setTimeout(() => {
console.log('[TabBar][H5] First delayed toggleNativeTabs');
this.toggleNativeTabs();
}, 500);
setTimeout(() => {
console.log('[TabBar][H5] Second delayed toggleNativeTabs');
this.toggleNativeTabs();
}, 1500);
setTimeout(() => {
console.log('[TabBar][H5] Third delayed toggleNativeTabs');
this.toggleNativeTabs();
}, 3000);
// #endif
},
beforeDestroy() {
uni.$off('tabbar:refresh', this.handleExternalRefresh);
},
methods: {
refreshRole() {
try {
// 角色来源优先级:单独存储的 roleName > 登录响应里的 roleName
const storedRole = uni.getStorageSync('backend-role-name') || '';
const loginResp = uni.getStorageSync('backend-login-response') || {};
const respRole = loginResp.roleName || '';
// 兼容后端返回大小写/空格/多角色逗号分隔的情况
const normalize = (val) =>
typeof val === 'string'
? val
.split(',')
.map((s) => s.trim().toLowerCase())
.filter(Boolean)
: [];
const roles = [
...normalize(storedRole),
...normalize(respRole),
];
// 角色判定
const hasEdu = roles.includes('speaking_training_teacher');
const hasStudent = roles.includes('speaking_training_students');
this.roles = roles;
this.roleName = hasEdu ? 'speaking_training_teacher' : hasStudent ? 'speaking_training_students' : (roles[0] || '');
console.log('[TabBar][role] storedRole:', storedRole, 'respRole:', respRole, 'normalized:', roles, 'hasEdu:', hasEdu, 'hasStudent:', hasStudent, 'finalRoleName:', this.roleName);
// #ifdef H5
// H5 平台自定义 tabBar 无法生效,仍使用原生 DOM这里额外做一次 DOM 显隐
console.log('[TabBar][H5] refreshRole completed, will call toggleNativeTabs');
// 注意不在refreshRole中直接调用而是在setupH5TabBar中处理
// #endif
} catch (e) {
console.warn('读取角色失败:', e);
}
},
updateActivePath() {
const pages = getCurrentPages();
const currentPage = pages[pages.length - 1];
// currentPage.route 不带前导斜杠
this.currentPath = currentPage && currentPage.route ? `/${currentPage.route}` : '';
},
switchTab(item) {
// 切换前刷新一次角色,防止角色变更后仍看到教务/作业等
this.refreshRole();
const allowedKeys = this.getAllowedKeys();
if (!allowedKeys.includes(item.key)) {
uni.showToast({ title: '当前账号无此模块权限', icon: 'none', duration: 1200 });
console.warn('[TabBar][block-switch]', 'key:', item.key, 'path:', item.pagePath, 'allowed:', allowedKeys, 'roles:', this.roles);
return;
}
if (this.currentPath === item.pagePath) return;
// uni.switchTab 需要相对路径(去掉前导斜杠)
const url = item.pagePath.startsWith('/') ? item.pagePath.substring(1) : item.pagePath;
uni.switchTab({
url: url,
success: () => {
console.log('[TabBar][switchTab] success:', url);
this.updateActivePath();
},
fail: (err) => {
console.error('[TabBar][switchTab] fail:', err, 'url:', url);
// 如果 switchTab 失败,尝试使用 reLaunch适用于 tabBar 页面)
uni.reLaunch({
url: url,
fail: (err2) => {
console.error('[TabBar][reLaunch] fail:', err2, 'url:', url);
uni.showToast({
title: '页面跳转失败,请检查页面配置',
icon: 'none',
duration: 2000
});
},
success: () => {
this.updateActivePath();
}
});
},
complete: () => {
// 延迟更新,确保页面切换完成
setTimeout(() => {
this.updateActivePath();
}, 100);
},
});
},
handleExternalRefresh() {
// 每次收到事件时重新读取角色并刷新选中态
this.refreshRole();
this.updateActivePath();
console.log('[TabBar][refresh] currentPath:', this.currentPath, 'roleName:', this.roleName, 'visibleKeys:', this.visibleTabs.map(t => t.key), 'roles:', this.roles);
},
getAllowedKeys() {
const roles = this.roles || [];
console.log('[TabBar][getAllowedKeys] current roles:', roles);
const isTeacher = roles.includes('speaking_training_teacher');
const isStudent = roles.includes('speaking_training_students');
const isAdmin = roles.includes('admin');
const isMeetingAdmin = roles.includes('meeting_admin');
const isAdminFurniture = roles.includes('admin_furniture');
// 会议相关的tab key列表
const meetingTabKeys = ['meeting_summary'];
// 已从导航中移除的tab key列表代码保留但不显示
const removedTabKeys = ['champion', 'workspace'];
// 检查是否有任何角色名等于 "furniture" 字符串(精确匹配)
const hasFurnitureRole = roles.includes('furniture');
console.log('[TabBar][getAllowedKeys] role checks:', {
isAdminFurniture,
hasFurnitureRole,
isAdmin,
isMeetingAdmin,
roles
});
// admin_furniture 和 furniture 角色:显示 furniture_reception, furniture_customer, furniture_top_sales 和 ucenter相同顺序
if (isAdminFurniture || hasFurnitureRole) {
const furnitureTabs = ['furniture_reception', 'furniture_customer', 'furniture_top_sales', 'ucenter'];
console.log('[TabBar][allowed] furniture/admin_furniture role ->', furnitureTabs, 'roles:', roles);
return furnitureTabs;
}
if (isMeetingAdmin) {
// meeting_admin 角色显示会议相关的tab和ucenter我的
const meetingAdminTabs = [...meetingTabKeys, 'ucenter'];
console.log('[TabBar][allowed] meeting_admin ->', meetingAdminTabs);
return meetingAdminTabs;
}
// 非 meeting_admin 角色排除所有会议相关的tab
if (isAdmin) {
// admin 角色显示所有tab包括 ucenter但排除会议相关的tab、家具相关的tab、以及reception和customer
const all = this.allTabs
.map((t) => t.key)
.filter((key) => !meetingTabKeys.includes(key) && !['furniture_reception', 'common_begin_reception', 'furniture_customer', 'furniture_top_sales', 'reception', 'customer', ...removedTabKeys].includes(key));
// 确保 ucenter 被包含(用于"我的"页面)
console.log('[TabBar][allowed] admin ->', all, 'includes ucenter:', all.includes('ucenter'));
return all;
}
if (isTeacher && !isAdmin) {
const teacherTabs = ['ucenter'];
console.log('[TabBar][allowed] teacher ->', teacherTabs);
return teacherTabs;
}
if (isStudent && !isAdmin) {
const studentTabs = ['ucenter'];
console.log('[TabBar][allowed] student ->', studentTabs);
return studentTabs;
}
// 其他角色:隐藏作业/教务/语音/表达同时排除会议相关的tab、家具相关的tab、以及reception和customer但确保包含ucenter
const otherTabs = this.allTabs
.map((t) => t.key)
.filter((key) => !['homework', 'edu', 'voice', 'expression', 'furniture_reception', 'common_begin_reception', 'furniture_customer', 'furniture_top_sales', 'reception', 'customer', ...meetingTabKeys, ...removedTabKeys].includes(key));
// 确保 ucenter 被包含(任何角色都应该能看到"我的"
if (!otherTabs.includes('ucenter')) {
otherTabs.push('ucenter');
}
console.log('[TabBar][allowed] other ->', otherTabs, 'roles:', roles);
return otherTabs;
},
// #ifdef H5
toggleNativeTabs() {
// H5 平台自定义 tabbar 不生效,直接根据角色显隐原生 tabbar 项
// 当前位置顺序(根据 pages.json 中的 tabBar.list 顺序):接待、客户、团队、总结和统计、家具接待、开始接待、家具客户、家具销冠、我的
const ORDER = ['furniture_reception', 'furniture_customer', 'furniture_top_sales', 'ucenter', 'reception', 'customer', 'team', 'meeting_summary', 'common_begin_reception'];
const allowed = this.getAllowedKeys();
// 限制重试次数,防止渲染时机未就绪
this._h5TabRetries = (this._h5TabRetries || 0) + 1;
try {
const items = document.querySelectorAll('.uni-tabbar .uni-tabbar__item');
if (!items || !items.length) {
// 原生 tabbar 可能尚未渲染,稍后重试一次
if (this._h5TabRetries <= 10) {
setTimeout(() => this.toggleNativeTabs(), 150);
} else {
console.warn('[TabBar][H5 DOM] retry limit reached, allowed:', allowed.join(','));
}
return;
}
ORDER.forEach((key, idx) => {
const node = items[idx];
if (!node) return;
node.style.display = allowed.includes(key) ? '' : 'none';
});
console.log('[TabBar][H5 DOM] allowed:', allowed.join(','), 'retries:', this._h5TabRetries);
this._h5TabRetries = 0;
} catch (e) {
console.warn('[TabBar][H5 DOM] toggle tabs failed:', e);
}
},
isInTabBar(pagePath) {
// 检查页面路径是否在原生tabBar配置中
const tabBarList = [
'pages/furniture_reception/furniture_reception',
'pages/furniture_customer/furniture_customer',
'pages/furniture_top_sales/furniture_top_sales',
'pages/ucenter/ucenter'
];
const normalizedPath = pagePath.startsWith('/') ? pagePath.substring(1) : pagePath;
const result = tabBarList.includes(normalizedPath);
console.log('[TabBar][isInTabBar]', { pagePath, normalizedPath, tabBarList, result });
return result;
},
setupH5TabBar() {
console.log('=== SETUP H5 TABBAR CALLED ===');
// 立即执行toggleNativeTabs
setTimeout(() => {
console.log('[TabBar] Executing toggleNativeTabs immediately');
this.toggleNativeTabs();
}, 100);
// 多次延迟执行
[500, 1000, 2000, 3000, 5000].forEach((delay, index) => {
setTimeout(() => {
console.log(`[TabBar] Delayed execution ${index + 1} after ${delay}ms`);
this.toggleNativeTabs();
}, delay);
});
},
// #endif
},
};
</script>
<style>
.tabbar {
position: fixed;
left: 0;
right: 0;
bottom: 0;
height: 52px;
background: #ffffff;
border-top: 1px solid #e5e7eb;
display: flex;
align-items: center;
justify-content: space-around;
padding-bottom: env(safe-area-inset-bottom);
}
.tabbar-item {
flex: 1;
height: 100%;
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
color: #7a7e83;
font-size: 12px;
}
.tabbar-item.active {
color: #007aff;
}
.tabbar-icon {
width: 24px;
height: 24px;
margin-bottom: 4px;
}
.tabbar-text {
line-height: 16px;
}
</style>

File diff suppressed because one or more lines are too long

View File

@@ -1 +1 @@
<view class="feature-page data-v-f8bba022"><view class="page-header data-v-f8bba022"><view class="nav-bar data-v-f8bba022"><view class="nav-left data-v-f8bba022" bindtap="{{a}}"><text class="back-icon data-v-f8bba022">←</text></view><text class="nav-title data-v-f8bba022">过度承诺统计</text></view></view><scroll-view class="content-scroll data-v-f8bba022" scroll-y="true"><view class="stats-card data-v-f8bba022"><view class="stat-item data-v-f8bba022"><text class="stat-value data-v-f8bba022">{{b}}%</text><text class="stat-label data-v-f8bba022">过度承诺率</text></view><view class="stat-item data-v-f8bba022"><text class="stat-value data-v-f8bba022">{{c}}</text><text class="stat-label data-v-f8bba022">违规事件数</text></view></view><view class="chart-section data-v-f8bba022"><text class="section-title data-v-f8bba022">过度承诺趋势图</text><view class="chart-placeholder data-v-f8bba022"><text class="placeholder-text data-v-f8bba022">⚠️ 图表区域</text><text class="placeholder-desc data-v-f8bba022">此处将显示过度承诺统计趋势图表</text></view></view><view class="data-list data-v-f8bba022"><text class="section-title data-v-f8bba022">违规记录</text><view wx:for="{{d}}" wx:for-item="item" wx:key="d" class="list-item data-v-f8bba022"><view class="item-left data-v-f8bba022"><text class="item-date data-v-f8bba022">{{item.a}}</text><text class="item-desc data-v-f8bba022">{{item.b}}</text></view><view class="item-right data-v-f8bba022"><text class="item-count data-v-f8bba022">{{item.c}}</text></view></view></view></scroll-view></view>
<view class="feature-page data-v-2cd6cb05"><view class="page-header data-v-2cd6cb05"><view class="nav-bar data-v-2cd6cb05"><view class="nav-left data-v-2cd6cb05" bindtap="{{a}}"><text class="back-icon data-v-2cd6cb05">←</text></view><text class="nav-title data-v-2cd6cb05">过度承诺统计</text></view></view><scroll-view class="content-scroll data-v-2cd6cb05" scroll-y="true" lower-threshold="100" bindscrolltolower="{{q}}"><view class="stats-card data-v-2cd6cb05"><view class="stat-item data-v-2cd6cb05"><text class="stat-value data-v-2cd6cb05">{{b}}</text><text class="stat-label data-v-2cd6cb05">过度承诺率</text></view><view class="stat-item data-v-2cd6cb05"><text class="stat-value data-v-2cd6cb05">{{c}}</text><text class="stat-label data-v-2cd6cb05">违规事件数</text></view></view><view class="chart-section data-v-2cd6cb05"><text class="section-title data-v-2cd6cb05">过度承诺趋势图</text><view class="chart-placeholder data-v-2cd6cb05"><text class="placeholder-text data-v-2cd6cb05">⚠️ 图表区域</text><text class="placeholder-desc data-v-2cd6cb05">此处将显示过度承诺统计趋势图表</text></view></view><view class="search-toolbar data-v-2cd6cb05"><input class="search-input data-v-2cd6cb05" placeholder="搜索触发原因关键词" placeholder-style="color: #b0b0b0" confirm-type="search" bindconfirm="{{d}}" value="{{e}}" bindinput="{{f}}"/><view class="toolbar-actions data-v-2cd6cb05"><view class="toolbar-btn data-v-2cd6cb05" bindtap="{{g}}"><text class="data-v-2cd6cb05">搜索</text></view><view class="toolbar-btn toolbar-btn--ghost data-v-2cd6cb05" bindtap="{{h}}"><text class="data-v-2cd6cb05">刷新</text></view></view></view><view class="data-list data-v-2cd6cb05"><view class="section-title-row data-v-2cd6cb05"><text class="section-title data-v-2cd6cb05">触及红线记录</text><text class="section-meta data-v-2cd6cb05">共 {{i}} 条</text></view><view wx:if="{{j}}" class="list-hint data-v-2cd6cb05">加载中…</view><view wx:elif="{{k}}" class="list-hint list-hint--error data-v-2cd6cb05">{{l}}</view><view wx:elif="{{m}}" class="list-hint data-v-2cd6cb05">暂无记录</view><view wx:for="{{n}}" wx:for-item="item" wx:key="o" class="list-item data-v-2cd6cb05"><view class="item-main data-v-2cd6cb05"><view class="item-row item-row--title data-v-2cd6cb05"><text class="item-name data-v-2cd6cb05">{{item.a}}</text><text class="item-time data-v-2cd6cb05">{{item.b}}</text></view><view wx:if="{{item.c}}" class="item-row data-v-2cd6cb05"><text class="item-label data-v-2cd6cb05">电话</text><text class="item-value data-v-2cd6cb05">{{item.d}}</text></view><view wx:if="{{item.e}}" class="item-row data-v-2cd6cb05"><text class="item-label data-v-2cd6cb05">类型</text><text class="item-value data-v-2cd6cb05">{{item.f}}</text></view><view wx:if="{{item.g}}" class="item-row data-v-2cd6cb05"><text class="item-label data-v-2cd6cb05">子类型</text><text class="item-value data-v-2cd6cb05">{{item.h}}</text></view><view wx:if="{{item.i}}" class="item-row data-v-2cd6cb05"><text class="item-label data-v-2cd6cb05">阈值</text><text class="item-value data-v-2cd6cb05">{{item.j}}</text></view><view wx:if="{{item.k}}" class="item-reason data-v-2cd6cb05"><text class="item-reason-label data-v-2cd6cb05">触发文本</text><text class="item-reason-text data-v-2cd6cb05">{{item.l}}</text></view><view wx:if="{{item.m}}" class="item-row data-v-2cd6cb05"><text class="item-label data-v-2cd6cb05">备注</text><text class="item-value item-value--muted data-v-2cd6cb05">{{item.n}}</text></view></view></view><view wx:if="{{o}}" class="list-footer data-v-2cd6cb05">加载中…</view><view wx:elif="{{p}}" class="list-footer data-v-2cd6cb05">没有更多了</view></view></scroll-view></view>

View File

@@ -1 +1 @@
.feature-page.data-v-f8bba022{min-height:100vh;background:#f8f9fa}.page-header.data-v-f8bba022{background:#fff;border-bottom:1rpx solid #e9ecef}.nav-bar.data-v-f8bba022{display:flex;align-items:center;height:88rpx;padding:0 30rpx}.nav-left.data-v-f8bba022{width:60rpx;height:60rpx;display:flex;align-items:center;justify-content:center;margin-right:20rpx}.back-icon.data-v-f8bba022{font-size:36rpx;color:#333}.nav-title.data-v-f8bba022{flex:1;text-align:center;font-size:32rpx;font-weight:700;color:#333}.content-scroll.data-v-f8bba022{height:calc(100vh - 88rpx)}.stats-card.data-v-f8bba022{display:flex;margin:20rpx 30rpx;background:#fff;border-radius:16rpx;padding:40rpx 30rpx;box-shadow:0 2rpx 8rpx rgba(0,0,0,.1)}.stat-item.data-v-f8bba022{flex:1;text-align:center}.stat-item.data-v-f8bba022:not(:last-child){border-right:1rpx solid #e9ecef}.stat-value.data-v-f8bba022{display:block;font-size:48rpx;font-weight:700;color:#ff6b6b;margin-bottom:10rpx}.stat-label.data-v-f8bba022{display:block;font-size:24rpx;color:#666}.chart-section.data-v-f8bba022,.data-list.data-v-f8bba022{margin:20rpx 30rpx;background:#fff;border-radius:16rpx;overflow:hidden;box-shadow:0 2rpx 8rpx rgba(0,0,0,.1)}.section-title.data-v-f8bba022{display:block;font-size:32rpx;font-weight:700;color:#333;padding:30rpx;border-bottom:1rpx solid #e9ecef}.chart-placeholder.data-v-f8bba022{padding:80rpx 30rpx;text-align:center}.placeholder-text.data-v-f8bba022{display:block;font-size:48rpx;margin-bottom:20rpx}.placeholder-desc.data-v-f8bba022{display:block;font-size:28rpx;color:#666}.list-item.data-v-f8bba022{display:flex;align-items:center;justify-content:space-between;padding:30rpx;border-bottom:1rpx solid #f0f0f0}.list-item.data-v-f8bba022:last-child{border-bottom:none}.item-left.data-v-f8bba022{flex:1}.item-date.data-v-f8bba022{display:block;font-size:28rpx;font-weight:700;color:#333;margin-bottom:8rpx}.item-desc.data-v-f8bba022{display:block;font-size:24rpx;color:#666}.item-right.data-v-f8bba022{text-align:right}.item-count.data-v-f8bba022{display:block;font-size:28rpx;font-weight:700;color:#ff6b6b}
.feature-page.data-v-2cd6cb05{min-height:100vh;background:#f8f9fa}.page-header.data-v-2cd6cb05{background:#fff;border-bottom:1rpx solid #e9ecef}.nav-bar.data-v-2cd6cb05{display:flex;align-items:center;height:88rpx;padding:0 30rpx}.nav-left.data-v-2cd6cb05{width:60rpx;height:60rpx;display:flex;align-items:center;justify-content:center;margin-right:20rpx}.back-icon.data-v-2cd6cb05{font-size:36rpx;color:#333}.nav-title.data-v-2cd6cb05{flex:1;text-align:center;font-size:32rpx;font-weight:700;color:#333}.content-scroll.data-v-2cd6cb05{height:calc(100vh - 88rpx)}.stats-card.data-v-2cd6cb05{display:flex;margin:20rpx 30rpx;background:#fff;border-radius:16rpx;padding:40rpx 30rpx;box-shadow:0 2rpx 8rpx rgba(0,0,0,.1)}.stat-item.data-v-2cd6cb05{flex:1;text-align:center}.stat-item.data-v-2cd6cb05:not(:last-child){border-right:1rpx solid #e9ecef}.stat-value.data-v-2cd6cb05{display:block;font-size:48rpx;font-weight:700;color:#ff6b6b;margin-bottom:10rpx}.stat-label.data-v-2cd6cb05{display:block;font-size:24rpx;color:#666}.chart-section.data-v-2cd6cb05,.data-list.data-v-2cd6cb05{margin:20rpx 30rpx;background:#fff;border-radius:16rpx;overflow:hidden;box-shadow:0 2rpx 8rpx rgba(0,0,0,.1)}.search-toolbar.data-v-2cd6cb05{display:flex;align-items:center;margin:0 30rpx 20rpx;padding:16rpx 20rpx;background:#fff;border-radius:16rpx;box-shadow:0 2rpx 8rpx rgba(0,0,0,.06);gap:16rpx}.search-input.data-v-2cd6cb05{flex:1;height:64rpx;padding:0 20rpx;font-size:26rpx;background:#f5f6f8;border-radius:12rpx}.toolbar-actions.data-v-2cd6cb05{display:flex;flex-shrink:0;gap:12rpx}.toolbar-btn.data-v-2cd6cb05{padding:12rpx 24rpx;font-size:26rpx;color:#2a68ff;background:#eef3ff;border-radius:12rpx}.toolbar-btn--ghost.data-v-2cd6cb05{color:#666;background:#f0f0f0}.section-title-row.data-v-2cd6cb05{display:flex;align-items:center;justify-content:space-between;padding:30rpx;border-bottom:1rpx solid #e9ecef}.section-title.data-v-2cd6cb05{font-size:32rpx;font-weight:700;color:#333}.section-meta.data-v-2cd6cb05{font-size:24rpx;color:#888}.chart-placeholder.data-v-2cd6cb05{padding:80rpx 30rpx;text-align:center}.placeholder-text.data-v-2cd6cb05{display:block;font-size:48rpx;margin-bottom:20rpx}.placeholder-desc.data-v-2cd6cb05{display:block;font-size:28rpx;color:#666}.list-item.data-v-2cd6cb05{padding:28rpx 30rpx;border-bottom:1rpx solid #f0f0f0}.list-item.data-v-2cd6cb05:last-child{border-bottom:none}.item-main.data-v-2cd6cb05{width:100%}.item-row.data-v-2cd6cb05{display:flex;align-items:flex-start;margin-top:10rpx;font-size:24rpx;color:#555}.item-row--title.data-v-2cd6cb05{margin-top:0;justify-content:space-between;align-items:center}.item-name.data-v-2cd6cb05{font-size:28rpx;font-weight:700;color:#333;flex:1;margin-right:16rpx}.item-time.data-v-2cd6cb05{font-size:22rpx;color:#999;flex-shrink:0}.item-label.data-v-2cd6cb05{width:120rpx;flex-shrink:0;color:#888}.item-value.data-v-2cd6cb05{flex:1;word-break:break-all}.item-value--muted.data-v-2cd6cb05{color:#777}.item-reason.data-v-2cd6cb05{margin-top:16rpx;padding:16rpx;background:#f8f9fb;border-radius:12rpx}.item-reason-label.data-v-2cd6cb05{display:block;font-size:22rpx;color:#888;margin-bottom:8rpx}.item-reason-text.data-v-2cd6cb05{font-size:26rpx;color:#333;line-height:1.5;word-break:break-all}.list-hint.data-v-2cd6cb05{padding:48rpx 30rpx;text-align:center;font-size:28rpx;color:#999}.list-hint--error.data-v-2cd6cb05{color:#ff6b6b}.list-footer.data-v-2cd6cb05{padding:24rpx;text-align:center;font-size:24rpx;color:#aaa}

File diff suppressed because one or more lines are too long

View File

@@ -1 +1 @@
<view class="service-list-container data-v-8ee8abb3"><view class="service-status-toolbar data-v-8ee8abb3"><text class="toolbar-total data-v-8ee8abb3">共{{a}}条</text><input class="toolbar-input data-v-8ee8abb3" placeholder="所属销售姓名" placeholder-style="color: #b0b0b0" confirm-type="search" bindconfirm="{{b}}" bindinput="{{c}}" value="{{d}}"/><input class="toolbar-input data-v-8ee8abb3" placeholder="客户姓名" placeholder-style="color: #b0b0b0" confirm-type="search" bindconfirm="{{e}}" bindinput="{{f}}" value="{{g}}"/><view class="toolbar-actions data-v-8ee8abb3"><view class="toolbar-btn toolbar-btn--refresh data-v-8ee8abb3" bindtap="{{i}}"><uni-icons wx:if="{{h}}" class="data-v-8ee8abb3" u-i="8ee8abb3-0" bind:__l="__l" u-p="{{h}}"></uni-icons><text class="data-v-8ee8abb3">刷新</text></view></view></view><scroll-view class="service-list data-v-8ee8abb3" scroll-y bindscrolltolower="{{l}}"><view wx:for="{{j}}" wx:for-item="item" wx:key="w" class="{{['service-item', 'data-v-8ee8abb3', item.x && 'service-item--active']}}" bindtap="{{item.y}}"><view class="service-header data-v-8ee8abb3"><text class="service-title data-v-8ee8abb3">{{item.a}}</text><view class="service-menu-button data-v-8ee8abb3" catchtap="{{item.c}}"><uni-icons wx:if="{{k}}" class="data-v-8ee8abb3" u-i="{{item.b}}" bind:__l="__l" u-p="{{k}}"></uni-icons></view></view><view class="service-meta data-v-8ee8abb3"><text class="service-date data-v-8ee8abb3">{{item.d}}</text><text wx:if="{{item.e}}" class="service-duration data-v-8ee8abb3"> 录音时长:{{item.f}} 分钟 </text><text wx:if="{{item.g}}" class="service-duration data-v-8ee8abb3"> 格式:{{item.h}}</text></view><view wx:if="{{item.i}}" class="service-recording-name data-v-8ee8abb3"><text class="recording-name-label data-v-8ee8abb3">记录名称:</text><text class="recording-name-value data-v-8ee8abb3">{{item.j}}</text></view><view wx:if="{{item.k}}" class="service-recording-text data-v-8ee8abb3"><text class="recording-text-label data-v-8ee8abb3">录音文本:</text><view class="recording-text-body data-v-8ee8abb3">{{item.l}}</view></view><view class="service-content data-v-8ee8abb3"><text class="service-desc data-v-8ee8abb3">{{item.m}}</text></view><view class="service-customer data-v-8ee8abb3"><view class="customer-avatar data-v-8ee8abb3"><text class="avatar-text data-v-8ee8abb3">{{item.n}}</text></view><text class="customer-name data-v-8ee8abb3">{{item.o}}</text></view><view wx:if="{{item.p}}" class="service-action-menu data-v-8ee8abb3" catchtap="{{item.v}}"><view class="service-action-menu-item service-action-menu-item--danger data-v-8ee8abb3" bindtap="{{item.q}}"><text class="data-v-8ee8abb3">删除</text></view><view class="service-action-menu-divider data-v-8ee8abb3"></view><view class="service-action-menu-item data-v-8ee8abb3" bindtap="{{item.r}}"><text class="data-v-8ee8abb3">查看</text></view><view class="service-action-menu-divider data-v-8ee8abb3"></view><view class="service-action-menu-item data-v-8ee8abb3" bindtap="{{item.s}}"><text class="data-v-8ee8abb3">AI分析</text></view><view class="service-action-menu-divider data-v-8ee8abb3"></view><view class="service-action-menu-item data-v-8ee8abb3" bindtap="{{item.t}}"><text class="data-v-8ee8abb3">录音</text></view></view></view></scroll-view><view wx:if="{{m}}" class="service-action-menu-mask data-v-8ee8abb3" bindtap="{{n}}"></view></view>
<view class="service-list-container data-v-b8138d32"><view class="service-status-toolbar data-v-b8138d32"><text class="toolbar-total data-v-b8138d32">共{{a}}条</text><input class="toolbar-input data-v-b8138d32" placeholder="所属销售姓名" placeholder-style="color: #b0b0b0" confirm-type="search" bindconfirm="{{b}}" bindinput="{{c}}" value="{{d}}"/><input class="toolbar-input data-v-b8138d32" placeholder="客户姓名" placeholder-style="color: #b0b0b0" confirm-type="search" bindconfirm="{{e}}" bindinput="{{f}}" value="{{g}}"/><view class="toolbar-actions data-v-b8138d32"><view class="toolbar-btn toolbar-btn--refresh data-v-b8138d32" bindtap="{{i}}"><uni-icons wx:if="{{h}}" class="data-v-b8138d32" u-i="b8138d32-0" bind:__l="__l" u-p="{{h}}"></uni-icons><text class="data-v-b8138d32">刷新</text></view></view></view><scroll-view class="service-list data-v-b8138d32" scroll-y bindscrolltolower="{{l}}"><view wx:for="{{j}}" wx:for-item="item" wx:key="w" class="{{['service-item', 'data-v-b8138d32', item.x && 'service-item--active']}}" bindtap="{{item.y}}"><view class="service-header data-v-b8138d32"><text class="service-title data-v-b8138d32">{{item.a}}</text><view class="service-menu-button data-v-b8138d32" catchtap="{{item.c}}"><uni-icons wx:if="{{k}}" class="data-v-b8138d32" u-i="{{item.b}}" bind:__l="__l" u-p="{{k}}"></uni-icons></view></view><view class="service-meta data-v-b8138d32"><text class="service-date data-v-b8138d32">{{item.d}}</text><text wx:if="{{item.e}}" class="service-duration data-v-b8138d32"> 录音时长:{{item.f}} 分钟 </text><text wx:if="{{item.g}}" class="service-duration data-v-b8138d32"> 格式:{{item.h}}</text></view><view wx:if="{{item.i}}" class="service-recording-name data-v-b8138d32"><text class="recording-name-label data-v-b8138d32">记录名称:</text><text class="recording-name-value data-v-b8138d32">{{item.j}}</text></view><view wx:if="{{item.k}}" class="service-recording-text data-v-b8138d32"><text class="recording-text-label data-v-b8138d32">录音文本:</text><view class="recording-text-body data-v-b8138d32">{{item.l}}</view></view><view class="service-content data-v-b8138d32"><text class="service-desc data-v-b8138d32">{{item.m}}</text></view><view class="service-customer data-v-b8138d32"><view class="customer-avatar data-v-b8138d32"><text class="avatar-text data-v-b8138d32">{{item.n}}</text></view><text class="customer-name data-v-b8138d32">{{item.o}}</text></view><view wx:if="{{item.p}}" class="service-action-menu data-v-b8138d32" catchtap="{{item.v}}"><view class="service-action-menu-divider data-v-b8138d32"></view><view class="service-action-menu-item data-v-b8138d32" bindtap="{{item.q}}"><text class="data-v-b8138d32">查看</text></view><view class="service-action-menu-divider data-v-b8138d32"></view><view class="service-action-menu-item data-v-b8138d32" bindtap="{{item.r}}"><text class="data-v-b8138d32">AI分析</text></view><view class="service-action-menu-divider data-v-b8138d32"></view><view class="service-action-menu-item data-v-b8138d32" bindtap="{{item.s}}"><text class="data-v-b8138d32">AI精提</text></view><view class="service-action-menu-divider data-v-b8138d32"></view><view class="service-action-menu-item data-v-b8138d32" bindtap="{{item.t}}"><text class="data-v-b8138d32">录音</text></view></view></view></scroll-view><view wx:if="{{m}}" class="service-action-menu-mask data-v-b8138d32" bindtap="{{n}}"></view></view>

View File

@@ -1 +1 @@
.service-list-container.data-v-8ee8abb3{position:absolute;top:0;left:0;right:0;bottom:96rpx;display:flex;flex-direction:column;background-color:#f5f5f5;padding:0 16rpx;box-sizing:border-box}.service-status-toolbar.data-v-8ee8abb3{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}.toolbar-total.data-v-8ee8abb3{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-8ee8abb3{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-8ee8abb3{display:flex;align-items:center;margin-left:auto;flex-shrink:0;gap:8rpx}.toolbar-btn.data-v-8ee8abb3{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}.toolbar-btn text.data-v-8ee8abb3{color:#2a68ff}.service-list.data-v-8ee8abb3{flex:1;background-color:transparent;box-sizing:border-box;overflow-y:auto}.service-item.data-v-8ee8abb3{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);position:relative}.service-header.data-v-8ee8abb3{display:flex;justify-content:space-between;align-items:center;margin-bottom:16rpx;position:relative}.service-title.data-v-8ee8abb3{font-size:32rpx;font-weight:500;color:#333}.service-menu-button.data-v-8ee8abb3{width:48rpx;height:48rpx;display:flex;align-items:center;justify-content:center;cursor:pointer}.service-action-menu.data-v-8ee8abb3{position:absolute;top:60rpx;right:32rpx;width:160rpx;background-color:#fff;border-radius:12rpx;box-shadow:0 4rpx 12rpx rgba(0,0,0,.15);z-index:100;overflow:hidden;margin-right:0}.service-action-menu-item.data-v-8ee8abb3{padding:24rpx 32rpx;font-size:28rpx;color:#333;text-align:center;background-color:#fff}.service-action-menu-item.data-v-8ee8abb3:active{background-color:#f5f5f5}.service-action-menu-item--danger.data-v-8ee8abb3{color:#ff5722}.service-action-menu-divider.data-v-8ee8abb3{height:1rpx;background-color:#e0e0e0;margin:0 16rpx}.service-action-menu-mask.data-v-8ee8abb3{position:fixed;top:0;left:0;right:0;bottom:0;background-color:transparent;z-index:99}.service-meta.data-v-8ee8abb3{display:flex;align-items:center;flex-wrap:wrap;margin-bottom:16rpx;gap:16rpx}.service-date.data-v-8ee8abb3,.service-duration.data-v-8ee8abb3{font-size:24rpx;color:#999}.service-recording-name.data-v-8ee8abb3{display:flex;align-items:center;margin-bottom:16rpx;font-size:24rpx;color:#666}.recording-name-label.data-v-8ee8abb3{color:#999;margin-right:8rpx}.recording-name-value.data-v-8ee8abb3{color:#333}.service-recording-text.data-v-8ee8abb3{margin-bottom:16rpx;font-size:24rpx}.recording-text-label.data-v-8ee8abb3{color:#999;display:block;margin-bottom:8rpx}.recording-text-body.data-v-8ee8abb3{color:#333;line-height:1.5;word-break:break-word;overflow:hidden;text-overflow:ellipsis;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2;line-clamp:2}.service-content.data-v-8ee8abb3{margin-bottom:24rpx}.service-desc.data-v-8ee8abb3{font-size:28rpx;color:#666;line-height:1.6}.service-customer.data-v-8ee8abb3{display:flex;align-items:center;margin-bottom:16rpx}.customer-avatar.data-v-8ee8abb3{width:64rpx;height:64rpx;background-color:#2196f3;border-radius:50%;display:flex;align-items:center;justify-content:center;margin-right:16rpx}.avatar-text.data-v-8ee8abb3{font-size:32rpx;color:#fff;font-weight:500}.customer-name.data-v-8ee8abb3{font-size:28rpx;color:#333}.ai-tag.data-v-8ee8abb3{padding-top:16rpx;border-top:1px solid #F0F0F0}.ai-tag text.data-v-8ee8abb3{font-size:24rpx;color:#999}
.service-list-container.data-v-b8138d32{position:absolute;top:0;left:0;right:0;bottom:96rpx;display:flex;flex-direction:column;background-color:#f5f5f5;padding:0 16rpx;box-sizing:border-box}.service-status-toolbar.data-v-b8138d32{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}.toolbar-total.data-v-b8138d32{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-b8138d32{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-b8138d32{display:flex;align-items:center;margin-left:auto;flex-shrink:0;gap:8rpx}.toolbar-btn.data-v-b8138d32{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}.toolbar-btn text.data-v-b8138d32{color:#2a68ff}.service-list.data-v-b8138d32{flex:1;background-color:transparent;box-sizing:border-box;overflow-y:auto}.service-item.data-v-b8138d32{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);position:relative}.service-header.data-v-b8138d32{display:flex;justify-content:space-between;align-items:center;margin-bottom:16rpx;position:relative}.service-title.data-v-b8138d32{font-size:32rpx;font-weight:500;color:#333}.service-menu-button.data-v-b8138d32{width:48rpx;height:48rpx;display:flex;align-items:center;justify-content:center;cursor:pointer}.service-action-menu.data-v-b8138d32{position:absolute;top:60rpx;right:32rpx;width:160rpx;background-color:#fff;border-radius:12rpx;box-shadow:0 4rpx 12rpx rgba(0,0,0,.15);z-index:100;overflow:hidden;margin-right:0}.service-action-menu-item.data-v-b8138d32{padding:24rpx 32rpx;font-size:28rpx;color:#333;text-align:center;background-color:#fff}.service-action-menu-item.data-v-b8138d32:active{background-color:#f5f5f5}.service-action-menu-item--danger.data-v-b8138d32{color:#ff5722}.service-action-menu-divider.data-v-b8138d32{height:1rpx;background-color:#e0e0e0;margin:0 16rpx}.service-action-menu-mask.data-v-b8138d32{position:fixed;top:0;left:0;right:0;bottom:0;background-color:transparent;z-index:99}.service-meta.data-v-b8138d32{display:flex;align-items:center;flex-wrap:wrap;margin-bottom:16rpx;gap:16rpx}.service-date.data-v-b8138d32,.service-duration.data-v-b8138d32{font-size:24rpx;color:#999}.service-recording-name.data-v-b8138d32{display:flex;align-items:center;margin-bottom:16rpx;font-size:24rpx;color:#666}.recording-name-label.data-v-b8138d32{color:#999;margin-right:8rpx}.recording-name-value.data-v-b8138d32{color:#333}.service-recording-text.data-v-b8138d32{margin-bottom:16rpx;font-size:24rpx}.recording-text-label.data-v-b8138d32{color:#999;display:block;margin-bottom:8rpx}.recording-text-body.data-v-b8138d32{color:#333;line-height:1.5;word-break:break-word;overflow:hidden;text-overflow:ellipsis;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2;line-clamp:2}.service-content.data-v-b8138d32{margin-bottom:24rpx}.service-desc.data-v-b8138d32{font-size:28rpx;color:#666;line-height:1.6}.service-customer.data-v-b8138d32{display:flex;align-items:center;margin-bottom:16rpx}.customer-avatar.data-v-b8138d32{width:64rpx;height:64rpx;background-color:#2196f3;border-radius:50%;display:flex;align-items:center;justify-content:center;margin-right:16rpx}.avatar-text.data-v-b8138d32{font-size:32rpx;color:#fff;font-weight:500}.customer-name.data-v-b8138d32{font-size:28rpx;color:#333}.ai-tag.data-v-b8138d32{padding-top:16rpx;border-top:1px solid #F0F0F0}.ai-tag text.data-v-b8138d32{font-size:24rpx;color:#999}

File diff suppressed because one or more lines are too long

View File

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

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1 @@
.page.data-v-5fa6a98c{height:100%;width:100%;display:flex;flex-direction:column;background-color:#f5f5f5;padding:0 16rpx;box-sizing:border-box}.toolbar.data-v-5fa6a98c{display:flex;flex-wrap:nowrap;align-items:center;gap:8rpx;padding:12rpx 8rpx;margin:16rpx 0 24rpx;background-color:#f8f8fa;border-radius:8rpx;border:1px solid #efeff2;overflow-x:auto;min-height:64rpx;box-sizing:border-box;flex-shrink:0}.toolbar-total.data-v-5fa6a98c{font-size:24rpx;color:#666;white-space:nowrap;flex-shrink:0;margin-right:8rpx}.toolbar-input.data-v-5fa6a98c{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}.toolbar-actions.data-v-5fa6a98c{display:flex;align-items:center;margin-left:auto;gap:8rpx;flex-shrink:0}.toolbar-btn.data-v-5fa6a98c{height:56rpx;min-width:56rpx;padding:0 12rpx;display:flex;align-items:center;justify-content:center;gap:4rpx;font-size:24rpx}.toolbar-btn--add.data-v-5fa6a98c{color:#16a34a}.toolbar-btn--refresh.data-v-5fa6a98c{color:#2a68ff}.list.data-v-5fa6a98c{flex:1;box-sizing:border-box}.card.data-v-5fa6a98c{width:100%;background-color:#fff;border-radius:16rpx;padding:28rpx;margin-bottom:20rpx;box-shadow:0 2rpx 8rpx rgba(0,0,0,.04);box-sizing:border-box}.card-header.data-v-5fa6a98c{display:flex;align-items:center;justify-content:space-between;margin-bottom:14rpx}.title-wrap.data-v-5fa6a98c{display:flex;align-items:center;gap:10rpx;min-width:0}.title.data-v-5fa6a98c{font-size:30rpx;color:#111827;font-weight:600;max-width:420rpx;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.status.data-v-5fa6a98c{font-size:22rpx;color:#2563eb;padding:4rpx 10rpx;border-radius:999rpx;background:#eaf2ff}.top-flag.data-v-5fa6a98c{font-size:22rpx;color:#b45309;background-color:#fff7ed;padding:4rpx 10rpx;border-radius:999rpx}.meta.data-v-5fa6a98c{display:flex;flex-wrap:wrap;gap:10rpx 16rpx;margin-bottom:12rpx}.meta text.data-v-5fa6a98c,.content-line.data-v-5fa6a98c,.time-line text.data-v-5fa6a98c{font-size:24rpx;color:#4b5563}.content-line.data-v-5fa6a98c{margin-bottom:10rpx;line-height:1.5}.time-line.data-v-5fa6a98c{display:flex;flex-wrap:wrap;gap:8rpx 16rpx;padding-top:12rpx;border-top:1px solid #f3f4f6}.actions.data-v-5fa6a98c{display:flex;justify-content:flex-end;gap:12rpx;margin-top:16rpx}.action-btn.data-v-5fa6a98c{font-size:24rpx;padding:8rpx 18rpx;border-radius:10rpx;border:1px solid transparent}.action-btn--edit.data-v-5fa6a98c{color:#2563eb;border-color:rgba(37,99,235,.3);background-color:#f0f6ff}.action-btn--delete.data-v-5fa6a98c{color:#dc2626;border-color:rgba(220,38,38,.28);background-color:#fff4f4}.empty.data-v-5fa6a98c,.loading-more.data-v-5fa6a98c{text-align:center;color:#999;font-size:28rpx;padding:40rpx 0}.dialog-mask.data-v-5fa6a98c{position:fixed;left:0;right:0;top:0;bottom:0;background-color:rgba(0,0,0,.5);display:flex;align-items:center;justify-content:center;z-index:1000}.dialog.data-v-5fa6a98c{width:660rpx;max-height:84vh;background-color:#fff;border-radius:24rpx;overflow:hidden;display:flex;flex-direction:column}.dialog-header.data-v-5fa6a98c{display:flex;align-items:center;justify-content:space-between;padding:30rpx 30rpx 20rpx;border-bottom:1px solid #f0f0f0}.dialog-title.data-v-5fa6a98c{font-size:32rpx;color:#111827;font-weight:500}.dialog-close.data-v-5fa6a98c{width:44rpx;height:44rpx;display:flex;align-items:center;justify-content:center}.dialog-body.data-v-5fa6a98c{flex:1;max-height:900rpx;padding:24rpx 30rpx;box-sizing:border-box}.form-item.data-v-5fa6a98c{margin-bottom:22rpx}.row-item.data-v-5fa6a98c{display:flex;align-items:center;justify-content:space-between}.form-label.data-v-5fa6a98c{display:block;font-size:26rpx;color:#374151;margin-bottom:10rpx}.form-input.data-v-5fa6a98c,.form-textarea.data-v-5fa6a98c{width:100%;background-color:#f9fafb;border-radius:10rpx;box-sizing:border-box;font-size:26rpx;color:#111827}.form-input.data-v-5fa6a98c{height:80rpx;padding:0 20rpx}.form-textarea.data-v-5fa6a98c{min-height:140rpx;padding:16rpx 20rpx;line-height:1.5}.dialog-footer.data-v-5fa6a98c{display:flex;gap:18rpx;padding:18rpx 30rpx 26rpx;border-top:1px solid #f0f0f0}.dialog-btn.data-v-5fa6a98c{flex:1;height:82rpx;border-radius:12rpx;display:flex;align-items:center;justify-content:center;font-size:30rpx;font-weight:500}.dialog-btn--cancel.data-v-5fa6a98c{background-color:#f3f4f6;color:#6b7280}.dialog-btn--confirm.data-v-5fa6a98c{background-color:#4c8dff;color:#fff}

File diff suppressed because one or more lines are too long

View File

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

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1 @@
.page.data-v-c3043ab5{height:100%;width:100%;display:flex;flex-direction:column;background-color:#f5f5f5;padding:0 16rpx;box-sizing:border-box}.toolbar.data-v-c3043ab5{display:flex;flex-wrap:nowrap;align-items:center;gap:8rpx;padding:12rpx 8rpx;margin:16rpx 0 24rpx;background-color:#f8f8fa;border-radius:8rpx;border:1px solid #efeff2;overflow-x:auto;min-height:64rpx;box-sizing:border-box;flex-shrink:0}.toolbar-total.data-v-c3043ab5{font-size:24rpx;color:#666;white-space:nowrap;flex-shrink:0;margin-right:8rpx}.toolbar-input.data-v-c3043ab5{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}.toolbar-actions.data-v-c3043ab5{display:flex;align-items:center;margin-left:auto;gap:8rpx;flex-shrink:0}.toolbar-btn.data-v-c3043ab5{height:56rpx;min-width:56rpx;padding:0 12rpx;display:flex;align-items:center;justify-content:center;gap:4rpx;font-size:24rpx}.toolbar-btn--add.data-v-c3043ab5{color:#16a34a}.toolbar-btn--refresh.data-v-c3043ab5{color:#2a68ff}.list.data-v-c3043ab5{flex:1;box-sizing:border-box}.card.data-v-c3043ab5{width:100%;background-color:#fff;border-radius:16rpx;padding:28rpx;margin-bottom:20rpx;box-shadow:0 2rpx 8rpx rgba(0,0,0,.04);box-sizing:border-box}.card-header.data-v-c3043ab5{display:flex;align-items:center;justify-content:space-between;margin-bottom:14rpx}.title-wrap.data-v-c3043ab5{display:flex;align-items:center;gap:10rpx;min-width:0}.title.data-v-c3043ab5{font-size:30rpx;color:#111827;font-weight:600;max-width:420rpx;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.status.data-v-c3043ab5{font-size:22rpx;color:#2563eb;padding:4rpx 10rpx;border-radius:999rpx;background:#eaf2ff}.top-flag.data-v-c3043ab5{font-size:22rpx;color:#b45309;background-color:#fff7ed;padding:4rpx 10rpx;border-radius:999rpx}.meta.data-v-c3043ab5{display:flex;flex-wrap:wrap;gap:10rpx 16rpx;margin-bottom:12rpx}.meta text.data-v-c3043ab5,.content-line.data-v-c3043ab5,.time-line text.data-v-c3043ab5{font-size:24rpx;color:#4b5563}.content-line.data-v-c3043ab5{margin-bottom:10rpx;line-height:1.5}.time-line.data-v-c3043ab5{display:flex;flex-wrap:wrap;gap:8rpx 16rpx;padding-top:12rpx;border-top:1px solid #f3f4f6}.actions.data-v-c3043ab5{display:flex;justify-content:flex-end;gap:12rpx;margin-top:16rpx}.action-btn.data-v-c3043ab5{font-size:24rpx;padding:8rpx 18rpx;border-radius:10rpx;border:1px solid transparent}.action-btn--edit.data-v-c3043ab5{color:#2563eb;border-color:rgba(37,99,235,.3);background-color:#f0f6ff}.action-btn--delete.data-v-c3043ab5{color:#dc2626;border-color:rgba(220,38,38,.28);background-color:#fff4f4}.empty.data-v-c3043ab5,.loading-more.data-v-c3043ab5{text-align:center;color:#999;font-size:28rpx;padding:40rpx 0}.dialog-mask.data-v-c3043ab5{position:fixed;left:0;right:0;top:0;bottom:0;background-color:rgba(0,0,0,.5);display:flex;align-items:center;justify-content:center;z-index:1000}.dialog.data-v-c3043ab5{width:660rpx;max-height:84vh;background-color:#fff;border-radius:24rpx;overflow:hidden;display:flex;flex-direction:column}.dialog-header.data-v-c3043ab5{display:flex;align-items:center;justify-content:space-between;padding:30rpx 30rpx 20rpx;border-bottom:1px solid #f0f0f0}.dialog-title.data-v-c3043ab5{font-size:32rpx;color:#111827;font-weight:500}.dialog-close.data-v-c3043ab5{width:44rpx;height:44rpx;display:flex;align-items:center;justify-content:center}.dialog-body.data-v-c3043ab5{flex:1;max-height:900rpx;padding:24rpx 30rpx;box-sizing:border-box}.form-item.data-v-c3043ab5{margin-bottom:22rpx}.row-item.data-v-c3043ab5{display:flex;align-items:center;justify-content:space-between}.form-label.data-v-c3043ab5{display:block;font-size:26rpx;color:#374151;margin-bottom:10rpx}.form-input.data-v-c3043ab5,.form-textarea.data-v-c3043ab5{width:100%;background-color:#f9fafb;border-radius:10rpx;box-sizing:border-box;font-size:26rpx;color:#111827}.form-input.data-v-c3043ab5{height:80rpx;padding:0 20rpx}.form-textarea.data-v-c3043ab5{min-height:140rpx;padding:16rpx 20rpx;line-height:1.5}.dialog-footer.data-v-c3043ab5{display:flex;gap:18rpx;padding:18rpx 30rpx 26rpx;border-top:1px solid #f0f0f0}.dialog-btn.data-v-c3043ab5{flex:1;height:82rpx;border-radius:12rpx;display:flex;align-items:center;justify-content:center;font-size:30rpx;font-weight:500}.dialog-btn--cancel.data-v-c3043ab5{background-color:#f3f4f6;color:#6b7280}.dialog-btn--confirm.data-v-c3043ab5{background-color:#4c8dff;color:#fff}

View File

@@ -1 +1 @@
"use strict";const t=require("../../common/vendor.js");function e(){if(void 0!==t.wx$1&&t.wx$1.getWindowInfo)try{const e=t.wx$1.getWindowInfo();return{statusBarHeight:e.statusBarHeight||20,windowWidth:e.windowWidth,windowHeight:e.windowHeight}}catch(e){console.warn("[AIAnalysis] Failed to use wx.getWindowInfo, fallback to getSystemInfoSync:",e)}try{const e=t.index.getSystemInfoSync();return{statusBarHeight:e.statusBarHeight||20,windowWidth:e.windowWidth,windowHeight:e.windowHeight}}catch(e){return console.error("[AIAnalysis] Failed to get system info:",e),{statusBarHeight:20,windowWidth:375,windowHeight:667}}}const o={components:{AiAnalysisDashboardBody:()=>"../../components/ai-analysis-dashboard-body.js"},data:()=>({contentTop:2*e().statusBarHeight+88+"rpx",contentBottom:"96rpx",subpackageLoaded:!1}),computed:{computedContentTop:()=>2*e().statusBarHeight+88+"rpx"},onLoad(){this.updateNavbarPosition(),setTimeout((()=>{this.preloadSubpackage()}),100)},onShow(){this.$nextTick((()=>{this.updateNavbarPosition(),setTimeout((()=>{this.updateNavbarPosition()}),50)}))},onReady(){this.$nextTick((()=>{t.index.createSelectorQuery().in(this).select(".uni-navbar__content").boundingClientRect((t=>{if(t&&t.height){const e=t.height,o=2*e,a=Math.max(o-4,0);this.$set(this,"contentTop",a+"rpx"),console.log("[AIAnalysis] 使用实际导航栏高度:",e,"px =",o,"rpx, 调整后:",a,"rpx")}else{const t=2*e().statusBarHeight+2*44,o=Math.max(t-4,0);this.$set(this,"contentTop",o+"rpx")}})).exec();t.index.createSelectorQuery().in(this).select(".tabbar").boundingClientRect((t=>{if(t&&t.height){const e=t.height,o=2*e,a=Math.max(o-4,0);this.$set(this,"contentBottom",a+"rpx"),console.log("[AIAnalysis] 使用实际tabbar高度:",e,"px =",o,"rpx, 调整后:",a,"rpx")}else this.$set(this,"contentBottom","96rpx")})).exec(),setTimeout((()=>{t.index.createSelectorQuery().in(this).select(".uni-navbar__content").boundingClientRect((t=>{if(t&&t.height){const e=t.height,o=2*e,a=Math.max(o-4,0);this.$set(this,"contentTop",a+"rpx"),console.log("[AIAnalysis] 延迟更新导航栏高度:",e,"px =",o,"rpx, 调整后:",a,"rpx")}})).exec();t.index.createSelectorQuery().in(this).select(".tabbar").boundingClientRect((t=>{if(t&&t.height){const e=t.height,o=2*e,a=Math.max(o-4,0);this.$set(this,"contentBottom",a+"rpx"),console.log("[AIAnalysis] 延迟更新tabbar高度:",e,"px =",o,"rpx, 调整后:",a,"rpx")}})).exec()}),200)}))},methods:{preloadSubpackage(){void 0!==t.wx$1&&t.wx$1.loadSubpackage?t.wx$1.loadSubpackage({name:"pages-subpackage",success:()=>{console.log("[AIAnalysis] Subpackage loaded successfully"),this.subpackageLoaded=!0},fail:t=>{console.error("[AIAnalysis] Failed to load subpackage:",t),this.subpackageLoaded=!0}}):(console.log("[AIAnalysis] loadSubpackage API not available, assuming subpackage will load automatically"),this.subpackageLoaded=!0)},updateNavbarPosition(){const t=2*e().statusBarHeight+88+"rpx";this.$set(this,"contentTop",t),this.$forceUpdate()},goBack(){getCurrentPages().length<=1?console.log("[AIAnalysis][goBack] 当前是第一个页面,无法返回"):t.index.navigateBack({fail:t=>{console.error("[AIAnalysis][goBack] 返回失败:",t)}})}}};if(!Array){(t.resolveComponent("uni-nav-bar")+t.resolveComponent("ai-analysis-dashboard-body"))()}Math;const a=t._export_sfc(o,[["render",function(e,o,a,n,s,i){return{a:t.o(i.goBack,"3a"),b:t.p({fixed:!0,statusBar:!0,title:"AI销冠系统",leftIcon:"left",color:"#333",backgroundColor:"#FFFFFF"}),c:t.p({"content-top":i.computedContentTop||s.contentTop,"content-bottom":s.contentBottom})}}],["__scopeId","data-v-eec594bd"]]);wx.createPage(a);
"use strict";const t=require("../../common/vendor.js");function e(){if(void 0!==t.wx$1&&t.wx$1.getWindowInfo)try{const e=t.wx$1.getWindowInfo();return{statusBarHeight:e.statusBarHeight||20,windowWidth:e.windowWidth,windowHeight:e.windowHeight}}catch(e){console.warn("[AIAnalysis] Failed to use wx.getWindowInfo, fallback to getSystemInfoSync:",e)}try{const e=t.index.getSystemInfoSync();return{statusBarHeight:e.statusBarHeight||20,windowWidth:e.windowWidth,windowHeight:e.windowHeight}}catch(e){return console.error("[AIAnalysis] Failed to get system info:",e),{statusBarHeight:20,windowWidth:375,windowHeight:667}}}const o={components:{SoftSalesScenario:()=>"../../components/soft_sales_scenario.js"},data:()=>({contentTop:2*e().statusBarHeight+88+"rpx",contentBottom:"96rpx",subpackageLoaded:!1}),computed:{computedContentTop:()=>2*e().statusBarHeight+88+"rpx"},onLoad(){this.updateNavbarPosition(),setTimeout((()=>{this.preloadSubpackage()}),100)},onShow(){this.$nextTick((()=>{this.updateNavbarPosition(),setTimeout((()=>{this.updateNavbarPosition()}),50)}))},onReady(){this.$nextTick((()=>{t.index.createSelectorQuery().in(this).select(".uni-navbar__content").boundingClientRect((t=>{if(t&&t.height){const e=t.height,o=2*e,a=Math.max(o-4,0);this.$set(this,"contentTop",a+"rpx"),console.log("[AIAnalysis] 使用实际导航栏高度:",e,"px =",o,"rpx, 调整后:",a,"rpx")}else{const t=2*e().statusBarHeight+2*44,o=Math.max(t-4,0);this.$set(this,"contentTop",o+"rpx")}})).exec();t.index.createSelectorQuery().in(this).select(".tabbar").boundingClientRect((t=>{if(t&&t.height){const e=t.height,o=2*e,a=Math.max(o-4,0);this.$set(this,"contentBottom",a+"rpx"),console.log("[AIAnalysis] 使用实际tabbar高度:",e,"px =",o,"rpx, 调整后:",a,"rpx")}else this.$set(this,"contentBottom","96rpx")})).exec(),setTimeout((()=>{t.index.createSelectorQuery().in(this).select(".uni-navbar__content").boundingClientRect((t=>{if(t&&t.height){const e=t.height,o=2*e,a=Math.max(o-4,0);this.$set(this,"contentTop",a+"rpx"),console.log("[AIAnalysis] 延迟更新导航栏高度:",e,"px =",o,"rpx, 调整后:",a,"rpx")}})).exec();t.index.createSelectorQuery().in(this).select(".tabbar").boundingClientRect((t=>{if(t&&t.height){const e=t.height,o=2*e,a=Math.max(o-4,0);this.$set(this,"contentBottom",a+"rpx"),console.log("[AIAnalysis] 延迟更新tabbar高度:",e,"px =",o,"rpx, 调整后:",a,"rpx")}})).exec()}),200)}))},methods:{preloadSubpackage(){void 0!==t.wx$1&&t.wx$1.loadSubpackage?t.wx$1.loadSubpackage({name:"pages-subpackage",success:()=>{console.log("[AIAnalysis] Subpackage loaded successfully"),this.subpackageLoaded=!0},fail:t=>{console.error("[AIAnalysis] Failed to load subpackage:",t),this.subpackageLoaded=!0}}):(console.log("[AIAnalysis] loadSubpackage API not available, assuming subpackage will load automatically"),this.subpackageLoaded=!0)},updateNavbarPosition(){const t=2*e().statusBarHeight+88+"rpx";this.$set(this,"contentTop",t),this.$forceUpdate()},goBack(){getCurrentPages().length<=1?console.log("[AIAnalysis][goBack] 当前是第一个页面,无法返回"):t.index.navigateBack({fail:t=>{console.error("[AIAnalysis][goBack] 返回失败:",t)}})}}};if(!Array){(t.resolveComponent("uni-nav-bar")+t.resolveComponent("soft-sales-scenario"))()}Math;const a=t._export_sfc(o,[["render",function(e,o,a,n,s,i){return{a:t.o(i.goBack,"3a"),b:t.p({fixed:!0,statusBar:!0,title:"AI销冠系统",leftIcon:"left",color:"#333",backgroundColor:"#FFFFFF"}),c:t.p({"content-top":i.computedContentTop||s.contentTop,"content-bottom":s.contentBottom})}}],["__scopeId","data-v-4e08e175"]]);wx.createPage(a);

View File

@@ -1,7 +1,7 @@
{
"navigationStyle": "custom",
"usingComponents": {
"ai-analysis-dashboard-body": "../../components/ai-analysis-dashboard-body",
"soft-sales-scenario": "../../components/soft_sales_scenario",
"uni-nav-bar": "../../uni_modules/uni-nav-bar/components/uni-nav-bar/uni-nav-bar"
}
}

View File

@@ -1 +1 @@
<view class="page data-v-eec594bd"><uni-nav-bar wx:if="{{b}}" class="data-v-eec594bd" bindclickLeft="{{a}}" u-i="eec594bd-0" bind:__l="__l" u-p="{{b}}"></uni-nav-bar><view class="content data-v-eec594bd"><ai-analysis-dashboard-body wx:if="{{c}}" class="data-v-eec594bd" u-i="eec594bd-1" bind:__l="__l" u-p="{{c}}"/></view></view>
<view class="page data-v-4e08e175"><uni-nav-bar wx:if="{{b}}" class="data-v-4e08e175" bindclickLeft="{{a}}" u-i="4e08e175-0" bind:__l="__l" u-p="{{b}}"></uni-nav-bar><view class="content data-v-4e08e175"><soft-sales-scenario wx:if="{{c}}" class="data-v-4e08e175" u-i="4e08e175-1" bind:__l="__l" u-p="{{c}}"/></view></view>

View File

@@ -1 +1 @@
page.data-v-eec594bd{background-color:#f5f5f5}.page.data-v-eec594bd{min-height:100vh;background-color:#f5f5f5}.content.data-v-eec594bd{padding-top:0!important;margin-top:0!important;position:relative;width:100%;min-height:calc(100vh - 200rpx);top:0}.data-v-eec594bd .uni-navbar__placeholder,.data-v-eec594bd .uni-navbar__placeholder-view,.data-v-eec594bd [class*=tabbar][class*=placeholder],.data-v-eec594bd [class*=safe-area][class*=bottom],.data-v-eec594bd [class*=bottom][class*=safe]{display:none!important;height:0!important}
page.data-v-4e08e175{background-color:#f5f5f5}.page.data-v-4e08e175{min-height:100vh;background-color:#f5f5f5}.content.data-v-4e08e175{padding-top:0!important;margin-top:0!important;position:relative;width:100%;min-height:calc(100vh - 200rpx);top:0}.data-v-4e08e175 .uni-navbar__placeholder,.data-v-4e08e175 .uni-navbar__placeholder-view,.data-v-4e08e175 [class*=tabbar][class*=placeholder],.data-v-4e08e175 [class*=safe-area][class*=bottom],.data-v-4e08e175 [class*=bottom][class*=safe]{display:none!important;height:0!important}

File diff suppressed because one or more lines are too long

View File

@@ -6,8 +6,6 @@
"cloud-image": "../../uni_modules/uni-id-pages/components/cloud-image/cloud-image",
"uni-sign-in": "../../uni_modules/uni-sign-in/components/uni-sign-in/uni-sign-in",
"uni-icons": "../../uni_modules/uni-icons/components/uni-icons/uni-icons",
"uni-grid-item": "../../uni_modules/uni-grid/components/uni-grid-item/uni-grid-item",
"uni-grid": "../../uni_modules/uni-grid/components/uni-grid/uni-grid",
"uni-list-item": "../../uni_modules/uni-list/components/uni-list-item/uni-list-item",
"uni-list": "../../uni_modules/uni-list/components/uni-list/uni-list",
"uni-easyinput": "../../uni_modules/uni-easyinput/components/uni-easyinput/uni-easyinput",

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"),o={name:"SalesScenarioNew",props:{contentTop:{type:String,default:"0rpx"},contentBottom:{type:String,default:"0rpx"}},methods:{goReceptionInProgressPage(o,t){let n="/pages-subpackage/furniture_reception/reception_in_progress";"reception"!==t&&"status"!==t&&"tag"!==t||(n+=`?tab=${encodeURIComponent(t)}`),e.index.navigateTo({url:n,fail:()=>{e.index.showToast({title:o||"页面打开失败",icon:"none"})}})},openReceptionInProgress(){this.goReceptionInProgressPage("跳转接待中失败")},openCustomerTab(o){const t=`/pages-subpackage/furniture_customer/furniture_customer?tab=${o}`;e.index.navigateTo({url:t})}}};const t=e._export_sfc(o,[["render",function(o,t,n,r,s,c){return{a:e.o((e=>c.goReceptionInProgressPage("跳转开始接待失败","reception")),"32"),b:e.o((e=>c.goReceptionInProgressPage("跳转服务中失败")),"17"),c:e.o((e=>c.goReceptionInProgressPage("跳转标签管理失败","tag")),"df"),d:e.o((e=>c.openCustomerTab("service")),"08"),e:e.o((e=>c.openCustomerTab("customer")),"f2"),f:n.contentTop,g:n.contentBottom}}],["__scopeId","data-v-077bc1c5"]]);wx.createComponent(t);
"use strict";const e=require("../../../common/vendor.js"),n={name:"SalesScenarioNew",props:{contentTop:{type:String,default:"0rpx"},contentBottom:{type:String,default:"0rpx"}},methods:{goReceptionInProgressPage(n,o){let t="/pages-subpackage/furniture_reception/reception_in_progress";"reception"!==o&&"status"!==o&&"tag"!==o||(t+=`?tab=${encodeURIComponent(o)}`),e.index.navigateTo({url:t,fail:()=>{e.index.showToast({title:n||"页面打开失败",icon:"none"})}})},openReceptionInProgress(){this.goReceptionInProgressPage("跳转接待中失败")},openCustomerTab(n){const o=`/pages-subpackage/furniture_customer/furniture_customer?tab=${n}`;e.index.navigateTo({url:o})},openScriptManagement(){e.index.navigateTo({url:"/pages-subpackage/furniture_reception/script_management_my",fail:()=>{e.index.showToast({title:"跳转话术管理失败",icon:"none"})}})},openSopManagement(){e.index.navigateTo({url:"/pages-subpackage/furniture_reception/sop_management_my",fail:()=>{e.index.showToast({title:"跳转SOP管理失败",icon:"none"})}})}}};const o=e._export_sfc(n,[["render",function(n,o,t,a,r,p){return{a:e.o((e=>p.goReceptionInProgressPage("跳转开始接待失败","reception")),"32"),b:e.o((e=>p.goReceptionInProgressPage("跳转标签管理失败","tag")),"59"),c:e.o(((...e)=>p.openScriptManagement&&p.openScriptManagement(...e)),"c2"),d:e.o(((...e)=>p.openSopManagement&&p.openSopManagement(...e)),"6b"),e:e.o((e=>p.openCustomerTab("service")),"dc"),f:e.o((e=>p.openCustomerTab("customer")),"d4"),g:t.contentTop,h:t.contentBottom}}],["__scopeId","data-v-409095ce"]]);wx.createComponent(o);

View File

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

View File

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

View File

@@ -0,0 +1 @@
"use strict";const e=require("../../../common/vendor.js"),o={name:"SmallBeautifulSales",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("[SmallBeautifulSales] 写入接待tab快捷跳转参数失败:",t)}e.index.navigateTo({url:`/pages-subpackage/furniture_reception/furniture_reception_entry?tab=${encodeURIComponent(o)}`,fail:o=>{console.error("[SmallBeautifulSales] 快捷跳转接待页失败:",o),e.index.showToast({title:"跳转失败,请稍后重试",icon:"none"})}})}},quickJumpReceptionInProgress(){e.index.navigateTo({url:"/pages-subpackage/furniture_reception/reception_in_progress",fail:o=>{console.error("[SmallBeautifulSales] 快捷跳转接待中页失败:",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("[SmallBeautifulSales] 快捷跳转客户页失败:",o),e.index.showToast({title:"跳转失败,请稍后重试",icon:"none"})}})},quickJumpScriptManagement(){e.index.navigateTo({url:"/pages-subpackage/furniture_reception/script_management_my",fail:o=>{console.error("[SmallBeautifulSales] 跳转话术管理页失败:",o),e.index.showToast({title:"跳转失败,请稍后重试",icon:"none"})}})},quickJumpSopManagement(){e.index.navigateTo({url:"/pages-subpackage/furniture_reception/sop_management_my",fail:o=>{console.error("[SmallBeautifulSales] 跳转SOP管理页失败:",o),e.index.showToast({title:"跳转失败,请稍后重试",icon:"none"})}})}}};if(!Array){e.resolveComponent("QualityCoveragePopup")()}const t=e._export_sfc(o,[["render",function(o,t,a,n,i,r){return e.e({a:e.o((e=>r.quickJumpReceptionTab("reception")),"8d"),b:e.o(((...e)=>r.quickJumpReceptionInProgress&&r.quickJumpReceptionInProgress(...e)),"ea"),c:e.o((e=>r.quickJumpReceptionTab("tag")),"78"),d:e.o(((...e)=>r.quickJumpScriptManagement&&r.quickJumpScriptManagement(...e)),"42"),e:e.o(((...e)=>r.quickJumpSopManagement&&r.quickJumpSopManagement(...e)),"f7"),f:e.o((e=>r.quickJumpCustomerTab("customer")),"58"),g:e.o((e=>r.quickJumpCustomerTab("service")),"f6"),h:e.o((e=>r.navigateToPage("recording_duration")),"66"),i:e.o((e=>r.navigateToPage("customer_count")),"88"),j:e.o(((...e)=>r.showQualityCoveragePopup&&r.showQualityCoveragePopup(...e)),"8d"),k:e.o((e=>r.navigateToPage("speech_rating")),"d6"),l:e.o((e=>r.navigateToPage("intent_level")),"96"),m:e.o((e=>r.navigateToPage("deal_attribution")),"4a"),n:e.o((e=>r.navigateToPage("opening_rate")),"6b"),o:e.o((e=>r.navigateToPage("over_commitment")),"32"),p:e.o((e=>r.navigateToPage("red_line_touch")),"5d"),q:r.scrollTop,r:r.scrollBottom,s:i.showQualityCoverage},i.showQualityCoverage?{t:e.o(r.onQualityCoveragePopupClose,"2c"),v:e.p({"open-trigger":i.openQualityCoverageTrigger})}:{})}],["__scopeId","data-v-f967f08c"]]);wx.createComponent(t);

View File

@@ -0,0 +1,4 @@
{
"component": true,
"usingComponents": {}
}

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1 @@
.small-beautiful-sales.data-v-f967f08c{position:relative;width:100%}.content.data-v-f967f08c{padding-top:0!important;margin-top:0!important;position:relative;top:0;min-height:calc(100vh - 200rpx)}.content-scroll.data-v-f967f08c{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-f967f08c{margin-top:0;padding-top:0;margin-bottom:0;padding-bottom:0}.category-section.data-v-f967f08c{margin:20rpx 30rpx;background:#fff;border-radius:16rpx;overflow:hidden;box-shadow:0 2rpx 8rpx rgba(0,0,0,.04)}.category-section.data-v-f967f08c:first-child{margin-top:0}.category-section.data-v-f967f08c:last-child{margin-bottom:0}.category-header.data-v-f967f08c{display:flex;align-items:center;padding:30rpx;background:#fff;border-bottom:1rpx solid #f0f0f0}.category-icon.data-v-f967f08c{font-size:32rpx;margin-right:20rpx}.category-title.data-v-f967f08c{font-size:32rpx;font-weight:500;color:#333}.function-grid.data-v-f967f08c{display:flex;flex-wrap:wrap;padding:10rpx}.quick-links-section .function-item.data-v-f967f08c{width:calc(20% - 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-f967f08c{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-f967f08c{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-f967f08c{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-f967f08c{flex-basis:100%;width:calc(50% - 10rpx);margin-top:10rpx}.function-item.data-v-f967f08c:active{transform:scale(.95);box-shadow:0 1rpx 2rpx rgba(0,0,0,.1)}.function-icon.data-v-f967f08c{font-size:48rpx;margin-bottom:12rpx}.function-name.data-v-f967f08c{display:block;font-size:28rpx;font-weight:500;color:#333;margin-bottom:8rpx}.function-desc.data-v-f967f08c{display:block;font-size:24rpx;color:#666;line-height:1.4}

View File

@@ -1 +1 @@
"use strict";const e=require("../../common/vendor.js");const o={components:{SalesScenarioNew:()=>"./components/sales_scenario_new.js",AiAnalysisDashboardBody:()=>"../../components/ai-analysis-dashboard-body.js"},data:()=>({contentTop:2*function(){try{return{statusBarHeight:e.index.getSystemInfoSync().statusBarHeight||20}}catch(o){return{statusBarHeight:20}}}().statusBarHeight+88+"rpx",contentBottom:"96rpx",isSalesScenario:!1,isSoftSalesScenario:!1}),onShow(){this.refreshScenario()},methods:{refreshScenario(){const o=(e.index.getStorageSync("backend-scenario")||"").toString().trim().toLowerCase();this.isSalesScenario="sales"===o,this.isSoftSalesScenario="soft_sales"===o}}};if(!Array){(e.resolveComponent("uni-nav-bar")+e.resolveComponent("sales-scenario-new")+e.resolveComponent("ai-analysis-dashboard-body"))()}Math;const t=e._export_sfc(o,[["render",function(o,t,n,s,a,r){return e.e({a:e.p({fixed:!0,statusBar:!0,border:!1,title:"工作台",color:"#333",backgroundColor:"#FFFFFF"}),b:a.isSalesScenario},a.isSalesScenario?{c:e.p({contentTop:a.contentTop,contentBottom:a.contentBottom})}:a.isSoftSalesScenario?{e:e.p({"content-top":a.contentTop,"content-bottom":a.contentBottom})}:{},{d:a.isSoftSalesScenario})}],["__scopeId","data-v-493fce2d"]]);wx.createPage(t);
"use strict";const e=require("../../common/vendor.js");const t={components:{SalesScenarioNew:()=>"./components/sales_scenario_new.js",SmallBeautifulSales:()=>"./components/small_beautiful_sales.js",SoftSalesScenario:()=>"../../components/soft_sales_scenario.js"},data:()=>({contentTop:2*function(){try{return{statusBarHeight:e.index.getSystemInfoSync().statusBarHeight||20}}catch(t){return{statusBarHeight:20}}}().statusBarHeight+88+"rpx",contentBottom:"96rpx",isSalesScenario:!1,isSoftSalesScenario:!1,isSmallBeautifulSalesScenario:!1}),onShow(){this.refreshScenario()},methods:{refreshScenario(){const t=(e.index.getStorageSync("backend-scenario")||"").toString().trim().toLowerCase();this.isSalesScenario="sales"===t,this.isSoftSalesScenario="soft_sales"===t,this.isSmallBeautifulSalesScenario="smallbeautiful_sales"===t}}};if(!Array){(e.resolveComponent("uni-nav-bar")+e.resolveComponent("sales-scenario-new")+e.resolveComponent("soft-sales-scenario")+e.resolveComponent("small-beautiful-sales"))()}Math;const o=e._export_sfc(t,[["render",function(t,o,s,n,a,r){return e.e({a:e.p({fixed:!0,statusBar:!0,border:!1,title:"工作台",color:"#333",backgroundColor:"#FFFFFF"}),b:a.isSalesScenario},a.isSalesScenario?{c:e.p({contentTop:a.contentTop,contentBottom:a.contentBottom})}:a.isSoftSalesScenario?{e:e.p({"content-top":a.contentTop,"content-bottom":a.contentBottom})}:a.isSmallBeautifulSalesScenario?{g:e.p({"content-top":a.contentTop,"content-bottom":a.contentBottom})}:{},{d:a.isSoftSalesScenario,f:a.isSmallBeautifulSalesScenario})}],["__scopeId","data-v-f15f23a3"]]);wx.createPage(o);

View File

@@ -2,7 +2,8 @@
"navigationStyle": "custom",
"usingComponents": {
"sales-scenario-new": "./components/sales_scenario_new",
"ai-analysis-dashboard-body": "../../components/ai-analysis-dashboard-body",
"small-beautiful-sales": "./components/small_beautiful_sales",
"soft-sales-scenario": "../../components/soft_sales_scenario",
"uni-nav-bar": "../../uni_modules/uni-nav-bar/components/uni-nav-bar/uni-nav-bar"
}
}

View File

@@ -1 +1 @@
<view class="page data-v-493fce2d"><uni-nav-bar wx:if="{{a}}" class="data-v-493fce2d" u-i="493fce2d-0" bind:__l="__l" u-p="{{a}}"/><view class="content data-v-493fce2d"><sales-scenario-new wx:if="{{b}}" class="data-v-493fce2d" u-i="493fce2d-1" bind:__l="__l" u-p="{{c}}"/><ai-analysis-dashboard-body wx:elif="{{d}}" class="data-v-493fce2d" u-i="493fce2d-2" bind:__l="__l" u-p="{{e}}"/><view wx:else class="redirecting-text data-v-493fce2d"><text class="data-v-493fce2d">当前未配置为销售或轻销场景backend-scenario 不是 sales / soft_sales工作台入口已隐藏。</text></view></view></view>
<view class="page data-v-f15f23a3"><uni-nav-bar wx:if="{{a}}" class="data-v-f15f23a3" u-i="f15f23a3-0" bind:__l="__l" u-p="{{a}}"/><view class="content data-v-f15f23a3"><sales-scenario-new wx:if="{{b}}" class="data-v-f15f23a3" u-i="f15f23a3-1" bind:__l="__l" u-p="{{c}}"/><soft-sales-scenario wx:elif="{{d}}" class="data-v-f15f23a3" u-i="f15f23a3-2" bind:__l="__l" u-p="{{e}}"/><small-beautiful-sales wx:elif="{{f}}" class="data-v-f15f23a3" u-i="f15f23a3-3" bind:__l="__l" u-p="{{g}}"/><view wx:else class="redirecting-text data-v-f15f23a3"><text class="data-v-f15f23a3">当前未配置为销售或轻销场景backend-scenario 不是 sales / soft_sales / smallBeautiful_sales),工作台入口已隐藏。</text></view></view></view>

View File

@@ -1 +1 @@
page.data-v-493fce2d{background-color:#f5f5f5}.page.data-v-493fce2d{min-height:100vh;background-color:#f5f5f5}.content.data-v-493fce2d{position:relative;width:100%;min-height:100vh;box-sizing:border-box}.redirecting-text.data-v-493fce2d{padding:40rpx 30rpx;color:#666;font-size:28rpx;text-align:center}
page.data-v-f15f23a3{background-color:#f5f5f5}.page.data-v-f15f23a3{min-height:100vh;background-color:#f5f5f5}.content.data-v-f15f23a3{position:relative;width:100%;min-height:100vh;box-sizing:border-box}.redirecting-text.data-v-f15f23a3{padding:40rpx 30rpx;color:#666;font-size:28rpx;text-align:center}