diff --git a/src/api/system/mpUser.js b/src/api/system/mpUser.js
new file mode 100644
index 0000000..99427e2
--- /dev/null
+++ b/src/api/system/mpUser.js
@@ -0,0 +1,62 @@
+import request from '@/axios';
+
+export const getList = (current, size, params) => {
+ return request({
+ url: '/blade-system/mp-user/list',
+ method: 'get',
+ params: {
+ ...params,
+ current,
+ size,
+ },
+ });
+};
+
+export const getDetail = id => {
+ return request({
+ url: '/blade-system/mp-user/detail',
+ method: 'get',
+ params: {
+ id,
+ },
+ });
+};
+
+export const submit = row => {
+ return request({
+ url: '/blade-system/mp-user/submit',
+ method: 'post',
+ data: row,
+ });
+};
+
+export const remove = ids => {
+ return request({
+ url: '/blade-system/mp-user/remove',
+ method: 'post',
+ params: {
+ ids,
+ },
+ });
+};
+
+export const changeStatus = (id, status) => {
+ return request({
+ url: '/blade-system/mp-user/change-status',
+ method: 'post',
+ params: {
+ id,
+ status,
+ },
+ });
+};
+
+export const resetPassword = userIds => {
+ return request({
+ url: '/blade-system/mp-user/reset-password',
+ method: 'post',
+ params: {
+ userIds,
+ },
+ });
+};
diff --git a/src/option/system/mpUser.js b/src/option/system/mpUser.js
new file mode 100644
index 0000000..a5b4b9a
--- /dev/null
+++ b/src/option/system/mpUser.js
@@ -0,0 +1,203 @@
+const identityDic = [
+ { label: '司机', value: 'driver' },
+ { label: '管理员', value: 'admin' },
+];
+
+const statusDic = [
+ { label: '启用', value: 1 },
+ { label: '停用', value: 0 },
+];
+
+const validatePhone = (rule, value, callback) => {
+ const phone = String(value || '').trim();
+ if (!phone) {
+ callback(new Error('请输入手机号'));
+ return;
+ }
+ if (!/^1\d{10}$/.test(phone)) {
+ callback(new Error('请输入正确的手机号'));
+ return;
+ }
+ callback();
+};
+
+const validateRemark = (rule, value, callback) => {
+ if (String(value || '').length > 200) {
+ callback(new Error('备注不能超过200字'));
+ } else {
+ callback();
+ }
+};
+
+export default {
+ height: 'auto',
+ calcHeight: 22,
+ dialogWidth: 760,
+ labelPosition: 'right',
+ labelWidth: 'auto',
+ tip: false,
+ searchBtnText: '查询',
+ emptyBtnText: '重置',
+ saveBtnText: '提交',
+ updateBtnText: '提交',
+ searchShow: true,
+ searchIcon: true,
+ searchLabelWidth: 160,
+ searchMenuSpan: 24,
+ searchIndex: 4,
+ searchMenuPosition: 'right',
+ border: true,
+ index: true,
+ indexLabel: '序号',
+ indexWidth: 70,
+ viewBtn: false,
+ delBtn: false,
+ editBtn: false,
+ addBtn: false,
+ selection: true,
+ dialogClickModal: false,
+ menuWidth: 280,
+ column: [
+ {
+ label: '手机号',
+ prop: 'phone',
+ minWidth: 130,
+ search: true,
+ searchOrder: 4,
+ searchSpan: 6,
+ searchPlaceholder: '请输入',
+ maxlength: 11,
+ showWordLimit: true,
+ order: 100,
+ rules: [
+ { required: true, message: '请输入手机号', trigger: 'blur' },
+ { validator: validatePhone, trigger: 'blur' },
+ ],
+ },
+ {
+ label: '账号',
+ prop: 'account',
+ minWidth: 130,
+ search: true,
+ searchOrder: 3,
+ searchSpan: 6,
+ searchPlaceholder: '请输入',
+ maxlength: 45,
+ order: 90,
+ placeholder: '默认与手机号相同',
+ },
+ {
+ label: '姓名',
+ prop: 'realName',
+ minWidth: 100,
+ search: true,
+ searchOrder: 2,
+ searchSpan: 6,
+ searchPlaceholder: '请输入',
+ maxlength: 10,
+ showWordLimit: true,
+ order: 80,
+ },
+ {
+ label: '昵称',
+ prop: 'name',
+ minWidth: 100,
+ maxlength: 20,
+ showWordLimit: true,
+ order: 70,
+ },
+ {
+ label: '小程序身份',
+ prop: 'identities',
+ type: 'select',
+ multiple: true,
+ dataType: 'string',
+ dicData: identityDic,
+ minWidth: 140,
+ search: true,
+ searchOrder: 1,
+ searchSpan: 6,
+ searchPlaceholder: '请选择',
+ order: 60,
+ rules: [{ required: true, message: '请选择小程序身份', trigger: 'change' }],
+ },
+ {
+ label: '性别',
+ prop: 'sex',
+ type: 'select',
+ dicUrl: '/blade-system/dict/dictionary?code=sex',
+ props: {
+ label: 'dictValue',
+ value: 'dictKey',
+ },
+ dataType: 'number',
+ minWidth: 80,
+ hide: true,
+ order: 50,
+ },
+ {
+ label: 'openid',
+ prop: 'openid',
+ minWidth: 180,
+ overHidden: true,
+ addDisplay: false,
+ editDisplay: true,
+ order: 40,
+ placeholder: '可清空以解绑微信',
+ },
+ {
+ label: '状态',
+ prop: 'status',
+ type: 'select',
+ dicData: statusDic,
+ dataType: 'number',
+ minWidth: 90,
+ search: true,
+ searchOrder: 0,
+ searchSpan: 6,
+ addDisplay: false,
+ editDisplay: false,
+ value: 1,
+ order: 30,
+ },
+ {
+ label: '备注',
+ prop: 'remark',
+ type: 'textarea',
+ span: 24,
+ minRows: 2,
+ maxlength: 200,
+ showWordLimit: true,
+ hide: true,
+ order: 20,
+ rules: [{ validator: validateRemark, trigger: 'blur' }],
+ },
+ {
+ label: '创建时间',
+ prop: 'createTime',
+ minWidth: 170,
+ addDisplay: false,
+ editDisplay: false,
+ viewDisplay: true,
+ order: 10,
+ },
+ {
+ label: '更新人',
+ prop: 'updateUserName',
+ minWidth: 100,
+ addDisplay: false,
+ editDisplay: false,
+ viewDisplay: true,
+ order: 5,
+ },
+ {
+ label: '更新时间',
+ prop: 'updateTime',
+ minWidth: 170,
+ addDisplay: false,
+ editDisplay: false,
+ viewDisplay: true,
+ order: 1,
+ },
+ ],
+};
diff --git a/src/option/system/user.js b/src/option/system/user.js
index 78401f8..f3956d7 100644
--- a/src/option/system/user.js
+++ b/src/option/system/user.js
@@ -39,6 +39,7 @@ export const userOption = safe => {
label: '账号名',
prop: 'account',
slot: true,
+ minWidth: 180,
search: true,
searchOrder: 2,
searchPlaceholder: '支持模糊搜索',
@@ -96,7 +97,7 @@ export const userOption = safe => {
{
label: '账号名',
prop: 'account',
- span: 6,
+ span: 12,
rules: [
{
required: true,
diff --git a/src/views/system/mp-user.vue b/src/views/system/mp-user.vue
new file mode 100644
index 0000000..bf66361
--- /dev/null
+++ b/src/views/system/mp-user.vue
@@ -0,0 +1,321 @@
+
+
+
+
+
+ 新增
+
+
+ 密码重置
+
+
+ 批量删除
+
+
+
+ {{ row.identitiesName || formatIdentities(row.identities) }}
+
+
+
+ {{ row.status === 1 ? '启用' : '停用' }}
+
+
+
+ {{ formatUpdateUserName(row) }}
+
+
+
+ 查看
+
+
+ 编辑
+
+
+ {{ row.status === 1 ? '停用' : '启用' }}
+
+
+ 删除
+
+
+
+
+
+
+
+
+
diff --git a/src/views/system/user.vue b/src/views/system/user.vue
index 7aeee32..533db3e 100644
--- a/src/views/system/user.vue
+++ b/src/views/system/user.vue
@@ -139,7 +139,7 @@
-
+