aI问答支持流式输出,效果非常好

This commit is contained in:
zhonghua.li
2026-03-31 21:04:53 +08:00
parent 60da0e2dd5
commit 22f951b514
163 changed files with 4646 additions and 8010 deletions

View File

@@ -224,7 +224,7 @@ if (!Math) {
}
function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
return common_vendor.e({
a: common_vendor.o($options.goBack),
a: common_vendor.o($options.goBack, "84"),
b: common_vendor.p({
fixed: true,
statusBar: true,
@@ -233,20 +233,20 @@ function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
color: "#333",
backgroundColor: "#FFFFFF"
}),
c: common_vendor.o(($event) => $options.navigateToPage("recording_duration")),
d: common_vendor.o(($event) => $options.navigateToPage("customer_count")),
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")),
i: common_vendor.o(($event) => $options.navigateToPage("opening_rate")),
j: common_vendor.o(($event) => $options.navigateToPage("over_commitment")),
k: common_vendor.o(($event) => $options.navigateToPage("red_line_touch")),
c: common_vendor.o(($event) => $options.navigateToPage("recording_duration"), "78"),
d: common_vendor.o(($event) => $options.navigateToPage("customer_count"), "2b"),
e: common_vendor.o((...args) => $options.showQualityCoveragePopup && $options.showQualityCoveragePopup(...args), "8b"),
f: common_vendor.o(($event) => $options.navigateToPage("speech_rating"), "4d"),
g: common_vendor.o(($event) => $options.navigateToPage("intent_level"), "20"),
h: common_vendor.o(($event) => $options.navigateToPage("deal_attribution"), "bf"),
i: common_vendor.o(($event) => $options.navigateToPage("opening_rate"), "7e"),
j: common_vendor.o(($event) => $options.navigateToPage("over_commitment"), "ac"),
k: common_vendor.o(($event) => $options.navigateToPage("red_line_touch"), "7d"),
l: $options.computedContentTop || $data.contentTop,
m: $data.contentBottom || "96rpx",
n: $data.showQualityCoverage
}, $data.showQualityCoverage ? {
o: common_vendor.o($options.onQualityCoveragePopupClose),
o: common_vendor.o($options.onQualityCoveragePopupClose, "f6"),
p: common_vendor.p({
["open-trigger"]: $data.openQualityCoverageTrigger
})

View File

@@ -0,0 +1,157 @@
"use strict";
const common_vendor = require("../../common/vendor.js");
function getSystemInfo() {
if (typeof common_vendor.wx$1 !== "undefined" && common_vendor.wx$1.getWindowInfo) {
try {
const windowInfo = common_vendor.wx$1.getWindowInfo();
return {
statusBarHeight: windowInfo.statusBarHeight || 20,
windowWidth: windowInfo.windowWidth,
windowHeight: windowInfo.windowHeight
};
} catch (e) {
common_vendor.index.__f__("warn", "at pages/ai_qa/ai_qa.vue:113", "[AIQa] wx.getWindowInfo fallback:", e);
}
}
try {
const systemInfo = common_vendor.index.getSystemInfoSync();
return {
statusBarHeight: systemInfo.statusBarHeight || 20,
windowWidth: systemInfo.windowWidth,
windowHeight: systemInfo.windowHeight
};
} catch (e) {
common_vendor.index.__f__("error", "at pages/ai_qa/ai_qa.vue:125", "[AIQa] getSystemInfoSync:", e);
return { statusBarHeight: 20, windowWidth: 375, windowHeight: 667 };
}
}
const _sfc_main = {
data() {
const systemInfo = getSystemInfo();
const statusBarHeightRpx = systemInfo.statusBarHeight * 2;
const navbarHeightRpx = 44 * 2;
const totalNavbarHeight = statusBarHeightRpx + navbarHeightRpx;
return {
contentTop: totalNavbarHeight + "rpx",
contentBottom: "96rpx"
};
},
computed: {
computedContentTop() {
const s = getSystemInfo();
return s.statusBarHeight * 2 + 44 * 2 + "rpx";
}
},
onLoad() {
this.updateNavbarPosition();
setTimeout(() => this.preloadSubpackage(), 100);
},
onShow() {
this.$nextTick(() => {
this.updateNavbarPosition();
setTimeout(() => this.updateNavbarPosition(), 50);
});
},
onReady() {
this.$nextTick(() => {
const query = common_vendor.index.createSelectorQuery().in(this);
query.select(".uni-navbar__content").boundingClientRect((data) => {
if (data && data.height) {
const adjusted = Math.max(data.height * 2 - 4, 0);
this.$set(this, "contentTop", adjusted + "rpx");
}
}).exec();
const queryTabbar = common_vendor.index.createSelectorQuery().in(this);
queryTabbar.select(".tabbar").boundingClientRect((tabbarData) => {
if (tabbarData && tabbarData.height) {
const adjustedBottom = Math.max(tabbarData.height * 2 - 4, 0);
this.$set(this, "contentBottom", adjustedBottom + "rpx");
}
}).exec();
setTimeout(() => {
const q2 = common_vendor.index.createSelectorQuery().in(this);
q2.select(".uni-navbar__content").boundingClientRect((data) => {
if (data && data.height) {
this.$set(this, "contentTop", Math.max(data.height * 2 - 4, 0) + "rpx");
}
}).exec();
const qt2 = common_vendor.index.createSelectorQuery().in(this);
qt2.select(".tabbar").boundingClientRect((d) => {
if (d && d.height) {
this.$set(this, "contentBottom", Math.max(d.height * 2 - 4, 0) + "rpx");
}
}).exec();
}, 200);
});
},
methods: {
preloadSubpackage() {
if (typeof common_vendor.wx$1 !== "undefined" && common_vendor.wx$1.loadSubpackage) {
common_vendor.wx$1.loadSubpackage({
name: "pages-subpackage",
success: () => {
},
fail: (err) => common_vendor.index.__f__("error", "at pages/ai_qa/ai_qa.vue:201", "[AIQa] loadSubpackage:", err)
});
}
},
updateNavbarPosition() {
const s = getSystemInfo();
const total = s.statusBarHeight * 2 + 44 * 2;
this.$set(this, "contentTop", total + "rpx");
this.$forceUpdate();
},
goBack() {
const pages = getCurrentPages();
if (pages.length <= 1)
return;
common_vendor.index.navigateBack({
fail: (err) => common_vendor.index.__f__("error", "at pages/ai_qa/ai_qa.vue:218", "[AIQa] goBack:", err)
});
},
navigateToQa(slug) {
common_vendor.index.navigateTo({
url: `/pages-subpackage/ai_qa/${slug}/${slug}`,
fail: (err) => {
common_vendor.index.__f__("error", "at pages/ai_qa/ai_qa.vue:225", "[AIQa] navigate:", err);
common_vendor.index.showToast({ title: "页面跳转失败", icon: "none" });
}
});
}
}
};
if (!Array) {
const _easycom_uni_nav_bar2 = common_vendor.resolveComponent("uni-nav-bar");
_easycom_uni_nav_bar2();
}
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 {
a: common_vendor.o($options.goBack, "e4"),
b: common_vendor.p({
fixed: true,
statusBar: true,
title: "AI问答",
leftIcon: "left",
color: "#333",
backgroundColor: "#FFFFFF"
}),
c: common_vendor.o(($event) => $options.navigateToQa("general_qa"), "35"),
d: common_vendor.o(($event) => $options.navigateToQa("after_sales_qa"), "c0"),
e: common_vendor.o(($event) => $options.navigateToQa("demand_qa"), "c8"),
f: common_vendor.o(($event) => $options.navigateToQa("price_qa"), "2e"),
g: common_vendor.o(($event) => $options.navigateToQa("trust_qa"), "24"),
h: common_vendor.o(($event) => $options.navigateToQa("decision_qa"), "b4"),
i: common_vendor.o(($event) => $options.navigateToQa("competitor_qa"), "81"),
j: common_vendor.o(($event) => $options.navigateToQa("objection_qa"), "0b"),
k: common_vendor.o(($event) => $options.navigateToQa("sharp_qa"), "05"),
l: $options.computedContentTop || $data.contentTop,
m: $data.contentBottom || "96rpx"
};
}
const MiniProgramPage = /* @__PURE__ */ common_vendor._export_sfc(_sfc_main, [["render", _sfc_render], ["__scopeId", "data-v-63bac443"]]);
wx.createPage(MiniProgramPage);
//# sourceMappingURL=../../../.sourcemap/mp-weixin/pages/ai_qa/ai_qa.js.map

View File

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

View File

@@ -0,0 +1 @@
<view class="page data-v-63bac443"><uni-nav-bar wx:if="{{b}}" class="data-v-63bac443" bindclickLeft="{{a}}" u-i="63bac443-0" bind:__l="__l" u-p="{{b}}"></uni-nav-bar><view class="content data-v-63bac443"><scroll-view class="content-scroll data-v-63bac443" scroll-y="true" style="{{'top:' + l + ';' + ('bottom:' + m)}}"><view class="category-section two-column data-v-63bac443"><view class="category-header data-v-63bac443"><text class="category-icon data-v-63bac443">💬</text><text class="category-title data-v-63bac443">基础问答</text></view><view class="function-grid data-v-63bac443"><view class="function-item data-v-63bac443" bindtap="{{c}}"><view class="function-icon data-v-63bac443">🙋</view><text class="function-name data-v-63bac443">通用问答</text><text class="function-desc data-v-63bac443">日常接待与通用话术</text></view><view class="function-item data-v-63bac443" bindtap="{{d}}"><view class="function-icon data-v-63bac443">🛠️</view><text class="function-name data-v-63bac443">售后问答</text><text class="function-desc data-v-63bac443">安装、质保与售后流程</text></view></view></view><view class="category-section sales-analysis data-v-63bac443"><view class="category-header data-v-63bac443"><text class="category-icon data-v-63bac443">🎯</text><text class="category-title data-v-63bac443">需求与信任</text></view><view class="function-grid data-v-63bac443"><view class="function-item full-row-item data-v-63bac443" bindtap="{{e}}"><view class="function-icon data-v-63bac443">📌</view><text class="function-name data-v-63bac443">需求类问答</text><text class="function-desc data-v-63bac443">是否匹配需求、场景方案</text></view><view class="function-item full-row-item data-v-63bac443" bindtap="{{f}}"><view class="function-icon data-v-63bac443">💳</view><text class="function-name data-v-63bac443">价格类问答</text><text class="function-desc data-v-63bac443">价格、优惠与性价比</text></view><view class="function-item full-row-item data-v-63bac443" bindtap="{{g}}"><view class="function-icon data-v-63bac443">🤝</view><text class="function-name data-v-63bac443">信任类问答</text><text class="function-desc data-v-63bac443">质量、售后与案例资质</text></view><view class="function-item full-row-item data-v-63bac443" bindtap="{{h}}"><view class="function-icon data-v-63bac443">⚡</view><text class="function-name data-v-63bac443">决策类问答</text><text class="function-desc data-v-63bac443">再考虑、犹豫与促单</text></view></view></view><view class="category-section two-column data-v-63bac443"><view class="category-header data-v-63bac443"><text class="category-icon data-v-63bac443">⚔️</text><text class="category-title data-v-63bac443">对比与难点</text></view><view class="function-grid data-v-63bac443"><view class="function-item data-v-63bac443" bindtap="{{i}}"><view class="function-icon data-v-63bac443">🔀</view><text class="function-name data-v-63bac443">竞品类问答</text><text class="function-desc data-v-63bac443">与竞品对比与选型</text></view><view class="function-item data-v-63bac443" bindtap="{{j}}"><view class="function-icon data-v-63bac443">🚧</view><text class="function-name data-v-63bac443">抗拒点问答</text><text class="function-desc data-v-63bac443">拖延、借口与隐性拒绝</text></view><view class="function-item full-span data-v-63bac443" bindtap="{{k}}"><view class="function-icon data-v-63bac443">📍</view><text class="function-name data-v-63bac443">针尖问答</text><text class="function-desc data-v-63bac443">尖锐与刁难型问题</text></view></view></view></scroll-view></view></view>

View File

@@ -0,0 +1,124 @@
page.data-v-63bac443 {
background-color: #F5F5F5;
}
.page.data-v-63bac443 {
min-height: 100vh;
background-color: #F5F5F5;
}
.content.data-v-63bac443 {
padding-top: 0 !important;
margin-top: 0 !important;
position: relative;
min-height: 100vh;
top: 0;
}
.data-v-63bac443 .uni-navbar__placeholder {
display: none !important;
height: 0 !important;
}
.data-v-63bac443 .uni-navbar__placeholder-view {
display: none !important;
height: 0 !important;
}
.data-v-63bac443 [class*="tabbar"][class*="placeholder"] {
display: none !important;
height: 0 !important;
}
.data-v-63bac443 [class*="safe-area"][class*="bottom"],.data-v-63bac443 [class*="bottom"][class*="safe"] {
display: none !important;
height: 0 !important;
}
.content-scroll.data-v-63bac443 {
position: absolute;
left: 0;
right: 0;
top: 0;
bottom: 0;
padding: 0 !important;
margin: 0 !important;
box-sizing: border-box;
}
.category-section.data-v-63bac443 {
margin: 20rpx 30rpx;
background: #FFFFFF;
border-radius: 16rpx;
overflow: hidden;
box-shadow: 0 2rpx 8rpx rgba(0, 0, 0, 0.04);
}
.category-section.data-v-63bac443:first-child {
margin-top: 0;
}
.category-header.data-v-63bac443 {
display: flex;
align-items: center;
padding: 30rpx;
background: #FFFFFF;
border-bottom: 1rpx solid #F0F0F0;
}
.category-icon.data-v-63bac443 {
font-size: 32rpx;
margin-right: 20rpx;
}
.category-title.data-v-63bac443 {
font-size: 32rpx;
font-weight: 500;
color: #333;
}
.function-grid.data-v-63bac443 {
display: flex;
flex-wrap: wrap;
padding: 10rpx;
}
.two-column .function-item.full-span.data-v-63bac443 {
flex: 1 1 100%;
margin-top: 10rpx;
}
.two-column .function-item.data-v-63bac443 {
flex: 1;
background: #FFFFFF;
border-radius: 12rpx;
padding: 24rpx 16rpx;
margin: 0 5rpx;
text-align: center;
box-shadow: 0 2rpx 4rpx rgba(0, 0, 0, 0.04);
transition: all 0.3s ease;
border: 1rpx solid #F0F0F0;
}
.sales-analysis .function-item.full-row-item.data-v-63bac443 {
flex: 1;
width: calc(50% - 10rpx);
background: #FFFFFF;
border-radius: 12rpx;
padding: 24rpx 16rpx;
margin: 0 5rpx;
text-align: center;
box-shadow: 0 2rpx 4rpx rgba(0, 0, 0, 0.04);
border: 1rpx solid #F0F0F0;
}
.sales-analysis .function-item.new-line-item.data-v-63bac443 {
flex-basis: 100%;
width: calc(50% - 10rpx);
margin-top: 10rpx;
}
.function-item.data-v-63bac443:active {
transform: scale(0.95);
}
.function-icon.data-v-63bac443 {
font-size: 48rpx;
margin-bottom: 12rpx;
}
.function-name.data-v-63bac443 {
display: block;
font-size: 28rpx;
font-weight: 500;
color: #333;
margin-bottom: 8rpx;
}
.function-desc.data-v-63bac443 {
display: block;
font-size: 24rpx;
color: #666;
line-height: 1.4;
}

View File

@@ -171,18 +171,18 @@ if (!Math) {
function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
return {
a: common_vendor.t($data.customerListTotal || $options.list.length),
b: common_vendor.o((...args) => $options.handleRefresh && $options.handleRefresh(...args)),
c: common_vendor.o([($event) => $data.salesName = $event.detail.value, (...args) => $options.onInputChange && $options.onInputChange(...args)]),
b: common_vendor.o((...args) => $options.handleRefresh && $options.handleRefresh(...args), "ba"),
c: common_vendor.o([($event) => $data.salesName = $event.detail.value, (...args) => $options.onInputChange && $options.onInputChange(...args)], "4b"),
d: $data.salesName,
e: common_vendor.o((...args) => $options.handleRefresh && $options.handleRefresh(...args)),
f: common_vendor.o([($event) => $data.customerName = $event.detail.value, (...args) => $options.onInputChange && $options.onInputChange(...args)]),
e: common_vendor.o((...args) => $options.handleRefresh && $options.handleRefresh(...args), "f3"),
f: common_vendor.o([($event) => $data.customerName = $event.detail.value, (...args) => $options.onInputChange && $options.onInputChange(...args)], "cc"),
g: $data.customerName,
h: common_vendor.p({
type: "refresh",
size: "18",
color: "#2A68FF"
}),
i: common_vendor.o((...args) => $options.handleRefresh && $options.handleRefresh(...args)),
i: common_vendor.o((...args) => $options.handleRefresh && $options.handleRefresh(...args), "16"),
j: common_vendor.f($options.list, (item, index, i0) => {
return common_vendor.e({
a: common_vendor.t(item.name),

View File

@@ -43,7 +43,7 @@ function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
size: "24",
color: "#333"
}),
b: common_vendor.o((...args) => $options.close && $options.close(...args)),
b: common_vendor.o((...args) => $options.close && $options.close(...args), "da"),
c: common_vendor.t($props.profile.name),
d: common_vendor.t($props.profile.intent),
e: common_vendor.n($props.profile.intent === "高" ? "intent-high" : "intent-medium"),
@@ -60,7 +60,7 @@ function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
size: "14",
color: "#666"
}),
o: common_vendor.o((...args) => $options.toggleCollapse && $options.toggleCollapse(...args)),
o: common_vendor.o((...args) => $options.toggleCollapse && $options.toggleCollapse(...args), "71"),
p: !$data.collapsed
}, !$data.collapsed ? {
q: common_vendor.t($props.profile.followStage),

View File

@@ -22,6 +22,49 @@ const _sfc_main = {
};
},
methods: {
durationPresent(val) {
if (val === null || val === void 0 || val === "")
return false;
const n = Number(val);
return !Number.isNaN(n) && n >= 0;
},
/** 后端 duration 为分钟(可小数),页面原样按分钟展示,最多保留两位小数 */
formatRecordingMinutes(minutes) {
const n = Number(minutes);
if (Number.isNaN(n) || n < 0)
return "0";
return String(parseFloat(n.toFixed(2)));
},
formatFileExtension(ext) {
if (ext == null || ext === "")
return "";
const s = String(ext).trim();
if (!s)
return "";
return s.startsWith(".") ? s.slice(1) : s;
},
getRecordingFileExtension(item) {
const raw = item.rawData || {};
const fromField = this.formatFileExtension(item.audioFileExtension ?? raw.audioFileExtension);
if (fromField)
return fromField;
const name = raw.audioFileOriginalName;
if (name && typeof name === "string") {
const idx = name.lastIndexOf(".");
if (idx !== -1 && idx < name.length - 1) {
return name.slice(idx + 1).trim().toLowerCase();
}
}
return "";
},
getRecordingText(item) {
const raw = item.rawData || {};
const t = item.recordingText ?? raw.recordingText;
if (t == null || t === "")
return "";
const s = String(t).trim();
return s;
},
onInputChange() {
},
handleRefresh() {
@@ -89,7 +132,7 @@ const _sfc_main = {
tenantId = common_vendor.index.getStorageSync("backend-tenant-id") || "";
token = common_vendor.index.getStorageSync("backend-token") || "";
} catch (e) {
common_vendor.index.__f__("error", "at pages/furniture_customer/components/ServiceList.vue:196", "获取认证信息失败:", e);
common_vendor.index.__f__("error", "at pages/furniture_customer/components/ServiceList.vue:247", "获取认证信息失败:", e);
}
const headers = {
"Content-Type": "application/json"
@@ -116,10 +159,14 @@ const _sfc_main = {
duration: 2e3
});
if (res.data.data) {
const d = res.data.data;
const updatedItem = {
...item,
rawData: res.data.data,
description: res.data.data.summary || item.description
rawData: d,
description: d.summary || item.description,
duration: d.duration != null ? d.duration : item.duration,
audioFileExtension: d.audioFileExtension != null ? d.audioFileExtension : item.audioFileExtension,
recordingText: d.recordingText != null ? d.recordingText : item.recordingText
};
this.$emit("updateItem", {
recordId,
@@ -138,7 +185,7 @@ const _sfc_main = {
}
} catch (error) {
common_vendor.index.hideLoading();
common_vendor.index.__f__("error", "at pages/furniture_customer/components/ServiceList.vue:257", "AI分析失败:", error);
common_vendor.index.__f__("error", "at pages/furniture_customer/components/ServiceList.vue:311", "AI分析失败:", error);
common_vendor.index.showToast({
title: `AI分析失败: ${error.errMsg || error.message || "未知错误"}`,
icon: "none",
@@ -174,43 +221,55 @@ if (!Math) {
function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
return common_vendor.e({
a: common_vendor.t($props.total || $props.list.length),
b: common_vendor.o((...args) => $options.handleRefresh && $options.handleRefresh(...args)),
c: common_vendor.o([($event) => $data.salesName = $event.detail.value, (...args) => $options.onInputChange && $options.onInputChange(...args)]),
b: common_vendor.o((...args) => $options.handleRefresh && $options.handleRefresh(...args), "ac"),
c: common_vendor.o([($event) => $data.salesName = $event.detail.value, (...args) => $options.onInputChange && $options.onInputChange(...args)], "4b"),
d: $data.salesName,
e: common_vendor.o((...args) => $options.handleRefresh && $options.handleRefresh(...args)),
f: common_vendor.o([($event) => $data.customerName = $event.detail.value, (...args) => $options.onInputChange && $options.onInputChange(...args)]),
e: common_vendor.o((...args) => $options.handleRefresh && $options.handleRefresh(...args), "9b"),
f: common_vendor.o([($event) => $data.customerName = $event.detail.value, (...args) => $options.onInputChange && $options.onInputChange(...args)], "cc"),
g: $data.customerName,
h: common_vendor.p({
type: "refresh",
size: "18",
color: "#2A68FF"
}),
i: common_vendor.o((...args) => $options.handleRefresh && $options.handleRefresh(...args)),
i: common_vendor.o((...args) => $options.handleRefresh && $options.handleRefresh(...args), "e5"),
j: common_vendor.f($props.list, (item, index, i0) => {
return common_vendor.e({
a: common_vendor.t(item.title),
b: "0284e0ab-1-" + i0,
c: common_vendor.o(($event) => $options.onMenuButtonClick(item), index),
d: common_vendor.t(item.date),
e: item.recordingName
}, item.recordingName ? {
f: common_vendor.t(item.recordingName)
e: $options.durationPresent(item.duration)
}, $options.durationPresent(item.duration) ? {
f: common_vendor.t($options.formatRecordingMinutes(item.duration))
} : {}, {
g: common_vendor.t(item.description),
h: common_vendor.t(item.customerName.charAt(0)),
i: common_vendor.t(item.customerName),
j: $data.selectedServiceItem && $data.selectedServiceItem.id === item.id && $data.showServiceActionMenu
g: $options.getRecordingFileExtension(item)
}, $options.getRecordingFileExtension(item) ? {
h: common_vendor.t($options.getRecordingFileExtension(item))
} : {}, {
i: item.recordingName
}, item.recordingName ? {
j: common_vendor.t(item.recordingName)
} : {}, {
k: $options.getRecordingText(item)
}, $options.getRecordingText(item) ? {
l: common_vendor.t($options.getRecordingText(item))
} : {}, {
m: common_vendor.t(item.description),
n: common_vendor.t(item.customerName.charAt(0)),
o: common_vendor.t(item.customerName),
p: $data.selectedServiceItem && $data.selectedServiceItem.id === item.id && $data.showServiceActionMenu
}, $data.selectedServiceItem && $data.selectedServiceItem.id === item.id && $data.showServiceActionMenu ? {
k: common_vendor.o(($event) => $options.handleDelete(item), index),
l: common_vendor.o(($event) => $options.handleView(item), index),
m: common_vendor.o(($event) => $options.handleAnalysis(item), index),
n: common_vendor.o(($event) => $options.handleAudio(item), index),
o: common_vendor.o(() => {
q: common_vendor.o(($event) => $options.handleDelete(item), index),
r: common_vendor.o(($event) => $options.handleView(item), index),
s: common_vendor.o(($event) => $options.handleAnalysis(item), index),
t: common_vendor.o(($event) => $options.handleAudio(item), index),
v: common_vendor.o(() => {
}, index)
} : {}, {
p: index,
q: $data.selectedServiceItem && $data.selectedServiceItem.id === item.id ? 1 : "",
r: common_vendor.o(($event) => $options.handleItemClick(item), index)
w: index,
x: $data.selectedServiceItem && $data.selectedServiceItem.id === item.id ? 1 : "",
y: common_vendor.o(($event) => $options.handleItemClick(item), index)
});
}),
k: common_vendor.p({
@@ -218,10 +277,10 @@ function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
size: "20",
color: "#999"
}),
l: common_vendor.o((...args) => $options.onReachBottom && $options.onReachBottom(...args)),
l: common_vendor.o((...args) => $options.onReachBottom && $options.onReachBottom(...args), "4a"),
m: $data.showServiceActionMenu
}, $data.showServiceActionMenu ? {
n: common_vendor.o((...args) => $options.closeServiceActionMenu && $options.closeServiceActionMenu(...args))
n: common_vendor.o((...args) => $options.closeServiceActionMenu && $options.closeServiceActionMenu(...args), "55")
} : {});
}
const Component = /* @__PURE__ */ common_vendor._export_sfc(_sfc_main, [["render", _sfc_render], ["__scopeId", "data-v-0284e0ab"]]);

View File

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

View File

@@ -179,6 +179,26 @@
.recording-name-value.data-v-0284e0ab {
color: #333;
}
.service-recording-text.data-v-0284e0ab {
margin-bottom: 16rpx;
font-size: 24rpx;
}
.recording-text-label.data-v-0284e0ab {
color: #999;
display: block;
margin-bottom: 8rpx;
}
.recording-text-body.data-v-0284e0ab {
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-0284e0ab {
margin-bottom: 24rpx;
}

View File

@@ -1745,6 +1745,15 @@ const _sfc_main = {
});
if (res.statusCode === 200 && res.data && res.data.success) {
const mappedList = res.data.data.map((item) => {
const extensionFromName = () => {
const n = item.audioFileOriginalName;
if (n && typeof n === "string") {
const i = n.lastIndexOf(".");
if (i !== -1 && i < n.length - 1)
return n.slice(i + 1);
}
return null;
};
let formattedTime = "";
if (item.createTime) {
const date = new Date(item.createTime);
@@ -1764,6 +1773,9 @@ const _sfc_main = {
customerName: item.customerName || "",
recordingName: item.recordingName || "",
// 记录名称
duration: item.duration,
audioFileExtension: item.audioFileExtension != null && item.audioFileExtension !== "" ? item.audioFileExtension : extensionFromName(),
recordingText: item.recordingText || "",
// 保留原始数据,用于详情页
rawData: item
};
@@ -1781,7 +1793,7 @@ const _sfc_main = {
});
}
} catch (error) {
common_vendor.index.__f__("error", "at pages/furniture_customer/furniture_customer.vue:2465", "获取服务记录失败:", error);
common_vendor.index.__f__("error", "at pages/furniture_customer/furniture_customer.vue:2478", "获取服务记录失败:", error);
common_vendor.index.showToast({
title: `获取服务记录失败: ${error.errMsg || error.message || "未知错误"}`,
icon: "none",
@@ -1822,7 +1834,7 @@ if (!Math) {
function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
var _a;
return common_vendor.e({
a: common_vendor.o($options.goBack),
a: common_vendor.o($options.goBack, "66"),
b: common_vendor.p({
fixed: true,
statusBar: true,
@@ -1833,18 +1845,18 @@ function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
backgroundColor: "#FFFFFF"
}),
c: $data.activeTab === "service" ? 1 : "",
d: common_vendor.o(($event) => $options.switchTab("service")),
d: common_vendor.o(($event) => $options.switchTab("service"), "bc"),
e: $data.activeTab === "customer" ? 1 : "",
f: common_vendor.o(($event) => $options.switchTab("customer")),
f: common_vendor.o(($event) => $options.switchTab("customer"), "80"),
g: $options.computedNavbarTop || $data.navbarTop,
h: $data.activeTab === "service"
}, $data.activeTab === "service" ? {
i: $options.computedContentTop || $data.contentTop,
j: common_vendor.o($options.viewDetail),
k: common_vendor.o($options.refreshServiceList),
l: common_vendor.o($options.onServiceListReachBottom),
m: common_vendor.o($options.handleMenuAction),
n: common_vendor.o($options.handleUpdateItem),
j: common_vendor.o($options.viewDetail, "11"),
k: common_vendor.o($options.refreshServiceList, "4a"),
l: common_vendor.o($options.onServiceListReachBottom, "9a"),
m: common_vendor.o($options.handleMenuAction, "e2"),
n: common_vendor.o($options.handleUpdateItem, "eb"),
o: common_vendor.p({
list: $data.serviceList,
total: $data.serviceListTotal
@@ -1853,10 +1865,10 @@ function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
p: $data.activeTab === "customer"
}, $data.activeTab === "customer" ? {
q: $options.computedContentTop || $data.contentTop,
r: common_vendor.o($options.viewCustomerDetail)
r: common_vendor.o($options.viewCustomerDetail, "12")
} : {}, {
s: common_vendor.sr("customerProfileModal", "08b6e2e0-3"),
t: common_vendor.o($options.onCustomerProfileClose),
t: common_vendor.o($options.onCustomerProfileClose, "8b"),
v: common_vendor.p({
profile: $data.currentCustomerProfile
}),
@@ -1865,7 +1877,7 @@ function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
size: "24",
color: "#333"
}),
x: common_vendor.o((...args) => $options.closeAudioList && $options.closeAudioList(...args)),
x: common_vendor.o((...args) => $options.closeAudioList && $options.closeAudioList(...args), "90"),
y: common_vendor.t($data.audioSegmentsList.length),
z: common_vendor.f($data.audioSegmentsList, (item, index, i0) => {
return common_vendor.e({
@@ -1909,10 +1921,10 @@ function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
size: "24",
color: "#333"
}),
E: common_vendor.o((...args) => $options.closeTextModal && $options.closeTextModal(...args)),
E: common_vendor.o((...args) => $options.closeTextModal && $options.closeTextModal(...args), "ba"),
F: common_vendor.t($data.currentRecordingText || "暂无录音文本"),
G: common_vendor.sr("textModalPopup", "08b6e2e0-6"),
H: common_vendor.o($options.onTextModalChange),
H: common_vendor.o($options.onTextModalChange, "5a"),
I: common_vendor.p({
type: "center",
["mask-click"]: true
@@ -1922,14 +1934,14 @@ function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
size: "24",
color: "#333"
}),
K: common_vendor.o((...args) => $options.closeDetail && $options.closeDetail(...args)),
K: common_vendor.o((...args) => $options.closeDetail && $options.closeDetail(...args), "ed"),
L: common_vendor.t($data.currentServiceDetail.title),
M: common_vendor.p({
type: "forward",
size: "20",
color: "#333"
}),
N: common_vendor.o((...args) => $options.shareDetail && $options.shareDetail(...args)),
N: common_vendor.o((...args) => $options.shareDetail && $options.shareDetail(...args), "f3"),
O: common_vendor.t($data.currentServiceDetail.date),
P: common_vendor.p({
type: "loop",
@@ -1941,15 +1953,15 @@ function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
size: "24",
color: "#007AFF"
}),
R: common_vendor.o((...args) => $options.togglePlay && $options.togglePlay(...args)),
R: common_vendor.o((...args) => $options.togglePlay && $options.togglePlay(...args), "26"),
S: $data.activeDetailTab === "summary" ? 1 : "",
T: common_vendor.o(($event) => $options.switchDetailTab("summary")),
T: common_vendor.o(($event) => $options.switchDetailTab("summary"), "93"),
U: $data.activeDetailTab === "todo" ? 1 : "",
V: common_vendor.o(($event) => $options.switchDetailTab("todo")),
V: common_vendor.o(($event) => $options.switchDetailTab("todo"), "db"),
W: $data.activeDetailTab === "chapter" ? 1 : "",
X: common_vendor.o(($event) => $options.switchDetailTab("chapter")),
X: common_vendor.o(($event) => $options.switchDetailTab("chapter"), "98"),
Y: $data.activeDetailTab === "performance" ? 1 : "",
Z: common_vendor.o(($event) => $options.switchDetailTab("performance")),
Z: common_vendor.o(($event) => $options.switchDetailTab("performance"), "b7"),
aa: $data.activeDetailTab === "summary"
}, $data.activeDetailTab === "summary" ? {
ab: `summary-${$data.currentServiceDetail.id || ((_a = $data.currentServiceDetail.rawData) == null ? void 0 : _a.id) || Date.now()}`,
@@ -2065,15 +2077,15 @@ function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
} : {}) : {}, {
aj: $data.activeTodoMenuIndex !== null
}, $data.activeTodoMenuIndex !== null ? {
ak: common_vendor.o((...args) => $options.closeTodoMenu && $options.closeTodoMenu(...args))
ak: common_vendor.o((...args) => $options.closeTodoMenu && $options.closeTodoMenu(...args), "b3")
} : {}, {
al: $data.activeTodoMenuIndex !== null
}, $data.activeTodoMenuIndex !== null ? {
am: common_vendor.o(($event) => $options.handleTodoComplete($data.currentTodoItem, $data.activeTodoMenuIndex)),
an: common_vendor.o(($event) => $options.handleTodoDelay($data.currentTodoItem, $data.activeTodoMenuIndex)),
am: common_vendor.o(($event) => $options.handleTodoComplete($data.currentTodoItem, $data.activeTodoMenuIndex), "f0"),
an: common_vendor.o(($event) => $options.handleTodoDelay($data.currentTodoItem, $data.activeTodoMenuIndex), "57"),
ao: common_vendor.s($data.todoMenuStyle),
ap: common_vendor.o(() => {
})
}, "9c")
} : {}, {
aq: $data.activeDetailTab === "chapter"
}, $data.activeDetailTab === "chapter" ? common_vendor.e({
@@ -2109,7 +2121,7 @@ function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
size: "16",
color: "#999"
}),
az: common_vendor.o((...args) => $options.viewCustomer && $options.viewCustomer(...args)),
az: common_vendor.o((...args) => $options.viewCustomer && $options.viewCustomer(...args), "b3"),
aA: common_vendor.sr("serviceDetailPopup", "08b6e2e0-8"),
aB: common_vendor.p({
type: "bottom",

View File

@@ -653,7 +653,7 @@ if (!Math) {
}
function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
return common_vendor.e({
a: common_vendor.o($options.goBack),
a: common_vendor.o($options.goBack, "66"),
b: common_vendor.p({
fixed: true,
statusBar: true,
@@ -664,11 +664,11 @@ function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
backgroundColor: "#FFFFFF"
}),
c: $data.activeTab === "status" ? 1 : "",
d: common_vendor.o(($event) => $options.switchTab("status")),
d: common_vendor.o(($event) => $options.switchTab("status"), "94"),
e: $data.activeTab === "reception" ? 1 : "",
f: common_vendor.o(($event) => $options.switchTab("reception")),
f: common_vendor.o(($event) => $options.switchTab("reception"), "ac"),
g: $data.activeTab === "tag" ? 1 : "",
h: common_vendor.o(($event) => $options.switchTab("tag")),
h: common_vendor.o(($event) => $options.switchTab("tag"), "c4"),
i: $options.computedNavbarTop || $data.navbarTop,
j: $data.activeTab === "status"
}, $data.activeTab === "status" ? {
@@ -676,9 +676,9 @@ function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
} : {}, {
l: $data.activeTab === "reception"
}, $data.activeTab === "reception" ? {
m: common_vendor.o($options.onReceptionCancel),
n: common_vendor.o($options.onReceptionSaveSuccess),
o: common_vendor.o($options.onReceptionSaveError),
m: common_vendor.o($options.onReceptionCancel, "71"),
n: common_vendor.o($options.onReceptionSaveSuccess, "7e"),
o: common_vendor.o($options.onReceptionSaveError, "12"),
p: common_vendor.p({
["initial-data"]: $data.receptionForm
})
@@ -686,24 +686,24 @@ function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
q: $data.activeTab === "tag" && $data.tagViewMode === "list"
}, $data.activeTab === "tag" && $data.tagViewMode === "list" ? common_vendor.e({
r: common_vendor.t($data.tagTotal),
s: common_vendor.o((...args) => $options.onTagListSearch && $options.onTagListSearch(...args)),
s: common_vendor.o((...args) => $options.onTagListSearch && $options.onTagListSearch(...args), "37"),
t: $data.tagQuery.tagType,
v: common_vendor.o(($event) => $data.tagQuery.tagType = $event.detail.value),
w: common_vendor.o((...args) => $options.onTagListSearch && $options.onTagListSearch(...args)),
v: common_vendor.o(($event) => $data.tagQuery.tagType = $event.detail.value, "d9"),
w: common_vendor.o((...args) => $options.onTagListSearch && $options.onTagListSearch(...args), "7f"),
x: $data.tagQuery.tagName,
y: common_vendor.o(($event) => $data.tagQuery.tagName = $event.detail.value),
y: common_vendor.o(($event) => $data.tagQuery.tagName = $event.detail.value, "11"),
z: common_vendor.p({
type: "refresh",
size: "18",
color: "#2A68FF"
}),
A: common_vendor.o((...args) => $options.onTagListRefresh && $options.onTagListRefresh(...args)),
A: common_vendor.o((...args) => $options.onTagListRefresh && $options.onTagListRefresh(...args), "e4"),
B: common_vendor.p({
type: "plus",
size: "18",
color: "#2A68FF"
}),
C: common_vendor.o((...args) => $options.showAddTag && $options.showAddTag(...args)),
C: common_vendor.o((...args) => $options.showAddTag && $options.showAddTag(...args), "83"),
D: common_vendor.f($data.tagList, (item, index, i0) => {
return common_vendor.e({
a: common_vendor.t((item.tagName || item.name || "标").charAt(0)),
@@ -746,21 +746,21 @@ function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
}),
F: $data.showTagActionMenu
}, $data.showTagActionMenu ? {
G: common_vendor.o((...args) => $options.closeTagActionMenu && $options.closeTagActionMenu(...args))
G: common_vendor.o((...args) => $options.closeTagActionMenu && $options.closeTagActionMenu(...args), "67")
} : {}, {
H: !$data.tagLoading && !$data.tagList.length
}, !$data.tagLoading && !$data.tagList.length ? {} : {}, {
I: $data.tagLoading && $data.tagList.length
}, $data.tagLoading && $data.tagList.length ? {} : {}, {
J: $options.computedContentTop || $data.contentTop,
K: common_vendor.o((...args) => $options.onTagListReachBottom && $options.onTagListReachBottom(...args))
K: common_vendor.o((...args) => $options.onTagListReachBottom && $options.onTagListReachBottom(...args), "87")
}) : {}, {
L: $data.activeTab === "tag" && ($data.tagViewMode === "add" || $data.tagViewMode === "edit")
}, $data.activeTab === "tag" && ($data.tagViewMode === "add" || $data.tagViewMode === "edit") ? common_vendor.e({
M: $data.tagViewMode === "add"
}, $data.tagViewMode === "add" ? {
N: $data.tagForm.industry,
O: common_vendor.o(($event) => $data.tagForm.industry = $event.detail.value)
O: common_vendor.o(($event) => $data.tagForm.industry = $event.detail.value, "29")
} : {}, {
P: common_vendor.t($data.tagForm.tagType || "请选择标签分类"),
Q: common_vendor.n($data.tagForm.tagType ? "form-item__picker-text" : "form-item__picker-placeholder"),
@@ -769,7 +769,7 @@ function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
size: "16",
color: "#9ca3af"
}),
S: common_vendor.o((...args) => $options.toggleTagTypeDropdown && $options.toggleTagTypeDropdown(...args)),
S: common_vendor.o((...args) => $options.toggleTagTypeDropdown && $options.toggleTagTypeDropdown(...args), "0c"),
T: $data.showTagTypeDropdown
}, $data.showTagTypeDropdown ? {
U: common_vendor.f($data.tagTypeOptions, (option, k0, i0) => {
@@ -781,22 +781,22 @@ function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
};
}),
V: common_vendor.o(() => {
})
}, "f9")
} : {}, {
W: $data.tagForm.name,
X: common_vendor.o(($event) => $data.tagForm.name = $event.detail.value),
X: common_vendor.o(($event) => $data.tagForm.name = $event.detail.value, "e3"),
Y: $data.tagForm.detail,
Z: common_vendor.o(($event) => $data.tagForm.detail = $event.detail.value),
Z: common_vendor.o(($event) => $data.tagForm.detail = $event.detail.value, "16"),
aa: $data.tagForm.remark,
ab: common_vendor.o(($event) => $data.tagForm.remark = $event.detail.value),
ab: common_vendor.o(($event) => $data.tagForm.remark = $event.detail.value, "d5"),
ac: $data.tagForm.enabled,
ad: common_vendor.o((...args) => $options.onEnabledChange && $options.onEnabledChange(...args)),
ae: common_vendor.o((...args) => $options.cancelAddTag && $options.cancelAddTag(...args)),
ad: common_vendor.o((...args) => $options.onEnabledChange && $options.onEnabledChange(...args), "54"),
ae: common_vendor.o((...args) => $options.cancelAddTag && $options.cancelAddTag(...args), "27"),
af: common_vendor.t($data.tagViewMode === "edit" ? "更新" : "保存"),
ag: common_vendor.o((...args) => $options.saveTag && $options.saveTag(...args)),
ag: common_vendor.o((...args) => $options.saveTag && $options.saveTag(...args), "3b"),
ah: $data.showTagTypeDropdown
}, $data.showTagTypeDropdown ? {
ai: common_vendor.o((...args) => $options.closeTagTypeDropdown && $options.closeTagTypeDropdown(...args))
ai: common_vendor.o((...args) => $options.closeTagTypeDropdown && $options.closeTagTypeDropdown(...args), "d8")
} : {}, {
aj: $options.computedContentTop || $data.contentTop
}) : {});

View File

@@ -446,24 +446,24 @@ if (!Math) {
function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
return common_vendor.e({
a: common_vendor.t($data.serviceStatusTotal),
b: common_vendor.o((...args) => $options.onServiceStatusSearch && $options.onServiceStatusSearch(...args)),
b: common_vendor.o((...args) => $options.onServiceStatusSearch && $options.onServiceStatusSearch(...args), "39"),
c: $data.serviceStatusQuery.salesName,
d: common_vendor.o(($event) => $data.serviceStatusQuery.salesName = $event.detail.value),
e: common_vendor.o((...args) => $options.onServiceStatusSearch && $options.onServiceStatusSearch(...args)),
d: common_vendor.o(($event) => $data.serviceStatusQuery.salesName = $event.detail.value, "ef"),
e: common_vendor.o((...args) => $options.onServiceStatusSearch && $options.onServiceStatusSearch(...args), "d8"),
f: $data.serviceStatusQuery.customerName,
g: common_vendor.o(($event) => $data.serviceStatusQuery.customerName = $event.detail.value),
g: common_vendor.o(($event) => $data.serviceStatusQuery.customerName = $event.detail.value, "49"),
h: $data.isAdmin
}, $data.isAdmin ? {
i: common_vendor.o((...args) => $options.onServiceStatusSearch && $options.onServiceStatusSearch(...args)),
i: common_vendor.o((...args) => $options.onServiceStatusSearch && $options.onServiceStatusSearch(...args), "c3"),
j: $data.serviceStatusQuery.salesPhone,
k: common_vendor.o(($event) => $data.serviceStatusQuery.salesPhone = $event.detail.value)
k: common_vendor.o(($event) => $data.serviceStatusQuery.salesPhone = $event.detail.value, "72")
} : {}, {
l: common_vendor.p({
type: "refresh",
size: "18",
color: "#2A68FF"
}),
m: common_vendor.o((...args) => $options.onServiceStatusRefresh && $options.onServiceStatusRefresh(...args)),
m: common_vendor.o((...args) => $options.onServiceStatusRefresh && $options.onServiceStatusRefresh(...args), "bf"),
n: common_vendor.f($data.serviceStatusList, (item, index, i0) => {
return common_vendor.e({
a: common_vendor.t(item.staffName ? item.staffName.charAt(0) : "未"),
@@ -514,7 +514,7 @@ function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
}, !$data.serviceStatusLoading && !$data.serviceStatusList.length ? {} : {}, {
q: $data.serviceStatusLoading && $data.serviceStatusList.length
}, $data.serviceStatusLoading && $data.serviceStatusList.length ? {} : {}, {
r: common_vendor.o((...args) => $options.onServiceStatusReachBottom && $options.onServiceStatusReachBottom(...args)),
r: common_vendor.o((...args) => $options.onServiceStatusReachBottom && $options.onServiceStatusReachBottom(...args), "0f"),
s: $data.showSupplementModal
}, $data.showSupplementModal ? {
t: common_vendor.p({
@@ -522,20 +522,20 @@ function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
size: "20",
color: "#999"
}),
v: common_vendor.o((...args) => $options.closeSupplementDialog && $options.closeSupplementDialog(...args)),
v: common_vendor.o((...args) => $options.closeSupplementDialog && $options.closeSupplementDialog(...args), "18"),
w: $data.supplementForm.customerName,
x: common_vendor.o(($event) => $data.supplementForm.customerName = $event.detail.value),
x: common_vendor.o(($event) => $data.supplementForm.customerName = $event.detail.value, "0c"),
y: $data.supplementForm.contact,
z: common_vendor.o(($event) => $data.supplementForm.contact = $event.detail.value),
z: common_vendor.o(($event) => $data.supplementForm.contact = $event.detail.value, "a8"),
A: $data.supplementForm.recordingName,
B: common_vendor.o(($event) => $data.supplementForm.recordingName = $event.detail.value),
B: common_vendor.o(($event) => $data.supplementForm.recordingName = $event.detail.value, "cc"),
C: $data.supplementForm.remarks,
D: common_vendor.o(($event) => $data.supplementForm.remarks = $event.detail.value),
E: common_vendor.o((...args) => $options.closeSupplementDialog && $options.closeSupplementDialog(...args)),
F: common_vendor.o((...args) => $options.saveSupplement && $options.saveSupplement(...args)),
D: common_vendor.o(($event) => $data.supplementForm.remarks = $event.detail.value, "6b"),
E: common_vendor.o((...args) => $options.closeSupplementDialog && $options.closeSupplementDialog(...args), "79"),
F: common_vendor.o((...args) => $options.saveSupplement && $options.saveSupplement(...args), "db"),
G: common_vendor.o(() => {
}),
H: common_vendor.o((...args) => $options.closeSupplementDialog && $options.closeSupplementDialog(...args))
}, "97"),
H: common_vendor.o((...args) => $options.closeSupplementDialog && $options.closeSupplementDialog(...args), "d5")
} : {});
}
const Component = /* @__PURE__ */ common_vendor._export_sfc(_sfc_main, [["render", _sfc_render], ["__scopeId", "data-v-c8433422"]]);

View File

@@ -66,15 +66,15 @@ const _sfc_main = {
};
function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
return common_vendor.e({
a: common_vendor.o((...args) => $options.onBack && $options.onBack(...args)),
a: common_vendor.o((...args) => $options.onBack && $options.onBack(...args), "78"),
b: $data.activeTab === "personal" ? 1 : "",
c: common_vendor.o(($event) => $options.changeTab("personal")),
c: common_vendor.o(($event) => $options.changeTab("personal"), "bc"),
d: $data.activeTab === "team" ? 1 : "",
e: common_vendor.o(($event) => $options.changeTab("team")),
e: common_vendor.o(($event) => $options.changeTab("team"), "7b"),
f: $data.activeTab === "personal" ? "translateX(0)" : "translateX(100%)",
g: $data.activeTab === "personal"
}, $data.activeTab === "personal" ? {
h: common_vendor.o(($event) => $options.onMore("duration")),
h: common_vendor.o(($event) => $options.onMore("duration"), "50"),
i: common_vendor.f($options.currentData.duration, (item, k0, i0) => {
return {
a: item.avatar,
@@ -84,7 +84,7 @@ function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
e: item.id
};
}),
j: common_vendor.o(($event) => $options.onMore("customers")),
j: common_vendor.o(($event) => $options.onMore("customers"), "fa"),
k: common_vendor.f($options.currentData.customers, (item, k0, i0) => {
return {
a: item.avatar,
@@ -94,7 +94,7 @@ function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
e: item.id
};
}),
l: common_vendor.o(($event) => $options.onMore("sop")),
l: common_vendor.o(($event) => $options.onMore("sop"), "d6"),
m: common_vendor.f($options.currentData.sop, (item, k0, i0) => {
return {
a: item.avatar,

View File

@@ -103,26 +103,26 @@ if (!Math) {
}
function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
return {
a: common_vendor.o(($event) => $data.deviceBindForm.deviceCode = $event),
a: common_vendor.o(($event) => $data.deviceBindForm.deviceCode = $event, "1b"),
b: common_vendor.p({
placeholder: "请输入设备编号",
modelValue: $data.deviceBindForm.deviceCode
}),
c: common_vendor.o(($event) => $data.deviceBindForm.salesPhone = $event),
c: common_vendor.o(($event) => $data.deviceBindForm.salesPhone = $event, "73"),
d: common_vendor.p({
placeholder: "请输入销售电话",
type: "number",
modelValue: $data.deviceBindForm.salesPhone
}),
e: common_vendor.o(($event) => $data.deviceBindForm.dealershipName = $event),
e: common_vendor.o(($event) => $data.deviceBindForm.dealershipName = $event, "e7"),
f: common_vendor.p({
placeholder: "请输入所属门店",
modelValue: $data.deviceBindForm.dealershipName
}),
g: common_vendor.o((...args) => $options.closeDeviceBindDialog && $options.closeDeviceBindDialog(...args)),
g: common_vendor.o((...args) => $options.closeDeviceBindDialog && $options.closeDeviceBindDialog(...args), "f1"),
h: common_vendor.t($data.deviceBindSubmitting ? "提交中..." : "提交"),
i: $data.deviceBindSubmitting,
j: common_vendor.o((...args) => $options.submitDeviceBind && $options.submitDeviceBind(...args)),
j: common_vendor.o((...args) => $options.submitDeviceBind && $options.submitDeviceBind(...args), "03"),
k: common_vendor.sr("deviceBindPopup", "e2e14e8e-0"),
l: common_vendor.p({
type: "dialog"

View File

@@ -196,7 +196,7 @@ function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
size: "20",
color: "#666"
}),
b: common_vendor.o((...args) => $options.close && $options.close(...args)),
b: common_vendor.o((...args) => $options.close && $options.close(...args), "23"),
c: common_vendor.t($options.filteredDeviceList.length),
d: common_vendor.t($data.statusOptions[$data.statusIndex]),
e: common_vendor.p({
@@ -206,19 +206,19 @@ function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
}),
f: $data.statusOptions,
g: $data.statusIndex,
h: common_vendor.o((...args) => $options.onStatusChange && $options.onStatusChange(...args)),
i: common_vendor.o((...args) => $options.onSearch && $options.onSearch(...args)),
h: common_vendor.o((...args) => $options.onStatusChange && $options.onStatusChange(...args), "45"),
i: common_vendor.o((...args) => $options.onSearch && $options.onSearch(...args), "f4"),
j: $data.queryDeviceCode,
k: common_vendor.o(($event) => $data.queryDeviceCode = $event.detail.value),
l: common_vendor.o((...args) => $options.onSearch && $options.onSearch(...args)),
k: common_vendor.o(($event) => $data.queryDeviceCode = $event.detail.value, "d5"),
l: common_vendor.o((...args) => $options.onSearch && $options.onSearch(...args), "32"),
m: $data.queryPhone,
n: common_vendor.o(($event) => $data.queryPhone = $event.detail.value),
n: common_vendor.o(($event) => $data.queryPhone = $event.detail.value, "80"),
o: common_vendor.p({
type: "refresh",
size: "18",
color: "#2A68FF"
}),
p: common_vendor.o((...args) => $options.onRefresh && $options.onRefresh(...args)),
p: common_vendor.o((...args) => $options.onRefresh && $options.onRefresh(...args), "c1"),
q: common_vendor.f($options.filteredDeviceList, (item, index, i0) => {
return {
a: common_vendor.t(item.deviceCode || "未填写设备编号"),
@@ -238,7 +238,7 @@ function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
}, $data.loading ? {} : $data.noMore ? {} : {}, {
v: $data.noMore
}) : {}, {
w: common_vendor.o((...args) => $options.onScrollToLower && $options.onScrollToLower(...args)),
w: common_vendor.o((...args) => $options.onScrollToLower && $options.onScrollToLower(...args), "36"),
x: common_vendor.sr("deviceListPopup", "9bcf4750-0"),
y: common_vendor.p({
type: "bottom",

View File

@@ -2,8 +2,8 @@
const common_vendor = require("../../common/vendor.js");
const common_store = require("../../common/store.js");
const common_request = require("../../common/request.js");
const db = common_vendor.tr.database();
common_vendor.tr.importObject("uni-id-co", {
const db = common_vendor._r.database();
common_vendor._r.importObject("uni-id-co", {
customUI: true
});
const DeviceBindPopup = () => "./components/DeviceBindPopup.js";
@@ -212,7 +212,7 @@ const _sfc_main = {
if (!item.to && item.event) {
this[item.event]();
} else if (item.to) {
const tabBarPages = ["/pages/furniture_reception/furniture_reception", "/pages/furniture_customer/furniture_customer", "/pages/furniture_top_sales/furniture_top_sales", "/pages/ucenter/ucenter"];
const tabBarPages = ["/pages/furniture_reception/furniture_reception", "/pages/furniture_customer/furniture_customer", "/pages/ai_qa/ai_qa", "/pages/ai_analysis/ai_analysis", "/pages/ucenter/ucenter"];
if (tabBarPages.includes(item.to)) {
common_vendor.index.switchTab({
url: item.to
@@ -490,7 +490,7 @@ function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
} : {
g: common_vendor.t(_ctx.$t("mine.notLogged"))
}, {
h: common_vendor.o((...args) => $options.toUserInfo && $options.toUserInfo(...args)),
h: common_vendor.o((...args) => $options.toUserInfo && $options.toUserInfo(...args), "89"),
i: $options.hasLogin
}, $options.hasLogin ? common_vendor.e({
j: common_vendor.t($data.tenantId || "未设置"),
@@ -563,30 +563,30 @@ function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
};
}),
s: common_vendor.sr("deviceBindPopup", "b6546e32-8"),
t: common_vendor.o($options.onDeviceBindSuccess),
t: common_vendor.o($options.onDeviceBindSuccess, "a5"),
v: common_vendor.sr("deviceListPopup", "b6546e32-9"),
w: common_vendor.o(($event) => $data.changePwdForm.oldPassword = $event),
w: common_vendor.o(($event) => $data.changePwdForm.oldPassword = $event, "5e"),
x: common_vendor.p({
type: "password",
placeholder: "请输入原始密码",
modelValue: $data.changePwdForm.oldPassword
}),
y: common_vendor.o(($event) => $data.changePwdForm.newPassword = $event),
y: common_vendor.o(($event) => $data.changePwdForm.newPassword = $event, "a1"),
z: common_vendor.p({
type: "password",
placeholder: "请输入新密码6-20位",
modelValue: $data.changePwdForm.newPassword
}),
A: common_vendor.o(($event) => $data.changePwdForm.confirmPassword = $event),
A: common_vendor.o(($event) => $data.changePwdForm.confirmPassword = $event, "06"),
B: common_vendor.p({
type: "password",
placeholder: "请再次输入新密码",
modelValue: $data.changePwdForm.confirmPassword
}),
C: common_vendor.o((...args) => $options.closeChangePasswordDialog && $options.closeChangePasswordDialog(...args)),
C: common_vendor.o((...args) => $options.closeChangePasswordDialog && $options.closeChangePasswordDialog(...args), "b4"),
D: common_vendor.t($data.changePwdSubmitting ? "提交中..." : "提交"),
E: $data.changePwdSubmitting,
F: common_vendor.o((...args) => $options.submitChangePassword && $options.submitChangePassword(...args)),
F: common_vendor.o((...args) => $options.submitChangePassword && $options.submitChangePassword(...args), "16"),
G: common_vendor.sr("changePwdPopup", "b6546e32-10"),
H: common_vendor.p({
type: "dialog"