修改为弹出框

This commit is contained in:
zhonghua.li
2026-02-07 16:45:37 +08:00
parent 3498a9b9e3
commit 33950f41fd
29 changed files with 1116 additions and 639 deletions

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@@ -42,9 +42,7 @@ if (!Math) {
"./pages-subpackage/uni-agree/uni-agree.js";
"./pages-subpackage/ucenter/settings/settings.js";
"./pages-subpackage/ucenter/read-news-log/read-news-log.js";
"./pages-subpackage/ai_features/recording_duration/recording_duration.js";
"./pages-subpackage/ai_features/customer_count/customer_count.js";
"./pages-subpackage/ai_features/quality_coverage/quality_coverage.js";
"./pages-subpackage/ai_features/speech_rating/speech_rating.js";
"./pages-subpackage/ai_features/intent_level/intent_level.js";
"./pages-subpackage/ai_features/deal_attribution/deal_attribution.js";

View File

@@ -50,9 +50,7 @@
"uni-agree/uni-agree",
"ucenter/settings/settings",
"ucenter/read-news-log/read-news-log",
"ai_features/recording_duration/recording_duration",
"ai_features/customer_count/customer_count",
"ai_features/quality_coverage/quality_coverage",
"ai_features/speech_rating/speech_rating",
"ai_features/intent_level/intent_level",
"ai_features/deal_attribution/deal_attribution",

View File

@@ -36,6 +36,9 @@ const pages = [
path: "pages/ai_analysis/ai_analysis",
style: {
navigationStyle: "custom"
},
componentPlaceholder: {
RecordingDurationPopup: "pages-subpackage/ai_features/recording_duration/recording-duration-popup"
}
}
];
@@ -245,24 +248,12 @@ const subPackages = [
enablePullDownRefresh: true
}
},
{
path: "ai_features/recording_duration/recording_duration",
style: {
navigationStyle: "custom"
}
},
{
path: "ai_features/customer_count/customer_count",
style: {
navigationStyle: "custom"
}
},
{
path: "ai_features/quality_coverage/quality_coverage",
style: {
navigationStyle: "custom"
}
},
{
path: "ai_features/speech_rating/speech_rating",
style: {

View File

@@ -0,0 +1,63 @@
"use strict";
const common_vendor = require("../../../common/vendor.js");
const _sfc_main = {
name: "QualityCoveragePopup",
data() {
return {
coverageRate: "87.5",
todayCoverage: "92.3",
dataList: [
{ date: "2024-02-07", description: "今日质检覆盖率", rate: "92.3" },
{ date: "2024-02-06", description: "昨日质检覆盖率", rate: "89.1" },
{ date: "2024-02-05", description: "前日质检覆盖率", rate: "85.7" },
{ date: "2024-02-04", description: "工作日平均覆盖率", rate: "88.4" },
{ date: "2024-02-03", description: "周末覆盖率", rate: "91.2" }
]
};
},
methods: {
open() {
this.$refs.popup.open();
},
close() {
this.$refs.popup.close();
},
onPopupChange(e) {
if (!e.show) {
this.$emit("close");
}
}
}
};
if (!Array) {
const _easycom_uni_popup2 = common_vendor.resolveComponent("uni-popup");
_easycom_uni_popup2();
}
const _easycom_uni_popup = () => "../../../uni_modules/uni-popup/components/uni-popup/uni-popup.js";
if (!Math) {
_easycom_uni_popup();
}
function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
return {
a: common_vendor.o((...args) => $options.close && $options.close(...args)),
b: common_vendor.t($data.coverageRate),
c: common_vendor.t($data.todayCoverage),
d: common_vendor.f($data.dataList, (item, index, i0) => {
return {
a: common_vendor.t(item.date),
b: common_vendor.t(item.description),
c: common_vendor.t(item.rate),
d: index
};
}),
e: common_vendor.sr("popup", "220853f7-0"),
f: common_vendor.o($options.onPopupChange),
g: common_vendor.p({
type: "center",
["mask-click"]: true
})
};
}
const Component = /* @__PURE__ */ common_vendor._export_sfc(_sfc_main, [["render", _sfc_render], ["__scopeId", "data-v-220853f7"]]);
wx.createComponent(Component);
//# sourceMappingURL=../../../../.sourcemap/mp-weixin/pages-subpackage/ai_features/quality_coverage/quality-coverage-popup.js.map

View File

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

View File

@@ -0,0 +1 @@
<uni-popup wx:if="{{g}}" class="r data-v-220853f7" u-s="{{['d']}}" u-r="popup" bindchange="{{f}}" u-i="220853f7-0" bind:__l="__l" u-p="{{g}}"><view class="quality-coverage-popup data-v-220853f7"><view class="popup-header data-v-220853f7"><text class="popup-title data-v-220853f7">质检覆盖率统计</text><view class="popup-close data-v-220853f7" bindtap="{{a}}"><text class="close-icon data-v-220853f7">×</text></view></view><scroll-view class="popup-content data-v-220853f7" scroll-y="true"><view class="popup-stats-card data-v-220853f7"><view class="popup-stat-item data-v-220853f7"><text class="popup-stat-value data-v-220853f7">{{b}}%</text><text class="popup-stat-label data-v-220853f7">总体覆盖率</text></view><view class="popup-stat-item data-v-220853f7"><text class="popup-stat-value data-v-220853f7">{{c}}%</text><text class="popup-stat-label data-v-220853f7">今日覆盖率</text></view></view><view class="popup-chart-section data-v-220853f7"><text class="popup-section-title data-v-220853f7">覆盖率趋势图</text><view class="popup-chart-placeholder data-v-220853f7"><text class="popup-placeholder-text data-v-220853f7">📊 图表区域</text><text class="popup-placeholder-desc data-v-220853f7">此处将显示质检覆盖率趋势图表</text></view></view><view class="popup-data-list data-v-220853f7"><text class="popup-section-title data-v-220853f7">详细数据</text><view wx:for="{{d}}" wx:for-item="item" wx:key="d" class="popup-list-item data-v-220853f7"><view class="popup-item-left data-v-220853f7"><text class="popup-item-date data-v-220853f7">{{item.a}}</text><text class="popup-item-desc data-v-220853f7">{{item.b}}</text></view><view class="popup-item-right data-v-220853f7"><text class="popup-item-rate data-v-220853f7">{{item.c}}%</text></view></view></view></scroll-view></view></uni-popup>

View File

@@ -0,0 +1,148 @@
.quality-coverage-popup.data-v-220853f7 {
width: 680rpx;
max-height: 80vh;
background-color: #FFFFFF;
border-radius: 16rpx;
display: flex;
flex-direction: column;
box-shadow: 0 8rpx 32rpx rgba(0, 0, 0, 0.2);
overflow: hidden;
position: relative;
}
.popup-header.data-v-220853f7 {
display: flex;
align-items: center;
justify-content: space-between;
padding: 6rpx 32rpx;
border-bottom: 1rpx solid #E0E0E0;
flex-shrink: 0;
background-color: #FFFFFF;
box-sizing: border-box;
}
.popup-title.data-v-220853f7 {
font-size: 24rpx;
font-weight: 500;
color: #333;
}
.popup-close.data-v-220853f7 {
width: 40rpx;
height: 40rpx;
min-width: 40rpx;
min-height: 40rpx;
display: flex;
align-items: center;
justify-content: center;
cursor: pointer;
flex-shrink: 0;
background-color: rgba(0, 0, 0, 0.05);
border-radius: 50%;
transition: background-color 0.2s;
}
.popup-close.data-v-220853f7:active {
background-color: rgba(0, 0, 0, 0.1);
}
.close-icon.data-v-220853f7 {
font-size: 32rpx;
color: #333;
line-height: 1;
display: block;
}
.popup-content.data-v-220853f7 {
flex: 1;
min-height: 0;
overflow-y: auto;
max-height: calc(80vh - 52rpx);
}
.popup-stats-card.data-v-220853f7 {
display: flex;
margin: 20rpx 30rpx;
background: #f8f9fa;
border-radius: 16rpx;
padding: 40rpx 30rpx;
}
.popup-stat-item.data-v-220853f7 {
flex: 1;
text-align: center;
}
.popup-stat-item.data-v-220853f7:not(:last-child) {
border-right: 1rpx solid #e9ecef;
}
.popup-stat-value.data-v-220853f7 {
display: block;
font-size: 48rpx;
font-weight: bold;
color: #007aff;
margin-bottom: 10rpx;
}
.popup-stat-label.data-v-220853f7 {
display: block;
font-size: 24rpx;
color: #666666;
}
.popup-chart-section.data-v-220853f7,
.popup-data-list.data-v-220853f7 {
margin: 20rpx 30rpx;
background: #f8f9fa;
border-radius: 16rpx;
overflow: hidden;
}
.popup-section-title.data-v-220853f7 {
display: block;
font-size: 32rpx;
font-weight: bold;
color: #333333;
padding: 30rpx;
border-bottom: 1rpx solid #e9ecef;
background: #ffffff;
}
.popup-chart-placeholder.data-v-220853f7 {
padding: 80rpx 30rpx;
text-align: center;
background: #ffffff;
}
.popup-placeholder-text.data-v-220853f7 {
display: block;
font-size: 48rpx;
margin-bottom: 20rpx;
}
.popup-placeholder-desc.data-v-220853f7 {
display: block;
font-size: 28rpx;
color: #666666;
}
.popup-list-item.data-v-220853f7 {
display: flex;
align-items: center;
justify-content: space-between;
padding: 30rpx;
border-bottom: 1rpx solid #f0f0f0;
background: #ffffff;
}
.popup-list-item.data-v-220853f7:last-child {
border-bottom: none;
}
.popup-item-left.data-v-220853f7 {
flex: 1;
}
.popup-item-date.data-v-220853f7 {
display: block;
font-size: 28rpx;
font-weight: bold;
color: #333333;
margin-bottom: 8rpx;
}
.popup-item-desc.data-v-220853f7 {
display: block;
font-size: 24rpx;
color: #666666;
}
.popup-item-right.data-v-220853f7 {
text-align: right;
}
.popup-item-rate.data-v-220853f7 {
display: block;
font-size: 28rpx;
font-weight: bold;
color: #007aff;
}

View File

@@ -1,6 +1,7 @@
"use strict";
const common_vendor = require("../../../common/vendor.js");
const _sfc_main = {
name: "RecordingDurationPopup",
data() {
return {
totalDuration: "125.5 小时",
@@ -15,14 +16,30 @@ const _sfc_main = {
};
},
methods: {
goBack() {
common_vendor.index.navigateBack();
open() {
this.$refs.popup.open();
},
close() {
this.$refs.popup.close();
},
onPopupChange(e) {
if (!e.show) {
this.$emit("close");
}
}
}
};
if (!Array) {
const _easycom_uni_popup2 = common_vendor.resolveComponent("uni-popup");
_easycom_uni_popup2();
}
const _easycom_uni_popup = () => "../../../uni_modules/uni-popup/components/uni-popup/uni-popup.js";
if (!Math) {
_easycom_uni_popup();
}
function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
return {
a: common_vendor.o((...args) => $options.goBack && $options.goBack(...args)),
a: common_vendor.o((...args) => $options.close && $options.close(...args)),
b: common_vendor.t($data.totalDuration),
c: common_vendor.t($data.todayDuration),
d: common_vendor.f($data.dataList, (item, index, i0) => {
@@ -32,9 +49,15 @@ function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
c: common_vendor.t(item.duration),
d: index
};
}),
e: common_vendor.sr("popup", "d9e635c3-0"),
f: common_vendor.o($options.onPopupChange),
g: common_vendor.p({
type: "top",
["mask-click"]: true
})
};
}
const MiniProgramPage = /* @__PURE__ */ common_vendor._export_sfc(_sfc_main, [["render", _sfc_render], ["__scopeId", "data-v-582d7c51"]]);
wx.createPage(MiniProgramPage);
//# sourceMappingURL=../../../../.sourcemap/mp-weixin/pages-subpackage/ai_features/recording_duration/recording_duration.js.map
const Component = /* @__PURE__ */ common_vendor._export_sfc(_sfc_main, [["render", _sfc_render], ["__scopeId", "data-v-d9e635c3"]]);
wx.createComponent(Component);
//# sourceMappingURL=../../../../.sourcemap/mp-weixin/pages-subpackage/ai_features/recording_duration/recording-duration-popup.js.map

View File

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

View File

@@ -0,0 +1 @@
<uni-popup wx:if="{{g}}" class="r data-v-d9e635c3" u-s="{{['d']}}" u-r="popup" bindchange="{{f}}" u-i="d9e635c3-0" bind:__l="__l" u-p="{{g}}"><view class="recording-duration-popup data-v-d9e635c3"><view class="popup-header data-v-d9e635c3"><text class="popup-title data-v-d9e635c3">录音时长统计</text><view class="popup-close data-v-d9e635c3" bindtap="{{a}}"><text class="close-icon data-v-d9e635c3">×</text></view></view><scroll-view class="popup-content data-v-d9e635c3" scroll-y="true"><view class="popup-stats-card data-v-d9e635c3"><view class="popup-stat-item data-v-d9e635c3"><text class="popup-stat-value data-v-d9e635c3">{{b}}</text><text class="popup-stat-label data-v-d9e635c3">总录音时长</text></view><view class="popup-stat-item data-v-d9e635c3"><text class="popup-stat-value data-v-d9e635c3">{{c}}</text><text class="popup-stat-label data-v-d9e635c3">今日录音时长</text></view></view><view class="popup-chart-section data-v-d9e635c3"><text class="popup-section-title data-v-d9e635c3">时长趋势图</text><view class="popup-chart-placeholder data-v-d9e635c3"><text class="popup-placeholder-text data-v-d9e635c3">📊 图表区域</text><text class="popup-placeholder-desc data-v-d9e635c3">此处将显示录音时长趋势图表</text></view></view><view class="popup-data-list data-v-d9e635c3"><text class="popup-section-title data-v-d9e635c3">详细数据</text><view wx:for="{{d}}" wx:for-item="item" wx:key="d" class="popup-list-item data-v-d9e635c3"><view class="popup-item-left data-v-d9e635c3"><text class="popup-item-date data-v-d9e635c3">{{item.a}}</text><text class="popup-item-desc data-v-d9e635c3">{{item.b}}</text></view><view class="popup-item-right data-v-d9e635c3"><text class="popup-item-duration data-v-d9e635c3">{{item.c}}</text></view></view></view></scroll-view></view></uni-popup>

View File

@@ -0,0 +1,167 @@
/* 确保弹出框在导航栏之上 */
.data-v-d9e635c3 .uni-popup.top {
z-index: 9999 !important;
}
/* 确保弹出框 wrapper 正确显示 */
.data-v-d9e635c3 .uni-popup.top .uni-popup__wrapper {
overflow: visible !important;
position: relative !important;
}
.recording-duration-popup.data-v-d9e635c3 {
background-color: #FFFFFF;
border-radius: 16rpx;
display: flex;
flex-direction: column;
box-shadow: 0 8rpx 32rpx rgba(0, 0, 0, 0.2);
overflow: hidden;
position: relative;
}
.popup-header.data-v-d9e635c3 {
display: flex;
align-items: center;
justify-content: space-between;
padding: 32rpx;
border-bottom: 1rpx solid #E0E0E0;
flex-shrink: 0;
background-color: #FFFFFF;
box-sizing: border-box;
min-height: 112rpx;
position: relative;
z-index: 10;
overflow: visible;
width: 100%;
}
.popup-title.data-v-d9e635c3 {
font-size: 32rpx;
font-weight: 500;
color: #333;
}
.popup-close.data-v-d9e635c3 {
width: 64rpx;
height: 64rpx;
min-width: 64rpx;
min-height: 64rpx;
display: flex !important;
align-items: center;
justify-content: center;
cursor: pointer;
flex-shrink: 0;
background-color: rgba(0, 0, 0, 0.05);
border-radius: 50%;
transition: background-color 0.2s;
position: relative;
z-index: 20;
overflow: visible;
visibility: visible !important;
opacity: 1 !important;
}
.popup-close.data-v-d9e635c3:active {
background-color: rgba(0, 0, 0, 0.05);
}
.close-icon.data-v-d9e635c3 {
font-size: 48rpx;
color: #333;
line-height: 1;
display: block !important;
visibility: visible !important;
opacity: 1 !important;
}
.popup-content.data-v-d9e635c3 {
flex: 1;
min-height: 0;
overflow-y: auto;
}
.popup-stats-card.data-v-d9e635c3 {
display: flex;
margin: 20rpx 30rpx;
background: #f8f9fa;
border-radius: 16rpx;
padding: 40rpx 30rpx;
}
.popup-stat-item.data-v-d9e635c3 {
flex: 1;
text-align: center;
}
.popup-stat-item.data-v-d9e635c3:not(:last-child) {
border-right: 1rpx solid #e9ecef;
}
.popup-stat-value.data-v-d9e635c3 {
display: block;
font-size: 48rpx;
font-weight: bold;
color: #007aff;
margin-bottom: 10rpx;
}
.popup-stat-label.data-v-d9e635c3 {
display: block;
font-size: 24rpx;
color: #666666;
}
.popup-chart-section.data-v-d9e635c3,
.popup-data-list.data-v-d9e635c3 {
margin: 20rpx 30rpx;
background: #f8f9fa;
border-radius: 16rpx;
overflow: hidden;
}
.popup-section-title.data-v-d9e635c3 {
display: block;
font-size: 32rpx;
font-weight: bold;
color: #333333;
padding: 30rpx;
border-bottom: 1rpx solid #e9ecef;
background: #ffffff;
}
.popup-chart-placeholder.data-v-d9e635c3 {
padding: 80rpx 30rpx;
text-align: center;
background: #ffffff;
}
.popup-placeholder-text.data-v-d9e635c3 {
display: block;
font-size: 48rpx;
margin-bottom: 20rpx;
}
.popup-placeholder-desc.data-v-d9e635c3 {
display: block;
font-size: 28rpx;
color: #666666;
}
.popup-list-item.data-v-d9e635c3 {
display: flex;
align-items: center;
justify-content: space-between;
padding: 30rpx;
border-bottom: 1rpx solid #f0f0f0;
background: #ffffff;
}
.popup-list-item.data-v-d9e635c3:last-child {
border-bottom: none;
}
.popup-item-left.data-v-d9e635c3 {
flex: 1;
}
.popup-item-date.data-v-d9e635c3 {
display: block;
font-size: 28rpx;
font-weight: bold;
color: #333333;
margin-bottom: 8rpx;
}
.popup-item-desc.data-v-d9e635c3 {
display: block;
font-size: 24rpx;
color: #666666;
}
.popup-item-right.data-v-d9e635c3 {
text-align: right;
}
.popup-item-duration.data-v-d9e635c3 {
display: block;
font-size: 28rpx;
font-weight: bold;
color: #007aff;
}

View File

@@ -1,4 +0,0 @@
{
"navigationStyle": "custom",
"usingComponents": {}
}

View File

@@ -1 +0,0 @@
<view class="feature-page data-v-582d7c51"><view class="page-header data-v-582d7c51"><view class="nav-bar data-v-582d7c51"><view class="nav-left data-v-582d7c51" bindtap="{{a}}"><text class="back-icon data-v-582d7c51">←</text></view><text class="nav-title data-v-582d7c51">录音时长统计</text></view></view><scroll-view class="content-scroll data-v-582d7c51" scroll-y="true"><view class="stats-card data-v-582d7c51"><view class="stat-item data-v-582d7c51"><text class="stat-value data-v-582d7c51">{{b}}</text><text class="stat-label data-v-582d7c51">总录音时长</text></view><view class="stat-item data-v-582d7c51"><text class="stat-value data-v-582d7c51">{{c}}</text><text class="stat-label data-v-582d7c51">今日录音时长</text></view></view><view class="chart-section data-v-582d7c51"><text class="section-title data-v-582d7c51">时长趋势图</text><view class="chart-placeholder data-v-582d7c51"><text class="placeholder-text data-v-582d7c51">📊 图表区域</text><text class="placeholder-desc data-v-582d7c51">此处将显示录音时长趋势图表</text></view></view><view class="data-list data-v-582d7c51"><text class="section-title data-v-582d7c51">详细数据</text><view wx:for="{{d}}" wx:for-item="item" wx:key="d" class="list-item data-v-582d7c51"><view class="item-left data-v-582d7c51"><text class="item-date data-v-582d7c51">{{item.a}}</text><text class="item-desc data-v-582d7c51">{{item.b}}</text></view><view class="item-right data-v-582d7c51"><text class="item-duration data-v-582d7c51">{{item.c}}</text></view></view></view></scroll-view></view>

View File

@@ -1,127 +0,0 @@
.feature-page.data-v-582d7c51 {
min-height: 100vh;
background: #f8f9fa;
}
.page-header.data-v-582d7c51 {
background: #ffffff;
border-bottom: 1rpx solid #e9ecef;
}
.nav-bar.data-v-582d7c51 {
display: flex;
align-items: center;
height: 88rpx;
padding: 0 30rpx;
}
.nav-left.data-v-582d7c51 {
width: 60rpx;
height: 60rpx;
display: flex;
align-items: center;
justify-content: center;
margin-right: 20rpx;
}
.back-icon.data-v-582d7c51 {
font-size: 36rpx;
color: #333333;
}
.nav-title.data-v-582d7c51 {
flex: 1;
text-align: center;
font-size: 32rpx;
font-weight: bold;
color: #333333;
}
.content-scroll.data-v-582d7c51 {
height: calc(100vh - 88rpx);
}
.stats-card.data-v-582d7c51 {
display: flex;
margin: 20rpx 30rpx;
background: #ffffff;
border-radius: 16rpx;
padding: 40rpx 30rpx;
box-shadow: 0 2rpx 8rpx rgba(0, 0, 0, 0.1);
}
.stat-item.data-v-582d7c51 {
flex: 1;
text-align: center;
}
.stat-item.data-v-582d7c51:not(:last-child) {
border-right: 1rpx solid #e9ecef;
}
.stat-value.data-v-582d7c51 {
display: block;
font-size: 48rpx;
font-weight: bold;
color: #007aff;
margin-bottom: 10rpx;
}
.stat-label.data-v-582d7c51 {
display: block;
font-size: 24rpx;
color: #666666;
}
.chart-section.data-v-582d7c51, .data-list.data-v-582d7c51 {
margin: 20rpx 30rpx;
background: #ffffff;
border-radius: 16rpx;
overflow: hidden;
box-shadow: 0 2rpx 8rpx rgba(0, 0, 0, 0.1);
}
.section-title.data-v-582d7c51 {
display: block;
font-size: 32rpx;
font-weight: bold;
color: #333333;
padding: 30rpx;
border-bottom: 1rpx solid #e9ecef;
}
.chart-placeholder.data-v-582d7c51 {
padding: 80rpx 30rpx;
text-align: center;
}
.placeholder-text.data-v-582d7c51 {
display: block;
font-size: 48rpx;
margin-bottom: 20rpx;
}
.placeholder-desc.data-v-582d7c51 {
display: block;
font-size: 28rpx;
color: #666666;
}
.list-item.data-v-582d7c51 {
display: flex;
align-items: center;
justify-content: space-between;
padding: 30rpx;
border-bottom: 1rpx solid #f0f0f0;
}
.list-item.data-v-582d7c51:last-child {
border-bottom: none;
}
.item-left.data-v-582d7c51 {
flex: 1;
}
.item-date.data-v-582d7c51 {
display: block;
font-size: 28rpx;
font-weight: bold;
color: #333333;
margin-bottom: 8rpx;
}
.item-desc.data-v-582d7c51 {
display: block;
font-size: 24rpx;
color: #666666;
}
.item-right.data-v-582d7c51 {
text-align: right;
}
.item-duration.data-v-582d7c51 {
display: block;
font-size: 28rpx;
font-weight: bold;
color: #007aff;
}

View File

@@ -1,6 +1,12 @@
"use strict";
const common_vendor = require("../../common/vendor.js");
const RecordingDurationPopup = () => "../../pages-subpackage/ai_features/recording_duration/recording-duration-popup.js";
const QualityCoveragePopup = () => "../../pages-subpackage/ai_features/quality_coverage/quality-coverage-popup.js";
const _sfc_main = {
components: {
RecordingDurationPopup,
QualityCoveragePopup
},
data() {
const systemInfo = common_vendor.index.getSystemInfoSync();
const statusBarHeight = systemInfo.statusBarHeight || 20;
@@ -11,8 +17,10 @@ const _sfc_main = {
return {
contentTop: totalNavbarHeight + "rpx",
// 内容区域距离顶部的距离
contentBottom: "96rpx"
contentBottom: "96rpx",
// 内容区域距离底部的距离(默认值,会在 onReady 中更新)
popupReady: false
// 弹出框组件是否准备就绪
};
},
computed: {
@@ -29,6 +37,11 @@ const _sfc_main = {
},
onLoad() {
this.updateNavbarPosition();
this.$nextTick(() => {
setTimeout(() => {
this.popupReady = true;
}, 100);
});
},
onShow() {
this.$nextTick(() => {
@@ -47,7 +60,7 @@ const _sfc_main = {
const actualHeightRpx = actualHeight * 2;
const adjustedHeight = Math.max(actualHeightRpx - 4, 0);
this.$set(this, "contentTop", adjustedHeight + "rpx");
common_vendor.index.__f__("log", "at pages/ai_analysis/ai_analysis.vue:175", "[AIAnalysis] 使用实际导航栏高度:", actualHeight, "px =", actualHeightRpx, "rpx, 调整后:", adjustedHeight, "rpx");
common_vendor.index.__f__("log", "at pages/ai_analysis/ai_analysis.vue:204", "[AIAnalysis] 使用实际导航栏高度:", actualHeight, "px =", actualHeightRpx, "rpx, 调整后:", adjustedHeight, "rpx");
} else {
const systemInfo = common_vendor.index.getSystemInfoSync();
const statusBarHeight = systemInfo.statusBarHeight || 20;
@@ -66,7 +79,7 @@ const _sfc_main = {
const tabbarHeightRpx = tabbarHeight * 2;
const adjustedBottom = Math.max(tabbarHeightRpx - 4, 0);
this.$set(this, "contentBottom", adjustedBottom + "rpx");
common_vendor.index.__f__("log", "at pages/ai_analysis/ai_analysis.vue:199", "[AIAnalysis] 使用实际tabbar高度:", tabbarHeight, "px =", tabbarHeightRpx, "rpx, 调整后:", adjustedBottom, "rpx");
common_vendor.index.__f__("log", "at pages/ai_analysis/ai_analysis.vue:228", "[AIAnalysis] 使用实际tabbar高度:", tabbarHeight, "px =", tabbarHeightRpx, "rpx, 调整后:", adjustedBottom, "rpx");
} else {
this.$set(this, "contentBottom", "96rpx");
}
@@ -79,7 +92,7 @@ const _sfc_main = {
const actualHeightRpx = actualHeight * 2;
const adjustedHeight = Math.max(actualHeightRpx - 4, 0);
this.$set(this, "contentTop", adjustedHeight + "rpx");
common_vendor.index.__f__("log", "at pages/ai_analysis/ai_analysis.vue:217", "[AIAnalysis] 延迟更新导航栏高度:", actualHeight, "px =", actualHeightRpx, "rpx, 调整后:", adjustedHeight, "rpx");
common_vendor.index.__f__("log", "at pages/ai_analysis/ai_analysis.vue:246", "[AIAnalysis] 延迟更新导航栏高度:", actualHeight, "px =", actualHeightRpx, "rpx, 调整后:", adjustedHeight, "rpx");
}
}).exec();
const queryTabbar2 = common_vendor.index.createSelectorQuery().in(this);
@@ -89,13 +102,49 @@ const _sfc_main = {
const tabbarHeightRpx = tabbarHeight * 2;
const adjustedBottom = Math.max(tabbarHeightRpx - 4, 0);
this.$set(this, "contentBottom", adjustedBottom + "rpx");
common_vendor.index.__f__("log", "at pages/ai_analysis/ai_analysis.vue:229", "[AIAnalysis] 延迟更新tabbar高度:", tabbarHeight, "px =", tabbarHeightRpx, "rpx, 调整后:", adjustedBottom, "rpx");
common_vendor.index.__f__("log", "at pages/ai_analysis/ai_analysis.vue:258", "[AIAnalysis] 延迟更新tabbar高度:", tabbarHeight, "px =", tabbarHeightRpx, "rpx, 调整后:", adjustedBottom, "rpx");
}
}).exec();
}, 200);
});
},
methods: {
// 显示录音时长弹出框
showRecordingDurationPopup() {
if (!this.popupReady) {
common_vendor.index.__f__("warn", "at pages/ai_analysis/ai_analysis.vue:269", "[AIAnalysis] Popup component not ready yet");
return;
}
this.$nextTick(() => {
const popup = this.$refs.recordingDurationPopup;
if (popup && typeof popup.open === "function") {
popup.open();
} else {
common_vendor.index.__f__("error", "at pages/ai_analysis/ai_analysis.vue:278", "[AIAnalysis] recordingDurationPopup ref not found or open method not available");
}
});
},
// 弹出框关闭事件
onPopupClose() {
},
// 显示质检覆盖率弹出框
showQualityCoveragePopup() {
if (!this.popupReady) {
common_vendor.index.__f__("warn", "at pages/ai_analysis/ai_analysis.vue:290", "[AIAnalysis] Popup component not ready yet");
return;
}
this.$nextTick(() => {
const popup = this.$refs.qualityCoveragePopup;
if (popup && typeof popup.open === "function") {
popup.open();
} else {
common_vendor.index.__f__("error", "at pages/ai_analysis/ai_analysis.vue:299", "[AIAnalysis] qualityCoveragePopup ref not found or open method not available");
}
});
},
// 质检覆盖率弹出框关闭事件
onQualityCoveragePopupClose() {
},
// 计算并更新导航栏和内容区域的位置
updateNavbarPosition() {
const systemInfo = common_vendor.index.getSystemInfoSync();
@@ -111,12 +160,12 @@ const _sfc_main = {
goBack() {
const pages = getCurrentPages();
if (pages.length <= 1) {
common_vendor.index.__f__("log", "at pages/ai_analysis/ai_analysis.vue:258", "[AIAnalysis][goBack] 当前是第一个页面,无法返回");
common_vendor.index.__f__("log", "at pages/ai_analysis/ai_analysis.vue:329", "[AIAnalysis][goBack] 当前是第一个页面,无法返回");
return;
}
common_vendor.index.navigateBack({
fail: (err) => {
common_vendor.index.__f__("error", "at pages/ai_analysis/ai_analysis.vue:263", "[AIAnalysis][goBack] 返回失败:", err);
common_vendor.index.__f__("error", "at pages/ai_analysis/ai_analysis.vue:334", "[AIAnalysis][goBack] 返回失败:", err);
}
});
},
@@ -125,7 +174,7 @@ const _sfc_main = {
common_vendor.index.navigateTo({
url: `/${pagePath}`,
fail: (err) => {
common_vendor.index.__f__("error", "at pages/ai_analysis/ai_analysis.vue:272", "导航失败:", err);
common_vendor.index.__f__("error", "at pages/ai_analysis/ai_analysis.vue:343", "导航失败:", err);
common_vendor.index.showToast({
title: "页面跳转失败",
icon: "none"
@@ -137,14 +186,16 @@ const _sfc_main = {
};
if (!Array) {
const _easycom_uni_nav_bar2 = common_vendor.resolveComponent("uni-nav-bar");
_easycom_uni_nav_bar2();
const _component_RecordingDurationPopup = common_vendor.resolveComponent("RecordingDurationPopup");
const _component_QualityCoveragePopup = common_vendor.resolveComponent("QualityCoveragePopup");
(_easycom_uni_nav_bar2 + _component_RecordingDurationPopup + _component_QualityCoveragePopup)();
}
const _easycom_uni_nav_bar = () => "../../uni_modules/uni-nav-bar/components/uni-nav-bar/uni-nav-bar.js";
if (!Math) {
_easycom_uni_nav_bar();
}
function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
return {
return common_vendor.e({
a: common_vendor.o($options.goBack),
b: common_vendor.p({
fixed: true,
@@ -154,9 +205,9 @@ function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
color: "#333",
backgroundColor: "#FFFFFF"
}),
c: common_vendor.o(($event) => $options.navigateToPage("recording_duration")),
c: common_vendor.o((...args) => $options.showRecordingDurationPopup && $options.showRecordingDurationPopup(...args)),
d: common_vendor.o(($event) => $options.navigateToPage("customer_count")),
e: common_vendor.o(($event) => $options.navigateToPage("quality_coverage")),
e: common_vendor.o((...args) => $options.showQualityCoveragePopup && $options.showQualityCoveragePopup(...args)),
f: common_vendor.o(($event) => $options.navigateToPage("speech_rating")),
g: common_vendor.o(($event) => $options.navigateToPage("intent_level")),
h: common_vendor.o(($event) => $options.navigateToPage("deal_attribution")),
@@ -164,8 +215,17 @@ function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
j: common_vendor.o(($event) => $options.navigateToPage("over_commitment")),
k: common_vendor.o(($event) => $options.navigateToPage("red_line_touch")),
l: $options.computedContentTop || $data.contentTop,
m: $data.contentBottom || "96rpx"
};
m: $data.contentBottom || "96rpx",
n: $data.popupReady
}, $data.popupReady ? {
o: common_vendor.sr("recordingDurationPopup", "8462a2f1-1"),
p: common_vendor.o($options.onPopupClose)
} : {}, {
q: $data.popupReady
}, $data.popupReady ? {
r: common_vendor.sr("qualityCoveragePopup", "8462a2f1-2"),
s: common_vendor.o($options.onQualityCoveragePopupClose)
} : {});
}
const MiniProgramPage = /* @__PURE__ */ common_vendor._export_sfc(_sfc_main, [["render", _sfc_render], ["__scopeId", "data-v-8462a2f1"]]);
wx.createPage(MiniProgramPage);

View File

@@ -1,6 +1,8 @@
{
"navigationStyle": "custom",
"usingComponents": {
"recording-duration-popup": "../../pages-subpackage/ai_features/recording_duration/recording-duration-popup",
"quality-coverage-popup": "../../pages-subpackage/ai_features/quality_coverage/quality-coverage-popup",
"uni-nav-bar": "../../uni_modules/uni-nav-bar/components/uni-nav-bar/uni-nav-bar"
}
}

View File

@@ -1 +1 @@
<view class="page data-v-8462a2f1"><uni-nav-bar wx:if="{{b}}" class="data-v-8462a2f1" bindclickLeft="{{a}}" u-i="8462a2f1-0" bind:__l="__l" u-p="{{b}}"></uni-nav-bar><view class="content data-v-8462a2f1"><scroll-view class="content-scroll data-v-8462a2f1" scroll-y="true" style="{{'top:' + l + ';' + ('bottom:' + m)}}"><view class="category-section two-column data-v-8462a2f1"><view class="category-header data-v-8462a2f1"><text class="category-icon data-v-8462a2f1">📊</text><text class="category-title data-v-8462a2f1">录音和接待统计</text></view><view class="function-grid data-v-8462a2f1"><view class="function-item data-v-8462a2f1" bindtap="{{c}}"><view class="function-icon data-v-8462a2f1">⏱️</view><text class="function-name data-v-8462a2f1">录音时长</text><text class="function-desc data-v-8462a2f1">统计录音总时长</text></view><view class="function-item data-v-8462a2f1" bindtap="{{d}}"><view class="function-icon data-v-8462a2f1">👥</view><text class="function-name data-v-8462a2f1">接待客户数</text><text class="function-desc data-v-8462a2f1">统计接待客户数量</text></view></view></view><view class="category-section two-column data-v-8462a2f1"><view class="category-header data-v-8462a2f1"><text class="category-icon data-v-8462a2f1">✅</text><text class="category-title data-v-8462a2f1">质量管控</text></view><view class="function-grid data-v-8462a2f1"><view class="function-item data-v-8462a2f1" bindtap="{{e}}"><view class="function-icon data-v-8462a2f1">🎯</view><text class="function-name data-v-8462a2f1">质检覆盖率</text><text class="function-desc data-v-8462a2f1">质检录音覆盖统计</text></view><view class="function-item data-v-8462a2f1" bindtap="{{f}}"><view class="function-icon data-v-8462a2f1">🗣️</view><text class="function-name data-v-8462a2f1">员工话术评分</text><text class="function-desc data-v-8462a2f1">员工沟通质量评分</text></view></view></view><view class="category-section sales-analysis data-v-8462a2f1"><view class="category-header data-v-8462a2f1"><text class="category-icon data-v-8462a2f1">📈</text><text class="category-title data-v-8462a2f1">销售分析</text></view><view class="function-grid data-v-8462a2f1"><view class="function-item full-row-item data-v-8462a2f1" bindtap="{{g}}"><view class="function-icon data-v-8462a2f1">🎯</view><text class="function-name data-v-8462a2f1">客户意向分级</text><text class="function-desc data-v-8462a2f1">客户购买意向分析</text></view><view class="function-item full-row-item data-v-8462a2f1" bindtap="{{h}}"><view class="function-icon data-v-8462a2f1">💰</view><text class="function-name data-v-8462a2f1">成交归因</text><text class="function-desc data-v-8462a2f1">成交成功因素分析</text></view><view class="function-item full-row-item new-line-item data-v-8462a2f1" bindtap="{{i}}"><view class="function-icon data-v-8462a2f1">🚪</view><text class="function-name data-v-8462a2f1">开口率</text><text class="function-desc data-v-8462a2f1">客户主动开口统计</text></view></view></view><view class="category-section two-column data-v-8462a2f1"><view class="category-header data-v-8462a2f1"><text class="category-icon data-v-8462a2f1">⚠️</text><text class="category-title data-v-8462a2f1">风险监控</text></view><view class="function-grid data-v-8462a2f1"><view class="function-item data-v-8462a2f1" bindtap="{{j}}"><view class="function-icon data-v-8462a2f1">🚨</view><text class="function-name data-v-8462a2f1">过度承诺统计</text><text class="function-desc data-v-8462a2f1">监控过度承诺情况</text></view><view class="function-item data-v-8462a2f1" bindtap="{{k}}"><view class="function-icon data-v-8462a2f1">🔴</view><text class="function-name data-v-8462a2f1">触及红线统计</text><text class="function-desc data-v-8462a2f1">违规行为监控统计</text></view></view></view></scroll-view></view></view>
<view class="page data-v-8462a2f1"><uni-nav-bar wx:if="{{b}}" class="data-v-8462a2f1" bindclickLeft="{{a}}" u-i="8462a2f1-0" bind:__l="__l" u-p="{{b}}"></uni-nav-bar><view class="content data-v-8462a2f1"><scroll-view class="content-scroll data-v-8462a2f1" scroll-y="true" style="{{'top:' + l + ';' + ('bottom:' + m)}}"><view class="category-section two-column data-v-8462a2f1"><view class="category-header data-v-8462a2f1"><text class="category-icon data-v-8462a2f1">📊</text><text class="category-title data-v-8462a2f1">录音和接待统计</text></view><view class="function-grid data-v-8462a2f1"><view class="function-item data-v-8462a2f1" bindtap="{{c}}"><view class="function-icon data-v-8462a2f1">⏱️</view><text class="function-name data-v-8462a2f1">录音时长</text><text class="function-desc data-v-8462a2f1">统计录音总时长</text></view><view class="function-item data-v-8462a2f1" bindtap="{{d}}"><view class="function-icon data-v-8462a2f1">👥</view><text class="function-name data-v-8462a2f1">接待客户数</text><text class="function-desc data-v-8462a2f1">统计接待客户数量</text></view></view></view><view class="category-section two-column data-v-8462a2f1"><view class="category-header data-v-8462a2f1"><text class="category-icon data-v-8462a2f1">✅</text><text class="category-title data-v-8462a2f1">质量管控</text></view><view class="function-grid data-v-8462a2f1"><view class="function-item data-v-8462a2f1" bindtap="{{e}}"><view class="function-icon data-v-8462a2f1">📊</view><text class="function-name data-v-8462a2f1">质检覆盖率</text><text class="function-desc data-v-8462a2f1">质检录音覆盖统计</text></view><view class="function-item data-v-8462a2f1" bindtap="{{f}}"><view class="function-icon data-v-8462a2f1">🗣️</view><text class="function-name data-v-8462a2f1">员工话术评分</text><text class="function-desc data-v-8462a2f1">员工沟通质量评分</text></view></view></view><view class="category-section sales-analysis data-v-8462a2f1"><view class="category-header data-v-8462a2f1"><text class="category-icon data-v-8462a2f1">📈</text><text class="category-title data-v-8462a2f1">销售分析</text></view><view class="function-grid data-v-8462a2f1"><view class="function-item full-row-item data-v-8462a2f1" bindtap="{{g}}"><view class="function-icon data-v-8462a2f1">🎯</view><text class="function-name data-v-8462a2f1">客户意向分级</text><text class="function-desc data-v-8462a2f1">客户购买意向分析</text></view><view class="function-item full-row-item data-v-8462a2f1" bindtap="{{h}}"><view class="function-icon data-v-8462a2f1">💰</view><text class="function-name data-v-8462a2f1">成交归因</text><text class="function-desc data-v-8462a2f1">成交成功因素分析</text></view><view class="function-item full-row-item new-line-item data-v-8462a2f1" bindtap="{{i}}"><view class="function-icon data-v-8462a2f1">🚪</view><text class="function-name data-v-8462a2f1">开口率</text><text class="function-desc data-v-8462a2f1">客户主动开口统计</text></view></view></view><view class="category-section two-column data-v-8462a2f1"><view class="category-header data-v-8462a2f1"><text class="category-icon data-v-8462a2f1">⚠️</text><text class="category-title data-v-8462a2f1">风险监控</text></view><view class="function-grid data-v-8462a2f1"><view class="function-item data-v-8462a2f1" bindtap="{{j}}"><view class="function-icon data-v-8462a2f1">🚨</view><text class="function-name data-v-8462a2f1">过度承诺统计</text><text class="function-desc data-v-8462a2f1">监控过度承诺情况</text></view><view class="function-item data-v-8462a2f1" bindtap="{{k}}"><view class="function-icon data-v-8462a2f1">🔴</view><text class="function-name data-v-8462a2f1">触及红线统计</text><text class="function-desc data-v-8462a2f1">违规行为监控统计</text></view></view></view></scroll-view></view><recording-duration-popup wx:if="{{n}}" class="r data-v-8462a2f1" u-r="recordingDurationPopup" bindclose="{{p}}" u-i="8462a2f1-1" bind:__l="__l"/><quality-coverage-popup wx:if="{{q}}" class="r data-v-8462a2f1" u-r="qualityCoveragePopup" bindclose="{{s}}" u-i="8462a2f1-2" bind:__l="__l"/></view>