daogangjilu

This commit is contained in:
shijing 2023-11-21 09:25:43 +08:00
parent 36321f144d
commit 5d125d0875
8 changed files with 1827 additions and 666 deletions

View File

@ -400,4 +400,30 @@ export default {
}, },
}, },
teammember:{
list: {
name: "班组列表",
req: async function(data){
return await http.get(
`${config.API_URL}/mtm/teammember/`,
data
);
}
},
create: {
name: "创建",
req: async function(data){
return await http.post(
`${config.API_URL}/mtm/teammember/`,
data);
}
},
delete: {
name: "删除",
req: async function(id){
return await http.delete(
`${config.API_URL}/mtm/teammember/${id}/`);
}
},
}
} }

View File

@ -1961,17 +1961,17 @@ const routes = [
}, },
"component": "bigScreen/index_photon" "component": "bigScreen/index_photon"
}, },
{ // {
"path": "/bigScreenP2", // "path": "/bigScreenP2",
"name": "bigScreenP2", // "name": "bigScreenP2",
"meta": { // "meta": {
"title": "数据看板2", // "title": "数据看板2",
"icon": "el-icon-platform", // "icon": "el-icon-platform",
"perms": ["bigScreenP"], // "perms": ["bigScreenP"],
"fullpage": true, // "fullpage": true,
}, // },
"component": "bigScreen/textIndex" // "component": "bigScreen/textIndex"
}, // },
//车间看板 //车间看板
{ {
"path": "/bigScreenP_10", "path": "/bigScreenP_10",

File diff suppressed because it is too large Load Diff

View File

@ -104,7 +104,7 @@
<div class="border_corner border_right_top"></div> <div class="border_corner border_right_top"></div>
<div class="border_corner border_left_bottom"></div> <div class="border_corner border_left_bottom"></div>
<div class="border_corner border_right_bottom"></div> <div class="border_corner border_right_bottom"></div>
<p class="title">10车间</p> <p class="title">{{dialogData.deptName}}</p>
<div class="infoCantier"> <div class="infoCantier">
<div class="leftBlock"> <div class="leftBlock">
<el-progress width="50" type="circle" color="rgba(54, 217, 187, 1)" :percentage="25" <el-progress width="50" type="circle" color="rgba(54, 217, 187, 1)" :percentage="25"
@ -113,22 +113,22 @@
</div> </div>
<div class="rightBlock"> <div class="rightBlock">
<div> <div>
<p></p> <p>昨日产</p>
<p> <span class="numberFont">390</span><span class="numberUnit"></span></p> <p> <span class="numberFont">390</span><span class="numberUnit"></span></p>
</div> </div>
<div class="countWrap"> <div class="countWrap">
<div> <div>
<p>总量</p> <p>预制管</p>
<p> <span class="numberFont">120</span><span class="numberUnit"></span></p> <p> <span class="numberFont">390</span><span class="numberUnit"></span></p>
</div> </div>
<div> <div>
<p>总量</p> <p>预制棒</p>
<p> <span class="numberFont">130</span><span class="numberUnit"></span></p> <p> <span class="numberFont">390</span><span class="numberUnit"></span></p>
</div> </div>
<div> <!-- <div>
<p>总量</p> <p>总量</p>
<p> <span class="numberFont">140</span><span class="numberUnit"></span></p> <p> <span class="numberFont">140</span><span class="numberUnit"></span></p>
</div> </div> -->
</div> </div>
</div> </div>
</div> </div>
@ -174,7 +174,7 @@ export default {
}, },
initialAlpha: -Math.PI / 4.5, initialAlpha: -Math.PI / 4.5,
initialBeta: Math.PI / 2, initialBeta: Math.PI / 2,
initialRadius: 3, initialRadius: 2.5,
initialTarget: null, initialTarget: null,
scene: null, scene: null,
myui: null, myui: null,
@ -185,11 +185,11 @@ export default {
infoVisibel: false, infoVisibel: false,
updateTime: '2023-08-17 16:00:00', updateTime: '2023-08-17 16:00:00',
nodesLists: { nodesLists: {
'单身宿舍.005_primitive3': { total: '0', elec: '0', name: '办公楼' }, '单身宿舍.004_primitive3': { total: '0', elec: '0', name: '办公楼' },
'立方体.015_primitive1': { total: '0', elec: '0', name: '加工车间' }, '立方体.024_primitive1': { total: '0', elec: '0', name: '成型10车间' },
'立方体.004_primitive1': { total: '0', elec: '0', name: '配料车间' }, '立方体.034_primitive1': { total: '0', elec: '0', name: '配料8车间' },
'立方体.003_primitive1': { total: '0', elec: '0', name: '成型车间' }, '立方体.026_primitive1': { total: '0', elec: '0', name: '成型7车间' },
'立方体.002_primitive1': { total: '0', elec: '0', name: '成型车间' }, '立方体.025_primitive1': { total: '0', elec: '0', name: '加工6车间' },
}, },
currentTime:'', currentTime:'',
currentWeek:'', currentWeek:'',
@ -197,6 +197,9 @@ export default {
timerTime:null, timerTime:null,
start_date:'', start_date:'',
end_date:'', end_date:'',
dialogData:{
deptName:'办公楼'
},
} }
}, },
mounted() { mounted() {
@ -307,7 +310,7 @@ export default {
camera.upperRadiusLimit = 6; camera.upperRadiusLimit = 6;
// //
const light = new BABYLON.HemisphericLight("light", new BABYLON.Vector3(1, 1, 0)); const light = new BABYLON.HemisphericLight("light", new BABYLON.Vector3(1, 1, 0));
light.intensity = 0.3; light.intensity = 0.8;
// GUI // GUI
const advancedTexture = BABYLON_GUI.AdvancedDynamicTexture.CreateFullscreenUI("myUI"); const advancedTexture = BABYLON_GUI.AdvancedDynamicTexture.CreateFullscreenUI("myUI");
that.myui = advancedTexture; that.myui = advancedTexture;
@ -443,7 +446,6 @@ export default {
highlightLayer.removeAllMeshes(); highlightLayer.removeAllMeshes();
} }
if (pickResult.hit) { if (pickResult.hit) {
// console.log('pickResult',pickResult);
const mesh = pickResult.pickedMesh; const mesh = pickResult.pickedMesh;
// if (camera.target != mesh.position) { // if (camera.target != mesh.position) {
// // console.log('fly to') // // console.log('fly to')
@ -463,17 +465,9 @@ export default {
// BABYLON.Animation.CreateAndStartAnimation('at51', camera, 'target', 45, 200, camera.target, position, 0, ease); // BABYLON.Animation.CreateAndStartAnimation('at51', camera, 'target', 45, 200, camera.target, position, 0, ease);
// } // }
highlightLayer.removeAllMeshes(); highlightLayer.removeAllMeshes();
// if(/.*[\u4e00-\u9fa5]+.*$/.test(mesh.name)&&mesh.name!=='1'&&mesh.name!=='绿'&&mesh.name!=='') { let key = mesh.name;
// // mesh if (that.nodesLists[key]) {
// highlightLayer.addMesh(mesh, new BABYLON.Color3(1, 1, 0.5)); that.getDeptDetail(that.nodesLists[key].name)
// that.currentLightMesh = mesh;
// mesh_rect.linkWithMesh(mesh);
// let name = mesh.name.split('_')[0];
// mesh_name.text = name;
// mesh_rect.isVisible = true;
// that.infoVisibel = true;
// }
if (mesh.name == '单身宿舍.004_primitive3') {
//宿.003_primitive3 //宿.003_primitive3
// mesh // mesh
highlightLayer.addMesh(mesh, new BABYLON.Color3(0.1, 0.9, 0.9)); highlightLayer.addMesh(mesh, new BABYLON.Color3(0.1, 0.9, 0.9));
@ -501,62 +495,30 @@ export default {
that.infoVisibel = false; that.infoVisibel = false;
} }
}); });
canvas.addEventListener('mousedown', (event) => { canvas.addEventListener('click', (event) => {
// 使 scene.pick // 使 scene.pick
const pickResult = scene.pick(scene.pointerX, scene.pointerY); const pickResult = scene.pick(scene.pointerX, scene.pointerY);
if (pickResult.hit) { if (pickResult.hit) {
console.log('000000000000');
console.log('pickResult', pickResult);
const mesh = pickResult.pickedMesh; const mesh = pickResult.pickedMesh;
if (camera.target != mesh.position) { if (camera.target != mesh.position) {
// console.log('fly to') console.log('fly to')
// //
let position = mesh._parentNode._position let position = mesh._parentNode._position
if (mesh._parentNode.id == '__root__') { if (mesh._parentNode.id == '__root__') {
position = mesh.position position = mesh.position
} }
const cameraPosition = new BABYLON.Vector3( const cameraPosition = new BABYLON.Vector3(
mesh.position.x + 9 * Math.sin(camera.beta) * Math.cos(Math.PI), mesh.position.x + 2.5 * Math.sin(camera.beta) * Math.cos(1.8*Math.PI),
mesh.position.y + 9 * Math.cos(camera.beta), mesh.position.y + 2.5 * Math.cos(camera.beta),
mesh.position.z + 9 * Math.sin(camera.beta) * Math.sin(Math.PI) mesh.position.z + 2.5 * Math.sin(camera.beta) * Math.sin(1.8*Math.PI)
); );
var ease = new BABYLON.CubicEase(); var ease = new BABYLON.CubicEase();
ease.setEasingMode(BABYLON.EasingFunction.EASINGMODE_EASEINOUT); ease.setEasingMode(BABYLON.EasingFunction.EASINGMODE_EASEINOUT);
BABYLON.Animation.CreateAndStartAnimation('at5', camera, 'position', 45, 200, camera.position, cameraPosition, 0, ease); BABYLON.Animation.CreateAndStartAnimation('meshclick', camera, 'position', 45, 200, camera.position, cameraPosition, 0,ease);
BABYLON.Animation.CreateAndStartAnimation('at51', camera, 'target', 45, 200, camera.target, position, 0, ease); BABYLON.Animation.CreateAndStartAnimation('at51', camera, 'target', 45, 200, camera.target, position, 0, ease);
} }
} }
}); });
// checkbox.isChecked = true; //
// scene.onPointerObservable.add((pointerInfo) => {
// switch (pointerInfo.type) {
// case BABYLON.PointerEventTypes.POINTERDOWN:
// console.log(scene.pointerX, scene.pointerY);
// const pickResult = scene.pick(scene.pointerX, scene.pointerY);
// if (pickResult.hit) {
// console.log('000000000000');
// console.log('pickResult', pickResult);
// const mesh = pickResult.pickedMesh;
// if (camera.target != mesh.position) {
// // console.log('fly to')
// //
// let position = mesh._parentNode._position
// if (mesh._parentNode.id == '__root__') {
// position = mesh.position
// }
// const cameraPosition = new BABYLON.Vector3(
// mesh.position.x + 9 * Math.sin(camera.beta) * Math.cos(Math.PI),
// mesh.position.y + 9 * Math.cos(camera.beta),
// mesh.position.z + 9 * Math.sin(camera.beta) * Math.sin(Math.PI)
// );
// var ease = new BABYLON.CubicEase();
// ease.setEasingMode(BABYLON.EasingFunction.EASINGMODE_EASEINOUT);
// BABYLON.Animation.CreateAndStartAnimation('at5', camera, 'position', 45, 200, camera.position, cameraPosition, 0, ease);
// BABYLON.Animation.CreateAndStartAnimation('at51', camera, 'target', 45, 200, camera.target, position, 0, ease);
// }
// }
// }
// })
return scene; return scene;
}; };
const scene = createScene(); //Call the createScene function const scene = createScene(); //Call the createScene function
@ -571,6 +533,9 @@ export default {
engine.resize(); engine.resize();
}); });
}, },
getDeptDetail(name){
this.dialogData.deptName = name;
},
initChart() { initChart() {
//1 //1
let chartDom = document.getElementById('line1'); let chartDom = document.getElementById('line1');
@ -1501,7 +1466,7 @@ export default {
display: flex; display: flex;
.leftBlock { .leftBlock {
width: 80px; width: 100px;
margin-right: 30px; margin-right: 30px;
} }

View File

@ -48,11 +48,16 @@
row-key="id" row-key="id"
stripe stripe
> >
<el-table-column label="姓名" prop="employee_name"> <el-table-column label="#" fixed="left" type="index" width="40"></el-table-column>
<el-table-column label="姓名" prop="user_name">
</el-table-column> </el-table-column>
<el-table-column label="班组" prop="shift_name"> <el-table-column label="部门" prop="belong_dept_name">
</el-table-column> </el-table-column>
<el-table-column label="所属部门" prop="belong_dept_name"> <el-table-column label="班次" prop="shift_name">
</el-table-column>
<el-table-column label="班组" prop="team_name">
</el-table-column>
<el-table-column label="岗位" prop="post_name">
</el-table-column> </el-table-column>
<el-table-column label="工作日期" prop="work_date"> <el-table-column label="工作日期" prop="work_date">
</el-table-column> </el-table-column>
@ -61,15 +66,16 @@
<el-tag :type="states[scope.row.state].type">{{states[scope.row.state].label}}</el-tag> <el-tag :type="states[scope.row.state].type">{{states[scope.row.state].label}}</el-tag>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="操作" fixed="right" align="left" width="170"> <el-table-column label="操作" fixed="right" align="left" width="110">
<template #default="scope"> <template #default="scope">
<el-button <el-button
link link
type="primary" type="primary"
size="small" size="small"
@click="table_edit(scope.row)" @click="table_edit(scope.row)"
>编辑</el-button >编辑</el-button
> >
<el-divider direction="vertical"></el-divider>
<el-button <el-button
link link
type="warning" type="warning"
@ -90,7 +96,7 @@
> >
</save-dialog> </save-dialog>
<el-dialog <el-dialog
title="到岗状态修改" title="修改到岗状态"
v-model="visible" v-model="visible"
:size="1000" :size="1000"
destroy-on-close destroy-on-close
@ -102,13 +108,33 @@
label-width="100px" label-width="100px"
> >
<el-row> <el-row>
<el-col :md="12" :sm="24"> <el-col :md="8" :sm="12">
<el-form-item label="姓名"> <el-form-item label="姓名">
<span>{{ form.employee_name }}</span> <span>{{ form.user_name }}</span>
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :md="12" :sm="24"> <el-col :md="8" :sm="12">
<el-form-item label="工作日期"> <el-form-item label="部门:">
<span>{{ form.belong_dept_name }}</span>
</el-form-item>
</el-col>
<el-col :md="8" :sm="12">
<el-form-item label="班次:">
<span>{{ form.shift_name }}</span>
</el-form-item>
</el-col>
<el-col :md="8" :sm="12">
<el-form-item label="岗位:">
<span>{{ form.post_name }}</span>
</el-form-item>
</el-col>
<el-col :md="8" :sm="12">
<el-form-item label="班组:">
<span>{{ form.team_name }}</span>
</el-form-item>
</el-col>
<el-col :md="8" :sm="12">
<el-form-item label="工作日期:">
<span>{{ form.work_date }}</span> <span>{{ form.work_date }}</span>
</el-form-item> </el-form-item>
</el-col> </el-col>
@ -136,7 +162,7 @@
</el-row> </el-row>
</el-form> </el-form>
<el-footer> <el-footer>
<el-button type="primary" :loading="isSaveing" @click="submit">保存</el-button> <el-button type="primary" :loading="isSaveing" @click="submit">提交</el-button>
<el-button @click="visible = false">取消</el-button> <el-button @click="visible = false">取消</el-button>
</el-footer> </el-footer>
</el-dialog> </el-dialog>
@ -193,9 +219,16 @@
this.ElLoading =null; this.ElLoading =null;
}, },
methods: { methods: {
async getDept() { getDept() {
let res = await this.$API.system.dept.list.req({ page: 0, type__in: 'dept' }); this.$API.system.dept.list.req({ page: 0,type:'dept'}).then(res=>{
this.deptData = res; let data = [];
res.forEach(item => {
if(item.parent=='3423856735881117696'){
data.push(item)
}
});
this.deptData = data;
});
}, },
handleQuery(){ handleQuery(){
if(this.monthV){ if(this.monthV){

View File

@ -22,7 +22,7 @@
v-model="belongDept" v-model="belongDept"
clearable clearable
style="width:100%" style="width:100%"
@change="getEmployee" @change="getTeam"
> >
<el-option v-for="item in deptOptions" <el-option v-for="item in deptOptions"
:key="item.id" :key="item.id"
@ -49,6 +49,24 @@
</el-select> </el-select>
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :md="12" :sm="24">
<el-form-item label="班组">
<el-select
v-model="form.team"
placeholder="班组"
clearable
style="width:100%"
@change="getuser"
>
<el-option
v-for="item in teamOptions"
:key="item.id"
:label="item.name"
:value="item.id"
></el-option>
</el-select>
</el-form-item>
</el-col>
<el-col :md="12" :sm="24"> <el-col :md="12" :sm="24">
<el-form-item label="工作日期"> <el-form-item label="工作日期">
<el-date-picker <el-date-picker
@ -69,71 +87,57 @@
</el-row> </el-row>
</el-form> </el-form>
<sc-form-table <sc-form-table
v-model="userList" v-model="userList"
:addTemplate="addTemplate" :addTemplate="addTemplate"
placeholder="暂无数据" placeholder="暂无数据"
> >
<el-table-column prop="name" label="排序" > <el-table-column prop="user_name" label="姓名"></el-table-column>
<template #default="scope"> <el-table-column prop="mgroup_name" label="工段"></el-table-column>
<span>{{ scope.row.name }}</span> <el-table-column prop="post_name" label="岗位"></el-table-column>
</template> <el-table-column prop="type" label="到岗状态">
</el-table-column> <template #default="scope">
<el-table-column prop="belong_dept_name" label="部门" > <el-select
<template #default="scope"> v-model="scope.row.state"
<span>{{ scope.row.belong_dept_name }}</span> filterable
</template> placeholder="到岗状态"
</el-table-column> >
<el-table-column prop="type" label="到岗状态"> <el-option
<template #default="scope"> v-for="item in stateOptions"
<el-select :key="item.id"
v-model="scope.row.state" :label="item.label"
filterable :value="item.id"
placeholder="到岗状态" ></el-option>
> </el-select>
<el-option </template>
v-for="item in stateOptions" </el-table-column>
:key="item.id" <el-table-column prop="note" label="备注">
:label="item.label" <template #default="scope">
:value="item.id" <el-input
></el-option> v-model="scope.row.note"
</el-select> placeholder="请输入内容"
</template> ></el-input>
</el-table-column> </template>
<el-table-column prop="note" label="备注"> </el-table-column>
<template #default="scope"> <!-- <el-table-column prop="open" label="操作" width="80" align="center">
<el-input <template #default="scope">
v-model="scope.row.note" <el-button
placeholder="请输入内容" text
></el-input> type="primary"
</template> size="small"
</el-table-column> @click="createUserPost(scope.row)"
<!-- <el-table-column prop="open" label="操作" width="80" align="center"> >保存</el-button
<template #default="scope"> >
<el-button </template>
text </el-table-column> -->
type="primary" </sc-form-table>
size="small"
@click="createUserPost(scope.row)"
>保存</el-button
>
</template>
</el-table-column> -->
</sc-form-table>
</el-main> </el-main>
<el-footer v-if="mode!=='show'"> <el-footer v-if="mode!=='show'">
<el-button <el-button type="primary" :loading="isSaveing" @click="submit">保存</el-button>
type="primary"
:loading="isSaveing"
@click="submit"
>
保存
</el-button>
<el-button @click="visible = false">取消</el-button> <el-button @click="visible = false">取消</el-button>
</el-footer> </el-footer>
</el-container> </el-container>
</el-drawer> </el-drawer>
</template> </template>
<script> <script>
const defaultForm = { const defaultForm = {
list:[], list:[],
@ -163,6 +167,7 @@
isSaveing: false, isSaveing: false,
form: defaultForm, form: defaultForm,
userList:[], userList:[],
teamOptions:[],
deptOptions: ['6车间','7车间','8车间','10车间'], deptOptions: ['6车间','7车间','8车间','10车间'],
shiftOptions:[], shiftOptions:[],
selectionFilters: [], selectionFilters: [],
@ -174,21 +179,32 @@
}, },
methods: { methods: {
getShiftOptions() { getShiftOptions() {
this.$API.system.dept.list.req({ page: 0, type__in: 'dept' }).then((res) => { deptOptions
this.deptOptions = res; this.$API.system.dept.list.req({ page: 0,type:'dept'}).then(res=>{
let data = [];
res.forEach(item => {
if(item.parent=='3423856735881117696'){
data.push(item)
}
});
this.deptOptions = data;
}); });
this.$API.mtm.shift.req({page:0}).then(res=>{ this.$API.mtm.shift.req({page:0}).then(res=>{
this.shiftOptions = res; this.shiftOptions = res;
}) })
}, },
getEmployee(){ getTeam(){
this.$API.hrm.employee.list.req({belong_dept:this.belongDept,page:0}).then(res=>{ //team
this.$API.mtm.team.list.req({page:0,belong_dept:this.belongDept}).then(res=>{
this.teamOptions = res;
})
},
getuser(){
this.$API.mtm.teammember.list.req({team:this.form.team,page:0}).then(res=>{
this.userList = []; this.userList = [];
res.forEach(item=>{ res.forEach(item=>{
let obj ={}; let obj =item;
obj.name = item.name;
obj.employee = item.id;
obj.belong_dept_name = item.belong_dept_name;
obj.state = 'normal'; obj.state = 'normal';
obj.note = ''; obj.note = '';
this.userList.push(obj) this.userList.push(obj)
@ -213,11 +229,13 @@
let arr = []; let arr = [];
this.userList.forEach(item=>{ this.userList.forEach(item=>{
let obj = {}; let obj = {};
obj.employee = item.employee; obj.team = this.form.team;
obj.shift = this.form.shift; obj.shift = this.form.shift;
obj.state = item.state;
obj.work_date = this.form.work_date; obj.work_date = this.form.work_date;
obj.user = item.user;
obj.state = item.state;
obj.note = item.note; obj.note = item.note;
obj.post = item.post;
arr.push(obj) arr.push(obj)
}) })
if (this.mode === 'add') { if (this.mode === 'add') {

View File

@ -1,6 +1,6 @@
<template> <template>
<el-drawer <el-drawer
:title="titleMap[mode]" title="班组人员"
v-model="visible" v-model="visible"
:size="1000" :size="1000"
destroy-on-close destroy-on-close
@ -20,48 +20,71 @@
:addTemplate="addTemplate" :addTemplate="addTemplate"
placeholder="暂无数据" placeholder="暂无数据"
> >
<el-table-column prop="belong_dept_name" label="部门" >
<template #default="scope">
<span>{{ scope.row.belong_dept_name }}</span>
</template>
</el-table-column>
<el-table-column prop="type" label="人员"> <el-table-column prop="type" label="人员">
<template #default="scope"> <template #default="scope">
<span v-if="scope.row.id">{{ scope.row.user_name }}</span>
<el-select <el-select
v-model="scope.row.employee" v-else
v-model="scope.row.user"
filterable filterable
placeholder="人员" placeholder="人员"
> >
<el-option <el-option
v-for="item in stateOptions" v-for="item in userOptions"
:key="item.id" :key="item.id"
:label="item.label" :label="item.name"
:value="item.id" :value="item.id"
></el-option> ></el-option>
</el-select> </el-select>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="所在工段">
<template #default="scope">
<span v-if="scope.row.id">{{ scope.row.mgroup_name }}</span>
<el-select
v-else
v-model="scope.row.mgroup"
filterable
placeholder="所在工段"
>
<el-option
v-for="item in mgroupOptions"
:key="item.id"
:label="item.name"
:value="item.id"
></el-option>
</el-select>
</template>
</el-table-column>
<el-table-column prop="post_name" label="岗位" >
<template #default="scope" >
<span v-if="scope.row.id">{{ scope.row.post_name }}</span>
</template>
</el-table-column>
<el-table-column prop="open" label="操作" width="80" align="center"> <el-table-column prop="open" label="操作" width="80" align="center">
<template #default="scope"> <template #default="scope">
<el-button
text <el-button
type="primary" v-if="scope.row.id"
size="small" text
@click="createUserPost(scope.row)" type="danger"
>保存</el-button size="small"
> @click="userMemberDel(scope.row.id)"
>删除</el-button
>
<el-button
v-else
text
type="primary"
size="small"
@click="userMemberCreate(scope.row)"
>添加</el-button
>
</template> </template>
</el-table-column> </el-table-column>
</sc-form-table> </sc-form-table>
</el-main> </el-main>
<el-footer v-if="mode!=='show'"> <el-footer v-if="mode!=='show'">
<el-button
type="primary"
:loading="isSaveing"
@click="submit"
>
保存
</el-button>
<el-button @click="visible = false">取消</el-button> <el-button @click="visible = false">取消</el-button>
</el-footer> </el-footer>
</el-container> </el-container>
@ -69,66 +92,61 @@
</template> </template>
<script> <script>
const defaultForm = {
list:[],
};
export default { export default {
emits: ["success", "closed"], emits: ["success", "closed"],
props:{
team: { type: String, default: "" },
},
data() { data() {
return { return {
belongDept:'', belongDept:'',
loading: false, loading: false,
mode: "add",
titleMap: {
add: '新增',
edit: '编辑',
show: '查看'
},
addTemplate:{ addTemplate:{
user:'',
mgroup:'',
post_name:'',
}, },
stateOptions:[
{label: "待定", id: "pending"},
{label: "正常", id: "normal"},
{label: "迟到", id: "late"},
{label: "早退", id: "early_leave"},
{label: "未到岗", id: "absent"},
{label: "请假", id: "leave"},
],
itemObj:{}, itemObj:{},
visible: false, visible: false,
isSaveing: false, isSaveing: false,
userList:[{name:'',belong_dept_name:''}], userList:[{name:'',mgroup:'',post_name:''}],
deptOptions: ['6车间','7车间','8车间','10车间'], deptOptions: ['6车间','7车间','8车间','10车间'],
shiftOptions:[], shiftOptions:[],
userOptions:[],
mgroupOptions:[],
selectionFilters: [], selectionFilters: [],
setFiltersVisible: false, setFiltersVisible: false,
}; };
}, },
mounted() { mounted() {
this.getShiftOptions(); this.getUserList();
}, },
methods: { methods: {
getShiftOptions() { getUserList(){
this.$API.system.dept.list.req({ page: 0, type__in: 'dept' }).then((res) => { this.$API.mtm.teammember.list.req({team:this.team,page:0}).then((res) => {
this.deptOptions = res; this.userList = [];
if(res.length>0){
res.forEach(item => {
let obj = {};
obj.id = item.id;
obj.user = item.user;
obj.user_name = item.user_name;
obj.mgroup = item.mgroup;
obj.mgroup_name = item.mgroup_name;
obj.post_name = item.post_name;
this.userList.push(obj)
});
}
}); });
this.$API.mtm.shift.req({page:0}).then(res=>{ },
this.shiftOptions = res; getShiftOptions() {
this.$API.mtm.mgroup.list.req({belong_dept:this.itemObj.belong_dept,page:0}).then(res=>{
this.mgroupOptions = res;
}) })
}, },
getEmployee(){ getDeptUser(){
this.$API.hrm.employee.list.req({belong_dept:this.belongDept,page:0}).then(res=>{ this.$API.system.user.list.req({belong_dept__name:this.itemObj.belong_dept_name,page:0}).then(res=>{
this.userList = []; this.userOptions = res;
res.forEach(item=>{
let obj ={};
obj.name = item.name;
obj.employee = item.id;
obj.belong_dept_name = item.belong_dept_name;
obj.state = 'normal';
obj.note = '';
this.userList.push(obj)
})
}) })
}, },
// //
@ -141,54 +159,38 @@
this.visible = false; this.visible = false;
this.$emit('closed'); this.$emit('closed');
}, },
// //
submit() { userMemberCreate(row) {
this.$refs.dialogForm.validate((valid) => { let that = this;
if (valid) { this.isSaveing = true;
this.isSaveing = true; row.team = this.itemObj.id;
let arr = []; this.$API.mtm.teammember.create.req(row).then((res) => {
this.userList.forEach(item=>{ that.$message.success("操作成功");
let obj = {}; that.getUserList();
obj.employee = item.employee;
obj.shift = this.form.shift;
obj.state = item.state;
obj.work_date = this.form.work_date;
obj.note = item.note;
arr.push(obj)
})
if (this.mode === 'add') {
this.$API.hrm.attendance.create.req(arr)
.then(res => {
this.isSaveing = false;
this.visible = false;
this.$emit("success");
this.$message.success("操作成功");
return res
}).catch(err => {
this.isSaveing = false;
return err
})
} else {
this.$API.hrm.attendance.update.req(this.form.id, this.form)
.then(res => {
this.isSaveing = false;
this.visible = false;
this.$emit("success", this.form, this.mode);
this.$message.success("操作成功");
return res
}).catch(err => {
this.isSaveing = false;
return err
})
}
}
}); });
}, },
//
userMemberDel(id) {
let that = this;
this.$confirm(`确定删除吗?`, "提示", {
type: "warning",
confirmButtonText: "删除",
confirmButtonClass: "el-button--danger",
}).then(() => {
this.$API.mtm.teammember.delete.req(id).then((res) => {
that.getUserList();
that.$message.success("操作成功");
});
});
},
// //
setData(data) { setData(data) {
debugger;
console.log(data);
Object.assign(this.itemObj, data); Object.assign(this.itemObj, data);
this.$nextTick(()=>{
this.getDeptUser();
this.getShiftOptions();
})
}, },
// //
setFilters(filters) { setFilters(filters) {

View File

@ -26,7 +26,7 @@
<el-table-column label="班长" prop="leader_name" min-width="100"></el-table-column> <el-table-column label="班长" prop="leader_name" min-width="100"></el-table-column>
<el-table-column label="所属部门" prop="belong_dept_name" min-width="150"></el-table-column> <el-table-column label="所属部门" prop="belong_dept_name" min-width="150"></el-table-column>
<el-table-column label="创建时间" prop="create_time" min-width="150"></el-table-column> <el-table-column label="创建时间" prop="create_time" min-width="150"></el-table-column>
<el-table-column label="操作" fixed="right" align="center" width="140"> <el-table-column label="操作" fixed="right" align="center" width="180">
<template #default="scope"> <template #default="scope">
<el-button link size="small" @click="handleMember(scope.row)" v-auth="'team.update'" type="primary">班组人员</el-button> <el-button link size="small" @click="handleMember(scope.row)" v-auth="'team.update'" type="primary">班组人员</el-button>
<el-divider direction="vertical"></el-divider> <el-divider direction="vertical"></el-divider>
@ -76,6 +76,7 @@
</el-dialog> </el-dialog>
<member-dialog <member-dialog
v-if="dialogVisible" v-if="dialogVisible"
:team="team"
ref="memberDialog" ref="memberDialog"
@success="handleSuccess" @success="handleSuccess"
@closed="dialogVisible = false" @closed="dialogVisible = false"
@ -200,6 +201,7 @@ import memberDialog from "./team_form.vue";
this.$refs.table.refresh() this.$refs.table.refresh()
}, },
handleMember(row){ handleMember(row){
this.team = row.id;
this.dialogVisible = true; this.dialogVisible = true;
this.$nextTick(() => { this.$nextTick(() => {
this.$refs.memberDialog.open('add').setData(row) this.$refs.memberDialog.open('add').setData(row)