feat : 优化指定用户时该用户的矩阵状态检查

This commit is contained in:
2024-07-03 01:46:13 +08:00
parent b1ac328d9d
commit a7fb633b89
3 changed files with 93 additions and 62 deletions

View File

@@ -56,8 +56,8 @@ export const getUserDetail = (userId) => {
// 操作 // 操作
export const operate = (data, type) => { export const operate = (data, type) => {
// console.log(type ,'type'); // console.log(type ,'type');
if(data.userId && type !== '0') return editUser(data) if (data.userId && type !== '0') return editUser(data)
else if(type == '0') return editUserOA(data) else if (type == '0') return editUserOA(data)
return addUser(data) return addUser(data)
} }
@@ -186,16 +186,23 @@ export const unbindAllUserByPost = (postId) => {
}) })
} }
export const bindAccount=(data)=>{ export const bindAccount = (data) => {
return request({ return request({
url: '/admin/mosr/user/bind/account', url: '/admin/mosr/user/bind/account',
method: 'post', method: 'post',
data data
}) })
} }
export const getBindAccount=(userId)=>{ export const getBindAccount = (userId) => {
return request({ return request({
url: `/admin/mosr/user/bind/account/info/${userId}`, url: `/admin/mosr/user/bind/account/info/${userId}`,
method: 'get' method: 'get'
}) })
} }
export const checkMatrix = (userId) => {
return request({
url: `/admin/mosr/user/matrix?userId=` + userId,
method: 'get'
})
}

View File

@@ -70,8 +70,9 @@
</template> </template>
<script setup> <script setup>
import {ElMessageBox} from "element-plus"; import {ElMessageBox, ElNotification} from "element-plus";
import {getMosrUser} from "@/api/workflow/process-user"; import {getMosrUser} from "@/api/workflow/process-user";
import {checkMatrix} from "../../../../api/user/user";
const props = defineProps({ const props = defineProps({
value: { value: {
@@ -92,6 +93,10 @@ const props = defineProps({
setNullToSelectList: { setNullToSelectList: {
default: false, default: false,
type: Boolean type: Boolean
},
checkMatrix: {
default: false,
type: Boolean
} }
}); });
const radio = ref(0); const radio = ref(0);
@@ -279,9 +284,26 @@ const clearSelected = () => {
}; };
const selectConfirm = () => { const selectConfirm = () => {
//确定按钮 //确定按钮
emit("ok", selectList.value); if (props.checkMatrix){
dataList.value = [] checkMatrix(selectList.value[0].id).then(res=>{
visible.value = false; console.log(res)
if (res.code === 2000){
ElNotification({
title: '提示',
message: res.msg,
type: 'error'
})
}else {
emit("ok", selectList.value);
dataList.value = []
visible.value = false;
}
})
}else {
emit("ok", selectList.value);
dataList.value = []
visible.value = false;
}
}; };
defineExpose({ defineExpose({
showUserPicker showUserPicker

View File

@@ -8,7 +8,7 @@
<el-button size="mini" icon="Plus" type="primary" @click="showSysRolePicker" round> <el-button size="mini" icon="Plus" type="primary" @click="showSysRolePicker" round>
选择人员 选择人员
</el-button> </el-button>
<user-picker title="请选择人员" :multiple="false" ref="sysRolePicker" :v-model="assignedUser" @ok="selectedUser"/> <user-picker :check-matrix="true" title="请选择人员" :multiple="false" ref="sysRolePicker" :v-model="assignedUser" @ok="selectedUser"/>
<!-- <ellipsis :row="3" :user-info="assignedUser"/>--> <!-- <ellipsis :row="3" :user-info="assignedUser"/>-->
<role-items v-model="assignedUser"/> <role-items v-model="assignedUser"/>
</div> </div>
@@ -60,34 +60,34 @@
<!-- <span class="item-desc">发起人自己作为审批人进行审批</span>--> <!-- <span class="item-desc">发起人自己作为审批人进行审批</span>-->
<!-- </div>--> <!-- </div>-->
</el-form-item> </el-form-item>
<el-divider></el-divider> <!-- <el-divider></el-divider>-->
<el-form-item label="审批人为空时" prop="text" class="line-mode"> <!-- <el-form-item label="审批人为空时" prop="text" class="line-mode">-->
<el-radio-group v-model="nodeProps.nobody.handler"> <!-- <el-radio-group v-model="nodeProps.nobody.handler">-->
<el-radio label="TO_PASS">自动通过</el-radio> <!-- <el-radio label="TO_PASS">自动通过</el-radio>-->
<el-radio label="TO_REFUSE">自动驳回</el-radio> <!-- <el-radio label="TO_REFUSE">自动驳回</el-radio>-->
<el-radio label="TO_ADMIN">转交审批管理员</el-radio> <!-- <el-radio label="TO_ADMIN">转交审批管理员</el-radio>-->
<el-radio label="TO_USER">转交到指定人员</el-radio> <!-- <el-radio label="TO_USER">转交到指定人员</el-radio>-->
</el-radio-group> <!-- </el-radio-group>-->
<div style="margin-top: 10px" v-if="nodeProps.nobody.handler === 'TO_USER'"> <!-- <div style="margin-top: 10px" v-if="nodeProps.nobody.handler === 'TO_USER'">-->
<el-button size="mini" icon="Plus" type="primary" @click="showUserPicker()" round> <!-- <el-button size="mini" icon="Plus" type="primary" @click="showUserPicker()" round>-->
选择人员 <!-- 选择人员-->
</el-button> <!-- </el-button>-->
<user-picker title="请指定用户" :multiple="false" ref="toUserPicker" :v-model="nobodyAssignedUser" <!-- <user-picker title="请指定用户" :multiple="false" ref="toUserPicker" :v-model="nobodyAssignedUser"-->
@ok="selectNoSetUser"/> <!-- @ok="selectNoSetUser"/>-->
<ellipsis :row="3" :user-info="nobodyAssignedUser"/> <!-- <ellipsis :row="3" :user-info="nobodyAssignedUser"/>-->
</div> <!-- </div>-->
</el-form-item> <!-- </el-form-item>-->
<div v-if="showMode"> <!-- <div v-if="showMode">-->
<el-divider/> <!-- <el-divider/>-->
<el-form-item label="多人审批时审批方式" prop="text" class="approve-mode"> <!-- <el-form-item label="多人审批时审批方式" prop="text" class="approve-mode">-->
<el-radio-group v-model="nodeProps.mode"> <!-- <el-radio-group v-model="nodeProps.mode">-->
<el-radio label="NEXT">会签 按选择顺序审批每个人必须同意</el-radio> <!-- <el-radio label="NEXT">会签 按选择顺序审批每个人必须同意</el-radio>-->
<el-radio label="AND">会签可同时审批每个人必须同意</el-radio> <!-- <el-radio label="AND">会签可同时审批每个人必须同意</el-radio>-->
<el-radio label="OR">或签有一人同意即可</el-radio> <!-- <el-radio label="OR">或签有一人同意即可</el-radio>-->
</el-radio-group> <!-- </el-radio-group>-->
</el-form-item> <!-- </el-form-item>-->
</div> <!-- </div>-->
<el-divider>高级设置</el-divider> <el-divider>高级设置</el-divider>
<!-- <el-form-item label="✍ 审批同意时是否需要签字" prop="text">--> <!-- <el-form-item label="✍ 审批同意时是否需要签字" prop="text">-->
@@ -99,32 +99,32 @@
<el-form-item label="是否使用矩阵审批" prop="text"> <el-form-item label="是否使用矩阵审批" prop="text">
<el-switch inactive-text="不用" active-text="使用" v-model="nodeProps.matrixApproval"></el-switch> <el-switch inactive-text="不用" active-text="使用" v-model="nodeProps.matrixApproval"></el-switch>
</el-form-item> </el-form-item>
<el-form-item label="审批期限(为 0 则不生效)" prop="timeLimit"> <!-- <el-form-item label="审批期限(为 0 则不生效)" prop="timeLimit">-->
<el-input style="width: 180px;" placeholder="时长" type="number" <!-- <el-input style="width: 180px;" placeholder="时长" type="number"-->
v-model="nodeProps.timeLimit.timeout.value"> <!-- v-model="nodeProps.timeLimit.timeout.value">-->
<el-select style="width: 75px;" v-model="nodeProps.timeLimit.timeout.unit" slot="append" placeholder="请选择" filterable> <!-- <el-select style="width: 75px;" v-model="nodeProps.timeLimit.timeout.unit" slot="append" placeholder="请选择" filterable>-->
<el-option label="天" value="D"></el-option> <!-- <el-option label="天" value="D"></el-option>-->
<el-option label="小时" value="H"></el-option> <!-- <el-option label="小时" value="H"></el-option>-->
</el-select> <!-- </el-select>-->
</el-input> <!-- </el-input>-->
</el-form-item> <!-- </el-form-item>-->
<el-form-item label="审批期限超时后执行" prop="level" v-if="nodeProps.timeLimit.timeout.value > 0"> <!-- <el-form-item label="审批期限超时后执行" prop="level" v-if="nodeProps.timeLimit.timeout.value > 0">-->
<el-radio-group v-model="nodeProps.timeLimit.handler.type"> <!-- <el-radio-group v-model="nodeProps.timeLimit.handler.type">-->
<el-radio label="PASS">自动通过</el-radio> <!-- <el-radio label="PASS">自动通过</el-radio>-->
<el-radio label="REFUSE">自动驳回</el-radio> <!-- <el-radio label="REFUSE">自动驳回</el-radio>-->
<el-radio label="NOTIFY">发送提醒</el-radio> <!-- <el-radio label="NOTIFY">发送提醒</el-radio>-->
</el-radio-group> <!-- </el-radio-group>-->
<div v-if="nodeProps.timeLimit.handler.type === 'NOTIFY'"> <!-- <div v-if="nodeProps.timeLimit.handler.type === 'NOTIFY'">-->
<div style="color:#409EEF; font-size: small">默认提醒当前审批人</div> <!-- <div style="color:#409EEF; font-size: small">默认提醒当前审批人</div>-->
<el-switch inactive-text="循环" active-text="一次" v-model="nodeProps.timeLimit.handler.notify.once"></el-switch> <!-- <el-switch inactive-text="循环" active-text="一次" v-model="nodeProps.timeLimit.handler.notify.once"></el-switch>-->
<span style="margin-left: 20px" v-if="!nodeProps.timeLimit.handler.notify.once"> <!-- <span style="margin-left: 20px" v-if="!nodeProps.timeLimit.handler.notify.once">-->
每隔 <!-- 每隔-->
<el-input-number :min="0" :max="10000" :step="1" size="mini" <!-- <el-input-number :min="0" :max="10000" :step="1" size="mini"-->
v-model="nodeProps.timeLimit.handler.notify.hour"/> <!-- v-model="nodeProps.timeLimit.handler.notify.hour"/>-->
小时提醒一次 <!-- 小时提醒一次-->
</span> <!-- </span>-->
</div> <!-- </div>-->
</el-form-item> <!-- </el-form-item>-->
<!-- <el-form-item label="🙅‍ 如果审批被驳回 👇">--> <!-- <el-form-item label="🙅‍ 如果审批被驳回 👇">-->
<!-- <el-radio-group v-model="nodeProps.refuse.type">--> <!-- <el-radio-group v-model="nodeProps.refuse.type">-->
<!-- <el-radio label="TO_INITIAL">重新开始流程</el-radio>--> <!-- <el-radio label="TO_INITIAL">重新开始流程</el-radio>-->
@@ -223,6 +223,8 @@ import RolePicker from '../common/RolePicker.vue'
import Ellipsis from '../common/Ellipsis.vue' import Ellipsis from '../common/Ellipsis.vue'
import RoleItems from "../common/RoleItems.vue"; import RoleItems from "../common/RoleItems.vue";
import {computed, defineProps} from 'vue' import {computed, defineProps} from 'vue'
import {checkMatrix} from "../../../../api/user/user";
import {ElNotification} from "element-plus";
const processStore = useProcessStore() const processStore = useProcessStore()