"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