Commit cf20974b authored by renjintao's avatar renjintao

tasktime

parent 03194a8a
...@@ -3,12 +3,9 @@ ...@@ -3,12 +3,9 @@
<div class="card_box"> <div class="card_box">
<Card class="card_order" v-for="(item,index) in listTasks" :style="order==item.id?'box-shadow: 0px 0px 15px #333;':''" @click.native="goPage(item)" :key="index" :class="item.status==12 ? 'card_border1' : (item.status==14 ? 'card_border2': (item.status==5 ?'card_border3': <Card class="card_order" v-for="(item,index) in listTasks" :style="order==item.id?'box-shadow: 0px 0px 15px #333;':''" @click.native="goPage(item)" :key="index" :class="item.status==12 ? 'card_border1' : (item.status==14 ? 'card_border2': (item.status==5 ?'card_border3':
(item.status==7?'card_border4':(item.status==-1?'card_border5':''))))"> (item.status==7?'card_border4':(item.status==-1?'card_border5':''))))">
<!-- :class="item.status=='未开工'? 'card_border1' : (item.status=='执行中' ? 'card_border2': (item.status=='暂停中' ?'card_border3':
(item.status=='交检中'?'card_border4':(item.status=='交接中'?'card_border5':''))))"-->
<p slot="title"> <p slot="title">
{{item.mesCode}} {{item.mesCode}}
<state code="taskList.status" ref="state" class="fr" :value="item.status" type="text"></state> <state code="orderList.workHourStatus" ref="state" class="fr" :value="item.workHourStatus" type="text"></state>
<!-- <span >{{item.status}}</span> -->
</p> </p>
<p class="order_tit">{{item.productName}}</p> <p class="order_tit">{{item.productName}}</p>
<p> <p>
......
<template> <template>
<div class="gs_set"> <div class="gs_set">
<div style="text-align: center; background: wihte; height: 50px"> <div style="text-align: center; background: wihte; height: 50px">
产品名称: 产品名称:
<span class="">{{ topInfoShow.productName }}</span <span class="">{{ topInfoShow.productName }}</span>&nbsp;&nbsp;&nbsp;&nbsp; 工序号:
>&nbsp;&nbsp;&nbsp;&nbsp; 工序号: <span class="">{{ topInfoShow.taskSeq }}</span>&nbsp;&nbsp;&nbsp;&nbsp; 工序名称:
<span class="">{{ topInfoShow.taskSeq }}</span <span class="">{{ topInfoShow.name }}</span>&nbsp;&nbsp;&nbsp;&nbsp; 派工数量:
>&nbsp;&nbsp;&nbsp;&nbsp; 工序名称: <span class="">{{ topInfoShow.count }}</span>&nbsp;&nbsp;&nbsp;&nbsp; 绩效单件:
<span class="">{{ topInfoShow.name }}</span <span class="">{{ topInfoShow.performanceHours }}</span>&nbsp;&nbsp;&nbsp;&nbsp; 绩效准结:
>&nbsp;&nbsp;&nbsp;&nbsp; 派工数量: <span class="">{{ topInfoShow.performanceWorkingHours }}</span>
<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>
<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" /> <div class="gs_top_box allocated">
<div class="gs_top_box allocated"> <!-- <Icon type="md-pie" /> -->
<!-- <Icon type="md-pie" /> --> <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.userCardNo }}</span> <span class="fr">{{ item.userCardNo }}</span>
</p> </p>
<p>所属车间:{{ item.workShopTitle }}</p> <p>所属车间:{{ item.workShopTitle }}</p>
   
<p>所属班组:{{ item.groupTitle }}</p> <p>所属班组:{{ item.groupTitle }}</p>
<p class="gs_time"> <p class="gs_time">
<span v-show="!item.showInputWorkHour" class="b_size">{{ <span v-show="!item.showInputWorkHour" class="b_size">{{
item.workHour item.workHour
}}</span> }}</span>
<InputNumber <InputNumber style="margin: 10px 0" v-show="item.showInputWorkHour" :max="maxHour" :min="1" :editable="false" v-model="item.workHour" @on-change="testChange(item.workHour)"></InputNumber>
style="margin: 10px 0" 工时
v-show="item.showInputWorkHour" </p>
:max="maxHour"
:min="1"
:editable="false"
v-model="item.workHour"
@on-change="testChange(item.workHour)"
></InputNumber>
工时
</p>
<!-- <p class="gs_p"> <!-- <p class="gs_p">
<span class="b_size">100</span> <span class="b_size">100</span>
</p> </p>
<p class="gs_p"> <p class="gs_p">
<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(item, index)"> <a class="gs_edit" @click="editItem(item, index)">
<Icon type="md-create" /> <Icon type="md-create" />
编辑</a 编辑
> </a>
<a <a class="gs_del" style="position: absolute; right: 0px; width: 50%" @click="delItem(item.id)">
class="gs_del" <Icon type="ios-trash-outline" />删除
style="position: absolute; right: 0px; width: 50%" </a>
@click="delItem(item.id)" </p>
> </Card>
<Icon type="ios-trash-outline" />删除 <a class="gs_card gs_add" @click="addItem" v-show="this.waitHours != 0">
</a> <Icon type="ios-add" style="vertical-align: middle" />
</p> </a>
</Card>
<a class="gs_card gs_add" @click="addItem" v-show="this.waitHours != 0">
<Icon type="ios-add" style="vertical-align: middle" />
</a>
</div> </div>
<div <div style="
style="
text-align: center; text-align: center;
height: 50px; height: 50px;
width: 100%; width: 100%;
position: absolute; position: absolute;
bottom: 25px; bottom: 25px;
" ">
> <Button type="primary" v-noClick @click="submitWorkHour" style="height: 50px; width: 100px">
<Button 提交
type="primary" </Button>
v-noClick &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;
@click="submitWorkHour" <Button class="mr20" style="background: #d0d2d9; height: 50px; width: 100px" v-noClick @click="editCancel">
style="height: 50px; width: 100px" 取消
> </Button>
提交
</Button>
&nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;
<Button
class="mr20"
style="background: #d0d2d9; height: 50px; width: 100px"
v-noClick
@click="editCancel"
>
取消
</Button>
</div> </div>
<!-- 新增弹框 --> <!-- 新增弹框 -->
<Modal <Modal v-model="addmodal" width="1100" :mask-closable="false" title="添加人员" footer-hide>
v-model="addmodal" <addview ref="addview" @on-close="cancel" @on-ok="addInfo"></addview>
width="1100"
:mask-closable="false"
title="添加人员"
footer-hide
>
<addview ref="addview" @on-close="cancel" @on-ok="addInfo"></addview>
</Modal> </Modal>
</div> </div>
</template> </template>
<script> <script>
import addview from "./add"; import addview from "./add";
import Api from "../api"; import Api from "../api";
export default { export default {
name: "starOrder", name: "starOrder",
components: { addview }, components: {
data() { addview
return {
starmodal: false,
msg: "确认要删除吗?",
title: "删除确认",
addmodal: false,
allHours: 0,
waitHours: 0,
cardMan: [
// {
// showInputWorkHour: true,
// userName: "张三",
// cardNo: 123123,
// workHour: 0,
// },
],
cardManCopy: [],
topInfoShow: {},
maxHour: 10,
};
},
created() {
// this.treeHeight = window.innerHeight - 120;
this.Initload();
},
async fetch({ store, params }) {
await store.dispatch("loadDictionary"); // 加载数据字典
},
mounted() {
window.onresize = () => {
///浏览器窗口大小变化
return (() => {
this.treeHeight = window.innerHeight - 120;
})();
};
},
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 (res.result.allHours == res.result.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("获取失败。");
}
});
}, },
// 刷新加载 data() {
laodHorse() { return {
let parme = { starmodal: false,
dispatchId: this.$route.query.id, msg: "确认要删除吗?",
routingDetailId: this.$route.query.routid, title: "删除确认",
count: this.$route.query.quantity, addmodal: false,
}; allHours: 0,
Api.getallhours(parme).then((res) => { waitHours: 0,
if (res.result) { cardMan: [
this.allHours = res.result.allHours; // 总工时 // {
this.waitHours = res.result.waitHours; // 待分配工时 // showInputWorkHour: true,
this.$refs.addview.maxHour = this.waitHours; // userName: "张三",
// cardNo: 123123,
// 工时分配列表 // workHour: 0,
this.getWorkTimelist(); // },
} else { ],
console.log("获取失败。"); cardManCopy: [],
} topInfoShow: {},
}); maxHour: 10,
},
// 默认工时分配
defaultWorkTime(result) {
var length = result.length;
//平均工时
var averageHour = parseInt(this.allHours / length);
//最后一个人的工时
var lastHour = this.allHours - averageHour * (length - 1);
let parme = [];
for (var i = 0; i < length; i++) {
var model = {
userId: result[i].id,
userTitle: result[i].userName,
userCardNo: result[i].cardNo,
workHour: i == length - 1 ? lastHour : averageHour,
dispatchId: this.$route.query.id,
routingDetailId: this.$route.query.routid,
count: this.$route.query.quantity,
}; };
parme.push(model);
}
// 默认工时创建
Api.subcreatemodelhours(parme).then((res) => {
if (res.success) {
// 工时分配列表
this.getWorkTimelist();
} else {
console.log("默认工时创建失败。");
}
});
}, },
// 工时分配列表 created() {
getWorkTimelist() { // this.treeHeight = window.innerHeight - 120;
let parm = { this.Initload();
conditions: [
{
fieldName: "dispatchId",
fieldValue: this.$route.query.id,
conditionalType: "Equal",
},
],
};
Api.getentrylist(parm).then((rest) => {
if (rest.success) {
this.cardMan = rest.result;
} else {
console.log("获取失败。");
}
});
}, },
// 编辑工时 async fetch({
editItem(item, index) { store,
// 关闭其他编辑框 params
for (var i = 0; i < this.cardMan.length; i++) { }) {
if ( await store.dispatch("loadDictionary"); // 加载数据字典
this.cardMan[i] != item &&
this.cardMan[i].showInputWorkHour == true
) {
this.cardMan[i].showInputWorkHour = false;
this.$set(this.cardMan, i, this.cardMan[i]);
}
}
// 编辑或关闭当前编辑框
console.log(item.workHour);
this.maxHour = item.workHour + this.waitHours;
item.showInputWorkHour = !item.showInputWorkHour;
this.$set(this.cardMan, index, item);
}, },
// 删除工时 mounted() {
delItem(itmid) { window.onresize = () => {
this.$Modal.confirm({ ///浏览器窗口大小变化
title: this.title, return (() => {
content: "<p>" + this.msg + "</p>", this.treeHeight = window.innerHeight - 120;
onOk: () => { })();
Api.deletehours(itmid).then((res) => { };
if (res.success) { },
this.laodHorse(); methods: {
this.$Message.success("工时已删除"); // 初始化加载
} else { Initload() {
this.$Message.error("删除失败..."); 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 (res.result.allHours == res.result.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() {
let parme = {
dispatchId: this.$route.query.id,
routingDetailId: this.$route.query.routid,
count: this.$route.query.quantity,
};
Api.getallhours(parme).then((res) => {
if (res.result) {
this.allHours = res.result.allHours; // 总工时
this.waitHours = res.result.waitHours; // 待分配工时
this.$refs.addview.maxHour = this.waitHours;
// 工时分配列表
this.getWorkTimelist();
} else {
console.log("获取失败。");
}
});
},
// 默认工时分配
defaultWorkTime(result) {
var length = result.length;
//平均工时
var averageHour = parseInt(this.allHours / length);
//最后一个人的工时
var lastHour = this.allHours - averageHour * (length - 1);
let parme = [];
for (var i = 0; i < length; i++) {
var model = {
userId: result[i].id,
userTitle: result[i].userName,
userCardNo: result[i].cardNo,
workHour: i == length - 1 ? lastHour : averageHour,
dispatchId: this.$route.query.id,
routingDetailId: this.$route.query.routid,
count: this.$route.query.quantity,
};
parme.push(model);
} }
}); // 默认工时创建
Api.subcreatemodelhours(parme).then((res) => {
if (res.success) {
// 工时分配列表
this.getWorkTimelist();
} else {
console.log("默认工时创建失败。");
}
});
}, },
}); // 工时分配列表
}, getWorkTimelist() {
// 提交 let parm = {
submitWorkHour() { conditions: [{
if (this.cardMan.length == 0) { fieldName: "dispatchId",
return this.$Message.success("没有工时可提交"); fieldValue: this.$route.query.id,
} conditionalType: "Equal",
Api.subupdatehours(this.cardMan).then((res) => { }, ],
if (res.success) { };
let id = this.$route.query.id; Api.getentrylist(parm).then((rest) => {
Api.workhourstatus({ Id: id }).then((res) => { if (rest.success) {
if (res.success) { this.cardMan = rest.result;
this.$Message.success("已提交"); } else {
this.laodHorse(); console.log("获取失败。");
} else { }
this.$Message.error("提交失败..."); });
},
// 编辑工时
editItem(item, index) {
// 关闭其他编辑框
for (var i = 0; i < this.cardMan.length; i++) {
if (
this.cardMan[i] != item &&
this.cardMan[i].showInputWorkHour == true
) {
this.cardMan[i].showInputWorkHour = false;
this.$set(this.cardMan, i, this.cardMan[i]);
}
} }
}); // 编辑或关闭当前编辑框
} else { console.log(item.workHour);
this.$Message.error("提交失败..."); this.maxHour = item.workHour + this.waitHours;
} item.showInputWorkHour = !item.showInputWorkHour;
}); this.$set(this.cardMan, index, item);
}, },
editCancel() { // 删除工时
this.laodHorse(); delItem(itmid) {
}, this.$Modal.confirm({
cancel() { title: this.title,
this.addmodal = false; content: "<p>" + this.msg + "</p>",
}, onOk: () => {
// 打开添加分配人员页面 Api.deletehours(itmid).then((res) => {
addItem() { if (res.success) {
// 添加分配人员时关闭所有编辑框 this.laodHorse();
for (var i = 0; i < this.cardMan.length; i++) { this.$Message.success("工时已删除");
if (this.cardMan[i].showInputWorkHour == true) { } else {
this.cardMan[i].showInputWorkHour = false; this.$Message.error("删除失败...");
this.$set(this.cardMan, i, this.cardMan[i]); }
} });
} },
this.$refs.addview.maxHour = this.waitHours; });
this.addmodal = true; },
// 获取人员 // 提交
let parm = { submitWorkHour() {
partmentId: 0, if (this.cardMan.length == 0) {
search: "", return this.$Message.success("没有工时可提交");
}; }
Api.getusers(parm).then((res) => { Api.subupdatehours(this.cardMan).then((res) => {
let result = res.result; if (res.success) {
this.$refs.addview.listMan = result; let id = this.$route.query.id;
}); Api.workhourstatus({
this.$refs.addview.entity = { Id: id
userCardNo: "", }).then((res) => {
oldUserse: null, if (res.success) {
userse: null, this.$Message.success("已提交");
workHour: 1, this.laodHorse();
}; } else {
}, this.$Message.error("提交失败...");
// 保存 添加分配人员 }
addInfo(formdata) { });
// 修改之前未保存的编辑 } else {
Api.subupdatehours(this.cardMan); this.$Message.error("提交失败...");
}
});
},
editCancel() {
this.laodHorse();
},
cancel() {
this.addmodal = false;
},
// 打开添加分配人员页面
addItem() {
// 添加分配人员时关闭所有编辑框
for (var i = 0; i < this.cardMan.length; i++) {
if (this.cardMan[i].showInputWorkHour == true) {
this.cardMan[i].showInputWorkHour = false;
this.$set(this.cardMan, i, this.cardMan[i]);
}
}
this.$refs.addview.maxHour = this.waitHours;
this.addmodal = true;
// 获取人员
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) {
// 修改之前未保存的编辑
Api.subupdatehours(this.cardMan);
let parme = [ let parme = [{
{ userTitle: formdata.userName,
userTitle: formdata.userName, userId: formdata.userId,
userId: formdata.userId, userCardNo: formdata.cardNo,
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.subcreatemodelhours(parme).then((res) => {
if (res.success) {
this.laodHorse();
} else {
this.addmodal = true;
}
});
this.addmodal = false;
},
// 检验编辑内容
testChange(workHour) {
// 该方法在input内容改变是就会触发进行检测
this.numberChange(workHour); // 调用函数
// 编辑框发生变化时,修改待分配工时
let editWorkHour = 0;
this.cardMan.forEach((item) => {
editWorkHour += item.workHour;
});
this.waitHours = this.allHours - editWorkHour;
},
// 封装控制小数点位数的函数
numberChange(VauleNumber) {
// VauleNumber你想要控制位数的数字
let newNumber = null;
if (VauleNumber >= 0) {
let reg = /.*\..*/;
if (reg.test(VauleNumber)) {
newNumber = parseFloat(VauleNumber.toFixed(1));
} else {
newNumber = VauleNumber;
}
}
return newNumber;
}, },
];
Api.subcreatemodelhours(parme).then((res) => {
if (res.success) {
this.laodHorse();
} else {
this.addmodal = true;
}
});
this.addmodal = false;
},
// 检验编辑内容
testChange(workHour) {
// 该方法在input内容改变是就会触发进行检测
this.numberChange(workHour); // 调用函数
// 编辑框发生变化时,修改待分配工时
let editWorkHour = 0;
this.cardMan.forEach((item) => {
editWorkHour += item.workHour;
});
this.waitHours = this.allHours - editWorkHour;
},
// 封装控制小数点位数的函数
numberChange(VauleNumber) {
// VauleNumber你想要控制位数的数字
let newNumber = null;
if (VauleNumber >= 0) {
let reg = /.*\..*/;
if (reg.test(VauleNumber)) {
newNumber = parseFloat(VauleNumber.toFixed(1));
} else {
newNumber = VauleNumber;
}
}
return newNumber;
}, },
},
}; };
</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