|
@@ -11,13 +11,13 @@
|
|
<el-form-item label="应用图标" prop="icon">
|
|
<el-form-item label="应用图标" prop="icon">
|
|
<uploadVue :img="formData.icon" @set-img="handleAvatarSuccess"></uploadVue>
|
|
<uploadVue :img="formData.icon" @set-img="handleAvatarSuccess"></uploadVue>
|
|
</el-form-item>
|
|
</el-form-item>
|
|
- <el-form-item label="AK" prop="accessKey">
|
|
|
|
|
|
+ <el-form-item label="应用 AK" prop="accessKey">
|
|
<el-input v-model="formData.accessKey" placeholder="请输入ak,应用接入认证" />
|
|
<el-input v-model="formData.accessKey" placeholder="请输入ak,应用接入认证" />
|
|
</el-form-item>
|
|
</el-form-item>
|
|
- <el-form-item label="SK" prop="secureKey">
|
|
|
|
|
|
+ <el-form-item label="应用 SK" prop="secureKey">
|
|
<el-input v-model="formData.secureKey" placeholder="请输入sk,应用接入认证" />
|
|
<el-input v-model="formData.secureKey" placeholder="请输入sk,应用接入认证" />
|
|
</el-form-item>
|
|
</el-form-item>
|
|
- <el-form-item label="组织" prop="orgId">
|
|
|
|
|
|
+ <el-form-item label="应用组织" prop="orgId">
|
|
<el-cascader :options="deptData"
|
|
<el-cascader :options="deptData"
|
|
:props="{ checkStrictly: true, emitPath: false, value: 'deptId', label: 'deptName' }"
|
|
:props="{ checkStrictly: true, emitPath: false, value: 'deptId', label: 'deptName' }"
|
|
placeholder="请选择组织" clearable class="w100" v-model="formData.orgId
|
|
placeholder="请选择组织" clearable class="w100" v-model="formData.orgId
|
|
@@ -28,22 +28,29 @@
|
|
</template>
|
|
</template>
|
|
</el-cascader>
|
|
</el-cascader>
|
|
</el-form-item>
|
|
</el-form-item>
|
|
- <el-form-item label="应用描述" prop="desc">
|
|
|
|
- <el-input v-model="formData.desc" type="textarea" :rows="3" />
|
|
|
|
|
|
+ <el-form-item label="应用角色" prop="roleId">
|
|
|
|
+ <el-cascader :options="roleList"
|
|
|
|
+ :props="{ checkStrictly: true, emitPath: false, value: 'id', label: 'name' }"
|
|
|
|
+ placeholder="请选择角色" clearable class="w100" v-model="formData.roleId">
|
|
|
|
+ <template #default="{ node, data }">
|
|
|
|
+ <span>{{ data.name }}</span>
|
|
|
|
+ <span v-if="!node.isLeaf"> ({{ data.children.length }}) </span>
|
|
|
|
+ </template>
|
|
|
|
+ </el-cascader>
|
|
</el-form-item>
|
|
</el-form-item>
|
|
- <!-- <el-form-item label="应用类型" prop="name">
|
|
|
|
- <el-input v-model="formData.name" placeholder="请输入应用类型" />
|
|
|
|
- </el-form-item> -->
|
|
|
|
<el-form-item label="应用状态" prop="status">
|
|
<el-form-item label="应用状态" prop="status">
|
|
<el-radio-group v-model="formData.status">
|
|
<el-radio-group v-model="formData.status">
|
|
<el-radio :label="1">启用</el-radio>
|
|
<el-radio :label="1">启用</el-radio>
|
|
<el-radio :label="0">未启用</el-radio>
|
|
<el-radio :label="0">未启用</el-radio>
|
|
</el-radio-group>
|
|
</el-radio-group>
|
|
</el-form-item>
|
|
</el-form-item>
|
|
|
|
+ <el-form-item label="回调地址" prop="callbackUri">
|
|
|
|
+ <el-input v-model="formData.callbackUri" placeholder="请输入回调地址" />
|
|
|
|
+ </el-form-item>
|
|
|
|
+ <el-form-item label="应用描述" prop="desc">
|
|
|
|
+ <el-input v-model="formData.desc" type="textarea" :rows="3" />
|
|
|
|
+ </el-form-item>
|
|
</el-form>
|
|
</el-form>
|
|
- <el-form-item label="回调地址" prop="callbackUri">
|
|
|
|
- <el-input v-model="formData.callbackUri" placeholder="请输入回调地址" />
|
|
|
|
- </el-form-item>
|
|
|
|
<template #footer>
|
|
<template #footer>
|
|
<div class="dialog-footer">
|
|
<div class="dialog-footer">
|
|
<el-button @click="showDialog = false">取消</el-button>
|
|
<el-button @click="showDialog = false">取消</el-button>
|
|
@@ -53,20 +60,25 @@
|
|
</el-dialog>
|
|
</el-dialog>
|
|
</template>
|
|
</template>
|
|
<script lang="ts" setup>
|
|
<script lang="ts" setup>
|
|
-import { ref, reactive, nextTick } from 'vue';
|
|
|
|
|
|
+import { ref, reactive, nextTick, onMounted } from 'vue';
|
|
import api from '/@/api/application'
|
|
import api from '/@/api/application'
|
|
|
|
+import systemApi from '/@/api/system'
|
|
import { ruleRequired } from '/@/utils/validator';
|
|
import { ruleRequired } from '/@/utils/validator';
|
|
import { ElMessage, UploadProps } from 'element-plus';
|
|
import { ElMessage, UploadProps } from 'element-plus';
|
|
import uploadVue from '/@/components/upload/index.vue'
|
|
import uploadVue from '/@/components/upload/index.vue'
|
|
|
|
+
|
|
const emit = defineEmits(['getList']);
|
|
const emit = defineEmits(['getList']);
|
|
const showDialog = ref(false);
|
|
const showDialog = ref(false);
|
|
const formRef = ref();
|
|
const formRef = ref();
|
|
|
|
+const roleList = ref<any[]>([]);
|
|
|
|
+
|
|
const props = defineProps({
|
|
const props = defineProps({
|
|
deptData: {
|
|
deptData: {
|
|
type: Array,
|
|
type: Array,
|
|
default: () => [],
|
|
default: () => [],
|
|
},
|
|
},
|
|
})
|
|
})
|
|
|
|
+
|
|
const baseForm = {
|
|
const baseForm = {
|
|
id: undefined,
|
|
id: undefined,
|
|
appId:'',
|
|
appId:'',
|
|
@@ -80,9 +92,11 @@ const baseForm = {
|
|
status: 1,
|
|
status: 1,
|
|
callbackUri:''
|
|
callbackUri:''
|
|
};
|
|
};
|
|
|
|
+
|
|
const formData = reactive({
|
|
const formData = reactive({
|
|
...baseForm,
|
|
...baseForm,
|
|
});
|
|
});
|
|
|
|
+
|
|
const ruleForm = {
|
|
const ruleForm = {
|
|
name: [ruleRequired('应用名称不能为空')],
|
|
name: [ruleRequired('应用名称不能为空')],
|
|
icon: [ruleRequired('应用图标不能为空')],
|
|
icon: [ruleRequired('应用图标不能为空')],
|
|
@@ -91,6 +105,18 @@ const ruleForm = {
|
|
orgId: [ruleRequired('组织不能为空')],
|
|
orgId: [ruleRequired('组织不能为空')],
|
|
roleId: [ruleRequired('角色不能为空')],
|
|
roleId: [ruleRequired('角色不能为空')],
|
|
};
|
|
};
|
|
|
|
+
|
|
|
|
+// 获取角色列表
|
|
|
|
+const getRoleList = async () => {
|
|
|
|
+ try {
|
|
|
|
+ const res = await systemApi.role.getList({ status: 1 });
|
|
|
|
+ roleList.value = res || [];
|
|
|
|
+ } catch (error) {
|
|
|
|
+ console.error('获取角色列表失败:', error);
|
|
|
|
+ roleList.value = [];
|
|
|
|
+ }
|
|
|
|
+};
|
|
|
|
+
|
|
const onSubmit = async () => {
|
|
const onSubmit = async () => {
|
|
await formRef.value.validate();
|
|
await formRef.value.validate();
|
|
const theApi = formData.id ? api.edit : api.add;
|
|
const theApi = formData.id ? api.edit : api.add;
|
|
@@ -100,9 +126,11 @@ const onSubmit = async () => {
|
|
showDialog.value = false;
|
|
showDialog.value = false;
|
|
emit('getList');
|
|
emit('getList');
|
|
};
|
|
};
|
|
|
|
+
|
|
const handleAvatarSuccess: UploadProps['onSuccess'] = (response) => {
|
|
const handleAvatarSuccess: UploadProps['onSuccess'] = (response) => {
|
|
formData.icon = response
|
|
formData.icon = response
|
|
}
|
|
}
|
|
|
|
+
|
|
const resetForm = async () => {
|
|
const resetForm = async () => {
|
|
Object.assign(formData, { ...baseForm });
|
|
Object.assign(formData, { ...baseForm });
|
|
formRef.value && formRef.value.resetFields();
|
|
formRef.value && formRef.value.resetFields();
|
|
@@ -111,13 +139,19 @@ const resetForm = async () => {
|
|
const open = async (row: any) => {
|
|
const open = async (row: any) => {
|
|
resetForm();
|
|
resetForm();
|
|
showDialog.value = true;
|
|
showDialog.value = true;
|
|
|
|
+ // 获取角色列表
|
|
|
|
+ await getRoleList();
|
|
nextTick(() => {
|
|
nextTick(() => {
|
|
Object.assign(formData, { ...row });
|
|
Object.assign(formData, { ...row });
|
|
console.log(formData);
|
|
console.log(formData);
|
|
-
|
|
|
|
});
|
|
});
|
|
};
|
|
};
|
|
|
|
|
|
|
|
+// 组件挂载时获取角色列表
|
|
|
|
+onMounted(() => {
|
|
|
|
+ getRoleList();
|
|
|
|
+});
|
|
|
|
+
|
|
defineExpose({ open });
|
|
defineExpose({ open });
|
|
</script>
|
|
</script>
|
|
<style scoped>
|
|
<style scoped>
|
|
@@ -125,4 +159,4 @@ defineExpose({ open });
|
|
display: block;
|
|
display: block;
|
|
margin-bottom: 10px;
|
|
margin-bottom: 10px;
|
|
/* 可选,设置间距 */
|
|
/* 可选,设置间距 */
|
|
-}</style>
|
|
|
|
|
|
+}</style>
|