修复工单操作权限判断并补充路由回归
This commit is contained in:
1 parent
42dfead9cd
commit
1fe68cc8dd
2 files changed
+140
-20
No files matched your search
+17
-19
@@ -142,6 +142,8 @@ var le = {
|
||||
q = ref([]),
|
||||
J = ref(!1),
|
||||
Y = ref(0);
|
||||
// status 是可自定义的展示文案;所有变更入口只使用服务端操作权限。
|
||||
const canOperate = computed(() => V.value?.can_operate === 1);
|
||||
// 读取工单并确认实际存在;后续回复/催单/关闭完成也复用此入口同步服务端状态。
|
||||
async function X() {
|
||||
try {
|
||||
@@ -191,9 +193,9 @@ var le = {
|
||||
let $ = computed(() =>
|
||||
Y.value > 0 ? Z.value.find((e) => e.id === Y.value) : void 0,
|
||||
);
|
||||
// 关闭工单不允许上传;逐个上传并检查 save_name,成功部分保留在当前附件草稿。
|
||||
// 工单允许操作时逐个上传并检查 save_name,成功部分保留在当前附件草稿。
|
||||
async function xe(e) {
|
||||
if (J.value || G.value || V.value?.status === `已关闭`) return;
|
||||
if (J.value || G.value || !canOperate.value) return;
|
||||
let t = e.target,
|
||||
n = Array.from(t.files ?? []);
|
||||
if (n.length) {
|
||||
@@ -221,7 +223,7 @@ var le = {
|
||||
}
|
||||
// 仅允许引用真实回复 ID;首帖 ID 为 0 不设置为引用目标。
|
||||
function Ce(e) {
|
||||
e.id > 0 && V.value?.status !== `已关闭` && (Y.value = e.id);
|
||||
e.id > 0 && canOperate.value && (Y.value = e.id);
|
||||
}
|
||||
// 引用已删除时明确提示;否则优先用服务端引用快照,再从当前对话寻找原文。
|
||||
function we(e) {
|
||||
@@ -252,14 +254,9 @@ var le = {
|
||||
[],
|
||||
);
|
||||
}
|
||||
// 回复要求内容非空、附件已上传且工单未关闭;成功后清空草稿与引用并重读工单。
|
||||
// 回复要求内容非空、附件已上传且服务端允许操作;成功后清空草稿与引用并重读工单。
|
||||
async function De() {
|
||||
if (!(
|
||||
G.value ||
|
||||
!W.value.trim() ||
|
||||
J.value ||
|
||||
V.value?.status === `已关闭`
|
||||
)) {
|
||||
if (!(G.value || !W.value.trim() || J.value || !canOperate.value)) {
|
||||
G.value = !0;
|
||||
try {
|
||||
(await z.post(`/ticket/${B}/reply`, {
|
||||
@@ -280,6 +277,7 @@ var le = {
|
||||
}
|
||||
// 催单后重新读取工单,结果与可继续操作状态以服务端为准。
|
||||
async function Oe() {
|
||||
if (!canOperate.value) return;
|
||||
K.value = !0;
|
||||
try {
|
||||
(await z.put(`/ticket/${B}/urge`), await X());
|
||||
@@ -289,8 +287,9 @@ var le = {
|
||||
K.value = !1;
|
||||
}
|
||||
}
|
||||
// 关闭工单完成后重读详情,由新状态控制回复与上传入口。
|
||||
// 关闭工单完成后重读详情,由服务端权限控制回复与上传入口。
|
||||
async function ke() {
|
||||
if (!canOperate.value) return;
|
||||
K.value = !0;
|
||||
try {
|
||||
(await z.put(`/ticket/${B}/close`), await X());
|
||||
@@ -302,7 +301,7 @@ var le = {
|
||||
}
|
||||
return (
|
||||
onMounted(X),
|
||||
// 对话按时间展示并使用公共 HTML 清理与附件解析;引用删除有独立文案,关闭工单不再开放回复编辑。
|
||||
// 对话按时间展示并使用公共 HTML 清理与附件解析;引用删除有独立文案,只读工单不开放回复编辑。
|
||||
(n, a) => {
|
||||
let c = TicketNotice,
|
||||
m = NuxtLink,
|
||||
@@ -393,7 +392,7 @@ var le = {
|
||||
5,
|
||||
),
|
||||
]),
|
||||
unref(V).status === `已关闭`
|
||||
!unref(canOperate)
|
||||
? createCommentVNode(``, !0)
|
||||
: (openBlock(),
|
||||
createBlock(
|
||||
@@ -548,8 +547,7 @@ var le = {
|
||||
8,
|
||||
[`files`],
|
||||
),
|
||||
t.id > 0 &&
|
||||
unref(V).status !== `已关闭`
|
||||
t.id > 0 && unref(canOperate)
|
||||
? (openBlock(),
|
||||
createBlock(
|
||||
y,
|
||||
@@ -622,7 +620,7 @@ var le = {
|
||||
label: `回复内容`,
|
||||
"min-height": 140,
|
||||
placeholder: `输入回复内容…`,
|
||||
disabled: unref(V).status === `已关闭`,
|
||||
disabled: !unref(canOperate),
|
||||
},
|
||||
{
|
||||
"toolbar-end": withCtx(() => [
|
||||
@@ -648,7 +646,7 @@ var le = {
|
||||
disabled:
|
||||
unref(G) ||
|
||||
unref(J) ||
|
||||
unref(V).status === `已关闭`,
|
||||
!unref(canOperate),
|
||||
onChange: xe,
|
||||
},
|
||||
null,
|
||||
@@ -745,7 +743,7 @@ var le = {
|
||||
))
|
||||
: createCommentVNode(``, !0),
|
||||
createElementVNode(`div`, be, [
|
||||
unref(V).status === `已关闭`
|
||||
!unref(canOperate)
|
||||
? createCommentVNode(``, !0)
|
||||
: (openBlock(),
|
||||
createBlock(
|
||||
@@ -769,7 +767,7 @@ var le = {
|
||||
label: `提交回复`,
|
||||
loading: unref(G),
|
||||
disabled:
|
||||
unref(V).status === `已关闭` ||
|
||||
!unref(canOperate) ||
|
||||
!unref(W).trim() ||
|
||||
unref(J),
|
||||
onClick: De,
|
||||
|
||||
Reference in new issue
Block a user