From ccbd7f96a07c4ac6bd5052cb72ca90018b0fd75f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=90=91=E6=96=87=E5=8F=AF?= <1041367524@qq.com> Date: Fri, 18 Mar 2022 21:46:49 +0800 Subject: [PATCH] =?UTF-8?q?feat:=E9=80=9A=E7=94=A8=E8=A1=A8=E5=8D=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/api/system/user.js | 40 ++ src/components/TableList.vue | 621 ++++++++++++++++++++++++++++ src/components/extra/ElButton.vue | 19 + src/components/extra/ElDropdown.vue | 3 + src/components/extra/ElIcon.vue | 2 - src/components/extra/ElImage.vue | 2 +- src/store/index.js | 2 +- src/store/modules/local.js | 4 + src/store/modules/system/user.js | 39 ++ src/styles/base.less | 2 + src/views/system/user/index.vue | 133 +++++- 11 files changed, 861 insertions(+), 6 deletions(-) create mode 100644 src/api/system/user.js create mode 100644 src/components/TableList.vue create mode 100644 src/components/extra/ElButton.vue create mode 100644 src/store/modules/system/user.js diff --git a/src/api/system/user.js b/src/api/system/user.js new file mode 100644 index 0000000..345e8ec --- /dev/null +++ b/src/api/system/user.js @@ -0,0 +1,40 @@ +const mock = (data) => + new Promise((resolve) => { + setTimeout(() => { + resolve(data); + }, Math.random() * 1500 + 500); + }); +export const findUserList = (data) => { + return mock({ + content: [ + { + id: 1, + username: 'user001', + nickname: '张三', + sex: 1, + avatar: 'https://gimg2.baidu.com/image_search/src=http%3A%2F%2Fup.enterdesk.com%2Fedpic%2Ffd%2Ff1%2Fda%2Ffdf1dacb8ff0b8f13ed29bcbee42f328.jpeg&refer=http%3A%2F%2Fup.enterdesk.com&app=2002&size=f9999,10000&q=a80&n=0&g=0n&fmt=auto?sec=1650201540&t=ba213738d8f11e79302fab71602856f2', + loginTime: Date.now(), + enabled: true, + }, + { + id: 2, + username: 'user003', + nickname: '李四', + sex: 0, + avatar: 'https://gimg2.baidu.com/image_search/src=http%3A%2F%2Fup.enterdesk.com%2Fedpic%2Ffd%2Ff1%2Fda%2Ffdf1dacb8ff0b8f13ed29bcbee42f328.jpeg&refer=http%3A%2F%2Fup.enterdesk.com&app=2002&size=f9999,10000&q=a80&n=0&g=0n&fmt=auto?sec=1650201540&t=ba213738d8f11e79302fab71602856f2', + loginTime: Date.now(), + enabled: true, + }, + { + id: 3, + username: 'user003', + nickname: '王五', + sex: 1, + avatar: 'https://gimg2.baidu.com/image_search/src=http%3A%2F%2Fup.enterdesk.com%2Fedpic%2Ffd%2Ff1%2Fda%2Ffdf1dacb8ff0b8f13ed29bcbee42f328.jpeg&refer=http%3A%2F%2Fup.enterdesk.com&app=2002&size=f9999,10000&q=a80&n=0&g=0n&fmt=auto?sec=1650201540&t=ba213738d8f11e79302fab71602856f2', + loginTime: Date.now(), + enabled: false, + }, + ], + totalElements: 3, + }); +}; diff --git a/src/components/TableList.vue b/src/components/TableList.vue new file mode 100644 index 0000000..09f346b --- /dev/null +++ b/src/components/TableList.vue @@ -0,0 +1,621 @@ + + + diff --git a/src/components/extra/ElButton.vue b/src/components/extra/ElButton.vue new file mode 100644 index 0000000..d1f3e6a --- /dev/null +++ b/src/components/extra/ElButton.vue @@ -0,0 +1,19 @@ + + + diff --git a/src/components/extra/ElDropdown.vue b/src/components/extra/ElDropdown.vue index cfc1689..83720c8 100644 --- a/src/components/extra/ElDropdown.vue +++ b/src/components/extra/ElDropdown.vue @@ -56,4 +56,7 @@ margin-left: @layout-space-small; } } + .el-button + .el-dropdown { + margin-left: 10px; + } diff --git a/src/components/extra/ElIcon.vue b/src/components/extra/ElIcon.vue index 25d9d7d..fe4c701 100644 --- a/src/components/extra/ElIcon.vue +++ b/src/components/extra/ElIcon.vue @@ -47,8 +47,6 @@ font-size: v-bind(size); color: v-bind(color); line-height: 1; - position: relative; - top: 1px; } svg.x-icon { width: v-bind(size); diff --git a/src/components/extra/ElImage.vue b/src/components/extra/ElImage.vue index da59d7c..ae57870 100644 --- a/src/components/extra/ElImage.vue +++ b/src/components/extra/ElImage.vue @@ -7,7 +7,7 @@ const props = defineProps({ src: { type: String, - required: true, + default: 'none', }, alt: { type: String, diff --git a/src/store/index.js b/src/store/index.js index 2b423fc..e682c24 100644 --- a/src/store/index.js +++ b/src/store/index.js @@ -1,7 +1,7 @@ import { createStore } from 'vuex'; const modules = Object.fromEntries( - Object.entries(import.meta.globEager('./modules/*.js')).map((entry) => { + Object.entries(import.meta.globEager('./**/*.js')).map((entry) => { let arr = entry[0].split('/').pop().split('.'); arr.pop(); let moduleName = _.camelCase(arr.join('-')); diff --git a/src/store/modules/local.js b/src/store/modules/local.js index 781e651..8fbf715 100644 --- a/src/store/modules/local.js +++ b/src/store/modules/local.js @@ -1,11 +1,15 @@ const state = () => ({ lastSendMessageTime: 0, token: null, + listSettings: {}, + listPage: {}, }); const getters = {}; const mutations = { sendMessage: (state) => (state.lastSendMessageTime = new Date().getTime()), setToken: (state, data) => (state.token = data), + setListSettings: (state, data) => (state.listSettings = data), + setListPage: (state, data) => (state.listPage = data), }; const actions = {}; export default { diff --git a/src/store/modules/system/user.js b/src/store/modules/system/user.js new file mode 100644 index 0000000..43d7b4e --- /dev/null +++ b/src/store/modules/system/user.js @@ -0,0 +1,39 @@ +import * as api from '@/api/system/user.js'; +import { ElMessage } from '@/plugins/element-plus'; +const state = () => ({ + loading: false, + list: [], + total: 0, + opts: { + sex: [ + { label: '男', value: 1 }, + { label: '女', value: 0 }, + ], + }, +}); +const getters = {}; +const mutations = { + setLoading: (state, data) => (state.loading = data), + setList: (state, data) => (state.list = data), + setTotal: (state, data) => (state.total = data), +}; +const actions = { + search: async ({ commit }, data) => { + commit('setLoading', true); + let res = await api.findUserList(data); + if (res) { + commit('setList', res.content); + commit('setTotal', res.totalElements); + } else { + ElMessage.error('查询用户失败'); + commit('setList', []); + } + commit('setLoading', false); + }, +}; +export default { + state, + getters, + mutations, + actions, +}; diff --git a/src/styles/base.less b/src/styles/base.less index aa7c46b..1ac6b93 100644 --- a/src/styles/base.less +++ b/src/styles/base.less @@ -3,6 +3,8 @@ body, #app { width: 100vw; height: 100vh; + margin: 0; + padding: 0; } ul, ol { diff --git a/src/views/system/user/index.vue b/src/views/system/user/index.vue index 2bc92bf..c9f6545 100644 --- a/src/views/system/user/index.vue +++ b/src/views/system/user/index.vue @@ -1,7 +1,136 @@ - +