Commit bf640b11 authored by renjintao's avatar renjintao

Merge branch 'product' of git.mes123.com:zhouyx/mes-ui into product-rjt

parents 47ac4e3b 909c5f5d
...@@ -9,16 +9,7 @@ export default { ...@@ -9,16 +9,7 @@ export default {
cmtwostepschedule(params) { cmtwostepschedule(params) {
return Api.post(`${PlanUrl}/messchedule/cmtwostepschedule`, params); //整机排产--二级排产 return Api.post(`${PlanUrl}/messchedule/cmtwostepschedule`, params); //整机排产--二级排产
}, },
// getlist(params) { shiftoutofcmorflpool(params) {
// return Api.get(`${PlanUrl}/mes_sys_shop_info/getlist`, params); //手工排产:查询所在车间下的所有班组信息 return Api.post(`${PlanUrl}/messchedule/shiftoutofcmorflpool`, params); //删除订单
// }, },
// getbyshopid(params) {
// return Api.get(`${PlanUrl}/mes_sys_user_info/getuserbyshopid`, params); //手工排产:根据班组ID,加载人员信息
// },
// getlistEquip(params) {
// return Api.get(`${PlanUrl}/mes_equip_info/getlist`, params); //手工排产:获取所在车间的设备
// },
// getbyequippk(params) {
// return Api.get(`${PlanUrl}/mes_sys_user_info/getuserbyequippk`, params); //手工排产:根据设备ID,加载人员信息
// },
} }
\ No newline at end of file
This diff is collapsed.
...@@ -12,19 +12,8 @@ export default { ...@@ -12,19 +12,8 @@ export default {
fltwostepschedule(params) { fltwostepschedule(params) {
return Api.post(`${PlanUrl}/messchedule/fltwostepschedule`, params); //流水二级 return Api.post(`${PlanUrl}/messchedule/fltwostepschedule`, params); //流水二级
}, },
// gettaskseqinfo(params) { shiftoutofcmorflpool(params) {
// return Api.get(`${apsManualUrl}/aps/gettaskseqinfo`, params); //根据订单获取全部工序数据 return Api.post(`${PlanUrl}/messchedule/shiftoutofcmorflpool`, params); //删除订单
// }, },
// getlist(params) {
// return Api.get(`${apsManualUrl}/mes_sys_shop_info/getlist`, params); //手工排产:查询所在车间下的所有班组信息
// },
// getbyshopid(params) {
// return Api.get(`${apsManualUrl}/mes_sys_user_info/getuserbyshopid`, params); //手工排产:根据班组ID,加载人员信息
// },
// getlistEquip(params) {
// return Api.get(`${apsManualUrl}/mes_equip_info/getlist`, params); //手工排产:获取所在车间的设备
// },
// getbyequippk(params) {
// return Api.get(`${apsManualUrl}/mes_sys_user_info/getuserbyequippk`, params); //手工排产:根据设备ID,加载人员信息
// },
} }
\ No newline at end of file
<template>
<div class="checkbox-list">
<Row class="check-title">
<Col span="20">
<div>
<!-- :indeterminate="indeterminate" -->
<!-- :label="resourcesType==0?singleList.shop_name:resourcesType==2?singleList.equip_name:''" -->
<Checkbox
:label="singleList.equip_name"
v-model="checkAll"
@click.prevent.native="handleCheckAll(singleList.shop_id)"
>{{singleList.equip_name}}</Checkbox>
<!-- {{resourcesType==0?singleList.shop_name:resourcesType==2?singleList.equip_name:''}} -->
</div>
</Col>
<Col span="4">
<div class="icon-down">
<Icon type="ios-arrow-down" v-if="!singleList.isClick" @click="upDown(singleList)"></Icon>
<Icon type="ios-arrow-up" v-if="singleList.isClick" @click="upDown(singleList)"></Icon>
</div>
</Col>
</Row>
<ul v-if="singleList.isClick">
<li
ref="liId"
v-for="(item,index) in list"
:key="index"
@click="onclick(index)"
>{{item.name}}&nbsp&nbsp{{item.class}}</li>
</ul>
<!-- <CheckboxGroup
v-model="checkAllGroup"
@on-change="checkAllGroupChange"
v-if="singleList.isClick"
>-->
<!-- :label="resourcesType==0?item.user_name:resourcesType==2?item.equip_name:''" -->
<!-- <Checkbox v-for="(item,index) in list" :key="index" :label="item.name">{{item.name}}</Checkbox>
</CheckboxGroup>-->
</div>
</template>
<script>
import Api from "./api";
export default {
name: "CheckboxList",
props: ["singleList"],
data() {
return {
chooseNum: null,
indeterminate: true,
checkAll: false,
checkAllGroup: [],
typeIcon: "ios-arrow-down",
show: -1,
list: [
{
name: "张芳",
class: "1级"
},
{
name: "张芳",
class: "1级"
},
{
name: "张芳",
class: "1级"
},
{
name: "张芳",
class: "1级"
}
],
taglistData: []
};
},
mounted() {
// this.checkList()
},
methods: {
onclick(index) {
if (this.$refs.liId[index].className.length <= 0) {
this.$refs.liId[index].className = "li-focus"; // 添加类
let list = [];
this.$refs.liId.forEach((element, index) => {
if (this.$refs.liId[index].className) {
list.push(this.$refs.liId[index].className);
}
});
if (list.length == this.list.length) {
this.checkAll = true;
}
} else {
this.$refs.liId[index].className = ""; // 选中再取消的情况
this.checkAll = false;
}
},
handleCheckAll(id) {
this.checkAll = !this.checkAll;
if (this.checkAll) {
this.$refs.liId.forEach((element, index) => {
this.$refs.liId[index].className = "li-focus"; // 添加类
});
} else {
this.$refs.liId.forEach((element, index) => {
this.$refs.liId[index].className = ""; // 选中再取消的情况
});
}
// // console.log(this.list)
// // this.list.map((u) => {
// // console.log(u)
// // })
// // this.checkList(id)
// this.checkAll = !this.checkAll;
// if (this.checkAll) {
// let listNew = [];
// this.list.map(u => {
// if (this.resourcesType == 0) {
// listNew.push(u.user_name);
// } else if (this.resourcesType == 2) {
// listNew.push(u.equip_name);
// }
// });
// this.checkAllGroup = listNew;
// this.$emit("changeData", this.checkAllGroup);
// } else {
// this.checkAllGroup = [];
// }
},
// checkAllGroupChange(data) {
// console.log(data);
// console.log(this.list);
// this.checkAllGroup = data;
// this.$emit("changeData", this.checkAllGroup);
// if (data.length === this.list.length) {
// this.indeterminate = false;
// this.checkAll = true;
// } else if (data.length > 0) {
// this.indeterminate = true;
// this.checkAll = false;
// } else {
// this.indeterminate = false;
// this.checkAll = false;
// }
// },
checkList(id) {
if (this.resourcesType == 0) {
//班组
Api.getbyshopid({ shop_id: id }).then(r => {
// console.log(r)
if (r.success) {
r.result.forEach(e => {
e.ischeckBox = false;
});
this.list = r.result;
}
});
} else if (this.resourcesType == 2) {
//设备
Api.getbyequippk({ equip_pk: 91 }).then(r => {
// console.log(r)
if (r.success) {
r.result.forEach(e => {
e.ischeckBox = false;
});
this.list = r.result;
}
});
}
},
upDown(post) {
if (!post.isClick) {
this.$set(post, "isClick", true);
this.checkList(post.shop_id);
} else {
this.$set(post, "isClick", false);
}
}
}
// watch: {
// list: {
// handler(newVal, oldVal) {
// console.log('深度监听', newVal, oldVal)
// },
// deep: true
// }
// }
};
</script>
<style lang="less" scoped>
.checkbox-list {
.icon-down {
text-align: right;
cursor: pointer;
}
.check-title {
height: 40px;
line-height: 40px;
padding: 0 10px;
background: rgba(38, 128, 235, 0.5);
}
ul {
min-height: 60px;
padding: 10px 5px;
display: flex;
li {
list-style-type: none;
text-align: center;
width: 100px;
height: 30px;
line-height: 30px;
border-radius: 20px;
margin: 0 5px;
cursor: pointer;
background: rgba(38, 128, 235, 0.1);
}
li:hover {
border: 1px solid rgba(38, 128, 235, 0.5);
}
.li-focus {
border: 1px solid rgba(38, 128, 235, 0.5);
}
}
}
</style>
\ No newline at end of file
This diff is collapsed.
<template>
<div class="list">
<Timeline>
<TimelineItem v-for="(item, index) in result" :key="index">
<Badge :count="index+ 1" slot="dot" :type="type(index)"></Badge>
<div @click="sets(item.resources_Type)" class="set-name">{{item.taskname}}</div>
<div>{{item.equip_id}}</div>
<div>{{item.equip_type}}</div>
<div>{{item.resources_Type_Name}}</div>
</TimelineItem>
</Timeline>
<div>
<Drawer title="排产设置盘" :closable="false" v-model="set" width="45%">
<Set :resourcesType="resourcesType"></Set>
</Drawer>
</div>
</div>
</template>
<script>
import Set from './set'
import Api from './api'
export default {
name: 'set',
components: {
Set
},
props: {
result: Array
},
data() {
return {
set: false,
dataList: [],
resourcesType: null
}
},
methods: {
type(i) {
if (i == 0) {
return 'normal'
} else if (i == 1) {
return 'normal'
} else if (i == 2) {
return 'normal'
} else if (i === this.result.length) {
return 'success'
}
},
sets(name) {
this.resourcesType = name
if (this.resourcesType == 0 || this.resourcesType == 2) {
this.set = true
} else {
this.set = false
// this.$Message.info('没有设置盘')
}
}
}
}
</script>
<style lang="less" scoped>
.list {
padding-left: 10px;
.set-name {
font-weight: bold;
}
.set-name:hover {
cursor: pointer;
}
}
</style>
\ No newline at end of file
<template> <template>
<div class="set"> <div class="set">
<Form :model="formItem" :label-width="100"> <Form :model="formItem" :label-width="100" :rules="ruleValidate" ref="formItem">
<FormItem label="工时"> <FormItem label="工时" prop="time">
<DatePicker <DatePicker
type="datetimerange" type="datetimerange"
format="yyyy-MM-dd HH:mm" format="yyyy-MM-dd HH:mm:ss"
placeholder="请选择工时" placeholder="请选择工时"
@on-change="changeFormat" @on-change="changeFormat"
v-model="formItem.time" v-model="formItem.time"
style="width:300px" style="width:300px"
></DatePicker> ></DatePicker>
</FormItem> </FormItem>
<FormItem label="类型"> <!-- <FormItem label="类型">
<RadioGroup v-model="formItem.radio"> <RadioGroup v-model="formItem.radio">
<Radio label="0">人员</Radio> <Radio label="0">人员</Radio>
<Radio label="1">班组</Radio> <Radio label="1">班组</Radio>
</RadioGroup> </RadioGroup>
</FormItem>-->
<FormItem label="人员" v-if="mode==1" prop="userIds">
<UserSelect
ref="userSelected"
v-model="formItem.userIds"
style="width:300px"
:multiple="true"
/>
</FormItem> </FormItem>
<FormItem label="人员分组形式" v-if="formItem.radio==0"> <FormItem label="班组" v-if="mode==2" prop="shopId">
<Dictionary <Select v-model="formItem.shopId" placeholder="请选择" style="width:300px">
disabled <Option
code="aps.scheduling.groupingForm" v-for="(item,index) in listClass"
v-model="formItem.resourcesType"
type="radio"
></Dictionary>
</FormItem>
<FormItem label="班组" v-if="formItem.radio==1">
<Select v-model="formItem.shopId" style="width:300px" multiple>
<Option v-for="item in classList" :value="item.shopId" :key="item.shopId">{{ item.label }}</Option>
</Select>
</FormItem>
<FormItem v-if="formItem.radio==0">
<!-- <UserSelect ref="userSelected" v-model="formItem.DistributeMainRouting" /> -->
<div class="list-check">
<Checkbox-List
:single-list="li"
ref="groups"
@changeData="setData"
v-for="(li,index) in listGroup"
:key="index"
></Checkbox-List>
</div>
</FormItem>
<!-- v-if="tagGroup.lenght>0" -->
<FormItem label="已选择" v-if="formItem.radio==0">
<div class="tag-list">
<div v-for="(item,index) in tagGroup" :key="index" class="tag-group">
<span>{{item.name}}&nbsp&nbsp{{item.class}}</span>
<Icon type="md-close" @click="closeTag" />
</div>
<!-- <Tag
color="rgba(38,128,235,0.3)"
closable
@on-close="handleClose"
:key="index" :key="index"
v-for="(val, index) in tagGroup" :value="item.value"
>{{val.name}}</Tag>--> :label="item.label"
</div> style="display:none"
></Option>
<Tree key="mytree" :data="workShop" ref="mytree" :render="renderContent"></Tree>
</Select>
</FormItem> </FormItem>
<FormItem label="备注"> <FormItem label="备注">
<Input <Input
v-model="formItem.textarea" v-model="formItem.remark"
type="textarea" type="textarea"
:autosize="{minRows: 2,maxRows: 5}" :autosize="{minRows: 2,maxRows: 5}"
placeholder="请输入备注信息" placeholder="请输入备注信息"
...@@ -69,157 +47,90 @@ ...@@ -69,157 +47,90 @@
</FormItem> </FormItem>
<FormItem> <FormItem>
<Button style="margin-left: 8px" @click="closeOk">取消</Button> <Button style="margin-left: 8px" @click="closeOk">取消</Button>
<Button type="primary" @click="lowerHair">排产</Button> <Button type="primary" @click="Determine('formItem')">确定</Button>
</FormItem> </FormItem>
</Form> </Form>
</div> </div>
</template> </template>
<script> <script>
import CheckboxList from "./checkboxList";
import Api from "./api"; import Api from "./api";
export default { export default {
name: "set", name: "set",
components: {
CheckboxList
},
props: { props: {
group: { detailId: Number,
default: Object, indexId: Number,
orderId: Number, mode: Number
routingHeaderId: Number
}
}, },
data() { data() {
return { return {
orderId: 0, //订单id orderId: 0, //订单id
routingHeaderId: 0, //工艺规程id routingHeaderId: 0, //工艺规程id
formItem: { formItem: {
resourcesType: 0,
radio: "0", radio: "0",
time: "", time: "",
beginTime: "", beginTime: "",
endTime: "", endTime: "",
textarea: "" remark: "",
}, departmentTitle: "",
listGroup: [ shopId: "",
shopName: ""
},
workShop: [],
listClass: [],
ruleValidate: {
time: [
{ {
equip_name: "调试组", required: true,
isClick: true type: "date",
}, message: "请选择时间",
{ trigger: "change"
equip_name: "装配组"
} }
], ],
tagGroup: [ userIds: [
{
id: 1,
name: "张芳",
class: "1级"
},
{ {
id: 2, required: true,
name: "张芳", message: "请选择人员",
class: "1级" trigger: "change"
},
{
id: 4,
name: "张芳",
class: "1级"
},
{
id: 5,
name: "张芳",
class: "1级"
} }
], ],
classList: [ shopId: [
{
shopId: "0",
label: "调试组"
},
{
shopId: "1",
label: "装配组"
},
{
shopId: "2",
label: "计划组"
},
{ {
shopId: "3", required: true,
label: "管理组" message: "请选择班组",
trigger: "change"
} }
] ]
}
}; };
}, },
mounted() {}, mounted() {
// computed: { this.getWorkshop();
// tagList() { },
// if (this.tagdata.length > 0) {
// let items = this.tagdata.filter((u) => {
// return
// })
// return items
// } else {
// return []
// }
// }
// },
methods: { methods: {
lowerHair(v) { //确定
if (this.formItem.radio == 0) { Determine(name) {
//一级排产选择人员 if (this.formItem.time == "") {
let urseId = []; this.$Message.error("工时不能为空");
for (var i = 0; i < this.tagGroup.length; i++) { return false;
urseId.push(this.tagGroup[i].id); } else if (this.mode == 1) {
} if (!this.formItem.userIds) {
let items = [ this.$Message.error("人员不能为空");
{ return false;
detailId: 0,
userIds: urseId,
quantity: 0,
beginTime: this.formItem.beginTime,
endTime: this.formItem.endTime
}
];
let params1 = {
orderIds: this.group.orderId,
routingHeaderId: this.group.routingHeaderId,
items: items
};
Api.flonestepschedule(params1).then(r => {
if (r.success) {
} }
}); } else if (this.mode == 2) {
} else if (this.formItem.radio == 1) { if (!this.formItem.shopId) {
//二级排产选择班组 this.$Message.error("班组不能为空");
let items = [ return false;
{
detailId: 0,
userIds: urseId,
quantity: 0,
beginTime: this.formItem.beginTime,
endTime: this.formItem.endTime
} }
];
let params2 = {
orderIds: this.group.orderId,
routingHeaderId: this.group.routingHeaderId,
items: items
};
Api.fltwostepschedule(params2).then(r => {
if (r.success) {
}
});
} }
this.formItem.detailId = this.detailId;
this.$emit("on-DetermineOk", this.formItem, this.indexId);
}, },
closeOk() { closeOk() {
this.$emit("closeOk"); this.$emit("closeOk");
}, },
handleClose(nodeKey) {
// this.$refs.users.handleCheck({ checked: false, nodeKey: nodeKey });
},
setData(val) { setData(val) {
this.tagGroup = val; this.tagGroup = val;
}, },
...@@ -228,15 +139,50 @@ export default { ...@@ -228,15 +139,50 @@ export default {
this.formItem.beginTime = val[0]; this.formItem.beginTime = val[0];
this.formItem.endTime = val[1]; this.formItem.endTime = val[1];
}, },
closeTag() {} closeTag() {},
//部门(班组)
getWorkshop() {
let url = `${systemUrl}/user/userdepartmentsofworkshop`;
this.$api.get(url).then(r => {
if (r.result) {
this.workShop = r.result;
}
});
},
renderContent(h, { root, node, data }) {
//渲染树的样式
return h(
"span",
{
style: {
cursor: "pointer"
},
on: {
click: () => {
this.handleSelect(data); //手动选择树节点
}
}
},
data.title
);
},
handleSelect(data) {
let obj = {
label: data.title,
value: data.value
};
this.listClass = [];
this.listClass.push(obj);
this.formItem.shopId = this.listClass[0].value;
this.formItem.shopName = this.listClass[0].label;
}
}, },
watch: { watch: {
// resourcesType(v) { "formItem.radio"(v) {
// if (v != null) { if (v == 1) {
// this.formItem.resourcesType = v; this.getWorkshop();
// this.getList(v); }
// } }
// }
} }
}; };
</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