factory_web/src/views/wpm_gx/mtask_deliver.vue

203 lines
4.6 KiB
Vue

<template>
<el-drawer
title="任务分配"
v-model="visible"
:size="'90%'"
destroy-on-close
@closed="$emit('closed')"
>
<div>
<el-card style="width: 100%" header="基本信息" shadow="never">
<el-descriptions>
<el-descriptions-item label="名称">{{
mtaskObj.material_out_name
}}</el-descriptions-item>
<el-descriptions-item label="任务编号">{{
mtaskObj.number
}}</el-descriptions-item>
<el-descriptions-item label="任务量">{{
mtaskObj.count
}}</el-descriptions-item>
<el-descriptions-item label="开始时间">{{
mtaskObj.start_date
}}</el-descriptions-item>
<el-descriptions-item label="结束时间">{{
mtaskObj.end_date
}}</el-descriptions-item>
</el-descriptions>
</el-card>
<!-- 选择人员 -->
<el-form
:model="form"
:rules="rules"
label-width="100px"
ref="form"
style="margin-top: 10px;margin-bottom:50px"
>
<el-row>
<el-col :span="24">
<el-form-item label="操作人员">
<el-checkbox-group
v-model="choose_user"
@change="userChange"
>
<el-checkbox class="checkboxItem" v-for="item in userList" :key="item.id" :label="item.name" :value="item.id">
{{ item.name }}
</el-checkbox>
</el-checkbox-group>
</el-form-item>
</el-col>
</el-row>
<el-divider style="margin-top:0"></el-divider>
<el-row>
<el-col :md="6" :sm="8" v-for="item in cUserList" :key="item.id">
<el-form-item :label="item.handle_user_name">
<el-input-number
v-model="item.count"
:precision="0"
:min="1"
style="width: 90%"
controls-position="right"
/>
</el-form-item>
</el-col>
</el-row>
</el-form>
<div class="footer">
<el-button type="primary" @click="mtaskb_submit">提交</el-button>
</div>
</div>
</el-drawer>
</template>
<script>
export default {
props: {
mgroup: {
type: String,
default: "",
},
dept: {
type: String,
default: "",
},
},
emits: ["success", "closed"],
data() {
return {
form: {},
apiObj: null,
loading: false,
visible: false,
isSaveing: false,
mtaskObj:{},
userList:[],
cUserList:[],//
choose_user:[],//已选人员id
rules: {
count_use: [
{
required: true,
message: "请输入领取数量",
trigger: "blur",
},
],
},
};
},
mounted() {
this.$nextTick(() => {
this.getUsers();
})
},
methods: {
open(data) {
let that = this;
this.visible = true;
this.mtaskObj = data;
that.cUserList = data.mtaskb;
that.choose_user = [];
if(that.cUserList.length>0){
that.cUserList.forEach(item=>{
that.choose_user.push(item.handle_user);
})
}
},
getUsers() {
let that = this;
that.$API.system.user.list.req({ belong_dept: that.dept, page: 0 }).then(res => {
// that.$API.system.user.list.req({ page:1,page_size:60}).then(res => {
that.userList = res;
})
},
userChange(){
let that = this;
let average = Math.floor( that.mtaskObj.count/that.choose_user.length);
let remainder = that.mtaskObj.count%that.choose_user.length;//取余
that.cUserList = [];
console.log('that.choose_user',that.choose_user);
that.userList.forEach(item=>{
if(that.choose_user.indexOf(item.id)>-1){
let obj = {};
obj.handle_user_name = item.name;
obj.handle_user = item.id;
obj.count = average;
that.cUserList.push(obj);
}
})
console.log('that.cUserList',that.cUserList);
for(let i=0;i<remainder;i++){
that.cUserList[i].count += 1;
}
},
mtaskb_submit() {
let that = this;
console.log(that.cUserList);
let sum = 0;
that.cUserList.forEach(item => {
sum+=item.count;
});
console.log(sum-that.mtaskObj.count)
if(sum-that.mtaskObj.count==0){
that.isSaveing = true;
that.$API.pm.mtaskbAdd.req(that.mtaskObj.id,that.cUserList).then((res) => {
that.isSaveing = false;
that.visible = false;
this.$emit("success");
that.$message.success("提交成功");
}).catch((e) => {
that.isSaveing = false;
});
}else{
that.$message.error("分配数量与任务总数不匹配,请确认后再提交");
}
},
handleEditSuccess() {},
//设置过滤项
setFilters(filters) {
this.selectionFilters = filters;
this.setFiltersVisible = true;
},
},
};
</script>
<style scoped>
.checkboxItem{
width:80px;
}
.footer{
position: absolute;
bottom: 0px;
width: 100%;
z-index: 10;
text-align: center;
background: #ffffff;
height: 40px;
}
</style>