|
@@ -1,71 +1,86 @@
|
|
|
import { inRevise } from "@/utils/shared";
|
|
|
import { computed, ref, watch } from "vue";
|
|
|
|
|
|
-
|
|
|
-export const urlUpdateQuery = (link: string, params: Record<string, string>, rep = false) => {
|
|
|
- const url = new URL(link)
|
|
|
- const ndx = url.hash.indexOf('?')
|
|
|
- let search: URLSearchParams
|
|
|
+export const urlUpdateQuery = (
|
|
|
+ link: string,
|
|
|
+ params: Record<string, string>,
|
|
|
+ rep = false
|
|
|
+) => {
|
|
|
+ const url = new URL(link);
|
|
|
+ const ndx = url.hash.indexOf("?");
|
|
|
+ let search: URLSearchParams;
|
|
|
if (!rep && ~ndx) {
|
|
|
search = new URLSearchParams({
|
|
|
...(urlGetQuery(link) as any),
|
|
|
- ...params
|
|
|
- })
|
|
|
+ ...params,
|
|
|
+ });
|
|
|
for (const key in params) {
|
|
|
- search.set(key, params[key])
|
|
|
+ search.set(key, params[key]);
|
|
|
}
|
|
|
} else {
|
|
|
- search = new URLSearchParams(params)
|
|
|
+ search = new URLSearchParams(params);
|
|
|
}
|
|
|
- url.hash = url.hash.substring(0, ndx + 1) + search.toString()
|
|
|
+ url.hash = url.hash.substring(0, ndx + 1) + search.toString();
|
|
|
|
|
|
- return url.toString()
|
|
|
-}
|
|
|
+ return url.toString();
|
|
|
+};
|
|
|
|
|
|
export const urlGetQuery = (link: string) => {
|
|
|
- const url = new URL(link)
|
|
|
- const hash = url.hash
|
|
|
- const ndx = hash.indexOf('?')
|
|
|
- if (!~ndx) return {}
|
|
|
+ const url = new URL(link);
|
|
|
+ const hash = url.hash;
|
|
|
+ const ndx = hash.indexOf("?");
|
|
|
+ if (!~ndx) return {};
|
|
|
|
|
|
const sParams = new URLSearchParams(hash.substring(ndx));
|
|
|
const rParams: Record<string, string> = {};
|
|
|
- [...sParams.entries()].forEach(item => {
|
|
|
- rParams[item[0]] = item[1]
|
|
|
- })
|
|
|
- return rParams
|
|
|
-}
|
|
|
+ [...sParams.entries()].forEach((item) => {
|
|
|
+ rParams[item[0]] = item[1];
|
|
|
+ });
|
|
|
+ return rParams;
|
|
|
+};
|
|
|
|
|
|
-export const params = ref<Record<string, string | undefined>>({})
|
|
|
+export const params = ref<Record<string, string | undefined>>({});
|
|
|
+const sParams = new URLSearchParams(location.search);
|
|
|
+[...sParams.entries()].forEach((item) => {
|
|
|
+ params.value[item[0]] = item[1];
|
|
|
+});
|
|
|
const updateParams = () => {
|
|
|
- const rParams = urlGetQuery(location.href)
|
|
|
+ const rParams = urlGetQuery(location.href);
|
|
|
if (inRevise(rParams, params.value)) {
|
|
|
- params.value = rParams
|
|
|
- }
|
|
|
-}
|
|
|
-
|
|
|
-watch(params, () => {
|
|
|
- const sParams = new URLSearchParams();
|
|
|
- for (const key in params.value) {
|
|
|
- params.value[key] && sParams.append(key, params.value[key])
|
|
|
+ params.value = rParams;
|
|
|
}
|
|
|
- const ndx = location.hash.indexOf('?')
|
|
|
- location.replace(location.hash.substring(0, ~ndx ? ndx : undefined) + '?' + sParams.toString())
|
|
|
-}, {deep: true})
|
|
|
+};
|
|
|
|
|
|
+watch(
|
|
|
+ params,
|
|
|
+ () => {
|
|
|
+ const sParams = new URLSearchParams();
|
|
|
+ for (const key in params.value) {
|
|
|
+ params.value[key] && sParams.append(key, params.value[key]);
|
|
|
+ }
|
|
|
+ const ndx = location.hash.indexOf("?");
|
|
|
+ location.replace(
|
|
|
+ location.hash.substring(0, ~ndx ? ndx : undefined) +
|
|
|
+ "?" +
|
|
|
+ sParams.toString()
|
|
|
+ );
|
|
|
+ },
|
|
|
+ { deep: true }
|
|
|
+);
|
|
|
|
|
|
-updateParams()
|
|
|
-window.addEventListener('hashchange', updateParams)
|
|
|
+updateParams();
|
|
|
+window.addEventListener("hashchange", updateParams);
|
|
|
|
|
|
-const getQuisk = (key: string) => computed({
|
|
|
- get() {
|
|
|
- return params.value[key]
|
|
|
- },
|
|
|
- set(val: string) {
|
|
|
- params.value[key] = val
|
|
|
- }
|
|
|
-})
|
|
|
+const getQuisk = (key: string) =>
|
|
|
+ computed({
|
|
|
+ get() {
|
|
|
+ return params.value[key];
|
|
|
+ },
|
|
|
+ set(val: string) {
|
|
|
+ params.value[key] = val;
|
|
|
+ },
|
|
|
+ });
|
|
|
|
|
|
-export const tabulationId = getQuisk('tabulationId')
|
|
|
-export const overviewId = getQuisk('overviewId')
|
|
|
-export const token = getQuisk('token')
|
|
|
+export const tabulationId = getQuisk("tabulationId");
|
|
|
+export const overviewId = getQuisk("overviewId");
|
|
|
+export const token = getQuisk("token");
|