feat : 表单权限处理

This commit is contained in:
clay
2024-05-30 22:31:47 +08:00
parent 7a5fbd501e
commit ee890c0e80
8 changed files with 71 additions and 39 deletions

View File

@@ -18,6 +18,13 @@ export const getConfigDetails = (configId) => {
method: 'get' method: 'get'
}) })
} }
// 获取参数配置表详情
export const getConfigByKey = (configKey) => {
return request({
url: '/admin/config/key/' + configKey,
method: 'get'
})
}
// 新增参数配置表 // 新增参数配置表
export const addConfig = (data) => { export const addConfig = (data) => {

View File

@@ -68,4 +68,11 @@ export function getTypeOption() {
}) })
} }
export function getFromPerm(processKey) {
return request({
url: "/workflow/process/definition/from/perm/"+processKey,
method: "get",
})
}

View File

@@ -3,12 +3,12 @@
<Hamburger></Hamburger> <Hamburger></Hamburger>
<Breadcrumb></Breadcrumb> <Breadcrumb></Breadcrumb>
<div class="right-bar"> <div class="right-bar">
<!-- <bell-socket/>--> <!-- <bell-socket/>-->
<div class="user-box"> <div class="user-box">
<div> <div>
<!-- <img :src="userInfo.avatar" alt="" @click.stop="handleVisitedP">--> <!-- <img :src="userInfo.avatar" alt="" @click.stop="handleVisitedP">-->
<span @click.stop="handleVisitedP">欢迎回来{{userInfo.userName}}</span> <span @click.stop="handleVisitedP">欢迎回来{{ userInfo.userName }}</span>
</div> </div>
<div class="person" v-if="visitedP"> <div class="person" v-if="visitedP">
<ul> <ul>
<li @click="handleToAuth">个人中心</li> <li @click="handleToAuth">个人中心</li>
@@ -25,8 +25,6 @@ import {useRouter} from 'vue-router';
import Breadcrumb from './Breadcrumb.vue'; import Breadcrumb from './Breadcrumb.vue';
import Hamburger from './Hamburger.vue'; import Hamburger from './Hamburger.vue';
import {useAuthStore} from '@/stores/userstore.js' import {useAuthStore} from '@/stores/userstore.js'
import BellSocket from "./BellSocket.vue";
import {getUserInfo} from "../../api/login";
import {usePermisstionStroe} from '@/stores/permisstion' import {usePermisstionStroe} from '@/stores/permisstion'
const authStore = useAuthStore() const authStore = useAuthStore()
@@ -41,10 +39,8 @@ onMounted(() => {
onBeforeUnmount(() => { onBeforeUnmount(() => {
document.removeEventListener('click', nullBlockClick) document.removeEventListener('click', nullBlockClick)
}) })
const setUserInfo = () => { const setUserInfo = () => {
getUserInfo().then(res=>{ userInfo.value = authStore.userinfo
userInfo.value = res.data.user
})
} }
const nullBlockClick = () => { const nullBlockClick = () => {
visitedP.value = false visitedP.value = false
@@ -74,22 +70,26 @@ const handleLogout = () => {
align-items: center; align-items: center;
background-color: #fff; background-color: #fff;
border-radius: 10px; border-radius: 10px;
.right-bar { .right-bar {
margin-left: auto; margin-left: auto;
display: flex; display: flex;
justify-content: flex-start; justify-content: flex-start;
align-items: center; align-items: center;
.user-box{ .user-box {
cursor: pointer; cursor: pointer;
margin-left: 10px; margin-left: 10px;
position: relative; position: relative;
>div:first-child{
display:flex; > div:first-child {
display: flex;
align-items: center; align-items: center;
>span{
> span {
margin-left: 5px; margin-left: 5px;
} }
img { img {
width: 40px; width: 40px;
height: 40px; height: 40px;

View File

@@ -2,14 +2,14 @@
<div v-loading="loading" class="add-block"> <div v-loading="loading" class="add-block">
<baseTitle title="需求征集信息录入"></baseTitle> <baseTitle title="需求征集信息录入"></baseTitle>
<el-form :model="formData" inline class="query-form" ref="demandForm" :rules="rules"> <el-form :model="formData" inline class="query-form" ref="demandForm" :rules="rules">
<el-form-item v-if="checkFormPrem('requirementName')" label="名称" prop="requirementName"> <el-form-item label="名称" prop="requirementName">
<el-input v-model="formData.requirementName" placeholder="请输入名称" clearable></el-input> <el-input v-model="formData.requirementName" placeholder="请输入名称" clearable></el-input>
</el-form-item> </el-form-item>
<el-form-item v-if="checkFormPrem('companyIds')" label="所属公司" prop="companyIds"> <el-form-item label="所属公司" prop="companyIds">
<el-tree-select v-model="formData.companyIds" :data="companyOption" style="width: 100%;" <el-tree-select v-model="formData.companyIds" :data="companyOption" style="width: 100%;"
filterable clearable :check-strictly="true" multiple/> filterable clearable :check-strictly="true" multiple/>
</el-form-item> </el-form-item>
<el-form-item v-if="checkFormPrem('collectType')" label="征集类型" prop="collectType"> <el-form-item label="征集类型" prop="collectType">
<el-select v-model="formData.collectType" placeholder="征集类型" clearable filterable> <el-select v-model="formData.collectType" placeholder="征集类型" clearable filterable>
<el-option <el-option
v-for="item in typeOption" v-for="item in typeOption"
@@ -31,7 +31,7 @@
</el-form-item> </el-form-item>
</el-form> </el-form>
<baseTitle title="征集说明"></baseTitle> <baseTitle title="征集说明"></baseTitle>
<Tinymce v-if="checkFormPrem('collectExplain') && showTinymce" image-url="/notice/file" file-url="/notice/file" <Tinymce v-if="showTinymce" image-url="/notice/file" file-url="/notice/file"
v-model:value="formData.collectExplain" height="300" /> v-model:value="formData.collectExplain" height="300" />
<baseTitle title="申请文件"></baseTitle> <baseTitle title="申请文件"></baseTitle>
<file-upload v-if="checkFormPrem('fileList')" @getFile="getFile"/> <file-upload v-if="checkFormPrem('fileList')" @getFile="getFile"/>

View File

@@ -16,6 +16,7 @@
<!-- </div>--> <!-- </div>-->
</div> </div>
</div> </div>
<el-dialog v-model="validVisible" title="设置项检查"> <el-dialog v-model="validVisible" title="设置项检查">
<el-steps align-center :active="validStep" finish-status="success"> <el-steps align-center :active="validStep" finish-status="success">
@@ -54,7 +55,6 @@
<script setup> <script setup>
import {getProcessDefinitionInfo, addProcessDefinition} from "@/api/workflow/process-definition.js"; import {getProcessDefinitionInfo, addProcessDefinition} from "@/api/workflow/process-definition.js";
import ProcessDesign from '@/views/workflow/process/ProcessDesign.vue' import ProcessDesign from '@/views/workflow/process/ProcessDesign.vue'
import FormDesign from '@/views/workflow/form/FormDesign.vue'
import ProcessSetting from "./ProcessSetting.vue"; import ProcessSetting from "./ProcessSetting.vue";
import Ellipsis from '@/views/workflow/process/common/Ellipsis.vue' import Ellipsis from '@/views/workflow/process/common/Ellipsis.vue'
import {getCurrentInstance} from '@vue/runtime-core'; import {getCurrentInstance} from '@vue/runtime-core';
@@ -117,7 +117,7 @@ const init = () => {
const loadInitFrom = () => { const loadInitFrom = () => {
let design = { let design = {
processDefinitionKey: 'pro' + getRandomId(), processDefinitionKey: "",
deploymentName: "未命名表单", deploymentName: "未命名表单",
processKey: '', processKey: '',
// logo: { // logo: {

View File

@@ -1,21 +1,22 @@
<template> <template>
<el-input v-model="processData.deploymentName" placeholder="请输入流程名称"/> <div v-if="processData.processDefinitionKey">
<!-- <div v-if="!processData.processDefinitionKey">--> <p>
<el-select v-model="processData.processKey" placeholder="请选择流程环节"> 流程名称: {{ processData.deploymentName }}
</p>
</div>
<div v-if="!processData.processDefinitionKey">
<el-select v-model="processData.processKey" @change="processKeyChange" placeholder="请选择流程环节">
<el-option v-for="item in optionList" :label="item.label" :value="item.value"/> <el-option v-for="item in optionList" :label="item.label" :value="item.value"/>
</el-select> </el-select>
<!-- </div>--> </div>
<!-- <div v-else>-->
<!-- {{processData.processName}}-->
<!-- </div>-->
流程设置{{ processData.deploymentName }}
</template> </template>
<script setup> <script setup>
import {useProcessStore} from '@/stores/processStore.js' import {useProcessStore} from '@/stores/processStore.js'
import {computed, defineExpose} from "vue"; import {computed, defineExpose} from "vue";
import {getTypeOption} from "@/api/workflow/process-definition"; import { ElNotification} from "element-plus";
import {getTypeOption, getFromPerm} from "@/api/workflow/process-definition";
const processStore = useProcessStore() const processStore = useProcessStore()
@@ -27,17 +28,31 @@ const processData = computed(() => {
const validate = () => { const validate = () => {
console.log("validate")
return [] return []
} }
const init = () => { const init = () => {
getTypeOption().then(res => { getTypeOption().then(res => {
console.log(res)
optionList.value = res.data optionList.value = res.data
}) })
} }
const processKeyChange = () => {
getFromPerm(processData.value.processKey).then(res => {
if (res.code === 1000) {
processData.value.processFromPerms = res.data
} else {
ElNotification({
title: '提示',
message: res.msg,
type: res.code === 1000 ? 'success' : 'error'
})
}
})
}
defineExpose({ defineExpose({
validate validate
}) })

View File

@@ -91,12 +91,15 @@ const formPermsLoadMosr = (oldPermMap, perms) => {
old.required = perm.required; old.required = perm.required;
formPerms.value.push(old); formPerms.value.push(old);
} else { } else {
formPerms.value.push({ console.log(perm)
id: perm.id, //todo ,id 就是字段名称 if (perm.id === 'fileList'){
title: perm.title, formPerms.value.push({
required: perm.required, id: perm.id, //todo ,id 就是字段名称
perm: nowNode.value.type === "ROOT" ? "E" : "R" title: perm.title,
}); required: perm.required,
perm: nowNode.value.type === "ROOT" ? "E" : "R"
});
}
} }
}) })
} }