Merge pull request 'fix : 修复人员取消功能' (#718) from dd into master

Reviewed-on: http://git.feashow.cn/clay/mosr-web/pulls/718
This commit is contained in:
2024-08-16 16:13:39 +00:00
6 changed files with 115 additions and 66 deletions

View File

@@ -42,7 +42,7 @@
{{ item.name }}
</div>
<user-picker :multiple="false" ref="projectChargePersonUserPicker" title="请选择项目负责人"
v-model:value="projectChargePersonUserList" @ok="projectChargePersonUserPickerOk"/>
v-model:value="projectChargePersonUserList" @ok="projectChargePersonUserPickerOk" @cancelOrClear="projectChargePersonUserPickerCancel"/>
</el-form-item>
</el-col>
<el-col :span="6" v-if="title==='apply'">
@@ -55,23 +55,21 @@
{{ item.name }}{{index != getProjectPerson(projectPersonUserList)?.length - 1 ? '' : ''}}
</div>
<user-picker :multiple="true" ref="projectPersonUserPicker" title="请选择项目成员"
v-model:value="projectPersonUserList" @ok="projectPersonUserPickerOk"/>
v-model:value="projectPersonUserList" @ok="projectPersonUserPickerOk" @cancelOrClear="projectPersonUserPickerCancel"/>
</el-form-item>
</el-col>
<el-col :span="6" v-if="title==='apply'||title==='check'">
<el-form-item label="部门分管领导" :label-width="title==='check'?110:115"
>
<el-form-item label="部门分管领导" :label-width="title==='check'?110:115">
<el-button color="#DED0B2" style="margin-right: 10px" @click="handleShowOptionalChargeLeadershipPicker">
{{
optionalChargeLeadershipList?.length !== 0 ? '更改' : getOptionalChargeLeadershipList(optionalChargeLeadershipList) ? '更改' : '请选择'
}}
</el-button>
<div v-for="(item,index) in getOptionalChargeLeadershipList(optionalChargeLeadershipList)" :key="item.id"
>
{{ item.name }}{{index != getProjectPerson(projectPersonUserList)?.length - 1 ? '' : ''}}
<div v-for="(item,index) in getOptionalChargeLeadershipList(optionalChargeLeadershipList)" :key="item.id">
{{ item.name }}{{index != getOptionalChargeLeadershipList(optionalChargeLeadershipList)?.length - 1 ? '' : ''}}
</div>
<user-picker :multiple="true" ref="optionalChargeLeadershipPickerRef" title="请选择部门分管领导"
v-model:value="optionalChargeLeadershipList" @ok="optionalChargeLeaderPickerOk"/>
v-model:value="optionalChargeLeadershipList" @ok="optionalChargeLeaderPickerOk" @cancelOrClear="optionalChargeLeaderPickerCancel"/>
</el-form-item>
</el-col>
<el-col :span="24" v-if="preProcessShow === 'EDIT'">
@@ -342,7 +340,14 @@ const handleShowOptionalChargeLeadershipPicker = () => {
const optionalChargeLeaderPickerOk = (userList) => {
optionalChargeLeadershipList.value = userList
localStorage.setItem('optionalChargeLeadershipList', JSON.stringify(optionalChargeLeadershipList.value))
if(userList?.length>0){
localStorage.setItem('optionalChargeLeadershipList', JSON.stringify(optionalChargeLeadershipList.value))
}else {
localStorage.removeItem('optionalChargeLeadershipList')
}
}
const optionalChargeLeaderPickerCancel = (userList) => {
optionalChargeLeadershipList.value = userList
}
const clickToPreview = (row) => {
@@ -471,19 +476,29 @@ const handleShowProjectChargePersonTable = () => {
}
const projectChargePersonUserPickerOk = (userList) => {
projectChargePersonUserList.value = userList
localStorage.setItem('projectChargePersonUserList', JSON.stringify(projectChargePersonUserList.value))
if(userList?.length>0){
localStorage.setItem('projectChargePersonUserList', JSON.stringify(projectChargePersonUserList.value))
}else {
localStorage.removeItem('projectPersonUserList')
}
}
const handleShowProjectPersonTable = () => {
projectPersonUserPicker.value.showUserPicker()
}
const projectChargePersonUserPickerCancel=(userList)=>{
projectChargePersonUserList.value = userList
}
const projectPersonUserPickerCancel=(userList)=>{
projectPersonUserList.value = userList
}
const projectPersonUserPickerOk = (userList) => {
projectPersonUserList.value = userList
localStorage.setItem('projectPersonUserList', JSON.stringify(userList))
// let userIds = []
// for (const user of userList) {
// userIds.push(user.id)
// }
if(userList?.length>0){
localStorage.setItem('projectPersonUserList', JSON.stringify(userList))
}else {
localStorage.removeItem('projectPersonUserList')
}
}
const getPreProcessList = () => {
loading.value = true
@@ -604,6 +619,7 @@ const getFileParam = (item) => {
}
}
const handleSubmit = async () => {
console.log(' projectPersonUserList.value', projectPersonUserList.value)
let files = []
if (props.mode === 'resubmit') {
attachment.value.allFileList.forEach(item => {

View File

@@ -106,7 +106,7 @@
</el-row>
</el-form>
<user-picker :multiple="false" ref="userPicker" title="请选择研发人员" v-model:value="userList"
@ok="selectedResearchPersonnel"
@ok="selectedResearchPersonnel" @cancelOrClear="researchPersonnelPickerCancel"
:setNullToSelectList="true" :isResearch="true"/>
<div style="width:100%;text-align: center;padding: 10px">
@@ -232,12 +232,12 @@ const selectProject=(row,index)=>{
//先选择人员, 再选择项目: 再添加一行,重复操作
const projectIdArray = formData.value.tableData.map(item => item.projectId)
const researchPersonnelIdArray = formData.value.tableData.map(item => item.researchPersonnelId)
console.log('projectIdArray',projectIdArray)
console.log('researchPersonnelIdArray',researchPersonnelIdArray)
// console.log('projectIdArray',projectIdArray)
// console.log('researchPersonnelIdArray',researchPersonnelIdArray)
const projectNumObj = getSelectProjectAndResearchPersonnelNum(projectIdArray)
const researchPersonnelNumObj = getSelectProjectAndResearchPersonnelNum(researchPersonnelIdArray)
let repeatProjectName=getProjectName(row.projectId)
console.log('currentRow.value',currentRow.value)
// console.log('currentRow.value',currentRow.value)
for (let researchPersonnelIdKey in researchPersonnelNumObj) {//先判断人员是否重复
if(currentRow.value.projectId){
if(researchPersonnelNumObj[researchPersonnelIdKey]>1){
@@ -263,21 +263,52 @@ const selectProject=(row,index)=>{
// }
// }
}
const selectedResearchPersonnel = (select) => {
if (!select || select.length === 0) {
return
const researchPersonnelPickerCancel = (select) => {
console.log('select',select)
if(select.length>0){
formData.value.tableData?.forEach((item, index) => {
if (index === currentIndex.value) {
item.researchPersonnelId = select[0].id
item.researchPersonnel = select[0].name
item.companyName = select[0].companyName
item.accountType = select[0].accountType
}
})
}else{
formData.value.tableData?.forEach((item, index) => {
if (index === currentIndex.value) {
item.researchPersonnelId = ''
item.researchPersonnel = ''
item.companyName = ''
item.accountType = ''
}
})
}
}
const selectedResearchPersonnel = (select) => {
if(select.length>0){
formData.value.tableData?.forEach((item, index) => {
if (index === currentIndex.value) {
item.researchPersonnelId = select[0].id
item.researchPersonnel = select[0].name
item.companyName = select[0].companyName
item.accountType = select[0].accountType
}
})
}else{
formData.value.tableData?.forEach((item, index) => {
if (index === currentIndex.value) {
item.researchPersonnelId = ''
item.researchPersonnel = ''
item.companyName = ''
item.accountType = ''
}
})
}
formData.value.tableData.forEach((item, index) => {
if (index === currentIndex.value) {
item.researchPersonnelId = select[0].id
item.researchPersonnel = select[0].name
item.companyName = select[0].companyName
item.accountType = select[0].accountType
}
})
//以下是为" 同一项目下,同一人不能分摊多次 "
const projectIdArray = formData.value.tableData.map(item => item.projectId)
const researchPersonnelIdArray = formData.value.tableData.map(item => item.researchPersonnelId)
const projectIdArray = formData.value.tableData?.map(item => item.projectId)
const researchPersonnelIdArray = formData.value.tableData?.map(item => item.researchPersonnelId)
const projectNumObj = getSelectProjectAndResearchPersonnelNum(projectIdArray)
const researchPersonnelNumObj = getSelectProjectAndResearchPersonnelNum(researchPersonnelIdArray)
let repeatProjectName=''

View File

@@ -173,11 +173,11 @@
<el-button color="#DED0B2" style="margin-right: 10px" @click="handleShowOptionalChargeLeadershipPicker">
{{ optionalChargeLeadershipList.length !== 0 ? '更改' : '请选择' }}
</el-button>
<div v-for="item in optionalChargeLeadershipList" :key="item.id" style="margin-right: 5px">
{{ item.name }}
<div v-for="(item,index) in optionalChargeLeadershipList" :key="item.id" style="margin-right: 5px">
{{ item.name }}{{index != optionalChargeLeadershipList?.length - 1 ? '' : ''}}
</div>
<user-picker :multiple="true" ref="optionalChargeLeadershipPickerRef" title="请选择分管领导"
v-model:value="optionalChargeLeadershipList" @ok="optionalChargeLeaderPickerOk"/>
<user-picker :multiple="true" ref="optionalChargeLeadershipPickerRef" title="请选择分管领导" @cancelOrClear="optionalChargeLeaderPickerOkOrCancel"
v-model:value="optionalChargeLeadershipList" @ok="optionalChargeLeaderPickerOkOrCancel"/>
</el-form-item>
</el-col>
</el-row>
@@ -365,7 +365,7 @@ const handleShowOptionalChargeLeadershipPicker = () => {
optionalChargeLeadershipPickerRef.value.showUserPicker()
}
const optionalChargeLeaderPickerOk = (userList) => {
const optionalChargeLeaderPickerOkOrCancel = (userList) => {
optionalChargeLeadershipList.value = userList
}

View File

@@ -8,7 +8,7 @@
<Ttsup :modelValue="chooseUserInfo()" @clickCopyUser="chooseUser"/>
</el-form-item>
</el-form>
<user-picker :multiple="true" ref="userPicker" title="请选择抄送人员" v-model:value="userList" @ok="selected"/>
<user-picker :multiple="true" ref="userPicker" title="请选择抄送人员" v-model:value="userList" @ok="ccPersonPickerOkOrCancel" @cancelOrClear="ccPersonPickerOkOrCancel"/>
<AttachmentUpload ref="attachment" label="阶段变更附件" :showTable="showTable" v-model:otherFileList="otherFileList"
@getAttachment="getAttachment" v-model:singleList="singleList" :showSingleTable="showSingleTable"
@getOtherFile="getOtherFile" :showFileList="true" :formData="formData" tag="阶段变更"
@@ -381,7 +381,8 @@ const chooseUserInfo = () => {
return null
}
}
const selected = (select) => {
const ccPersonPickerOkOrCancel = (select) => {
console.log('select',select)
userList.value = select
}
const handleSubmit = async () => {

View File

@@ -69,7 +69,6 @@
</el-col>
</el-row>
</el-form>
<user-picker :multiple="false" ref="userPicker" title="请选择项目负责人" @ok="selected" v-model:value="userList"/>
<div class="oper-page-btn">
<el-button color="#DED0B2" @click="handleSubmit">提交</el-button>
<el-button @click="handleBack">返回</el-button>
@@ -78,12 +77,9 @@
</template>
<script setup lang="jsx">
import {ElMessage, ElNotification} from "element-plus";
import {ElNotification} from "element-plus";
import {updateLedger} from "@/api/project-manage";
import {getBaseInfoApi} from "@/components/steps/api";
import {ref} from "vue";
import UserPicker from "@/views/workflow/process/common/UserPicker.vue";
import {useTagsView} from '@/stores/tagsview.js'
import {searchUpdateLedgerData} from "@/api/project-manage";
@@ -109,18 +105,6 @@ const userList = ref([])
const showPersonnelPicker = () => {
userPicker.value.showUserPicker()
}
const selected = (select) => {
if (!select || select.length === 0) {
return
}
for (const selectElement of select) {
tableForm.value.projectChargePerson = selectElement.id
tableForm.value.projectChargePersonName = selectElement.name
tableForm.value.companyName = selectElement.companyName
tableForm.value.accountType = selectElement.accountType
}
userList.value = select
}
const disabledDate = (time) => {
return time.getTime() < new Date(tableForm.value.startTime).getTime();
}

View File

@@ -15,7 +15,7 @@
<div class="tree">
<el-tree :data="dataList" ref="tree" :props="defaultProps" empty-text="" node-key="value"
:default-expanded-keys="expandedKeys" lazy :load="loadNode" accordion
@node-click="handleClick">
@node-click="handleClickTreeNode">
<template #default="{ node, data }">
<div class="tree-node">
<div v-if="data.type === 0" style="display: flex;align-items: center;padding: 3px 0">
@@ -54,7 +54,7 @@
<UserFilled/>
</el-icon>
{{ selectItem.name }}-{{ selectItem.companyName }}
<el-icon @click="noSelected(selectItem)" size="20" style="margin-left: 10px;cursor: pointer;">
<el-icon @click="removeSingleSelected(selectItem)" size="20" style="margin-left: 10px;cursor: pointer;">
<CircleClose/>
</el-icon>
</div>
@@ -62,7 +62,7 @@
</div>
</div>
<div class="footer">
<el-button size="mini" @click="visible = false"> </el-button>
<el-button size="mini" @click="cancelUserPicker"> </el-button>
<el-button size="mini" color="#DED0B2" @click="selectConfirm"> </el-button>
</div>
</el-dialog>
@@ -113,6 +113,8 @@ const title = ref("请选择");
const selectList = ref([]);
const filterText = ref("");
const dataList = ref([]);
const isRemoveSingleSelected = ref(false);
const originallySelectedList = ref([]);
const tree = ref([]);
const isSearch = ref(false);
const expandedKeys = ref([]);
@@ -171,7 +173,7 @@ async function loadNode(node, resolve) {
if (data.id) {
params = {
chooseId: data.id,
isResearch: props.isResearch
isResearch: props.isResearch
}
} else {
params = {
@@ -190,7 +192,7 @@ async function loadNode(node, resolve) {
}
const handleClick = (item, data) => {
const handleClickTreeNode = (item, data) => {
selectItem = item;
if (isSearch.value && item.type !== 0) {
filterText.value = ""
@@ -224,24 +226,25 @@ const handleClick = (item, data) => {
selectList.value = [item];
}
}
localStorage.setItem('originallySelectedList', JSON.stringify(selectList.value))
};
const noSelected = (selectItem) => {
const removeSingleSelected = (selectItem) => {
//右侧的x
for (let i = 0; i < selectList.value.length; i++) {
if(selectItem.value){
for (let i = 0; i < selectList.value?.length; i++) {
if (selectItem.value) {
if (selectList.value[i].value === selectItem.value) {
selectList.value.splice(i, 1);
break;
}
}else{
} else {
if (selectList.value[i].id === selectItem.id) {
selectList.value.splice(i, 1);
break;
}
}
}
isRemoveSingleSelected.value = true
selectItem.selected = false;
};
const clearSelected = () => {
@@ -251,9 +254,23 @@ const clearSelected = () => {
cancelButtonText: "取消",
type: "warning"
}).then(() => {
isRemoveSingleSelected.value = true
selectList.value = [];
emit("cancelOrClear", selectList.value);
});
};
const cancelUserPicker = () => {
if (isRemoveSingleSelected.value&&localStorage.getItem('originallySelectedList')) {
selectList.value = JSON.parse(localStorage.getItem('originallySelectedList'))
}else{
selectList.value=[]
}
emit("cancelOrClear", selectList.value);
visible.value = false;
nextTick(()=>{
isRemoveSingleSelected.value=false
})
}
const selectConfirm = () => {
//确定按钮
if (props.checkMatrix) {