diff --git a/.commitlintrc.cjs b/.commitlintrc.cjs
deleted file mode 100644
index dd736e1..0000000
--- a/.commitlintrc.cjs
+++ /dev/null
@@ -1,106 +0,0 @@
-const fs = require('fs')
-const path = require('path')
-const { execSync } = require('child_process')
-
-const scopes = fs
- .readdirSync(path.resolve(__dirname, 'src'), { withFileTypes: true })
- .filter((dirent) => dirent.isDirectory())
- .map((dirent) => dirent.name.replace(/s$/, ''))
-
-// precomputed scope
-const scopeComplete = execSync('git status --porcelain || true')
- .toString()
- .trim()
- .split('\n')
- .find((r) => ~r.indexOf('M src'))
- ?.replace(/(\/)/g, '%%')
- ?.match(/src%%((\w|-)*)/)?.[1]
- ?.replace(/s$/, '')
-
-module.exports = {
- ignores: [(commit) => commit.includes('init')],
- extends: ['@commitlint/config-conventional'],
- rules: {
- 'body-leading-blank': [2, 'always'],
- 'footer-leading-blank': [1, 'always'],
- 'header-max-length': [2, 'always', 108],
- 'subject-empty': [2, 'never'],
- 'type-empty': [2, 'never'],
- 'subject-case': [0],
- 'type-enum': [
- 2,
- 'always',
- [
- 'feat',
- 'fix',
- 'perf',
- 'style',
- 'docs',
- 'test',
- 'refactor',
- 'build',
- 'ci',
- 'chore',
- 'revert',
- 'wip',
- 'workflow',
- 'types',
- 'release',
- ],
- ],
- },
- prompt: {
- /** @use `pnpm commit :f` */
- alias: {
- f: 'docs: fix typos',
- r: 'docs: update README',
- s: 'style: update code format',
- b: 'build: bump dependencies',
- c: 'chore: update config',
- },
- customScopesAlign: !scopeComplete ? 'top' : 'bottom',
- defaultScope: scopeComplete,
- scopes: [...scopes, 'mock'],
- allowEmptyIssuePrefixs: false,
- allowCustomIssuePrefixs: false,
-
- // English
- typesAppend: [
- { value: 'wip', name: 'wip: work in process' },
- { value: 'workflow', name: 'workflow: workflow improvements' },
- { value: 'types', name: 'types: type definition file changes' },
- ],
-
- // 中英文对照版
- // messages: {
- // type: '选择你要提交的类型 :',
- // scope: '选择一个提交范围 (可选):',
- // customScope: '请输入自定义的提交范围 :',
- // subject: '填写简短精炼的变更描述 :\n',
- // body: '填写更加详细的变更描述 (可选)。使用 "|" 换行 :\n',
- // breaking: '列举非兼容性重大的变更 (可选)。使用 "|" 换行 :\n',
- // footerPrefixsSelect: '选择关联issue前缀 (可选):',
- // customFooterPrefixs: '输入自定义issue前缀 :',
- // footer: '列举关联issue (可选) 例如: #31, #I3244 :\n',
- // confirmCommit: '是否提交或修改commit ?',
- // },
- // types: [
- // { value: 'feat', name: 'feat: 新增功能' },
- // { value: 'fix', name: 'fix: 修复缺陷' },
- // { value: 'docs', name: 'docs: 文档变更' },
- // { value: 'style', name: 'style: 代码格式' },
- // { value: 'refactor', name: 'refactor: 代码重构' },
- // { value: 'perf', name: 'perf: 性能优化' },
- // { value: 'test', name: 'test: 添加疏漏测试或已有测试改动' },
- // { value: 'build', name: 'build: 构建流程、外部依赖变更 (如升级 npm 包、修改打包配置等)' },
- // { value: 'ci', name: 'ci: 修改 CI 配置、脚本' },
- // { value: 'revert', name: 'revert: 回滚 commit' },
- // { value: 'chore', name: 'chore: 对构建过程或辅助工具和库的更改 (不影响源文件、测试用例)' },
- // { value: 'wip', name: 'wip: 正在开发中' },
- // { value: 'workflow', name: 'workflow: 工作流程改进' },
- // { value: 'types', name: 'types: 类型定义文件修改' },
- // ],
- // emptyScopesAlias: 'empty: 不填写',
- // customScopesAlias: 'custom: 自定义',
- },
-}
diff --git a/.eslintignore b/.eslintignore
deleted file mode 100644
index 2ce5c91..0000000
--- a/.eslintignore
+++ /dev/null
@@ -1 +0,0 @@
-src/uni_modules/
diff --git a/.eslintrc-auto-import.json b/.eslintrc-auto-import.json
deleted file mode 100644
index 27df73d..0000000
--- a/.eslintrc-auto-import.json
+++ /dev/null
@@ -1,101 +0,0 @@
-{
- "globals": {
- "Component": true,
- "ComponentPublicInstance": true,
- "ComputedRef": true,
- "EffectScope": true,
- "ExtractDefaultPropTypes": true,
- "ExtractPropTypes": true,
- "ExtractPublicPropTypes": true,
- "InjectionKey": true,
- "PropType": true,
- "Ref": true,
- "VNode": true,
- "WritableComputedRef": true,
- "computed": true,
- "createApp": true,
- "customRef": true,
- "defineAsyncComponent": true,
- "defineComponent": true,
- "effectScope": true,
- "getCurrentInstance": true,
- "getCurrentScope": true,
- "h": true,
- "inject": true,
- "isProxy": true,
- "isReactive": true,
- "isReadonly": true,
- "isRef": true,
- "markRaw": true,
- "nextTick": true,
- "onActivated": true,
- "onAddToFavorites": true,
- "onBackPress": true,
- "onBeforeMount": true,
- "onBeforeUnmount": true,
- "onBeforeUpdate": true,
- "onDeactivated": true,
- "onError": true,
- "onErrorCaptured": true,
- "onHide": true,
- "onLaunch": true,
- "onLoad": true,
- "onMounted": true,
- "onNavigationBarButtonTap": true,
- "onNavigationBarSearchInputChanged": true,
- "onNavigationBarSearchInputClicked": true,
- "onNavigationBarSearchInputConfirmed": true,
- "onNavigationBarSearchInputFocusChanged": true,
- "onPageNotFound": true,
- "onPageScroll": true,
- "onPullDownRefresh": true,
- "onReachBottom": true,
- "onReady": true,
- "onRenderTracked": true,
- "onRenderTriggered": true,
- "onResize": true,
- "onScopeDispose": true,
- "onServerPrefetch": true,
- "onShareAppMessage": true,
- "onShareTimeline": true,
- "onShow": true,
- "onTabItemTap": true,
- "onThemeChange": true,
- "onUnhandledRejection": true,
- "onUnload": true,
- "onUnmounted": true,
- "onUpdated": true,
- "provide": true,
- "reactive": true,
- "readonly": true,
- "ref": true,
- "resolveComponent": true,
- "shallowReactive": true,
- "shallowReadonly": true,
- "shallowRef": true,
- "toRaw": true,
- "toRef": true,
- "toRefs": true,
- "toValue": true,
- "triggerRef": true,
- "unref": true,
- "useAttrs": true,
- "useCssModule": true,
- "useCssVars": true,
- "useRequest": true,
- "useSlots": true,
- "useUpload": true,
- "useUpload2": true,
- "watch": true,
- "watchEffect": true,
- "watchPostEffect": true,
- "watchSyncEffect": true,
- "DirectiveBinding": true,
- "MaybeRef": true,
- "MaybeRefOrGetter": true,
- "onWatcherCleanup": true,
- "useId": true,
- "useModel": true,
- "useTemplateRef": true
- }
-}
diff --git a/.eslintrc.cjs b/.eslintrc.cjs
deleted file mode 100644
index e4a7aba..0000000
--- a/.eslintrc.cjs
+++ /dev/null
@@ -1,98 +0,0 @@
-module.exports = {
- env: {
- browser: true,
- es2021: true,
- node: true,
- },
- extends: [
- 'eslint:recommended',
- 'plugin:@typescript-eslint/recommended',
- 'plugin:vue/vue3-essential',
- // eslint-plugin-import 插件, @see https://www.npmjs.com/package/eslint-plugin-import
- 'plugin:import/recommended',
- // eslint-config-airbnb-base 插件 已经改用 eslint-config-standard 插件
- 'standard',
- // 1. 接入 prettier 的规则
- 'prettier',
- 'plugin:prettier/recommended',
- './.eslintrc-auto-import.json',
- ],
- overrides: [
- {
- env: {
- node: true,
- },
- files: ['.eslintrc.{js,cjs}'],
- parserOptions: {
- sourceType: 'script',
- },
- },
- ],
- parserOptions: {
- ecmaVersion: 'latest',
- parser: '@typescript-eslint/parser',
- sourceType: 'module',
- },
- plugins: [
- '@typescript-eslint',
- 'vue',
- // 2. 加入 prettier 的 eslint 插件
- 'prettier',
- // eslint-import-resolver-typescript 插件,@see https://www.npmjs.com/package/eslint-import-resolver-typescript
- 'import',
- ],
- rules: {
- // 3. 注意要加上这一句,开启 prettier 自动修复的功能
- 'prettier/prettier': 'error',
- // turn on errors for missing imports
- 'import/no-unresolved': 'off',
- // 对后缀的检测,否则 import 一个ts文件也会报错,需要手动添加'.ts', 增加了下面的配置后就不用了
- 'import/extensions': [
- 'error',
- 'ignorePackages',
- { js: 'never', jsx: 'never', ts: 'never', tsx: 'never' },
- ],
- // 只允许1个默认导出,关闭,否则不能随意export xxx
- 'import/prefer-default-export': ['off'],
- 'no-console': ['off'],
- // 'no-unused-vars': ['off'],
- // '@typescript-eslint/no-unused-vars': ['off'],
- // 解决vite.config.ts报错问题
- 'import/no-extraneous-dependencies': 'off',
- 'no-plusplus': 'off',
- 'no-shadow': 'off',
- 'vue/multi-word-component-names': 'off',
- 'vue/no-unused-vars': 'off',
- '@typescript-eslint/no-unused-vars': 'off',
- '@typescript-eslint/no-explicit-any': 'off',
- 'no-underscore-dangle': 'off',
- 'no-use-before-define': 'off',
- 'no-undef': 'off',
- 'no-unused-vars': 'off',
- 'no-param-reassign': 'off',
- // 避免 `eslint` 对于 `typescript` 函数重载的误报
- 'no-redeclare': 'off',
- '@typescript-eslint/no-redeclare': 'error',
- },
- // eslint-import-resolver-typescript 插件,@see https://www.npmjs.com/package/eslint-import-resolver-typescript
- settings: {
- 'import/parsers': {
- '@typescript-eslint/parser': ['.ts', '.tsx'],
- },
- 'import/resolver': {
- typescript: {},
- },
- },
- globals: {
- $t: true,
- uni: true,
- UniApp: true,
- wx: true,
- WechatMiniprogram: true,
- getCurrentPages: true,
- UniHelper: true,
- Page: true,
- App: true,
- NodeJS: true,
- },
-}
diff --git a/.husky/commit-msg b/.husky/commit-msg
deleted file mode 100755
index a521947..0000000
--- a/.husky/commit-msg
+++ /dev/null
@@ -1,5 +0,0 @@
-#!/usr/bin/env sh
-. "$(dirname -- "$0")/_/husky.sh"
-
-# Run the commit-msg hook
-npx --no-install commitlint --edit
diff --git a/.husky/pre-commit b/.husky/pre-commit
deleted file mode 100755
index 0599206..0000000
--- a/.husky/pre-commit
+++ /dev/null
@@ -1,5 +0,0 @@
-#!/usr/bin/env sh
-. "$(dirname -- "$0")/_/husky.sh"
-
-# Run the pre-commit hook
-npx --no-install -- lint-staged
diff --git a/.stylelintignore b/.stylelintignore
deleted file mode 100644
index 2ce5c91..0000000
--- a/.stylelintignore
+++ /dev/null
@@ -1 +0,0 @@
-src/uni_modules/
diff --git a/.stylelintrc.cjs b/.stylelintrc.cjs
deleted file mode 100644
index 574beef..0000000
--- a/.stylelintrc.cjs
+++ /dev/null
@@ -1,58 +0,0 @@
-// .stylelintrc.cjs
-
-module.exports = {
- root: true,
- extends: [
- // stylelint-config-standard 替换成了更宽松的 stylelint-config-recommended
- 'stylelint-config-recommended',
- // stylelint-config-standard-scss 替换成了更宽松的 stylelint-config-recommended-scss
- 'stylelint-config-recommended-scss',
- 'stylelint-config-recommended-vue/scss',
- 'stylelint-config-html/vue',
- 'stylelint-config-recess-order',
- ],
- plugins: ['stylelint-prettier'],
- overrides: [
- // 扫描 .vue/html 文件中的
diff --git a/src/pages/index/index.vue b/src/pages/index/index.vue
index e267f26..03843c8 100644
--- a/src/pages/index/index.vue
+++ b/src/pages/index/index.vue
@@ -32,7 +32,6 @@
diff --git a/src/utils/http.ts b/src/utils/http.ts
index d46535a..afa1eaf 100644
--- a/src/utils/http.ts
+++ b/src/utils/http.ts
@@ -84,6 +84,41 @@ export const httpPost = (
header,
})
}
+/**
+ * PUT 请求
+ */
+export const httpPut = (
+ url: string,
+ data?: Record,
+ query?: Record,
+ header?: Record,
+) => {
+ return http({
+ url,
+ data,
+ query,
+ method: 'PUT',
+ header,
+ })
+}
+
+/**
+ * DELETE 请求(无请求体,仅 query)
+ */
+export const httpDelete = (
+ url: string,
+ query?: Record,
+ header?: Record,
+) => {
+ return http({
+ url,
+ query,
+ method: 'DELETE',
+ header,
+ })
+}
http.get = httpGet
http.post = httpPost
+http.put = httpPut
+http.delete = httpDelete
diff --git a/src/utils/index.ts b/src/utils/index.ts
index e358e1b..c2e9ef5 100644
--- a/src/utils/index.ts
+++ b/src/utils/index.ts
@@ -1,6 +1,8 @@
-import { pages, subPackages, tabBar } from '@/pages.json'
+import pagesConfig from '@/pages.json'
import { isMpWeixin } from './platform'
+const { pages, subPackages, tabBar = { list: [] } } = { ...pagesConfig }
+
export const getLastPage = () => {
// getCurrentPages() 至少有1个元素,所以不再额外判断
// const lastPage = getCurrentPages().at(-1)
@@ -11,16 +13,14 @@ export const getLastPage = () => {
/** 判断当前页面是否是 tabbar 页 */
export const getIsTabbar = () => {
- if (!tabBar) {
+ try {
+ const lastPage = getLastPage()
+ const currPath = lastPage?.route
+
+ return Boolean(tabBar?.list?.some((item) => item.pagePath === currPath))
+ } catch {
return false
}
- if (!tabBar.list.length) {
- // 通常有 tabBar 的话,list 不能有空,且至少有2个元素,这里其实不用处理
- return false
- }
- const lastPage = getLastPage()
- const currPath = lastPage.route
- return !!tabBar.list.find((e) => e.pagePath === currPath)
}
/**
diff --git a/vite.config.ts b/vite.config.ts
index f0fec23..3eb0972 100644
--- a/vite.config.ts
+++ b/vite.config.ts
@@ -80,7 +80,6 @@ export default ({ command, mode }) => {
imports: ['vue', 'uni-app'],
dts: 'src/types/auto-import.d.ts',
dirs: ['src/hooks'], // 自动导入 hooks
- eslintrc: { enabled: true },
vueTemplate: true, // default false
}),