diff --git a/.env.development b/.env.development new file mode 100644 index 0000000..9bcb052 --- /dev/null +++ b/.env.development @@ -0,0 +1 @@ +VITE_API_URL=https://test.tall.wiki diff --git a/.env.production b/.env.production new file mode 100644 index 0000000..7fe4fa9 --- /dev/null +++ b/.env.production @@ -0,0 +1 @@ +VITE_API_URL=http://www.tall.wiki diff --git a/.env.test b/.env.test new file mode 100644 index 0000000..9bcb052 --- /dev/null +++ b/.env.test @@ -0,0 +1 @@ +VITE_API_URL=https://test.tall.wiki diff --git a/.eslintrc.js b/.eslintrc.js index 0daa768..f069c1b 100644 --- a/.eslintrc.js +++ b/.eslintrc.js @@ -17,5 +17,47 @@ module.exports = { '@typescript-eslint', ], rules: { + 'import/no-unresolved': 0, + 'import/extensions': 0, + 'import/no-extraneous-dependencies': 0, + 'no-plusplus': 0, + 'no-use-before-define': [ + 'error', + { + functions: false, + classes: true, + variables: true, + }, + ], + 'consistent-return': 0, + 'vue/html-self-closing': 'off', + 'no-unused-expressions': 'off', + 'vue/no-mutating-props': 'off', + 'vue/no-multiple-template-root': 'off', + 'no-console': process.env.NODE_ENV === 'production' ? 'error' : 'off', + 'no-debugger': process.env.NODE_ENV === 'production' ? 'error' : 'off', + 'no-param-reassign': 'off', + 'max-len': [ + 'error', + { + code: 140, + tabWidth: 2, + }, + ], + 'object-curly-newline': ['error', { multiline: true }], + 'arrow-parens': ['error', 'as-needed'], + 'linebreak-style': 'off', + 'vue/attributes-order': 'off', + 'vue/singleline-html-element-content-newline': 'off', + 'vue/max-attributes-per-line': 'off', + 'vue/multiline-html-element-content-newline': 'off', + 'vue/html-indent': 'off', + 'vue/html-closing-bracket-newline': [ + 'error', + { + singleline: 'never', + multiline: 'always', + }, + ], }, }; diff --git a/apis/axios.js b/apis/axios.js new file mode 100644 index 0000000..bbdd282 --- /dev/null +++ b/apis/axios.js @@ -0,0 +1,58 @@ +import Axios from 'axios'; +import { Toast } from 'vant'; +import store from 'store'; + +const app = createApp(); +app.use(Toast); + +const baseUrl = '/gateway'; + +const instance = Axios.create({ + baseUrl, + timeout: 20000, +}); + +// request +instance.interceptors.request.use( + config => { + const token = store.getters['user/token'] || sessionStorage.getItem('token'); + if (token) { + config.headers.Authorization = `Bearer ${token}`; + } + // config.headers.deviceId = store.state.systemInfo.deviceId; + config.headers.deviceId = '1'; + config.headers.appType = 0; + return config; + }, + error => { + return Promise.reject(error); + }, +); + +// response +instance.interceptors.response.use( + response => { + if (response.status !== 200 || !response.data) { + return Promise.reject(response.statusText); + } + const { code, data, msg } = response.data; + if (code === 200) { + return data; + } + return Promise.reject(msg); + }, + error => { + if (error.response && error.response.data) { + const code = error.response.status; + const msg = error.response.data.message; + // ElMessage.error(`Code: ${code}, Message: ${msg}`); + Toast.fail(`Code: ${code}, Message: ${msg}`); + console.error(`[Axios Error]`, error.response); + } else { + // ElMessage.error(`${error}`); + } + return Promise.reject(error); + }, +); + +export default instance; diff --git a/apis/finance.js b/apis/finance.js new file mode 100644 index 0000000..da07926 --- /dev/null +++ b/apis/finance.js @@ -0,0 +1,14 @@ +// noinspection SpellCheckingInspection + +import http from 'apis/axios'; + +const apiUrl = import.meta.env.VITE_API_URL; +console.log('apiUrl: ', apiUrl); +const ptccsens = `${apiUrl}/ptccsens/v1.0`; +const finance = `${ptccsens}/finance`; + +// 查看项目下的所有任务对应的财务信息 +export const financeInfo = params => http.post(`${finance}/getByTask`, params); + +// 修改任务或项目的预算和奖金信息 +// export const edit = params => http.post(`${finance}/info`, params); diff --git a/apis/index.js b/apis/index.js new file mode 100644 index 0000000..d0432be --- /dev/null +++ b/apis/index.js @@ -0,0 +1,12 @@ +// noinspection SpellCheckingInspection + +import http from 'apis/axios'; + +const apiUrl = 'https://test.tall.wiki'; +const users = `${apiUrl}/gateway/ptostall/users`; + +// 根据userId 获取token +export const getToken = userId => http.get(`${users}/userId`, { params: { userId } }); + +// 登录 +export const signIn = params => http.post(`${users}/signin`, params); diff --git a/components/FinanceExamine.vue b/components/FinanceExamine.vue new file mode 100644 index 0000000..e91fe62 --- /dev/null +++ b/components/FinanceExamine.vue @@ -0,0 +1,129 @@ + + + + + diff --git a/components/FinanceManage.vue b/components/FinanceManage.vue index b70a603..8fb12f7 100644 --- a/components/FinanceManage.vue +++ b/components/FinanceManage.vue @@ -1,75 +1,100 @@ diff --git a/nuxt.config.ts b/nuxt.config.ts index 349e0c2..a86936d 100644 --- a/nuxt.config.ts +++ b/nuxt.config.ts @@ -10,6 +10,8 @@ export default defineNuxtConfig({ components: resolve(__dirname, './components'), pages: resolve(__dirname, './pages'), hooks: resolve(__dirname, './hooks'), + apis: resolve(__dirname, './apis'), + store: resolve(__dirname, './store'), }, meta: { meta: [ @@ -22,9 +24,9 @@ export default defineNuxtConfig({ }, { rel:"stylesheet", - href:"https://unpkg.com/tailwindcss@^2/dist/tailwind.min.css", - } + href:"https://cdn.bootcdn.net/ajax/libs/tailwindcss/2.2.19/tailwind.min.css", + }, ], - script: [{ src: '' }], + script: [{ src: 'https://cdn.bootcdn.net/ajax/libs/dayjs/1.10.7/dayjs.min.js' }], }, }); diff --git a/package-lock.json b/package-lock.json index 356cf84..c409a7f 100644 --- a/package-lock.json +++ b/package-lock.json @@ -21,8 +21,7 @@ "less": "^4.1.2", "nuxt3": "latest", "postcss": "^8.4.5", - "prettier": "^2.5.1", - "tailwindcss": "^3.0.15" + "prettier": "^2.5.1" } }, "node_modules/@babel/code-frame": { @@ -2149,38 +2148,6 @@ "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" } }, - "node_modules/acorn-node": { - "version": "1.8.2", - "resolved": "https://registry.npmjs.org/acorn-node/-/acorn-node-1.8.2.tgz", - "integrity": "sha512-8mt+fslDufLYntIoPAaIMUe/lrbrehIiwmR3t2k9LljIzoigEPF27eLk2hy8zSGzmR/ogr7zbRKINMo1u0yh5A==", - "dev": true, - "dependencies": { - "acorn": "^7.0.0", - "acorn-walk": "^7.0.0", - "xtend": "^4.0.2" - } - }, - "node_modules/acorn-node/node_modules/acorn": { - "version": "7.4.1", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz", - "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==", - "dev": true, - "bin": { - "acorn": "bin/acorn" - }, - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/acorn-node/node_modules/acorn-walk": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-7.2.0.tgz", - "integrity": "sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA==", - "dev": true, - "engines": { - "node": ">=0.4.0" - } - }, "node_modules/acorn-walk": { "version": "8.2.0", "resolved": "https://registry.nlark.com/acorn-walk/download/acorn-walk-8.2.0.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.nlark.com%2Facorn-walk%2Fdownload%2Facorn-walk-8.2.0.tgz", @@ -2404,12 +2371,6 @@ "node": ">=10" } }, - "node_modules/arg": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/arg/-/arg-5.0.1.tgz", - "integrity": "sha512-e0hDa9H2Z9AwFkk2qDlwhoMYE4eToKarchkQHovNdLTCYMHZHeRjI71crOh+dio4K6u1IcwubQqo79Ga4CyAQA==", - "dev": true - }, "node_modules/argparse": { "version": "2.0.1", "resolved": "https://registry.nlark.com/argparse/download/argparse-2.0.1.tgz", @@ -2732,15 +2693,6 @@ "node": ">=10" } }, - "node_modules/camelcase-css": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/camelcase-css/-/camelcase-css-2.0.1.tgz", - "integrity": "sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==", - "dev": true, - "engines": { - "node": ">= 6" - } - }, "node_modules/caniuse-api": { "version": "3.0.0", "resolved": "https://registry.npmmirror.com/caniuse-api/download/caniuse-api-3.0.0.tgz", @@ -3480,12 +3432,6 @@ "node": ">= 0.4" } }, - "node_modules/defined": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/defined/-/defined-1.0.0.tgz", - "integrity": "sha1-yY2bzvdWdBiOEQlpFRGZ45sfppM=", - "dev": true - }, "node_modules/defu": { "version": "5.0.1", "resolved": "https://registry.npmmirror.com/defu/download/defu-5.0.1.tgz", @@ -3540,29 +3486,6 @@ "node": ">=0.10" } }, - "node_modules/detective": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/detective/-/detective-5.2.0.tgz", - "integrity": "sha512-6SsIx+nUUbuK0EthKjv0zrdnajCCXVYGmbYYiYjFVpzcjwEs/JMDZ8tPRG29J/HhN56t3GJp2cGSWDRjjot8Pg==", - "dev": true, - "dependencies": { - "acorn-node": "^1.6.1", - "defined": "^1.0.0", - "minimist": "^1.1.1" - }, - "bin": { - "detective": "bin/detective.js" - }, - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/didyoumean": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/didyoumean/-/didyoumean-1.2.2.tgz", - "integrity": "sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==", - "dev": true - }, "node_modules/dir-glob": { "version": "3.0.1", "resolved": "https://registry.npm.taobao.org/dir-glob/download/dir-glob-3.0.1.tgz", @@ -3575,12 +3498,6 @@ "node": ">=8" } }, - "node_modules/dlv": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/dlv/-/dlv-1.1.3.tgz", - "integrity": "sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==", - "dev": true - }, "node_modules/doctrine": { "version": "3.0.0", "resolved": "https://registry.npm.taobao.org/doctrine/download/doctrine-3.0.0.tgz", @@ -7183,15 +7100,6 @@ "node": ">=0.10.0" } }, - "node_modules/object-hash": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/object-hash/-/object-hash-2.2.0.tgz", - "integrity": "sha512-gScRMn0bS5fH+IuwyIFgnh9zBdo4DV+6GhygmWM9HyNJSgS0hScp1f5vjtm7oIIOiT9trXrShAkLFSc2IqKNgw==", - "dev": true, - "engines": { - "node": ">= 6" - } - }, "node_modules/object-inspect": { "version": "1.12.0", "resolved": "https://registry.npmmirror.com/object-inspect/download/object-inspect-1.12.0.tgz", @@ -7794,50 +7702,6 @@ "node": ">=6" } }, - "node_modules/postcss-js": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/postcss-js/-/postcss-js-4.0.0.tgz", - "integrity": "sha512-77QESFBwgX4irogGVPgQ5s07vLvFqWr228qZY+w6lW599cRlK/HmnlivnnVUxkjHnCu4J16PDMHcH+e+2HbvTQ==", - "dev": true, - "dependencies": { - "camelcase-css": "^2.0.1" - }, - "engines": { - "node": "^12 || ^14 || >= 16" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - }, - "peerDependencies": { - "postcss": "^8.3.3" - } - }, - "node_modules/postcss-load-config": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/postcss-load-config/-/postcss-load-config-3.1.1.tgz", - "integrity": "sha512-c/9XYboIbSEUZpiD1UQD0IKiUe8n9WHYV7YFe7X7J+ZwCsEKkUJSFWjS9hBU1RR9THR7jMXst8sxiqP0jjo2mg==", - "dev": true, - "dependencies": { - "lilconfig": "^2.0.4", - "yaml": "^1.10.2" - }, - "engines": { - "node": ">= 10" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - }, - "peerDependencies": { - "ts-node": ">=9.0.0" - }, - "peerDependenciesMeta": { - "ts-node": { - "optional": true - } - } - }, "node_modules/postcss-loader": { "version": "6.2.1", "resolved": "https://registry.npmmirror.com/postcss-loader/download/postcss-loader-6.2.1.tgz", @@ -8019,25 +7883,6 @@ "postcss": "^8.1.0" } }, - "node_modules/postcss-nested": { - "version": "5.0.6", - "resolved": "https://registry.npmjs.org/postcss-nested/-/postcss-nested-5.0.6.tgz", - "integrity": "sha512-rKqm2Fk0KbA8Vt3AdGN0FB9OBOMDVajMG6ZCf/GoHgdxUJ4sBFp0A/uMIRm+MJUdo33YXEtjqIz8u7DAp8B7DA==", - "dev": true, - "dependencies": { - "postcss-selector-parser": "^6.0.6" - }, - "engines": { - "node": ">=12.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - }, - "peerDependencies": { - "postcss": "^8.2.14" - } - }, "node_modules/postcss-normalize-charset": { "version": "5.0.1", "resolved": "https://registry.nlark.com/postcss-normalize-charset/download/postcss-normalize-charset-5.0.1.tgz", @@ -8398,18 +8243,6 @@ "integrity": "sha1-SSkii7xyTfrEPg77BYyve2z7YkM=", "dev": true }, - "node_modules/quick-lru": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-5.1.1.tgz", - "integrity": "sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/randombytes": { "version": "2.1.0", "resolved": "https://registry.npmmirror.com/randombytes/download/randombytes-2.1.0.tgz", @@ -9292,85 +9125,6 @@ "integrity": "sha1-rnvLNlard6c7pcSb9lTzjmtoYOI=", "dev": true }, - "node_modules/tailwindcss": { - "version": "3.0.15", - "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-3.0.15.tgz", - "integrity": "sha512-bT2iy7FtjwgsXik4ZoJnHXR+SRCiGR1W95fVqpLZebr64m4ahwUwRbIAc5w5+2fzr1YF4Ct2eI7dojMRRl8sVQ==", - "dev": true, - "dependencies": { - "arg": "^5.0.1", - "chalk": "^4.1.2", - "chokidar": "^3.5.2", - "color-name": "^1.1.4", - "cosmiconfig": "^7.0.1", - "detective": "^5.2.0", - "didyoumean": "^1.2.2", - "dlv": "^1.1.3", - "fast-glob": "^3.2.7", - "glob-parent": "^6.0.2", - "is-glob": "^4.0.3", - "normalize-path": "^3.0.0", - "object-hash": "^2.2.0", - "postcss-js": "^4.0.0", - "postcss-load-config": "^3.1.0", - "postcss-nested": "5.0.6", - "postcss-selector-parser": "^6.0.8", - "postcss-value-parser": "^4.2.0", - "quick-lru": "^5.1.1", - "resolve": "^1.21.0" - }, - "bin": { - "tailwind": "lib/cli.js", - "tailwindcss": "lib/cli.js" - }, - "engines": { - "node": ">=12.13.0" - }, - "peerDependencies": { - "autoprefixer": "^10.0.2", - "postcss": "^8.0.9" - } - }, - "node_modules/tailwindcss/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/tailwindcss/node_modules/glob-parent": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", - "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", - "dev": true, - "dependencies": { - "is-glob": "^4.0.3" - }, - "engines": { - "node": ">=10.13.0" - } - }, - "node_modules/tailwindcss/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/tapable": { "version": "2.2.1", "resolved": "https://registry.npmmirror.com/tapable/download/tapable-2.2.1.tgz", @@ -10942,15 +10696,6 @@ } } }, - "node_modules/xtend": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", - "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", - "dev": true, - "engines": { - "node": ">=0.4" - } - }, "node_modules/xxhashjs": { "version": "0.2.2", "resolved": "https://registry.nlark.com/xxhashjs/download/xxhashjs-0.2.2.tgz?cache=0&sync_timestamp=1624607954808&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fxxhashjs%2Fdownload%2Fxxhashjs-0.2.2.tgz", @@ -12758,31 +12503,6 @@ "dev": true, "requires": {} }, - "acorn-node": { - "version": "1.8.2", - "resolved": "https://registry.npmjs.org/acorn-node/-/acorn-node-1.8.2.tgz", - "integrity": "sha512-8mt+fslDufLYntIoPAaIMUe/lrbrehIiwmR3t2k9LljIzoigEPF27eLk2hy8zSGzmR/ogr7zbRKINMo1u0yh5A==", - "dev": true, - "requires": { - "acorn": "^7.0.0", - "acorn-walk": "^7.0.0", - "xtend": "^4.0.2" - }, - "dependencies": { - "acorn": { - "version": "7.4.1", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz", - "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==", - "dev": true - }, - "acorn-walk": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-7.2.0.tgz", - "integrity": "sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA==", - "dev": true - } - } - }, "acorn-walk": { "version": "8.2.0", "resolved": "https://registry.nlark.com/acorn-walk/download/acorn-walk-8.2.0.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.nlark.com%2Facorn-walk%2Fdownload%2Facorn-walk-8.2.0.tgz", @@ -12970,12 +12690,6 @@ "readable-stream": "^3.6.0" } }, - "arg": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/arg/-/arg-5.0.1.tgz", - "integrity": "sha512-e0hDa9H2Z9AwFkk2qDlwhoMYE4eToKarchkQHovNdLTCYMHZHeRjI71crOh+dio4K6u1IcwubQqo79Ga4CyAQA==", - "dev": true - }, "argparse": { "version": "2.0.1", "resolved": "https://registry.nlark.com/argparse/download/argparse-2.0.1.tgz", @@ -13213,12 +12927,6 @@ "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", "dev": true }, - "camelcase-css": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/camelcase-css/-/camelcase-css-2.0.1.tgz", - "integrity": "sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==", - "dev": true - }, "caniuse-api": { "version": "3.0.0", "resolved": "https://registry.npmmirror.com/caniuse-api/download/caniuse-api-3.0.0.tgz", @@ -13782,12 +13490,6 @@ "object-keys": "^1.0.12" } }, - "defined": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/defined/-/defined-1.0.0.tgz", - "integrity": "sha1-yY2bzvdWdBiOEQlpFRGZ45sfppM=", - "dev": true - }, "defu": { "version": "5.0.1", "resolved": "https://registry.npmmirror.com/defu/download/defu-5.0.1.tgz", @@ -13830,23 +13532,6 @@ "integrity": "sha1-+hN8S9aY7fVc1c0CrFWfkaTEups=", "dev": true }, - "detective": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/detective/-/detective-5.2.0.tgz", - "integrity": "sha512-6SsIx+nUUbuK0EthKjv0zrdnajCCXVYGmbYYiYjFVpzcjwEs/JMDZ8tPRG29J/HhN56t3GJp2cGSWDRjjot8Pg==", - "dev": true, - "requires": { - "acorn-node": "^1.6.1", - "defined": "^1.0.0", - "minimist": "^1.1.1" - } - }, - "didyoumean": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/didyoumean/-/didyoumean-1.2.2.tgz", - "integrity": "sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==", - "dev": true - }, "dir-glob": { "version": "3.0.1", "resolved": "https://registry.npm.taobao.org/dir-glob/download/dir-glob-3.0.1.tgz", @@ -13856,12 +13541,6 @@ "path-type": "^4.0.0" } }, - "dlv": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/dlv/-/dlv-1.1.3.tgz", - "integrity": "sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==", - "dev": true - }, "doctrine": { "version": "3.0.0", "resolved": "https://registry.npm.taobao.org/doctrine/download/doctrine-3.0.0.tgz", @@ -16695,12 +16374,6 @@ "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", "dev": true }, - "object-hash": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/object-hash/-/object-hash-2.2.0.tgz", - "integrity": "sha512-gScRMn0bS5fH+IuwyIFgnh9zBdo4DV+6GhygmWM9HyNJSgS0hScp1f5vjtm7oIIOiT9trXrShAkLFSc2IqKNgw==", - "dev": true - }, "object-inspect": { "version": "1.12.0", "resolved": "https://registry.npmmirror.com/object-inspect/download/object-inspect-1.12.0.tgz", @@ -17142,25 +16815,6 @@ } } }, - "postcss-js": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/postcss-js/-/postcss-js-4.0.0.tgz", - "integrity": "sha512-77QESFBwgX4irogGVPgQ5s07vLvFqWr228qZY+w6lW599cRlK/HmnlivnnVUxkjHnCu4J16PDMHcH+e+2HbvTQ==", - "dev": true, - "requires": { - "camelcase-css": "^2.0.1" - } - }, - "postcss-load-config": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/postcss-load-config/-/postcss-load-config-3.1.1.tgz", - "integrity": "sha512-c/9XYboIbSEUZpiD1UQD0IKiUe8n9WHYV7YFe7X7J+ZwCsEKkUJSFWjS9hBU1RR9THR7jMXst8sxiqP0jjo2mg==", - "dev": true, - "requires": { - "lilconfig": "^2.0.4", - "yaml": "^1.10.2" - } - }, "postcss-loader": { "version": "6.2.1", "resolved": "https://registry.npmmirror.com/postcss-loader/download/postcss-loader-6.2.1.tgz", @@ -17272,15 +16926,6 @@ "icss-utils": "^5.0.0" } }, - "postcss-nested": { - "version": "5.0.6", - "resolved": "https://registry.npmjs.org/postcss-nested/-/postcss-nested-5.0.6.tgz", - "integrity": "sha512-rKqm2Fk0KbA8Vt3AdGN0FB9OBOMDVajMG6ZCf/GoHgdxUJ4sBFp0A/uMIRm+MJUdo33YXEtjqIz8u7DAp8B7DA==", - "dev": true, - "requires": { - "postcss-selector-parser": "^6.0.6" - } - }, "postcss-normalize-charset": { "version": "5.0.1", "resolved": "https://registry.nlark.com/postcss-normalize-charset/download/postcss-normalize-charset-5.0.1.tgz", @@ -17513,12 +17158,6 @@ "integrity": "sha1-SSkii7xyTfrEPg77BYyve2z7YkM=", "dev": true }, - "quick-lru": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-5.1.1.tgz", - "integrity": "sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA==", - "dev": true - }, "randombytes": { "version": "2.1.0", "resolved": "https://registry.npmmirror.com/randombytes/download/randombytes-2.1.0.tgz", @@ -18252,64 +17891,6 @@ } } }, - "tailwindcss": { - "version": "3.0.15", - "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-3.0.15.tgz", - "integrity": "sha512-bT2iy7FtjwgsXik4ZoJnHXR+SRCiGR1W95fVqpLZebr64m4ahwUwRbIAc5w5+2fzr1YF4Ct2eI7dojMRRl8sVQ==", - "dev": true, - "requires": { - "arg": "^5.0.1", - "chalk": "^4.1.2", - "chokidar": "^3.5.2", - "color-name": "^1.1.4", - "cosmiconfig": "^7.0.1", - "detective": "^5.2.0", - "didyoumean": "^1.2.2", - "dlv": "^1.1.3", - "fast-glob": "^3.2.7", - "glob-parent": "^6.0.2", - "is-glob": "^4.0.3", - "normalize-path": "^3.0.0", - "object-hash": "^2.2.0", - "postcss-js": "^4.0.0", - "postcss-load-config": "^3.1.0", - "postcss-nested": "5.0.6", - "postcss-selector-parser": "^6.0.8", - "postcss-value-parser": "^4.2.0", - "quick-lru": "^5.1.1", - "resolve": "^1.21.0" - }, - "dependencies": { - "chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "glob-parent": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", - "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", - "dev": true, - "requires": { - "is-glob": "^4.0.3" - } - }, - "supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "requires": { - "has-flag": "^4.0.0" - } - } - } - }, "tapable": { "version": "2.2.1", "resolved": "https://registry.npmmirror.com/tapable/download/tapable-2.2.1.tgz", @@ -19449,12 +19030,6 @@ "dev": true, "requires": {} }, - "xtend": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", - "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", - "dev": true - }, "xxhashjs": { "version": "0.2.2", "resolved": "https://registry.nlark.com/xxhashjs/download/xxhashjs-0.2.2.tgz?cache=0&sync_timestamp=1624607954808&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fxxhashjs%2Fdownload%2Fxxhashjs-0.2.2.tgz", diff --git a/pages/index.vue b/pages/index.vue index bfdac6e..0df7e96 100644 --- a/pages/index.vue +++ b/pages/index.vue @@ -8,11 +8,21 @@ -
- 财务管理 对项目预算、奖金进行配置 - - -
+
+
+ 财务管理 对项目预算、奖金进行配置 +
+ + +
+ +
+
+ 财务审批 对员工提交的申请进行审批 +
+ + +
角色管理 任务管理 @@ -50,7 +60,7 @@ function onClickLeft(){ .financial-management{ background-color:#ffffff; padding: 1rem; - margin-top: 2rem; + margin-top: 1rem; color: #555252; .title{ font-weight: 600; @@ -58,8 +68,7 @@ function onClickLeft(){ .title-describe{ font-size: 12px; margin-left: 0.5rem; + color: #A0A0A0; } } - - diff --git a/store/index.js b/store/index.js new file mode 100644 index 0000000..67956f5 --- /dev/null +++ b/store/index.js @@ -0,0 +1,10 @@ +import { createStore } from 'vuex'; +import user from './user'; + +export default createStore({ + modules: { user }, + state: {}, + getters: {}, + mutations: {}, + actions: {}, +}); diff --git a/store/user.js b/store/user.js new file mode 100644 index 0000000..cb0a360 --- /dev/null +++ b/store/user.js @@ -0,0 +1,61 @@ +import { getToken } from 'apis/index'; + +export default { + namespaced: true, + + state: { user: null }, + + getters: { + token({ user }) { + if (!user) return null; + return user.token; + }, + userId({ user }) { + if (!user) return null; + return user.id; + }, + account({ user }) { + if (!user) return null; + return user.account; + }, + isAdmin({ user }) { + if (!user) return false; + return user.account === 'iacdadmin'; + }, + }, + + mutations: { + /** + * 设置state.user + * @param {*} state + * @param {object|null} user 用户信息 + */ + setUser(state, user) { + state.user = user; + if (user) { + sessionStorage.setItem('token', user.token); + sessionStorage.setItem('user', JSON.stringify(user)); + } else { + sessionStorage.removeItem('token'); + sessionStorage.removeItem('user'); + } + }, + }, + + actions: { + /** + * 根据userId获取token级user信息 + * @param {*} param0 + * @param {string} userId 用户id + */ + async getTokenByUserId({ commit }, userId) { + try { + const data = await getToken(userId); + commit('setUser', data || null); + return data; + } catch (error) { + throw new Error(error); + } + }, + }, +};