重新刷新界面来确保JWT能获取

This commit is contained in:
Linus Torvalds
2026-02-27 19:46:51 +08:00
parent 1f8a5f1d98
commit 0ba17317fb
2 changed files with 75 additions and 102 deletions

View File

@@ -29,7 +29,10 @@ export function CheckAndGetJWT(tx: 'raw'): string | null;
export function CheckAndGetJWT(tx: 'raw' | 'parsed'): WtsJWT | string | null { export function CheckAndGetJWT(tx: 'raw' | 'parsed'): WtsJWT | string | null {
if (!browser) { if (!browser) {
return null; return {
access: 'user',
name: '请刷新页面'
} as WtsJWT;
} }
let token: string; let token: string;
token = localStorage.getItem('jwt'); token = localStorage.getItem('jwt');

View File

@@ -29,15 +29,9 @@
import { criteria } from '$lib/states/ticketCriteriaSearch.svelte'; import { criteria } from '$lib/states/ticketCriteriaSearch.svelte';
import { goto } from '$app/navigation'; import { goto } from '$app/navigation';
import type { WtsStatus, WtsPriority, WtsCategory, WtsISP } from '$lib/types/enum'; import type { WtsStatus, WtsPriority, WtsCategory, WtsISP } from '$lib/types/enum';
import { WtsJWT } from '$lib/jwt';
onMount(() => Guard(IsOperator)); onMount(() => Guard(IsOperator));
onMount(() => setTimeout(() => goto('/op/ticket_search'), 500));//暂时的权宜之计
let token: WtsJWT = $state({} as WtsJWT);
onMount(() => {
token = CheckAndGetJWT('parsed');
});
let req = $state(criteria.r as FilterTicketsReq); let req = $state(criteria.r as FilterTicketsReq);
@@ -84,7 +78,7 @@
} }
const allZones = Object.keys(ZoneMap) as WtsZone[]; const allZones = Object.keys(ZoneMap) as WtsZone[];
const allStatuses = IsAdmin(token.access) const allStatuses = IsAdmin(CheckAndGetJWT('parsed').access)
? (Object.keys(StatusMap) as WtsStatus[]) ? (Object.keys(StatusMap) as WtsStatus[])
: (Object.keys(StatusMap).filter( : (Object.keys(StatusMap).filter(
(status) => status !== 'solved' && status !== 'canceled' (status) => status !== 'solved' && status !== 'canceled'
@@ -118,7 +112,9 @@
'delay', 'delay',
'escalated' 'escalated'
] as const satisfies readonly WtsStatus[]; ] as const satisfies readonly WtsStatus[];
const statusOptions: readonly WtsStatus[] = statusOptionsAdmin; //之前的区分没有意义,在后端会拦截的,在这里高花样,好像反而会破坏正常功能,感觉这个页面还是重写的样子。。 const statusOptions: readonly WtsStatus[] = IsAdmin(CheckAndGetJWT('parsed').access)
? statusOptionsAdmin
: statusOptionsUser;
const priorityOptions = [ const priorityOptions = [
'highest', 'highest',
@@ -195,7 +191,7 @@
<br /> <br />
<p>选择您需要检索报修工单的条件</p> <p>选择您需要检索报修工单的条件</p>
{#if IsAdmin(token.access)} {#if IsAdmin(CheckAndGetJWT('parsed').access)}
<br /> <br />
<RadioButtonGroup id="scope" legendText="范围" bind:selected={req.scope} required={true}> <RadioButtonGroup id="scope" legendText="范围" bind:selected={req.scope} required={true}>
<RadioButton labelText="只看活跃的" value="active" /> <RadioButton labelText="只看活跃的" value="active" />
@@ -218,30 +214,14 @@
<CheckboxGroup legendText="片区" id="block" bind:selected={zoneSelected} required={true}> <CheckboxGroup legendText="片区" id="block" bind:selected={zoneSelected} required={true}>
<Grid narrow> <Grid narrow>
<Row> <Row>
<Column sm={2} md={2} lg={4}> <Column sm={2} md={2} lg={4}><Checkbox value="FX" labelText={ZoneMap['FX']} /></Column>
<Checkbox value="FX" labelText={ZoneMap['FX']} /> <Column sm={2} md={2} lg={4}><Checkbox value="BM" labelText={ZoneMap['BM']} /></Column>
</Column> <Column sm={2} md={2} lg={4}><Checkbox value="DM" labelText={ZoneMap['DM']} /></Column>
<Column sm={2} md={2} lg={4}> <Column sm={2} md={2} lg={4}><Checkbox value="QT" labelText={ZoneMap['QT']} /></Column>
<Checkbox value="BM" labelText={ZoneMap['BM']} /> <Column sm={2} md={2} lg={4}><Checkbox value="XHAB" labelText={ZoneMap['XHAB']} /></Column>
</Column> <Column sm={2} md={2} lg={4}><Checkbox value="XHCD" labelText={ZoneMap['XHCD']} /></Column>
<Column sm={2} md={2} lg={4}> <Column sm={2} md={2} lg={4}><Checkbox value="ZH" labelText={ZoneMap['ZH']} /></Column>
<Checkbox value="DM" labelText={ZoneMap['DM']} /> <Column sm={2} md={2} lg={4}><Checkbox value="other" labelText={ZoneMap['other']} /></Column>
</Column>
<Column sm={2} md={2} lg={4}>
<Checkbox value="QT" labelText={ZoneMap['QT']} />
</Column>
<Column sm={2} md={2} lg={4}>
<Checkbox value="XHAB" labelText={ZoneMap['XHAB']} />
</Column>
<Column sm={2} md={2} lg={4}>
<Checkbox value="XHCD" labelText={ZoneMap['XHCD']} />
</Column>
<Column sm={2} md={2} lg={4}>
<Checkbox value="ZH" labelText={ZoneMap['ZH']} />
</Column>
<Column sm={2} md={2} lg={4}>
<Checkbox value="other" labelText={ZoneMap['other']} />
</Column>
</Row> </Row>
</Grid> </Grid>
</CheckboxGroup> </CheckboxGroup>
@@ -264,25 +244,23 @@
<CheckboxGroup legendText="状态" id="status" bind:selected={req.status} required={true}> <CheckboxGroup legendText="状态" id="status" bind:selected={req.status} required={true}>
<Grid narrow> <Grid narrow>
<Row> <Row>
<Column sm={2} md={2} lg={4}> <Column sm={2} md={2} lg={4}><Checkbox value="fresh" labelText={StatusMap['fresh']} /></Column
<Checkbox value="fresh" labelText={StatusMap['fresh']} /> >
</Column> <Column sm={2} md={2} lg={4}
<Column sm={2} md={2} lg={4}> ><Checkbox value="scheduled" labelText={StatusMap['scheduled']} /></Column
<Checkbox value="scheduled" labelText={StatusMap['scheduled']} /> >
</Column> <Column sm={2} md={2} lg={4}><Checkbox value="delay" labelText={StatusMap['delay']} /></Column
<Column sm={2} md={2} lg={4}> >
<Checkbox value="delay" labelText={StatusMap['delay']} /> <Column sm={2} md={2} lg={4}
</Column> ><Checkbox value="escalated" labelText={StatusMap['escalated']} /></Column
<Column sm={2} md={2} lg={4}> >
<Checkbox value="escalated" labelText={StatusMap['escalated']} /> {#if IsAdmin(CheckAndGetJWT('parsed').access)}
</Column> <Column sm={2} md={2} lg={4}
{#if IsAdmin(token.access)} ><Checkbox value="solved" labelText={StatusMap['solved']} /></Column
<Column sm={2} md={2} lg={4}> >
<Checkbox value="solved" labelText={StatusMap['solved']} /> <Column sm={2} md={2} lg={4}
</Column> ><Checkbox value="canceled" labelText={StatusMap['canceled']} /></Column
<Column sm={2} md={2} lg={4}> >
<Checkbox value="canceled" labelText={StatusMap['canceled']} />
</Column>
{/if} {/if}
</Row> </Row>
</Grid> </Grid>
@@ -306,24 +284,22 @@
<CheckboxGroup legendText="优先级" id="priority" bind:selected={req.priority} required={true}> <CheckboxGroup legendText="优先级" id="priority" bind:selected={req.priority} required={true}>
<Grid narrow> <Grid narrow>
<Row> <Row>
<Column sm={2} md={2} lg={4}> <Column sm={2} md={2} lg={4}><Checkbox value="highest" labelText="最高" /></Column>
<Checkbox value="highest" labelText="最高" /> <Column sm={2} md={2} lg={4}
</Column> ><Checkbox value="assigned" labelText={PriorityMap['assigned']} /></Column
<Column sm={2} md={2} lg={4}> >
<Checkbox value="assigned" labelText={PriorityMap['assigned']} /> <Column sm={2} md={2} lg={4}
</Column> ><Checkbox value="mainline" labelText={PriorityMap['mainline']} /></Column
<Column sm={2} md={2} lg={4}> >
<Checkbox value="mainline" labelText={PriorityMap['mainline']} /> <Column sm={2} md={2} lg={4}
</Column> ><Checkbox value="normal" labelText={PriorityMap['normal']} /></Column
<Column sm={2} md={2} lg={4}> >
<Checkbox value="normal" labelText={PriorityMap['normal']} /> <Column sm={2} md={2} lg={4}
</Column> ><Checkbox value="in-passing" labelText={PriorityMap['in-passing']} /></Column
<Column sm={2} md={2} lg={4}> >
<Checkbox value="in-passing" labelText={PriorityMap['in-passing']} /> <Column sm={2} md={2} lg={4}
</Column> ><Checkbox value="least" labelText={PriorityMap['least']} /></Column
<Column sm={2} md={2} lg={4}> >
<Checkbox value="least" labelText={PriorityMap['least']} />
</Column>
</Row> </Row>
</Grid> </Grid>
</CheckboxGroup> </CheckboxGroup>
@@ -345,21 +321,21 @@
<CheckboxGroup legendText="类型" id="category" bind:selected={req.category} required={true}> <CheckboxGroup legendText="类型" id="category" bind:selected={req.category} required={true}>
<Grid narrow> <Grid narrow>
<Row> <Row>
<Column sm={2} md={2} lg={4}> <Column sm={2} md={2} lg={4}
<Checkbox value="first-install" labelText={CategoryMap['first-install']} /> ><Checkbox value="first-install" labelText={CategoryMap['first-install']} /></Column
</Column> >
<Column sm={2} md={2} lg={4}> <Column sm={2} md={2} lg={4}
<Checkbox value="client-or-account" labelText={CategoryMap['client-or-account']} /> ><Checkbox value="client-or-account" labelText={CategoryMap['client-or-account']} /></Column
</Column> >
<Column sm={2} md={2} lg={4}> <Column sm={2} md={2} lg={4}
<Checkbox value="ip-or-device" labelText={CategoryMap['ip-or-device']} /> ><Checkbox value="ip-or-device" labelText={CategoryMap['ip-or-device']} /></Column
</Column> >
<Column sm={2} md={2} lg={4}> <Column sm={2} md={2} lg={4}
<Checkbox value="low-speed" labelText={CategoryMap['low-speed']} /> ><Checkbox value="low-speed" labelText={CategoryMap['low-speed']} /></Column
</Column> >
<Column sm={2} md={2} lg={4}> <Column sm={2} md={2} lg={4}
<Checkbox value="others" labelText={CategoryMap['others']} /> ><Checkbox value="others" labelText={CategoryMap['others']} /></Column
</Column> >
</Row> </Row>
</Grid> </Grid>
</CheckboxGroup> </CheckboxGroup>
@@ -382,21 +358,15 @@
<CheckboxGroup legendText="运营商" id="isp" bind:selected={req.isp} required={true}> <CheckboxGroup legendText="运营商" id="isp" bind:selected={req.isp} required={true}>
<Grid narrow> <Grid narrow>
<Row> <Row>
<Column sm={2} md={2} lg={4}> <Column sm={2} md={2} lg={4}
<Checkbox value="telecom" labelText={ISPMap['telecom']} /> ><Checkbox value="telecom" labelText={ISPMap['telecom']} /></Column
</Column> >
<Column sm={2} md={2} lg={4}> <Column sm={2} md={2} lg={4}><Checkbox value="unicom" labelText={ISPMap['unicom']} /></Column>
<Checkbox value="unicom" labelText={ISPMap['unicom']} /> <Column sm={2} md={2} lg={4}><Checkbox value="mobile" labelText={ISPMap['mobile']} /></Column>
</Column> <Column sm={2} md={2} lg={4}><Checkbox value="others" labelText={ISPMap['others']} /></Column>
<Column sm={2} md={2} lg={4}> <Column sm={2} md={2} lg={4}
<Checkbox value="mobile" labelText={ISPMap['mobile']} /> ><Checkbox value="broadnet" labelText={ISPMap['broadnet']} hidden /></Column
</Column> >
<Column sm={2} md={2} lg={4}>
<Checkbox value="others" labelText={ISPMap['others']} />
</Column>
<Column sm={2} md={2} lg={4}>
<Checkbox value="broadnet" labelText={ISPMap['broadnet']} hidden />
</Column>
<!--暂时藏起来--> <!--暂时藏起来-->
</Row> </Row>
</Grid> </Grid>