解决微信小程序首页空白问题。
This commit is contained in:
@@ -1,524 +0,0 @@
|
||||
"use strict";
|
||||
const common_vendor = require("../../../common/vendor.js");
|
||||
const common_config = require("../../../common/config.js");
|
||||
const pagesSubpackage_customer_utils_dataInit = require("../utils/dataInit.js");
|
||||
const _sfc_main = {
|
||||
name: "ConversationSummaryFurniture",
|
||||
props: {
|
||||
// 服务记录项
|
||||
serviceItem: {
|
||||
type: Object,
|
||||
default: () => ({})
|
||||
}
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
summaryList: [],
|
||||
furnitureAnalysisList: [],
|
||||
// 家具意向分析数据
|
||||
productCategoryList: [],
|
||||
// 产品类别列表
|
||||
activeProductCategory: "",
|
||||
// 当前选中的产品类别
|
||||
productRequirementMap: {},
|
||||
// 产品需求映射 {categoryKey: {rows: [...]}}
|
||||
summarySentence: "",
|
||||
// 一句话总结
|
||||
dealKeyPoints: "",
|
||||
// 成交关键点
|
||||
loading: false
|
||||
// 加载状态
|
||||
};
|
||||
},
|
||||
computed: {
|
||||
// 当前选中的产品需求
|
||||
currentProductRequirement() {
|
||||
if (!this.activeProductCategory)
|
||||
return null;
|
||||
return this.productRequirementMap[this.activeProductCategory] || null;
|
||||
}
|
||||
},
|
||||
watch: {
|
||||
serviceItem: {
|
||||
handler(newVal, oldVal) {
|
||||
var _a, _b;
|
||||
if (newVal === oldVal) {
|
||||
return;
|
||||
}
|
||||
if (newVal && typeof newVal === "object") {
|
||||
const newId = newVal.id || ((_a = newVal.rawData) == null ? void 0 : _a.id);
|
||||
const oldId = (oldVal == null ? void 0 : oldVal.id) || ((_b = oldVal == null ? void 0 : oldVal.rawData) == null ? void 0 : _b.id);
|
||||
if (newId && newId === oldId) {
|
||||
return;
|
||||
}
|
||||
if (newId) {
|
||||
this.initData();
|
||||
this.loadFurnitureAnalysis(newVal);
|
||||
} else {
|
||||
this.initData();
|
||||
}
|
||||
} else {
|
||||
this.initData();
|
||||
}
|
||||
},
|
||||
immediate: true,
|
||||
deep: true
|
||||
}
|
||||
},
|
||||
mounted() {
|
||||
var _a;
|
||||
if (this.serviceItem && (this.serviceItem.id || ((_a = this.serviceItem.rawData) == null ? void 0 : _a.id))) {
|
||||
this.initData();
|
||||
this.loadFurnitureAnalysis(this.serviceItem);
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
// 初始化数据
|
||||
initData() {
|
||||
var _a;
|
||||
try {
|
||||
if (this.serviceItem && (this.serviceItem.id || ((_a = this.serviceItem.rawData) == null ? void 0 : _a.id))) {
|
||||
this.summaryList = pagesSubpackage_customer_utils_dataInit.initSummaryList(this.serviceItem);
|
||||
} else {
|
||||
this.summaryList = [];
|
||||
}
|
||||
} catch (error) {
|
||||
common_vendor.index.__f__("error", "at pages-subpackage/customer/components/ConversationSummaryFurniture.vue:197", "初始化总结数据失败:", error);
|
||||
this.summaryList = [];
|
||||
}
|
||||
this.productCategoryList = [];
|
||||
this.activeProductCategory = "";
|
||||
this.productRequirementMap = {};
|
||||
this.summarySentence = "";
|
||||
this.dealKeyPoints = "";
|
||||
this.furnitureAnalysisList = [];
|
||||
this.loading = false;
|
||||
},
|
||||
// 加载家具意向分析数据
|
||||
async loadFurnitureAnalysis(item) {
|
||||
var _a, _b;
|
||||
if (!item) {
|
||||
return;
|
||||
}
|
||||
try {
|
||||
this.loading = true;
|
||||
const parentId = ((_a = item.rawData) == null ? void 0 : _a.id) || item.id;
|
||||
if (!parentId) {
|
||||
common_vendor.index.__f__("warn", "at pages-subpackage/customer/components/ConversationSummaryFurniture.vue:220", "无法获取parentId");
|
||||
this.furnitureAnalysisList = [];
|
||||
this.loading = false;
|
||||
return;
|
||||
}
|
||||
const url = `${common_config.getApiUrl("/api/audioTextAnalysisFurniture/byParentId")}?parentId=${parentId}`;
|
||||
const res = await common_vendor.index.request({
|
||||
url,
|
||||
method: "GET",
|
||||
timeout: 1e4
|
||||
});
|
||||
if (res.statusCode === 200 && res.data && res.data.success) {
|
||||
this.furnitureAnalysisList = res.data.data || [];
|
||||
if (this.furnitureAnalysisList.length > 0) {
|
||||
this.updateSummaryWithFurnitureData();
|
||||
}
|
||||
} else {
|
||||
common_vendor.index.__f__("warn", "at pages-subpackage/customer/components/ConversationSummaryFurniture.vue:242", "获取家具意向分析失败:", ((_b = res.data) == null ? void 0 : _b.message) || "未知错误");
|
||||
this.furnitureAnalysisList = [];
|
||||
}
|
||||
} catch (error) {
|
||||
common_vendor.index.__f__("error", "at pages-subpackage/customer/components/ConversationSummaryFurniture.vue:246", "获取家具意向分析失败:", error);
|
||||
this.furnitureAnalysisList = [];
|
||||
} finally {
|
||||
this.loading = false;
|
||||
}
|
||||
},
|
||||
// 用家具意向分析数据更新会话总结
|
||||
updateSummaryWithFurnitureData() {
|
||||
if (this.furnitureAnalysisList.length === 0)
|
||||
return;
|
||||
const firstItem = this.furnitureAnalysisList[0];
|
||||
const summaryItems = [];
|
||||
if (firstItem.customerType) {
|
||||
summaryItems.push({
|
||||
label: "客户类型",
|
||||
value: firstItem.customerType,
|
||||
rawData: firstItem
|
||||
});
|
||||
}
|
||||
if (firstItem.familyStructure) {
|
||||
summaryItems.push({
|
||||
label: "家庭结构",
|
||||
value: firstItem.familyStructure,
|
||||
rawData: firstItem
|
||||
});
|
||||
}
|
||||
if (firstItem.summarySentence) {
|
||||
this.summarySentence = firstItem.summarySentence;
|
||||
}
|
||||
if (firstItem.dealKeyPoints) {
|
||||
this.dealKeyPoints = firstItem.dealKeyPoints;
|
||||
} else if (firstItem.summarySentence) {
|
||||
const keyWords = [];
|
||||
const summary = firstItem.summarySentence;
|
||||
if (summary.includes("优惠") || summary.includes("活动")) {
|
||||
keyWords.push("活动优惠");
|
||||
}
|
||||
if (summary.includes("搭配")) {
|
||||
keyWords.push("整套搭配");
|
||||
}
|
||||
if (summary.includes("环保")) {
|
||||
keyWords.push("环保");
|
||||
}
|
||||
if (summary.includes("安全")) {
|
||||
keyWords.push("安全");
|
||||
}
|
||||
if (summary.includes("交付") || summary.includes("周期")) {
|
||||
keyWords.push("快速交付");
|
||||
}
|
||||
if (summary.includes("退换") || summary.includes("服务")) {
|
||||
keyWords.push("无忧退换服务");
|
||||
}
|
||||
if (keyWords.length > 0) {
|
||||
this.dealKeyPoints = keyWords.join(",");
|
||||
}
|
||||
}
|
||||
if (summaryItems.length > 0) {
|
||||
this.summaryList = summaryItems;
|
||||
}
|
||||
this.buildProductRequirementList(firstItem);
|
||||
},
|
||||
// 构建产品需求清单(固定显示所有产品类别)
|
||||
buildProductRequirementList(data) {
|
||||
const categories = [
|
||||
{ key: "sofa", name: "沙发", field: "sofa" },
|
||||
{ key: "bed", name: "床", field: "bedAndMattress" },
|
||||
{ key: "mattress", name: "床垫", field: "bedAndMattress" },
|
||||
{ key: "dining_table", name: "餐桌椅", field: "diningTable" },
|
||||
{ key: "tea_table", name: "茶几", field: "teaTable" },
|
||||
{ key: "tv_cabinet", name: "电视柜", field: "tvCabinet" },
|
||||
{ key: "study_desk", name: "学习桌", field: "studyDesk" },
|
||||
{ key: "cabinet", name: "橱柜", field: "cabinet" },
|
||||
{ key: "wine_cabinet", name: "酒柜", field: "wineCabinet" },
|
||||
{ key: "master_bedroom_cabinet", name: "主卧衣柜", field: "masterBedroomCabinet" },
|
||||
{ key: "secondary_bedroom_cabinet", name: "次卧衣柜", field: "secondaryBedroomCabinet" },
|
||||
{ key: "shoe_cabinet", name: "鞋柜", field: "shoeCabinet" },
|
||||
{ key: "custom", name: "定制家居", field: null }
|
||||
];
|
||||
const requirementMap = {};
|
||||
const categoryList = [];
|
||||
categories.forEach((category) => {
|
||||
let hasData = false;
|
||||
let productData = null;
|
||||
if (category.key === "bed" || category.key === "mattress") {
|
||||
const fieldValue = data.bedAndMattress || data.bed_and_mattress || "";
|
||||
if (fieldValue && fieldValue.trim()) {
|
||||
hasData = true;
|
||||
productData = this.parseProductJson(fieldValue);
|
||||
}
|
||||
} else if (category.key === "custom") {
|
||||
hasData = false;
|
||||
} else {
|
||||
const fieldValue = data[category.field] || data[this.toSnakeCase(category.field)] || "";
|
||||
if (fieldValue && fieldValue.trim()) {
|
||||
hasData = true;
|
||||
productData = this.parseProductJson(fieldValue);
|
||||
}
|
||||
}
|
||||
if (hasData) {
|
||||
categoryList.push({ key: category.key, name: category.name });
|
||||
const rows = this.buildProductDimensionRows(productData, data, category.key);
|
||||
requirementMap[category.key] = { rows };
|
||||
}
|
||||
});
|
||||
this.productRequirementMap = requirementMap;
|
||||
this.productCategoryList = categoryList;
|
||||
if (categoryList.length > 0) {
|
||||
this.activeProductCategory = categoryList[0].key;
|
||||
}
|
||||
},
|
||||
// 解析产品JSON字符串
|
||||
parseProductJson(jsonString) {
|
||||
if (!jsonString || typeof jsonString !== "string") {
|
||||
return null;
|
||||
}
|
||||
try {
|
||||
const parsed = JSON.parse(jsonString);
|
||||
return parsed;
|
||||
} catch (error) {
|
||||
common_vendor.index.__f__("warn", "at pages-subpackage/customer/components/ConversationSummaryFurniture.vue:397", "解析产品JSON失败:", error, jsonString);
|
||||
return null;
|
||||
}
|
||||
},
|
||||
// 驼峰转蛇形命名
|
||||
toSnakeCase(str) {
|
||||
if (!str)
|
||||
return "";
|
||||
return str.replace(/([A-Z])/g, "_$1").toLowerCase().replace(/^_/, "");
|
||||
},
|
||||
// 切换产品类别
|
||||
switchProductCategory(categoryKey) {
|
||||
this.activeProductCategory = categoryKey;
|
||||
},
|
||||
// 获取产品类别名称
|
||||
getProductCategoryName(categoryKey) {
|
||||
const category = this.productCategoryList.find((item) => item.key === categoryKey);
|
||||
return category ? category.name : "";
|
||||
},
|
||||
// 获取所有产品类别名称(用于意向产品清单显示)
|
||||
getProductCategoryNames() {
|
||||
return this.productCategoryList.map((item) => item.name).join(",");
|
||||
},
|
||||
parseProductAttributes(productKey, requirementText, data) {
|
||||
const attributes = {};
|
||||
const text = (requirementText || "").trim();
|
||||
if (!text)
|
||||
return attributes;
|
||||
const matchFirst = (pattern) => {
|
||||
const result = text.match(pattern);
|
||||
return result ? result[0] : "";
|
||||
};
|
||||
switch (productKey) {
|
||||
case "sofa":
|
||||
attributes.type = matchFirst(/(L型|L形|一字型|U型|U形|带贵妃榻|贵妃榻|三人位|四人位|转角|组合)/);
|
||||
attributes.material = matchFirst(/(真皮|科技布|布艺|布|皮质|皮革|实木|板式|棉麻|绒布)/);
|
||||
attributes.size = matchFirst(/(\d+\.?\d*)\s*(米|m|平米|平方米)/);
|
||||
attributes.color = matchFirst(/(米白|白色|灰色|黑色|棕色|蓝色|绿色|暖色调|冷色调|灰白色系)/);
|
||||
attributes.style = matchFirst(/(现代简约|简约现代|现代|北欧|中式|美式|欧式|工业风|原木风|简约|极简)/);
|
||||
if (text.includes("储物") || text.includes("收纳"))
|
||||
attributes.feature = "储物";
|
||||
if (text.includes("好打理"))
|
||||
attributes.remark = "要求好打理";
|
||||
break;
|
||||
case "bed":
|
||||
attributes.size = matchFirst(/(\d+\.?\d*)\s*(米|m)/);
|
||||
attributes.material = matchFirst(/(实木|板式|软包|皮质|布艺)/);
|
||||
attributes.style = data.decorationStyle || "";
|
||||
if (text.includes("主卧"))
|
||||
attributes.remark = "主卧";
|
||||
break;
|
||||
case "mattress":
|
||||
attributes.size = matchFirst(/(\d+\.?\d*)\s*(米|m)/);
|
||||
attributes.material = matchFirst(/(弹簧|记忆棉|乳胶|椰棕|海绵)/);
|
||||
if (text.includes("分区支撑"))
|
||||
attributes.softness = "分区支撑(兼顾软硬需求)";
|
||||
else if (text.includes("偏软") || text.includes("软"))
|
||||
attributes.softness = "偏软";
|
||||
else if (text.includes("偏硬") || text.includes("硬"))
|
||||
attributes.softness = "偏硬";
|
||||
break;
|
||||
case "dining_table":
|
||||
if (text.includes("伸缩"))
|
||||
attributes.type = "可伸缩";
|
||||
const rangeMatch = text.match(/(\d+\.?\d*)\s*[-~到]\s*(\d+\.?\d*)\s*米/);
|
||||
if (rangeMatch)
|
||||
attributes.size = `${rangeMatch[1]}-${rangeMatch[2]}米`;
|
||||
else
|
||||
attributes.size = matchFirst(/(\d+\.?\d*)\s*米/);
|
||||
attributes.chairCount = matchFirst(/(\d+)\s*把/);
|
||||
if (text.includes("舒适"))
|
||||
attributes.feature = "舒适型";
|
||||
attributes.style = data.decorationStyle || "";
|
||||
break;
|
||||
case "tea_table":
|
||||
if (text.includes("抽屉"))
|
||||
attributes.type = "带抽屉";
|
||||
if (text.includes("储物") || text.includes("收纳"))
|
||||
attributes.feature = "储物";
|
||||
attributes.style = data.decorationStyle || "";
|
||||
break;
|
||||
case "tv_cabinet":
|
||||
if (text.includes("组合"))
|
||||
attributes.type = "组合式";
|
||||
if (text.includes("储物"))
|
||||
attributes.feature = "储物";
|
||||
attributes.style = data.decorationStyle || "";
|
||||
break;
|
||||
case "study_desk":
|
||||
if (text.includes("可调节") || text.includes("调节高度"))
|
||||
attributes.type = "可调节高度";
|
||||
if (text.includes("成长"))
|
||||
attributes.feature = "适应孩子成长";
|
||||
break;
|
||||
case "wine_cabinet":
|
||||
if (text.includes("恒温"))
|
||||
attributes.feature = "恒温";
|
||||
const capacity = text.match(/(\d+)[-~到](\d+)\s*瓶|(\d+)\s*瓶/);
|
||||
if (capacity) {
|
||||
if (capacity[1] && capacity[2])
|
||||
attributes.capacity = `${capacity[1]}-${capacity[2]}瓶`;
|
||||
else if (capacity[3])
|
||||
attributes.capacity = `${capacity[3]}瓶`;
|
||||
}
|
||||
break;
|
||||
case "master_bedroom_cabinet":
|
||||
case "secondary_bedroom_cabinet":
|
||||
if (text.includes("定制") || text.includes("整墙"))
|
||||
attributes.type = text.includes("整墙") ? "整墙定制" : "定制";
|
||||
attributes.size = matchFirst(/(\d+\.?\d*)\s*(米|m)/);
|
||||
if (text.includes("衣帽间"))
|
||||
attributes.feature = "带衣帽间";
|
||||
if (text.includes("主卧"))
|
||||
attributes.remark = "主卧";
|
||||
if (text.includes("次卧"))
|
||||
attributes.remark = "次卧";
|
||||
break;
|
||||
case "shoe_cabinet":
|
||||
if (text.includes("窄款") || text.includes("高型"))
|
||||
attributes.type = "窄款高型";
|
||||
attributes.size = matchFirst(/(\d+\.?\d*)\s*(米|m)/);
|
||||
if (text.includes("带座") || text.includes("可坐"))
|
||||
attributes.feature = "带座功能";
|
||||
if (text.includes("收纳空间"))
|
||||
attributes.remark = "大容量收纳";
|
||||
break;
|
||||
default:
|
||||
attributes.description = text;
|
||||
break;
|
||||
}
|
||||
if (!attributes.style && data && data.decorationStyle)
|
||||
attributes.style = data.decorationStyle;
|
||||
if (!attributes.color && data && data.decorationStyle) {
|
||||
const color = data.decorationStyle.match(/(米白|白色|灰色|黑色|棕色|蓝色|暖色调|冷色调|灰白色系|原木色)/);
|
||||
if (color)
|
||||
attributes.color = color[0];
|
||||
}
|
||||
if (!attributes.description && text)
|
||||
attributes.description = text;
|
||||
return attributes;
|
||||
},
|
||||
buildProductDimensionRows(productData = null, data = {}, categoryKey = "") {
|
||||
const dimensionLabels = [
|
||||
{ key: "styleColor", label: "偏好风格与颜色", field: "preferenceStyleAndColor" },
|
||||
{ key: "material", label: "材质偏好", field: "materialPreference" },
|
||||
{ key: "focus", label: "客户重点关注", field: "customerFocusAreas" },
|
||||
{ key: "price", label: "价格敏感度", field: "priceSensitivity" },
|
||||
{ key: "campaign", label: "活动参与度", field: "activityParticipation" },
|
||||
{ key: "ordered", label: "客户疑虑点", field: "customerConcerns" },
|
||||
{ key: "service", label: "交付服务", field: "deliveryService" },
|
||||
{ key: "competitor", label: "竞品反馈", field: "competitorFeedback" },
|
||||
{ key: "delivery", label: "交付周期", field: "deliveryCycle" },
|
||||
{ key: "appearance", label: "产品颜值", field: "productAppearance" }
|
||||
];
|
||||
const isParsedJson = productData && typeof productData === "object" && !Array.isArray(productData) && productData !== null && ("preferenceStyleAndColor" in productData || "materialPreference" in productData || "customerConcerns" in productData);
|
||||
const getValue = (field) => {
|
||||
if (isParsedJson) {
|
||||
const value = productData[field];
|
||||
if (value === null || value === void 0 || value === "") {
|
||||
return "暂无信息";
|
||||
}
|
||||
if (typeof value === "string") {
|
||||
const trimmed = value.trim();
|
||||
return trimmed || "暂无信息";
|
||||
}
|
||||
return String(value) || "暂无信息";
|
||||
} else {
|
||||
const attributes = productData || {};
|
||||
switch (field) {
|
||||
case "preferenceStyleAndColor":
|
||||
const parts = [];
|
||||
if (attributes.style)
|
||||
parts.push(attributes.style);
|
||||
if (attributes.color)
|
||||
parts.push(attributes.color);
|
||||
if (parts.length === 0 && data.decorationStyle)
|
||||
parts.push(data.decorationStyle);
|
||||
return parts.join(" / ") || "暂无信息";
|
||||
case "materialPreference":
|
||||
return attributes.material || "暂无信息";
|
||||
case "customerFocusAreas":
|
||||
return attributes.feature || attributes.remark || "暂无信息";
|
||||
case "priceSensitivity":
|
||||
return data.priceSensitivity || "暂无信息";
|
||||
case "activityParticipation":
|
||||
return data.campaignPreference || data.activityParticipation || "暂无信息";
|
||||
case "customerConcerns":
|
||||
return attributes.description || "暂无信息";
|
||||
case "deliveryService":
|
||||
return data.serviceExpectation || "暂无信息";
|
||||
case "competitorFeedback":
|
||||
return data.competitorFeedback || "暂无信息";
|
||||
case "deliveryCycle":
|
||||
return data.deliveryCycle || "暂无信息";
|
||||
case "productAppearance":
|
||||
return data.appearancePreference || attributes.style || "暂无信息";
|
||||
default:
|
||||
return "暂无信息";
|
||||
}
|
||||
}
|
||||
};
|
||||
return dimensionLabels.map((item) => ({
|
||||
label: item.label,
|
||||
content: getValue(item.field) || "暂无信息"
|
||||
}));
|
||||
},
|
||||
viewSummaryDetail(item) {
|
||||
common_vendor.index.__f__("log", "at pages-subpackage/customer/components/ConversationSummaryFurniture.vue:591", "查看总结详情", item);
|
||||
}
|
||||
}
|
||||
};
|
||||
if (!Array) {
|
||||
const _easycom_uni_icons2 = common_vendor.resolveComponent("uni-icons");
|
||||
_easycom_uni_icons2();
|
||||
}
|
||||
const _easycom_uni_icons = () => "../../../uni_modules/uni-icons/components/uni-icons/uni-icons.js";
|
||||
if (!Math) {
|
||||
_easycom_uni_icons();
|
||||
}
|
||||
function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
|
||||
return common_vendor.e({
|
||||
a: $data.loading
|
||||
}, $data.loading ? {} : !$data.loading && $data.summaryList.length === 0 && !$data.summarySentence && !$data.dealKeyPoints && $data.productCategoryList.length === 0 ? {} : {}, {
|
||||
b: !$data.loading && $data.summaryList.length === 0 && !$data.summarySentence && !$data.dealKeyPoints && $data.productCategoryList.length === 0,
|
||||
c: common_vendor.f($data.summaryList, (item, index, i0) => {
|
||||
return {
|
||||
a: common_vendor.t(item.label),
|
||||
b: common_vendor.t(item.value),
|
||||
c: "71565a67-0-" + i0,
|
||||
d: index,
|
||||
e: common_vendor.o(($event) => $options.viewSummaryDetail(item), index)
|
||||
};
|
||||
}),
|
||||
d: common_vendor.p({
|
||||
type: "right",
|
||||
size: "16",
|
||||
color: "#999"
|
||||
}),
|
||||
e: $data.productCategoryList.length > 0
|
||||
}, $data.productCategoryList.length > 0 ? {
|
||||
f: common_vendor.t($options.getProductCategoryNames())
|
||||
} : {}, {
|
||||
g: $data.summarySentence
|
||||
}, $data.summarySentence ? {
|
||||
h: common_vendor.t($data.summarySentence)
|
||||
} : {}, {
|
||||
i: $data.dealKeyPoints
|
||||
}, $data.dealKeyPoints ? {
|
||||
j: common_vendor.t($data.dealKeyPoints)
|
||||
} : {}, {
|
||||
k: $data.productCategoryList.length > 0
|
||||
}, $data.productCategoryList.length > 0 ? {
|
||||
l: common_vendor.f($data.productCategoryList, (category, index, i0) => {
|
||||
return {
|
||||
a: common_vendor.t(category.name),
|
||||
b: $data.activeProductCategory === category.key ? 1 : "",
|
||||
c: index,
|
||||
d: common_vendor.o(($event) => $options.switchProductCategory(category.key), index)
|
||||
};
|
||||
})
|
||||
} : {}, {
|
||||
m: $data.activeProductCategory && $options.currentProductRequirement
|
||||
}, $data.activeProductCategory && $options.currentProductRequirement ? {
|
||||
n: common_vendor.t($options.getProductCategoryName($data.activeProductCategory)),
|
||||
o: common_vendor.f($options.currentProductRequirement.rows, (row, index, i0) => {
|
||||
return {
|
||||
a: common_vendor.t(row.label),
|
||||
b: common_vendor.t(row.content),
|
||||
c: index
|
||||
};
|
||||
})
|
||||
} : $data.productCategoryList.length === 0 && $data.furnitureAnalysisList.length > 0 ? {} : {}, {
|
||||
p: $data.productCategoryList.length === 0 && $data.furnitureAnalysisList.length > 0
|
||||
});
|
||||
}
|
||||
const Component = /* @__PURE__ */ common_vendor._export_sfc(_sfc_main, [["render", _sfc_render], ["__scopeId", "data-v-71565a67"]]);
|
||||
wx.createComponent(Component);
|
||||
//# sourceMappingURL=../../../../.sourcemap/mp-weixin/pages-subpackage/customer/components/ConversationSummaryFurniture.js.map
|
||||
@@ -1,6 +0,0 @@
|
||||
{
|
||||
"component": true,
|
||||
"usingComponents": {
|
||||
"uni-icons": "../../../uni_modules/uni-icons/components/uni-icons/uni-icons"
|
||||
}
|
||||
}
|
||||
@@ -1 +0,0 @@
|
||||
<scroll-view class="detail-content data-v-71565a67" scroll-y><view wx:if="{{a}}" class="loading-container data-v-71565a67"><text class="loading-text data-v-71565a67">加载中...</text></view><view wx:elif="{{b}}" class="empty-container data-v-71565a67"><text class="empty-text data-v-71565a67">暂无会话总结数据</text></view><view wx:for="{{c}}" wx:for-item="item" wx:key="d" class="summary-item data-v-71565a67" bindtap="{{item.e}}"><view class="summary-label data-v-71565a67"><text class="data-v-71565a67">{{item.a}}</text></view><view class="summary-value data-v-71565a67"><text class="data-v-71565a67">{{item.b}}</text></view><uni-icons wx:if="{{d}}" class="data-v-71565a67" u-i="{{item.c}}" bind:__l="__l" u-p="{{d}}"></uni-icons></view><view wx:if="{{e}}" class="summary-item data-v-71565a67"><view class="summary-label data-v-71565a67"><text class="data-v-71565a67">意向产品清单</text></view><view class="summary-value data-v-71565a67"><text class="data-v-71565a67">{{f}}</text></view></view><view wx:if="{{g}}" class="summary-item data-v-71565a67"><view class="summary-label data-v-71565a67"><text class="data-v-71565a67">一句话总结</text></view><view class="summary-value data-v-71565a67"><text class="data-v-71565a67">{{h}}</text></view></view><view wx:if="{{i}}" class="summary-item data-v-71565a67"><view class="summary-label data-v-71565a67"><text class="data-v-71565a67">成交关键点</text></view><view class="summary-value data-v-71565a67"><text class="data-v-71565a67">{{j}}</text></view></view><view wx:if="{{k}}" class="product-category-tabs data-v-71565a67"><scroll-view class="category-tabs-scroll data-v-71565a67" scroll-x><view class="category-tabs-wrapper data-v-71565a67"><view wx:for="{{l}}" wx:for-item="category" wx:key="c" class="{{['category-tab-item', 'data-v-71565a67', category.b && 'active']}}" bindtap="{{category.d}}"><text class="data-v-71565a67">{{category.a}}</text></view></view></scroll-view></view><view wx:if="{{m}}" class="product-requirement-table data-v-71565a67"><view class="requirement-title data-v-71565a67"><text class="data-v-71565a67">{{n}}</text></view><view class="requirement-table data-v-71565a67"><view wx:for="{{o}}" wx:for-item="row" wx:key="c" class="requirement-row data-v-71565a67"><view class="requirement-label data-v-71565a67"><text class="data-v-71565a67">{{row.a}}</text></view><view class="requirement-content data-v-71565a67"><text class="data-v-71565a67">{{row.b}}</text></view></view></view></view><view wx:elif="{{p}}" class="product-requirement-table data-v-71565a67"><view class="requirement-title data-v-71565a67"><text class="data-v-71565a67">产品需求</text></view><view class="requirement-table data-v-71565a67"><view class="requirement-row data-v-71565a67"><view class="requirement-label data-v-71565a67"><text class="data-v-71565a67">提示</text></view><view class="requirement-content data-v-71565a67"><text class="data-v-71565a67">暂无产品需求信息</text></view></view></view></view></scroll-view>
|
||||
@@ -1,136 +0,0 @@
|
||||
|
||||
/* 详情内容 */
|
||||
.detail-content.data-v-71565a67 {
|
||||
flex: 1;
|
||||
padding: 24rpx 32rpx;
|
||||
background-color: #FFFFFF;
|
||||
overflow-y: auto;
|
||||
min-height: 0;
|
||||
}
|
||||
.summary-item.data-v-71565a67 {
|
||||
padding: 24rpx 0;
|
||||
border-bottom: 1px solid #F0F0F0;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
position: relative;
|
||||
padding-right: 40rpx;
|
||||
}
|
||||
.summary-item.data-v-71565a67:last-child {
|
||||
border-bottom: none;
|
||||
}
|
||||
.summary-label.data-v-71565a67 {
|
||||
margin-bottom: 12rpx;
|
||||
}
|
||||
.summary-label text.data-v-71565a67 {
|
||||
font-size: 28rpx;
|
||||
color: #666;
|
||||
font-weight: 500;
|
||||
}
|
||||
.summary-value.data-v-71565a67 {
|
||||
flex: 1;
|
||||
}
|
||||
.summary-value text.data-v-71565a67 {
|
||||
font-size: 28rpx;
|
||||
color: #333;
|
||||
line-height: 1.6;
|
||||
}
|
||||
.summary-item uni-icons.data-v-71565a67 {
|
||||
position: absolute;
|
||||
right: 0;
|
||||
top: 50%;
|
||||
transform: translateY(-50%);
|
||||
}
|
||||
|
||||
/* 产品类别标签页 */
|
||||
.product-category-tabs.data-v-71565a67 {
|
||||
background-color: #FFFFFF;
|
||||
border-bottom: 1px solid #E0E0E0;
|
||||
margin-bottom: 24rpx;
|
||||
padding: 0;
|
||||
}
|
||||
.category-tabs-scroll.data-v-71565a67 {
|
||||
white-space: nowrap;
|
||||
width: 100%;
|
||||
}
|
||||
.category-tabs-wrapper.data-v-71565a67 {
|
||||
display: inline-flex;
|
||||
padding: 0 32rpx;
|
||||
}
|
||||
.category-tab-item.data-v-71565a67 {
|
||||
padding: 24rpx 16rpx;
|
||||
position: relative;
|
||||
margin-right: 32rpx;
|
||||
white-space: nowrap;
|
||||
}
|
||||
.category-tab-item text.data-v-71565a67 {
|
||||
font-size: 28rpx;
|
||||
color: #666;
|
||||
}
|
||||
.category-tab-item.active text.data-v-71565a67 {
|
||||
color: #333;
|
||||
font-weight: 500;
|
||||
}
|
||||
.category-tab-item.active.data-v-71565a67::after {
|
||||
content: '';
|
||||
position: absolute;
|
||||
bottom: 0;
|
||||
left: 16rpx;
|
||||
right: 16rpx;
|
||||
height: 4rpx;
|
||||
background-color: #007AFF;
|
||||
border-radius: 2rpx;
|
||||
}
|
||||
|
||||
/* 产品需求清单表格 */
|
||||
.product-requirement-table.data-v-71565a67 {
|
||||
background-color: #FFFFFF;
|
||||
padding: 0;
|
||||
}
|
||||
.requirement-title.data-v-71565a67 {
|
||||
padding: 24rpx 32rpx;
|
||||
font-size: 32rpx;
|
||||
font-weight: 600;
|
||||
color: #333;
|
||||
border-bottom: 1px solid #F0F0F0;
|
||||
}
|
||||
.requirement-table.data-v-71565a67 {
|
||||
padding: 0 32rpx 24rpx;
|
||||
}
|
||||
.requirement-row.data-v-71565a67 {
|
||||
display: flex;
|
||||
padding: 24rpx 0;
|
||||
border-bottom: 1px solid #F0F0F0;
|
||||
}
|
||||
.requirement-row.data-v-71565a67:last-child {
|
||||
border-bottom: none;
|
||||
}
|
||||
.requirement-label.data-v-71565a67 {
|
||||
min-width: 200rpx;
|
||||
width: 200rpx;
|
||||
padding-right: 24rpx;
|
||||
}
|
||||
.requirement-label text.data-v-71565a67 {
|
||||
font-size: 28rpx;
|
||||
color: #666;
|
||||
font-weight: 500;
|
||||
}
|
||||
.requirement-content.data-v-71565a67 {
|
||||
flex: 1;
|
||||
}
|
||||
.requirement-content text.data-v-71565a67 {
|
||||
font-size: 28rpx;
|
||||
color: #333;
|
||||
line-height: 1.6;
|
||||
}
|
||||
|
||||
/* 加载和空状态 */
|
||||
.loading-container.data-v-71565a67,
|
||||
.empty-container.data-v-71565a67 {
|
||||
padding: 80rpx 0;
|
||||
text-align: center;
|
||||
}
|
||||
.loading-text.data-v-71565a67,
|
||||
.empty-text.data-v-71565a67 {
|
||||
font-size: 28rpx;
|
||||
color: #999;
|
||||
}
|
||||
@@ -1,84 +0,0 @@
|
||||
"use strict";
|
||||
const common_vendor = require("../../../common/vendor.js");
|
||||
const _sfc_main = {
|
||||
name: "CustomerList",
|
||||
props: {
|
||||
list: {
|
||||
type: Array,
|
||||
default: () => []
|
||||
}
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
salesName: "",
|
||||
customerName: ""
|
||||
};
|
||||
},
|
||||
methods: {
|
||||
onInputChange() {
|
||||
},
|
||||
handleRefresh() {
|
||||
this.$emit("filterClick", {
|
||||
salesName: this.salesName.trim(),
|
||||
customerName: this.customerName.trim()
|
||||
});
|
||||
}
|
||||
}
|
||||
};
|
||||
if (!Array) {
|
||||
const _easycom_uni_icons2 = common_vendor.resolveComponent("uni-icons");
|
||||
_easycom_uni_icons2();
|
||||
}
|
||||
const _easycom_uni_icons = () => "../../../uni_modules/uni-icons/components/uni-icons/uni-icons.js";
|
||||
if (!Math) {
|
||||
_easycom_uni_icons();
|
||||
}
|
||||
function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
|
||||
return {
|
||||
a: common_vendor.t($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)]),
|
||||
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)]),
|
||||
g: $data.customerName,
|
||||
h: common_vendor.p({
|
||||
type: "refresh",
|
||||
size: "18",
|
||||
color: "#2A68FF"
|
||||
}),
|
||||
i: common_vendor.o((...args) => $options.handleRefresh && $options.handleRefresh(...args)),
|
||||
j: common_vendor.f($props.list, (item, index, i0) => {
|
||||
return common_vendor.e({
|
||||
a: common_vendor.t(item.name),
|
||||
b: common_vendor.t(item.intent),
|
||||
c: common_vendor.n(item.intent === "高" ? "intent-high" : "intent-medium"),
|
||||
d: common_vendor.t(item.serviceStaff),
|
||||
e: common_vendor.t(item.serviceCount),
|
||||
f: common_vendor.t(item.lastService),
|
||||
g: common_vendor.f(item.tags, (tag, tagIndex, i1) => {
|
||||
return {
|
||||
a: common_vendor.t(tag.text),
|
||||
b: common_vendor.n("tag-" + tag.color),
|
||||
c: tagIndex
|
||||
};
|
||||
}),
|
||||
h: item.phone || item.budget
|
||||
}, item.phone || item.budget ? common_vendor.e({
|
||||
i: item.phone
|
||||
}, item.phone ? {
|
||||
j: common_vendor.t(item.phone)
|
||||
} : {}, {
|
||||
k: item.budget
|
||||
}, item.budget ? {
|
||||
l: common_vendor.t(item.budget)
|
||||
} : {}) : {}, {
|
||||
m: index,
|
||||
n: common_vendor.o(($event) => _ctx.$emit("itemClick", item), index)
|
||||
});
|
||||
})
|
||||
};
|
||||
}
|
||||
const Component = /* @__PURE__ */ common_vendor._export_sfc(_sfc_main, [["render", _sfc_render], ["__scopeId", "data-v-323a5a4c"]]);
|
||||
wx.createComponent(Component);
|
||||
//# sourceMappingURL=../../../../.sourcemap/mp-weixin/pages-subpackage/customer/components/CustomerList.js.map
|
||||
@@ -1,6 +0,0 @@
|
||||
{
|
||||
"component": true,
|
||||
"usingComponents": {
|
||||
"uni-icons": "../../../uni_modules/uni-icons/components/uni-icons/uni-icons"
|
||||
}
|
||||
}
|
||||
@@ -1 +0,0 @@
|
||||
<view class="customer-list-container data-v-323a5a4c"><view class="service-status-toolbar data-v-323a5a4c"><text class="toolbar-total data-v-323a5a4c">共{{a}}条</text><input class="toolbar-input data-v-323a5a4c" placeholder="所属销售姓名" placeholder-style="color: #b0b0b0" confirm-type="search" bindconfirm="{{b}}" bindinput="{{c}}" value="{{d}}"/><input class="toolbar-input data-v-323a5a4c" placeholder="客户姓名" placeholder-style="color: #b0b0b0" confirm-type="search" bindconfirm="{{e}}" bindinput="{{f}}" value="{{g}}"/><view class="toolbar-actions data-v-323a5a4c"><view class="toolbar-btn toolbar-btn--refresh data-v-323a5a4c" bindtap="{{i}}"><uni-icons wx:if="{{h}}" class="data-v-323a5a4c" u-i="323a5a4c-0" bind:__l="__l" u-p="{{h}}"></uni-icons><text class="data-v-323a5a4c">刷新</text></view></view></view><scroll-view class="customer-list data-v-323a5a4c" scroll-y><view wx:for="{{j}}" wx:for-item="item" wx:key="m" class="customer-card data-v-323a5a4c" catchtap="{{item.n}}"><view class="customer-header data-v-323a5a4c"><text class="customer-name-text data-v-323a5a4c">{{item.a}}</text><view class="{{['intent-badge', 'data-v-323a5a4c', item.c]}}"><text class="data-v-323a5a4c">意向{{item.b}}</text></view></view><view class="customer-service-info data-v-323a5a4c"><text class="data-v-323a5a4c">服务人员:{{item.d}} 服务{{item.e}}次 上次服务:{{item.f}}</text></view><view class="customer-tags data-v-323a5a4c"><view wx:for="{{item.g}}" wx:for-item="tag" wx:key="c" class="{{['tag-item', 'data-v-323a5a4c', tag.b]}}"><text class="data-v-323a5a4c">{{tag.a}}</text></view></view><view wx:if="{{item.h}}" class="customer-footer data-v-323a5a4c"><text wx:if="{{item.i}}" class="customer-phone data-v-323a5a4c">{{item.j}}</text><text wx:if="{{item.k}}" class="customer-budget data-v-323a5a4c">{{item.l}}</text></view></view></scroll-view></view>
|
||||
@@ -1,169 +0,0 @@
|
||||
|
||||
.customer-list-container.data-v-323a5a4c {
|
||||
/* 使用绝对定位,从tab页底部开始,到底部导航栏结束 */
|
||||
position: absolute;
|
||||
top: 160rpx; /* 导航栏(88rpx) + tab页(72rpx) = 160rpx */
|
||||
left: 0;
|
||||
right: 0;
|
||||
bottom: 96rpx; /* 底部导航栏高度 */
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
background-color: #F5F5F5;
|
||||
padding: 24rpx 16rpx;
|
||||
box-sizing: border-box;
|
||||
}
|
||||
.service-status-toolbar.data-v-323a5a4c {
|
||||
display: flex;
|
||||
flex-wrap: nowrap;
|
||||
align-items: center;
|
||||
gap: 8rpx; /* 增加间距,避免元素被挤压 */
|
||||
padding: 12rpx 8rpx; /* 增加内边距,给搜索框更多空间 */
|
||||
margin-bottom: 24rpx; /* 与列表项间距保持一致(24rpx) */
|
||||
background-color: #F8F8FA;
|
||||
border-radius: 8rpx;
|
||||
border: 1px solid #EFEFF2;
|
||||
overflow-x: auto;
|
||||
min-height: 64rpx; /* 设置最小高度,确保搜索区域不被挤压 */
|
||||
box-sizing: border-box;
|
||||
flex-shrink: 0; /* 防止被压缩 */
|
||||
}
|
||||
.toolbar-total.data-v-323a5a4c {
|
||||
font-size: 24rpx;
|
||||
color: #666;
|
||||
white-space: nowrap;
|
||||
flex-shrink: 0;
|
||||
margin-right: 8rpx; /* 增加右边距,与搜索框保持距离 */
|
||||
line-height: 1.2;
|
||||
padding: 0 4rpx; /* 增加左右内边距 */
|
||||
}
|
||||
.toolbar-input.data-v-323a5a4c {
|
||||
flex: 1;
|
||||
min-width: 120rpx; /* 增加最小宽度,避免被挤压变形 */
|
||||
max-width: 200rpx; /* 设置最大宽度,保持合理比例 */
|
||||
height: 56rpx; /* 稍微增加高度,提升可用性 */
|
||||
line-height: 56rpx;
|
||||
background-color: #F5F6FA;
|
||||
border-radius: 8rpx;
|
||||
padding: 0 12rpx; /* 增加左右内边距 */
|
||||
font-size: 24rpx;
|
||||
border: 1px solid transparent;
|
||||
box-sizing: border-box;
|
||||
flex-shrink: 1; /* 允许适当收缩,但保持最小宽度 */
|
||||
}
|
||||
.toolbar-actions.data-v-323a5a4c {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
margin-left: auto;
|
||||
flex-shrink: 0;
|
||||
gap: 8rpx; /* 增加按钮之间的间距 */
|
||||
}
|
||||
.toolbar-btn.data-v-323a5a4c {
|
||||
padding: 0 12rpx; /* 增加左右内边距 */
|
||||
height: 56rpx; /* 与输入框高度保持一致 */
|
||||
min-width: 56rpx;
|
||||
color: #2A68FF;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
gap: 4rpx; /* 增加图标和文字之间的间距 */
|
||||
font-size: 24rpx;
|
||||
font-weight: 400;
|
||||
line-height: 1;
|
||||
box-sizing: border-box;
|
||||
}
|
||||
.toolbar-btn text.data-v-323a5a4c {
|
||||
color: #2A68FF;
|
||||
}
|
||||
.customer-list.data-v-323a5a4c {
|
||||
/* 使用flex填充剩余空间 */
|
||||
flex: 1;
|
||||
background-color: transparent;
|
||||
box-sizing: border-box;
|
||||
overflow-y: auto;
|
||||
}
|
||||
.customer-card.data-v-323a5a4c {
|
||||
width: 100%;
|
||||
box-sizing: border-box;
|
||||
background-color: #FFFFFF;
|
||||
border-radius: 16rpx;
|
||||
padding: 32rpx;
|
||||
margin-bottom: 24rpx;
|
||||
box-shadow: 0 2rpx 8rpx rgba(0, 0, 0, 0.04);
|
||||
}
|
||||
.customer-header.data-v-323a5a4c {
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
align-items: center;
|
||||
margin-bottom: 16rpx;
|
||||
}
|
||||
.customer-name-text.data-v-323a5a4c {
|
||||
font-size: 32rpx;
|
||||
font-weight: 600;
|
||||
color: #333;
|
||||
}
|
||||
.intent-badge.data-v-323a5a4c {
|
||||
padding: 6rpx 16rpx;
|
||||
border-radius: 8rpx;
|
||||
}
|
||||
.intent-high.data-v-323a5a4c {
|
||||
background-color: #E3F2FD;
|
||||
}
|
||||
.intent-high text.data-v-323a5a4c {
|
||||
font-size: 24rpx;
|
||||
color: #1976D2;
|
||||
font-weight: 500;
|
||||
}
|
||||
.intent-medium.data-v-323a5a4c {
|
||||
background-color: #FFF3E0;
|
||||
}
|
||||
.intent-medium text.data-v-323a5a4c {
|
||||
font-size: 24rpx;
|
||||
color: #F57C00;
|
||||
font-weight: 500;
|
||||
}
|
||||
.customer-service-info.data-v-323a5a4c {
|
||||
margin-bottom: 20rpx;
|
||||
}
|
||||
.customer-service-info text.data-v-323a5a4c {
|
||||
font-size: 24rpx;
|
||||
color: #999;
|
||||
}
|
||||
.customer-tags.data-v-323a5a4c {
|
||||
display: flex;
|
||||
flex-wrap: wrap;
|
||||
margin-bottom: 20rpx;
|
||||
gap: 12rpx;
|
||||
}
|
||||
.tag-item.data-v-323a5a4c {
|
||||
padding: 8rpx 16rpx;
|
||||
border-radius: 8rpx;
|
||||
}
|
||||
.tag-orange.data-v-323a5a4c {
|
||||
background-color: #FFF3E0;
|
||||
}
|
||||
.tag-orange text.data-v-323a5a4c {
|
||||
font-size: 24rpx;
|
||||
color: #F57C00;
|
||||
}
|
||||
.tag-blue.data-v-323a5a4c {
|
||||
background-color: #E3F2FD;
|
||||
}
|
||||
.tag-blue text.data-v-323a5a4c {
|
||||
font-size: 24rpx;
|
||||
color: #1976D2;
|
||||
}
|
||||
.customer-footer.data-v-323a5a4c {
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
align-items: center;
|
||||
padding-top: 16rpx;
|
||||
border-top: 1px solid #F0F0F0;
|
||||
}
|
||||
.customer-phone.data-v-323a5a4c {
|
||||
font-size: 28rpx;
|
||||
color: #333;
|
||||
}
|
||||
.customer-budget.data-v-323a5a4c {
|
||||
font-size: 26rpx;
|
||||
color: #1976D2;
|
||||
}
|
||||
@@ -1,116 +0,0 @@
|
||||
"use strict";
|
||||
const common_vendor = require("../../../common/vendor.js");
|
||||
const _sfc_main = {
|
||||
name: "CustomerProfileModal",
|
||||
props: {
|
||||
profile: {
|
||||
type: Object,
|
||||
default: () => ({})
|
||||
}
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
collapsed: false
|
||||
};
|
||||
},
|
||||
methods: {
|
||||
open() {
|
||||
this.$refs.popup.open();
|
||||
},
|
||||
close() {
|
||||
this.$refs.popup.close();
|
||||
this.$emit("close");
|
||||
},
|
||||
toggleCollapse() {
|
||||
this.collapsed = !this.collapsed;
|
||||
}
|
||||
}
|
||||
};
|
||||
if (!Array) {
|
||||
const _easycom_uni_icons2 = common_vendor.resolveComponent("uni-icons");
|
||||
const _easycom_uni_popup2 = common_vendor.resolveComponent("uni-popup");
|
||||
(_easycom_uni_icons2 + _easycom_uni_popup2)();
|
||||
}
|
||||
const _easycom_uni_icons = () => "../../../uni_modules/uni-icons/components/uni-icons/uni-icons.js";
|
||||
const _easycom_uni_popup = () => "../../../uni_modules/uni-popup/components/uni-popup/uni-popup.js";
|
||||
if (!Math) {
|
||||
(_easycom_uni_icons + _easycom_uni_popup)();
|
||||
}
|
||||
function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
|
||||
return common_vendor.e({
|
||||
a: common_vendor.p({
|
||||
type: "close",
|
||||
size: "24",
|
||||
color: "#333"
|
||||
}),
|
||||
b: common_vendor.o((...args) => $options.close && $options.close(...args)),
|
||||
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"),
|
||||
f: common_vendor.t($props.profile.serviceCount),
|
||||
g: common_vendor.t($props.profile.lastService),
|
||||
h: common_vendor.t($props.profile.phone),
|
||||
i: common_vendor.t($props.profile.serviceStaff),
|
||||
j: common_vendor.t($props.profile.wechatStatus),
|
||||
k: common_vendor.t($props.profile.address),
|
||||
l: common_vendor.t($props.profile.source),
|
||||
m: common_vendor.t($data.collapsed ? "展开" : "收起"),
|
||||
n: common_vendor.p({
|
||||
type: $data.collapsed ? "down" : "up",
|
||||
size: "14",
|
||||
color: "#666"
|
||||
}),
|
||||
o: common_vendor.o((...args) => $options.toggleCollapse && $options.toggleCollapse(...args)),
|
||||
p: !$data.collapsed
|
||||
}, !$data.collapsed ? {
|
||||
q: common_vendor.t($props.profile.followStage),
|
||||
r: common_vendor.p({
|
||||
type: "right",
|
||||
size: "16",
|
||||
color: "#999"
|
||||
})
|
||||
} : {}, {
|
||||
s: !$data.collapsed
|
||||
}, !$data.collapsed ? common_vendor.e({
|
||||
t: common_vendor.p({
|
||||
type: "person",
|
||||
size: "20",
|
||||
color: "#007AFF"
|
||||
}),
|
||||
v: common_vendor.f($props.profile.systemTags, (tag, index, i0) => {
|
||||
return {
|
||||
a: common_vendor.t(tag),
|
||||
b: "system-" + index
|
||||
};
|
||||
}),
|
||||
w: $props.profile.customTags && $props.profile.customTags.length > 0
|
||||
}, $props.profile.customTags && $props.profile.customTags.length > 0 ? {} : {}, {
|
||||
x: $props.profile.customTags && $props.profile.customTags.length > 0
|
||||
}, $props.profile.customTags && $props.profile.customTags.length > 0 ? {
|
||||
y: common_vendor.f($props.profile.customTags, (tag, index, i0) => {
|
||||
return {
|
||||
a: common_vendor.t(tag),
|
||||
b: "custom-" + index
|
||||
};
|
||||
})
|
||||
} : {}) : {}, {
|
||||
z: !$data.collapsed
|
||||
}, !$data.collapsed ? {
|
||||
A: common_vendor.p({
|
||||
type: "star",
|
||||
size: "20",
|
||||
color: "#007AFF"
|
||||
}),
|
||||
B: common_vendor.t($props.profile.intent),
|
||||
C: common_vendor.t($props.profile.intentDescription)
|
||||
} : {}, {
|
||||
D: common_vendor.sr("popup", "6dcbcf9c-0"),
|
||||
E: common_vendor.p({
|
||||
type: "bottom",
|
||||
["mask-click"]: false
|
||||
})
|
||||
});
|
||||
}
|
||||
const Component = /* @__PURE__ */ common_vendor._export_sfc(_sfc_main, [["render", _sfc_render], ["__scopeId", "data-v-6dcbcf9c"]]);
|
||||
wx.createComponent(Component);
|
||||
//# sourceMappingURL=../../../../.sourcemap/mp-weixin/pages-subpackage/customer/components/CustomerProfileModal.js.map
|
||||
@@ -1,7 +0,0 @@
|
||||
{
|
||||
"component": true,
|
||||
"usingComponents": {
|
||||
"uni-icons": "../../../uni_modules/uni-icons/components/uni-icons/uni-icons",
|
||||
"uni-popup": "../../../uni_modules/uni-popup/components/uni-popup/uni-popup"
|
||||
}
|
||||
}
|
||||
@@ -1 +0,0 @@
|
||||
<uni-popup wx:if="{{E}}" class="r data-v-6dcbcf9c" u-s="{{['d']}}" u-r="popup" u-i="6dcbcf9c-0" bind:__l="__l" u-p="{{E}}"><view class="customer-profile-modal data-v-6dcbcf9c"><view class="profile-header data-v-6dcbcf9c"><view class="profile-close data-v-6dcbcf9c" bindtap="{{b}}"><uni-icons wx:if="{{a}}" class="data-v-6dcbcf9c" u-i="6dcbcf9c-1,6dcbcf9c-0" bind:__l="__l" u-p="{{a}}"></uni-icons></view><text class="profile-title data-v-6dcbcf9c">客户档案</text></view><scroll-view class="profile-content data-v-6dcbcf9c" scroll-y><view class="profile-section data-v-6dcbcf9c"><view class="profile-name-row data-v-6dcbcf9c"><text class="profile-name data-v-6dcbcf9c">{{c}}</text><view class="{{['profile-intent-badge', 'data-v-6dcbcf9c', e]}}"><text class="data-v-6dcbcf9c">意向{{d}}</text></view></view><view class="profile-service-info data-v-6dcbcf9c"><text class="data-v-6dcbcf9c">服务{{f}}次 {{g}}</text></view><view class="profile-details data-v-6dcbcf9c"><view class="detail-row data-v-6dcbcf9c"><text class="detail-label data-v-6dcbcf9c">电话:</text><text class="detail-value data-v-6dcbcf9c">{{h}}</text></view><view class="detail-row data-v-6dcbcf9c"><text class="detail-label data-v-6dcbcf9c">服务人员:</text><text class="detail-value data-v-6dcbcf9c">{{i}}</text></view><view class="detail-row data-v-6dcbcf9c"><text class="detail-label data-v-6dcbcf9c">微信状态:</text><text class="detail-value data-v-6dcbcf9c">{{j}}</text></view><view class="detail-row data-v-6dcbcf9c"><text class="detail-label data-v-6dcbcf9c">客户地址:</text><text class="detail-value data-v-6dcbcf9c">{{k}}</text></view><view class="detail-row data-v-6dcbcf9c"><text class="detail-label data-v-6dcbcf9c">客户来源:</text><text class="detail-value data-v-6dcbcf9c">{{l}}</text><view class="collapse-btn data-v-6dcbcf9c" bindtap="{{o}}"><text class="data-v-6dcbcf9c">{{m}}</text><uni-icons wx:if="{{n}}" class="data-v-6dcbcf9c" u-i="6dcbcf9c-2,6dcbcf9c-0" bind:__l="__l" u-p="{{n}}"></uni-icons></view></view></view></view><view wx:if="{{p}}" class="profile-section data-v-6dcbcf9c"><view class="section-header data-v-6dcbcf9c"><text class="section-title data-v-6dcbcf9c">跟进阶段</text><view class="stage-info data-v-6dcbcf9c"><text class="data-v-6dcbcf9c">当前: {{q}}</text><uni-icons wx:if="{{r}}" class="data-v-6dcbcf9c" u-i="6dcbcf9c-3,6dcbcf9c-0" bind:__l="__l" u-p="{{r}}"></uni-icons></view></view></view><view wx:if="{{s}}" class="profile-section data-v-6dcbcf9c"><view class="section-header data-v-6dcbcf9c"><view class="section-icon data-v-6dcbcf9c"><uni-icons wx:if="{{t}}" class="data-v-6dcbcf9c" u-i="6dcbcf9c-4,6dcbcf9c-0" bind:__l="__l" u-p="{{t}}"></uni-icons></view><text class="section-title data-v-6dcbcf9c">客户画像</text></view><view class="profile-tags data-v-6dcbcf9c"><view wx:for="{{v}}" wx:for-item="tag" wx:key="b" class="profile-tag tag-blue data-v-6dcbcf9c"><text class="data-v-6dcbcf9c">{{tag.a}}</text></view></view><view wx:if="{{w}}" class="custom-label data-v-6dcbcf9c"><text class="data-v-6dcbcf9c">自定义</text></view><view wx:if="{{x}}" class="profile-tags data-v-6dcbcf9c"><view wx:for="{{y}}" wx:for-item="tag" wx:key="b" class="profile-tag tag-yellow data-v-6dcbcf9c"><text class="data-v-6dcbcf9c">{{tag.a}}</text></view></view></view><view wx:if="{{z}}" class="profile-section data-v-6dcbcf9c"><view class="section-header data-v-6dcbcf9c"><view class="section-icon data-v-6dcbcf9c"><uni-icons wx:if="{{A}}" class="data-v-6dcbcf9c" u-i="6dcbcf9c-5,6dcbcf9c-0" bind:__l="__l" u-p="{{A}}"></uni-icons></view><text class="section-title data-v-6dcbcf9c">客户意向</text><view class="intent-level data-v-6dcbcf9c"><text class="data-v-6dcbcf9c">意向{{B}}</text></view></view><view class="intent-description data-v-6dcbcf9c"><text class="data-v-6dcbcf9c">{{C}}</text></view></view></scroll-view></view></uni-popup>
|
||||
@@ -1,188 +0,0 @@
|
||||
|
||||
.customer-profile-modal.data-v-6dcbcf9c {
|
||||
background-color: #FFFFFF;
|
||||
border-radius: 32rpx 32rpx 0 0;
|
||||
max-height: 90vh;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
overflow: hidden;
|
||||
}
|
||||
.profile-header.data-v-6dcbcf9c {
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
align-items: center;
|
||||
padding: 32rpx;
|
||||
border-bottom: 1px solid #F0F0F0;
|
||||
position: relative;
|
||||
}
|
||||
.profile-close.data-v-6dcbcf9c {
|
||||
width: 48rpx;
|
||||
height: 48rpx;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
}
|
||||
.profile-title.data-v-6dcbcf9c {
|
||||
position: absolute;
|
||||
left: 50%;
|
||||
transform: translateX(-50%);
|
||||
font-size: 36rpx;
|
||||
font-weight: 600;
|
||||
color: #333;
|
||||
}
|
||||
.profile-content.data-v-6dcbcf9c {
|
||||
flex: 1;
|
||||
padding: 32rpx;
|
||||
background-color: #FFFFFF;
|
||||
}
|
||||
.profile-section.data-v-6dcbcf9c {
|
||||
margin-bottom: 32rpx;
|
||||
}
|
||||
.profile-name-row.data-v-6dcbcf9c {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
margin-bottom: 16rpx;
|
||||
}
|
||||
.profile-name.data-v-6dcbcf9c {
|
||||
font-size: 36rpx;
|
||||
font-weight: 600;
|
||||
color: #333;
|
||||
margin-right: 16rpx;
|
||||
}
|
||||
.profile-intent-badge.data-v-6dcbcf9c {
|
||||
padding: 6rpx 16rpx;
|
||||
border-radius: 8rpx;
|
||||
}
|
||||
.profile-intent-badge.intent-high.data-v-6dcbcf9c {
|
||||
background-color: #E3F2FD;
|
||||
}
|
||||
.profile-intent-badge.intent-high text.data-v-6dcbcf9c {
|
||||
font-size: 24rpx;
|
||||
color: #1976D2;
|
||||
font-weight: 500;
|
||||
}
|
||||
.profile-intent-badge.intent-medium.data-v-6dcbcf9c {
|
||||
background-color: #FFF3E0;
|
||||
}
|
||||
.profile-intent-badge.intent-medium text.data-v-6dcbcf9c {
|
||||
font-size: 24rpx;
|
||||
color: #F57C00;
|
||||
font-weight: 500;
|
||||
}
|
||||
.profile-service-info.data-v-6dcbcf9c {
|
||||
margin-bottom: 24rpx;
|
||||
}
|
||||
.profile-service-info text.data-v-6dcbcf9c {
|
||||
font-size: 26rpx;
|
||||
color: #999;
|
||||
}
|
||||
.profile-details.data-v-6dcbcf9c {
|
||||
background-color: #F5F5F5;
|
||||
border-radius: 16rpx;
|
||||
padding: 24rpx;
|
||||
}
|
||||
.detail-row.data-v-6dcbcf9c {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
margin-bottom: 16rpx;
|
||||
position: relative;
|
||||
}
|
||||
.detail-row.data-v-6dcbcf9c:last-child {
|
||||
margin-bottom: 0;
|
||||
}
|
||||
.detail-label.data-v-6dcbcf9c {
|
||||
font-size: 28rpx;
|
||||
color: #666;
|
||||
width: 160rpx;
|
||||
flex-shrink: 0;
|
||||
}
|
||||
.detail-value.data-v-6dcbcf9c {
|
||||
font-size: 28rpx;
|
||||
color: #333;
|
||||
flex: 1;
|
||||
}
|
||||
.collapse-btn.data-v-6dcbcf9c {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
margin-left: 16rpx;
|
||||
padding: 4rpx 8rpx;
|
||||
}
|
||||
.collapse-btn text.data-v-6dcbcf9c {
|
||||
font-size: 24rpx;
|
||||
color: #666;
|
||||
margin-right: 4rpx;
|
||||
}
|
||||
.section-header.data-v-6dcbcf9c {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
margin-bottom: 24rpx;
|
||||
}
|
||||
.section-icon.data-v-6dcbcf9c {
|
||||
margin-right: 8rpx;
|
||||
}
|
||||
.section-title.data-v-6dcbcf9c {
|
||||
font-size: 30rpx;
|
||||
font-weight: 500;
|
||||
color: #333;
|
||||
flex: 1;
|
||||
}
|
||||
.stage-info.data-v-6dcbcf9c {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
}
|
||||
.stage-info text.data-v-6dcbcf9c {
|
||||
font-size: 28rpx;
|
||||
color: #333;
|
||||
margin-right: 8rpx;
|
||||
}
|
||||
.profile-tags.data-v-6dcbcf9c {
|
||||
display: flex;
|
||||
flex-wrap: wrap;
|
||||
gap: 12rpx;
|
||||
margin-bottom: 24rpx;
|
||||
}
|
||||
.profile-tag.data-v-6dcbcf9c {
|
||||
padding: 8rpx 16rpx;
|
||||
border-radius: 8rpx;
|
||||
}
|
||||
.profile-tag.tag-blue.data-v-6dcbcf9c {
|
||||
background-color: #E3F2FD;
|
||||
}
|
||||
.profile-tag.tag-blue text.data-v-6dcbcf9c {
|
||||
font-size: 24rpx;
|
||||
color: #1976D2;
|
||||
}
|
||||
.profile-tag.tag-yellow.data-v-6dcbcf9c {
|
||||
background-color: #FFF3E0;
|
||||
}
|
||||
.profile-tag.tag-yellow text.data-v-6dcbcf9c {
|
||||
font-size: 24rpx;
|
||||
color: #F57C00;
|
||||
}
|
||||
.custom-label.data-v-6dcbcf9c {
|
||||
margin-bottom: 16rpx;
|
||||
}
|
||||
.custom-label text.data-v-6dcbcf9c {
|
||||
font-size: 26rpx;
|
||||
color: #666;
|
||||
}
|
||||
.intent-level.data-v-6dcbcf9c {
|
||||
padding: 6rpx 16rpx;
|
||||
background-color: #E3F2FD;
|
||||
border-radius: 8rpx;
|
||||
}
|
||||
.intent-level text.data-v-6dcbcf9c {
|
||||
font-size: 24rpx;
|
||||
color: #1976D2;
|
||||
font-weight: 500;
|
||||
}
|
||||
.intent-description.data-v-6dcbcf9c {
|
||||
background-color: #F5F5F5;
|
||||
border-radius: 16rpx;
|
||||
padding: 24rpx;
|
||||
}
|
||||
.intent-description text.data-v-6dcbcf9c {
|
||||
font-size: 28rpx;
|
||||
color: #333;
|
||||
line-height: 1.8;
|
||||
}
|
||||
@@ -1,149 +0,0 @@
|
||||
"use strict";
|
||||
const common_vendor = require("../../../common/vendor.js");
|
||||
const _sfc_main = {
|
||||
name: "ServiceList",
|
||||
props: {
|
||||
list: {
|
||||
type: Array,
|
||||
default: () => []
|
||||
},
|
||||
total: {
|
||||
type: Number,
|
||||
default: 0
|
||||
}
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
salesName: "",
|
||||
customerName: "",
|
||||
selectedServiceItem: null,
|
||||
showServiceActionMenu: false
|
||||
};
|
||||
},
|
||||
methods: {
|
||||
onInputChange() {
|
||||
},
|
||||
handleRefresh() {
|
||||
this.$emit("filterClick", {
|
||||
salesName: this.salesName.trim(),
|
||||
customerName: this.customerName.trim()
|
||||
});
|
||||
},
|
||||
onReachBottom() {
|
||||
this.$emit("reachBottom");
|
||||
},
|
||||
// 菜单按钮点击
|
||||
onMenuButtonClick(item) {
|
||||
if (this.selectedServiceItem && this.selectedServiceItem.id === item.id && this.showServiceActionMenu) {
|
||||
this.closeServiceActionMenu();
|
||||
return;
|
||||
}
|
||||
this.selectedServiceItem = item;
|
||||
this.showServiceActionMenu = true;
|
||||
},
|
||||
// 关闭菜单
|
||||
closeServiceActionMenu() {
|
||||
this.showServiceActionMenu = false;
|
||||
this.selectedServiceItem = null;
|
||||
},
|
||||
// 处理删除
|
||||
handleDelete(item) {
|
||||
this.closeServiceActionMenu();
|
||||
this.$emit("menuAction", {
|
||||
action: "delete",
|
||||
item
|
||||
});
|
||||
},
|
||||
// 处理查看
|
||||
handleView(item) {
|
||||
this.closeServiceActionMenu();
|
||||
this.$emit("menuAction", {
|
||||
action: "view",
|
||||
item
|
||||
});
|
||||
},
|
||||
// 处理AI分析
|
||||
handleAnalysis(item) {
|
||||
this.closeServiceActionMenu();
|
||||
this.$emit("menuAction", {
|
||||
action: "analysis",
|
||||
item
|
||||
});
|
||||
},
|
||||
// 处理录音
|
||||
handleAudio(item) {
|
||||
this.closeServiceActionMenu();
|
||||
this.$emit("menuAction", {
|
||||
action: "audio",
|
||||
item
|
||||
});
|
||||
},
|
||||
// 处理列表项点击
|
||||
handleItemClick(item) {
|
||||
if (this.showServiceActionMenu) {
|
||||
return;
|
||||
}
|
||||
this.$emit("itemClick", item);
|
||||
}
|
||||
}
|
||||
};
|
||||
if (!Array) {
|
||||
const _easycom_uni_icons2 = common_vendor.resolveComponent("uni-icons");
|
||||
_easycom_uni_icons2();
|
||||
}
|
||||
const _easycom_uni_icons = () => "../../../uni_modules/uni-icons/components/uni-icons/uni-icons.js";
|
||||
if (!Math) {
|
||||
_easycom_uni_icons();
|
||||
}
|
||||
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)]),
|
||||
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)]),
|
||||
g: $data.customerName,
|
||||
h: common_vendor.p({
|
||||
type: "refresh",
|
||||
size: "18",
|
||||
color: "#2A68FF"
|
||||
}),
|
||||
i: common_vendor.o((...args) => $options.handleRefresh && $options.handleRefresh(...args)),
|
||||
j: common_vendor.f($props.list, (item, index, i0) => {
|
||||
return common_vendor.e({
|
||||
a: common_vendor.t(item.title),
|
||||
b: "0c664d9c-1-" + i0,
|
||||
c: common_vendor.o(($event) => $options.onMenuButtonClick(item), index),
|
||||
d: common_vendor.t(item.date),
|
||||
e: common_vendor.t(item.description),
|
||||
f: common_vendor.t(item.customerName.charAt(0)),
|
||||
g: common_vendor.t(item.customerName),
|
||||
h: $data.selectedServiceItem && $data.selectedServiceItem.id === item.id && $data.showServiceActionMenu
|
||||
}, $data.selectedServiceItem && $data.selectedServiceItem.id === item.id && $data.showServiceActionMenu ? {
|
||||
i: common_vendor.o(($event) => $options.handleDelete(item), index),
|
||||
j: common_vendor.o(($event) => $options.handleView(item), index),
|
||||
k: common_vendor.o(($event) => $options.handleAnalysis(item), index),
|
||||
l: common_vendor.o(($event) => $options.handleAudio(item), index),
|
||||
m: common_vendor.o(() => {
|
||||
}, index)
|
||||
} : {}, {
|
||||
n: index,
|
||||
o: $data.selectedServiceItem && $data.selectedServiceItem.id === item.id ? 1 : "",
|
||||
p: common_vendor.o(($event) => $options.handleItemClick(item), index)
|
||||
});
|
||||
}),
|
||||
k: common_vendor.p({
|
||||
type: "more-filled",
|
||||
size: "20",
|
||||
color: "#999"
|
||||
}),
|
||||
l: common_vendor.o((...args) => $options.onReachBottom && $options.onReachBottom(...args)),
|
||||
m: $data.showServiceActionMenu
|
||||
}, $data.showServiceActionMenu ? {
|
||||
n: common_vendor.o((...args) => $options.closeServiceActionMenu && $options.closeServiceActionMenu(...args))
|
||||
} : {});
|
||||
}
|
||||
const Component = /* @__PURE__ */ common_vendor._export_sfc(_sfc_main, [["render", _sfc_render], ["__scopeId", "data-v-0c664d9c"]]);
|
||||
wx.createComponent(Component);
|
||||
//# sourceMappingURL=../../../../.sourcemap/mp-weixin/pages-subpackage/customer/components/ServiceList.js.map
|
||||
@@ -1,6 +0,0 @@
|
||||
{
|
||||
"component": true,
|
||||
"usingComponents": {
|
||||
"uni-icons": "../../../uni_modules/uni-icons/components/uni-icons/uni-icons"
|
||||
}
|
||||
}
|
||||
@@ -1 +0,0 @@
|
||||
<view class="service-list-container data-v-0c664d9c"><view class="service-status-toolbar data-v-0c664d9c"><text class="toolbar-total data-v-0c664d9c">共{{a}}条</text><input class="toolbar-input data-v-0c664d9c" placeholder="所属销售姓名" placeholder-style="color: #b0b0b0" confirm-type="search" bindconfirm="{{b}}" bindinput="{{c}}" value="{{d}}"/><input class="toolbar-input data-v-0c664d9c" placeholder="客户姓名" placeholder-style="color: #b0b0b0" confirm-type="search" bindconfirm="{{e}}" bindinput="{{f}}" value="{{g}}"/><view class="toolbar-actions data-v-0c664d9c"><view class="toolbar-btn toolbar-btn--refresh data-v-0c664d9c" bindtap="{{i}}"><uni-icons wx:if="{{h}}" class="data-v-0c664d9c" u-i="0c664d9c-0" bind:__l="__l" u-p="{{h}}"></uni-icons><text class="data-v-0c664d9c">刷新</text></view></view></view><scroll-view class="service-list data-v-0c664d9c" scroll-y bindscrolltolower="{{l}}"><view wx:for="{{j}}" wx:for-item="item" wx:key="n" class="{{['service-item', 'data-v-0c664d9c', item.o && 'service-item--active']}}" bindtap="{{item.p}}"><view class="service-header data-v-0c664d9c"><text class="service-title data-v-0c664d9c">{{item.a}}</text><view class="service-menu-button data-v-0c664d9c" catchtap="{{item.c}}"><uni-icons wx:if="{{k}}" class="data-v-0c664d9c" u-i="{{item.b}}" bind:__l="__l" u-p="{{k}}"></uni-icons></view></view><view class="service-meta data-v-0c664d9c"><text class="service-date data-v-0c664d9c">{{item.d}}</text></view><view class="service-content data-v-0c664d9c"><text class="service-desc data-v-0c664d9c">{{item.e}}</text></view><view class="service-customer data-v-0c664d9c"><view class="customer-avatar data-v-0c664d9c"><text class="avatar-text data-v-0c664d9c">{{item.f}}</text></view><text class="customer-name data-v-0c664d9c">{{item.g}}</text></view><view wx:if="{{item.h}}" class="service-action-menu data-v-0c664d9c" catchtap="{{item.m}}"><view class="service-action-menu-item service-action-menu-item--danger data-v-0c664d9c" bindtap="{{item.i}}"><text class="data-v-0c664d9c">删除</text></view><view class="service-action-menu-divider data-v-0c664d9c"></view><view class="service-action-menu-item data-v-0c664d9c" bindtap="{{item.j}}"><text class="data-v-0c664d9c">查看</text></view><view class="service-action-menu-divider data-v-0c664d9c"></view><view class="service-action-menu-item data-v-0c664d9c" bindtap="{{item.k}}"><text class="data-v-0c664d9c">AI分析</text></view><view class="service-action-menu-divider data-v-0c664d9c"></view><view class="service-action-menu-item data-v-0c664d9c" bindtap="{{item.l}}"><text class="data-v-0c664d9c">录音</text></view></view></view></scroll-view><view wx:if="{{m}}" class="service-action-menu-mask data-v-0c664d9c" bindtap="{{n}}"></view></view>
|
||||
@@ -1,206 +0,0 @@
|
||||
|
||||
.service-list-container.data-v-0c664d9c {
|
||||
/* 使用绝对定位,从tab页底部开始,到底部导航栏结束 */
|
||||
position: absolute;
|
||||
top: 160rpx; /* 导航栏(88rpx) + tab页(72rpx) = 160rpx */
|
||||
left: 0;
|
||||
right: 0;
|
||||
bottom: 96rpx; /* 底部导航栏高度 */
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
background-color: #F5F5F5;
|
||||
padding: 24rpx 16rpx;
|
||||
box-sizing: border-box;
|
||||
}
|
||||
.service-status-toolbar.data-v-0c664d9c {
|
||||
display: flex;
|
||||
flex-wrap: nowrap;
|
||||
align-items: center;
|
||||
gap: 8rpx; /* 增加间距,避免元素被挤压 */
|
||||
padding: 12rpx 8rpx; /* 增加内边距,给搜索框更多空间 */
|
||||
margin-bottom: 24rpx; /* 与列表项间距保持一致(24rpx) */
|
||||
background-color: #F8F8FA;
|
||||
border-radius: 8rpx;
|
||||
border: 1px solid #EFEFF2;
|
||||
overflow-x: auto;
|
||||
min-height: 64rpx; /* 设置最小高度,确保搜索区域不被挤压 */
|
||||
box-sizing: border-box;
|
||||
flex-shrink: 0; /* 防止被压缩 */
|
||||
}
|
||||
.toolbar-total.data-v-0c664d9c {
|
||||
font-size: 24rpx;
|
||||
color: #666;
|
||||
white-space: nowrap;
|
||||
flex-shrink: 0;
|
||||
margin-right: 8rpx; /* 增加右边距,与搜索框保持距离 */
|
||||
line-height: 1.2;
|
||||
padding: 0 4rpx; /* 增加左右内边距 */
|
||||
}
|
||||
.toolbar-input.data-v-0c664d9c {
|
||||
flex: 1;
|
||||
min-width: 120rpx; /* 增加最小宽度,避免被挤压变形 */
|
||||
max-width: 200rpx; /* 设置最大宽度,保持合理比例 */
|
||||
height: 56rpx; /* 稍微增加高度,提升可用性 */
|
||||
line-height: 56rpx;
|
||||
background-color: #F5F6FA;
|
||||
border-radius: 8rpx;
|
||||
padding: 0 12rpx; /* 增加左右内边距 */
|
||||
font-size: 24rpx;
|
||||
border: 1px solid transparent;
|
||||
box-sizing: border-box;
|
||||
flex-shrink: 1; /* 允许适当收缩,但保持最小宽度 */
|
||||
}
|
||||
.toolbar-actions.data-v-0c664d9c {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
margin-left: auto;
|
||||
flex-shrink: 0;
|
||||
gap: 8rpx; /* 增加按钮之间的间距 */
|
||||
}
|
||||
.toolbar-btn.data-v-0c664d9c {
|
||||
padding: 0 12rpx; /* 增加左右内边距 */
|
||||
height: 56rpx; /* 与输入框高度保持一致 */
|
||||
min-width: 56rpx;
|
||||
color: #2A68FF;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
gap: 4rpx; /* 增加图标和文字之间的间距 */
|
||||
font-size: 24rpx;
|
||||
font-weight: 400;
|
||||
line-height: 1;
|
||||
box-sizing: border-box;
|
||||
}
|
||||
.toolbar-btn text.data-v-0c664d9c {
|
||||
color: #2A68FF;
|
||||
}
|
||||
.service-list.data-v-0c664d9c {
|
||||
/* 使用flex填充剩余空间 */
|
||||
flex: 1;
|
||||
background-color: transparent;
|
||||
box-sizing: border-box;
|
||||
overflow-y: auto;
|
||||
}
|
||||
.service-item.data-v-0c664d9c {
|
||||
width: 100%;
|
||||
box-sizing: border-box;
|
||||
background-color: #FFFFFF;
|
||||
border-radius: 16rpx;
|
||||
padding: 32rpx;
|
||||
margin-bottom: 24rpx;
|
||||
box-shadow: 0 2rpx 8rpx rgba(0, 0, 0, 0.04);
|
||||
position: relative;
|
||||
}
|
||||
.service-header.data-v-0c664d9c {
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
align-items: center;
|
||||
margin-bottom: 16rpx;
|
||||
position: relative;
|
||||
}
|
||||
.service-title.data-v-0c664d9c {
|
||||
font-size: 32rpx;
|
||||
font-weight: 500;
|
||||
color: #333;
|
||||
}
|
||||
.service-menu-button.data-v-0c664d9c {
|
||||
width: 48rpx;
|
||||
height: 48rpx;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
cursor: pointer;
|
||||
}
|
||||
.service-action-menu.data-v-0c664d9c {
|
||||
position: absolute;
|
||||
top: 60rpx;
|
||||
right: 32rpx;
|
||||
width: 160rpx;
|
||||
background-color: #FFFFFF;
|
||||
border-radius: 12rpx;
|
||||
box-shadow: 0 4rpx 12rpx rgba(0, 0, 0, 0.15);
|
||||
z-index: 100;
|
||||
overflow: hidden;
|
||||
margin-right: 0;
|
||||
}
|
||||
.service-action-menu-item.data-v-0c664d9c {
|
||||
padding: 24rpx 32rpx;
|
||||
font-size: 28rpx;
|
||||
color: #333;
|
||||
text-align: center;
|
||||
background-color: #FFFFFF;
|
||||
}
|
||||
.service-action-menu-item.data-v-0c664d9c:active {
|
||||
background-color: #F5F5F5;
|
||||
}
|
||||
.service-action-menu-item--danger.data-v-0c664d9c {
|
||||
color: #FF5722;
|
||||
}
|
||||
.service-action-menu-divider.data-v-0c664d9c {
|
||||
height: 1rpx;
|
||||
background-color: #E0E0E0;
|
||||
margin: 0 16rpx;
|
||||
}
|
||||
.service-action-menu-mask.data-v-0c664d9c {
|
||||
position: fixed;
|
||||
top: 0;
|
||||
left: 0;
|
||||
right: 0;
|
||||
bottom: 0;
|
||||
background-color: transparent;
|
||||
z-index: 99;
|
||||
}
|
||||
.service-meta.data-v-0c664d9c {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
margin-bottom: 16rpx;
|
||||
}
|
||||
.service-date.data-v-0c664d9c {
|
||||
font-size: 24rpx;
|
||||
color: #999;
|
||||
margin-right: 16rpx;
|
||||
}
|
||||
.service-duration.data-v-0c664d9c {
|
||||
font-size: 24rpx;
|
||||
color: #999;
|
||||
}
|
||||
.service-content.data-v-0c664d9c {
|
||||
margin-bottom: 24rpx;
|
||||
}
|
||||
.service-desc.data-v-0c664d9c {
|
||||
font-size: 28rpx;
|
||||
color: #666;
|
||||
line-height: 1.6;
|
||||
}
|
||||
.service-customer.data-v-0c664d9c {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
margin-bottom: 16rpx;
|
||||
}
|
||||
.customer-avatar.data-v-0c664d9c {
|
||||
width: 64rpx;
|
||||
height: 64rpx;
|
||||
background-color: #2196F3;
|
||||
border-radius: 50%;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
margin-right: 16rpx;
|
||||
}
|
||||
.avatar-text.data-v-0c664d9c {
|
||||
font-size: 32rpx;
|
||||
color: #FFFFFF;
|
||||
font-weight: 500;
|
||||
}
|
||||
.customer-name.data-v-0c664d9c {
|
||||
font-size: 28rpx;
|
||||
color: #333;
|
||||
}
|
||||
.ai-tag.data-v-0c664d9c {
|
||||
padding-top: 16rpx;
|
||||
border-top: 1px solid #F0F0F0;
|
||||
}
|
||||
.ai-tag text.data-v-0c664d9c {
|
||||
font-size: 24rpx;
|
||||
color: #999;
|
||||
}
|
||||
Reference in New Issue
Block a user