feat: 初始化改造

This commit is contained in:
leiqiaochu 2023-09-22 16:24:46 +08:00
parent dd1ff0d018
commit e5388b418f
1 changed files with 86 additions and 0 deletions

View File

@ -1,5 +1,18 @@
<template> <template>
<div class="init-home-role"> <div class="init-home-role">
<div class="built_in_group">
<div>平台角色内置分组</div>
<div class="group">
<div v-for="(item,index) in group" class="group_item" @mouseover="()=>showButton(item)" @mouseleave="()=>hiddenButton(item)">
<j-button block :type="item.selected ? 'primary' : 'default'">{{ item.name }}</j-button>
<div v-if="item.show">
<j-button block @click="()=>selectGroup(item)">{{ item.selected ? '取消选中' : '选中' }}</j-button>
<j-button block >编辑</j-button>
</div>
</div>
<j-button type="text" @click="addGroup">+ 自定义分组</j-button>
</div>
</div>
<j-checkbox-group @change="getCheckValue"> <j-checkbox-group @change="getCheckValue">
<div class="init-home-role-content"> <div class="init-home-role-content">
<div <div
@ -56,6 +69,25 @@
</div> </div>
</j-checkbox-group> </j-checkbox-group>
</div> </div>
<j-modal :visible="showAdd" title="自定义分组" @cancel="showAdd = false">
<j-form layout="vertical" ref="formRef" :model="formData">
<j-form-item
name="name"
label="名称"
:rules="[
{
required: true,
message: '请输入名称',
},
{
max: 64,
message: '最多可输入64个字符',
},
]">
<j-input v-model:value="formData.name"></j-input>
</j-form-item>
</j-form>
</j-modal>
</template> </template>
<script lang="ts" setup> <script lang="ts" setup>
@ -71,6 +103,28 @@ const keys = ref([]);
const getCheckValue = (val: any) => { const getCheckValue = (val: any) => {
keys.value = val; keys.value = val;
}; };
/**
* 获取分组数据
*/
const group = ref([{
name:'默认',
show:false,
selected:false
},{
name:'岗位',
show:false,
selected:false
},{
name:'职位',
show:false,
selected:false
}])
const showAdd = ref(false)
const formData = ref({
name:''
})
/** /**
* 根据菜单找角色 * 根据菜单找角色
*/ */
@ -156,16 +210,48 @@ const addRoleData = async () => {
}); });
}; };
const showButton = (item:any) =>{
item.show = true
}
const hiddenButton = (item:any)=>{
item.show = false
}
const selectGroup = (item:any)=>{
item.selected = !item.selected
}
const addGroup = ()=>{
console.log(showAdd.value)
showAdd.value = true
}
defineExpose({ defineExpose({
submitRole: addRoleData, submitRole: addRoleData,
}); });
</script> </script>
<style lang="less" scoped> <style lang="less" scoped>
.init-home-role { .init-home-role {
.built_in_group{
margin-bottom: 10px;
position: relative;
.group{
display: flex;
position: absolute;
z-index: 999;
.group_item{
width: 100px;
margin-right: 20px;
.button{
display: block;
}
}
}
}
.init-home-role-content { .init-home-role-content {
display: flex; display: flex;
grid-gap: 24px; grid-gap: 24px;
gap: 24px; gap: 24px;
margin-top: 40px;
} }
.role-item-1 { .role-item-1 {
background-image: url(/images/init-home/role1.png); background-image: url(/images/init-home/role1.png);