Commit abfe3498 authored by zhanglongtao's avatar zhanglongtao

修改工时页面

parent 1d9c2ce6
...@@ -50,6 +50,12 @@ export default { ...@@ -50,6 +50,12 @@ export default {
getentryusers(params) { getentryusers(params) {
return Api.get(`${PlanUrl}/orderexecutenew/entryusers`, params); return Api.get(`${PlanUrl}/orderexecutenew/entryusers`, params);
}, },
getusers(params) {
return Api.get(`${PlanUrl}/orderexecutenew/getusers`,params);
},
gethourinfo(params) {
return Api.get(`${technologyUrl}workhours/gethourinfo`, params);
},
//工时分配--工时列表 //工时分配--工时列表
getentrylist(params) { getentrylist(params) {
return Api.post(`${technologyUrl}workhours/list`, params); return Api.post(`${technologyUrl}workhours/list`, params);
...@@ -62,6 +68,9 @@ export default { ...@@ -62,6 +68,9 @@ export default {
subcreatehours(params) { subcreatehours(params) {
return Api.post(`${technologyUrl}workhours/createmore`, params); return Api.post(`${technologyUrl}workhours/createmore`, params);
}, },
subcreatemodelhours(params) {
return Api.post(`${technologyUrl}workhours/createmoremodel`, params);
},
//工时分配--删除一条 //工时分配--删除一条
deletehours(params) { deletehours(params) {
return Api.delete(`${technologyUrl}workhours/delete?id=`+ params); return Api.delete(`${technologyUrl}workhours/delete?id=`+ params);
......
...@@ -3,42 +3,63 @@ ...@@ -3,42 +3,63 @@
<div class="add_user"> <div class="add_user">
<Form ref="form" :model="entity" :rules="rules" :label-width="100"> <Form ref="form" :model="entity" :rules="rules" :label-width="100">
<Row> <Row>
<!-- <Col span="8"> <Col span="8">
<FormItem label="所属车间"> <FormItem label="所属车间">
<Select v-model="entity.che" style="width:200px"> <!-- <Select v-model="entity.che" style="width: 200px">
<Option v-for="item in cityList" :value="item.value" :key="item.value"> <Option
v-for="item in workShopList"
:value="item.value"
:key="item.value"
>
{{ item.label }} {{ item.label }}
</Option> </Option>
</Select> </Select> -->
<departmentSelect
:type="3"
@on-change="departChange"
></departmentSelect>
</FormItem> </FormItem>
</Col> </Col>
<Col span="8"> <Col span="8">
<FormItem label="所属班组"> <FormItem label="所属班组">
<Select v-model="entity.productName" style="width:200px"> <!-- <Select v-model="entity.productName" style="width: 200px">
<Option v-for="item in cityList" :value="item.value" :key="item.value">{{ item.label }}</Option> <Option
</Select> v-for="item in groupList"
:value="item.value"
:key="item.value"
>{{ item.label }}</Option
>
</Select> -->
<departmentSelect :type="1"></departmentSelect>
</FormItem> </FormItem>
</Col> </Col>
<Col span="8"> <Col span="8">
<FormItem label=""> <FormItem label="">
<Input search enter-button placeholder="请输入编号" /> <Input
search
enter-button
v-model="searchStr"
placeholder="请输入编号/姓名"
@click="searchUsers"
/>
</FormItem> </FormItem>
</Col>--> </Col>
<Col span="24" class="mb20"> <Col span="24" class="mb20">
<FormItem label="既定人员"> <FormItem label="选择人员">
<div class="gd_userB"> <div class="gd_userB">
<a <a
class="user_item" class="user_item"
v-model="entity.oldUserse" v-model="entity.oldUserse"
@click="checkItem(index)" @click="checkItem(index)"
v-for="(item,index) in listMan" v-for="(item, index) in listMan"
:key="index" :key="index"
> >
<div :class="{user_bg:item.checked}"> <div :class="{ user_bg: item.checked }">
<Icon type="md-contact" /> <Icon type="md-contact" />
<div class="gd_user"> <div class="gd_user">
<p class="user_name">{{item.userName}}</p> <p class="user_name">{{ item.userName }}</p>
<p class="user_number">{{item.cardNo}}</p> <p class="user_number">{{ item.cardNo }}</p>
</div> </div>
</div> </div>
<!-- <RadioGroup class="man_body"> v-model="item.checked" <!-- <RadioGroup class="man_body"> v-model="item.checked"
...@@ -58,22 +79,33 @@ ...@@ -58,22 +79,33 @@
</FormItem> </FormItem>
</Col> </Col>
<Col span="24" v-show="showSelect"> <Col span="24" v-show="showSelect">
<FormItem label="添加人员" style="width:90%"> <FormItem label="添加人员" style="width: 90%">
<UserSelect ref="userSelected" v-model="entity.userse" @on-change="changeUser"/> <UserSelect
ref="userSelected"
v-model="entity.userse"
@on-change="changeUser"
/>
<!-- :roleTitle="roleTitle" :datas="userlist" :multiple="true" --> <!-- :roleTitle="roleTitle" :datas="userlist" :multiple="true" -->
</FormItem> </FormItem>
</Col> </Col>
<Col span="24"> <Col span="24">
<FormItem label="分配工时" prop="setTime"> <FormItem label="分配工时" prop="setTime">
<!-- <InputNumber :max="30" :min="0" :step="1" v-model="value1"></InputNumber>&nbsp;&nbsp;&nbsp;&nbsp; --> <!-- <InputNumber :max="30" :min="0" :step="1" v-model="value1"></InputNumber>&nbsp;&nbsp;&nbsp;&nbsp; -->
<InputNumber :max="maxHour" :min="1" :editable="false" v-model="entity.workHour" @on-change="testChange"></InputNumber>&nbsp;&nbsp;&nbsp;&nbsp;工时 <InputNumber
:max="maxHour"
:min="1"
:editable="false"
v-model="entity.workHour"
@on-change="testChange"
></InputNumber
>&nbsp;&nbsp;&nbsp;&nbsp;工时
<!-- <InputNumber :max="59" :min="1" v-model="value1"></InputNumber> 分钟 &nbsp;&nbsp;&nbsp;&nbsp; --> <!-- <InputNumber :max="59" :min="1" v-model="value1"></InputNumber> 分钟 &nbsp;&nbsp;&nbsp;&nbsp; -->
</FormItem> </FormItem>
</Col> </Col>
</Row> </Row>
</Form> </Form>
<Row> <Row>
<Col span="24" style="text-align:right;height:60px;line-height:60px"> <Col span="24" style="text-align: right; height: 60px; line-height: 60px">
<Button @click="handleClose" class="mr20">取消</Button> <Button @click="handleClose" class="mr20">取消</Button>
<Button type="primary" @click="handleSubmit" v-noClick>保存</Button> <Button type="primary" @click="handleSubmit" v-noClick>保存</Button>
</Col> </Col>
...@@ -81,49 +113,78 @@ ...@@ -81,49 +113,78 @@
</div> </div>
</template> </template>
<script> <script>
import Api from "../api";
export default { export default {
data() { data() {
return { return {
entity: { entity: {
oldUserse: "", oldUserse: "",
userse: null, userse: null,
workHour: 1 workHour: 1,
}, },
// userlist:[], // userlist:[],
userflag:false, userflag: false,
showSelect: true, showSelect: true,
rules: { rules: {
outSideTime: [ outSideTime: [
{ required: true, message: "必填", type: "number", trigger: "change" } {
] required: true,
message: "必填",
type: "number",
trigger: "change",
},
],
}, },
maxHour: 10, maxHour: 10,
listMan: [ listMan: [
{ // {
checked: false, // checked: false,
userName: "张珊珊1", // userName: "张珊珊1",
cardNo: "08965481", // cardNo: "08965481",
id: 1 // id: 1
},{ // },{
checked: false, // checked: false,
userName: "张珊珊2", // userName: "张珊珊2",
cardNo: "08965482", // cardNo: "08965482",
id: 2 // id: 2
}, // },
] ],
workShopList: [],
groupList: [],
searchStr: "",
}; };
}, },
created(){}, created() {},
methods: { methods: {
departChange(v, item) {
let parm = {
partmentId: v,
search: "",
};
Api.getusers(parm).then((res) => {
let result = res.result;
this.listMan = result;
});
},
searchUsers() {
let parm = {
partmentId: 0,
search: this.searchStr,
};
Api.getusers(parm).then((res) => {
let result = res.result;
this.listMan = result;
});
},
handleSubmit() { handleSubmit() {
this.listMan.map(item=>{ this.listMan.map((item) => {
if(item.checked){ if (item.checked) {
this.entity.cardNo = item.cardNo this.entity.cardNo = item.cardNo;
} }
}) });
// console.log(this.entity); // console.log(this.entity);
this.$emit("on-ok", this.entity); this.$emit("on-ok", this.entity);
this.showSelect = true this.showSelect = true;
}, },
//单选框 //单选框
radioChange(val) { radioChange(val) {
...@@ -131,53 +192,53 @@ export default { ...@@ -131,53 +192,53 @@ export default {
}, },
handleClose() { handleClose() {
this.$emit("on-close"); this.$emit("on-close");
this.entity={ this.entity = {
cardNo: "", cardNo: "",
oldUserse: null, oldUserse: null,
userse: null, userse: null,
workHour: 1, workHour: 1,
} };
}, },
checkItem(i) { checkItem(i) {
if(this.userflag){ if (this.userflag) {
this.$Message.error("只能选择一人"); this.$Message.error("只能选择一人");
return return;
} }
let oldlist = this.listMan let oldlist = this.listMan;
oldlist[i].checked = !oldlist[i].checked; oldlist[i].checked = !oldlist[i].checked;
let oolist = []; let oolist = [];
oldlist.map(u => { oldlist.map((u) => {
if (u.checked) { if (u.checked) {
oolist.push(u); oolist.push(u);
this.showSelect = false this.showSelect = false;
if (1 < oolist.length) { if (1 < oolist.length) {
this.$Message.error("只能选择一人"); this.$Message.error("只能选择一人");
this.listMan[i].checked = false; this.listMan[i].checked = false;
} }
} }
}); });
oolist.map(u => { oolist.map((u) => {
if (u.checked) { if (u.checked) {
this.entity.userName = u.userName; this.entity.userName = u.userName;
this.entity.userId = u.id this.entity.userId = u.id;
this.showSelect = false this.showSelect = false;
}else{ } else {
this.entity.userName = ''; this.entity.userName = "";
this.entity.userId = '' this.entity.userId = "";
} }
}); });
if(oolist.length==0){ if (oolist.length == 0) {
this.showSelect = true this.showSelect = true;
} }
}, },
// 选择新增人员 // 选择新增人员
changeUser(data){ changeUser(data) {
this.$nextTick(()=>{ this.$nextTick(() => {
let alloterInfo = this.$refs.userSelected.getSelectItems(); let alloterInfo = this.$refs.userSelected.getSelectItems();
this.entity.cardNo = alloterInfo[0].cardNo this.entity.cardNo = alloterInfo[0].cardNo;
this.entity.userName = alloterInfo[0].userName this.entity.userName = alloterInfo[0].userName;
this.entity.userId = alloterInfo[0].id this.entity.userId = alloterInfo[0].id;
}) });
}, },
testChange() { testChange() {
// 该方法在input内容改变是就会触发进行检测 // 该方法在input内容改变是就会触发进行检测
...@@ -196,7 +257,7 @@ export default { ...@@ -196,7 +257,7 @@ export default {
} }
} }
return newNumber; return newNumber;
} },
} },
}; };
</script> </script>
\ No newline at end of file
<template> <template>
<div class="gs_set"> <div class="gs_set">
<div style="text-align: center; background: wihte; height: 50px">
产品名称:
<span class="">{{ topInfoShow.productName }}</span
>&nbsp;&nbsp;&nbsp;&nbsp; 工序号:
<span class="">{{ topInfoShow.taskSeq }}</span
>&nbsp;&nbsp;&nbsp;&nbsp; 工序名称:
<span class="">{{ topInfoShow.name }}</span
>&nbsp;&nbsp;&nbsp;&nbsp; 派工数量:
<span class="">{{ topInfoShow.count }}</span
>&nbsp;&nbsp;&nbsp;&nbsp; 绩效单件:
<span class="">{{ topInfoShow.performanceHours }}</span
>&nbsp;&nbsp;&nbsp;&nbsp; 绩效准结:
<span class="">{{ topInfoShow.performanceWorkingHours }}</span>
</div>
<div class="gs_top"> <div class="gs_top">
<div class="gs_top_box total_time"> <div class="gs_top_box total_time">
<img src="@/assets/imgicon/execute/time01.png" alt /> <img src="@/assets/imgicon/execute/time01.png" alt />
<!-- <Icon type="ios-time" /> --> <!-- <Icon type="ios-time" /> -->
<div class="gs_bo01"> <div class="gs_bo01">
<span class="shi">总工时</span> <span class="shi">总工时</span>
<span class="number">{{allHours}}</span> <span class="number">{{ allHours }}</span>
</div> </div>
</div> </div>
<Divider type="vertical" class="line_slit" /> <Divider type="vertical" class="line_slit" />
...@@ -16,20 +30,21 @@ ...@@ -16,20 +30,21 @@
<img src="@/assets/imgicon/execute/time02.png" alt /> <img src="@/assets/imgicon/execute/time02.png" alt />
<div class="gs_bo01"> <div class="gs_bo01">
<span class="shi">待分配</span> <span class="shi">待分配</span>
<span class="number">{{waitHours}}</span> <span class="number">{{ waitHours }}</span>
</div> </div>
</div> </div>
</div> </div>
<div class="gs_card_box"> <div class="gs_card_box">
<Card class="gs_card" v-for="(item,index) in cardMan" :key="index"> <Card class="gs_card" v-for="(item, index) in cardMan" :key="index">
<p slot="title" class="gs_title"> <p slot="title" class="gs_title">
{{item.userTitle}} {{ item.userTitle }}
<!-- <span class="fr">{{item.cardNo}}</span> --> <span class="fr">{{ item.userCardNo }}</span>
</p> </p>
<!-- <p class="gs_p">所属车间:车间A{{i}}</p> <p>所属车间:{{ item.workShopTitle }}</p>
<p class="gs_p">所属班组:班组B{{i}}</p>-->    
<p>所属班组:{{ item.groupTitle }}</p>
<p class="gs_time"> <p class="gs_time">
<span class="b_size">{{item.workHour}}</span> 工时 <span class="b_size">{{ item.workHour }}</span> 工时
</p> </p>
<!-- <p class="gs_p"> <!-- <p class="gs_p">
<span class="b_size">100</span> <span class="b_size">100</span>
...@@ -38,20 +53,33 @@ ...@@ -38,20 +53,33 @@
<span class="b_size">100</span> <span class="b_size">100</span>
</p>--> </p>-->
<p class="gs_footer"> <p class="gs_footer">
<!-- <a class="gs_edit" @click="editItem"> <a class="gs_edit" @click="editItem">
<Icon type="md-create" /> <Icon type="md-create" />
编辑</a>--> 编辑</a
>
<a class="gs_del" @click="delItem(item.id)"> <a class="gs_del" @click="delItem(item.id)">
<Icon type="ios-trash-outline" />删除 <Icon type="ios-trash-outline" />删除
</a> </a>
</p> </p>
</Card> </Card>
<a class="gs_card gs_add" @click="addItem" v-show="this.waitHours!=0"> <a class="gs_card gs_add" @click="addItem" v-show="this.waitHours != 0">
<Icon type="ios-add" /> <Icon type="ios-add" />
</a> </a>
</div> </div>
<!-- <div>
<Button class="mr20">取消</Button>
<Button type="primary" v-noClick>提交</Button>
</Col>
</Row>
</div> -->
<!-- 新增弹框 --> <!-- 新增弹框 -->
<Modal v-model="addmodal" width="1100" :mask-closable="false" title="添加人员" footer-hide> <Modal
v-model="addmodal"
width="1100"
:mask-closable="false"
title="添加人员"
footer-hide
>
<addview ref="addview" @on-close="cancel" @on-ok="addInfo"></addview> <addview ref="addview" @on-close="cancel" @on-ok="addInfo"></addview>
</Modal> </Modal>
</div> </div>
...@@ -68,20 +96,29 @@ export default { ...@@ -68,20 +96,29 @@ export default {
msg: "确认要删除吗?", msg: "确认要删除吗?",
title: "删除确认", title: "删除确认",
addmodal: false, addmodal: false,
allHours: 240, allHours: 0,
waitHours: 200, waitHours: 0,
cardMan: [ cardMan: [
// { // {
// userName:"张三", // userName: "张三",
// cardNo:123123, // cardNo: 123123,
// workHour:50, // workHour: 0,
// } // },
] ],
topInfoShow: {
productName: this.$route.query.productName,
taskSeq: "", //工序号
taskName: "", //工序名
dispatchingNumber: "", //派工数量
qualifiedData: "", //合格数据
performanceQuasiKnot: "", //绩效单件
performanceSingleton: "", //绩效准结
},
}; };
}, },
created() { created() {
// this.treeHeight = window.innerHeight - 120; // this.treeHeight = window.innerHeight - 120;
this.laodHorse(); this.Initload();
}, },
async fetch({ store, params }) { async fetch({ store, params }) {
await store.dispatch("loadDictionary"); // 加载数据字典 await store.dispatch("loadDictionary"); // 加载数据字典
...@@ -95,31 +132,112 @@ export default { ...@@ -95,31 +132,112 @@ export default {
}; };
}, },
methods: { methods: {
// 初始化加载
Initload() {
let parme = {
dispatchId: this.$route.query.id,
routingDetailId: this.$route.query.routid,
count: this.$route.query.quantity,
};
// 最上边的信息
Api.gethourinfo(parme).then((res) => {
let result = res.result;
result.productName = this.$route.query.productName;
this.topInfoShow = result;
});
// 工时信息
Api.getallhours(parme).then((res) => {
if (res.result) {
this.allHours = res.result.allHours; // 总工时
this.waitHours = res.result.waitHours; // 待分配工时
this.$refs.addview.maxHour = this.waitHours;
// 如果工时还未分配,则默认人员平均分配
if (this.allHours == this.waitHours) {
let id = this.$route.query.id;
// 获取既定users
Api.getentryusers({ Id: id }).then((res) => {
let result = res.result;
// 默认工时分配
this.defaultWorkTime(result);
this.waitHours = 0;
});
}
// 工时分配列表
this.getWorkTimelist();
} else {
console.log("获取失败。");
}
});
},
// 刷新加载
laodHorse() { laodHorse() {
let parme = { let parme = {
dispatchId: this.$route.query.id, dispatchId: this.$route.query.id,
routingDetailId: this.$route.query.routid, routingDetailId: this.$route.query.routid,
count: this.$route.query.quantity count: this.$route.query.quantity,
}; };
Api.getallhours(parme).then(res => { Api.getallhours(parme).then((res) => {
if (res.result) { if (res.result) {
this.allHours = res.result.allHours; this.allHours = res.result.allHours; // 总工时
this.waitHours = res.result.waitHours; this.waitHours = res.result.waitHours; // 待分配工时
this.$refs.addview.maxHour = this.waitHours; this.$refs.addview.maxHour = this.waitHours;
// 工时分配列表
this.getWorkTimelist();
} else { } else {
console.log("获取失败。"); console.log("获取失败。");
} }
}); });
},
// 默认工时分配
defaultWorkTime(result) {
var length = result.length;
//平均工时
var averageHour = this.allHours / length;
//最后一个人的工时
var lastHour = this.allHours - averageHour * (length - 1);
let parme = [];
for (var i = 0; i < length; i++) {
var model = {
userId: result[i].userId,
userTitle: result[i].userTitle,
userCardNo: result[i].userCardNo,
groupId: result[i].groupId,
groupTitle: result[i].groupTitle,
workShopId: result[i].workShopId,
workShopTitle: result[i].workShopTitle,
workHour: i == length - 1 ? lastHour : averageHour,
dispatchId: this.$route.query.id,
routingDetailId: this.$route.query.routid,
count: this.$route.query.quantity,
};
parme.push(model);
}
this.cardMan = parme;
// 默认工时创建
Api.subcreatemodelhours(parme).then((res) => {
if (res.success) {
// 工时分配列表
this.getWorkTimelist();
} else {
console.log("默认工时创建失败。");
}
});
},
// 工时分配列表
getWorkTimelist() {
let parm = { let parm = {
conditions: [ conditions: [
{ {
fieldName: "dispatchId", fieldName: "dispatchId",
fieldValue: this.$route.query.id, fieldValue: this.$route.query.id,
conditionalType: "Equal" conditionalType: "Equal",
} },
] ],
}; };
Api.getentrylist(parm).then(rest => { Api.getentrylist(parm).then((rest) => {
if (rest.success) { if (rest.success) {
this.cardMan = rest.result; this.cardMan = rest.result;
} else { } else {
...@@ -127,29 +245,7 @@ export default { ...@@ -127,29 +245,7 @@ export default {
} }
}); });
}, },
addItem() {
// let aa=this.$refs.addview.$refs.userSelected.getSelectItems()
// console.log("1",aa)
// if(this.allHours==0){
// this.$Message.info("无工时分配...")
// return
// }
this.addmodal = true;
let id = this.$route.query.id;
Api.getentryusers({ Id: id }).then(res => {
let result = res.result;
result.map(u => {
u.checked = false;
});
this.$refs.addview.listMan = result;
});
this.$refs.addview.entity = {
cardNo: "",
oldUserse: null,
userse: null,
workHour: 1,
}
},
editItem() { editItem() {
this.$Message.success("编辑工时..."); this.$Message.success("编辑工时...");
}, },
...@@ -158,7 +254,7 @@ export default { ...@@ -158,7 +254,7 @@ export default {
title: this.title, title: this.title,
content: "<p>" + this.msg + "</p>", content: "<p>" + this.msg + "</p>",
onOk: () => { onOk: () => {
Api.deletehours(itmid).then(res => { Api.deletehours(itmid).then((res) => {
if (res.success) { if (res.success) {
this.laodHorse(); this.laodHorse();
this.$Message.success("工时已删除"); this.$Message.success("工时已删除");
...@@ -166,34 +262,67 @@ export default { ...@@ -166,34 +262,67 @@ export default {
this.$Message.error("删除失败..."); this.$Message.error("删除失败...");
} }
}); });
} },
}); });
}, },
cancel() { cancel() {
this.addmodal = false; this.addmodal = false;
}, },
// 打开添加分配人员页面
addItem() {
// let aa=this.$refs.addview.$refs.userSelected.getSelectItems()
// console.log("1",aa)
// if(this.allHours==0){
// this.$Message.info("无工时分配...")
// return
// }
this.addmodal = true;
let id = this.$route.query.id;
// 既定users
// Api.getentryusers({ Id: id }).then((res) => {
// let result = res.result;
// result.map((u) => {
// u.checked = false;
// });
// this.$refs.addview.listMan = result;
// });
let parm = {
partmentId:0,
search:""
};
Api.getusers(parm).then((res) => {
let result = res.result;
this.$refs.addview.listMan = result;
});
this.$refs.addview.entity = {
userCardNo: "",
oldUserse: null,
userse: null,
workHour: 1,
};
},
// 保存 添加分配人员
addInfo(formdata) { addInfo(formdata) {
let parme = { let parme = [
users: [
{ {
userTitle: formdata.userName, userTitle: formdata.userName,
userId: formdata.userId userId: formdata.userId,
} userCardNo: formdata.cardNo,
],
workHour: formdata.workHour, workHour: formdata.workHour,
dispatchId: this.$route.query.id, dispatchId: this.$route.query.id,
routingDetailId: this.$route.query.routid, routingDetailId: this.$route.query.routid,
count: this.$route.query.quantity count: this.$route.query.quantity,
}; },
Api.subcreatehours(parme).then(res => { ];
Api.subcreatemodelhours(parme).then((res) => {
if (res.success) { if (res.success) {
this.laodHorse(); this.laodHorse();
this.addmodal = false; this.addmodal = false;
}else{ } else {
this.addmodal = true; this.addmodal = true;
} }
}); });
} },
} },
}; };
</script> </script>
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment