18 changed files with 362 additions and 100 deletions
-
4.env.dev
-
4src/apis/container.ts
-
16src/apis/crafts.ts
-
6src/apis/ore.ts
-
8src/apis/solution.ts
-
2src/apis/user.ts
-
9src/components/craft/AddCraftDialog.vue
-
139src/components/craft/CraftStatus.vue
-
40src/components/craft/TransferRight.vue
-
2src/router/routes.ts
-
5src/types/craft.d.ts
-
5src/types/solution.d.ts
-
10src/types/user.d.ts
-
6src/views/container/index.vue
-
2src/views/container/liquidItem.vue
-
28src/views/craft/index.vue
-
2src/views/solution/index.vue
-
174src/views/user/index.vue
@ -1,5 +1,5 @@ |
|||||
import http from 'libs/http' |
import http from 'libs/http' |
||||
|
|
||||
export const getContainerList = (): Promise<any> => http.get(`/container/list`) |
|
||||
|
export const getContainerList = (): Promise<System.PageResponse<Container.ContainerItem>> => http.get(`/container/list`) |
||||
|
|
||||
export const updateContainer = (params: Container.ContainerItem): Promise<any> => http.put(`/container`, params) |
|
||||
|
export const updateContainer = (params: Container.ContainerItem): Promise<null> => http.put(`/container`, params) |
@ -1,9 +1,9 @@ |
|||||
import http from 'libs/http' |
import http from 'libs/http' |
||||
|
|
||||
export const getSolsList = (): Promise<any> => http.get(`/sols/list`) |
|
||||
|
export const getSolsList = (): Promise<System.PageResponse<Solution.SolutionItem>> => http.get(`/sols/list`) |
||||
|
|
||||
export const saveSols = (params: { name: string }): Promise<any> => http.post(`/sols`, params) |
|
||||
|
export const saveSols = (params: { name: string }): Promise<null> => http.post(`/sols`, params) |
||||
|
|
||||
export const editSols = (params: { id: number, name: string }): Promise<any> => http.put(`/sols`, params) |
|
||||
|
export const editSols = (params: { id: number, name: string }): Promise<null> => http.put(`/sols`, params) |
||||
|
|
||||
export const delSols = (ids: string): Promise<any> => http.delete(`/sols/${ids}`) |
|
||||
|
export const delSols = (ids: string): Promise<null> => http.delete(`/sols/${ids}`) |
@ -1,7 +1,7 @@ |
|||||
import http from 'libs/http' |
import http from 'libs/http' |
||||
|
|
||||
export const current = (): Promise<User.User> => http.get('/auth/current') |
export const current = (): Promise<User.User> => http.get('/auth/current') |
||||
export const addUser = (params: User.User): Promise<null> => http.post('/user', params) |
|
||||
|
export const addUser = (params: User.AddUser): Promise<null> => http.post('/user', params) |
||||
export const updateUser = (params: User.User): Promise<null> => http.put('/user', params) |
export const updateUser = (params: User.User): Promise<null> => http.put('/user', params) |
||||
export const userList = (params: System.Page): Promise<System.PageResponse<User.User>> => http.get('/user/list', { params }) |
export const userList = (params: System.Page): Promise<System.PageResponse<User.User>> => http.get('/user/list', { params }) |
||||
export const delUser = (params: string): Promise<null> => http.delete(`/user/${params}`) |
export const delUser = (params: string): Promise<null> => http.delete(`/user/${params}`) |
@ -0,0 +1,174 @@ |
|||||
|
<script lang="ts" setup> |
||||
|
import type { FormInstance } from 'element-plus' |
||||
|
import { addUser, userList } from '@/apis/user' |
||||
|
import { ElMessage } from 'element-plus' |
||||
|
import { onMounted, ref } from 'vue' |
||||
|
|
||||
|
onMounted(() => { |
||||
|
queryUserList() |
||||
|
}) |
||||
|
const userDataList = ref<User.User[]>([]) |
||||
|
const visible = ref(false) |
||||
|
const userForm = ref<Record<string, string | number>>({}) |
||||
|
const userFormRef = ref() |
||||
|
const queryUserList = () => { |
||||
|
const params = { |
||||
|
pageSize: 10, |
||||
|
pageNum: 1, |
||||
|
} |
||||
|
userList(params).then((res) => { |
||||
|
console.log('res===', res) |
||||
|
userDataList.value = res.list |
||||
|
}) |
||||
|
} |
||||
|
const createUser = () => { |
||||
|
visible.value = true |
||||
|
} |
||||
|
const editUser = () => { |
||||
|
|
||||
|
} |
||||
|
const delUser = () => { |
||||
|
console.log(11) |
||||
|
} |
||||
|
const onSelectionChange = () => { |
||||
|
console.log(22) |
||||
|
} |
||||
|
const closeDialog = () => { |
||||
|
visible.value = false |
||||
|
} |
||||
|
const onConfirm = (formRef: FormInstance | undefined) => { |
||||
|
if (!formRef) { |
||||
|
return |
||||
|
} |
||||
|
formRef.validate((valid) => { |
||||
|
if (valid) { |
||||
|
const { username, nickname, password, confirmPassword, isAdmin } = userForm.value |
||||
|
if (password !== confirmPassword) { |
||||
|
ElMessage.error('两次输入的密码不一致') |
||||
|
return |
||||
|
} |
||||
|
const params: User.AddUser = { |
||||
|
username, |
||||
|
nickname, |
||||
|
password, |
||||
|
role: isAdmin ? 'ADMIN' : 'USER', |
||||
|
fixedUser: 'ENABLE', |
||||
|
deleted: 'ENABLE', |
||||
|
} |
||||
|
addUser(params).then(() => { |
||||
|
ElMessage.success('保存成功') |
||||
|
queryUserList() |
||||
|
closeDialog() |
||||
|
}) |
||||
|
} |
||||
|
else { |
||||
|
console.log('error submit!') |
||||
|
} |
||||
|
}) |
||||
|
} |
||||
|
</script> |
||||
|
|
||||
|
<template> |
||||
|
<div> |
||||
|
<div> |
||||
|
<FtButton @click="createUser"> |
||||
|
添加用户 |
||||
|
</FtButton> |
||||
|
<FtButton @click="editUser"> |
||||
|
编辑用户 |
||||
|
</FtButton> |
||||
|
<FtButton @click="delUser"> |
||||
|
删除用户 |
||||
|
</FtButton> |
||||
|
</div> |
||||
|
<div> |
||||
|
<el-table :data="userDataList" stripe style="width: 100%" @selection-change="onSelectionChange"> |
||||
|
<el-table-column type="selection" width="55" /> |
||||
|
<el-table-column type="index" width="50" /> |
||||
|
<el-table-column prop="username" label="登录名" /> |
||||
|
<el-table-column prop="nickname" label="用户名" /> |
||||
|
<el-table-column prop="fixedUser" label="状态"> |
||||
|
<template #default="scoped"> |
||||
|
<span v-if="scoped.row.fixedUser === 'ENABLE'">正常</span> |
||||
|
<span v-else>停用</span> |
||||
|
</template> |
||||
|
</el-table-column> |
||||
|
<el-table-column prop="createTime" label="创建时间" /> |
||||
|
<el-table-column prop="updateTime" label="更新时间" /> |
||||
|
</el-table> |
||||
|
</div> |
||||
|
<FtDialog v-model="visible" title="添加用户" style="width:35vw;"> |
||||
|
<div> |
||||
|
<el-form ref="userFormRef" :model="userForm" label-width="auto" style="max-width: 600px"> |
||||
|
<el-form-item |
||||
|
label="登录名:" |
||||
|
prop="username" |
||||
|
:rules="[{ |
||||
|
required: true, |
||||
|
message: '输入登录名', |
||||
|
trigger: ['blur', 'change'], |
||||
|
}]" |
||||
|
> |
||||
|
<el-input v-model="userForm.username" placeholder="登录名" /> |
||||
|
</el-form-item> |
||||
|
<el-form-item |
||||
|
label="用户名:" |
||||
|
prop="nickname" |
||||
|
:rules="{ |
||||
|
required: true, |
||||
|
message: '输入用户名', |
||||
|
trigger: 'blur', |
||||
|
}" |
||||
|
> |
||||
|
<el-input v-model="userForm.nickname" placeholder="用户名" /> |
||||
|
</el-form-item> |
||||
|
<el-form-item |
||||
|
label="密码:" |
||||
|
prop="password" |
||||
|
:rules="{ |
||||
|
required: true, |
||||
|
message: '输入密码', |
||||
|
trigger: 'blur', |
||||
|
}" |
||||
|
> |
||||
|
<el-input v-model="userForm.password" type="password" placeholder="密码" /> |
||||
|
</el-form-item> |
||||
|
<el-form-item |
||||
|
label="确认密码:" |
||||
|
prop="confirmPassword" |
||||
|
:rules="{ |
||||
|
required: true, |
||||
|
message: '输入密码', |
||||
|
trigger: 'blur', |
||||
|
}" |
||||
|
> |
||||
|
<el-input v-model="userForm.confirmPassword" type="password" placeholder="确认密码" /> |
||||
|
</el-form-item> |
||||
|
<el-form-item |
||||
|
label="是否管理员:" |
||||
|
> |
||||
|
<el-checkbox v-model="userForm.isAdmin" size="small" /> |
||||
|
</el-form-item> |
||||
|
</el-form> |
||||
|
</div> |
||||
|
<template #footer> |
||||
|
<div class="footer"> |
||||
|
<FtButton @click="closeDialog"> |
||||
|
取消 |
||||
|
</FtButton> |
||||
|
<FtButton :click-handle="() => { onConfirm(userFormRef) }"> |
||||
|
确定 |
||||
|
</FtButton> |
||||
|
</div> |
||||
|
</template> |
||||
|
</FtDialog> |
||||
|
</div> |
||||
|
</template> |
||||
|
|
||||
|
<style lang="css" scoped> |
||||
|
.footer{ |
||||
|
display: flex; |
||||
|
justify-content: center; |
||||
|
width: 35vw; |
||||
|
} |
||||
|
</style> |
Write
Preview
Loading…
Cancel
Save
Reference in new issue