解决微信小程序首页空白问题。

This commit is contained in:
cst61
2026-02-01 09:21:11 +08:00
parent 80d6d46182
commit cc01c4dc47
454 changed files with 404 additions and 62235 deletions

View File

@@ -1,702 +0,0 @@
"use strict";
const common_vendor = require("../../../common/vendor.js");
const common_config = require("../../../common/config.js");
function getTenantId() {
try {
return common_vendor.index.getStorageSync("backend-tenant-id") || "";
} catch (e) {
common_vendor.index.__f__("error", "at pages-subpackage/champion/components/practice-tab.vue:347", "获取 tenantId 失败:", e);
return "";
}
}
const _sfc_main = {
name: "PracticeTab",
data() {
return {
// 陪练相关数据
practiceList: [],
practiceLoading: false,
practiceTotal: 0,
practicePage: {
current: 1,
size: 10
},
practiceQuery: {
title: "",
industry: "",
creator: "",
status: ""
},
// 添加陪练弹出框
showPracticePopup: false,
practiceForm: {
title: "",
category: "",
industry: "",
content: "",
remark: ""
},
// 编辑陪练弹出框
showEditPracticePopup: false,
editPracticeForm: {
id: "",
title: "",
category: "",
industry: "",
content: "",
remark: ""
},
// 陪练操作菜单
selectedPracticeItem: null,
showPracticeActionMenu: false,
// 陪练弹出框
showPracticeTrainingPopup: false,
practiceTrainingForm: {
scenarioId: "",
title: "",
scenario: "",
participantName: "",
participantPhone: ""
},
// 内容详情弹出框
showContentPopup: false,
contentPopupTitle: "",
contentPopupText: ""
};
},
mounted() {
this.fetchPracticeList();
},
methods: {
// 陪练相关方法
onPracticeSearch() {
this.practicePage.current = 1;
this.fetchPracticeList({ force: true });
},
onPracticeRefresh() {
this.practicePage.current = 1;
this.fetchPracticeList({ force: true });
},
onPracticeReachBottom() {
if (this.practiceLoading)
return;
if (this.practiceList.length >= this.practiceTotal)
return;
this.practicePage.current += 1;
this.fetchPracticeList();
},
async fetchPracticeList({ force = false } = {}) {
var _a, _b, _c, _d, _e, _f, _g, _h, _i;
if (this.practiceLoading && !force) {
return;
}
this.practiceLoading = true;
try {
const queryParams = {
current: this.practicePage.current,
size: this.practicePage.size,
category: "AI陪练虚拟人"
// 默认添加知识分类参数
};
const trimmedTitle = (_b = (_a = this.practiceQuery) == null ? void 0 : _a.title) == null ? void 0 : _b.trim();
const trimmedIndustry = (_d = (_c = this.practiceQuery) == null ? void 0 : _c.industry) == null ? void 0 : _d.trim();
const trimmedCreator = (_f = (_e = this.practiceQuery) == null ? void 0 : _e.creator) == null ? void 0 : _f.trim();
const trimmedStatus = (_h = (_g = this.practiceQuery) == null ? void 0 : _g.status) == null ? void 0 : _h.trim();
if (trimmedTitle) {
queryParams.title = trimmedTitle;
}
if (trimmedIndustry) {
queryParams.industry = trimmedIndustry;
}
if (trimmedCreator) {
queryParams.creator = trimmedCreator;
}
if (trimmedStatus) {
queryParams.status = trimmedStatus;
}
const queryString = Object.keys(queryParams).map((key) => `${key}=${encodeURIComponent(queryParams[key])}`).join("&");
const url = `${common_config.getApiUrl("/api/knowledgeBase/list")}?${queryString}`;
const tenantId = getTenantId();
const headers = {};
if (tenantId) {
headers["X-Tenant-Id"] = tenantId;
}
const res = await common_vendor.index.request({
url,
method: "POST",
header: headers,
timeout: 1e4
});
if (res.statusCode === 200 && res.data && res.data.success) {
const records = Array.isArray(res.data.data) ? res.data.data : [];
if (this.practicePage.current === 1 || force) {
this.practiceList = records;
} else {
this.practiceList = this.practiceList.concat(records);
}
this.practiceTotal = Number(res.data.total) || 0;
} else {
this.practiceList = [];
this.practiceTotal = 0;
common_vendor.index.showToast({
title: ((_i = res.data) == null ? void 0 : _i.message) || "获取陪练列表失败",
icon: "none"
});
}
} catch (error) {
common_vendor.index.__f__("error", "at pages-subpackage/champion/components/practice-tab.vue:493", "获取陪练列表失败:", error);
common_vendor.index.showToast({
title: "获取陪练列表失败,请稍后重试",
icon: "none"
});
} finally {
this.practiceLoading = false;
}
},
onPracticeActionBtnClick(item) {
if (this.selectedPracticeItem && this.selectedPracticeItem.id === item.id && this.showPracticeActionMenu) {
this.closePracticeActionMenu();
return;
}
this.selectedPracticeItem = item;
this.showPracticeActionMenu = true;
},
closePracticeActionMenu() {
this.showPracticeActionMenu = false;
this.selectedPracticeItem = null;
},
handleStartPractice(item) {
this.closePracticeActionMenu();
let participantName = "";
let participantPhone = "";
try {
const loginResponse = common_vendor.index.getStorageSync("backend-login-response") || {};
const phone = loginResponse.phone || "";
const userName = loginResponse.userName || "";
participantPhone = phone;
participantName = phone || userName;
} catch (e) {
common_vendor.index.__f__("error", "at pages-subpackage/champion/components/practice-tab.vue:534", "获取登录用户信息失败:", e);
}
this.practiceTrainingForm = {
scenarioId: item.id || "",
title: item.title || "",
scenario: item.content || item.detail || "",
participantName,
participantPhone
};
this.showPracticeTrainingPopup = true;
},
closePracticeTrainingPopup() {
this.showPracticeTrainingPopup = false;
this.practiceTrainingForm = {
scenarioId: "",
title: "",
scenario: "",
participantName: "",
participantPhone: ""
};
},
async submitPracticeTraining() {
var _a, _b, _c, _d;
if (!this.practiceTrainingForm.title || !this.practiceTrainingForm.title.trim()) {
common_vendor.index.showToast({
title: "请输入陪练标题",
icon: "none"
});
return;
}
if (!this.practiceTrainingForm.participantName || !this.practiceTrainingForm.participantName.trim()) {
common_vendor.index.showToast({
title: "请输入参与人姓名",
icon: "none"
});
return;
}
if (!this.practiceTrainingForm.participantPhone || !this.practiceTrainingForm.participantPhone.trim()) {
common_vendor.index.showToast({
title: "请输入参与人电话",
icon: "none"
});
return;
}
try {
common_vendor.index.showLoading({
title: "创建中..."
});
const tenantId = getTenantId();
const payload = {
scenarioId: this.practiceTrainingForm.scenarioId || "",
title: ((_a = this.practiceTrainingForm.title) == null ? void 0 : _a.trim()) || "",
scenario: ((_b = this.practiceTrainingForm.scenario) == null ? void 0 : _b.trim()) || "",
participantName: this.practiceTrainingForm.participantName.trim(),
participantPhone: this.practiceTrainingForm.participantPhone.trim()
};
if (tenantId) {
payload.tenantId = tenantId;
}
const headers = {
"Content-Type": "application/json"
};
if (tenantId) {
headers["X-Tenant-Id"] = tenantId;
}
const res = await common_vendor.index.request({
url: common_config.getApiUrl("/api/trainingMain/add"),
method: "POST",
data: payload,
header: headers,
timeout: 15e3
});
common_vendor.index.hideLoading();
if (res.statusCode === 200 && res.data && (res.data.success || res.data.code === 200)) {
common_vendor.index.showToast({
title: ((_c = res.data) == null ? void 0 : _c.message) || "创建成功",
icon: "success"
});
this.closePracticeTrainingPopup();
this.$emit("switch-to-training");
} else {
common_vendor.index.showToast({
title: ((_d = res.data) == null ? void 0 : _d.message) || "创建失败",
icon: "none"
});
}
} catch (error) {
common_vendor.index.hideLoading();
common_vendor.index.__f__("error", "at pages-subpackage/champion/components/practice-tab.vue:638", "创建陪练失败:", error);
common_vendor.index.showToast({
title: (error == null ? void 0 : error.message) || "创建失败,请重试",
icon: "none"
});
}
},
handleEditPractice(item) {
this.closePracticeActionMenu();
this.editPracticeForm = {
id: item.id,
title: item.title || "",
category: item.category || "",
industry: item.industry || "",
content: item.content || "",
remark: item.remark || ""
};
this.showEditPracticePopup = true;
},
closeEditPracticePopup() {
this.showEditPracticePopup = false;
this.editPracticeForm = {
id: "",
title: "",
category: "",
industry: "",
content: "",
remark: ""
};
},
async submitEditPractice() {
var _a, _b;
if (!this.editPracticeForm.title || !this.editPracticeForm.title.trim()) {
common_vendor.index.showToast({
title: "请输入知识标题",
icon: "none"
});
return;
}
try {
common_vendor.index.showLoading({
title: "保存中..."
});
const tenantId = getTenantId();
const headers = {
"Content-Type": "application/json"
};
if (tenantId) {
headers["X-Tenant-Id"] = tenantId;
if (!this.editPracticeForm.tenantId) {
this.editPracticeForm.tenantId = tenantId;
}
}
const res = await common_vendor.index.request({
url: common_config.getApiUrl("/api/knowledgeBase/update"),
method: "PUT",
data: this.editPracticeForm,
header: headers,
timeout: 15e3
});
common_vendor.index.hideLoading();
if (res.statusCode === 200 && res.data && (res.data.success || res.data.code === 200)) {
common_vendor.index.showToast({
title: ((_a = res.data) == null ? void 0 : _a.message) || "保存成功",
icon: "success"
});
this.closeEditPracticePopup();
this.practicePage.current = 1;
this.fetchPracticeList({ force: true });
} else {
common_vendor.index.showToast({
title: ((_b = res.data) == null ? void 0 : _b.message) || "保存失败",
icon: "none"
});
}
} catch (error) {
common_vendor.index.hideLoading();
common_vendor.index.__f__("error", "at pages-subpackage/champion/components/practice-tab.vue:724", "保存陪练失败:", error);
common_vendor.index.showToast({
title: (error == null ? void 0 : error.message) || "保存失败,请重试",
icon: "none"
});
}
},
handleDeletePractice(item) {
this.closePracticeActionMenu();
common_vendor.index.showModal({
title: "提示",
content: "确认删除该陪练吗?",
success: async (res) => {
var _a, _b;
if (res.confirm) {
try {
common_vendor.index.showLoading({
title: "删除中..."
});
const tenantId = getTenantId();
const headers = {};
if (tenantId) {
headers["X-Tenant-Id"] = tenantId;
}
const deleteRes = await common_vendor.index.request({
url: common_config.getApiUrl(`/api/knowledgeBase/delete/${item.id}`),
method: "DELETE",
header: headers,
timeout: 15e3
});
common_vendor.index.hideLoading();
if (deleteRes.statusCode === 200 && deleteRes.data && (deleteRes.data.success || deleteRes.data.code === 200)) {
common_vendor.index.showToast({
title: ((_a = deleteRes.data) == null ? void 0 : _a.message) || "删除成功",
icon: "success"
});
this.practicePage.current = 1;
this.fetchPracticeList({ force: true });
} else {
common_vendor.index.showToast({
title: ((_b = deleteRes.data) == null ? void 0 : _b.message) || "删除失败",
icon: "none"
});
}
} catch (error) {
common_vendor.index.hideLoading();
common_vendor.index.__f__("error", "at pages-subpackage/champion/components/practice-tab.vue:775", "删除陪练失败:", error);
common_vendor.index.showToast({
title: (error == null ? void 0 : error.message) || "删除失败,请重试",
icon: "none"
});
}
}
}
});
},
// 添加陪练相关方法
showAddPractice() {
this.showPracticePopup = true;
this.practiceForm = {
title: "",
category: "AI陪练虚拟人",
// 固定值,不可修改
industry: "汽车销售",
// 默认值
content: "",
remark: ""
};
},
closePracticePopup() {
this.showPracticePopup = false;
},
async submitPractice() {
var _a, _b, _c, _d, _e, _f;
if (!this.practiceForm.title || !this.practiceForm.title.trim()) {
common_vendor.index.showToast({
title: "请输入知识标题",
icon: "none"
});
return;
}
try {
common_vendor.index.showLoading({
title: "提交中..."
});
const tenantId = getTenantId();
const payload = {
title: this.practiceForm.title.trim(),
category: ((_a = this.practiceForm.category) == null ? void 0 : _a.trim()) || "",
industry: ((_b = this.practiceForm.industry) == null ? void 0 : _b.trim()) || "",
content: ((_c = this.practiceForm.content) == null ? void 0 : _c.trim()) || "",
remark: ((_d = this.practiceForm.remark) == null ? void 0 : _d.trim()) || ""
};
if (tenantId) {
payload.tenantId = tenantId;
}
const headers = {
"Content-Type": "application/json"
};
if (tenantId) {
headers["X-Tenant-Id"] = tenantId;
}
const res = await common_vendor.index.request({
url: common_config.getApiUrl("/api/knowledgeBase/add"),
method: "POST",
data: payload,
header: headers,
timeout: 15e3
});
common_vendor.index.hideLoading();
if (res.statusCode === 200 && res.data && (res.data.success || res.data.code === 200)) {
common_vendor.index.showToast({
title: ((_e = res.data) == null ? void 0 : _e.message) || "提交成功",
icon: "success"
});
this.closePracticePopup();
this.practicePage.current = 1;
this.fetchPracticeList({ force: true });
} else {
common_vendor.index.showToast({
title: ((_f = res.data) == null ? void 0 : _f.message) || "提交失败",
icon: "none"
});
}
} catch (error) {
common_vendor.index.hideLoading();
common_vendor.index.__f__("error", "at pages-subpackage/champion/components/practice-tab.vue:866", "提交陪练失败:", error);
common_vendor.index.showToast({
title: (error == null ? void 0 : error.message) || "提交失败,请重试",
icon: "none"
});
}
},
getContentPreview(content, limit = 30) {
if (!content)
return "";
const text = String(content).replace(/\s+/g, " ").trim();
if (!text)
return "";
return text.length > limit ? `${text.substring(0, limit)}...` : text;
},
showFullText(title, content) {
if (!content)
return;
this.contentPopupTitle = title || "详情";
this.contentPopupText = String(content);
this.showContentPopup = true;
},
closeContentPopup() {
this.showContentPopup = false;
this.contentPopupTitle = "";
this.contentPopupText = "";
}
}
};
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($data.practiceTotal),
b: common_vendor.o((...args) => $options.onPracticeSearch && $options.onPracticeSearch(...args)),
c: $data.practiceQuery.title,
d: common_vendor.o(($event) => $data.practiceQuery.title = $event.detail.value),
e: common_vendor.o((...args) => $options.onPracticeSearch && $options.onPracticeSearch(...args)),
f: $data.practiceQuery.industry,
g: common_vendor.o(($event) => $data.practiceQuery.industry = $event.detail.value),
h: common_vendor.p({
type: "refresh",
size: "18",
color: "#2A68FF"
}),
i: common_vendor.o((...args) => $options.onPracticeRefresh && $options.onPracticeRefresh(...args)),
j: common_vendor.p({
type: "plus",
size: "18",
color: "#2A68FF"
}),
k: common_vendor.o((...args) => $options.showAddPractice && $options.showAddPractice(...args)),
l: common_vendor.f($data.practiceList, (item, index, i0) => {
return common_vendor.e({
a: common_vendor.t((item.title || "知").charAt(0)),
b: common_vendor.t(item.title || "未命名知识"),
c: "28cfaa6a-2-" + i0,
d: common_vendor.o(($event) => $options.onPracticeActionBtnClick(item), item.id || index),
e: item.industry
}, item.industry ? {
f: common_vendor.t(item.industry)
} : {}, {
g: item.content || item.detail
}, item.content || item.detail ? {
h: common_vendor.t($options.getContentPreview(item.content || item.detail, 30)),
i: common_vendor.o(($event) => $options.showFullText("详情", item.content || item.detail), item.id || index)
} : {}, {
j: item.remark
}, item.remark ? {
k: common_vendor.t($options.getContentPreview(item.remark, 30)),
l: common_vendor.o(($event) => $options.showFullText("", item.remark), item.id || index)
} : {}, {
m: $data.selectedPracticeItem && $data.selectedPracticeItem.id === item.id && $data.showPracticeActionMenu
}, $data.selectedPracticeItem && $data.selectedPracticeItem.id === item.id && $data.showPracticeActionMenu ? {
n: common_vendor.o(($event) => $options.handleStartPractice(item), item.id || index),
o: common_vendor.o(($event) => $options.handleEditPractice(item), item.id || index),
p: common_vendor.o(($event) => $options.handleDeletePractice(item), item.id || index),
q: common_vendor.o(() => {
}, item.id || index)
} : {}, {
r: item.id || index
});
}),
m: common_vendor.p({
type: "more-filled",
size: "20",
color: "#999"
}),
n: !$data.practiceLoading && !$data.practiceList.length
}, !$data.practiceLoading && !$data.practiceList.length ? {} : {}, {
o: $data.practiceLoading && $data.practiceList.length
}, $data.practiceLoading && $data.practiceList.length ? {} : {}, {
p: common_vendor.o((...args) => $options.onPracticeReachBottom && $options.onPracticeReachBottom(...args)),
q: $data.showPracticePopup
}, $data.showPracticePopup ? {
r: common_vendor.o((...args) => $options.closePracticePopup && $options.closePracticePopup(...args))
} : {}, {
s: $data.showPracticePopup
}, $data.showPracticePopup ? {
t: common_vendor.p({
type: "close",
size: "20",
color: "#999"
}),
v: common_vendor.o((...args) => $options.closePracticePopup && $options.closePracticePopup(...args)),
w: $data.practiceForm.title,
x: common_vendor.o(($event) => $data.practiceForm.title = $event.detail.value),
y: $data.practiceForm.category,
z: common_vendor.o(($event) => $data.practiceForm.category = $event.detail.value),
A: $data.practiceForm.industry,
B: common_vendor.o(($event) => $data.practiceForm.industry = $event.detail.value),
C: $data.practiceForm.content,
D: common_vendor.o(($event) => $data.practiceForm.content = $event.detail.value),
E: $data.practiceForm.remark,
F: common_vendor.o(($event) => $data.practiceForm.remark = $event.detail.value),
G: common_vendor.p({
type: "close",
size: "20",
color: "#2A68FF"
}),
H: common_vendor.o((...args) => $options.closePracticePopup && $options.closePracticePopup(...args)),
I: common_vendor.p({
type: "checkmarkempty",
size: "20",
color: "#2A68FF"
}),
J: common_vendor.o((...args) => $options.submitPractice && $options.submitPractice(...args)),
K: common_vendor.o(() => {
})
} : {}, {
L: $data.showEditPracticePopup
}, $data.showEditPracticePopup ? {
M: common_vendor.o((...args) => $options.closeEditPracticePopup && $options.closeEditPracticePopup(...args))
} : {}, {
N: $data.showEditPracticePopup
}, $data.showEditPracticePopup ? {
O: common_vendor.p({
type: "close",
size: "20",
color: "#999"
}),
P: common_vendor.o((...args) => $options.closeEditPracticePopup && $options.closeEditPracticePopup(...args)),
Q: $data.editPracticeForm.title,
R: common_vendor.o(($event) => $data.editPracticeForm.title = $event.detail.value),
S: $data.editPracticeForm.category,
T: common_vendor.o(($event) => $data.editPracticeForm.category = $event.detail.value),
U: $data.editPracticeForm.industry,
V: common_vendor.o(($event) => $data.editPracticeForm.industry = $event.detail.value),
W: $data.editPracticeForm.content,
X: common_vendor.o(($event) => $data.editPracticeForm.content = $event.detail.value),
Y: $data.editPracticeForm.remark,
Z: common_vendor.o(($event) => $data.editPracticeForm.remark = $event.detail.value),
aa: common_vendor.p({
type: "close",
size: "20",
color: "#2A68FF"
}),
ab: common_vendor.o((...args) => $options.closeEditPracticePopup && $options.closeEditPracticePopup(...args)),
ac: common_vendor.p({
type: "checkmarkempty",
size: "20",
color: "#2A68FF"
}),
ad: common_vendor.o((...args) => $options.submitEditPractice && $options.submitEditPractice(...args)),
ae: common_vendor.o(() => {
})
} : {}, {
af: $data.showPracticeTrainingPopup
}, $data.showPracticeTrainingPopup ? {
ag: common_vendor.o((...args) => $options.closePracticeTrainingPopup && $options.closePracticeTrainingPopup(...args))
} : {}, {
ah: $data.showPracticeTrainingPopup
}, $data.showPracticeTrainingPopup ? {
ai: common_vendor.p({
type: "close",
size: "20",
color: "#999"
}),
aj: common_vendor.o((...args) => $options.closePracticeTrainingPopup && $options.closePracticeTrainingPopup(...args)),
ak: $data.practiceTrainingForm.title,
al: common_vendor.o(($event) => $data.practiceTrainingForm.title = $event.detail.value),
am: $data.practiceTrainingForm.scenario,
an: common_vendor.o(($event) => $data.practiceTrainingForm.scenario = $event.detail.value),
ao: $data.practiceTrainingForm.participantName,
ap: common_vendor.o(($event) => $data.practiceTrainingForm.participantName = $event.detail.value),
aq: $data.practiceTrainingForm.participantPhone,
ar: common_vendor.o(($event) => $data.practiceTrainingForm.participantPhone = $event.detail.value),
as: common_vendor.p({
type: "close",
size: "20",
color: "#2A68FF"
}),
at: common_vendor.o((...args) => $options.closePracticeTrainingPopup && $options.closePracticeTrainingPopup(...args)),
av: common_vendor.p({
type: "checkmarkempty",
size: "20",
color: "#2A68FF"
}),
aw: common_vendor.o((...args) => $options.submitPracticeTraining && $options.submitPracticeTraining(...args)),
ax: common_vendor.o(() => {
})
} : {}, {
ay: $data.showContentPopup
}, $data.showContentPopup ? {
az: common_vendor.o((...args) => $options.closeContentPopup && $options.closeContentPopup(...args))
} : {}, {
aA: $data.showContentPopup
}, $data.showContentPopup ? {
aB: common_vendor.t($data.contentPopupTitle),
aC: common_vendor.p({
type: "close",
size: "20",
color: "#999"
}),
aD: common_vendor.o((...args) => $options.closeContentPopup && $options.closeContentPopup(...args)),
aE: common_vendor.t($data.contentPopupText),
aF: common_vendor.o(() => {
})
} : {}, {
aG: $data.showPracticeActionMenu
}, $data.showPracticeActionMenu ? {
aH: common_vendor.o((...args) => $options.closePracticeActionMenu && $options.closePracticeActionMenu(...args))
} : {});
}
const Component = /* @__PURE__ */ common_vendor._export_sfc(_sfc_main, [["render", _sfc_render], ["__scopeId", "data-v-28cfaa6a"]]);
wx.createComponent(Component);
//# sourceMappingURL=../../../../.sourcemap/mp-weixin/pages-subpackage/champion/components/practice-tab.js.map