人员信息

This commit is contained in:
hayu 2024-10-21 18:56:13 +08:00
parent 5aef5f20f6
commit 28c16471c7
3 changed files with 170 additions and 65 deletions

View File

@ -25,15 +25,99 @@
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="项目部名称" align="center" prop="orgName" :show-overflow-tooltip="true" /> <el-table-column label="项目部名称" align="center" prop="orgName" :show-overflow-tooltip="true" />
<el-table-column label="项目经理" align="center" prop="projectManager" :show-overflow-tooltip="true" /> <el-table-column label="项目经理" align="center" :show-overflow-tooltip="true">
<el-table-column label="安全员" align="center" prop="safetyOfficer" :show-overflow-tooltip="true" /> <template slot-scope="scope">
<el-table-column label="质检员" align="center" prop="qualityInspector" :show-overflow-tooltip="true" /> <div v-if="scope.row.projectManager === '兼职'"
<el-table-column label="项目总工" align="center" prop="chiefEngineer" :show-overflow-tooltip="true" /> style="color: #1890FF; cursor: pointer"
<el-table-column label="机械员" align="center" prop="mechanicalStaff" :show-overflow-tooltip="true" /> @click="handleAllocation(scope.row,1)">
<el-table-column label="资料员" align="center" prop="documentStaff" :show-overflow-tooltip="true" /> {{ scope.row.projectManager }}
<el-table-column label="施工员" align="center" prop="constructionStaff" :show-overflow-tooltip="true" /> </div>
<el-table-column label="材料员" align="center" prop="materialStaff" :show-overflow-tooltip="true" /> <span v-else>{{ scope.row.projectManager }}</span>
<el-table-column label="其他" align="center" prop="other" :show-overflow-tooltip="true" /> </template>
</el-table-column>
<el-table-column label="安全员" align="center" :show-overflow-tooltip="true">
<template slot-scope="scope">
<div v-if="scope.row.safetyOfficer === '兼职'"
style="color: #1890FF; cursor: pointer"
@click="handleAllocation(scope.row,2)">
{{ scope.row.safetyOfficer }}
</div>
<span v-else>{{ scope.row.safetyOfficer }}</span>
</template>
</el-table-column>
<el-table-column label="质检员" align="center" :show-overflow-tooltip="true" >
<template slot-scope="scope">
<div v-if="scope.row.qualityInspector === '兼职'"
style="color: #1890FF; cursor: pointer"
@click="handleAllocation(scope.row,3)">
{{ scope.row.qualityInspector }}
</div>
<span v-else>{{ scope.row.qualityInspector }}</span>
</template>
</el-table-column>
<el-table-column label="项目总工" align="center" :show-overflow-tooltip="true" >
<template slot-scope="scope">
<div v-if="scope.row.chiefEngineer === '兼职'"
style="color: #1890FF; cursor: pointer"
@click="handleAllocation(scope.row,4)">
{{ scope.row.chiefEngineer }}
</div>
<span v-else>{{ scope.row.chiefEngineer }}</span>
</template>
</el-table-column>
<el-table-column label="机械员" align="center" :show-overflow-tooltip="true" >
<template slot-scope="scope">
<div v-if="scope.row.mechanicalStaff === '兼职'"
style="color: #1890FF; cursor: pointer"
@click="handleAllocation(scope.row,5)" v-hasPermi="['dept:eight:query']">
{{ scope.row.mechanicalStaff }}
</div>
<span v-else>{{ scope.row.mechanicalStaff }}</span>
</template>
</el-table-column>
<el-table-column label="资料员" align="center" :show-overflow-tooltip="true">
<template slot-scope="scope">
<div v-if="scope.row.documentStaff === '兼职'"
style="color: #1890FF; cursor: pointer"
@click="handleAllocation(scope.row,6)">
{{ scope.row.documentStaff }}
</div>
<span v-else>{{ scope.row.documentStaff }}</span>
</template>
</el-table-column>
<el-table-column label="施工员" align="center" :show-overflow-tooltip="true">
<template slot-scope="scope">
<div v-if="scope.row.constructionStaff === '兼职'"
style="color: #1890FF; cursor: pointer"
@click="handleAllocation(scope.row,7)">
{{ scope.row.constructionStaff }}
</div>
<span v-else>{{ scope.row.constructionStaff }}</span>
</template>
</el-table-column>
<el-table-column label="材料员" align="center" :show-overflow-tooltip="true" >
<template slot-scope="scope">
<div v-if="scope.row.materialStaff === '兼职'"
style="color: #1890FF; cursor: pointer"
@click="handleAllocation(scope.row,8)">
{{ scope.row.materialStaff }}
</div>
<span v-else>{{ scope.row.materialStaff }}</span>
</template>
</el-table-column>
<el-table-column label="其他" align="center" :show-overflow-tooltip="true" >
<template slot-scope="scope">
<div v-if="scope.row.other === '兼职'"
style="color: #1890FF; cursor: pointer"
@click="handleAllocation(scope.row,9)">
{{ scope.row.other }}
</div>
<span v-else>{{ scope.row.other }}</span>
</template>
</el-table-column>
</el-table> </el-table>
@ -46,39 +130,31 @@
/> />
<!-- 添加或修改参数配置对话框 --> <!-- 添加或修改参数配置对话框 -->
<el-dialog :title="title" :visible.sync="open" width="500px" append-to-body> <el-dialog :title="title" :visible.sync="open" width="650px" append-to-body>
<el-form ref="form" :model="form" :rules="rules" label-width="80px"> <el-form ref="form" :model="form" :rules="rules" label-width="80px">
<el-form-item label="部门名称" prop="orgName"> <!-- 使用v-for遍历MoreOrgDataList -->
<el-input v-model="form.orgName" :disabled="true" /> <el-row v-for="(item, index) in MoreOrgDataList" :key="index">
</el-form-item> <el-col :span="12">
<el-form-item label="角色名称" prop="deptRoleName"> <el-form-item label="兼职人员:" prop="orgName" label-width="90px">
<el-input v-model="form.deptRoleName" :disabled="true" /> <el-input :value="item.userName" :disabled="true" />
</el-form-item> </el-form-item>
</el-col>
<el-form-item label="人员" > <el-col :span="12">
<el-tree <el-form-item label="兼职角色:" prop="deptRoleName" label-width="90px">
class="tree-border" <el-input :value="item.deptRoleName" :disabled="true" />
:data="staffOptions" </el-form-item>
show-checkbox </el-col>
ref="staff" </el-row>
node-key="id"
empty-text="加载中,请稍候"
:props="defaultProps"
default-expand-all
:default-checked-keys="defaultCheckedKeys"
></el-tree>
</el-form-item>
</el-form> </el-form>
<div slot="footer" class="dialog-footer"> <div slot="footer" class="dialog-footer" align="center">
<el-button type="primary" @click="submitForm"> </el-button> <el-button @click="cancels">关闭</el-button>
<el-button @click="cancel"> </el-button>
</div> </div>
</el-dialog> </el-dialog>
</div> </div>
</template> </template>
<script> <script>
import {getOrgEightRoleDetail} from "@/api/process/eightMembers"; import {getOrgEightRoleDetail,getMoreOrgData} from "@/api/process/eightMembers";
import { treeselect as staffTreeselect, roleStaffTreeselect } from "@/api/process/tree"; import { treeselect as staffTreeselect, roleStaffTreeselect } from "@/api/process/tree";
@ -100,6 +176,7 @@ export default {
total: 0, total: 0,
// //
typeList: [], typeList: [],
MoreOrgDataList:[],
// //
title: "", title: "",
// //
@ -111,6 +188,7 @@ export default {
parentOrgName:undefined, parentOrgName:undefined,
lackOrgId:this.$route.query.lackOrgId lackOrgId:this.$route.query.lackOrgId
}, },
paramsQuery:{},
// //
staffOptions: [], staffOptions: [],
// id // id
@ -161,21 +239,29 @@ export default {
this.resetForm("queryForm"); this.resetForm("queryForm");
this.handleQuery(); this.handleQuery();
}, },
/** 分配人员按钮操作 */ /** 按钮操作 */
handleAllocation(row) { handleAllocation(row,deptRoleId) {
this.reset(); this.reset();
this.getStaffTreeselect(row); this.getDialogData(row,deptRoleId);
this.form = row; this.form = row;
this.open = true; this.open = true;
this.title = "分配人员";
}, },
/** 查询员工树结构 */ /** 查询员工树结构 */
getStaffTreeselect(data) { getDialogData(data,deptRoleId) {
staffTreeselect(data).then(response => { console.log(data.orgId)
this.staffOptions = response.data; this.paramsQuery={
orgId:data.orgId,
deptRoleId:deptRoleId
}
getMoreOrgData(this.paramsQuery).then(response => {
this.MoreOrgDataList = response.data;
}); });
}, },
cancels(){
this.open = false;
this.MoreOrgDataList=[];
},
/** 提交按钮 */ /** 提交按钮 */
submitForm: function() { submitForm: function() {

View File

@ -46,7 +46,7 @@
<el-button type="primary" size="mini" @click="openDialog">批量修改</el-button> <el-button type="primary" size="mini" @click="openDialog">批量修改</el-button>
</el-form-item> </el-form-item>
</el-form> </el-form>
<el-row :gutter="10" class="mb8"> <el-row :gutter="10" class="mb8">
<!-- <el-col :span="1.5"> <!-- <el-col :span="1.5">
<el-button <el-button
@ -54,12 +54,12 @@
plain plain
icon="el-icon-download" icon="el-icon-download"
size="mini" size="mini"
@click="handleExport" @click="handleExport"
>导出</el-button> >导出</el-button>
</el-col> --> </el-col> -->
<right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar> <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
</el-row> </el-row>
<el-table v-loading="loading" :data="typeList" @selection-change="handleSelectionChange"> <el-table v-loading="loading" :data="typeList" @selection-change="handleSelectionChange">
<el-table-column type="selection" width="55" align="center" /> <el-table-column type="selection" width="55" align="center" />
<el-table-column label="序号" align="center" width="80" type="index"> <el-table-column label="序号" align="center" width="80" type="index">
@ -113,7 +113,7 @@
<el-table-column label="打卡地址" align="center" prop="offWorkAttAddress" :show-overflow-tooltip="true" /> <el-table-column label="打卡地址" align="center" prop="offWorkAttAddress" :show-overflow-tooltip="true" />
<el-table-column label="异常备注" align="center" prop="offWorkErrorRemake" :show-overflow-tooltip="true" /> <el-table-column label="异常备注" align="center" prop="offWorkErrorRemake" :show-overflow-tooltip="true" />
</el-table> </el-table>
<pagination <pagination
v-show="total>0" v-show="total>0"
:total="total" :total="total"
@ -122,7 +122,7 @@
@pagination="getList" @pagination="getList"
/> />
<el-dialog title="批量修改" :visible.sync="open" width="1200px" append-to-body> <el-dialog title="批量修改" :visible.sync="open" width="1200px" append-to-body>
<el-table v-loading="loading" :data="dialogList" width="100%" height="500px"> <el-table v-loading="loading" :data="dialogList" width="100%" height="500px">
<el-table-column label="序号" type="index" width="55" align="center" fixed/> <el-table-column label="序号" type="index" width="55" align="center" fixed/>
<el-table-column label="姓名" align="center" prop="userName" fixed/> <el-table-column label="姓名" align="center" prop="userName" fixed/>
@ -134,7 +134,7 @@
</el-table-column> </el-table-column>
<el-table-column label="修改上班时间" align="center" prop="toWorkAttCurrentTime" width="240"> <el-table-column label="修改上班时间" align="center" prop="toWorkAttCurrentTime" width="240">
<template slot-scope="scope"> <template slot-scope="scope">
<el-date-picker <el-date-picker
v-model="scope.row.toWorkAttCurrentTime" :clearable="false" v-model="scope.row.toWorkAttCurrentTime" :clearable="false"
type="datetime" value-format="yyyy-MM-dd HH:mm:ss" style="width: 95%" type="datetime" value-format="yyyy-MM-dd HH:mm:ss" style="width: 95%"
placeholder="选择上班时间"> placeholder="选择上班时间">
@ -164,7 +164,7 @@
<el-table-column label="修改下班时间" align="center" prop="offWorkAttCurrentTime" width="240"> <el-table-column label="修改下班时间" align="center" prop="offWorkAttCurrentTime" width="240">
<template slot-scope="scope"> <template slot-scope="scope">
<el-date-picker <el-date-picker
v-model="scope.row.offWorkAttCurrentTime" :clearable="false" v-model="scope.row.offWorkAttCurrentTime" :clearable="false"
type="datetime" value-format="yyyy-MM-dd HH:mm:ss" style="width: 95%" type="datetime" value-format="yyyy-MM-dd HH:mm:ss" style="width: 95%"
placeholder="选择下班时间"> placeholder="选择下班时间">
@ -197,16 +197,16 @@
<el-button @click="cancel"> </el-button> <el-button @click="cancel"> </el-button>
</div> </div>
</el-dialog> </el-dialog>
</div> </div>
</template> </template>
<script> <script>
import { getDetailsList,updateAttDetails } from "@/api/report/attReport"; import { getDetailsList,updateAttDetails } from "@/api/report/attReport";
import { listDept } from "@/api/system/dept"; import { listDept } from "@/api/system/dept";
import Treeselect from "@riophae/vue-treeselect"; import Treeselect from "@riophae/vue-treeselect";
import "@riophae/vue-treeselect/dist/vue-treeselect.css"; import "@riophae/vue-treeselect/dist/vue-treeselect.css";
export default { export default {
name: "Dict", name: "Dict",
dicts: ['att_status'], dicts: ['att_status'],
@ -255,10 +255,10 @@
const now = new Date(); const now = new Date();
const dayOfWeek = now.getDay(); const dayOfWeek = now.getDay();
const dayOffset = dayOfWeek === 0 ? -6 : 1 - dayOfWeek; const dayOffset = dayOfWeek === 0 ? -6 : 1 - dayOfWeek;
const monday = new Date(now); const monday = new Date(now);
monday.setDate(monday.getDate() + dayOffset); monday.setDate(monday.getDate() + dayOffset);
const sunday = new Date(monday); const sunday = new Date(monday);
sunday.setDate(sunday.getDate() + 6); sunday.setDate(sunday.getDate() + 6);
this.dateRange[0]=monday.toISOString().split('T')[0]; this.dateRange[0]=monday.toISOString().split('T')[0];
@ -331,7 +331,7 @@
this.$message({ message: '请先勾选数据!', type: 'warning' }) this.$message({ message: '请先勾选数据!', type: 'warning' })
} }
}, },
submitEdit(){ submitEdit(){
let paramList = [] let paramList = []
var index = this.dialogList.findIndex(item => {return !item.toErrorRemake||item.toErrorRemake==""||!item.offErrorRemake||item.offErrorRemake==""}) var index = this.dialogList.findIndex(item => {return !item.toErrorRemake||item.toErrorRemake==""||!item.offErrorRemake||item.offErrorRemake==""})
console.log(index) console.log(index)
@ -353,7 +353,7 @@
offErrorRemake:item.offErrorRemake, offErrorRemake:item.offErrorRemake,
} }
paramList.push(obj) paramList.push(obj)
}) })
// console.log(paramList) // console.log(paramList)
updateAttDetails(paramList).then(response => { updateAttDetails(paramList).then(response => {
if(response.code==200){ if(response.code==200){
@ -370,14 +370,14 @@
cancel(){ cancel(){
this.open=false; this.open=false;
}, },
/** 导出按钮操作 */ /** 导出按钮操作 */
handleExport() { handleExport() {
this.download('system/dict/type/export', { this.download('system/dict/type/export', {
...this.queryParams ...this.queryParams
}, `type_${new Date().getTime()}.xlsx`) }, `type_${new Date().getTime()}.xlsx`)
}, },
} }
}; };
</script> </script>

View File

@ -291,7 +291,7 @@ export default {
openReason: false, openReason: false,
dialogList:[], dialogList:[],
// //
dateRange: this.getDefaultDateRange(), dateRange:[],
reasonStr:undefined, reasonStr:undefined,
deptOptions: [], deptOptions: [],
// //
@ -309,15 +309,33 @@ export default {
console.log(this.$route.query.param) console.log(this.$route.query.param)
this.queryParams.userName=this.$route.query.param this.queryParams.userName=this.$route.query.param
} }
this.getWeekDates();
this.getDeptList(); this.getDeptList();
this.getList(); this.getList();
}, },
methods: { methods: {
getDefaultDateRange() { getWeekDates() {
const today = new Date(); const now = new Date();
const start = new Date(today.toISOString().split('T')[0]); // const dayOfWeek = now.getDay();
const end = new Date(today.toISOString().split('T')[0]); // const dayOffset = dayOfWeek === 0 ? -6 : 1 - dayOfWeek;
return [start, end];
const monday = new Date(now);
monday.setDate(monday.getDate() + dayOffset);
const sunday = new Date(monday);
sunday.setDate(sunday.getDate() + 6);
this.dateRange[0]=monday.toISOString().split('T')[0];
this.dateRange[1]=sunday.toISOString().split('T')[0];
},
formatDate(dateString){
const date = new Date(dateString); //
const year = date.getFullYear(); //
const month = String(date.getMonth() + 1).padStart(2, '0'); // 0
const day = String(date.getDate()).padStart(2, '0'); //
const weekdays = ['星期天', '星期一', '星期二', '星期三', '星期四', '星期五', '星期六']; //
const weekday = weekdays[date.getDay()]; //
return `${year}-${month}-${day} ${weekday}`; //
}, },
getDeptList() { getDeptList() {
listDept().then(response => { listDept().then(response => {
@ -360,6 +378,7 @@ export default {
}, },
/** 重置按钮操作 */ /** 重置按钮操作 */
resetQuery() { resetQuery() {
this.getWeekDates();
this.resetForm("queryForm"); this.resetForm("queryForm");
this.handleQuery(); this.handleQuery();
}, },