From 4f218aac60322f6b0cd90447f8c13f6fb6ff88e8 Mon Sep 17 00:00:00 2001
From: wwf <1971391498@qq.com>
Date: 星期三, 11 三月 2026 17:29:49 +0800
Subject: [PATCH] 考点核验
---
src/utils/tool.js | 137 ++++++++++++++++++++++++++++++++++++++++++---
1 files changed, 127 insertions(+), 10 deletions(-)
diff --git a/src/utils/tool.js b/src/utils/tool.js
index 9826791..02f842c 100644
--- a/src/utils/tool.js
+++ b/src/utils/tool.js
@@ -1,16 +1,17 @@
import { useOptionItemsStore } from '@/stores/optionItems.js';
+import $qxueyou from '@/config/qxueyou.js'
/**
* 鑾峰彇 assets/images 鐩綍涓嬬殑鍥剧墖URL
* @param {string} imageName - 鍥剧墖鏂囦欢鍚嶏紙鍖呭惈鎵╁睍鍚嶏級
* @returns {string} 鍥剧墖鐨勫畬鏁碪RL
*/
export const getImageUrl = (imageName) => {
- try {
- return new URL('../assets/images/' + imageName, import.meta.url).href;
- } catch (error) {
- console.warn(`Failed to load image: ${imageName}`, error);
- return "";
- }
+ // 浣跨敤 Vite 鐨� glob 鍔熻兘鍔ㄦ�佸鍏ュ浘鐗囪祫婧�
+ const modules = import.meta.glob('../assets/images/**/*.{png,jpg,jpeg,gif,svg,webp}', { eager: true });
+ // 绉婚櫎寮�澶寸殑鏂滄潬
+ const cleanName = imageName.startsWith('/') ? imageName.slice(1) : imageName;
+ const path = `../assets/images/${cleanName}`;
+ return modules[path]?.default || '';
};
export const getUUID = () => {
let s = []
@@ -66,11 +67,39 @@
}
}
-export const getOccupationName = (code) => {
+export const getOccupationName = (id) => {
const { occupationItems } = useOptionItemsStore()
- const obj = occupationItems.find(ele => ele.code == code)
+ const obj = occupationItems.find(ele => ele.id == id)
- return obj?.name || ''
+ return obj?.occupationJob || ''
+}
+
+const levelKey = {
+ '5': '浜旂骇',
+ '4': '鍥涚骇',
+ '3': '涓夌骇',
+ '2': '浜岀骇',
+ '1': '涓�绾�'
+}
+
+export const getLevelItems = (occupationId) => {
+ const { occupationItems } = useOptionItemsStore()
+ const obj = occupationItems.find(ele => ele.id == occupationId)
+ if (!obj) return []
+ let levelItems = []
+ obj.levelStr.split(',').forEach(ele => {
+ levelItems.push({ name: levelKey[ele], value: ele },)
+ })
+ return levelItems || []
+}
+
+export const getLevelName = (levelStr) => {
+ let levelList = levelStr?.split(',') || []
+ let tempList = []
+ levelList.forEach(ele => {
+ tempList.push(levelKey[ele])
+ })
+ return tempList.join(',')
}
export const getJobName = (occupationCode, jobCode) => {
@@ -82,4 +111,92 @@
if (!job) return ''
return job.jobName || ''
-}
\ No newline at end of file
+}
+
+export const getFileUrlName = (url = '') => {
+ const fullFilename = url?.substring(url.lastIndexOf('/') + 1);
+ return fullFilename || ''
+}
+
+/**
+ * 閫氳繃URL涓嬭浇鏂囦欢锛堢畝鍗曟柟娉曪級
+ * @param {string} url - 鏂囦欢URL
+ * @param {string} [filename] - 鑷畾涔夋枃浠跺悕
+ */
+export const downloadFileByUrl = function(url, filename) {
+ // 鍒涘缓a鏍囩
+ const link = document.createElement('a');
+ link.href = url.includes('http') ? url : $qxueyou.qxyRes + url ;
+ link.download = filename || '鏂囦欢';
+ link.style.display = 'none';
+
+ // 娣诲姞鍒版枃妗e苟瑙﹀彂鐐瑰嚮
+ document.body.appendChild(link);
+ link.click();
+ document.body.removeChild(link);
+}
+
+export const uploadByBase64 = async function(base64, fileName, fileType = 'png') {
+ if (!base64) return null
+
+ let blob = getBlobByBase64(base64, fileType)
+ if (!blob) return null
+
+ return await uploadRequest(blob, fileName, fileType)
+}
+
+let getBlobByBase64 = function(base64, fileType){
+ if (!base64) return null
+
+ let bstr = window.atob(base64.split(',')[1])
+ let bstrLen = bstr.length
+ let u8arr = new Uint8Array(bstrLen);
+ while (bstrLen--) {
+ u8arr[bstrLen] = bstr.charCodeAt(bstrLen);
+ }
+ return new Blob([u8arr], {type: fileType})
+}
+
+let uploadRequest = function(blob, fileName, fileType){
+ return new Promise((resolve) => {
+ let fd = new FormData()
+ let xhr = new XMLHttpRequest()
+ fd.append('image', blob, `${fileName}.${fileType}`)
+ xhr.open('POST', $qxueyou.upload, true)
+ xhr.onreadystatechange = () => {
+ if (xhr.readyState === 4 && xhr.status === 200 && xhr.responseText) {
+ let file = JSON.parse(xhr.responseText)[0] // 杩斿洖缁撴灉
+ resolve(file.path)
+ }
+ }
+ xhr.onerror = (evt) => { // 涓婁紶澶辫触鍥炶皟
+ store.commit("snack/error", "涓婁紶澶辫触锛�")
+ console.log(JSON.stringify(evt.target))
+ resolve()
+ }
+ xhr.send(fd);
+ })
+}
+
+export const getCurrentPosition = (options = {}) => {
+ return new Promise((resolve, reject) => {
+ if (!("geolocation" in navigator)) {
+ reject(new Error("娴忚鍣ㄤ笉鏀寔鍦扮悊浣嶇疆瀹氫綅"));
+ } else {
+ navigator.geolocation.getCurrentPosition(
+ (position) => resolve(position),
+ (error) => {
+ console.log(error.code)
+ console.log(error.message)
+ reject(error)
+ },
+ {
+ enableHighAccuracy: options.enableHighAccuracy || false,
+ timeout: options.timeout || 10000,
+ maximumAge: options.maximumAge || 0
+ }
+ );
+ }
+ });
+}
+
--
Gitblit v1.8.0