docs: annotate remaining routes layouts and view boundaries
This commit is contained in:
1 parent
408f8e5c98
commit
ab22d406c0
56 files changed
+403
No files matched your search
@@ -1,4 +1,7 @@
|
||||
<script>
|
||||
/**
|
||||
* 工单详情:把首帖与回复按时间组成对话,支持引用、附件上传、回复、催单与关闭;附件使用服务端保存标识提交。
|
||||
*/
|
||||
import "~/assets/styles/TicketAttachments.DtbJGLkE.css";
|
||||
import "~/assets/styles/RichTextEditor.NkmgPT5m.css";
|
||||
import "~/assets/styles/_id_.C-0--Lx-.css";
|
||||
@@ -138,6 +141,7 @@ var le = {
|
||||
q = ref([]),
|
||||
J = ref(!1),
|
||||
Y = ref(0);
|
||||
// 读取工单并确认实际存在;后续回复/催单/关闭完成也复用此入口同步服务端状态。
|
||||
async function X() {
|
||||
try {
|
||||
let e = await z.get(`/ticket/${B}`);
|
||||
@@ -177,12 +181,14 @@ var le = {
|
||||
}))
|
||||
: [];
|
||||
});
|
||||
// 按回复发送方显示客服或客户名称,不依赖消息顺序推断身份。
|
||||
function Q(e) {
|
||||
return e.type === `Admin`
|
||||
? e.admin_name || `客服`
|
||||
: e.client_name || `我`;
|
||||
}
|
||||
let $ = computed(() => Z.value.find((e) => e.id === Y.value));
|
||||
// 关闭工单不允许上传;逐个上传并检查 save_name,成功部分保留在当前附件草稿。
|
||||
async function xe(e) {
|
||||
if (J.value || G.value || V.value?.status === `已关闭`) return;
|
||||
let t = e.target,
|
||||
@@ -206,12 +212,15 @@ var le = {
|
||||
}
|
||||
}
|
||||
}
|
||||
// 尚未提交回复时可移除本地附件项,不直接删除历史工单附件。
|
||||
function Se(e) {
|
||||
G.value || q.value.splice(e, 1);
|
||||
}
|
||||
// 仅允许引用真实回复 ID;首帖 ID 为 0 不设置为引用目标。
|
||||
function Ce(e) {
|
||||
e.id > 0 && V.value?.status !== `已关闭` && (Y.value = e.id);
|
||||
}
|
||||
// 引用已删除时明确提示;否则优先用服务端引用快照,再从当前对话寻找原文。
|
||||
function we(e) {
|
||||
return Number(e.quote_info?.is_deleted) === 1
|
||||
? `该回复已删除`
|
||||
@@ -219,6 +228,7 @@ var le = {
|
||||
Z.value.find((t) => t.id === e.quote_reply_id)?.content ||
|
||||
`原回复 #${e.quote_reply_id}(内容暂不可用)`;
|
||||
}
|
||||
// 引用发送者优先来自引用快照,缺失时回查当前对话。
|
||||
function Te(e) {
|
||||
let t = e.quote_info,
|
||||
n = Z.value.find((t) => t.id === e.quote_reply_id);
|
||||
@@ -229,6 +239,7 @@ var le = {
|
||||
(n ? Q(n) : `回复 #${e.quote_reply_id}`)
|
||||
);
|
||||
}
|
||||
// 已删除引用不再显示附件;其他引用统一交给附件解析工具处理链接。
|
||||
function Ee(e) {
|
||||
return Number(e.quote_info?.is_deleted) === 1
|
||||
? []
|
||||
@@ -238,6 +249,7 @@ var le = {
|
||||
[],
|
||||
);
|
||||
}
|
||||
// 回复要求内容非空、附件已上传且工单未关闭;成功后清空草稿与引用并重读工单。
|
||||
async function De() {
|
||||
if (!(
|
||||
G.value ||
|
||||
@@ -263,6 +275,7 @@ var le = {
|
||||
}
|
||||
}
|
||||
}
|
||||
// 催单后重新读取工单,结果与可继续操作状态以服务端为准。
|
||||
async function Oe() {
|
||||
K.value = !0;
|
||||
try {
|
||||
@@ -273,6 +286,7 @@ var le = {
|
||||
K.value = !1;
|
||||
}
|
||||
}
|
||||
// 关闭工单完成后重读详情,由新状态控制回复与上传入口。
|
||||
async function ke() {
|
||||
K.value = !0;
|
||||
try {
|
||||
@@ -285,6 +299,7 @@ var le = {
|
||||
}
|
||||
return (
|
||||
onMounted(X),
|
||||
// 对话按时间展示并使用公共 HTML 清理与附件解析;引用删除有独立文案,关闭工单不再开放回复编辑。
|
||||
(n, a) => {
|
||||
let c = TicketNotice,
|
||||
m = NuxtLink,
|
||||
|
||||
@@ -1,4 +1,7 @@
|
||||
<script>
|
||||
/**
|
||||
* 创建工单:加载类型/部门及可选实例,上传附件后提交标题、富文本内容和关联实例;选项未就绪或附件仍上传时不提交。
|
||||
*/
|
||||
import "~/assets/styles/RichTextEditor.NkmgPT5m.css";
|
||||
import "~/assets/styles/create.gX6gpD00.css";
|
||||
import { toDisplayString } from "vue";
|
||||
@@ -113,13 +116,16 @@ var le = {
|
||||
G = ref(``),
|
||||
K = ref(!1),
|
||||
q = ref(!1);
|
||||
// 选择器优先显示主 IP,缺失时显示分配 IP。
|
||||
function J(e) {
|
||||
return e.dedicate_ip || e.assign_ip || ``;
|
||||
}
|
||||
// 实例候选文案组合 ID、名称与 IP,方便同名实例区分。
|
||||
function pe(e) {
|
||||
return [`#${e.id}`, e.name, J(e)].filter(Boolean).join(` / `);
|
||||
}
|
||||
let Y = computed(() => new Map(H.value.map((e) => [e.id, e])));
|
||||
// 已选实例展示产品名与 ID,列表缺失时仍保留其编号。
|
||||
function me(e) {
|
||||
let t = Y.value.get(e);
|
||||
return t
|
||||
@@ -128,6 +134,7 @@ var le = {
|
||||
}
|
||||
let X = ref([]),
|
||||
Z = ref(!1);
|
||||
// 逐个上传并要求 save_name,上传部分成功的附件仍保留,失败显示具体文件问题。
|
||||
async function he(e) {
|
||||
if (Z.value || W.value) return;
|
||||
let t = e.target,
|
||||
@@ -151,9 +158,11 @@ var le = {
|
||||
}
|
||||
}
|
||||
}
|
||||
// 提交期间锁定附件列表,其余时间可移除本地待提交项。
|
||||
function ge(e) {
|
||||
W.value || X.value.splice(e, 1);
|
||||
}
|
||||
// 类型/部门加载成功后再开放提交;实例可选列表分页读取,最多 100 页,实例查询失败不阻止无关联工单创建。
|
||||
async function Q() {
|
||||
if (!K.value) {
|
||||
((K.value = !0), (q.value = !1), (G.value = ``));
|
||||
@@ -191,6 +200,7 @@ var le = {
|
||||
}
|
||||
}
|
||||
}
|
||||
// 标题和内容非空且选项就绪后创建工单,只提交附件保存标识,成功进入返回 ID 的详情。
|
||||
async function $() {
|
||||
if (!(W.value || Z.value || K.value || !q.value)) {
|
||||
if (((G.value = ``), !U.title.trim())) {
|
||||
@@ -221,6 +231,7 @@ var le = {
|
||||
}
|
||||
return (
|
||||
onMounted(Q),
|
||||
// 类型/部门选项就绪且附件上传完成后才可创建;富文本编辑器与本地附件草稿共同组成提交内容。
|
||||
(n, i) => {
|
||||
let s = TicketNotice,
|
||||
c = button,
|
||||
|
||||
@@ -1,4 +1,7 @@
|
||||
<script>
|
||||
/**
|
||||
* 工单列表:状态/类型/关键词分页查询;筛选字典和统计独立请求,部分失败不会把已成功的选项全部丢弃。
|
||||
*/
|
||||
import "~/assets/styles/tickets.Dz8JrDhQ.css";
|
||||
import { toDisplayString } from "vue";
|
||||
import { onMounted } from "vue";
|
||||
@@ -88,6 +91,7 @@ var ie = {
|
||||
ticket_type_id: U.value ?? ``,
|
||||
}),
|
||||
});
|
||||
// 状态和类型使用 allSettled 分别处理,失败项单独汇总提示。
|
||||
async function Z() {
|
||||
if (!I.value) {
|
||||
((I.value = !0), (F.value = ``));
|
||||
@@ -111,6 +115,7 @@ var ie = {
|
||||
}
|
||||
}
|
||||
}
|
||||
// 工单统计独立加载,异常不清空工单主列表。
|
||||
async function Q() {
|
||||
if (!R.value) {
|
||||
((R.value = !0), (L.value = ``));
|
||||
@@ -152,9 +157,11 @@ var ie = {
|
||||
})),
|
||||
]),
|
||||
$ = computed(() => !!B.value || !!H.value || !!U.value);
|
||||
// 确认搜索后应用关键词并交由公共分页工具重载。
|
||||
function ue() {
|
||||
((B.value = z.value.trim()), X());
|
||||
}
|
||||
// 清除关键词、状态与工单类型,恢复全部工单。
|
||||
function de() {
|
||||
((z.value = ``),
|
||||
(B.value = ``),
|
||||
@@ -166,6 +173,7 @@ var ie = {
|
||||
onMounted(() => {
|
||||
(Z(), Q());
|
||||
}),
|
||||
// 筛选字典、统计提示与工单主列表分开展示,失败选项提供重试,不用空列表掩盖请求错误。
|
||||
(t, r) => {
|
||||
let o = message,
|
||||
f = button,
|
||||
|
||||
@@ -1,4 +1,7 @@
|
||||
<script>
|
||||
/**
|
||||
* 旧工单详情路由适配层:复用动态工单详情页,详情 ID 由被复用页从路由参数/查询中读取。
|
||||
*/
|
||||
import "~/assets/styles/TicketAttachments.DtbJGLkE.css";
|
||||
import "~/assets/styles/RichTextEditor.NkmgPT5m.css";
|
||||
import "~/assets/styles/_id_.C-0--Lx-.css";
|
||||
@@ -9,6 +12,7 @@ import _id_ from "~/pages/tickets/[id].vue";
|
||||
var i = defineComponent({
|
||||
__name: `ticket`,
|
||||
setup(t) {
|
||||
// 旧路径只挂载动态详情页,不维护额外工单状态。
|
||||
return (t, i) => (openBlock(), createBlock(_id_));
|
||||
},
|
||||
});
|
||||
|
||||
Reference in new issue
Block a user