Merge pull request 'master' (#632) from master into prod

Reviewed-on: http://git.feashow.cn/clay/mosr-web/pulls/632
This commit is contained in:
2024-07-25 14:48:39 +00:00
9 changed files with 53 additions and 34 deletions

View File

@@ -58,7 +58,7 @@
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="24" v-if="title==='apply'||title==='check'"> <el-col :span="24" v-if="title==='apply'||title==='check'">
<el-form-item label="分管领导" :required="true" prop="" <el-form-item label="分管领导"
label-width="125"> label-width="125">
<el-button color="#DED0B2" style="margin-right: 10px" @click="handleShowOptionalChargeLeadershipPicker"> <el-button color="#DED0B2" style="margin-right: 10px" @click="handleShowOptionalChargeLeadershipPicker">
{{ optionalChargeLeadershipList.length !== 0 ? '更改' : getOptionalChargeLeadershipList(optionalChargeLeadershipList) ? '更改' : '请选择' }} {{ optionalChargeLeadershipList.length !== 0 ? '更改' : getOptionalChargeLeadershipList(optionalChargeLeadershipList) ? '更改' : '请选择' }}

View File

@@ -246,7 +246,7 @@
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="24"> <el-col :span="24">
<el-form-item label="分管领导" :required="true" prop="" <el-form-item label="分管领导"
label-width="125"> label-width="125">
<el-button color="#DED0B2" style="margin-right: 10px" @click="handleShowOptionalChargeLeadershipPicker"> <el-button color="#DED0B2" style="margin-right: 10px" @click="handleShowOptionalChargeLeadershipPicker">
{{ optionalChargeLeadershipList.length !== 0 ? '更改' : '请选择' }} {{ optionalChargeLeadershipList.length !== 0 ? '更改' : '请选择' }}

View File

@@ -13,6 +13,7 @@ export const APPROVAL_PROPS = {
generalManager: true, generalManager: true,
president: true, president: true,
duplicateApproval: false, duplicateApproval: false,
optionalChargeLeadership: false,
skipSelf: true, skipSelf: true,
timeLimit: { //边界事件 timeLimit: { //边界事件
timeout: { //超时提醒时间 timeout: { //超时提醒时间

View File

@@ -19,7 +19,7 @@
</el-icon> </el-icon>
</div> </div>
</div> </div>
<div class="arrow" v-if="(index+1)%3!==0&&userInfo.length!==1&&(index+1)!==userInfo.length"> <div class="arrow" v-if="(index+1)%3!==0&&userInfo.length!==1&&(index+1)!==userInfo.length&&showArrow">
<el-icon size="20"> <el-icon size="20">
<Right/> <Right/>
</el-icon> </el-icon>
@@ -49,6 +49,11 @@ const props = defineProps({
mode: { mode: {
type: String, type: String,
default: 'design' default: 'design'
},
//是否显示箭头
showArrow: {
type: Boolean,
default: true
} }
}) })

View File

@@ -7,12 +7,12 @@
</el-icon> </el-icon>
<span>审批人</span> <span>审批人</span>
</div> </div>
<!-- <div @click="addCcNode">--> <div @click="addCcNode">
<!-- <el-icon style="color:rgb(50, 150, 250);">--> <el-icon style="color:rgb(50, 150, 250);">
<!-- <Promotion/>--> <Promotion/>
<!-- </el-icon>--> </el-icon>
<!-- <span>抄送人</span>--> <span>抄送人</span>
<!-- </div>--> </div>
<div @click="addConditionsNode"> <div @click="addConditionsNode">
<el-icon style="color:rgb(21, 188, 131);"> <el-icon style="color:rgb(21, 188, 131);">
<Share/> <Share/>

View File

@@ -106,11 +106,17 @@
<el-form-item label="是否使用矩阵审批" prop="matrixApproval"> <el-form-item label="是否使用矩阵审批" prop="matrixApproval">
<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 v-if="nodeProps.matrixApproval && (nodeProps.assignedType === 'SELF' || nodeProps.assignedType === 'ASSIGN_USER')" label="是否跳过自己" prop="skipSelf"> <el-form-item
v-if="nodeProps.matrixApproval && (nodeProps.assignedType === 'SELF' || nodeProps.assignedType === 'ASSIGN_USER')"
label="是否跳过自己" prop="skipSelf">
<!-- {{nodeProps.skipSelf}}--> <!-- {{nodeProps.skipSelf}}-->
<el-switch inactive-text="不跳过" active-text="跳过" v-model="nodeProps.skipSelf"></el-switch> <el-switch inactive-text="不跳过" active-text="跳过" v-model="nodeProps.skipSelf"></el-switch>
</el-form-item> </el-form-item>
</span> </span>
<el-form-item label="分管领导" prop="optionalChargeLeadership" v-if="nodeProps.matrixApproval">
<el-switch inactive-text="系统" active-text="自选"
v-model="nodeProps.optionalChargeLeadership"></el-switch>
</el-form-item>
<el-form-item label="科创跳过" prop="dstiMatrix"> <el-form-item label="科创跳过" prop="dstiMatrix">
<el-switch inactive-text="审批" active-text="跳过" <el-switch inactive-text="审批" active-text="跳过"
v-model="nodeProps.dstiMatrix"></el-switch> v-model="nodeProps.dstiMatrix"></el-switch>
@@ -123,10 +129,10 @@
<el-switch inactive-text="不审批" active-text="审批" v-model="nodeProps.president"></el-switch> <el-switch inactive-text="不审批" active-text="审批" v-model="nodeProps.president"></el-switch>
</el-form-item> </el-form-item>
</span> </span>
<el-form-item label="重复跳过" prop="duplicateApproval"> <!-- <el-form-item label="重复跳过" prop="duplicateApproval">-->
<el-switch inactive-text="" active-text="" <!-- <el-switch inactive-text="" active-text=""-->
v-model="nodeProps.duplicateApproval"></el-switch> <!-- v-model="nodeProps.duplicateApproval"></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">-->

View File

@@ -1,18 +1,20 @@
<template> <template>
<el-button size="mini" icon="Plus" type="primary" @click="selectUser" round>选择抄送人</el-button> <el-button size="mini" icon="Plus" type="primary" @click="selectUser" round style="margin-bottom: 10px">选择抄送人
<div class="option"> </el-button>
<el-checkbox label="允许发起人添加抄送人" v-model="shouldAdd"></el-checkbox> <!-- <div class="option">-->
</div> <!-- <el-checkbox label="允许发起人添加抄送人" v-model="shouldAdd"></el-checkbox>-->
<!-- </div>-->
<!-- <org-items v-model="select"/>--> <!-- <org-items v-model="select"/>-->
<avatar-ellipsis :row="3" :user-info="assignedUser"/> <avatar-ellipsis :row="3" :user-info="assignedUser" :showArrow="false" />
<user-picker title="请选择抄送人" multiple ref="userPicker" :v-model="assignedUser" @ok="selectedUser"/> <user-picker title="请选择抄送人" multiple ref="userPicker" v-model:value="assignedUser" @ok="selectedUser"/>
</template> </template>
<script setup> <script setup>
import {computed, defineProps} from 'vue' import {computed, defineProps} from 'vue'
import UserPicker from "../common/UserPicker.vue"; import UserPicker from "../common/UserPicker.vue";
import AvatarEllipsis from "../common/AvatarEllipsis.vue"; import AvatarEllipsis from "../common/AvatarEllipsis.vue";
const userPicker=ref()
const userPicker = ref()
const props = defineProps({ const props = defineProps({
config: { config: {
type: Object, type: Object,
@@ -41,16 +43,16 @@ const selectUser = () => {
userPicker.value.showUserPicker() userPicker.value.showUserPicker()
} }
const selectedUser = (select) => { const selectedUser = (select) => {
let userInfoList = [] // let userInfoList = []
for (let val of select) { // for (let val of select) {
let userInfo = { // let userInfo = {
id: val.id, // id: val.id,
name: val.name, // name: val.name,
avatar: val.avatar, // avatar: val.avatar,
} // }
userInfoList.push(userInfo) // userInfoList.push(userInfo)
} // }
assignedUser.value = userInfoList assignedUser.value = select
} }
</script> </script>

View File

@@ -1,6 +1,6 @@
<template> <template>
<node :title="config.name" :show-error="showError" :select-user="selectUser" :mode="mode" :content="content" :node-id="config.id" <node :title="config.name" :show-error="showError" :select-user="selectUser" :mode="mode" :content="content" :node-id="config.id"
:error-info="errorInfo" :show-avatar="true" :user-info="config.props.assignedUser" :error-info="errorInfo" :show-avatar="true" :user-info="config.props.assignedUser" nodeType="carbonCopyRecipient"
@selected="emit('selected')" @delNode="emit('delNode')" @insertNode="type => emit('insertNode', type)" @selected="emit('selected')" @delNode="emit('delNode')" @insertNode="type => emit('insertNode', type)"
placeholder="请设置抄送人" :header-bgc="headerBgc" :header-icon="Promotion"/> placeholder="请设置抄送人" :header-bgc="headerBgc" :header-icon="Promotion"/>
</template> </template>

View File

@@ -18,12 +18,12 @@
<template v-if="selectUser.show && mode === 'view'"> <template v-if="selectUser.show && mode === 'view'">
<div class="avatar_button"> <div class="avatar_button">
<avatar-ellipsis :row="3" v-if="userInfo.length > 0" :mode="mode" :user-info="userInfo"/> <avatar-ellipsis :row="3" v-if="userInfo.length > 0" :mode="mode" :user-info="userInfo"/>
<el-button type="primary" :icon="Plus" circle/> <!-- <el-button type="primary" :icon="Plus" circle/>-->
</div> </div>
</template> </template>
<template v-else-if="showAvatar"> <template v-else-if="showAvatar">
<span class="placeholder" v-if="userInfo.length === 0">{{ placeholder }}</span> <span class="placeholder" v-if="userInfo.length === 0">{{ placeholder }}</span>
<avatar-ellipsis :row="3" v-if="userInfo.length > 0" :user-info="userInfo" :mode="mode"/> <avatar-ellipsis :row="3" v-if="userInfo.length > 0" :user-info="userInfo" :mode="mode" :show-arrow="nodeType!=='carbonCopyRecipient'"/>
</template> </template>
<template v-else> <template v-else>
<span class="placeholder" v-if="(content || '').trim() === ''">{{ placeholder }}</span> <span class="placeholder" v-if="(content || '').trim() === ''">{{ placeholder }}</span>
@@ -146,6 +146,11 @@ const props = defineProps({
mode: { mode: {
type: String, type: String,
default: 'design' default: 'design'
},
//节点类型,例如抄送人(区别该节点,去掉抄送人之间的箭头)
nodeType: {
type: String,
default: ''
} }
}) })