Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
10 changes: 7 additions & 3 deletions .github/workflows/go.yml
Original file line number Diff line number Diff line change
Expand Up @@ -58,15 +58,19 @@ jobs:
with:
go-version: '1.27'

- name: Read version
id: version
run: echo "value=$(cat GAHversion)" >> "$GITHUB_OUTPUT"

- name: Build
env:
CGO_ENABLED: 0
GOOS: ${{ matrix.goos }}
GOARCH: ${{ matrix.goarch }}
run: go build -trimpath -ldflags "-s -w" -o GoAccountHub-${{ matrix.goos }}-${{ matrix.goarch }}${{ matrix.ext }} .
run: go build -trimpath -ldflags "-s -w" -o GoAccountHub-${{ steps.version.outputs.value }}-${{ matrix.goos }}-${{ matrix.goarch }}${{ matrix.ext }} .

- name: Upload Artifact
uses: actions/upload-artifact@v4
with:
name: GoAccountHub-${{ matrix.goos }}-${{ matrix.goarch }}
path: GoAccountHub-${{ matrix.goos }}-${{ matrix.goarch }}${{ matrix.ext }}
name: GoAccountHub-${{ steps.version.outputs.value }}-${{ matrix.goos }}-${{ matrix.goarch }}
path: GoAccountHub-${{ steps.version.outputs.value }}-${{ matrix.goos }}-${{ matrix.goarch }}${{ matrix.ext }}
14 changes: 14 additions & 0 deletions GAHFrontend/package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 2 additions & 0 deletions GAHFrontend/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,9 @@
"dependencies": {
"@element-plus/icons-vue": "^2.3.2",
"element-plus": "^2.14.5",
"monaco-editor": "^0.52.2",
"vue": "^3.5.41",
"vue-cookies": "^1.8.6",
"vue-router": "^5.3.1"
},
"devDependencies": {
Expand Down
1 change: 1 addition & 0 deletions GAHFrontend/src/components/component_test.vue
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
<template></template>
52 changes: 52 additions & 0 deletions GAHFrontend/src/components/customize/AddAdminDialogFrom.vue
Original file line number Diff line number Diff line change
@@ -0,0 +1,52 @@
<template>
<el-dialog :model-value="modelValue" title="添加管理员" width="480px"
@update:model-value="(val) => emit('update:modelValue', val)">
<el-form label-width="80px">
<el-form-item label="用户名">
<el-input v-model="form.username" placeholder="管理员用户名" />
</el-form-item>
<el-form-item label="密码">
<el-input v-model="form.password" type="password" placeholder="管理员密码" show-password />
</el-form-item>
<el-form-item label="权限">
<el-checkbox v-model="form.permission.can_add_admin">是否可以添加管理员</el-checkbox>
<el-checkbox v-model="form.permission.can_delete_admin">是否可以删除管理员</el-checkbox>
<el-checkbox v-model="form.permission.can_edit_admin">是否可以修改管理员</el-checkbox>
<el-checkbox v-model="form.permission.can_get_admin">是否可以获取管理员列表</el-checkbox>
<el-checkbox v-model="form.permission.can_operate_user">是否可以操作用户</el-checkbox>
<el-checkbox v-model="form.permission.can_operate_character">是否可以操作角色</el-checkbox>
</el-form-item>
</el-form>
<template #footer>
<el-button @click="emit('update:modelValue', false)">取消</el-button>
<el-button type="primary" @click="emit('submit', form)">确定</el-button>
</template>
</el-dialog>
</template>

<script setup>
import { reactive } from 'vue'

defineProps({
modelValue: {
type: Boolean,
default: false,
},
})

const emit = defineEmits(['update:modelValue', 'submit'])

// 表单字段对应 adminAdd.go 的请求体
const form = reactive({
username: '',
password: '',
permission: {
can_add_admin: false,
can_delete_admin: false,
can_edit_admin: false,
can_get_admin: false,
can_operate_user: false,
can_operate_character: false,
},
})
</script>
45 changes: 45 additions & 0 deletions GAHFrontend/src/components/customize/AddCharacterDialogFrom.vue
Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@
<template>
<el-dialog :model-value="modelValue" title="添加角色" width="720px"
@update:model-value="(val) => emit('update:modelValue', val)">
<el-form label-width="130px">
<el-form-item label="角色名">
<el-input v-model="form.character_name" placeholder="角色名" />
</el-form-item>
<el-form-item label="密码">
<el-input v-model="form.password" type="password" placeholder="角色密码" show-password />
</el-form-item>
<el-form-item label="所属用户UUHash">
<el-input v-model="form.user_uu_hash" placeholder="所属用户的 UUHash" />
</el-form-item>
<el-form-item label="MetaData">
<MetaDataEditor v-model="form.meta_data" height="240px" />
</el-form-item>
</el-form>
<template #footer>
<el-button @click="emit('update:modelValue', false)">取消</el-button>
<el-button type="primary" @click="emit('submit', form)">确定</el-button>
</template>
</el-dialog>
</template>

<script setup>
import { reactive } from 'vue'
import MetaDataEditor from './MetaDataEditor.vue'

defineProps({
modelValue: {
type: Boolean,
default: false,
},
})

const emit = defineEmits(['update:modelValue', 'submit'])

// 表单字段对应 characterAdd.go 的请求体
const form = reactive({
character_name: '',
password: '',
user_uu_hash: '',
meta_data: '',
})
</script>
41 changes: 41 additions & 0 deletions GAHFrontend/src/components/customize/AddUserDialogFrom.vue
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
<template>
<el-dialog :model-value="modelValue" title="添加用户" width="720px"
@update:model-value="(val) => emit('update:modelValue', val)">
<el-form label-width="80px">
<el-form-item label="用户名">
<el-input v-model="form.username" placeholder="用户名" />
</el-form-item>
<el-form-item label="密码">
<el-input v-model="form.password" type="password" placeholder="用户密码" show-password />
</el-form-item>
<el-form-item label="MetaData">
<MetaDataEditor v-model="form.meta_data" height="260px" />
</el-form-item>
</el-form>
<template #footer>
<el-button @click="emit('update:modelValue', false)">取消</el-button>
<el-button type="primary" @click="emit('submit', form)">确定</el-button>
</template>
</el-dialog>
</template>

<script setup>
import { reactive } from 'vue'
import MetaDataEditor from './MetaDataEditor.vue'

defineProps({
modelValue: {
type: Boolean,
default: false,
},
})

const emit = defineEmits(['update:modelValue', 'submit'])

// 表单字段对应 userAdd.go 的请求体
const form = reactive({
username: '',
password: '',
meta_data: '',
})
</script>
68 changes: 68 additions & 0 deletions GAHFrontend/src/components/customize/EditAdminDialogFrom.vue
Original file line number Diff line number Diff line change
@@ -0,0 +1,68 @@
<template>
<el-dialog :model-value="modelValue" :title="`编辑管理员:${admin?.Username ?? ''}`" width="480px"
@update:model-value="(val) => emit('update:modelValue', val)">
<el-form label-width="80px">
<el-form-item label="密码">
<el-input v-model="form.admin_info.password" type="password" placeholder="留空则不修改密码" show-password />
</el-form-item>
<el-form-item label="权限">
<el-checkbox v-model="form.admin_info.permission.can_add_admin">是否可以添加管理员</el-checkbox>
<el-checkbox v-model="form.admin_info.permission.can_delete_admin">是否可以删除管理员</el-checkbox>
<el-checkbox v-model="form.admin_info.permission.can_edit_admin">是否可以修改管理员</el-checkbox>
<el-checkbox v-model="form.admin_info.permission.can_get_admin">是否可以获取管理员列表</el-checkbox>
<el-checkbox v-model="form.admin_info.permission.can_operate_user">是否可以操作用户</el-checkbox>
<el-checkbox v-model="form.admin_info.permission.can_operate_character">是否可以操作角色</el-checkbox>
</el-form-item>
</el-form>
<template #footer>
<el-button @click="emit('update:modelValue', false)">取消</el-button>
<el-button type="primary" @click="emit('submit', form)">确定</el-button>
</template>
</el-dialog>
</template>

<script setup>
import { reactive, watch } from 'vue'

const props = defineProps({
modelValue: {
type: Boolean,
default: false,
},
// 被编辑的管理员行数据,用于回填表单
admin: {
type: Object,
default: null,
},
})

const emit = defineEmits(['update:modelValue', 'submit'])

// 表单字段对应 adminEdit.go 的请求体
const form = reactive({
uu_hash: '',
admin_info: {
password: '',
permission: {
can_add_admin: false,
can_delete_admin: false,
can_edit_admin: false,
can_get_admin: false,
can_operate_user: false,
can_operate_character: false,
},
},
})

// 打开弹窗或切换目标行时回填表单
watch(
() => [props.modelValue, props.admin],
() => {
if (!props.modelValue || !props.admin) return
form.uu_hash = props.admin.UUHash ?? ''
form.admin_info.password = ''
Object.assign(form.admin_info.permission, props.admin.Permission ?? {})
},
{ immediate: true }
)
</script>
62 changes: 62 additions & 0 deletions GAHFrontend/src/components/customize/EditCharacterDialog.vue
Original file line number Diff line number Diff line change
@@ -0,0 +1,62 @@
<template>
<el-dialog :model-value="modelValue" :title="`编辑角色:${character?.CharacterName ?? ''}`" width="720px"
@update:model-value="(val) => emit('update:modelValue', val)">
<el-form label-width="130px">
<el-form-item label="角色名">
<el-input v-model="form.character_name" placeholder="留空则不修改角色名" />
</el-form-item>
<el-form-item label="密码">
<el-input v-model="form.password" type="password" placeholder="留空则不修改密码" show-password />
</el-form-item>
<el-form-item label="MetaData">
<MetaDataEditor v-model="form.meta_data" height="240px" />
</el-form-item>
</el-form>
<template #footer>
<el-button @click="emit('update:modelValue', false)">取消</el-button>
<el-button type="primary" @click="emit('submit', form)">确定</el-button>
</template>
</el-dialog>
</template>

<script setup>
import { reactive, watch } from 'vue'
import MetaDataEditor from './MetaDataEditor.vue'

const props = defineProps({
modelValue: {
type: Boolean,
default: false,
},
// 被编辑的角色行数据,用于回填表单
character: {
type: Object,
default: null,
},
})

const emit = defineEmits(['update:modelValue', 'submit'])

// 表单字段对应 characterEdit.go 的请求体
const form = reactive({
user_uu_hash: '',
character_uu_hash: '',
character_name: '',
password: '',
meta_data: '',
})

// 打开弹窗或切换目标行时回填表单
watch(
() => [props.modelValue, props.character],
() => {
if (!props.modelValue || !props.character) return
form.user_uu_hash = props.character.UserUUHash ?? ''
form.character_uu_hash = props.character.UUHash ?? ''
form.character_name = props.character.CharacterName ?? ''
form.password = ''
form.meta_data = props.character.MetaData ?? ''
},
{ immediate: true }
)
</script>
Loading
Loading