Browse Source

feat: add @jy/store example

zhangyuhan 2 years ago
parent
commit
1480d7bad7
3 changed files with 106 additions and 0 deletions
  1. 35 0
      data/store/README.md
  2. 53 0
      data/store/modules/user/index.js
  3. 18 0
      data/store/package.json

+ 35 - 0
data/store/README.md

@@ -0,0 +1,35 @@
+# @jy/store
+> 聚合API接口,对外提供 Store 数据模型
+
+* 按照领域模型聚合API接口、数据模型
+* 因为该包作为依赖静态编译,无需发布,无需更新 `version`
+
+
+## 安装
+
+```
+pnpm add @jy/store -F 项目名称
+```
+
+### 引用
+
+#### 按需
+```
+# store
+import user from '@jy/store/modules/user/index'
+
+
+
+....
+
+modules: {
+    user
+}
+```
+
+
+## 维护
+
+### 新增/修改
+1. 对应添加 `/modules/领域/index.js`。
+

+ 53 - 0
data/store/modules/user/index.js

@@ -0,0 +1,53 @@
+import { ajaxGetIdentityList, ajaxSwitchIdentity } from '@jy/api/modules/user'
+
+export default {
+  namespaced: true,
+  state: () => ({
+    IdentityList: []
+  }),
+  mutations: {
+    setIdentityList (state, data) {
+      state.IdentityList = [].concat(data)
+    }
+  },
+  actions: {
+    /**
+     * 切换设置用户身份
+     * @param commit
+     * @param data
+     * @returns {AxiosPromise<any>}
+     */
+    async switchIdentity ({ commit }, data) {
+      return ajaxSwitchIdentity(data)
+    },
+    /**
+     * 获取用户身份列表
+     * @param commit
+     * @returns {Promise<void>}
+     */
+    async getIdentityList ({ commit }) {
+      try {
+        const { error_code: code, data = [] } = await ajaxGetIdentityList()
+        if (code === 0) {
+          commit('setIdentityList', data)
+        }
+      } catch (error) {
+        console.warn(error)
+      }
+    }
+  },
+  getters: {
+    /**
+     * 是否存在多个身份
+     * @param state
+     * @returns {boolean}
+     */
+    isNotOneIdentity (state) {
+      return state.setIdentityList.length > 1
+    },
+    currentIdentityName (state) {
+      const current = state.setIdentityList.filter(v => v.checked)[0]
+      return current?.name || ''
+    }
+  }
+}

+ 18 - 0
data/store/package.json

@@ -0,0 +1,18 @@
+{
+  "name": "@jy/store",
+  "version": "0.0.1",
+  "description": "聚合API接口,对外提供 Store 数据模型",
+  "type": "module",
+  "main": "index.js",
+  "exports": {
+    ".": "./index.js",
+    "./modules/*": "./modules/*"
+  },
+  "keywords": [
+    "api",
+    "axios"
+  ],
+  "dependencies": {
+    "@jy/api": "workspace:^"
+  }
+}