出行人把申请人自动带入

This commit is contained in:
lSun 2024-12-16 15:07:42 +08:00
parent 2a509f1214
commit 6c68d33004
4 changed files with 323 additions and 75 deletions

View File

@ -56,7 +56,7 @@
<el-table-column label="职务" align="center" prop="postName" :show-overflow-tooltip="true" width="240"/>
<el-table-column label="所属部门" align="center" prop="orgName" :show-overflow-tooltip="true" width="240">
</el-table-column>
<el-table-column label="出行人" align="center" prop="travelersName" width="100"/>
<el-table-column label="出行人" align="center" prop="travelersName" :show-overflow-tooltip="true" width="100"/>
<el-table-column label="出差开始时间" align="center" prop="leaveStartDate" :show-overflow-tooltip="true" width="180">
<template slot-scope="scope">
@ -92,6 +92,14 @@
@click="handleDelete(scope.row)"
>删除
</el-button>
<el-button
size="mini" type="primary"
v-hasPermi="['flow:evection:list']"
@click="handleDetails(scope.row)"
>详情
</el-button>
</template>
</el-table-column>
</el-table>
@ -260,6 +268,115 @@
<el-button @click="cancel"> </el-button>
</div>
</el-dialog>
<!-- 添加或修改参数配置对话框 -->
<el-dialog :title="title" :visible.sync="openDetails" width="900px" append-to-body>
<el-form ref="form" :model="form" :rules="rules" label-width="130px">
<el-row>
<el-col :span="12">
<el-form-item label="姓名:" prop="userName">
<el-input v-model="form.userName" :disabled="true"/>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="职位:" prop="postName">
<el-input v-model="form.postName" :disabled="true"/>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="12">
<el-form-item label="所属部门:" prop="orgId">
<el-input v-model="form.orgName" :disabled="true"/>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="出行人:" prop="orgHeadUserIdList">
<el-input v-model="form.travelersName" :disabled="true"/>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="12">
<el-form-item label="出差开始时间:" prop="leaveStartDate">
<el-date-picker
v-model="form.leaveStartDate" :disabled="true" :clearable="false"
type="date" value-format="yyyy-MM-dd" style="width: 100%;" @change="handleDateChange"
placeholder="出差开始时间" :pickerOptions="startPickerOptions">
</el-date-picker>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="出差结束时间:" prop="leaveEndDate">
<el-date-picker
v-model="form.leaveEndDate" :disabled="true" :clearable="false"
type="date" value-format="yyyy-MM-dd" style="width: 100%;" @change="handleDateChange"
placeholder="出差结束时间" :pickerOptions="endPickerOptions">
</el-date-picker>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="12">
<el-form-item label="出差时长(天)" prop="leaveDuration">
<el-input v-model="form.leaveDuration" :disabled="true" />
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="地点:" prop="location">
<el-input v-model="form.location" :disabled="true" />
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="12">
<el-form-item label="是否请示领导同意:" prop="isAgree">
<el-radio-group v-model="form.isAgree" :disabled="true">
<el-radio
v-for="item in isAgreeList"
:key="item.id"
:label="item.id"
>{{item.name}}</el-radio>
</el-radio-group>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="代理主持工作人员:" prop="hostUserId">
<el-input v-model="form.hostUserName" :disabled="true"/>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="24">
<el-form-item label="出差事由:" prop="leaveReason">
<el-input type="textarea" :disabled="true" v-model="form.leaveReason" maxlength="200"></el-input>
</el-form-item>
</el-col>
</el-row>
<el-row >
<el-col :span="24">
<el-form-item label="备注:" prop="remark">
<el-input type="textarea" :disabled="true" v-model="form.remark" maxlength="200"></el-input>
</el-form-item>
</el-col>
</el-row>
</el-form>
<div slot="footer" class="dialog-footer">
<el-button @click="cancel"> </el-button>
</div>
</el-dialog>
</div>
</template>
@ -306,6 +423,8 @@ export default {
title: "",
//
open: false,
openDetails: false,
isEdit: false,
timeStatusList: [{id: '1', name: "上午"}, {id: '2', name: "下午"}],
//
@ -438,6 +557,7 @@ export default {
//
cancel() {
this.open = false;
this.openDetails = false;
this.reset();
},
//
@ -474,6 +594,10 @@ export default {
handleAdd() {
this.reset();
const Id = this.$store.state.user.id;
let idNums = [Id+""];
this.$set(this.form,"orgHeadUserIdList",idNums)
getPostName(Id).then(response => {
this.form.postName = response.data.postName;
this.open = true;
@ -504,6 +628,33 @@ export default {
this.title = "编辑";
});
},
/** 详情按钮操作 */
handleDetails(row) {
this.reset();
const Id = row.uuid;
getEvection(Id).then(response => {
this.form = response.data;
let num = [];
let numArr = this.form.hostUserId.split(",")
numArr.forEach(function (item){
num.push(parseInt(item));
})
this.$set(this.form,"hostUserId",num)
if(this.form.travelers!=null){
let arr = this.form.travelers.split(',')
let nums = [];
arr.forEach(function (item){
nums.push(item.trim() + "");
})
this.$set(this.form,"orgHeadUserIdList",nums)
}
this.openDetails = true;
this.title = "详情";
});
},
//
changDept(e) {
console.log(e)
@ -523,8 +674,8 @@ export default {
})
},
getSelectedUserNames() {
const selectedUserIds = this.form.orgHeadUserIdList;
getSelectedUserNames(filteredIds) {
const selectedUserIds = filteredIds;
const selectedUsers = this.personOptions.filter(option => selectedUserIds.includes(option.userIds));
const selectedUserNames = selectedUsers.map(user => user.userName);
return selectedUserNames.join(', ');
@ -547,8 +698,26 @@ export default {
console.log(this.form)
this.$refs["form"].validate(valid => {
if (valid) {
var list = this.form.hostUserId.join(",");
var lists = this.form.orgHeadUserIdList.join(",");
var idsArray = lists.split(",")
const Ids = this.$store.state.user.id+"";
const containsIds = idsArray.includes(Ids);
var filteredIds;
if(containsIds){
//
filteredIds = idsArray.filter(id => id !== Ids);
}else{
this.$modal.msgError("出行人需要添加申请人");
return ;
}
console.log(filteredIds)
this.form.travelers = filteredIds.join(",");
console.log(this.form.travelers)
var nameList = this.getSelectedUserNames(filteredIds);
this.form.travelersName = nameList;
var list = this.form.hostUserId.join(",");
//
const userIdArray = list.split(',');
// 00
@ -558,18 +727,11 @@ export default {
this.$modal.msgError("选择’/‘后不能在选择其他人员");
return ;
}
this.form.hostUserId = list;
var hostNameList = this.getSelectedUserNameEvecTion();
this.form.hostUserName = hostNameList;
var lists = this.form.orgHeadUserIdList.join(",");
this.form.travelers = lists;
var nameList = this.getSelectedUserNames();
this.form.travelersName = nameList;
if (this.form.id != undefined) {
this.form.examineStatus = 0
updateEvection(this.form).then(response => {

View File

@ -161,7 +161,7 @@
</el-row>
<el-row>
<el-col :span="8">
<el-col :span="12">
<el-form-item label="出差开始时间:" prop="leaveStartDate">
<el-date-picker
v-model="form.leaveStartDate" :clearable="false"
@ -170,7 +170,7 @@
</el-date-picker>
</el-form-item>
</el-col>
<el-col :span="4">
<!-- <el-col :span="4">
<el-form-item prop="leaveStartInterval" label-width="0px">
<el-select v-model="form.leaveStartInterval" style="width: 80%;margin-left: 10px;"
@change="handleDateChange">
@ -182,8 +182,8 @@
/>
</el-select>
</el-form-item>
</el-col>
<el-col :span="8">
</el-col>-->
<el-col :span="12">
<el-form-item label="出差结束时间:" prop="leaveEndDate">
<el-date-picker
v-model="form.leaveEndDate" :clearable="false"
@ -192,7 +192,7 @@
</el-date-picker>
</el-form-item>
</el-col>
<el-col :span="4">
<!-- <el-col :span="4">
<el-form-item prop="leaveEndInterval" label-width="0px">
<el-select v-model="form.leaveEndInterval" style="width: 80%;margin-left: 10px;"
@change="handleDateChange">
@ -204,7 +204,7 @@
/>
</el-select>
</el-form-item>
</el-col>
</el-col>-->
</el-row>
<el-row>
<el-col :span="12">
@ -318,7 +318,7 @@
</el-row>
<el-row>
<el-col :span="8">
<el-col :span="12">
<el-form-item label="休假开始时间:" prop="leaveStartDate">
<el-date-picker
v-model="form.leaveStartDate" :clearable="false"
@ -327,7 +327,7 @@
</el-date-picker>
</el-form-item>
</el-col>
<el-col :span="4">
<!-- <el-col :span="4">
<el-form-item prop="leaveStartInterval" label-width="0px">
<el-select v-model="form.leaveStartInterval" style="width: 80%;margin-left: 10px;"
@change="handleDateChange">
@ -339,8 +339,8 @@
/>
</el-select>
</el-form-item>
</el-col>
<el-col :span="8">
</el-col>-->
<el-col :span="12">
<el-form-item label="休假结束时间:" prop="leaveEndDate">
<el-date-picker
v-model="form.leaveEndDate" :clearable="false"
@ -349,7 +349,7 @@
</el-date-picker>
</el-form-item>
</el-col>
<el-col :span="4">
<!-- <el-col :span="4">
<el-form-item prop="leaveEndInterval" label-width="0px">
<el-select v-model="form.leaveEndInterval" style="width: 80%;margin-left: 10px;"
@change="handleDateChange">
@ -361,7 +361,7 @@
/>
</el-select>
</el-form-item>
</el-col>
</el-col>-->
</el-row>
<el-row>
<el-col :span="12">
@ -459,17 +459,7 @@ export default {
total: 0,
//
tableList: [
{
userName:"张三",
orgName:"公司机关/分公司机关/×××项目部",
createTime:"2024-08-28 1728",
leaveStartDate:"2024-08-29",
leaveStartInterval:"1",
leaveEndDate:"2024-08-29",
leaveEndInterval:"2",
leaveDuration:"1",
examineStatus:"0",
}
],
//
title: "",
@ -516,9 +506,9 @@ export default {
leaveStartDate: [
{ required: true, message: "外出开始时间不能为空", trigger: "blur" }
],
leaveStartInterval: [
{ required: true, message: "不能为空", trigger: "change" }
],
// leaveStartInterval: [
// { required: true, message: "", trigger: "change" }
// ],
leaveEndDate: [
{ required: true, message: "外出结束时间不能为空", trigger: "blur" }
],
@ -580,6 +570,8 @@ export default {
this.dateRange[1] = formattedDate;
},
handleDateChange(){
this.form.leaveStartInterval = 1;
this.form.leaveEndInterval = 2;
if(this.form.leaveStartDate&&this.form.leaveEndDate){
let daysNumber = this.daysBetween(this.form.leaveStartDate,this.form.leaveEndDate)
// console.log(daysNumber)
@ -810,20 +802,63 @@ export default {
this.$refs["form"].validate(valid => {
if (valid) {
console.log(this.form)
var list = this.form.hostUserId.join(",");
this.form.hostUserId = list;
var lists = this.form.orgHeadUserIdList.join(",");
this.form.travelers = lists;
this.form.examineStatus = 0
updateEvection(this.form).then(response => {
this.$modal.msgSuccess("修改成功");
this.open = false;
this.getList();
});
var idsArray = lists.split(",")
const Ids = this.$store.state.user.id+"";
const containsIds = idsArray.includes(Ids);
var filteredIds;
if(containsIds){
//
filteredIds = idsArray.filter(id => id !== Ids);
}else{
this.$modal.msgError("出行人需要添加申请人");
return ;
}
this.form.travelers = filteredIds.join(",");
var nameList = this.getSelectedUserNames(filteredIds);
this.form.travelersName = nameList;
var list = this.form.hostUserId.join(",");
//
const userIdArray = list.split(',');
// 00
const containsZero = userIdArray.includes('0');
const containsOtherValues = userIdArray.some(id => id !== '0');
if (containsZero && containsOtherValues) {
this.$modal.msgError("选择’/‘后不能在选择其他人员");
return ;
}
this.form.hostUserId = list;
var hostNameList = this.getSelectedUserNameEvecTion();
this.form.hostUserName = hostNameList;
this.form.examineStatus = 0
updateEvection(this.form).then(response => {
this.$modal.msgSuccess("修改成功");
this.open = false;
this.getList();
});
}
});
},
getSelectedUserNames(filteredIds) {
const selectedUserIds = filteredIds;
const selectedUsers = this.personOptions.filter(option => selectedUserIds.includes(option.userIds));
const selectedUserNames = selectedUsers.map(user => user.userName);
return selectedUserNames.join(', ');
},
getSelectedUserNameEvecTion() {
const selectedUserIdsStr = this.form.hostUserId;
//
const selectedUserIds = selectedUserIdsStr.split(',').map(id => parseInt(id.trim(), 10));
const selectedUsers = this.userList.filter(option => selectedUserIds.includes(option.userId));
const selectedUserNames = selectedUsers.map(user => user.userName);
return selectedUserNames.join(', ');
},
handleBack(row) {
this.$modal.confirm('是否确认撤回该申请?').then(function() {
let param = {

View File

@ -42,7 +42,7 @@
<el-table-column label="所属部门" align="center" prop="orgName" :show-overflow-tooltip="true" width="240">
</el-table-column>
<el-table-column label="数据来源" align="center" prop="source" width="100"/>
<el-table-column label="出行人" align="center" prop="travelersName" width="100"/>
<el-table-column label="出行人" align="center" prop="travelersName" :show-overflow-tooltip="true" width="100"/>
<el-table-column label="出差开始时间" align="center" prop="leaveStartDate" :show-overflow-tooltip="true" width="180">
<template slot-scope="scope">
@ -414,7 +414,7 @@ export default {
this.$set(this.form,"orgHeadUserIdList",nums)
}
this.open = true;
this.title = "编辑";
this.title = "详情";
});
},

View File

@ -209,7 +209,7 @@
</el-row>
<el-row>
<el-col :span="8">
<el-col :span="12">
<el-form-item label="出差开始时间:" prop="leaveStartDate">
<el-date-picker
v-model="form.leaveStartDate" :clearable="false"
@ -218,7 +218,7 @@
</el-date-picker>
</el-form-item>
</el-col>
<el-col :span="4">
<!-- <el-col :span="4">
<el-form-item prop="leaveStartInterval" label-width="0px">
<el-select v-model="form.leaveStartInterval" style="width: 80%;margin-left: 10px;"
@change="handleDateChange">
@ -230,8 +230,8 @@
/>
</el-select>
</el-form-item>
</el-col>
<el-col :span="8">
</el-col>-->
<el-col :span="12">
<el-form-item label="出差结束时间:" prop="leaveEndDate">
<el-date-picker
v-model="form.leaveEndDate" :clearable="false"
@ -240,7 +240,7 @@
</el-date-picker>
</el-form-item>
</el-col>
<el-col :span="4">
<!-- <el-col :span="4">
<el-form-item prop="leaveEndInterval" label-width="0px">
<el-select v-model="form.leaveEndInterval" style="width: 80%;margin-left: 10px;"
@change="handleDateChange">
@ -252,7 +252,7 @@
/>
</el-select>
</el-form-item>
</el-col>
</el-col>-->
</el-row>
<el-row>
<el-col :span="12">
@ -351,17 +351,17 @@ export default {
totalDialog: 0,
//
tableList: [
{
userName:"张三",
orgName:"公司机关/分公司机关/×××项目部",
createTime:"2024-08-28 1728",
leaveStartDate:"2024-08-29",
leaveStartInterval:"1",
leaveEndDate:"2024-08-29",
leaveEndInterval:"2",
leaveDuration:"1",
examineStatus:"0",
}
// {
// userName:"",
// orgName:"//×××",
// createTime:"2024-08-28 1728",
// leaveStartDate:"2024-08-29",
// leaveStartInterval:"1",
// leaveEndDate:"2024-08-29",
// leaveEndInterval:"2",
// leaveDuration:"1",
// examineStatus:"0",
// }
],
tableDialogList:[],
searchConditions: {},
@ -406,9 +406,9 @@ export default {
leaveStartDate: [
{ required: true, message: "外出开始时间不能为空", trigger: "blur" }
],
leaveStartInterval: [
/*leaveStartInterval: [
{ required: true, message: "不能为空", trigger: "change" }
],
],*/
leaveEndDate: [
{ required: true, message: "外出结束时间不能为空", trigger: "blur" }
],
@ -481,6 +481,8 @@ export default {
this.dateRange[1] = formatDate(lastMonthLastDay);
},
handleDateChange() {
this.form.leaveStartInterval = 1;
this.form.leaveEndInterval = 2;
if (this.form.leaveStartDate && this.form.leaveEndDate) {
let daysNumber = this.daysBetween(this.form.leaveStartDate, this.form.leaveEndDate)
// console.log(daysNumber)
@ -538,6 +540,7 @@ export default {
cancel() {
this.open = false;
this.isEdit = false;
this.isView = false;
this.reset();
},
//
@ -566,6 +569,7 @@ export default {
resetQuery() {
this.dateRange = [];
this.resetForm("queryForm");
this.getMonthDates();
this.handleQuery();
},
//
@ -685,19 +689,66 @@ export default {
if (valid) {
console.log(this.form)
var list = this.form.hostUserId.join(",");
//
const userIdArray = list.split(',');
// 00
const containsZero = userIdArray.includes('0');
const containsOtherValues = userIdArray.some(id => id !== '0');
if (containsZero && containsOtherValues) {
this.$modal.msgError("选择’/‘后不能在选择其他人员");
return ;
}
this.form.hostUserId = list;
var hostNameList = this.getSelectedUserNameEvecTion();
this.form.hostUserName = hostNameList;
var lists = this.form.orgHeadUserIdList.join(",");
this.form.travelers = lists;
this.form.examineStatus = 0
updateEvection(this.form).then(response => {
this.$modal.msgSuccess("修改成功");
this.isView = false;
this.getList();
});
var idsArray = lists.split(",")
const Ids = this.$store.state.user.id+"";
const containsIds = idsArray.includes(Ids);
var filteredIds;
if(containsIds){
//
filteredIds = idsArray.filter(id => id !== Ids);
}else{
this.$modal.msgError("出行人需要添加申请人");
return ;
}
console.log(filteredIds)
this.form.travelers = filteredIds.join(",");
console.log(this.form.travelers)
var nameList = this.getSelectedUserNames(filteredIds);
this.form.travelersName = nameList;
this.form.examineStatus = 0
updateEvection(this.form).then(response => {
this.$modal.msgSuccess("修改成功");
this.isView = false;
this.getList();
});
}
});
},
getSelectedUserNames(filteredIds) {
const selectedUserIds = filteredIds;
const selectedUsers = this.personOptions.filter(option => selectedUserIds.includes(option.userIds));
const selectedUserNames = selectedUsers.map(user => user.userName);
return selectedUserNames.join(', ');
},
getSelectedUserNameEvecTion() {
const selectedUserIdsStr = this.form.hostUserId;
//
const selectedUserIds = selectedUserIdsStr.split(',').map(id => parseInt(id.trim(), 10));
const selectedUsers = this.userList.filter(option => selectedUserIds.includes(option.userId));
const selectedUserNames = selectedUsers.map(user => user.userName);
return selectedUserNames.join(', ');
},
handleBack(row) {
this.$modal.confirm('是否确认撤回该申请?').then(function() {
let param = {