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' |
|||
|
|||
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' |
|||
|
|||
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' |
|||
|
|||
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 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}`) |
@ -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