diff --git a/src/api/user-boot/role.ts b/src/api/user-boot/role.ts index 9a1f867..ae1a09f 100644 --- a/src/api/user-boot/role.ts +++ b/src/api/user-boot/role.ts @@ -23,3 +23,11 @@ export function del(data: any) { data: data }) } + + +export function roleList(id: number) { + return createAxios({ + url: '/user-boot/role/selectRoleDetail?id=' + id, + method: 'post' + }) +} \ No newline at end of file diff --git a/src/api/user-boot/user.ts b/src/api/user-boot/user.ts new file mode 100644 index 0000000..8f638d4 --- /dev/null +++ b/src/api/user-boot/user.ts @@ -0,0 +1,17 @@ +import request from '@/utils/request' + +export function add(data: any) { + return request({ + url: '/user-boot/user/add', + method: 'post', + data: data + }) +} + +export function edit(data: any) { + return request({ + url: '/user-boot/user/update', + method: 'put', + data: data + }) +} diff --git a/src/stores/adminInfo.ts b/src/stores/adminInfo.ts index f009817..ba59923 100644 --- a/src/stores/adminInfo.ts +++ b/src/stores/adminInfo.ts @@ -32,7 +32,15 @@ export const useAdminInfo = defineStore('adminInfo', { this[field] = token }, getToken(type: 'auth' | 'refresh' = 'auth') { - return type === 'auth' ? this.token_type + ' ' + this.access_token : this.refresh_token + if (type === 'auth') { + if (this.token_type && this.access_token) { + return this.token_type + ' ' + this.access_token + } else { + return '' + } + } else { + return this.refresh_token + } } }, persist: { diff --git a/src/utils/request.ts b/src/utils/request.ts index b0111d5..b76595c 100644 --- a/src/utils/request.ts +++ b/src/utils/request.ts @@ -67,6 +67,8 @@ function createAxios>( // 自动携带token if (config.headers) { const token = adminInfo.getToken() + console.log(token) + console.log(token.length, 'token') if (token) { ;(config.headers as anyObj).Authorization = token } else { diff --git a/src/views/auth/userlist/popupEdit.vue b/src/views/auth/userlist/popupEdit.vue index 2d5d106..d05bcfa 100644 --- a/src/views/auth/userlist/popupEdit.vue +++ b/src/views/auth/userlist/popupEdit.vue @@ -8,7 +8,7 @@ - + @@ -64,30 +64,23 @@ - + - + - +
- + @@ -116,7 +109,8 @@ import { ref, inject } from 'vue' import { reactive } from 'vue' import TableStore from '@/utils/tableStore' import { ElMessage } from 'element-plus' -import { add, update } from '@/api/user-boot/role' +import { roleList } from '@/api/user-boot/role' +import { add, edit } from '@/api/user-boot/user' import { useAdminInfo } from '@/stores/adminInfo' import Area from '@/components/form/area/index.vue' @@ -126,7 +120,7 @@ const tableStore = inject('tableStore') as TableStore const form = reactive({ id: '', name: '', - password: '', + password: '123456', email: '', limitIpStart: '', deptId: '', @@ -135,15 +129,74 @@ const form = reactive({ loginName: '', phone: '', limitIpEnd: '', - limitTime: '', + limitTime: [1, 2], role: [], smsNotice: 0, emailNotice: 0, - type: undefined + type: 0 }) const rules = { - name: [{ required: true, message: '角色名称不能为空', trigger: 'blur' }], - code: [{ required: true, message: '角色编码不能为空', trigger: 'blur' }] + name: [{ required: true, message: '用户名不能为空', trigger: 'blur' }], + role: [{ required: true, message: '角色不能为空', trigger: 'blur' }], + password: [{ required: true, message: '用户密码不能为空', trigger: 'blur' }], + loginName: [{ required: true, message: '登录名不能为空', trigger: 'blur' }], + deptId: [{ required: true, message: '归属部门不能为空', trigger: 'blur' }], + casualUser: [{ required: true, message: '用户类型不能为空', trigger: 'blur' }], + smsNotice: [{ required: true, message: '短信通知不能为空', trigger: 'blur' }], + emailNotice: [{ required: true, message: '邮件通知不能为空', trigger: 'blur' }], + email: [ + { required: false, message: '邮箱不能为空', trigger: 'blur' }, + { + type: 'email', + message: "'请输入正确的邮箱地址", + trigger: ['blur', 'change'] + } + ], + phone: [ + { required: false, message: '手机号不能为空', trigger: 'blur' }, + { + pattern: /^1[3|4|5|6|7|8|9][0-9]\d{8}$/, + message: '请输入正确的手机号码', + trigger: 'blur' + } + ], + limitTime: [{ required: true, message: '时间段不能为空', trigger: 'blur' }], + limitIpStart: [ + { required: true, message: '起始IP不能为空', trigger: 'blur' }, + { + required: true, + validator: (rule: any, value: string, callback: any) => { + let regexp = /^((2(5[0-5]|[0-4]\d))|[0-1]?\d{1,2})(\.((2(5[0-5]|[0-4]\d))|[0-1]?\d{1,2})){3}$/ + let isCorrect = regexp.test(value) + if (value == '') { + return callback(new Error('请输入IP地址')) + } else if (!isCorrect) { + callback(new Error('请输入正确的IP地址')) + } else { + callback() + } + }, + trigger: 'blur' + } + ], + limitIpEnd: [ + { required: true, message: '结束IP不能为空', trigger: 'blur' }, + { + required: true, + validator: (rule: any, value: string, callback: any) => { + let regexp = /^((2(5[0-5]|[0-4]\d))|[0-1]?\d{1,2})(\.((2(5[0-5]|[0-4]\d))|[0-1]?\d{1,2})){3}$/ + let isCorrect = regexp.test(value) + if (value == '') { + return callback(new Error('请输入IP地址')) + } else if (!isCorrect) { + callback(new Error('请输入正确的IP地址')) + } else { + callback() + } + }, + trigger: 'blur' + } + ] } const UserTypeOption = [ { label: '管理员', value: 1 }, @@ -154,8 +207,18 @@ const TypeOptions = [ { label: '长期用户', value: 1 } ] const useId = ref(1) -const roleOptions: treeData = [] -const queryRole = () => {} +const roleOptions = ref() +const queryRole = () => { + roleList(adminInfo.$state.userType).then((res: any) => { + roleOptions.value = res.data.map((item: any) => { + return { + label: item.name, + value: item.id + } + }) + }) +} +queryRole() const dialogVisible = ref(false) const title = ref('新增菜单') const open = (text: string, data?: anyObj) => { @@ -165,20 +228,34 @@ const open = (text: string, data?: anyObj) => { for (let key in form) { form[key] = data[key] } + form.role = data.roleList.length ? data.roleList[0] : '' } else { for (let key in form) { form[key] = '' } + form.casualUser = 1 + form.limitTime = [0, 24] + form.role = [] + form.smsNotice = 0 + form.emailNotice = 0 + useId.value = 1 } } const submit = async () => { + let obj = JSON.parse(JSON.stringify(form)) + obj.limitTime = obj.limitTime.join('-') + obj.type = adminInfo.$state.userType + 1 + obj.role = [obj.role] + delete obj.password if (form.id) { - await update(form) + await edit(obj) + ElMessage.success('修改成功') } else { + delete obj.id form.type = adminInfo.$state.userType + 1 - await add(form) + await add(obj) + ElMessage.success('新增成功') } - ElMessage.success('保存成功') tableStore.index() dialogVisible.value = false } diff --git a/vite.config.ts b/vite.config.ts index 1aae639..f0ecba3 100644 --- a/vite.config.ts +++ b/vite.config.ts @@ -10,8 +10,8 @@ export default defineConfig({ server: { proxy: { '/api': { - // target: 'http://192.168.1.81:10215', //数据中心 - target: 'http://192.168.1.22:10215', //治理 + target: 'http://192.168.1.81:10215', //数据中心 + // target: 'http://192.168.1.22:10215', //治理 changeOrigin: true, rewrite: path => path.replace(/^\/api/, '') //路径重写,把'/api'替换为'' }