+
+
diff --git a/composables/state.ts b/composables/state.ts
new file mode 100644
index 0000000..25199f8
--- /dev/null
+++ b/composables/state.ts
@@ -0,0 +1,21 @@
+import { useState } from '#app';
+
+export const useToken = () => {
+ return useState('token', () => '');
+};
+
+export const useUserId = () => {
+ return useState('userId', () => '');
+};
+
+export const useProjectId = () => {
+ return useState('projectId', () => '');
+};
+
+export const useUser = () => {
+ return useState('user', () => null);
+};
+
+export const useTaskId = () => {
+ return useState('taskId', () => null);
+};
diff --git a/nuxt.config.ts b/nuxt.config.ts
index c6701d9..b7b03f4 100644
--- a/nuxt.config.ts
+++ b/nuxt.config.ts
@@ -11,7 +11,6 @@ export default defineNuxtConfig({
pages: resolve(__dirname, './pages'),
hooks: resolve(__dirname, './hooks'),
apis: resolve(__dirname, './apis'),
- store: resolve(__dirname, './store'),
public: resolve(__dirname, './public'),
},
meta: {
diff --git a/package-lock.json b/package-lock.json
index c409a7f..53962fe 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -8,7 +8,8 @@
"axios": "^0.25.0",
"dayjs": "^1.10.7",
"lodash": "^4.17.21",
- "vant": "^3.4.2"
+ "vant": "^3.4.2",
+ "vuex": "^4.0.2"
},
"devDependencies": {
"@typescript-eslint/eslint-plugin": "^5.10.0",
@@ -1885,8 +1886,7 @@
"node_modules/@vue/devtools-api": {
"version": "6.0.0-beta.21.1",
"resolved": "https://registry.npmmirror.com/@vue/devtools-api/download/@vue/devtools-api-6.0.0-beta.21.1.tgz",
- "integrity": "sha512-FqC4s3pm35qGVeXRGOjTsRzlkJjrBLriDS9YXbflHLsfA9FrcKzIyWnLXoNm+/7930E8rRakXuAc2QkC50swAw==",
- "dev": true
+ "integrity": "sha512-FqC4s3pm35qGVeXRGOjTsRzlkJjrBLriDS9YXbflHLsfA9FrcKzIyWnLXoNm+/7930E8rRakXuAc2QkC50swAw=="
},
"node_modules/@vue/reactivity": {
"version": "3.2.27",
@@ -10241,6 +10241,17 @@
"integrity": "sha1-M7QHd3VMZDJXPBIMw4CLvRDUfwQ=",
"dev": true
},
+ "node_modules/vuex": {
+ "version": "4.0.2",
+ "resolved": "https://registry.npmjs.org/vuex/-/vuex-4.0.2.tgz",
+ "integrity": "sha512-M6r8uxELjZIK8kTKDGgZTYX/ahzblnzC4isU1tpmEuOIIKmV+TRdc+H4s8ds2NuZ7wpUTdGRzJRtoj+lI+pc0Q==",
+ "dependencies": {
+ "@vue/devtools-api": "^6.0.0-beta.11"
+ },
+ "peerDependencies": {
+ "vue": "^3.0.2"
+ }
+ },
"node_modules/watchpack": {
"version": "2.3.1",
"resolved": "https://registry.npmmirror.com/watchpack/download/watchpack-2.3.1.tgz",
@@ -12256,8 +12267,7 @@
"@vue/devtools-api": {
"version": "6.0.0-beta.21.1",
"resolved": "https://registry.npmmirror.com/@vue/devtools-api/download/@vue/devtools-api-6.0.0-beta.21.1.tgz",
- "integrity": "sha512-FqC4s3pm35qGVeXRGOjTsRzlkJjrBLriDS9YXbflHLsfA9FrcKzIyWnLXoNm+/7930E8rRakXuAc2QkC50swAw==",
- "dev": true
+ "integrity": "sha512-FqC4s3pm35qGVeXRGOjTsRzlkJjrBLriDS9YXbflHLsfA9FrcKzIyWnLXoNm+/7930E8rRakXuAc2QkC50swAw=="
},
"@vue/reactivity": {
"version": "3.2.27",
@@ -18686,6 +18696,14 @@
}
}
},
+ "vuex": {
+ "version": "4.0.2",
+ "resolved": "https://registry.npmjs.org/vuex/-/vuex-4.0.2.tgz",
+ "integrity": "sha512-M6r8uxELjZIK8kTKDGgZTYX/ahzblnzC4isU1tpmEuOIIKmV+TRdc+H4s8ds2NuZ7wpUTdGRzJRtoj+lI+pc0Q==",
+ "requires": {
+ "@vue/devtools-api": "^6.0.0-beta.11"
+ }
+ },
"watchpack": {
"version": "2.3.1",
"resolved": "https://registry.npmmirror.com/watchpack/download/watchpack-2.3.1.tgz",
diff --git a/package.json b/package.json
index 997e35e..c434aa3 100644
--- a/package.json
+++ b/package.json
@@ -22,6 +22,7 @@
"axios": "^0.25.0",
"dayjs": "^1.10.7",
"lodash": "^4.17.21",
- "vant": "^3.4.2"
+ "vant": "^3.4.2",
+ "vuex": "^4.0.2"
}
}
diff --git a/plugins/vant.js b/plugins/vant.js
index 5787054..64c80fd 100644
--- a/plugins/vant.js
+++ b/plugins/vant.js
@@ -20,6 +20,8 @@ import {
Popup,
Cascader,
Circle,
+ Empty,
+ Popover
} from 'vant';
import { defineNuxtPlugin } from '#app';
@@ -43,5 +45,7 @@ export default defineNuxtPlugin(nuxtApp => {
.use(Cascader)
.use(Popup)
.use(Circle)
- .use(Tabs);
+ .use(Tabs)
+ .use(Empty)
+ .use(Popover)
});
diff --git a/rest/http-client.env.json b/rest/http-client.env.json
new file mode 100644
index 0000000..523f84c
--- /dev/null
+++ b/rest/http-client.env.json
@@ -0,0 +1,15 @@
+{
+ "$shared": {
+ "version": "v1",
+ "identifier": "wally",
+ "credential": "111111"
+ },
+ "dev": {
+ "name": "dev",
+ "url": "https://test.tall.wiki/gateway"
+ },
+ "local": {
+ "version": "v2",
+ "url": "https://test.tall.wiki/gateway"
+ }
+}
diff --git a/rest/财务条.http b/rest/财务条.http
new file mode 100644
index 0000000..bb135da
--- /dev/null
+++ b/rest/财务条.http
@@ -0,0 +1,109 @@
+@localhost = http://localhost:7320/v1.0
+@localhost_tall = http://localhost:7130/v3.0
+@test_tall = http://192.168.0.99:7130/v3.0
+@test = https://test.tall.wiki/ptccsens/v1.0
+@www_tall = http://www.tall.wiki:7130/v3.0
+@www = http://www.tall.wiki/ptccsens/v1.0
+@type = content-type: application/json;charset=utf-8
+
+### 登录
+# song 1218763410024566784
+# @name login
+POST {{localhost_tall}}/users/signin
+{{type}}
+
+{
+ "client": 1,
+ "type": 3,
+ "data": {
+ "identifier": "whj",
+ "credential": "123456"
+ }
+}
+
+### debug
+GET {{test}}/debug
+{{type}}
+Authorization: Bearer {{login.response.body.$.data.token}}
+
+###查询费用申请类型
+POST {{localhost}}/finance/queryType
+{{type}}
+Authorization: Bearer {{login.response.body.$.data.token}}
+
+{
+ "param":{
+ "parentId":"4",
+ "type":2
+ }
+}
+
+###发起申请
+POST {{localhost}}/finance/apply
+{{type}}
+Authorization: Bearer {{login.response.body.$.data.token}}
+
+{
+ "param":{
+
+ "checkerList": [
+ 123
+ ],
+ "invoiceList": [
+ {
+ "invoiceCode": "014002100112",
+ "invoiceNumber": "86610940",
+ "invoiceTime": 1643075118954,
+ "money": 4190,
+ "remark": "业务招待支出",
+ "taxMoney": 126,
+ "url": "https://alifei04.cfp.cn/creative/vcg/800/new/VCG211363439424.jpg"
+ }
+ ],
+ "projectId": 2,
+ "taskDetailId": 3,
+ "remark": "",
+ "department": "视觉传达事业部",
+ "submitName": "黛西",
+ "money": 4190,
+ "typeId": 1,
+ "categoryId": 4,
+ "rowId": 7
+
+ }
+}
+
+###查询申请详情
+POST {{localhost}}/finance/getApplyDetail
+{{type}}
+Authorization: Bearer {{login.response.body.$.data.token}}
+
+{
+ "param":{
+ "applyId":"1485797754654695424"
+ }
+}
+
+###审批
+POST {{localhost}}/finance/audit
+{{type}}
+Authorization: Bearer {{login.response.body.$.data.token}}
+
+{
+ "param":{
+ "checkStatus":"2",
+ "financeCheckId":"1485797754923130880",
+ "remark":"测试"
+ }
+}
+
+###通过任务id查看任务关联的财务信息
+POST {{localhost}}/finance/getByTask
+{{type}}
+Authorization: Bearer {{login.response.body.$.data.token}}
+
+{
+ "param":{
+ "taskDetailId":"3"
+ }
+}
diff --git a/store/index.js b/store/index.js
deleted file mode 100644
index 67956f5..0000000
--- a/store/index.js
+++ /dev/null
@@ -1,10 +0,0 @@
-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
deleted file mode 100644
index cb0a360..0000000
--- a/store/user.js
+++ /dev/null
@@ -1,61 +0,0 @@
-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);
- }
- },
- },
-};