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 @@
- 用户列表
+
+
+
+
+
+
+
+
+
-
+