Files
NetAdmin/src/frontend/admin/src/views/sys/config/save.vue
2024-07-03 22:09:58 +08:00

121 lines
4.9 KiB
Vue
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<template>
<sc-dialog v-model="visible" :title="`${titleMap[mode]}${form?.id ?? '...'}`" @closed="$emit('closed')" destroy-on-close>
<div v-loading="loading">
<el-tabs v-if="!loading" tab-position="top">
<el-tab-pane :label="$t('基本信息')">
<el-form :disabled="mode === 'view'" :model="form" :rules="rules" label-width="15rem" ref="dialogForm">
<el-collapse>
<el-collapse-item :title="$t('用户注册设置')" name="1">
<div style="margin: 1rem">
<el-form-item :label="$t('默认角色')" prop="userRegisterRoleId">
<sc-select
v-model="form.userRegisterRoleId"
:config="{ props: { label: 'name', value: 'id' } }"
:export-api="$API.sys_role.export"
:query-api="$API.sys_role.query"
clearable
filterable
style="width: 15rem" />
</el-form-item>
<el-form-item :label="$t('默认部门')" prop="userRegisterDeptId">
<na-dept v-model="form.userRegisterDeptId" style="width: 15rem"></na-dept>
</el-form-item>
<el-form-item :label="$t('开启人工审核')" prop="userRegisterConfirm">
<el-switch v-model="form.userRegisterConfirm"></el-switch>
</el-form-item>
</div>
</el-collapse-item>
<el-collapse-item :title="$t('其他设置')" name="2"></el-collapse-item>
</el-collapse>
<el-form-item :label="$t('启用')" prop="enabled">
<el-switch v-model="form.enabled"></el-switch>
</el-form-item>
</el-form>
</el-tab-pane>
<el-tab-pane v-if="mode === 'view'" :label="$t('原始数据')">
<json-viewer
:expand-depth="5"
:theme="this.$TOOL.data.get('APP_SET_DARK') || this.$CONFIG.APP_SET_DARK ? 'dark' : 'light'"
:value="form"
copyable
expanded
sort></json-viewer>
</el-tab-pane>
</el-tabs>
</div>
<template #footer>
<el-button @click="visible = false">{{ $t('取消') }}</el-button>
<el-button v-if="mode !== 'view'" :disabled="loading" :loading="loading" @click="submit" type="primary">{{ $t('保存') }}</el-button>
</template>
</sc-dialog>
</template>
<script>
export default {
components: {},
data() {
return {
//表单数据
form: {
enabled: true,
},
loading: false,
mode: 'add',
//验证规则
rules: {
userRegisterDeptId: [{ required: true, message: '请选择默认部门' }],
userRegisterRoleId: [{ required: true, message: '请选择默认角色' }],
},
titleMap: {
add: this.$t('新增配置'),
edit: this.$t('编辑配置'),
view: this.$t('查看配置'),
},
visible: false,
}
},
emits: ['success', 'closed', 'mounted'],
methods: {
//显示
async open(data) {
this.visible = true
this.loading = true
this.mode = data.mode
if (data.row?.id) {
const res = await this.$API.sys_config.get.post({ id: data.row.id })
Object.assign(this.form, res.data)
}
this.loading = false
return this
},
//表单提交方法
async submit() {
const valid = await this.$refs.dialogForm.validate().catch(() => {})
if (!valid) {
return false
}
this.loading = true
const method = this.mode === 'add' ? this.$API.sys_config.create : this.$API.sys_config.edit
try {
const res = await method.post(this.form)
this.$emit('success', res.data, this.mode)
this.visible = false
this.$message.success(this.$t('操作成功'))
} catch {}
this.loading = false
},
},
mounted() {
this.$emit('mounted')
},
}
</script>
<style scoped>
.el-collapse {
border-top: none;
}
</style>