修复小程序端产品分类列表和添加产品分类的bug

This commit is contained in:
2025-08-14 06:00:34 +08:00
parent a70ec7cc2e
commit 8a8740fcd0
4 changed files with 510 additions and 201 deletions

408
package-lock.json generated
View File

@@ -21,15 +21,17 @@
"@dcloudio/uni-mp-toutiao": "3.0.0-3080720230703001", "@dcloudio/uni-mp-toutiao": "3.0.0-3080720230703001",
"@dcloudio/uni-mp-weixin": "3.0.0-3080720230703001", "@dcloudio/uni-mp-weixin": "3.0.0-3080720230703001",
"@dcloudio/uni-quickapp-webview": "3.0.0-3080720230703001", "@dcloudio/uni-quickapp-webview": "3.0.0-3080720230703001",
"axios": "^1.11.0",
"dayjs": "^1.11.13", "dayjs": "^1.11.13",
"html2canvas": "^1.4.1", "html2canvas": "^1.4.1",
"image-tools": "^1.4.0", "image-tools": "^1.4.0",
"lodash": "^4.17.21",
"lodash-es": "^4.17.21", "lodash-es": "^4.17.21",
"pinia": "2.0.36", "pinia": "2.0.36",
"qrcode": "^1.5.1", "qrcode": "^1.5.1",
"qs": "6.7.0", "qs": "6.7.0",
"sortablejs": "^1.15.0", "sortablejs": "^1.15.0",
"uview-plus": "^3.1.29", "uview-plus": "^3.4.86",
"vue": "^3.3.0", "vue": "^3.3.0",
"vue-i18n": "^9.2.2", "vue-i18n": "^9.2.2",
"weixin-js-sdk": "^1.6.5" "weixin-js-sdk": "^1.6.5"
@@ -5059,9 +5061,7 @@
"node_modules/asynckit": { "node_modules/asynckit": {
"version": "0.4.0", "version": "0.4.0",
"resolved": "https://registry.npmmirror.com/asynckit/-/asynckit-0.4.0.tgz", "resolved": "https://registry.npmmirror.com/asynckit/-/asynckit-0.4.0.tgz",
"integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==", "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q=="
"dev": true,
"peer": true
}, },
"node_modules/autoprefixer": { "node_modules/autoprefixer": {
"version": "10.4.19", "version": "10.4.19",
@@ -5085,6 +5085,33 @@
"postcss": "^8.1.0" "postcss": "^8.1.0"
} }
}, },
"node_modules/axios": {
"version": "1.11.0",
"resolved": "https://registry.npmjs.org/axios/-/axios-1.11.0.tgz",
"integrity": "sha512-1Lx3WLFQWm3ooKDYZD1eXmoGO9fxYQjrycfHFC8P0sCfQVXyROp0p9PFWBehewBOdCwHc+f/b8I0fMto5eSfwA==",
"license": "MIT",
"dependencies": {
"follow-redirects": "^1.15.6",
"form-data": "^4.0.4",
"proxy-from-env": "^1.1.0"
}
},
"node_modules/axios/node_modules/form-data": {
"version": "4.0.4",
"resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.4.tgz",
"integrity": "sha512-KrGhL9Q4zjj0kiUt5OO4Mr/A/jlI2jDYs5eHBpYHPcBEVSiipAvn2Ko2HnPe20rmcuuvMHNdZFp+4IlGTMF0Ow==",
"license": "MIT",
"dependencies": {
"asynckit": "^0.4.0",
"combined-stream": "^1.0.8",
"es-set-tostringtag": "^2.1.0",
"hasown": "^2.0.2",
"mime-types": "^2.1.12"
},
"engines": {
"node": ">= 6"
}
},
"node_modules/babel-jest": { "node_modules/babel-jest": {
"version": "27.5.1", "version": "27.5.1",
"resolved": "https://registry.npmmirror.com/babel-jest/-/babel-jest-27.5.1.tgz", "resolved": "https://registry.npmmirror.com/babel-jest/-/babel-jest-27.5.1.tgz",
@@ -5502,6 +5529,19 @@
"node": ">= 0.4" "node": ">= 0.4"
} }
}, },
"node_modules/call-bind-apply-helpers": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz",
"integrity": "sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==",
"license": "MIT",
"dependencies": {
"es-errors": "^1.3.0",
"function-bind": "^1.1.2"
},
"engines": {
"node": ">= 0.4"
}
},
"node_modules/callsites": { "node_modules/callsites": {
"version": "3.1.0", "version": "3.1.0",
"resolved": "https://registry.npmmirror.com/callsites/-/callsites-3.1.0.tgz", "resolved": "https://registry.npmmirror.com/callsites/-/callsites-3.1.0.tgz",
@@ -5643,8 +5683,6 @@
"version": "1.0.8", "version": "1.0.8",
"resolved": "https://registry.npmmirror.com/combined-stream/-/combined-stream-1.0.8.tgz", "resolved": "https://registry.npmmirror.com/combined-stream/-/combined-stream-1.0.8.tgz",
"integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==",
"dev": true,
"peer": true,
"dependencies": { "dependencies": {
"delayed-stream": "~1.0.0" "delayed-stream": "~1.0.0"
}, },
@@ -5956,8 +5994,6 @@
"version": "1.0.0", "version": "1.0.0",
"resolved": "https://registry.npmmirror.com/delayed-stream/-/delayed-stream-1.0.0.tgz", "resolved": "https://registry.npmmirror.com/delayed-stream/-/delayed-stream-1.0.0.tgz",
"integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==",
"dev": true,
"peer": true,
"engines": { "engines": {
"node": ">=0.4.0" "node": ">=0.4.0"
} }
@@ -6040,6 +6076,20 @@
"node": ">=8" "node": ">=8"
} }
}, },
"node_modules/dunder-proto": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.1.tgz",
"integrity": "sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==",
"license": "MIT",
"dependencies": {
"call-bind-apply-helpers": "^1.0.1",
"es-errors": "^1.3.0",
"gopd": "^1.2.0"
},
"engines": {
"node": ">= 0.4"
}
},
"node_modules/ee-first": { "node_modules/ee-first": {
"version": "1.1.1", "version": "1.1.1",
"resolved": "https://registry.npmmirror.com/ee-first/-/ee-first-1.1.1.tgz", "resolved": "https://registry.npmmirror.com/ee-first/-/ee-first-1.1.1.tgz",
@@ -6108,13 +6158,10 @@
} }
}, },
"node_modules/es-define-property": { "node_modules/es-define-property": {
"version": "1.0.0", "version": "1.0.1",
"resolved": "https://registry.npmmirror.com/es-define-property/-/es-define-property-1.0.0.tgz", "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.1.tgz",
"integrity": "sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==", "integrity": "sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==",
"dev": true, "license": "MIT",
"dependencies": {
"get-intrinsic": "^1.2.4"
},
"engines": { "engines": {
"node": ">= 0.4" "node": ">= 0.4"
} }
@@ -6123,7 +6170,6 @@
"version": "1.3.0", "version": "1.3.0",
"resolved": "https://registry.npmmirror.com/es-errors/-/es-errors-1.3.0.tgz", "resolved": "https://registry.npmmirror.com/es-errors/-/es-errors-1.3.0.tgz",
"integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==",
"dev": true,
"engines": { "engines": {
"node": ">= 0.4" "node": ">= 0.4"
} }
@@ -6133,6 +6179,33 @@
"resolved": "https://registry.npmmirror.com/es-module-lexer/-/es-module-lexer-1.5.2.tgz", "resolved": "https://registry.npmmirror.com/es-module-lexer/-/es-module-lexer-1.5.2.tgz",
"integrity": "sha512-l60ETUTmLqbVbVHv1J4/qj+M8nq7AwMzEcg3kmJDt9dCNrTk+yHcYFf/Kw75pMDwd9mPcIGCG5LcS20SxYRzFA==" "integrity": "sha512-l60ETUTmLqbVbVHv1J4/qj+M8nq7AwMzEcg3kmJDt9dCNrTk+yHcYFf/Kw75pMDwd9mPcIGCG5LcS20SxYRzFA=="
}, },
"node_modules/es-object-atoms": {
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.1.1.tgz",
"integrity": "sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==",
"license": "MIT",
"dependencies": {
"es-errors": "^1.3.0"
},
"engines": {
"node": ">= 0.4"
}
},
"node_modules/es-set-tostringtag": {
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.1.0.tgz",
"integrity": "sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA==",
"license": "MIT",
"dependencies": {
"es-errors": "^1.3.0",
"get-intrinsic": "^1.2.6",
"has-tostringtag": "^1.0.2",
"hasown": "^2.0.2"
},
"engines": {
"node": ">= 0.4"
}
},
"node_modules/esbuild": { "node_modules/esbuild": {
"version": "0.17.19", "version": "0.17.19",
"resolved": "https://registry.npmmirror.com/esbuild/-/esbuild-0.17.19.tgz", "resolved": "https://registry.npmmirror.com/esbuild/-/esbuild-0.17.19.tgz",
@@ -6484,6 +6557,26 @@
"node": ">=8" "node": ">=8"
} }
}, },
"node_modules/follow-redirects": {
"version": "1.15.11",
"resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.11.tgz",
"integrity": "sha512-deG2P0JfjrTxl50XGCDyfI97ZGVCxIpfKYmfyrQ54n5FO/0gfIES8C/Psl6kWVDolizcaaxZJnTS0QSMxvnsBQ==",
"funding": [
{
"type": "individual",
"url": "https://github.com/sponsors/RubenVerborgh"
}
],
"license": "MIT",
"engines": {
"node": ">=4.0"
},
"peerDependenciesMeta": {
"debug": {
"optional": true
}
}
},
"node_modules/form-data": { "node_modules/form-data": {
"version": "3.0.1", "version": "3.0.1",
"resolved": "https://registry.npmmirror.com/form-data/-/form-data-3.0.1.tgz", "resolved": "https://registry.npmmirror.com/form-data/-/form-data-3.0.1.tgz",
@@ -6587,19 +6680,27 @@
} }
}, },
"node_modules/get-intrinsic": { "node_modules/get-intrinsic": {
"version": "1.2.4", "version": "1.3.0",
"resolved": "https://registry.npmmirror.com/get-intrinsic/-/get-intrinsic-1.2.4.tgz", "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.3.0.tgz",
"integrity": "sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==", "integrity": "sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==",
"dev": true, "license": "MIT",
"dependencies": { "dependencies": {
"call-bind-apply-helpers": "^1.0.2",
"es-define-property": "^1.0.1",
"es-errors": "^1.3.0", "es-errors": "^1.3.0",
"es-object-atoms": "^1.1.1",
"function-bind": "^1.1.2", "function-bind": "^1.1.2",
"has-proto": "^1.0.1", "get-proto": "^1.0.1",
"has-symbols": "^1.0.3", "gopd": "^1.2.0",
"hasown": "^2.0.0" "has-symbols": "^1.1.0",
"hasown": "^2.0.2",
"math-intrinsics": "^1.1.0"
}, },
"engines": { "engines": {
"node": ">= 0.4" "node": ">= 0.4"
},
"funding": {
"url": "https://github.com/sponsors/ljharb"
} }
}, },
"node_modules/get-package-type": { "node_modules/get-package-type": {
@@ -6621,6 +6722,19 @@
"node": "^12.20.0 || ^14.13.1 || >=16.0.0" "node": "^12.20.0 || ^14.13.1 || >=16.0.0"
} }
}, },
"node_modules/get-proto": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/get-proto/-/get-proto-1.0.1.tgz",
"integrity": "sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==",
"license": "MIT",
"dependencies": {
"dunder-proto": "^1.0.1",
"es-object-atoms": "^1.0.0"
},
"engines": {
"node": ">= 0.4"
}
},
"node_modules/get-stream": { "node_modules/get-stream": {
"version": "6.0.1", "version": "6.0.1",
"resolved": "https://registry.npmmirror.com/get-stream/-/get-stream-6.0.1.tgz", "resolved": "https://registry.npmmirror.com/get-stream/-/get-stream-6.0.1.tgz",
@@ -6683,12 +6797,15 @@
} }
}, },
"node_modules/gopd": { "node_modules/gopd": {
"version": "1.0.1", "version": "1.2.0",
"resolved": "https://registry.npmmirror.com/gopd/-/gopd-1.0.1.tgz", "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.2.0.tgz",
"integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==", "integrity": "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==",
"dev": true, "license": "MIT",
"dependencies": { "engines": {
"get-intrinsic": "^1.1.3" "node": ">= 0.4"
},
"funding": {
"url": "https://github.com/sponsors/ljharb"
} }
}, },
"node_modules/graceful-fs": { "node_modules/graceful-fs": {
@@ -6713,22 +6830,31 @@
"es-define-property": "^1.0.0" "es-define-property": "^1.0.0"
} }
}, },
"node_modules/has-proto": { "node_modules/has-symbols": {
"version": "1.0.3", "version": "1.1.0",
"resolved": "https://registry.npmmirror.com/has-proto/-/has-proto-1.0.3.tgz", "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.1.0.tgz",
"integrity": "sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q==", "integrity": "sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==",
"dev": true, "license": "MIT",
"engines": { "engines": {
"node": ">= 0.4" "node": ">= 0.4"
},
"funding": {
"url": "https://github.com/sponsors/ljharb"
} }
}, },
"node_modules/has-symbols": { "node_modules/has-tostringtag": {
"version": "1.0.3", "version": "1.0.2",
"resolved": "https://registry.npmmirror.com/has-symbols/-/has-symbols-1.0.3.tgz", "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz",
"integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", "integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==",
"dev": true, "license": "MIT",
"dependencies": {
"has-symbols": "^1.0.3"
},
"engines": { "engines": {
"node": ">= 0.4" "node": ">= 0.4"
},
"funding": {
"url": "https://github.com/sponsors/ljharb"
} }
}, },
"node_modules/hash-sum": { "node_modules/hash-sum": {
@@ -9220,9 +9346,9 @@
}, },
"node_modules/lodash": { "node_modules/lodash": {
"version": "4.17.21", "version": "4.17.21",
"resolved": "https://registry.npmmirror.com/lodash/-/lodash-4.17.21.tgz", "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz",
"integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==",
"dev": true "license": "MIT"
}, },
"node_modules/lodash-es": { "node_modules/lodash-es": {
"version": "4.17.21", "version": "4.17.21",
@@ -9292,6 +9418,15 @@
"tmpl": "1.0.5" "tmpl": "1.0.5"
} }
}, },
"node_modules/math-intrinsics": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/math-intrinsics/-/math-intrinsics-1.1.0.tgz",
"integrity": "sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==",
"license": "MIT",
"engines": {
"node": ">= 0.4"
}
},
"node_modules/media-typer": { "node_modules/media-typer": {
"version": "0.3.0", "version": "0.3.0",
"resolved": "https://registry.npmmirror.com/media-typer/-/media-typer-0.3.0.tgz", "resolved": "https://registry.npmmirror.com/media-typer/-/media-typer-0.3.0.tgz",
@@ -9362,7 +9497,6 @@
"version": "1.52.0", "version": "1.52.0",
"resolved": "https://registry.npmmirror.com/mime-db/-/mime-db-1.52.0.tgz", "resolved": "https://registry.npmmirror.com/mime-db/-/mime-db-1.52.0.tgz",
"integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==",
"dev": true,
"engines": { "engines": {
"node": ">= 0.6" "node": ">= 0.6"
} }
@@ -9371,7 +9505,6 @@
"version": "2.1.35", "version": "2.1.35",
"resolved": "https://registry.npmmirror.com/mime-types/-/mime-types-2.1.35.tgz", "resolved": "https://registry.npmmirror.com/mime-types/-/mime-types-2.1.35.tgz",
"integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==",
"dev": true,
"dependencies": { "dependencies": {
"mime-db": "1.52.0" "mime-db": "1.52.0"
}, },
@@ -10041,6 +10174,12 @@
"node": ">= 0.10" "node": ">= 0.10"
} }
}, },
"node_modules/proxy-from-env": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz",
"integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==",
"license": "MIT"
},
"node_modules/psl": { "node_modules/psl": {
"version": "1.9.0", "version": "1.9.0",
"resolved": "https://registry.npmmirror.com/psl/-/psl-1.9.0.tgz", "resolved": "https://registry.npmmirror.com/psl/-/psl-1.9.0.tgz",
@@ -11334,15 +11473,17 @@
} }
}, },
"node_modules/uview-plus": { "node_modules/uview-plus": {
"version": "3.2.22", "version": "3.4.86",
"resolved": "https://registry.npmmirror.com/uview-plus/-/uview-plus-3.2.22.tgz", "resolved": "https://registry.npmjs.org/uview-plus/-/uview-plus-3.4.86.tgz",
"integrity": "sha512-ouhq0CCGP/ElR7eCCu0rBFNPTGW/EctcrxKIerjj1DOkEIY9BwKBbdI0VTSSkMFnr6RFejSQLBw/aKkqd6Q+7g==", "integrity": "sha512-kD6j/QmxjyztYwQhOYpODHwUNbJAemFb14Ey2izbyRPFfKtDnoabPqx1/Ni+jzUYOTQl/k96PepZE7JLADbnXQ==",
"dependencies": { "dependencies": {
"clipboard": "^2.0.11", "clipboard": "^2.0.11",
"dayjs": "^1.11.3" "dayjs": "^1.11.3"
}, },
"engines": { "engines": {
"HBuilderX": "^3.1.0" "HBuilderX": "^3.1.0",
"uni-app": "^4.66",
"uni-app-x": ""
} }
}, },
"node_modules/v8-to-istanbul": { "node_modules/v8-to-istanbul": {
@@ -16230,9 +16371,7 @@
"asynckit": { "asynckit": {
"version": "0.4.0", "version": "0.4.0",
"resolved": "https://registry.npmmirror.com/asynckit/-/asynckit-0.4.0.tgz", "resolved": "https://registry.npmmirror.com/asynckit/-/asynckit-0.4.0.tgz",
"integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==", "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q=="
"dev": true,
"peer": true
}, },
"autoprefixer": { "autoprefixer": {
"version": "10.4.19", "version": "10.4.19",
@@ -16247,6 +16386,30 @@
"postcss-value-parser": "^4.2.0" "postcss-value-parser": "^4.2.0"
} }
}, },
"axios": {
"version": "1.11.0",
"resolved": "https://registry.npmjs.org/axios/-/axios-1.11.0.tgz",
"integrity": "sha512-1Lx3WLFQWm3ooKDYZD1eXmoGO9fxYQjrycfHFC8P0sCfQVXyROp0p9PFWBehewBOdCwHc+f/b8I0fMto5eSfwA==",
"requires": {
"follow-redirects": "^1.15.6",
"form-data": "^4.0.4",
"proxy-from-env": "^1.1.0"
},
"dependencies": {
"form-data": {
"version": "4.0.4",
"resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.4.tgz",
"integrity": "sha512-KrGhL9Q4zjj0kiUt5OO4Mr/A/jlI2jDYs5eHBpYHPcBEVSiipAvn2Ko2HnPe20rmcuuvMHNdZFp+4IlGTMF0Ow==",
"requires": {
"asynckit": "^0.4.0",
"combined-stream": "^1.0.8",
"es-set-tostringtag": "^2.1.0",
"hasown": "^2.0.2",
"mime-types": "^2.1.12"
}
}
}
},
"babel-jest": { "babel-jest": {
"version": "27.5.1", "version": "27.5.1",
"resolved": "https://registry.npmmirror.com/babel-jest/-/babel-jest-27.5.1.tgz", "resolved": "https://registry.npmmirror.com/babel-jest/-/babel-jest-27.5.1.tgz",
@@ -16583,6 +16746,15 @@
"set-function-length": "^1.2.1" "set-function-length": "^1.2.1"
} }
}, },
"call-bind-apply-helpers": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz",
"integrity": "sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==",
"requires": {
"es-errors": "^1.3.0",
"function-bind": "^1.1.2"
}
},
"callsites": { "callsites": {
"version": "3.1.0", "version": "3.1.0",
"resolved": "https://registry.npmmirror.com/callsites/-/callsites-3.1.0.tgz", "resolved": "https://registry.npmmirror.com/callsites/-/callsites-3.1.0.tgz",
@@ -16700,8 +16872,6 @@
"version": "1.0.8", "version": "1.0.8",
"resolved": "https://registry.npmmirror.com/combined-stream/-/combined-stream-1.0.8.tgz", "resolved": "https://registry.npmmirror.com/combined-stream/-/combined-stream-1.0.8.tgz",
"integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==",
"dev": true,
"peer": true,
"requires": { "requires": {
"delayed-stream": "~1.0.0" "delayed-stream": "~1.0.0"
} }
@@ -16956,9 +17126,7 @@
"delayed-stream": { "delayed-stream": {
"version": "1.0.0", "version": "1.0.0",
"resolved": "https://registry.npmmirror.com/delayed-stream/-/delayed-stream-1.0.0.tgz", "resolved": "https://registry.npmmirror.com/delayed-stream/-/delayed-stream-1.0.0.tgz",
"integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ=="
"dev": true,
"peer": true
}, },
"delegate": { "delegate": {
"version": "3.2.0", "version": "3.2.0",
@@ -17020,6 +17188,16 @@
} }
} }
}, },
"dunder-proto": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.1.tgz",
"integrity": "sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==",
"requires": {
"call-bind-apply-helpers": "^1.0.1",
"es-errors": "^1.3.0",
"gopd": "^1.2.0"
}
},
"ee-first": { "ee-first": {
"version": "1.1.1", "version": "1.1.1",
"resolved": "https://registry.npmmirror.com/ee-first/-/ee-first-1.1.1.tgz", "resolved": "https://registry.npmmirror.com/ee-first/-/ee-first-1.1.1.tgz",
@@ -17076,25 +17254,39 @@
} }
}, },
"es-define-property": { "es-define-property": {
"version": "1.0.0", "version": "1.0.1",
"resolved": "https://registry.npmmirror.com/es-define-property/-/es-define-property-1.0.0.tgz", "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.1.tgz",
"integrity": "sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==", "integrity": "sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g=="
"dev": true,
"requires": {
"get-intrinsic": "^1.2.4"
}
}, },
"es-errors": { "es-errors": {
"version": "1.3.0", "version": "1.3.0",
"resolved": "https://registry.npmmirror.com/es-errors/-/es-errors-1.3.0.tgz", "resolved": "https://registry.npmmirror.com/es-errors/-/es-errors-1.3.0.tgz",
"integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw=="
"dev": true
}, },
"es-module-lexer": { "es-module-lexer": {
"version": "1.5.2", "version": "1.5.2",
"resolved": "https://registry.npmmirror.com/es-module-lexer/-/es-module-lexer-1.5.2.tgz", "resolved": "https://registry.npmmirror.com/es-module-lexer/-/es-module-lexer-1.5.2.tgz",
"integrity": "sha512-l60ETUTmLqbVbVHv1J4/qj+M8nq7AwMzEcg3kmJDt9dCNrTk+yHcYFf/Kw75pMDwd9mPcIGCG5LcS20SxYRzFA==" "integrity": "sha512-l60ETUTmLqbVbVHv1J4/qj+M8nq7AwMzEcg3kmJDt9dCNrTk+yHcYFf/Kw75pMDwd9mPcIGCG5LcS20SxYRzFA=="
}, },
"es-object-atoms": {
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.1.1.tgz",
"integrity": "sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==",
"requires": {
"es-errors": "^1.3.0"
}
},
"es-set-tostringtag": {
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.1.0.tgz",
"integrity": "sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA==",
"requires": {
"es-errors": "^1.3.0",
"get-intrinsic": "^1.2.6",
"has-tostringtag": "^1.0.2",
"hasown": "^2.0.2"
}
},
"esbuild": { "esbuild": {
"version": "0.17.19", "version": "0.17.19",
"resolved": "https://registry.npmmirror.com/esbuild/-/esbuild-0.17.19.tgz", "resolved": "https://registry.npmmirror.com/esbuild/-/esbuild-0.17.19.tgz",
@@ -17382,6 +17574,11 @@
"path-exists": "^4.0.0" "path-exists": "^4.0.0"
} }
}, },
"follow-redirects": {
"version": "1.15.11",
"resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.11.tgz",
"integrity": "sha512-deG2P0JfjrTxl50XGCDyfI97ZGVCxIpfKYmfyrQ54n5FO/0gfIES8C/Psl6kWVDolizcaaxZJnTS0QSMxvnsBQ=="
},
"form-data": { "form-data": {
"version": "3.0.1", "version": "3.0.1",
"resolved": "https://registry.npmmirror.com/form-data/-/form-data-3.0.1.tgz", "resolved": "https://registry.npmmirror.com/form-data/-/form-data-3.0.1.tgz",
@@ -17457,16 +17654,20 @@
"integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==" "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg=="
}, },
"get-intrinsic": { "get-intrinsic": {
"version": "1.2.4", "version": "1.3.0",
"resolved": "https://registry.npmmirror.com/get-intrinsic/-/get-intrinsic-1.2.4.tgz", "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.3.0.tgz",
"integrity": "sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==", "integrity": "sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==",
"dev": true,
"requires": { "requires": {
"call-bind-apply-helpers": "^1.0.2",
"es-define-property": "^1.0.1",
"es-errors": "^1.3.0", "es-errors": "^1.3.0",
"es-object-atoms": "^1.1.1",
"function-bind": "^1.1.2", "function-bind": "^1.1.2",
"has-proto": "^1.0.1", "get-proto": "^1.0.1",
"has-symbols": "^1.0.3", "gopd": "^1.2.0",
"hasown": "^2.0.0" "has-symbols": "^1.1.0",
"hasown": "^2.0.2",
"math-intrinsics": "^1.1.0"
} }
}, },
"get-package-type": { "get-package-type": {
@@ -17482,6 +17683,15 @@
"integrity": "sha512-BrGGraKm2uPqurfGVj/z97/zv8dPleC6x9JBNRTrDNtCkkRF4rPwrQXFgL7+I+q8QSdU4ntLQX2D7KIxSy8nGw==", "integrity": "sha512-BrGGraKm2uPqurfGVj/z97/zv8dPleC6x9JBNRTrDNtCkkRF4rPwrQXFgL7+I+q8QSdU4ntLQX2D7KIxSy8nGw==",
"dev": true "dev": true
}, },
"get-proto": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/get-proto/-/get-proto-1.0.1.tgz",
"integrity": "sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==",
"requires": {
"dunder-proto": "^1.0.1",
"es-object-atoms": "^1.0.0"
}
},
"get-stream": { "get-stream": {
"version": "6.0.1", "version": "6.0.1",
"resolved": "https://registry.npmmirror.com/get-stream/-/get-stream-6.0.1.tgz", "resolved": "https://registry.npmmirror.com/get-stream/-/get-stream-6.0.1.tgz",
@@ -17532,13 +17742,9 @@
} }
}, },
"gopd": { "gopd": {
"version": "1.0.1", "version": "1.2.0",
"resolved": "https://registry.npmmirror.com/gopd/-/gopd-1.0.1.tgz", "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.2.0.tgz",
"integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==", "integrity": "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg=="
"dev": true,
"requires": {
"get-intrinsic": "^1.1.3"
}
}, },
"graceful-fs": { "graceful-fs": {
"version": "4.2.11", "version": "4.2.11",
@@ -17559,17 +17765,18 @@
"es-define-property": "^1.0.0" "es-define-property": "^1.0.0"
} }
}, },
"has-proto": {
"version": "1.0.3",
"resolved": "https://registry.npmmirror.com/has-proto/-/has-proto-1.0.3.tgz",
"integrity": "sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q==",
"dev": true
},
"has-symbols": { "has-symbols": {
"version": "1.0.3", "version": "1.1.0",
"resolved": "https://registry.npmmirror.com/has-symbols/-/has-symbols-1.0.3.tgz", "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.1.0.tgz",
"integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", "integrity": "sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ=="
"dev": true },
"has-tostringtag": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz",
"integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==",
"requires": {
"has-symbols": "^1.0.3"
}
}, },
"hash-sum": { "hash-sum": {
"version": "2.0.0", "version": "2.0.0",
@@ -19559,9 +19766,8 @@
}, },
"lodash": { "lodash": {
"version": "4.17.21", "version": "4.17.21",
"resolved": "https://registry.npmmirror.com/lodash/-/lodash-4.17.21.tgz", "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz",
"integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg=="
"dev": true
}, },
"lodash-es": { "lodash-es": {
"version": "4.17.21", "version": "4.17.21",
@@ -19624,6 +19830,11 @@
"tmpl": "1.0.5" "tmpl": "1.0.5"
} }
}, },
"math-intrinsics": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/math-intrinsics/-/math-intrinsics-1.1.0.tgz",
"integrity": "sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g=="
},
"media-typer": { "media-typer": {
"version": "0.3.0", "version": "0.3.0",
"resolved": "https://registry.npmmirror.com/media-typer/-/media-typer-0.3.0.tgz", "resolved": "https://registry.npmmirror.com/media-typer/-/media-typer-0.3.0.tgz",
@@ -19675,14 +19886,12 @@
"mime-db": { "mime-db": {
"version": "1.52.0", "version": "1.52.0",
"resolved": "https://registry.npmmirror.com/mime-db/-/mime-db-1.52.0.tgz", "resolved": "https://registry.npmmirror.com/mime-db/-/mime-db-1.52.0.tgz",
"integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg=="
"dev": true
}, },
"mime-types": { "mime-types": {
"version": "2.1.35", "version": "2.1.35",
"resolved": "https://registry.npmmirror.com/mime-types/-/mime-types-2.1.35.tgz", "resolved": "https://registry.npmmirror.com/mime-types/-/mime-types-2.1.35.tgz",
"integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==",
"dev": true,
"requires": { "requires": {
"mime-db": "1.52.0" "mime-db": "1.52.0"
} }
@@ -20176,6 +20385,11 @@
"ipaddr.js": "1.9.1" "ipaddr.js": "1.9.1"
} }
}, },
"proxy-from-env": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz",
"integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg=="
},
"psl": { "psl": {
"version": "1.9.0", "version": "1.9.0",
"resolved": "https://registry.npmmirror.com/psl/-/psl-1.9.0.tgz", "resolved": "https://registry.npmmirror.com/psl/-/psl-1.9.0.tgz",
@@ -21211,9 +21425,9 @@
} }
}, },
"uview-plus": { "uview-plus": {
"version": "3.2.22", "version": "3.4.86",
"resolved": "https://registry.npmmirror.com/uview-plus/-/uview-plus-3.2.22.tgz", "resolved": "https://registry.npmjs.org/uview-plus/-/uview-plus-3.4.86.tgz",
"integrity": "sha512-ouhq0CCGP/ElR7eCCu0rBFNPTGW/EctcrxKIerjj1DOkEIY9BwKBbdI0VTSSkMFnr6RFejSQLBw/aKkqd6Q+7g==", "integrity": "sha512-kD6j/QmxjyztYwQhOYpODHwUNbJAemFb14Ey2izbyRPFfKtDnoabPqx1/Ni+jzUYOTQl/k96PepZE7JLADbnXQ==",
"requires": { "requires": {
"clipboard": "^2.0.11", "clipboard": "^2.0.11",
"dayjs": "^1.11.3" "dayjs": "^1.11.3"

View File

@@ -52,18 +52,20 @@
"@dcloudio/uni-mp-toutiao": "3.0.0-3080720230703001", "@dcloudio/uni-mp-toutiao": "3.0.0-3080720230703001",
"@dcloudio/uni-mp-weixin": "3.0.0-3080720230703001", "@dcloudio/uni-mp-weixin": "3.0.0-3080720230703001",
"@dcloudio/uni-quickapp-webview": "3.0.0-3080720230703001", "@dcloudio/uni-quickapp-webview": "3.0.0-3080720230703001",
"axios": "^1.11.0",
"dayjs": "^1.11.13",
"html2canvas": "^1.4.1", "html2canvas": "^1.4.1",
"image-tools": "^1.4.0", "image-tools": "^1.4.0",
"lodash": "^4.17.21",
"lodash-es": "^4.17.21", "lodash-es": "^4.17.21",
"pinia": "2.0.36", "pinia": "2.0.36",
"qrcode": "^1.5.1", "qrcode": "^1.5.1",
"qs": "6.7.0", "qs": "6.7.0",
"sortablejs": "^1.15.0", "sortablejs": "^1.15.0",
"uview-plus": "^3.1.29", "uview-plus": "^3.4.86",
"vue": "^3.3.0", "vue": "^3.3.0",
"vue-i18n": "^9.2.2", "vue-i18n": "^9.2.2",
"weixin-js-sdk": "^1.6.5", "weixin-js-sdk": "^1.6.5"
"dayjs": "^1.11.13"
}, },
"devDependencies": { "devDependencies": {
"@dcasia/mini-program-tailwind-webpack-plugin": "^1.5.6", "@dcasia/mini-program-tailwind-webpack-plugin": "^1.5.6",
@@ -83,4 +85,4 @@
"vue-tsc": "^1.0.24", "vue-tsc": "^1.0.24",
"windicss": "^3.5.6" "windicss": "^3.5.6"
} }
} }

View File

@@ -4,11 +4,15 @@
labelWidth="160rpx"> labelWidth="160rpx">
<view class="sidebar-margin card-template mt-[var(--top-m)] py-[20rpx]"> <view class="sidebar-margin card-template mt-[var(--top-m)] py-[20rpx]">
<u-form-item :label="t('pid')" prop="pid" borderBottom> <u-form-item :label="t('pid')" prop="pid" borderBottom>
<view class="flex w-full items-center h-[52rpx]" @click="pidSheetShow = true"> <u-input
<view v-if="!formData.pid" class="text-[#888] text-[28rpx] flex-1"> v-model.trim="formData.pid_name"
{{ t('pidPlaceholder') }}</view> readonly
<view v-else class="text-[28rpx] flex-1 leading-[1.4]">{{ formData.pid_name }}</view> clearable
</view> :placeholder="t('pidPlaceholder')"
suffixIcon="arrow-down-fill"
suffixIconStyle="font-size: 22rpx;color: #c0c4cc"
@click="showPicker"
></u-input>
</u-form-item> </u-form-item>
<u-form-item :label="t('name')" prop="name" borderBottom required> <u-form-item :label="t('name')" prop="name" borderBottom required>
<u-input v-model="formData.name" :placeholder="t('namePlaceholder')" ></u-input> <u-input v-model="formData.name" :placeholder="t('namePlaceholder')" ></u-input>
@@ -21,39 +25,45 @@
@click="handSave" :disabled="loading" :class="{'opacity-50': loading}">{{t('save')}}</button> @click="handSave" :disabled="loading" :class="{'opacity-50': loading}">{{t('save')}}</button>
</view> </view>
</view> </view>
<!-- 上级分类 --> <!-- 上级分类树形选择器 -->
<u-action-sheet class="" :actions="pidList" :show="pidSheetShow" :closeOnClickOverlay="true" <ba-tree-picker
:safeAreaInsetBottom="true" ref="treePicker"
@close="pidSheetShow = false" @select="updateSex"></u-action-sheet> :multiple='false'
@select-change="selectChange"
:title="t('selectParentCategory')"
:localdata="productClassifyTreeList"
valueKey="id"
textKey="name"
childrenKey="children"
></ba-tree-picker>
</view> </view>
</template> </template>
<script setup lang="ts"> <script setup lang="ts">
import { ref, reactive, onMounted } from 'vue' import { ref, reactive } from 'vue'
import { t } from '@/locale' import { t } from '@/locale'
import { onLoad } from '@dcloudio/uni-app'; import { onLoad } from '@dcloudio/uni-app';
import { getProductTypeSelect, getProductTypeInfo, addProductType, editProductType } from '@/addon/erp/api/product'; import { getProductTypeInfo, addProductType, editProductType, getProductClassifyTreeList } from '@/addon/erp/api/product';
import { redirect } from '@/utils/common'; import { redirect } from '@/utils/common';
import useMemberStore from '@/stores/member' import useMemberStore from '@/stores/member'
import usePermission from '@/utils/usePermission' import usePermission from '@/utils/usePermission'
const { hasPermission } = usePermission() import baTreePicker from "@/components/ba-tree-picker/ba-tree-picker.vue"
const { hasPermission } = usePermission()
const memberStore = useMemberStore() const memberStore = useMemberStore()
const formRef: any = ref(null) const formRef: any = ref(null)
const loading = ref(false) const loading = ref(false)
const productClassifyTreeList = ref([])
const treePicker = ref(null)
// 页面加载 // 页面加载
onLoad((option: any) => { onLoad((option: any) => {
getCateList(); getProductClassifyTree();
if(option.id){ if(option.id){
getInfo(option.id); getInfo(option.id);
} }
}) })
const rules = reactive({ const rules = reactive({
name: { name: {
type: 'string', type: 'string',
@@ -69,62 +79,102 @@
name: '', name: '',
sort: 20 sort: 20
}) })
/**
* 上级分类
*/
const pidSheetShow = ref(false)
const pidList = ref<any[]>([]);
const updateSex = (e: any) => {
formData.value.pid = e.id;
formData.value.pid_name = e.name;
}
// 获取上级分类
const getCateList = () => {
getProductTypeSelect().then((res:any) => {
pidList.value = res.data;
}).catch(err => {
// 如果是4001没有绑定企业账号强制跳转绑定
if(err.code == 4001){
redirect({ url: '/addon/erp/pages/member/bind' })
}
})
}
const getInfo = (id: number) => { const getInfo = (id: number) => {
getProductTypeInfo(id).then((res: any) => { getProductTypeInfo(id).then((res: any) => {
formData.value = res.data; formData.value = res.data;
}).catch(err => { }).catch(err => {
// 如果是4001没有绑定企业账号强制跳转绑定
if(err.code == 4001){ if(err.code == 4001){
redirect({ url: '/addon/erp/pages/member/bind' }) redirect({ url: '/addon/erp/pages/member/bind' })
} }
}) })
} }
// 保存 // 保存
const handSave = async() => { const handSave = async() => {
formRef.value.validate().then(() => { formRef.value.validate().then(() => {
if (loading.value) return if (loading.value) return
loading.value = true loading.value = true
const save = formData.value.id ? editProductType : addProductType; const save = formData.value.id ? editProductType : addProductType;
save(formData.value).then((res: any) => { save(formData.value).then((res: any) => {
if(res.code == 1){ if(res.code == 1){
redirect({ url: '/addon/erp/pages/product/type/list' }) redirect({ url: '/addon/erp/pages/product/type/list' })
} }
}).catch((err) => { }).catch((err) => {
// 如果是4001没有绑定企业账号强制跳转绑定
if(err.code == 4001){ if(err.code == 4001){
redirect({ url: '/addon/erp/pages/member/bind' }) redirect({ url: '/addon/erp/pages/member/bind' })
} }
loading.value = false loading.value = false
}) })
}) })
} }
const getProductClassifyTree = () => {
console.log('Loading product classify tree...');
getProductClassifyTreeList({}).then((res : any) => {
console.log('Product classify tree API response:', res);
if (res && Array.isArray(res.data)) {
// 确保数据结构符合树形选择器要求
const formattedData = res.data.map(item => ({
id: item.id?.toString() || '',
name: item.name || '',
children: Array.isArray(item.children) ? item.children : []
}));
console.log('Formatted tree data:', formattedData);
productClassifyTreeList.value = formattedData;
} else {
console.error('Invalid API response format - expected array:', res.data);
productClassifyTreeList.value = [];
}
}).catch(err => {
console.error('Failed to load product classify tree:', err);
if (err.code == 4001) {
redirect({ url: '/addon/erp/pages/member/bind' })
}
})
}
const showPicker = () => {
console.log('Opening tree picker, current tree data:', productClassifyTreeList.value);
console.log('Tree picker instance:', treePicker.value);
// 检查数据是否加载完成
if (productClassifyTreeList.value.length === 0) {
console.warn('No tree data available, attempting to reload...');
getProductClassifyTree();
// 短暂延迟后重试显示选择器
setTimeout(() => {
if (productClassifyTreeList.value.length > 0 && treePicker.value && typeof treePicker.value._show === 'function') {
treePicker.value._show();
} else {
console.error('Failed to load tree data or initialize picker');
uni.showToast({ title: t('loadTreeDataFailed'), icon: 'error' });
}
}, 800);
return;
}
if (treePicker.value && typeof treePicker.value._show === 'function') {
treePicker.value._show();
} else {
console.error('Tree picker instance or _show method not found');
}
}
const selectChange = (ids: string[], names: string) => {
console.log('Selected category - ids:', ids, 'names:', names);
if (Array.isArray(ids) && typeof names === 'string') {
formData.value.pid = ids.length > 0 ? ids[0] : '';
formData.value.pid_name = names;
console.log('Updated form data with selected category:', formData.value.pid, formData.value.pid_name);
} else {
console.error('Invalid select-change parameters format:', ids, names);
}
}
</script> </script>
<style> <style>
.classify-box {
padding: 20rpx 40rpx;
box-sizing: border-box;
background: #fff;
}
</style> </style>

View File

@@ -1,26 +1,42 @@
<template> <template>
<view class="bg-[var(--page-bg-color)] min-h-[100vh]" :style="themeColor()"> <view class="bg-[var(--page-bg-color)] min-h-[100vh]" :style="themeColor()">
<!-- 树形选择器弹窗 -->
<ba-tree-picker
ref="treePicker"
:multiple="false"
@select-change="handleTreeSelect"
:title="t('selectProductCategory')"
:localdata="productClassifyTreeList"
valueKey="id"
textKey="name"
childrenKey="children"
switchColor="#3c9cff"
:defaultExpandLevel="0"
:expand-on-click-node="true"
:auto-expand-parent="false"
></ba-tree-picker>
<!-- 选中分类下的子分类列表 -->
<mescroll-body ref="mescrollRef" @init="mescrollInit" :down="{ use: false }" height="auto" @up="getListFn" <mescroll-body ref="mescrollRef" @init="mescrollInit" :down="{ use: false }" height="auto" @up="getListFn"
:top="mescrollTop"> :top="mescrollTop">
<view class="sidebar-margin body-bottom" v-if="productTypeList.length"> <view class="sidebar-margin body-bottom" v-if="productTypeList.length">
<u-swipe-action class="bg-[#ffffff]" v-for="(item,index) in productTypeList" :key="item.id">
<u-swipe-action class="bg-[#ffffff]" v-for="(item,index) in productTypeList" :key="index">
<u-swipe-action-item :name="item.id" :ref="setSwipeActionRef(index)" <u-swipe-action-item :name="item.id" :ref="setSwipeActionRef(index)"
@click="(v) => hanldeOptionCallBack(v, item.id)" :options="btnOptions"> @click="(v) => hanldeOptionCallBack(v, item.id)" :options="btnOptions">
<view class="border-0 border-b-1 border-solid border-[#ccc]"> <view class="border-0 border-b-1 border-solid border-[#f0f0f0] py-[8rpx] mb-[8rpx] last:mb-0">
<view class="p-[20rpx] leading-normal"> <view class="p-[24rpx] leading-normal hover:bg-gray-50 hover:shadow-sm rounded-md transition-all duration-200 flex items-center" :style="{ paddingLeft: `${item.depth * 50}rpx` }"><uni-icons v-if="item.children && item.children.length" type="folder" size="18" class="mr-[12rpx] text-blue-500"></uni-icons><uni-icons v-else type="file-text" size="18" class="mr-[12rpx] text-gray-400"></uni-icons>
<text class="text-[12px] text-[#6a6a6a]">{{item.name}}</text> <text class="text-[14px] font-medium" :class="item.depth === 0 ? 'text-blue-600' : 'text-gray-700'">{{item.name}}</text>
</view> </view>
</view> </view>
</u-swipe-action-item> </u-swipe-action-item>
</u-swipe-action> </u-swipe-action>
<up-modal :show="show" @confirm="confirm" showCancelButton @cancel="show = false" :title="t('delete')"
:content="t('productTypeDeleteTips')" ref="uModal"></up-modal>
</view> </view>
<mescroll-empty v-if="!productTypeList.length && !loading &&!listLoading"></mescroll-empty> <mescroll-empty v-if="!productTypeList.length && !loading &&!listLoading"></mescroll-empty>
</mescroll-body> </mescroll-body>
<up-modal :show="show" @confirm="confirm" showCancelButton @cancel="show = false" :title="t('delete')"
:content="t('productTypeDeleteTips')" ref="uModal"></up-modal>
<loading-page :loading="loading"></loading-page> <loading-page :loading="loading"></loading-page>
<view v-if="hasPermission('erp_product_type_add')" class="fixed bottom-4 right-4 z-2"> <view v-if="hasPermission('erp_product_type_add')" class="fixed bottom-4 right-4 z-2">
<up-button @click="redirect({ url: '/addon/erp/pages/product/type/add'})" type="primary" shape="circle" <up-button @click="redirect({ url: '/addon/erp/pages/product/type/add'})" type="primary" shape="circle"
@@ -35,11 +51,12 @@
<script setup lang="ts"> <script setup lang="ts">
import { ref } from 'vue' import { ref } from 'vue'
import { t } from '@/locale'; import { t } from '@/locale';
import { redirect, pxToRpx } from '@/utils/common'; import { redirect } from '@/utils/common';
import MescrollBody from '@/components/mescroll/mescroll-body/mescroll-body.vue'; import MescrollBody from '@/components/mescroll/mescroll-body/mescroll-body.vue';
import MescrollEmpty from '@/components/mescroll/mescroll-empty/mescroll-empty.vue'; import MescrollEmpty from '@/components/mescroll/mescroll-empty/mescroll-empty.vue';
import useMescroll from '@/components/mescroll/hooks/useMescroll.js'; import useMescroll from '@/components/mescroll/hooks/useMescroll.js';
import { getProductTypeList, deleteProductType } from '@/addon/erp/api/product'; import { getProductTypeList, deleteProductType, getProductClassifyTreeList } from '@/addon/erp/api/product';
import baTreePicker from '@/components/ba-tree-picker/ba-tree-picker.vue';
import { onShow, onPageScroll, onReachBottom } from '@dcloudio/uni-app'; import { onShow, onPageScroll, onReachBottom } from '@dcloudio/uni-app';
import usePermission from '@/utils/usePermission' import usePermission from '@/utils/usePermission'
@@ -54,19 +71,14 @@
backgroundColor: string; backgroundColor: string;
}; };
} }
// 获取系统状态栏的高度
let menuButtonInfo : any = {};
// 如果是小程序,获取右上角胶囊的尺寸信息,避免导航栏右侧内容与胶囊重叠(支付宝小程序非本API尚未兼容)
// #ifdef MP-WEIXIN || MP-BAIDU || MP-TOUTIAO || MP-QQ
menuButtonInfo = uni.getMenuButtonBoundingClientRect();
// #endif
const mescrollTop = "20rpx" const mescrollTop = "20rpx"
const productTypeList = ref<Array<any>>([]), const productTypeList = ref<Array<any>>([]),
loading = ref<boolean>(true), productClassifyTreeList = ref<Array<any>>([]),
listLoading = ref<boolean>(true), loading = ref<boolean>(true),
mescrollRef = ref(null); listLoading = ref<boolean>(true),
mescrollRef = ref(null),
treePicker = ref(null);
interface mescrollStructure { interface mescrollStructure {
num : number, num : number,
@@ -76,31 +88,61 @@
} }
const getListFn = (mescroll : mescrollStructure) => { const getListFn = (mescroll : mescrollStructure) => {
listLoading.value = true; listLoading.value = true;
let data : Object = { getProductClassifyTreeList({}).then((res : any) => {
page: mescroll.num, productTypeList.value = formatTreeData(res.data);
limit: mescroll.size mescroll.endSuccess(0); // 树形数据一次性加载完成,结束分页
}; listLoading.value = false;
getProductTypeList(data).then((res : any) => { loading.value = false;
let newArr = res.data.data; }).catch((err) => {
mescroll.endSuccess(newArr.length); if (err.code == 4001) {
//设置列表数据 redirect({ url: '/addon/erp/pages/member/bind' })
if (mescroll.num == 1) { }
productTypeList.value = []; //如果是第一页需手动制空列表 listLoading.value = false;
} loading.value = false;
productTypeList.value = productTypeList.value.concat(newArr); mescroll.endErr();
listLoading.value = false; })
loading.value = false; };
}).catch((err) => {
// 如果是4001没有绑定企业账号强制跳转绑定 // 获取树形分类数据
if (err.code == 4001) { // 格式化树形数据确保每个节点都有children属性
redirect({ url: '/addon/erp/pages/member/bind' }) const formatTreeData = (treeData, depth = 0) => {
} let result = [];
listLoading.value = false; treeData.forEach(node => {
loading.value = false; result.push({
mescroll.endErr(); // 请求失败, 结束加载 ...node,
}) depth: depth
} });
if (node.children && node.children.length) {
result = result.concat(formatTreeData(node.children, depth + 1));
}
});
return result;
};
const loadTreeData = () => {
loading.value = true;
getProductClassifyTreeList({}).then((res : any) => {
// 处理树形数据确保所有节点都有children属性
productClassifyTreeList.value = formatTreeData(res.data);
loading.value = false;
}).catch(() => {
loading.value = false;
});
};
// 显示树形选择器
const showTreePicker = () => {
treePicker.value._show();
};
// 处理树形选择结果
const handleTreeSelect = (selectedIds : number[], selectedNames : string) => {
formData.value.categoryId = selectedIds[0] || 0;
formData.value.categoryName = selectedNames || '';
// 重新加载当前分类下的子分类列表
getMescroll().resetUpScroll();
};
const btnOptions = ref<BtnOption[]>([]); const btnOptions = ref<BtnOption[]>([]);
const initBtn = () => { const initBtn = () => {
@@ -163,7 +205,8 @@
} }
}).catch(() => { }); }).catch(() => { });
} }
initBtn() initBtn();
loadTreeData();
</script> </script>
<style> <style>