diff --git a/apps/hand-factory/components/klp-scaner/klp-scaner.vue b/apps/hand-factory/components/klp-scaner/klp-scaner.vue new file mode 100644 index 0000000..2d8b758 --- /dev/null +++ b/apps/hand-factory/components/klp-scaner/klp-scaner.vue @@ -0,0 +1,101 @@ + + + + + \ No newline at end of file diff --git a/apps/hand-factory/manifest.json b/apps/hand-factory/manifest.json index 2386600..da96701 100644 --- a/apps/hand-factory/manifest.json +++ b/apps/hand-factory/manifest.json @@ -35,7 +35,8 @@ "", "", "" - ] + ], + "abiFilters" : [ "armeabi-v7a" ] }, "ios" : { "dSYMs" : false diff --git a/apps/hand-factory/pages/easycode/easycode.vue b/apps/hand-factory/pages/easycode/easycode.vue index 496164c..e158396 100644 --- a/apps/hand-factory/pages/easycode/easycode.vue +++ b/apps/hand-factory/pages/easycode/easycode.vue @@ -105,6 +105,9 @@ + + + @@ -124,7 +127,6 @@ import { addPendingAction } from '@/api/wms/pendingAction.js' - // 导入获取库区详情的接口(需确保接口存在,若接口名不同请调整) import { getActualWarehouse } from '@/api/wms/actualWarehouse.js' @@ -137,7 +139,8 @@ coilDetail: {}, form: {}, targetWarehouse: null, // 存储选中的目标库区信息 - bomDialogShow: false // BOM参数弹窗控制(原有功能补充) + bomDialogShow: false, // BOM参数弹窗控制(原有功能补充), + mode: 'pda' // pda或camera } }, computed: { @@ -165,6 +168,28 @@ }) }, + scan(mode = 'pda') { + return new Promise((resolve, reject) => { + if (mode == 'camera') { + uni.scanCode({ + success(res) { + console.log('扫码成功') + resolve(res.result) + }, + fail() { + reject() + } + }) + } else if (mode == 'pda') { + this.$refs.pda.open().then(code => { + resolve(code); + }).catch(() => { + reject() + }) + } + }) + }, + async handlePack() { const content = await this.getQRCodeContent() let coilId = content.current_coil_id && content.current_coil_id !== 'null' ? content @@ -181,35 +206,32 @@ }) }, - handleSee() { - uni.scanCode({ - success(scanRes) { - // 查询真实库区在此处的钢卷 - listMaterialCoil({ - actualWarehouseId: scanRes.result, - dataType: 1 - }).then(res => { - if (res.total == 0) { - uni.showToast({ - title: '该库区未发现钢卷', - icon: 'none' - }); - return; - } - if (res.rows.length == 1) { - const coilId = res.rows[0].coilId; - uni.navigateTo({ - url: '/pages/easycode/editby?coilId=' + coilId - }) - } else { - uni.showToast({ - title: '数据异常', - icon: 'none' - }) - } - }) - } + async handleSee() { + const actualWarehouseId = await this.scan() + + // 查询真实库区在此处的钢卷 + const res = await listMaterialCoil({ + actualWarehouseId, + dataType: 1 }) + if (res.total == 0) { + uni.showToast({ + title: '该库区未发现钢卷', + icon: 'none' + }); + return; + } + if (res.rows.length == 1) { + const coilId = res.rows[0].coilId; + uni.navigateTo({ + url: '/pages/easycode/editby?coilId=' + coilId + }) + } else { + uni.showToast({ + title: '数据异常', + icon: 'none' + }) + } }, // 扫码并创建待操作(原有方法不变) @@ -279,65 +301,55 @@ // 通用扫码获取二维码内容(原有方法不变) async getQRCodeContent() { return new Promise((resolve, reject) => { - uni.scanCode({ - success: async (res) => { - console.log('=== 开始扫码流程 ==='); - console.log('扫码结果:', res.result); - uni.showLoading({ - title: '处理中...' - }); + this.scan().then(async res => { + uni.showLoading({ + title: '处理中...' + }); + try { + const qrcodeId = res; + // 1. 通过二维码ID获取二维码详情 + console.log('1. 获取二维码详情,ID:', qrcodeId); + const qrcodeRes = await getGenerateRecord(qrcodeId); + console.log('二维码响应:', qrcodeRes); - try { - const qrcodeId = res.result; - // 1. 通过二维码ID获取二维码详情 - console.log('1. 获取二维码详情,ID:', qrcodeId); - const qrcodeRes = await getGenerateRecord(qrcodeId); - console.log('二维码响应:', qrcodeRes); - - if (qrcodeRes.code !== 200) { - throw new Error('未找到二维码记录'); - } - - // 2. 解析二维码的content,获取coil_id - const qrcodeRecord = qrcodeRes.data; - console.log('2. 二维码记录:', qrcodeRecord); - - // 检查二维码状态(0=失效,1=有效) - if (qrcodeRecord.status === 0) { - uni.hideLoading(); - uni.showModal({ - title: '提示', - content: '该二维码已失效,无法创建待操作任务', - showCancel: false - }); - return; - } - uni.hideLoading(); - - const content = JSON.parse(qrcodeRecord.content); - console.log('解析后的内容:', content); - resolve(content) - } catch (err) { - console.error('=== 扫码处理失败 ==='); - console.error('错误信息:', err); - console.error('错误堆栈:', err.stack); - uni.hideLoading(); - uni.showToast({ - title: err.message || '处理失败', - icon: 'none', - duration: 3000 - }); - reject() + if (qrcodeRes.code !== 200) { + throw new Error('未找到二维码记录'); } - }, - fail: (err) => { + + // 2. 解析二维码的content,获取coil_id + const qrcodeRecord = qrcodeRes.data; + console.log('2. 二维码记录:', qrcodeRecord); + + // 检查二维码状态(0=失效,1=有效) + if (qrcodeRecord.status === 0) { + uni.hideLoading(); + uni.showModal({ + title: '提示', + content: '该二维码已失效,无法创建待操作任务', + showCancel: false + }); + return; + } + uni.hideLoading(); + + const content = JSON.parse(qrcodeRecord.content); + console.log('解析后的内容:', content); + resolve(content) + } catch (err) { + console.error('=== 扫码处理失败 ==='); + console.error('错误信息:', err); + console.error('错误堆栈:', err.stack); + uni.hideLoading(); uni.showToast({ - title: '扫码失败,请重试', - icon: 'none' + title: err.message || '处理失败', + icon: 'none', + duration: 3000 }); - reject(); + reject() } - }); + }).catch(() => { + reject() + }) }) }, @@ -416,7 +428,7 @@ } catch (error) { console.error('发货失败:', error); uni.showToast({ - title: error.message || '发货失败', + title: error?.message || '发货失败', icon: 'none' }); } @@ -475,7 +487,7 @@ } catch (error) { uni.hideLoading(); uni.showToast({ - title: error.message || '打开移库失败', + title: error?.message || '打开移库失败', icon: 'none', duration: 2000 }); @@ -489,17 +501,10 @@ title: '扫码中...' }); // 扫描库区二维码 - const scanRes = await new Promise((resolve, reject) => { - uni.scanCode({ - success: resolve, - fail: (err) => { - reject(new Error('扫码取消或失败')); - } - }); - }); + const scanRes = await this.scan() uni.hideLoading(); - const warehouseQrCode = scanRes.result; + const warehouseQrCode = scanRes; if (!warehouseQrCode) { throw new Error('未识别到库区信息'); } @@ -539,7 +544,7 @@ } catch (error) { uni.hideLoading(); uni.showToast({ - title: error.message || '扫描库区失败', + title: error?.message || '扫描库区失败', icon: 'none', duration: 2500 }); @@ -630,7 +635,7 @@ uni.hideLoading(); console.error('移库失败详情:', error); uni.showToast({ - title: error.message || '移库失败,请重试', + title: error?.message || '移库失败,请重试', icon: 'none', duration: 3000 }); diff --git a/apps/hand-factory/uni_modules/qs-scanlistener/changelog.md b/apps/hand-factory/uni_modules/qs-scanlistener/changelog.md new file mode 100644 index 0000000..c18fbf3 --- /dev/null +++ b/apps/hand-factory/uni_modules/qs-scanlistener/changelog.md @@ -0,0 +1,2 @@ +## 1.0.0(2022-12-17) +create diff --git a/apps/hand-factory/uni_modules/qs-scanlistener/components/qs-scanlistener/qs-scanlistener.vue b/apps/hand-factory/uni_modules/qs-scanlistener/components/qs-scanlistener/qs-scanlistener.vue new file mode 100644 index 0000000..c72a137 --- /dev/null +++ b/apps/hand-factory/uni_modules/qs-scanlistener/components/qs-scanlistener/qs-scanlistener.vue @@ -0,0 +1,118 @@ + + + + + + \ No newline at end of file diff --git a/apps/hand-factory/uni_modules/qs-scanlistener/components/qs-scanlistener/scanInput.js b/apps/hand-factory/uni_modules/qs-scanlistener/components/qs-scanlistener/scanInput.js new file mode 100644 index 0000000..35fb63f --- /dev/null +++ b/apps/hand-factory/uni_modules/qs-scanlistener/components/qs-scanlistener/scanInput.js @@ -0,0 +1,56 @@ +let main, receiver, filter, _codeQueryTag = false, temp = [], init = false, start = false; +export default { + initScan() { + if(init) return + let _this = this; + main = plus.android.runtimeMainActivity(); //获取activity + var IntentFilter = plus.android.importClass('android.content.IntentFilter'); + filter = new IntentFilter(); + + // android.intent.ACTION_DECODE_DATA + filter.addAction("com.hc.scan"); // 换你的广播动作,你的pda设备里面看 + receiver = plus.android.implements('io.dcloud.feature.internal.reflect.BroadcastReceiver', { + onReceive: function(context, intent) { + //barcode_string + plus.android.importClass(intent); + let code = intent.getStringExtra("Barcode"); // 换你的广播标签,你的pda设备里面看 + _this.queryCode(code); + } + }); + init = true + }, + startScan() { + if(!start) { + start = true + main.registerReceiver(receiver, filter); + } + }, + stopScan() { + if(start) { + start = false + main.unregisterReceiver(receiver); + } + }, + install(fn) { + if(typeof fn == 'function' && !~temp.indexOf(fn)) temp.push(fn) + }, + uninstall(fn) { + if(typeof fn == 'function') { + const index = temp.find(i=>i == fn) + if(~index) temp.splice(index, 1) + } + }, + queryCode: function(code) { + //防重复 + // if (_codeQueryTag) return false; + // _codeQueryTag = true; + // setTimeout(function() { + // _codeQueryTag = false; + // }, 150); + if(temp && temp.length) { + temp[temp.length - 1](code) + } + uni.vibrateShort() + uni.$emit("qs_scanlistener_handle", code); + } +} diff --git a/apps/hand-factory/uni_modules/qs-scanlistener/package.json b/apps/hand-factory/uni_modules/qs-scanlistener/package.json new file mode 100644 index 0000000..8ee42f7 --- /dev/null +++ b/apps/hand-factory/uni_modules/qs-scanlistener/package.json @@ -0,0 +1,82 @@ +{ + "id": "qs-scanlistener", + "displayName": "qs-scanlistener PDA扫码", + "version": "1.0.0", + "description": "PDA扫码 兼容广播和键盘", + "keywords": [ + "pda", + "扫码" +], + "repository": "", + "engines": { + "HBuilderX": "^3.1.0" + }, + "dcloudext": { + "type": "component-vue", + "sale": { + "regular": { + "price": "0.00" + }, + "sourcecode": { + "price": "0.00" + } + }, + "contact": { + "qq": "" + }, + "declaration": { + "ads": "无", + "data": "无", + "permissions": "无" + }, + "npmurl": "" + }, + "uni_modules": { + "dependencies": [], + "encrypt": [], + "platforms": { + "cloud": { + "tcb": "y", + "aliyun": "y" + }, + "client": { + "Vue": { + "vue2": "y", + "vue3": "y" + }, + "App": { + "app-vue": "y", + "app-nvue": "n" + }, + "H5-mobile": { + "Safari": "n", + "Android Browser": "n", + "微信浏览器(Android)": "n", + "QQ浏览器(Android)": "n" + }, + "H5-pc": { + "Chrome": "n", + "IE": "n", + "Edge": "n", + "Firefox": "n", + "Safari": "n" + }, + "小程序": { + "微信": "n", + "阿里": "n", + "百度": "n", + "字节跳动": "n", + "QQ": "n", + "钉钉": "n", + "快手": "n", + "飞书": "n", + "京东": "n" + }, + "快应用": { + "华为": "n", + "联盟": "n" + } + } + } + } +} \ No newline at end of file diff --git a/apps/hand-factory/uni_modules/qs-scanlistener/readme.md b/apps/hand-factory/uni_modules/qs-scanlistener/readme.md new file mode 100644 index 0000000..63bedd4 --- /dev/null +++ b/apps/hand-factory/uni_modules/qs-scanlistener/readme.md @@ -0,0 +1,20 @@ +## qs-scanlistener PDA扫码 +## 支持广播和键盘 +--- +### 广播动作可在main.js设置uni._qs_scanlistener_action = 你的广播动作名称, 默认android.intent.ACTION_DECODE_DATA +### 广播标签可在main.js设置uni._qs_scanlistener_label = 你的广播标签名称, 默认barcode_string +--- +### 扫码结果也可以uni.$on('qs_scanlistener_handle', code=>{}) 中获取 +--- +Template +```html + +``` +js +```javascript +methods: { + scan(code) { + console.log(code) + } +} +``` \ No newline at end of file diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 39ceb5d..e880ede 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -273,7 +273,7 @@ importers: devDependencies: '@babel/plugin-proposal-optional-chaining': specifier: ^7.21.0 - version: 7.21.0(@babel/core@7.28.4) + version: 7.21.0(@babel/core@7.28.5) '@vue/cli-plugin-babel': specifier: 4.4.6 version: 4.4.6(@vue/cli-service@4.4.6)(core-js@3.25.3)(vue@2.6.12) @@ -370,7 +370,7 @@ importers: devDependencies: '@commitlint/cli': specifier: ^19.3.0 - version: 19.8.1(@types/node@24.7.1)(typescript@5.9.3) + version: 19.8.1(@types/node@25.0.3)(typescript@5.9.3) '@commitlint/config-conventional': specifier: ^19.2.2 version: 19.8.1 @@ -394,10 +394,10 @@ importers: version: 5.2.4(vite@5.4.21)(vue@3.5.25) commitizen: specifier: ^4.3.0 - version: 4.3.1(@types/node@24.7.1)(typescript@5.9.3) + version: 4.3.1(@types/node@25.0.3)(typescript@5.9.3) cz-conventional-changelog: specifier: ^3.3.0 - version: 3.3.0(@types/node@24.7.1)(typescript@5.9.3) + version: 3.3.0(@types/node@25.0.3)(typescript@5.9.3) eslint: specifier: ^9.5.0 version: 9.39.1 @@ -457,7 +457,7 @@ importers: version: 0.8.0 vite: specifier: ^5.3.1 - version: 5.4.21(@types/node@24.7.1)(sass@1.94.2) + version: 5.4.21(@types/node@25.0.3)(sass@1.94.2) vue-tsc: specifier: ^2.0.21 version: 2.2.12(typescript@5.9.3) @@ -469,7 +469,7 @@ importers: version: 1.13.2 element-ui: specifier: ^2.15.14 - version: 2.15.14(vue@2.6.12) + version: 2.15.14(vue@2.7.16) file-saver: specifier: ^2.0.5 version: 2.0.5 @@ -525,6 +525,29 @@ packages: - supports-color dev: true + /@babel/core@7.28.5: + resolution: {integrity: sha512-e7jT4DxYvIDLk1ZHmU/m/mB19rex9sv0c2ftBtjSBv+kVM/902eh0fINUzD7UwLLNR+jU585GxUJ8/EBfAM5fw==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/code-frame': 7.27.1 + '@babel/generator': 7.28.5 + '@babel/helper-compilation-targets': 7.27.2 + '@babel/helper-module-transforms': 7.28.3(@babel/core@7.28.5) + '@babel/helpers': 7.28.4 + '@babel/parser': 7.28.5 + '@babel/template': 7.27.2 + '@babel/traverse': 7.28.5 + '@babel/types': 7.28.5 + '@jridgewell/remapping': 2.3.5 + convert-source-map: 2.0.0 + debug: 4.4.3(supports-color@6.1.0) + gensync: 1.0.0-beta.2 + json5: 2.2.3 + semver: 6.3.1 + transitivePeerDependencies: + - supports-color + dev: true + /@babel/generator@7.28.3: resolution: {integrity: sha512-3lSpxGgvnmZznmBkCRnVREPUFJv2wrv9iAoFDvADJc0ypmdOxdUtcLeBgBJ6zE0PMeTKnxeQzyk0xTBq4Ep7zw==} engines: {node: '>=6.9.0'} @@ -536,6 +559,17 @@ packages: jsesc: 3.1.0 dev: true + /@babel/generator@7.28.5: + resolution: {integrity: sha512-3EwLFhZ38J4VyIP6WNtt2kUdW9dokXA9Cr4IVIFHuCpZ3H8/YFOl5JjZHisrn1fATPBmKKqXzDFvh9fUwHz6CQ==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/parser': 7.28.5 + '@babel/types': 7.28.5 + '@jridgewell/gen-mapping': 0.3.13 + '@jridgewell/trace-mapping': 0.3.31 + jsesc: 3.1.0 + dev: true + /@babel/helper-annotate-as-pure@7.27.3: resolution: {integrity: sha512-fXSwMQqitTGeHLBC08Eq5yXz2m37E4pJX1qAU1+2cNedz/ifv/bVXft90VeSav5nFO61EcNgwr0aJxbyPaWBPg==} engines: {node: '>=6.9.0'} @@ -638,6 +672,20 @@ packages: - supports-color dev: true + /@babel/helper-module-transforms@7.28.3(@babel/core@7.28.5): + resolution: {integrity: sha512-gytXUbs8k2sXS9PnQptz5o0QnpLL51SwASIORY6XaBKF88nsOT0Zw9szLqlSGQDP/4TljBAD5y98p2U1fqkdsw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + dependencies: + '@babel/core': 7.28.5 + '@babel/helper-module-imports': 7.27.1 + '@babel/helper-validator-identifier': 7.27.1 + '@babel/traverse': 7.28.4 + transitivePeerDependencies: + - supports-color + dev: true + /@babel/helper-optimise-call-expression@7.27.1: resolution: {integrity: sha512-URMGH08NzYFhubNSGJrpUEphGKQwMQYBySzat5cAByY1/YgIRkULnIy3tAMeszlL/so2HbeilYloUmSpd7GdVw==} engines: {node: '>=6.9.0'} @@ -834,17 +882,17 @@ packages: - supports-color dev: true - /@babel/plugin-proposal-optional-chaining@7.21.0(@babel/core@7.28.4): + /@babel/plugin-proposal-optional-chaining@7.21.0(@babel/core@7.28.5): resolution: {integrity: sha512-p4zeefM72gpmEe2fkUr/OnOXpWEf8nAgk7ZYVqqfFiyIG7oFfVZcCrU64hWn5xp4tQ9LkV4bTIa5rD0KANpKNA==} engines: {node: '>=6.9.0'} deprecated: This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-optional-chaining instead. peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.28.4 + '@babel/core': 7.28.5 '@babel/helper-plugin-utils': 7.27.1 '@babel/helper-skip-transparent-expression-wrappers': 7.27.1 - '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.28.4) + '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.28.5) transitivePeerDependencies: - supports-color dev: true @@ -907,12 +955,12 @@ packages: '@babel/helper-plugin-utils': 7.27.1 dev: true - /@babel/plugin-syntax-optional-chaining@7.8.3(@babel/core@7.28.4): + /@babel/plugin-syntax-optional-chaining@7.8.3(@babel/core@7.28.5): resolution: {integrity: sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.28.4 + '@babel/core': 7.28.5 '@babel/helper-plugin-utils': 7.27.1 dev: true @@ -1652,6 +1700,21 @@ packages: - supports-color dev: true + /@babel/traverse@7.28.5: + resolution: {integrity: sha512-TCCj4t55U90khlYkVV/0TfkJkAkUg3jZFA3Neb7unZT8CPok7iiRfaX0F+WnqWqt7OxhOn0uBKXCw4lbL8W0aQ==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/code-frame': 7.27.1 + '@babel/generator': 7.28.5 + '@babel/helper-globals': 7.28.0 + '@babel/parser': 7.28.5 + '@babel/template': 7.27.2 + '@babel/types': 7.28.5 + debug: 4.4.3(supports-color@6.1.0) + transitivePeerDependencies: + - supports-color + dev: true + /@babel/types@7.28.4: resolution: {integrity: sha512-bkFqkLhh3pMBUQQkpVgWDWq/lqzc2678eUyDlTBhRqhCHFguYYGM0Efga7tYk4TogG/3x0EEl66/OQ+WGbWB/Q==} engines: {node: '>=6.9.0'} @@ -1698,14 +1761,14 @@ packages: keyv: 5.5.4 dev: true - /@commitlint/cli@19.8.1(@types/node@24.7.1)(typescript@5.9.3): + /@commitlint/cli@19.8.1(@types/node@25.0.3)(typescript@5.9.3): resolution: {integrity: sha512-LXUdNIkspyxrlV6VDHWBmCZRtkEVRpBKxi2Gtw3J54cGWhLCTouVD/Q6ZSaSvd2YaDObWK8mDjrz3TIKtaQMAA==} engines: {node: '>=v18'} hasBin: true dependencies: '@commitlint/format': 19.8.1 '@commitlint/lint': 19.8.1 - '@commitlint/load': 19.8.1(@types/node@24.7.1)(typescript@5.9.3) + '@commitlint/load': 19.8.1(@types/node@25.0.3)(typescript@5.9.3) '@commitlint/read': 19.8.1 '@commitlint/types': 19.8.1 tinyexec: 1.0.2 @@ -1731,12 +1794,12 @@ packages: ajv: 8.17.1 dev: true - /@commitlint/config-validator@20.0.0: - resolution: {integrity: sha512-BeyLMaRIJDdroJuYM2EGhDMGwVBMZna9UiIqV9hxj+J551Ctc6yoGuGSmghOy/qPhBSuhA6oMtbEiTmxECafsg==} + /@commitlint/config-validator@20.2.0: + resolution: {integrity: sha512-SQCBGsL9MFk8utWNSthdxd9iOD1pIVZSHxGBwYIGfd67RTjxqzFOSAYeQVXOu3IxRC3YrTOH37ThnTLjUlyF2w==} engines: {node: '>=v18'} requiresBuild: true dependencies: - '@commitlint/types': 20.0.0 + '@commitlint/types': 20.2.0 ajv: 8.17.1 dev: true optional: true @@ -1791,7 +1854,7 @@ packages: '@commitlint/types': 19.8.1 dev: true - /@commitlint/load@19.8.1(@types/node@24.7.1)(typescript@5.9.3): + /@commitlint/load@19.8.1(@types/node@25.0.3)(typescript@5.9.3): resolution: {integrity: sha512-9V99EKG3u7z+FEoe4ikgq7YGRCSukAcvmKQuTtUyiYPnOd9a2/H9Ak1J9nJA1HChRQp9OA/sIKPugGS+FK/k1A==} engines: {node: '>=v18'} dependencies: @@ -1801,7 +1864,7 @@ packages: '@commitlint/types': 19.8.1 chalk: 5.6.2 cosmiconfig: 9.0.0(typescript@5.9.3) - cosmiconfig-typescript-loader: 6.2.0(@types/node@24.7.1)(cosmiconfig@9.0.0)(typescript@5.9.3) + cosmiconfig-typescript-loader: 6.2.0(@types/node@25.0.3)(cosmiconfig@9.0.0)(typescript@5.9.3) lodash.isplainobject: 4.0.6 lodash.merge: 4.6.2 lodash.uniq: 4.5.0 @@ -1810,18 +1873,18 @@ packages: - typescript dev: true - /@commitlint/load@20.1.0(@types/node@24.7.1)(typescript@5.9.3): - resolution: {integrity: sha512-qo9ER0XiAimATQR5QhvvzePfeDfApi/AFlC1G+YN+ZAY8/Ua6IRrDrxRvQAr+YXUKAxUsTDSp9KXeXLBPsNRWg==} + /@commitlint/load@20.2.0(@types/node@25.0.3)(typescript@5.9.3): + resolution: {integrity: sha512-iAK2GaBM8sPFTSwtagI67HrLKHIUxQc2BgpgNc/UMNme6LfmtHpIxQoN1TbP+X1iz58jq32HL1GbrFTCzcMi6g==} engines: {node: '>=v18'} requiresBuild: true dependencies: - '@commitlint/config-validator': 20.0.0 + '@commitlint/config-validator': 20.2.0 '@commitlint/execute-rule': 20.0.0 - '@commitlint/resolve-extends': 20.1.0 - '@commitlint/types': 20.0.0 + '@commitlint/resolve-extends': 20.2.0 + '@commitlint/types': 20.2.0 chalk: 5.6.2 cosmiconfig: 9.0.0(typescript@5.9.3) - cosmiconfig-typescript-loader: 6.2.0(@types/node@24.7.1)(cosmiconfig@9.0.0)(typescript@5.9.3) + cosmiconfig-typescript-loader: 6.2.0(@types/node@25.0.3)(cosmiconfig@9.0.0)(typescript@5.9.3) lodash.isplainobject: 4.0.6 lodash.merge: 4.6.2 lodash.uniq: 4.5.0 @@ -1868,13 +1931,13 @@ packages: resolve-from: 5.0.0 dev: true - /@commitlint/resolve-extends@20.1.0: - resolution: {integrity: sha512-cxKXQrqHjZT3o+XPdqDCwOWVFQiae++uwd9dUBC7f2MdV58ons3uUvASdW7m55eat5sRiQ6xUHyMWMRm6atZWw==} + /@commitlint/resolve-extends@20.2.0: + resolution: {integrity: sha512-KVoLDi9BEuqeq+G0wRABn4azLRiCC22/YHR2aCquwx6bzCHAIN8hMt3Nuf1VFxq/c8ai6s8qBxE8+ZD4HeFTlQ==} engines: {node: '>=v18'} requiresBuild: true dependencies: - '@commitlint/config-validator': 20.0.0 - '@commitlint/types': 20.0.0 + '@commitlint/config-validator': 20.2.0 + '@commitlint/types': 20.2.0 global-directory: 4.0.1 import-meta-resolve: 4.2.0 lodash.mergewith: 4.6.2 @@ -1912,8 +1975,8 @@ packages: chalk: 5.6.2 dev: true - /@commitlint/types@20.0.0: - resolution: {integrity: sha512-bVUNBqG6aznYcYjTjnc3+Cat/iBgbgpflxbIBTnsHTX0YVpnmINPEkSRWymT2Q8aSH3Y7aKnEbunilkYe8TybA==} + /@commitlint/types@20.2.0: + resolution: {integrity: sha512-KTy0OqRDLR5y/zZMnizyx09z/rPlPC/zKhYgH8o/q6PuAjoQAKlRfY4zzv0M64yybQ//6//4H1n14pxaLZfUnA==} engines: {node: '>=v18'} requiresBuild: true dependencies: @@ -2871,7 +2934,7 @@ packages: /@types/conventional-commits-parser@5.0.2: resolution: {integrity: sha512-BgT2szDXnVypgpNxOK8aL5SGjUdaQbC++WZNjF1Qge3Og2+zhHj+RWhmehLhYyvQwqAmvezruVfOf8+3m74W+g==} dependencies: - '@types/node': 24.7.1 + '@types/node': 25.0.3 dev: true /@types/estree@1.0.8: @@ -2914,6 +2977,12 @@ packages: dependencies: undici-types: 7.14.0 + /@types/node@25.0.3: + resolution: {integrity: sha512-W609buLVRVmeW693xKfzHeIV6nJGGz98uCPfeXI1ELMLXVeKYZ9m15fAMSaUPBHYLGFsVRcMmSCksQOrZV9BYA==} + dependencies: + undici-types: 7.16.0 + dev: true + /@types/normalize-package-data@2.4.4: resolution: {integrity: sha512-37i+OaWTh9qeK4LSHPsyRC7NahnGotNuZvjLSgcPzblpHB3rrCJxAOgI5gCdKm7coonsaX1Of0ILiTcnZjbfxA==} dev: true @@ -2975,7 +3044,7 @@ packages: /@types/webpack-sources@3.2.3: resolution: {integrity: sha512-4nZOdMwSPHZ4pTEZzSp0AsTM4K7Qmu40UKW4tJDiOVs20UzYF9l+qUe4s0ftfN0pin06n+5cWWDJXH+sbhAiDw==} dependencies: - '@types/node': 24.7.1 + '@types/node': 25.0.3 '@types/source-list-map': 0.1.6 source-map: 0.7.6 dev: true @@ -2983,7 +3052,7 @@ packages: /@types/webpack@4.41.40: resolution: {integrity: sha512-u6kMFSBM9HcoTpUXnL6mt2HSzftqb3JgYV6oxIgL2dl6sX6aCa5k6SOkzv5DuZjBTPUE/dJltKtwwuqrkZHpfw==} dependencies: - '@types/node': 24.7.1 + '@types/node': 25.0.3 '@types/tapable': 1.0.12 '@types/uglify-js': 3.17.5 '@types/webpack-sources': 3.2.3 @@ -3167,7 +3236,7 @@ packages: vite: ^5.0.0 || ^6.0.0 vue: ^3.2.25 dependencies: - vite: 5.4.21(@types/node@24.7.1)(sass@1.94.2) + vite: 5.4.21(@types/node@25.0.3)(sass@1.94.2) vue: 3.5.25(typescript@5.9.3) dev: true @@ -3679,6 +3748,16 @@ packages: '@vue/compiler-core': 3.5.25 '@vue/shared': 3.5.25 + /@vue/compiler-sfc@2.7.16: + resolution: {integrity: sha512-KWhJ9k5nXuNtygPU7+t1rX6baZeqOYLEforUPjgNDBnLicfHCoi48H87Q8XyLZOrNNsmhuwKqtpDQWjEFe6Ekg==} + dependencies: + '@babel/parser': 7.28.5 + postcss: 8.5.6 + source-map: 0.6.1 + optionalDependencies: + prettier: 2.8.8 + dev: false + /@vue/compiler-sfc@3.5.22: resolution: {integrity: sha512-tbTR1zKGce4Lj+JLzFXDq36K4vcSZbJ1RBu8FxcDv1IGRz//Dh2EBqksyGVypz3kXpshIfWKGOCcqpSbyGWRJQ==} dependencies: @@ -5565,13 +5644,13 @@ packages: resolution: {integrity: sha512-4PIMoPniho+LqXmpS5d3NuGYncG6XWlkBSVGiWycL22dd42OYdUGil2CWuzklaJoNxyxUSpO4MKIBU94viWNAw==} dev: false - /commitizen@4.3.1(@types/node@24.7.1)(typescript@5.9.3): + /commitizen@4.3.1(@types/node@25.0.3)(typescript@5.9.3): resolution: {integrity: sha512-gwAPAVTy/j5YcOOebcCRIijn+mSjWJC+IYKivTu6aG8Ei/scoXgfsMRnuAk6b0GRste2J4NGxVdMN3ZpfNaVaw==} engines: {node: '>= 12'} hasBin: true dependencies: cachedir: 2.3.0 - cz-conventional-changelog: 3.3.0(@types/node@24.7.1)(typescript@5.9.3) + cz-conventional-changelog: 3.3.0(@types/node@25.0.3)(typescript@5.9.3) dedent: 0.7.0 detect-indent: 6.1.0 find-node-modules: 2.1.3 @@ -6044,7 +6123,7 @@ packages: resolution: {integrity: sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==} dev: true - /cosmiconfig-typescript-loader@6.2.0(@types/node@24.7.1)(cosmiconfig@9.0.0)(typescript@5.9.3): + /cosmiconfig-typescript-loader@6.2.0(@types/node@25.0.3)(cosmiconfig@9.0.0)(typescript@5.9.3): resolution: {integrity: sha512-GEN39v7TgdxgIoNcdkRE3uiAzQt3UXLyHbRHD6YoL048XAeOomyxaP+Hh/+2C6C2wYjxJ2onhJcsQp+L4YEkVQ==} engines: {node: '>=v18'} peerDependencies: @@ -6052,7 +6131,7 @@ packages: cosmiconfig: '>=9' typescript: '>=5' dependencies: - '@types/node': 24.7.1 + '@types/node': 25.0.3 cosmiconfig: 9.0.0(typescript@5.9.3) jiti: 2.6.1 typescript: 5.9.3 @@ -6363,18 +6442,18 @@ packages: resolution: {integrity: sha512-0sVXIohTfLqVIW3kb/0n6IiWF3Ifj5nm2XaSrLq2DI6fKIGa2fYAZdk917rUneaeLVpYfFcyXE2ft0fe3remsA==} dev: true - /cz-conventional-changelog@3.3.0(@types/node@24.7.1)(typescript@5.9.3): + /cz-conventional-changelog@3.3.0(@types/node@25.0.3)(typescript@5.9.3): resolution: {integrity: sha512-U466fIzU5U22eES5lTNiNbZ+d8dfcHcssH4o7QsdWaCcRs/feIPCxKYSWkYBNs5mny7MvEfwpTLWjvbm94hecw==} engines: {node: '>= 10'} dependencies: chalk: 2.4.2 - commitizen: 4.3.1(@types/node@24.7.1)(typescript@5.9.3) + commitizen: 4.3.1(@types/node@25.0.3)(typescript@5.9.3) conventional-commit-types: 3.0.0 lodash.map: 4.6.0 longest: 2.0.1 word-wrap: 1.2.5 optionalDependencies: - '@commitlint/load': 20.1.0(@types/node@24.7.1)(typescript@5.9.3) + '@commitlint/load': 20.2.0(@types/node@25.0.3)(typescript@5.9.3) transitivePeerDependencies: - '@types/node' - typescript @@ -6980,6 +7059,20 @@ packages: vue: 2.6.12 dev: false + /element-ui@2.15.14(vue@2.7.16): + resolution: {integrity: sha512-2v9fHL0ZGINotOlRIAJD5YuVB8V7WKxrE9Qy7dXhRipa035+kF7WuU/z+tEmLVPBcJ0zt8mOu1DKpWcVzBK8IA==} + peerDependencies: + vue: ^2.5.17 + dependencies: + async-validator: 1.8.5 + babel-helper-vue-jsx-merge-props: 2.0.3 + deepmerge: 1.5.2 + normalize-wheel: 1.0.1 + resize-observer-polyfill: 1.5.1 + throttle-debounce: 1.1.0 + vue: 2.7.16 + dev: false + /elliptic@6.6.1: resolution: {integrity: sha512-RaddvvMatK2LJHqFJ+YA4WysVN5Ita9E35botqIYspQ4TkRAlCicdzKOjlyv/1Za5RyTNn7di//eEV0uTAfe3g==} dependencies: @@ -7826,6 +7919,7 @@ packages: /fast-uri@3.1.0: resolution: {integrity: sha512-iPeeDKJSWf4IEOasVVrknXpaBV0IApz/gp7S2bb7Z4Lljbl2MGJRqInZiUrQwV16cpzw/D3S5j5Julj/gT52AA==} + requiresBuild: true dev: true /fastest-levenshtein@1.0.16: @@ -8208,7 +8302,7 @@ packages: requiresBuild: true dependencies: bindings: 1.5.0 - nan: 2.23.0 + nan: 2.24.0 dev: true optional: true @@ -9781,6 +9875,7 @@ packages: /json-schema-traverse@1.0.0: resolution: {integrity: sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==} + requiresBuild: true dev: true /json-schema@0.4.0: @@ -10824,8 +10919,8 @@ packages: thenify-all: 1.6.0 dev: true - /nan@2.23.0: - resolution: {integrity: sha512-1UxuyYGdoQHcGg87Lkqm3FzefucTa0NAiOcuRsDmysep3c1LVCRK2krrUDafMWtjSG04htvAmvg96+SDknOmgQ==} + /nan@2.24.0: + resolution: {integrity: sha512-Vpf9qnVW1RaDkoNKFUvfxqAbtI8ncb8OJlqZ9wwpXzWPEsvsB1nvdUi6oYrHIkQ1Y/tMDnr1h4nczS0VB9Xykg==} requiresBuild: true dev: true optional: true @@ -11249,7 +11344,7 @@ packages: engines: {node: '>=10'} dependencies: bl: 4.1.0 - chalk: 4.1.0 + chalk: 4.1.2 cli-cursor: 3.1.0 cli-spinners: 2.9.2 is-interactive: 1.0.0 @@ -12164,7 +12259,6 @@ packages: engines: {node: '>=10.13.0'} hasBin: true requiresBuild: true - dev: true optional: true /prettier@3.7.1: @@ -12614,6 +12708,7 @@ packages: /require-from-string@2.0.2: resolution: {integrity: sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==} engines: {node: '>=0.10.0'} + requiresBuild: true dev: true /require-main-filename@2.0.0: @@ -13403,7 +13498,6 @@ packages: /source-map@0.6.1: resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==} engines: {node: '>=0.10.0'} - dev: true /source-map@0.7.6: resolution: {integrity: sha512-i5uvt8C3ikiWeNZSVZNWcfZPItFQOsYTUAOkcUPGd8DqDy1uOUikjt5dG+uRlwyvR108Fb9DOd4GvXfT0N2/uQ==} @@ -14505,6 +14599,11 @@ packages: /undici-types@7.14.0: resolution: {integrity: sha512-QQiYxHuyZ9gQUIrmPo3IA+hUl4KYk8uSA7cHrcKd/l3p1OTpZcM0Tbp9x7FAtXdAYhlasd60ncPpgu6ihG6TOA==} + /undici-types@7.16.0: + resolution: {integrity: sha512-Zz+aZWSj8LE6zoxD+xrjh4VfkIG8Ya6LvYkZqtUQGJPZjYl53ypCaUwWqo7eI0x66KBGeRo+mlBEkMSeSZ38Nw==} + requiresBuild: true + dev: true + /unicode-canonical-property-names-ecmascript@2.0.1: resolution: {integrity: sha512-dA8WbNeb2a6oQzAQ55YlT5vQAWGV9WXOsi3SskE3bcCdM0P4SDd+24zS/OCacdRq5BkdsRj9q3Pg6YyQoxIGqg==} engines: {node: '>=4'} @@ -14812,7 +14911,7 @@ packages: global: 4.4.0 dev: false - /vite@5.4.21(@types/node@24.7.1)(sass@1.94.2): + /vite@5.4.21(@types/node@25.0.3)(sass@1.94.2): resolution: {integrity: sha512-o5a9xKjbtuhY6Bi5S3+HvbRERmouabWbyUcpXXUA1u+GNUKoROi9byOJ8M0nHbHYHkYICiMlqxkg1KkYmm25Sw==} engines: {node: ^18.0.0 || >=20.0.0} hasBin: true @@ -14843,7 +14942,7 @@ packages: terser: optional: true dependencies: - '@types/node': 24.7.1 + '@types/node': 25.0.3 esbuild: 0.21.5 postcss: 8.5.6 rollup: 4.53.3 @@ -15080,6 +15179,14 @@ packages: resolution: {integrity: sha512-uhmLFETqPPNyuLLbsKz6ioJ4q7AZHzD8ZVFNATNyICSZouqP2Sz0rotWQC8UNBF6VGSCs5abnKJoStA6JbCbfg==} deprecated: Vue 2 has reached EOL and is no longer actively maintained. See https://v2.vuejs.org/eol/ for more details. + /vue@2.7.16: + resolution: {integrity: sha512-4gCtFXaAA3zYZdTp5s4Hl2sozuySsgz4jy1EnpBHNfpMa9dK1ZCG7viqBPCwXtmgc8nHqUsAu3G4gtmXkkY3Sw==} + deprecated: Vue 2 has reached EOL and is no longer actively maintained. See https://v2.vuejs.org/eol/ for more details. + dependencies: + '@vue/compiler-sfc': 2.7.16 + csstype: 3.2.3 + dev: false + /vue@3.5.25(typescript@5.9.3): resolution: {integrity: sha512-YLVdgv2K13WJ6n+kD5owehKtEXwdwXuj2TTyJMsO7pSeKw2bfRNZGjhB7YzrpbMYj5b5QsUebHpOqR3R3ziy/g==} peerDependencies: