From 0019102482b2f41d796d6c96b170104b33eee579 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=B2=B3=E9=B9=8F=E9=BE=99?= <1547476325@qq.com> Date: Fri, 18 Apr 2025 14:39:01 +0800 Subject: [PATCH] =?UTF-8?q?=E5=88=9D=E5=A7=8B=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .env.development | 5 + .env.production | 6 + .eslintignore | 3 + .eslintrc.cjs | 146 +++++++++++++ .gitignore | 30 +++ .husky/pre-commit | 4 + .prettierignore | 8 + .prettierrc.cjs | 36 ++++ auto/addPage.ts | 85 ++++++++ auto/preinstall.js | 4 + index.html | 23 ++ package.json | 100 +++++++++ src/App.vue | 29 +++ src/api/common.ts | 25 +++ src/api/login.ts | 39 ++++ src/api/user.ts | 61 ++++++ src/api/votingElection.ts | 44 ++++ src/config/index.ts | 13 ++ src/main.ts | 16 ++ src/manifest.json | 131 ++++++++++++ src/pages.json | 85 ++++++++ src/pages/index/index.vue | 283 ++++++++++++++++++++++++ src/pages/learningCenter/index.vue | 27 +++ src/pages/login/login.vue | 111 ++++++++++ src/pages/memberCenter/index.vue | 203 ++++++++++++++++++ src/pages/mine/index.vue | 331 +++++++++++++++++++++++++++++ src/permission.ts | 51 +++++ src/share.vue | 257 ++++++++++++++++++++++ src/static/img/Group.png | Bin 0 -> 4474 bytes src/static/logo.png | Bin 0 -> 112107 bytes src/static/tabbar/grzx.png | Bin 0 -> 1091 bytes src/static/tabbar/grzx_select.png | Bin 0 -> 1196 bytes src/static/tabbar/hyzx.png | Bin 0 -> 1044 bytes src/static/tabbar/hyzx_select.png | Bin 0 -> 1032 bytes src/static/tabbar/index.png | Bin 0 -> 923 bytes src/static/tabbar/index_select.png | Bin 0 -> 750 bytes src/static/tabbar/xxzx.png | Bin 0 -> 918 bytes src/static/tabbar/xxzx_select.png | Bin 0 -> 1005 bytes src/store/index.ts | 10 + src/store/user.ts | 115 ++++++++++ src/types/auto-imports.d.ts | 180 ++++++++++++++++ src/types/env.d.ts | 13 ++ src/types/global.d.ts | 29 +++ src/uni.scss | 118 ++++++++++ src/utils/common.ts | 58 +++++ src/utils/http.ts | 61 ++++++ src/utils/rules.ts | 6 + tsconfig.json | 29 +++ vite.config.ts | 45 ++++ 49 files changed, 2820 insertions(+) create mode 100644 .env.development create mode 100644 .env.production create mode 100644 .eslintignore create mode 100644 .eslintrc.cjs create mode 100644 .gitignore create mode 100644 .husky/pre-commit create mode 100644 .prettierignore create mode 100644 .prettierrc.cjs create mode 100644 auto/addPage.ts create mode 100644 auto/preinstall.js create mode 100644 index.html create mode 100644 package.json create mode 100644 src/App.vue create mode 100644 src/api/common.ts create mode 100644 src/api/login.ts create mode 100644 src/api/user.ts create mode 100644 src/api/votingElection.ts create mode 100644 src/config/index.ts create mode 100644 src/main.ts create mode 100644 src/manifest.json create mode 100644 src/pages.json create mode 100644 src/pages/index/index.vue create mode 100644 src/pages/learningCenter/index.vue create mode 100644 src/pages/login/login.vue create mode 100644 src/pages/memberCenter/index.vue create mode 100644 src/pages/mine/index.vue create mode 100644 src/permission.ts create mode 100644 src/share.vue create mode 100644 src/static/img/Group.png create mode 100644 src/static/logo.png create mode 100644 src/static/tabbar/grzx.png create mode 100644 src/static/tabbar/grzx_select.png create mode 100644 src/static/tabbar/hyzx.png create mode 100644 src/static/tabbar/hyzx_select.png create mode 100644 src/static/tabbar/index.png create mode 100644 src/static/tabbar/index_select.png create mode 100644 src/static/tabbar/xxzx.png create mode 100644 src/static/tabbar/xxzx_select.png create mode 100644 src/store/index.ts create mode 100644 src/store/user.ts create mode 100644 src/types/auto-imports.d.ts create mode 100644 src/types/env.d.ts create mode 100644 src/types/global.d.ts create mode 100644 src/uni.scss create mode 100644 src/utils/common.ts create mode 100644 src/utils/http.ts create mode 100644 src/utils/rules.ts create mode 100644 tsconfig.json create mode 100644 vite.config.ts diff --git a/.env.development b/.env.development new file mode 100644 index 0000000..4ed7ec7 --- /dev/null +++ b/.env.development @@ -0,0 +1,5 @@ +ENV='development' +# base api +VITE_APP_BASE_URL = 'https://evote.truescloud.com' +VITE_APP_BASE_PRE = '/dev-api' +VITE_APP_BASE_NAME = 'POS' diff --git a/.env.production b/.env.production new file mode 100644 index 0000000..6ca60a8 --- /dev/null +++ b/.env.production @@ -0,0 +1,6 @@ +ENV='production' +# base api +VITE_APP_BASE_URL = 'http://pos-api.lingji.vip' +VITE_APP_BASE_PRE = 'http://pos-api.lingji.vip' +VITE_APP_BASE_NAME = 'POS' + diff --git a/.eslintignore b/.eslintignore new file mode 100644 index 0000000..0ea3957 --- /dev/null +++ b/.eslintignore @@ -0,0 +1,3 @@ +dist +node_modules +uni_modules diff --git a/.eslintrc.cjs b/.eslintrc.cjs new file mode 100644 index 0000000..f44624e --- /dev/null +++ b/.eslintrc.cjs @@ -0,0 +1,146 @@ +// @see https://eslint.bootcss.com/docs/rules/ + +module.exports = { + env: { + browser: true, + es2021: true, + node: true + }, + globals: { + NodeJS: 'readonly' + }, + /* 指定如何解析语法 */ + parser: 'vue-eslint-parser', + /** 优先级低于 parse 的语法解析配置 */ + parserOptions: { + ecmaVersion: 'latest', + sourceType: 'module', + parser: '@typescript-eslint/parser', + jsxPragma: 'React', + ecmaFeatures: { + jsx: true + } + }, + /* 继承已有的规则 */ + extends: ['eslint:recommended', 'plugin:vue/vue3-essential', 'plugin:@typescript-eslint/recommended', 'plugin:prettier/recommended'], + plugins: ['vue', '@typescript-eslint'], + overrides: [ + { + files: ['*.ts', '*.tsx', '*.vue'], + rules: { + 'no-undef': 0 + } + } + ], + /* + * 'off' 或 0 ==> 关闭规则 + * 'warn' 或 1 ==> 打开的规则作为警告(不影响代码执行) + * 'error' 或 2 ==> 规则作为一个错误(代码不能执行,界面报错) + */ + rules: { + // typeScript (https://typescript-eslint.io/rules) + '@typescript-eslint/no-unused-vars': [2, { argsIgnorePattern: '^_' }], // 禁止定义未使用的变量 + '@typescript-eslint/prefer-ts-expect-error': 2, // 禁止使用 @ts-ignore + '@typescript-eslint/no-explicit-any': 0, // 禁止使用 any 类型 + '@typescript-eslint/no-non-null-assertion': 0, + '@typescript-eslint/no-namespace': 0, // 禁止使用自定义 TypeScript 模块和命名空间。 + '@typescript-eslint/semi': 0, + 'no-prototype-builtins': 0, // 可以使用obj.hasOwnProperty() + '@typescript-eslint/no-var-requires': 0, // 不允许在import 中使用require + '@typescript-eslint/no-empty-function': 2, // 关闭空方法检查 + // eslint-plugin-vue (https://eslint.vuejs.org/rules/) + 'vue/multi-word-component-names': 0, // 要求组件名称始终为 “-” 链接的单词 + 'vue/script-setup-uses-vars': 2, // 防止 + +`; + createStream.write(template); + createStream.end(); + console.log('\x1B[34m', `pages ${name} created successfully.`); + } + console.log('\x1B[32m%s\x1B[39m', '\n All files are created successfully.\n'); +} + +addPages(newPages); \ No newline at end of file diff --git a/auto/preinstall.js b/auto/preinstall.js new file mode 100644 index 0000000..01f63a5 --- /dev/null +++ b/auto/preinstall.js @@ -0,0 +1,4 @@ +if (!/pnpm/.test(process.env.npm_execpath || '')) { + console.warn(`\u001b[33mThis repository must using pnpm as the package manager ` + ` for scripts to work properly.\u001b[39m\n`) + process.exit(1) +} diff --git a/index.html b/index.html new file mode 100644 index 0000000..b05e747 --- /dev/null +++ b/index.html @@ -0,0 +1,23 @@ + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/package.json b/package.json new file mode 100644 index 0000000..350e978 --- /dev/null +++ b/package.json @@ -0,0 +1,100 @@ +{ + "name": "uni-preset-vue", + "version": "0.0.0", + "scripts": { + "dev:app": "uni -p app", + "dev:app-android": "uni -p app-android", + "dev:app-ios": "uni -p app-ios", + "dev:custom": "uni -p", + "dev:h5": "uni", + "dev:h5:prop": "uni --mode=production", + "dev:h5:ssr": "uni --ssr", + "dev:mp-alipay": "uni -p mp-alipay", + "dev:mp-baidu": "uni -p mp-baidu", + "dev:mp-jd": "uni -p mp-jd", + "dev:mp-kuaishou": "uni -p mp-kuaishou", + "dev:mp-lark": "uni -p mp-lark", + "dev:mp-qq": "uni -p mp-qq", + "dev:mp-toutiao": "uni -p mp-toutiao", + "dev:mp-weixin": "uni -p mp-weixin", + "dev:quickapp-webview": "uni -p quickapp-webview", + "dev:quickapp-webview-huawei": "uni -p quickapp-webview-huawei", + "dev:quickapp-webview-union": "uni -p quickapp-webview-union", + "build:app": "uni build -p app", + "build:app-android": "uni build -p app-android", + "build:app-ios": "uni build -p app-ios", + "build:custom": "uni build -p", + "build:h5": "uni build", + "build:h5:ssr": "uni build --ssr", + "build:mp-alipay": "uni build -p mp-alipay", + "build:mp-baidu": "uni build -p mp-baidu", + "build:mp-jd": "uni build -p mp-jd", + "build:mp-kuaishou": "uni build -p mp-kuaishou", + "build:mp-lark": "uni build -p mp-lark", + "build:mp-qq": "uni build -p mp-qq", + "build:mp-toutiao": "uni build -p mp-toutiao", + "build:mp-weixin": "uni build -p mp-weixin", + "build:quickapp-webview": "uni build -p quickapp-webview", + "build:quickapp-webview-huawei": "uni build -p quickapp-webview-huawei", + "build:quickapp-webview-union": "uni build -p quickapp-webview-union", + "type-check": "vue-tsc --noEmit", + "add": "node ./auto/addPage.ts", + "preinstall": "node ./auto/preinstall.js", + "lint": "eslint --ext .ts,.js,.vue ./src", + "fix": "eslint --fix --ext .ts,.js,.vue ./src", + "prepare": "husky install", + "rm": "rm -rf node_modules package-lock.json pnpm-lock.yaml && pnpm install" + }, + "dependencies": { + "@dcloudio/uni-app": "3.0.0-alpha-3081220230802001", + "@dcloudio/uni-app-plus": "3.0.0-alpha-3081220230802001", + "@dcloudio/uni-components": "3.0.0-alpha-3081220230802001", + "@dcloudio/uni-h5": "3.0.0-alpha-3081220230802001", + "@dcloudio/uni-mp-alipay": "3.0.0-alpha-3081220230802001", + "@dcloudio/uni-mp-baidu": "3.0.0-alpha-3081220230802001", + "@dcloudio/uni-mp-jd": "3.0.0-alpha-3081220230802001", + "@dcloudio/uni-mp-kuaishou": "3.0.0-alpha-3081220230802001", + "@dcloudio/uni-mp-lark": "3.0.0-alpha-3081220230802001", + "@dcloudio/uni-mp-qq": "3.0.0-alpha-3081220230802001", + "@dcloudio/uni-mp-toutiao": "3.0.0-alpha-3081220230802001", + "@dcloudio/uni-mp-weixin": "3.0.0-alpha-3081220230802001", + "@dcloudio/uni-mp-xhs": "3.0.0-alpha-3081220230802001", + "@dcloudio/uni-quickapp-webview": "3.0.0-alpha-3081220230802001", + "@qiun/ucharts": "2.5.0-20230101", + "animate.css": "^4.1.1", + "echarts": "^5.5.0", + "pinia": "2.0.36", + "sass": "^1.63.2", + "uview-plus": "^3.4.9", + "vue": "^3.2.45", + "vue-i18n": "^9.1.9" + }, + "devDependencies": { + "@babel/eslint-parser": "^7.22.9", + "@dcloudio/types": "^3.3.2", + "@dcloudio/uni-automator": "3.0.0-alpha-3081220230802001", + "@dcloudio/uni-cli-shared": "3.0.0-alpha-3081220230802001", + "@dcloudio/uni-stacktracey": "3.0.0-alpha-3081220230802001", + "@dcloudio/vite-plugin-uni": "3.0.0-alpha-3081220230802001", + "@typescript-eslint/eslint-plugin": "^6.2.1", + "@typescript-eslint/parser": "^6.2.1", + "@vue/tsconfig": "^0.1.3", + "@vueuse/core": "^10.3.0", + "eslint": "^8.46.0", + "eslint-config-prettier": "^8.9.0", + "eslint-plugin-import": "^2.28.0", + "eslint-plugin-node": "^11.1.0", + "eslint-plugin-prettier": "^5.0.0", + "eslint-plugin-vue": "^9.16.1", + "feng-uniapp-exploit": "^1.0.2", + "husky": "^8.0.0", + "pinia-plugin-unistorage": "^0.0.17", + "prettier": "^3.0.0", + "sass-loader": "^10.4.1", + "typescript": "^4.9.4", + "unplugin-auto-import": "^0.16.6", + "unplugin-vue-components": "^0.25.1", + "vite": "4.0.3", + "vue-tsc": "^1.0.24" + } +} \ No newline at end of file diff --git a/src/App.vue b/src/App.vue new file mode 100644 index 0000000..b95142e --- /dev/null +++ b/src/App.vue @@ -0,0 +1,29 @@ + + + + diff --git a/src/api/common.ts b/src/api/common.ts new file mode 100644 index 0000000..af0397f --- /dev/null +++ b/src/api/common.ts @@ -0,0 +1,25 @@ +import { request } from '@/utils/http' + +export function getVoteList(data: pageType) { + return request.http({ + url: '/api/vote_list', + method: 'GET', + data + }) +} + +export function getVoteDetail(data: { id: number }) { + return request.http({ + url: '/api/vote_result_detail', + method: 'GET', + data + }) +} + +export function getVoteResult(data: pageType) { + return request.http({ + url: '/api/vote_result', + method: 'GET', + data + }) +} diff --git a/src/api/login.ts b/src/api/login.ts new file mode 100644 index 0000000..a98c560 --- /dev/null +++ b/src/api/login.ts @@ -0,0 +1,39 @@ +import { request } from '@/utils/http' + +export function getOpenid(data: { code: string }) { + return request.http({ + url: '/api/openid', + data + }) +} + +export function getMobile(data: { code: string; openid: string }) { + return request.http({ + url: '/api/mobile', + data + }) +} + +export function getAdminPhone() { + return request.http({ + url: '/api/admin_mobile', + method: 'GET' + }) +} +//用户签到 +export function getSign(data: { meetId: string; openid: string }) { + return request.http({ + url: '/api/sign', + method: 'GET', + data + }) +} + +//扫码时手机号获取用户信息 +export function getmemberMobileGet(data: { meetId: string; openid: string; mobile: string }) { + return request.http({ + url: '/api/member_mobile_get', + method: 'GET', + data + }) +} \ No newline at end of file diff --git a/src/api/user.ts b/src/api/user.ts new file mode 100644 index 0000000..81ce8ce --- /dev/null +++ b/src/api/user.ts @@ -0,0 +1,61 @@ +import { request } from '@/utils/http' + +export interface listType { + name: string + age: number + sex: number + nation: string + mobile: string + position: string + work_unit: string +} + +export interface dateListtype extends listType { + id: number +} + +export function infoForOpenid(data: { openid: string; mobile: string ; meetId: string }) { + return request.http({ + url: '/api/member_mobile_get', + method: 'GET', + data + }) +} + +// 手机号获取用户信息 +export function getMember_mobile(data: any) { + return request.http({ + url: '/api/member_mobile', + method: 'GET', + data + }) +} + +export function list(data: { name: string, meetId: string }) { + return request.http({ + url: '/api/member_name', + method: 'GET', + data + }) +} + +export function update(data: { [n: string]: string }, openid: string) { + return request.http({ + url: '/api/member_update', + data: Object.assign(data, { openid }) + }) +} + +export function bind(data: { id: number; openid: string }) { + return request.http({ + url: '/api/name_sub', + data + }) +} + +export function add(data: listType) { + return request.http({ + url: '/api/member_add', + data + }) +} diff --git a/src/api/votingElection.ts b/src/api/votingElection.ts new file mode 100644 index 0000000..9fb86e6 --- /dev/null +++ b/src/api/votingElection.ts @@ -0,0 +1,44 @@ +import { request } from '@/utils/http' + +// 获取投票选举(正在进行) +export function getVoteprogress(id: string) { + return request.http({ + url: '/api/vote_progress?meetId='+ id, + method: 'GET' + }) +} + +//用户投票 +export function voteMember(data: any) { + return request.http({ + url: '/api/vote_member', + data + }) +} + +// 获取我的选举 +export function getMyvote(data: any) { + return request.http({ + url: '/api/my_vote', + method: 'GET', + data + }) +} + +// 手机号获取用户信息 +export function getMember_mobile(data: any) { + return request.http({ + url: '/api/member_mobile', + method: 'GET', + data + }) +} + +// 判断用户是否签到 +export function getIs_sign(data: any) { + return request.http({ + url: '/api/is_sign', + method: 'GET', + data + }) +} diff --git a/src/config/index.ts b/src/config/index.ts new file mode 100644 index 0000000..3b11541 --- /dev/null +++ b/src/config/index.ts @@ -0,0 +1,13 @@ +export const Prefix = 'Election_' + +export const getPrefixName = (name: string) => { + return Prefix + name +} + +export function getAuthorization() { + return uni.getStorageSync(getPrefixName('user')) +} + +export function removeAuthorization() { + return uni.removeStorageSync(getPrefixName('user')) +} diff --git a/src/main.ts b/src/main.ts new file mode 100644 index 0000000..8d202a8 --- /dev/null +++ b/src/main.ts @@ -0,0 +1,16 @@ +import { createSSRApp } from 'vue' +import App from './App.vue' + +import uviewPlus from 'uview-plus' +import fengUniappExploit from 'feng-uniapp-exploit' + +import store from './store' + +export function createApp() { + const app = createSSRApp(App) + app.use(uviewPlus) + app.use(fengUniappExploit) + app.use(store) + + return { app } +} diff --git a/src/manifest.json b/src/manifest.json new file mode 100644 index 0000000..39cca9f --- /dev/null +++ b/src/manifest.json @@ -0,0 +1,131 @@ +{ + "name" : "惠企通", + "appid" : "__UNI__4CC99EE", + "description" : "v3+ts+uniapp模版", + "versionName" : "1.0.68", + "versionCode" : 168, + "transformPx" : false, + /* 5+App特有相关 */ + "app-plus" : { + "usingComponents" : true, + "nvueStyleCompiler" : "uni-app", + "compilerVersion" : 3, + "splashscreen" : { + "alwaysShowBeforeRender" : true, + "waiting" : true, + "autoclose" : true, + "delay" : 0 + }, + "compatible" : { + "ignoreVersion" : true + }, + /* 模块配置 */ + "modules" : { + "Barcode" : {}, + "Camera" : {}, + "VideoPlayer" : {}, + "Share" : {}, + "Geolocation" : {}, + "Maps" : {} + }, + /* 应用发布信息 */ + "distribute" : { + /* android打包配置 */ + "android" : { + "permissions" : [ + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "" + ], + "minSdkVersion" : 21 + }, + /* ios打包配置 */ + "ios" : { + "dSYMs" : false + }, + /* SDK配置 */ + "sdkConfigs" : { + "ad" : {}, + "share" : { + "weixin" : { + "appid" : "wx5d1a07b75bd48225", + "UniversalLinks" : "" + } + }, + "geolocation" : { + "amap" : { + "name" : "amap_18648278829CcsBXVUm1", + "__platform__" : [ "ios", "android" ], + "appkey_ios" : "37180416cb95db05dc9639e616655a7a", + "appkey_android" : "37180416cb95db05dc9639e616655a7a" + } + }, + "maps" : { + "amap" : { + "name" : "amap_18648278829CcsBXVUm1", + "appkey_ios" : "37180416cb95db05dc9639e616655a7a", + "appkey_android" : "37180416cb95db05dc9639e616655a7a" + } + } + }, + "icons" : { + "android" : { + "hdpi" : "src/static/logo.png", + "xhdpi" : "src/static/logo.png", + "xxhdpi" : "src/static/logo.png", + "xxxhdpi" : "src/static/logo.png" + } + }, + "splashscreen" : { + "iosStyle" : "common", + "androidStyle" : "default", + "android" : { + "hdpi" : "", + "xhdpi" : "", + "xxhdpi" : "" + }, + "ios" : { + "storyboard" : "C:/Users/Lenovo/Desktop/CustomStoryboard.zip" + } + } + } + }, + /* 快应用特有相关 */ + "quickapp" : {}, + /* 小程序特有相关 */ + "mp-weixin" : { + "appid" : "wx4f9dae5cc37dd9f4", + "setting" : { + "urlCheck" : false, + "es6" : true, + "postcss" : false, + "minified" : true + }, + "usingComponents" : true + }, + "mp-alipay" : { + "usingComponents" : true + }, + "mp-baidu" : { + "usingComponents" : true + }, + "mp-toutiao" : { + "usingComponents" : true + }, + "uniStatistics" : { + "enable" : false + }, + "vueVersion" : "3" +} diff --git a/src/pages.json b/src/pages.json new file mode 100644 index 0000000..d6905dc --- /dev/null +++ b/src/pages.json @@ -0,0 +1,85 @@ +{ + "easycom": { + "autoscan": true, + "custom": { + "^ex-(.*)": "feng-uniapp-exploit/components/ex-$1/ex-$1.vue", + "^u-(.*)": "uview-plus/components/u-$1/u-$1.vue" + } + }, + "pages": [ + { + "path": "pages/index/index", + "style": { + "navigationBarTitleText": "首页", + "enablePullDownRefresh": true + } + }, + { + "path": "pages/memberCenter/index", + "style": { + "navigationBarTitleText": "会员中心", + "enablePullDownRefresh": true + } + }, + { + "path": "pages/learningCenter/index", + "style": { + "navigationBarTitleText": "学习中心", + "enablePullDownRefresh": true + } + }, + { + "name": "user", + "path": "pages/mine/index", + "style": { + "navigationBarTitleText": "个人中心", + "enablePullDownRefresh": true + } + }, + { + "path": "pages/login/login", + "style": { + "navigationBarTitleText": "登录", + "enablePullDownRefresh": false, + "navigationStyle": "custom" + } + } + ], + "globalStyle": { + "navigationBarTextStyle": "white", + "navigationBarBackgroundColor": "#F1F3F9", + "backgroundColor": "#F8F8F8" + }, + "tabBar": { + "color": "#9CA3AF", + "selectedColor": "#2563EB", + "borderStyle": "white", + "backgroundColor": "#FFFFFF", + "list": [ + { + "pagePath": "pages/index/index", + "iconPath": "static/tabbar/index.png", + "selectedIconPath": "static/tabbar/index_select.png", + "text": "首页" + }, + { + "pagePath": "pages/memberCenter/index", + "iconPath": "static/tabbar/hyzx.png", + "selectedIconPath": "static/tabbar/hyzx_select.png", + "text": "会员中心" + }, + { + "pagePath": "pages/learningCenter/index", + "iconPath": "static/tabbar/xxzx.png", + "selectedIconPath": "static/tabbar/xxzx_select.png", + "text": "学习中心" + }, + { + "pagePath": "pages/mine/index", + "iconPath": "static/tabbar/grzx.png", + "selectedIconPath": "static/tabbar/grzx_select.png", + "text": "个人中心" + } + ] + } +} \ No newline at end of file diff --git a/src/pages/index/index.vue b/src/pages/index/index.vue new file mode 100644 index 0000000..49dda52 --- /dev/null +++ b/src/pages/index/index.vue @@ -0,0 +1,283 @@ + + + + + diff --git a/src/pages/learningCenter/index.vue b/src/pages/learningCenter/index.vue new file mode 100644 index 0000000..90d1b5f --- /dev/null +++ b/src/pages/learningCenter/index.vue @@ -0,0 +1,27 @@ + + + + + diff --git a/src/pages/login/login.vue b/src/pages/login/login.vue new file mode 100644 index 0000000..36861da --- /dev/null +++ b/src/pages/login/login.vue @@ -0,0 +1,111 @@ + + + + \ No newline at end of file diff --git a/src/pages/memberCenter/index.vue b/src/pages/memberCenter/index.vue new file mode 100644 index 0000000..0539b63 --- /dev/null +++ b/src/pages/memberCenter/index.vue @@ -0,0 +1,203 @@ + + + + + diff --git a/src/pages/mine/index.vue b/src/pages/mine/index.vue new file mode 100644 index 0000000..6228e2f --- /dev/null +++ b/src/pages/mine/index.vue @@ -0,0 +1,331 @@ + + + + diff --git a/src/permission.ts b/src/permission.ts new file mode 100644 index 0000000..ec90164 --- /dev/null +++ b/src/permission.ts @@ -0,0 +1,51 @@ +// import { getAuthorization } from '@/config' + +// 白名单 +// const whiteList = ['/agentpages/index/index', '/agentpages/mine/index'] + +export default async function () { + const list = ['navigateTo', 'redirectTo', 'reLaunch', 'switchTab'] + + // 用遍历的方式分别为,uni.navigateTo,uni.redirectTo,uni.reLaunch,uni.switchTab这4个路由方法添加拦截器 + list.forEach((item) => { + uni.addInterceptor(item, { + invoke(e) { + console.log('e', e) + + // 获取要跳转的页面路径(url去掉"?"和"?"后的参数) + // const url = e.url.split('?')[0] + // const type = url.split('/')[1] || '' + + // let data + // if (getAuthorization()) { + // data = JSON.parse(getAuthorization()) + // } else { + // data = { userInfo: { is_real: 0 } } + // } + + // // 判断当前窗口是白名单,如果是则不重定向路由 + // if (type === 'agentpages' && !whiteList.includes(url) && !data.userInfo.is_real) { + // uni.showModal({ + // title: '提示', + // content: '请先实名认证', + // showCancel: true, + // success({ confirm }) { + // if (confirm) { + // uni.navigateTo({ + // url: '/pages/mine/authentication' + // }) + // } + // } + // }) + // return false + // } + + return e + }, + fail(err) { + // 失败回调拦截 + console.log(err) + } + }) + }) +} diff --git a/src/share.vue b/src/share.vue new file mode 100644 index 0000000..49c7feb --- /dev/null +++ b/src/share.vue @@ -0,0 +1,257 @@ + + + + + diff --git a/src/static/img/Group.png b/src/static/img/Group.png new file mode 100644 index 0000000000000000000000000000000000000000..848be8ca12b28e4bad1f8504daf33260d62a84d8 GIT binary patch literal 4474 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 M07*qoM6N<$fqkutxH*M5Aqe6= zd}#kM2x0^O$_A}w2YvJu}Y~Jnr`Vu1L0&+$s3FuN2%@4se7HlBgg0=Pb!@v zmrLhzFsfN{Yqt#v0VN&p_Xjt zf!#W(CC}^BsT-53zt%{NPPNs_zo~q|J$q`CN&B*8vHO|gSt*a_wZeom_9W68vKWMC z^@3-na_F=ofx&KW)MN4K8bT}-ws {pmiT{(VIg*-8B8e>xW}$2IoqyNy47BLBWO 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 bSV{Q;2)i+^&G-5U00000NkvXXu0mjfk}}K# literal 0 HcmV?d00001 diff --git a/src/store/index.ts b/src/store/index.ts new file mode 100644 index 0000000..86da23d --- /dev/null +++ b/src/store/index.ts @@ -0,0 +1,10 @@ +import { createPinia } from 'pinia' +import { createUnistorage } from 'pinia-plugin-unistorage' + +const store = createPinia() +// 使用该插件 +// 关键代码 👇 +store.use(createUnistorage()) + +//导出 +export default store diff --git a/src/store/user.ts b/src/store/user.ts new file mode 100644 index 0000000..cafcc51 --- /dev/null +++ b/src/store/user.ts @@ -0,0 +1,115 @@ +// 定义组合式API仓库 +import { defineStore } from 'pinia' +import { getPrefixName } from '@/config' +import { getOpenid } from '@/api/login' +import { infoForOpenid, bind as bindApi } from '@/api/user' + +interface userInfoStoreInt { + [n: string]: any +} +export default defineStore( + getPrefixName('user'), + () => { + const openId = ref('') + const mobile = ref('') + const meetId = ref('') + const showtoast = ref(false) + const userInfo = ref({}) + + function getopenid(params: { code: string }) { + return new Promise((resolve, reject) => { + getOpenid(params) + .then((res) => { + const { data } = res as { data: string } + + openId.value = data + + resolve({ code: 1, message: '登录成功~' }) + }) + .catch((err) => { + reject(err) + }) + }) + } + + function getUserInfo() { + return new Promise( (resolve, reject) => { + infoForOpenid({ openid: openId.value, mobile: mobile.value, meetId: meetId.value}) + .then((res) => { + const { data } = res as { data: userInfoStoreInt } + userInfo.value = data || {} + resolve({ code: 1, data, message: 'SUCCESS' }) + }) + .catch((err) => { + reject(err) + }) + + }) + } + + function bindUser(id: number) { + return new Promise((resolve, reject) => { + bindApi({ id, openid: openId.value }) + .then(() => { + resolve({ code: 1, message: 'SUCCESS' }) + }) + .catch((err) => { + reject(err) + }) + }) + } + + function logOut() { + userInfo.value = {} + uni.clearStorageSync() + + uni.showToast({ + icon: 'none', + title: '退出成功', + mask: true, + success() { + setTimeout(() => uni.reLaunch({ url: 'pages/login/login' }), 1000) + } + }) + } + + return { + openId, + mobile, + meetId, + showtoast, + userInfo, + getopenid, + bindUser, + getUserInfo, + logOut + } + }, + { + unistorage: { + serializer: { + // 序列化,默认为 JSON.stringify + serialize(v) { + return JSON.stringify(v) + }, + // 反序列化,默认为 JSON.parse + deserialize(v) { + return JSON.parse(v) + } + } + } // 开启后对 state 的数据读写都将持久化 + // unistorage: { + // key: 'userInfo', // 缓存的键,默认为该 store 的 id,这里是 main, + // paths: ['userInfo.token'], // 需要缓存的路径,这里设置 foo 和 nested 下的 data 会被缓存 + // // 初始化恢复前触发 + // beforeRestore(ctx: any) { + // console.log(ctx) + // }, + // // 初始化恢复后触发 + // afterRestore(ctx: any) { + // console.log('ctx', ctx) + // }, + + // }, + } +) diff --git a/src/types/auto-imports.d.ts b/src/types/auto-imports.d.ts new file mode 100644 index 0000000..898474f --- /dev/null +++ b/src/types/auto-imports.d.ts @@ -0,0 +1,180 @@ +/* eslint-disable */ +/* prettier-ignore */ +// @ts-nocheck +// noinspection JSUnusedGlobalSymbols +// Generated by unplugin-auto-import +export {} +declare global { + const EffectScope: typeof import('vue')['EffectScope'] + const computed: typeof import('vue')['computed'] + const createApp: typeof import('vue')['createApp'] + const customRef: typeof import('vue')['customRef'] + const defineAsyncComponent: typeof import('vue')['defineAsyncComponent'] + const defineComponent: typeof import('vue')['defineComponent'] + const effectScope: typeof import('vue')['effectScope'] + const getCurrentInstance: typeof import('vue')['getCurrentInstance'] + const getCurrentScope: typeof import('vue')['getCurrentScope'] + const h: typeof import('vue')['h'] + const inject: typeof import('vue')['inject'] + const isProxy: typeof import('vue')['isProxy'] + const isReactive: typeof import('vue')['isReactive'] + const isReadonly: typeof import('vue')['isReadonly'] + const isRef: typeof import('vue')['isRef'] + const markRaw: typeof import('vue')['markRaw'] + const nextTick: typeof import('vue')['nextTick'] + const onActivated: typeof import('vue')['onActivated'] + const onAddToFavorites: typeof import('@dcloudio/uni-app')['onAddToFavorites'] + const onBackPress: typeof import('@dcloudio/uni-app')['onBackPress'] + const onBeforeMount: typeof import('vue')['onBeforeMount'] + const onBeforeUnmount: typeof import('vue')['onBeforeUnmount'] + const onBeforeUpdate: typeof import('vue')['onBeforeUpdate'] + const onDeactivated: typeof import('vue')['onDeactivated'] + const onError: typeof import('@dcloudio/uni-app')['onError'] + const onErrorCaptured: typeof import('vue')['onErrorCaptured'] + const onHide: typeof import('@dcloudio/uni-app')['onHide'] + const onLaunch: typeof import('@dcloudio/uni-app')['onLaunch'] + const onLoad: typeof import('@dcloudio/uni-app')['onLoad'] + const onMounted: typeof import('vue')['onMounted'] + const onNavigationBarButtonTap: typeof import('@dcloudio/uni-app')['onNavigationBarButtonTap'] + const onNavigationBarSearchInputChanged: typeof import('@dcloudio/uni-app')['onNavigationBarSearchInputChanged'] + const onNavigationBarSearchInputClicked: typeof import('@dcloudio/uni-app')['onNavigationBarSearchInputClicked'] + const onNavigationBarSearchInputConfirmed: typeof import('@dcloudio/uni-app')['onNavigationBarSearchInputConfirmed'] + const onNavigationBarSearchInputFocusChanged: typeof import('@dcloudio/uni-app')['onNavigationBarSearchInputFocusChanged'] + const onPageNotFound: typeof import('@dcloudio/uni-app')['onPageNotFound'] + const onPageScroll: typeof import('@dcloudio/uni-app')['onPageScroll'] + const onPullDownRefresh: typeof import('@dcloudio/uni-app')['onPullDownRefresh'] + const onReachBottom: typeof import('@dcloudio/uni-app')['onReachBottom'] + const onReady: typeof import('@dcloudio/uni-app')['onReady'] + const onRenderTracked: typeof import('vue')['onRenderTracked'] + const onRenderTriggered: typeof import('vue')['onRenderTriggered'] + const onResize: typeof import('@dcloudio/uni-app')['onResize'] + const onScopeDispose: typeof import('vue')['onScopeDispose'] + const onServerPrefetch: typeof import('vue')['onServerPrefetch'] + const onShareAppMessage: typeof import('@dcloudio/uni-app')['onShareAppMessage'] + const onShareTimeline: typeof import('@dcloudio/uni-app')['onShareTimeline'] + const onShow: typeof import('@dcloudio/uni-app')['onShow'] + const onTabItemTap: typeof import('@dcloudio/uni-app')['onTabItemTap'] + const onThemeChange: typeof import('@dcloudio/uni-app')['onThemeChange'] + const onUnhandledRejection: typeof import('@dcloudio/uni-app')['onUnhandledRejection'] + const onUnload: typeof import('@dcloudio/uni-app')['onUnload'] + const onUnmounted: typeof import('vue')['onUnmounted'] + const onUpdated: typeof import('vue')['onUpdated'] + const onWatcherCleanup: typeof import('vue')['onWatcherCleanup'] + const provide: typeof import('vue')['provide'] + const reactive: typeof import('vue')['reactive'] + const readonly: typeof import('vue')['readonly'] + const ref: typeof import('vue')['ref'] + const resolveComponent: typeof import('vue')['resolveComponent'] + const shallowReactive: typeof import('vue')['shallowReactive'] + const shallowReadonly: typeof import('vue')['shallowReadonly'] + const shallowRef: typeof import('vue')['shallowRef'] + const toRaw: typeof import('vue')['toRaw'] + const toRef: typeof import('vue')['toRef'] + const toRefs: typeof import('vue')['toRefs'] + const toValue: typeof import('vue')['toValue'] + const triggerRef: typeof import('vue')['triggerRef'] + const unref: typeof import('vue')['unref'] + const useAttrs: typeof import('vue')['useAttrs'] + const useCssModule: typeof import('vue')['useCssModule'] + const useCssVars: typeof import('vue')['useCssVars'] + const useId: typeof import('vue')['useId'] + const useModel: typeof import('vue')['useModel'] + const useSlots: typeof import('vue')['useSlots'] + const useTemplateRef: typeof import('vue')['useTemplateRef'] + const watch: typeof import('vue')['watch'] + const watchEffect: typeof import('vue')['watchEffect'] + const watchPostEffect: typeof import('vue')['watchPostEffect'] + const watchSyncEffect: typeof import('vue')['watchSyncEffect'] +} +// for type re-export +declare global { + // @ts-ignore + export type { Component, ComponentPublicInstance, ComputedRef, DirectiveBinding, ExtractDefaultPropTypes, ExtractPropTypes, ExtractPublicPropTypes, InjectionKey, PropType, Ref, MaybeRef, MaybeRefOrGetter, VNode, WritableComputedRef } from 'vue' + import('vue') +} +// for vue template auto import +import { UnwrapRef } from 'vue' +declare module 'vue' { + interface ComponentCustomProperties { + readonly EffectScope: UnwrapRef + readonly computed: UnwrapRef + readonly createApp: UnwrapRef + readonly customRef: UnwrapRef + readonly defineAsyncComponent: UnwrapRef + readonly defineComponent: UnwrapRef + readonly effectScope: UnwrapRef + readonly getCurrentInstance: UnwrapRef + readonly getCurrentScope: UnwrapRef + readonly h: UnwrapRef + readonly inject: UnwrapRef + readonly isProxy: UnwrapRef + readonly isReactive: UnwrapRef + readonly isReadonly: UnwrapRef + readonly isRef: UnwrapRef + readonly markRaw: UnwrapRef + readonly nextTick: UnwrapRef + readonly onActivated: UnwrapRef + readonly onAddToFavorites: UnwrapRef + readonly onBackPress: UnwrapRef + readonly onBeforeMount: UnwrapRef + readonly onBeforeUnmount: UnwrapRef + readonly onBeforeUpdate: UnwrapRef + readonly onDeactivated: UnwrapRef + readonly onError: UnwrapRef + readonly onErrorCaptured: UnwrapRef + readonly onHide: UnwrapRef + readonly onLaunch: UnwrapRef + readonly onLoad: UnwrapRef + readonly onMounted: UnwrapRef + readonly onNavigationBarButtonTap: UnwrapRef + readonly onNavigationBarSearchInputChanged: UnwrapRef + readonly onNavigationBarSearchInputClicked: UnwrapRef + readonly onNavigationBarSearchInputConfirmed: UnwrapRef + readonly onNavigationBarSearchInputFocusChanged: UnwrapRef + readonly onPageNotFound: UnwrapRef + readonly onPageScroll: UnwrapRef + readonly onPullDownRefresh: UnwrapRef + readonly onReachBottom: UnwrapRef + readonly onReady: UnwrapRef + readonly onRenderTracked: UnwrapRef + readonly onRenderTriggered: UnwrapRef + readonly onResize: UnwrapRef + readonly onScopeDispose: UnwrapRef + readonly onServerPrefetch: UnwrapRef + readonly onShareAppMessage: UnwrapRef + readonly onShareTimeline: UnwrapRef + readonly onShow: UnwrapRef + readonly onTabItemTap: UnwrapRef + readonly onThemeChange: UnwrapRef + readonly onUnhandledRejection: UnwrapRef + readonly onUnload: UnwrapRef + readonly onUnmounted: UnwrapRef + readonly onUpdated: UnwrapRef + readonly onWatcherCleanup: UnwrapRef + readonly provide: UnwrapRef + readonly reactive: UnwrapRef + readonly readonly: UnwrapRef + readonly ref: UnwrapRef + readonly resolveComponent: UnwrapRef + readonly shallowReactive: UnwrapRef + readonly shallowReadonly: UnwrapRef + readonly shallowRef: UnwrapRef + readonly toRaw: UnwrapRef + readonly toRef: UnwrapRef + readonly toRefs: UnwrapRef + readonly toValue: UnwrapRef + readonly triggerRef: UnwrapRef + readonly unref: UnwrapRef + readonly useAttrs: UnwrapRef + readonly useCssModule: UnwrapRef + readonly useCssVars: UnwrapRef + readonly useId: UnwrapRef + readonly useModel: UnwrapRef + readonly useSlots: UnwrapRef + readonly useTemplateRef: UnwrapRef + readonly watch: UnwrapRef + readonly watchEffect: UnwrapRef + readonly watchPostEffect: UnwrapRef + readonly watchSyncEffect: UnwrapRef + } +} diff --git a/src/types/env.d.ts b/src/types/env.d.ts new file mode 100644 index 0000000..7583e5f --- /dev/null +++ b/src/types/env.d.ts @@ -0,0 +1,13 @@ +/// +/// +/// +/// + +declare module '*.vue' { + import { DefineComponent } from 'vue' + const component: DefineComponent<{}, {}, any> + export default component +} + +declare module 'uview-plus' +declare module 'feng-uniapp-exploit' diff --git a/src/types/global.d.ts b/src/types/global.d.ts new file mode 100644 index 0000000..e85aac8 --- /dev/null +++ b/src/types/global.d.ts @@ -0,0 +1,29 @@ +/* eslint-disable prettier/prettier */ + +declare global { + type useType = 'client' | 'agent' + + /** + * 公共的路径 + * @author shenname + * @license MIT + * @param { string } fileName 文件名称 + * @param { string } filePath 文件路径 + * @example + * fileName: images.png + * filePath: images + */ + interface imgUrlInt { + fileName: string + filePath?: string + } + + interface pageType { + page: number + limit: number + total?: number + } + +} + +export { } diff --git a/src/uni.scss b/src/uni.scss new file mode 100644 index 0000000..0268b9f --- /dev/null +++ b/src/uni.scss @@ -0,0 +1,118 @@ +@import 'uview-plus/theme.scss'; + +#app { + box-sizing: border-box; + background-color: #f5f5f5 +} + +/* 颜色变量 */ + +/*============================= 文字尺寸 =============================*/ +$font-size-20: 20rpx; +$font-size-22: 22rpx; +$font-size-24: 24rpx; +$font-size-26: 26rpx; +$font-size-28: 28rpx; +$font-size-30: 30rpx; +$font-size-32: 32rpx; +$font-size-34: 34rpx; +$font-size-36: 36rpx; +$font-size-40: 40rpx; + +image { + width: 100%; + height: 100%; + box-sizing: border-box; +} + +view { + box-sizing: border-box; +} + +/*============================= 弹性盒子 =============================*/ +%flex-base { + display: flex; + flex-wrap: nowrap; +} + +$flex-way: ( + start, + flex-start), + (center, center), + (end, flex-end), + (between, space-between), + (around, space-around), + (evenly, space-evenly +); + +@mixin flex-algin($align) { + @each $way, $justify in $flex-way { + &-#{$way} { + @if $way !=$align { + @if $way !=$align { + @extend %flex-base; + align-items: $align; + justify-content: $justify; + } + } + } + } +} + +.flex { + @extend %flex-base; + align-items: center; + justify-content: center; + + @each $way, $justify in (start, flex-start), (center, center), (end, flex-end) { + &-#{$way} { + @include flex-algin($justify); + } + } +} + +[class*="flex-"], +[class^="flex"] { + &.nowrap { + flex-wrap: nowrap; + } + + &.stretch { + align-items: stretch; + } + + @each $direction, $name in (row, direction), (column, direction), (wrap, wrap) { + &.#{$direction} { + flex-#{$name}: $direction; + + &-reverse { + flex-#{$name}: '#{$direction}-reverse'; + } + } + } +} + +@for $i from 1 through 4 { + .flex#{$i} { + flex: $i; + } +} + +/*============================= 文字溢出 =============================*/ +.text-ellipsis { + overflow: hidden; + white-space: nowrap; + text-overflow: ellipsis; + + @for $i from 2 through 4 { + &-#{$i} { + overflow: hidden; + white-space: normal; + text-overflow: ellipsis; + display: -webkit-box; + -webkit-box-orient: vertical; + line-clamp: 1; + -webkit-line-clamp: $i; + } + } +} \ No newline at end of file diff --git a/src/utils/common.ts b/src/utils/common.ts new file mode 100644 index 0000000..a0e0a09 --- /dev/null +++ b/src/utils/common.ts @@ -0,0 +1,58 @@ +/** + * 获取用户头像地址 + * @author shenname + * @license MIT + * @param { string } url 头像地址 + * @returns { string } + */ +export const getHeaderImage = (url?: string) => { + if (url) { + return import.meta.env.VITE_APP_BASE_URL + url + } else { + return 'http://cdn-pos.lingji.vip/static/system/headimg.png' + } +} + +/** + * 获取图片地址 + * @author shenname + * @license MIT + * @param { string } url 图片地址 + * @returns { string } + */ +export const getImageUrl = (url?: string) => { + return import.meta.env.VITE_APP_BASE_URL + url +} + +/** + * 获取文件相对路径、URL + * @author shenname + * @license MIT + * @param { string } fileName 文件名称 | 相对路径 + * @param { string } [filePath=images] filePath 文件在 /static 下的路径 获取URL时不传 + * @example + * imgUrl('a.png') + * imgUrl('a.png', '/public/') + * imgUrl('/upload/images/img.png') + * @returns {string} + */ +export const fileUrl = (fileName: string, filePath: string = 'images'): string => { + if (/[ `!@#$%^&*()_+\-=\[\]{};':"\\|,<>\/?~]/.test(fileName)) { + return import.meta.env.VITE_APP_BASE_URL + fileName + } else { + return `http://cdn-pos.lingji.vip/static/${filePath}/${fileName}` + } +} + +/** + * 判断对象是否为空 + * @author shenname + * @license MIT + * @param any + * @returns {boolean} + */ +export const isEmptyObject = (obj: any): boolean => { + if (obj == null) return true + if (typeof obj !== 'object' || Array.isArray(obj)) return true + return Reflect.ownKeys(obj).length === 0 +} diff --git a/src/utils/http.ts b/src/utils/http.ts new file mode 100644 index 0000000..20a5692 --- /dev/null +++ b/src/utils/http.ts @@ -0,0 +1,61 @@ +interface ResponseOptions { + url: string + headers?: { [key: string]: string } + method?: 'OPTIONS' | 'GET' | 'HEAD' | 'POST' | 'PUT' | 'DELETE' | 'TRACE' | 'CONNECT' + data?: { [key: string]: any } + isSinglePost?: boolean +} + +export const request = { + isLock: false, + http({ url = '', headers = {}, data = {}, method = 'POST', isSinglePost = false }: ResponseOptions) { + const _this = this + + return new Promise(function (resolve, reject) { + if (isSinglePost && _this.isLock) { + reject({ message: '加载中' }) + } + _this.isLock = true + + // #ifdef APP-PLUS + url = import.meta.env.VITE_APP_BASE_URL + url + // #endif + // #ifdef H5 + url = import.meta.env.VITE_APP_BASE_PRE + url + // #endif + + // #ifdef MP-WEIXIN + url = import.meta.env.VITE_APP_BASE_URL + url + // #endif + + const header = Object.assign({ 'content-type': 'application/json', Authorization: '' }, headers) + + uni.request({ + url, + header, + method, + data, + success(res) { + const data = res.data as { code: number; data: object; msg: string } + + switch (data.code) { + case 1: + resolve(res.data) + break + default: + uni.showToast({ title: data.msg, icon: 'none', mask: true }) + reject(res.data) + break + } + }, + fail(err) { + uni.showToast({ title: '网络错误', icon: 'none' }) + reject(err) + }, + complete() { + _this.isLock = false + } + }) + }) + } +} diff --git a/src/utils/rules.ts b/src/utils/rules.ts new file mode 100644 index 0000000..f63dd6f --- /dev/null +++ b/src/utils/rules.ts @@ -0,0 +1,6 @@ +// 验证密码 +export function checkPassword(password: string) { + if (password.trim() === '') return false + + return /^(?=.*\d)(?=.*[a-zA-Z])(?=.*[^a-zA-Z0-9]).{8,16}$/.test(password) +} diff --git a/tsconfig.json b/tsconfig.json new file mode 100644 index 0000000..41eaa5b --- /dev/null +++ b/tsconfig.json @@ -0,0 +1,29 @@ +{ + "extends": "@vue/tsconfig/tsconfig.json", + "compilerOptions": { + "sourceMap": true, + "baseUrl": ".", + "paths": { + "@/*": [ + "./src/*" + ] + }, + "lib": [ + "esnext", + "dom" + ], + "types": [ + "vite/client", + "@dcloudio/types", + ], + "typeRoots": [ + "src/**/*.d.ts" + ] + }, + "include": [ + "src/**/*.ts", + "src/**/*.tsx", + "src/**/*.vue", + "src/types/*.d.ts" + ] +} \ No newline at end of file diff --git a/vite.config.ts b/vite.config.ts new file mode 100644 index 0000000..66a94eb --- /dev/null +++ b/vite.config.ts @@ -0,0 +1,45 @@ +import { defineConfig, loadEnv } from 'vite' +import uni from '@dcloudio/vite-plugin-uni' +import AutoImport from 'unplugin-auto-import/vite' + +import path from 'path' +const pathSrc = path.resolve(__dirname, 'src') + +// https://vitejs.dev/config/ +export default defineConfig(({ mode }) => { + const { VITE_APP_BASE_URL, VITE_APP_BASE_PRE } = loadEnv(mode, process.cwd()) + + return { + transpileDependencies: ['uview-plus'], + resolve: { + // 别名 + alias: { + '@': path.join(__dirname, './src') + } + }, + plugins: [ + uni(), + AutoImport({ + // imports: ['vue', 'uni-app', { 'feng-uniapp-exploit': ['default'] }, { 'src/utils': ['default'] }], + imports: ['vue', 'uni-app'], + vueTemplate: true, + dts: path.resolve(pathSrc, 'types', 'auto-imports.d.ts') + }) + ], + // build: { + // rollupOptions: { + // external: ['feng-exploit-plus'] + // } + // }, + server: { + proxy: { + [VITE_APP_BASE_PRE]: { + target: VITE_APP_BASE_URL, + ws: true, + changeOrigin: true, + rewrite: (path) => path.replace(new RegExp('^' + VITE_APP_BASE_PRE), '') + } + } + } + } +})