Commit b7f7b50d authored by 周远喜's avatar 周远喜

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

parents 4e1a4474 0783264b
......@@ -339,9 +339,12 @@
color: #fff;
}
}
<<<<<<< HEAD
// .ivu-select-dropdown{
// z-index: 910!important;
// }
=======
>>>>>>> 0783264b39c101d895bac10d6ee7ec375f8653a3
.manyTabs {
.ivu-tabs-bar {
position: absolute;
......
<template>
<div>
<h3 class="title">
<Input search placeholder="请输入查询条件" style="width:72%" clearable v-model="treeInputSearch" />
<ButtonGroup class="fr" size="small">
<Button>
<Icon
:type="expand ? 'md-arrow-dropright' : 'md-arrow-dropdown'"
size="16"
@click="toggle"
title="展开/合并"
/>
</Button>
<Button>
<Icon type="md-refresh" size="16" @click="loadTree" title="刷新" />
</Button>
</ButtonGroup>
</h3>
<div class="tree" :style="{height:divHeight}">
<Tree
:data="searchList"
@on-select-change="selectTreeNode"
/>
</div>
</div>
</template>
<script>
export default {
name: 'technologyTree',
data() {
return {
expand: false,
treeData: [],
treeInputSearch: '',
}
},
props: {
type: {
type: Number,
default: 0
}
},
computed:{
searchList() {
let nodeList = this.treeData
var text = this.treeInputSearch
var newNodeList = []
function searchTree(nodeLists, value) {
for (let i = 0; i < nodeLists.length; i++) {
if (nodeLists[i].title.indexOf(value) != -1) {
newNodeList.push(nodeLists[i])
} else if (nodeLists[i].children.length > 0) {
searchTree(nodeLists[i].children, value)
}
}
}
if (text != '') {
searchTree(nodeList, text)
} else {
return nodeList
}
return newNodeList
}
},
mounted() {
window.onresize = () => {
///浏览器窗口大小变化
return (() => {
window.screenHeight = window.innerHeight;
this.divHeight = window.innerHeight - 260 + "px";
})();
};
},
created() {
this.loadTree()
var theight = window.innerHeight - 260 + 'px'
this.divHeight = theight
},
methods: {
toggle() {
this.expand = !this.expand
this.loadTree()
},
async loadTree() {
var sumData = []
this.$http.order.getallselecttree().then((res) => {
if (res.result) {
for (var i = 0; i < res.result.length; i++) {
sumData = sumData.concat(res.result[i])
}
this.treeData = sumData
} else {
this.$Message.error('加载产品树失败!')
}
})
},
selectTreeNode(value) {
if (value != null && value.length > 0) {
this.ProductSelected = value
}
if (value.length > 0) {
this.ids = []
this.getAllIds(value)
if (this.ids.length > 0) {
this.productid = this.ids.join(',')
} else {
this.productid = '-1'
}
this.pageindex = 1
this.loaddata()
}
},
//重构左侧树
getTrees(trees) {
var expand = this.expand
trees.forEach((data, index) => {
var that = this
data.expand = expand
if (data.children.length > 0) {
this.getTrees(data.children)
}
})
return trees
},
renderContent(h, { root, node, data }) {
return h(
'span',
{
style: {
color: data.isClick ? '#000' : '#bbb', //根据选中状态设置样式
cursor: data.isClick ? 'pointer' : '',
background: node.node.selected&&data.isClick ? '#AAD8D4' : '#ffffff',
paddingLeft: '10px',
paddingRight: '10px',
paddingTop: '3px',
paddingBottom: '3px'
},
on: {
// click: () => {
// if (!node.node.selected) {
// this.$refs.tree.handleSelect(node.nodeKey) //手动选择树节点
// }
// }
}
},
data.title
)
},
//得到此树节点下所有是产品的Id
getAllIds(trees) {
trees.forEach((data, index) => {
var that = this
if (data.isClick) {
this.ids.push(data.id)
}
if (data.children.length > 0) {
this.getAllIds(data.children)
}
})
},
change(value) {
if (value.length > 0) {
if (value[0].isClick) {
this.ids = []
this.getAllIds(value)
if (this.ids.length > 0) {
this.$emit('storeIds', this.ids)
//this.easySearch.storeId.value = this.ids
} else {
this.$emit('storeIds', [-1])
}
} else {
this.$Message.error('当前操作用户无此库位的权限')
this.$emit('storeIds', [-1])
}
}
},
change1(value) {
if (value.length > 0) {
this.ids = []
this.getAllIds(value)
if (this.ids.length > 0) {
this.$emit('storeIds', this.ids)
} else {
this.$emit('storeIds', [-1])
}
}
}
}
}
</script>
import Api from '@/plugins/request'
export default {
getmesorder(params) {
return Api.get(`${apsManualUrl}/aps/getmesorder`, params); //待排产订单数据
getpooltypeorderlist(params) {
return Api.get(`${PlanUrl}/messchedule/getpooltypeorderlist`, params); //排产池订单数据
},
gettaskseqinfo(params) {
return Api.get(`${apsManualUrl}/aps/gettaskseqinfo`, params); //根据订单获取全部工序数据
cmonestepschedule(params) {
return Api.post(`${PlanUrl}/messchedule/cmonestepschedule`, 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,加载人员信息
cmtwostepschedule(params) {
return Api.post(`${PlanUrl}/messchedule/cmtwostepschedule`, params); //整机排产--二级排产
},
// getlist(params) {
// return Api.get(`${PlanUrl}/mes_sys_shop_info/getlist`, 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
......@@ -20,7 +20,15 @@
</div>
</Col>
</Row>
<div class="row-name">张芳 &nbsp&nbsp 1级</div>
<ul v-show="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"
......@@ -38,6 +46,7 @@ export default {
props: ["singleList"],
data() {
return {
chooseNum: null,
indeterminate: true,
checkAll: false,
checkAllGroup: [],
......@@ -45,7 +54,20 @@ export default {
show: -1,
list: [
{
name: "张芳"
name: "张芳",
class: "1级"
},
{
name: "张芳",
class: "1级"
},
{
name: "张芳",
class: "1级"
},
{
name: "张芳",
class: "1级"
}
],
taglistData: []
......@@ -56,47 +78,74 @@ export default {
// 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) {
// 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.$refs.liId.forEach((element, index) => {
this.$refs.liId[index].className = "li-focus"; // 添加类
});
this.checkAllGroup = listNew;
this.$emit("changeData", this.checkAllGroup);
} else {
this.checkAllGroup = [];
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);
// 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;
}
},
// 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) {
//班组
......@@ -145,6 +194,7 @@ export default {
.checkbox-list {
.icon-down {
text-align: right;
cursor: pointer;
}
.check-title {
height: 40px;
......@@ -152,17 +202,27 @@ export default {
padding: 0 10px;
background: rgba(38, 128, 235, 0.5);
}
.row-name {
text-align: center;
width: 100px;
height: 30;
border-radius: 20px;
margin: 5px;
cursor: pointer;
background: rgba(38, 128, 235, 0.2);
}
.row-name:hover {
border: 1px solid 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.
import Api from '@/plugins/request'
export default {
getmesorder(params) {
return Api.get(`${apsManualUrl}/aps/getmesorder`, params); //待排产订单数据
getpooltypeorderlist(params) {
return Api.get(`${PlanUrl}/messchedule/getpooltypeorderlist`, params); //排产池订单数据
},
gettaskseqinfo(params) {
return Api.get(`${apsManualUrl}/aps/gettaskseqinfo`, params); //根据订单获取全部工序数据
getroutingdetails(params) {
return Api.get(`${PlanUrl}/messchedule/getroutingdetails`, params); //工序信息
},
getlist(params) {
return Api.get(`${apsManualUrl}/mes_sys_shop_info/getlist`, params); //手工排产:查询所在车间下的所有班组信息
flonestepschedule(params) {
return Api.post(`${PlanUrl}/messchedule/flonestepschedule`, 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,加载人员信息
fltwostepschedule(params) {
return Api.post(`${PlanUrl}/messchedule/fltwostepschedule`, params); //流水二级
},
// gettaskseqinfo(params) {
// return Api.get(`${apsManualUrl}/aps/gettaskseqinfo`, 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 style="border-bottom: 1px solid #e9e9e9;margin-bottom:6px;">
<Row class="check-title">
<Col span="20">
<div>
<!-- :indeterminate="indeterminate" -->
<!-- :label="resourcesType==0?singleList.shop_name:resourcesType==2?singleList.equip_name:''" -->
<Checkbox
:label="resourcesType==0?singleList.shop_name:resourcesType==2?singleList.equip_name:''"
:label="singleList.equip_name"
v-model="checkAll"
@click.prevent.native="handleCheckAll(singleList.shop_id)"
>{{resourcesType==0?singleList.shop_name:resourcesType==2?singleList.equip_name:''}}</Checkbox>
>{{singleList.equip_name}}</Checkbox>
<!-- {{resourcesType==0?singleList.shop_name:resourcesType==2?singleList.equip_name:''}} -->
</div>
</Col>
<Col span="4">
......@@ -18,112 +20,163 @@
</div>
</Col>
</Row>
<CheckboxGroup
<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"
>
<Checkbox
:label="resourcesType==0?item.user_name:resourcesType==2?item.equip_name:''"
v-for="(item,index) in list"
:key="item.user_id"
></Checkbox>
</CheckboxGroup>
>-->
<!-- :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'
import Api from "./api";
export default {
name: 'CheckboxList',
props: ['singleList', 'resourcesType'],
name: "CheckboxList",
props: ["singleList"],
data() {
return {
chooseNum: null,
indeterminate: true,
checkAll: false,
checkAllGroup: [],
typeIcon: 'ios-arrow-down',
typeIcon: "ios-arrow-down",
show: -1,
list: [],
list: [
{
name: "张芳",
class: "1级"
},
{
name: "张芳",
class: "1级"
},
{
name: "张芳",
class: "1级"
},
{
name: "张芳",
class: "1级"
}
],
taglistData: []
}
};
},
mounted() {
// this.checkList()
},
methods: {
handleCheckAll(id) {
// 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)
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);
}
})
this.checkAllGroup = listNew
this.$emit('changeData', this.checkAllGroup)
});
if (list.length == this.list.length) {
this.checkAll = true;
}
} else {
this.checkAllGroup = []
this.$refs.liId[index].className = ""; // 选中再取消的情况
this.checkAll = false;
}
},
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
handleCheckAll(id) {
this.checkAll = !this.checkAll;
if (this.checkAll) {
this.$refs.liId.forEach((element, index) => {
this.$refs.liId[index].className = "li-focus"; // 添加类
});
} else {
this.indeterminate = false
this.checkAll = false
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) => {
Api.getbyshopid({ shop_id: id }).then(r => {
// console.log(r)
if (r.success) {
r.result.forEach((e) => {
e.ischeckBox = false
})
this.list = r.result
r.result.forEach(e => {
e.ischeckBox = false;
});
this.list = r.result;
}
})
});
} else if (this.resourcesType == 2) {
//设备
Api.getbyequippk({ equip_pk: 91 }).then((r) => {
Api.getbyequippk({ equip_pk: 91 }).then(r => {
// console.log(r)
if (r.success) {
r.result.forEach((e) => {
e.ischeckBox = false
})
this.list = r.result
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)
this.$set(post, "isClick", true);
this.checkList(post.shop_id);
} else {
this.$set(post, 'isClick', false)
this.$set(post, "isClick", false);
}
}
}
......@@ -135,12 +188,41 @@ export default {
// 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
......@@ -5,8 +5,8 @@
<Col :span="6" class="chan-chi">排产池</Col>
<Col :span="18" class="l-ringht">
<RadioGroup v-model="status" type="button" @on-change="changeStatus" size="small">
<Radio label="0">全部</Radio>
<Radio label="1">未排产</Radio>
<Radio label="-1">全部</Radio>
<Radio label="0">未排产</Radio>
<Radio label="2">已排查</Radio>
</RadioGroup>
</Col>
......@@ -15,7 +15,7 @@
class="left-body"
v-for="(li,index) in list"
:key="index"
@click="listData(li.part_task_pk,index)"
@click="listData(li)"
:class="isactive == index ? 'addclass' : '' "
>
<Row class="title-i">
......@@ -37,7 +37,7 @@
<Row class="g-list">
<Col :span="2" class="chan-chi">工序列表</Col>
<Col :span="22" class="l-ringht">
<RadioGroup v-model="status" type="button" @on-change="changeStatus" size="small">
<RadioGroup v-model="status" type="button" @on-change="changeRodio" size="small">
<Radio label="0">全部</Radio>
<Radio label="1">未排产</Radio>
<Radio label="2">已排查</Radio>
......@@ -45,98 +45,194 @@
</Col>
</Row>
<div class="right-body">
<List :result="result"></List>
<div class="list">
<Timeline>
<TimelineItem v-for="(item, index) in result" :key="index">
<Badge :count="index+ 1" slot="dot" :type="type(index)"></Badge>
<div class="set-name">
<span @click="sets(item.routingHeaderId)">{{item.taskname}}</span> &nbsp
<Tooltip content="拆分工序" placement="top">
<Icon type="md-bluetooth" @click="split" />
</Tooltip>
<Icon type="ios-trash" @click="remove" />
</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="55%"
:mask-closable="false"
>
<Set :group="group" @closeOk="closeOk"></Set>
</Drawer>
</div>
<!-- <List :result="result"></List> -->
</div>
</div>
</div>
<!-- 拆分 fenModel -->
<Modal
v-model="chaiModal"
title="拆分工序"
:width="400"
:mask-closable="false"
ok-text="拆分"
@on-ok="okChai()"
>
拆分数量:
<InputNumber v-model="chaiNum"></InputNumber>
<Slider v-model="chaiNum" :min="1"></Slider>
</Modal>
</div>
</template>
<script>
import List from "./list.vue";
// import List from "./list.vue";
import Set from "./set";
import Api from "./api";
export default {
name: "list",
components: {
List
Set
// List
},
async fetch({ store, params }) {
await store.dispatch("loadDictionary"); // 加载数据字典
},
data() {
return {
group: {
orderId: 0,
routingHeaderId: 0
},
activeindex: 1,
list: [
list: [],
status: "-1", //全部排产-1,0为未排产;2为已排查;
result: [
{
part_task_pk: "euuei",
order_id: "hdhfk",
routing_version: "fsslllsl",
demand_start: "2020-3-30",
demand_finish: "2020-3-30"
taskname: "工序名称",
equip_id: "制造资源",
equip_type: "排产资源",
resources_Type_Name: "备注信息"
},
{
part_task_pk: "euuei",
order_id: "hdhfk",
routing_version: "fsslllsl",
demand_start: "2020-3-30",
demand_finish: "2020-3-30"
taskname: "工序名称",
equip_id: "制造资源",
equip_type: "排产资源",
resources_Type_Name: "备注信息"
}
],
status: "0", //全部排产0,1为未排产;2为已排查;
partTaskPk: "", //车间
result: [],
isactive: 0,
selectName: "all"
resourcesType: null,
set: false,
chaiNum: 1, //拆分数量
chaiModal: false
};
},
created() {
// this.orderlist();
this.orderlist();
},
methods: {
// 过滤条件
// 排产池过滤条件
changeStatus(a) {
console.log(a);
// this.orderlist(a);
this.orderlist(a);
},
//排产池列表
orderlist() {
Api.getmesorder({ status: 2, workshop_id: 3 }).then(r => {
Api.getpooltypeorderlist({ PoolType: 3,status:this.status }).then(r => {
// console.log(r)
if (r.success) {
r.result.forEach(e => {
return (e.checked = false);
});
this.list = r.result;
this.listData(r.result[0].part_task_pk, 0);
}
});
},
listData(li, index) {
this.status = "";
this.partTaskPk = li;
this.tagClick("all");
//点击选中排产订单
listData(li) {
this.isactive = index;
this.group.orderId = li.id;
this.tagTata(li.id);
},
tagClick(name) {
this.selectName = name;
this.tagTata(this.selectName);
},
tagTata(name) {
if (name == "all") {
this.status = "";
}
if (name == "yi") {
this.status = 13;
}
if (name == "wei") {
this.status = 0;
}
let data = {
part_task_pk: this.partTaskPk,
status: this.status
};
Api.gettaskseqinfo(data).then(r => {
// console.log(r)
//工序列表
tagTata(id) {
Api.getroutingdetails({ id: id }).then(r => {
if (r.success) {
this.result = r.result;
}
});
},
close() {}
//工序排产过滤
changeRodio(a) {
console.log(a);
},
//删除排产订单
close() {
this.$Modal.confirm({
title: "删除",
content: "<p>您确定要移除此订单吗</p>",
onOk: () => {
this.$Message.success("删除成功");
},
onCancel: () => {
this.$Message.info("您已取消删除");
}
});
},
//工序列表序列设置
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.set = true;
this.group.routingHeaderId = name;
},
//拆分工序
split() {
this.chaiModal = true;
},
//拆分保存
okChai() {
// Api.saveTeamentry(this.chaiNum).then(res => {
// if (res.success) {
// this.getUserInfoFn();
// this.$Message.success("拆分成功。");
// } else {
// this.$Message.error("拆分失败...");
// }
// });
},
//删除工序
remove() {
this.$Modal.confirm({
title: "删除",
content: "<p>您确定要移除此工序吗</p>",
onOk: () => {
this.$Message.success("删除成功");
},
onCancel: () => {
this.$Message.info("您已取消删除");
}
});
},
closeOk() {
this.set = false;
}
}
};
</script>
......@@ -227,6 +323,25 @@ export default {
}
.right-body {
margin-top: 15px;
.list {
padding-left: 10px;
.set-name {
font-weight: bold;
color: rgba(38, 128, 235, 0.8);
span {
cursor: pointer;
}
.ivu-icon {
cursor: pointer;
}
.top {
text-align: center;
}
}
div {
height: 30px;
}
}
}
}
}
......
......@@ -6,11 +6,18 @@
type="datetimerange"
format="yyyy-MM-dd HH:mm"
placeholder="请选择工时"
@on-change="changeFormat"
v-model="formItem.time"
style="width:300px"
></DatePicker>
</FormItem>
<FormItem label="人员分组形式">
<FormItem label="类型">
<RadioGroup v-model="formItem.radio">
<Radio label="0">人员</Radio>
<Radio label="1">班组</Radio>
</RadioGroup>
</FormItem>
<FormItem label="人员分组形式" v-if="formItem.radio==0">
<Dictionary
disabled
code="aps.scheduling.groupingForm"
......@@ -18,64 +25,132 @@
type="radio"
></Dictionary>
</FormItem>
<FormItem>
<div v-for="(li,index) in listGroup" :key="index">
<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"
:resourcesType="resourcesType"
v-for="(li,index) in listGroup"
:key="index"
></Checkbox-List>
</div>
</FormItem>
<FormItem label="已选择">
<Tag closable @on-close="handleClose" :key="index" v-for="(val, index) in tagGroup">{{val}}</Tag>
<!-- 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"
v-for="(val, index) in tagGroup"
>{{val.name}}</Tag>-->
</div>
</FormItem>
<FormItem label="备注">
<Input
v-model="formItem.textarea"
type="textarea"
:autosize="{minRows: 2,maxRows: 5}"
placeholder="Enter something..."
placeholder="请输入备注信息"
></Input>
</FormItem>
<FormItem>
<Button style="margin-left: 8px">取消</Button>
<Button type="primary">排产</Button>
<Button style="margin-left: 8px" @click="closeOk">取消</Button>
<Button type="primary" @click="lowerHair">排产</Button>
</FormItem>
</Form>
</div>
</template>
<script>
import CheckboxList from './checkboxList'
import Api from './api'
import CheckboxList from "./checkboxList";
import Api from "./api";
export default {
name: 'set',
name: "set",
components: {
CheckboxList
},
props: {
resourcesType: Number
group: {
default: Object,
orderId: Number,
routingHeaderId: Number
}
},
data() {
return {
orderId: 0, //订单id
routingHeaderId: 0, //工艺规程id
formItem: {
resourcesType: 0,
input: '',
select: '',
radio: 'male',
checkbox: [],
switch: true,
date: '',
time: '',
slider: [20, 50],
textarea: '',
day: 0
radio: "0",
time: "",
beginTime: "",
endTime: "",
textarea: ""
},
tagdata: [],
listGroup: [],
tagGroup: []
}
listGroup: [
{
equip_name: "调试组",
isClick: true
},
{
equip_name: "装配组"
}
],
tagGroup: [
{
id: 1,
name: "张芳",
class: "1级"
},
{
id: 2,
name: "张芳",
class: "1级"
},
{
id: 4,
name: "张芳",
class: "1级"
},
{
id: 5,
name: "张芳",
class: "1级"
}
],
classList: [
{
shopId: "0",
label: "调试组"
},
{
shopId: "1",
label: "装配组"
},
{
shopId: "2",
label: "计划组"
},
{
shopId: "3",
label: "管理组"
}
]
};
},
mounted() {},
// computed: {
......@@ -92,43 +167,111 @@ export default {
// }
// },
methods: {
getList(v) {
if (v == 0) {
//班组
Api.getlist({ workshop_pk: 3 }).then((r) => {
console.log(r)
lowerHair(v) {
if (this.formItem.radio == 0) {
//一级排产选择人员
let urseId = [];
for (var i = 0; i < this.tagGroup.length; i++) {
urseId.push(this.tagGroup[i].id);
}
let items = [
{
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.formItem.radio == 1) {
//二级排产选择班组
let items = [
{
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) {
r.result.forEach((u) => {
u.isClick = false
})
this.listGroup = r.result
}
})
} else if (v == 2) {
//设备
Api.getlistEquip({ workshop_pk: 3 }).then((r) => {
console.log(r)
r.result.forEach((u) => {
u.isClick = false
})
this.listGroup = r.result
})
});
}
},
closeOk() {
this.$emit("closeOk");
},
handleClose(nodeKey) {
// this.$refs.users.handleCheck({ checked: false, nodeKey: nodeKey });
},
setData(val) {
this.tagGroup = val
}
this.tagGroup = val;
},
//工时时间范围
changeFormat(val) {
this.formItem.beginTime = val[0];
this.formItem.endTime = val[1];
},
closeTag() {}
},
watch: {
resourcesType(v) {
if (v != null) {
this.formItem.resourcesType = v
this.getList(v)
// resourcesType(v) {
// if (v != null) {
// this.formItem.resourcesType = v;
// this.getList(v);
// }
// }
}
};
</script>
<style lang="less" scoped>
.set {
border: 1px solid rgba(228, 230, 237, 0.5);
width: 100%;
padding: 15px;
margin-left: 10px;
// box-shadow: darkgrey 2px 2px 8px 1px; //边框阴影
.r-title {
font-size: 14px;
font-weight: bold;
margin-bottom: 10px;
}
.list-check {
border: 1px solid rgba(38, 128, 235, 0.5);
}
.tag-list {
width: 100%;
min-height: 50px;
border: 1px solid rgba(228, 230, 237, 0.5);
.tag-group {
display: inline-block;
text-align: center;
width: 100px;
height: 30;
line-height: 30px;
border-radius: 20px;
margin: 5px;
background: rgba(38, 128, 235, 0.2);
.ivu-icon {
cursor: pointer;
}
}
}
}
</script>
</style>
......@@ -28,7 +28,7 @@
<Record :eid="recordId" />
</Modal>
<Modal v-model="SpeedModal" title="工单信息" fullscreen footer-hide class="recordM">
<Speed :result="result" />
<Speed :result="result" :load="loading" />
</Modal>
</div>
</template>
......@@ -68,7 +68,7 @@ export default {
{
title: "序号",
type: "index",
width: 40,
width: 70,
align: "center"
},
{
......@@ -77,13 +77,13 @@ export default {
code: "plan.order.status",
align: "center",
easy: true,
high: true
high: true,
width: 100
},
{
key: "mesCode",
title: this.l("mesCode"),
align: "left",
width: 230,
render: (h, params) => {
return h("div", [
params.row.mesCode,
......@@ -174,7 +174,6 @@ export default {
align: "left",
easy: true,
high: true,
width: 130
},
{
......@@ -243,7 +242,8 @@ export default {
align: "left",
code: "mes_xingchi_plan.order_material.routingType",
easy: true,
high: true
high: true,
width: 100,
},
{
title: this.l("jindu"),
......@@ -273,7 +273,6 @@ export default {
}
}
},
params.row.unstartCount //未开工数
),
h(
......@@ -289,7 +288,6 @@ export default {
}
}
},
params.row.startCount //开工数
),
h(
......@@ -307,7 +305,6 @@ export default {
}
}
},
params.row.stopCount //暂停数
),
h(
......@@ -325,7 +322,7 @@ export default {
}
},
params.row.finishCount //完
params.row.finishCount //完
)
]
)
......@@ -335,7 +332,8 @@ export default {
{
key: "remark",
title: this.l("remark"),
align: "center"
align: "center",
hide:true
},
{
title: "暂停记录",
......@@ -411,7 +409,8 @@ export default {
]);
}
}
]
],
loading: false
};
},
mounted() {},
......@@ -427,15 +426,29 @@ export default {
this.recordId = id;
},
speed(row) {
this.SpeedModal = true;
Api.info({
routingHeaderId: row.routingHeaderId,
dispatchExecuteId: row.dispatchExecuteId
}).then(r => {
if (r.success) {
this.result = r.result;
}
});
if (
row.finishCount == 0 &&
row.stopCount == 0 &&
row.startCount == 0 &&
row.unstartCount == 0
) {
this.$Message.error("进度数据错误");
} else {
this.result = [];
this.loading = true;
this.SpeedModal = true;
Api.info({
routingHeaderId: row.routingHeaderId,
dispatchExecuteId: row.dispatchExecuteId
}).then(r => {
if (r.success) {
this.result = r.result;
this.loading = false;
}
}).catch(err=>{
this.$Message.error("连接错误");
});
}
},
suspendOk() {
this.suspendModal = false;
......
......@@ -29,7 +29,7 @@ export default {
{
title: "序号",
type: "index",
width: 60,
width: 70,
align: "center"
},
{
......
<template>
<div class="record">
<DataGrid :columns="columns" :data="result" border :tool='false' :height="820"></DataGrid>
<div v-if="load" style="width:100px;margin:0 auto;padding-top:260px;">
<Spin size="large"></Spin>
</div>
<div v-show="!load">
<DataGrid :columns="columns" :data="result" border :tool="false" :height="820" :page="false"></DataGrid>
</div>
</div>
</template>
<script>
......@@ -15,12 +20,14 @@ export default {
{
key: "detailId",
title: this.l("detailId"),
align: "center"
align: "center",
width: 100
},
{
key: "taskSeq",
title: this.l("taskSeq"),
align: "center"
align: "center",
width: 100
},
{
key: "detailName",
......@@ -97,15 +104,61 @@ export default {
{
key: "status",
title: '工单状态',
title: "工单状态",
code: "taskList.status",
align: "center"
align: "center",
width: 140,
filters: this.getArry(
this.$store.getters.dictionaryByKey("taskList.status")
),
filterMethod(value, row) {
let statusChar = row.status + "";
return statusChar.indexOf(value) > -1;
}
},
{
title: "操作",
key: "action",
width: 120,
align: "center",
render: (h, params) => {
return h("div", { class: "action" }, [
// h(
// "op",
// {
// attrs: { oprate: "detail" },
// on: { click: () => this.detail(params.row) }
// },
// "查看"
// ),
h(
"op",
{
attrs: { oprate: "remove" },
on: { click: () => this.edit(params.row) },
style: params.row.status == 14 ? "" : "display:none"
},
"暂停"
),
h(
"op",
{
attrs: { oprate: "edit" },
on: { click: () => this.remove(params.row) },
style: params.row.status == 5 ? "" : "display:none"
},
"分卡"
)
]);
}
}
]
],
listTask: [],
};
},
props: {
result: Array
result: Array,
load:Boolean,
},
async fetch({ store, params }) {
await store.dispatch("loadDictionary"); // 加载数据字典
......@@ -119,6 +172,25 @@ export default {
l(key) {
let vkey = "mes_order_watch" + "." + key;
return this.$t(vkey) || key;
},
//得到数据字典对应的label和value,用于table排序
getArry(arryList) {
let arry = [];
arryList.forEach(data => {
var that = this;
let arryObj = {};
arryObj["label"] = data.name;
arryObj["value"] = data.code;
arry.push(arryObj);
});
return arry;
}
},
watch: {
result(v) {
if (v && v.length > 0) {
this.load = false;
}
}
}
};
......
......@@ -599,8 +599,8 @@ export default {
let that = this
var url = `${systemUrl}/cache/generate_serialcode_x?Code=GY`
service.get(`${url}`).then((response) => {
that.addpdefm.formValidate.code = response.result
that.addpdefm.gycode = response.result
that.addpdefm.formValidate.code = response.result[0]
that.addpdefm.gycode = response.result[0]
}) //编号
var url =
......
......@@ -381,7 +381,7 @@ export default {
},
remove(row) {
if (row.totalNum != row.numberAvailable) {
this.$Message.error("资源有接触不能删除");
this.$Message.error("资源有借出不能删除");
} else {
this.deletelModal = true;
this.curId = row.id;
......
......@@ -9,9 +9,10 @@
<h4 class="tree_tit pl5">产品结构
<a class="menu_play fr" @click="hideMenu" title="收起">
<Icon type="ios-arrow-back" size="24" />
<!-- <Icon type="md-arrow-round-back"/> -->
</a>
</h4>
<StoreHouseLeft class="tree_left" @storeIds="storeIds" ></StoreHouseLeft>
<!-- :type="4" -->
</div>
</Sider>
<div v-if="!showMenu" class="show_menu">
......@@ -21,15 +22,18 @@
</a>
</div>
<Layout>
<Content :class="showMenu?'tech_body':'tech_body02'" :style="{ height: treeHeight + 'px' }">Content</Content>
<Content :class="showMenu?'tech_body':'tech_body02'" :style="{ height: treeHeight + 'px' }">
<a class="detail_href" @click="detail"> <Icon type="ios-undo-outline" />详情页面</a>
</Content>
</Layout>
</Layout>
</div>
</template>
<script>
import StoreHouseLeft from "@/components/modalTree/technologyTree.vue";
export default {
components: {},
components: {StoreHouseLeft},
data() {
return {
showMenu:true,
......@@ -60,6 +64,10 @@ export default {
showMenuFn(){//this.$Message.info("展开左侧树")
this.showMenu = true
},
// 详情页面
detail(){
this.$router.push('technology/details')
},
}
}
</script>
......@@ -24,6 +24,12 @@
color: #646464;
}
}
.tree_left{
padding: 8px 15px;
.ivu-tree{
// height: ;
}
}
}
.show_menu{
width: 30px;
......@@ -40,9 +46,6 @@
color: #515A6E;
border-top-right-radius: 5px;
border-bottom-right-radius: 5px;
// position: absolute;
// top: 100px;
// left: 0px;
background: #ffffff;
box-shadow: #ccc 2px 2px 4px 1px;
}
......@@ -89,6 +92,7 @@
line-height: 50px;
border-left: 1px solid #ccc;
background: #f5f7f9;
z-index: 888;
.ivu-menu-item{
width: 140px;
border-right: 1px solid #ccc;
......@@ -108,13 +112,17 @@
}
}
.setdetail_body{
// padding: 0 20px;
// padding: 0 20px;
.ivu-layout-header{
height: 0;
}
.ivu-menu-horizontal{
height: 40px;
line-height: 40px;
.ivu-menu-item{
width: 97px;
text-align: center;
}
a.ivu-menu-item-active::before{
content: "";
display: block;
......@@ -125,7 +133,7 @@
height: 0;
position: absolute;
bottom: -6px;
left: 40%;
left: 43%;
}
a.ivu-menu-item-active::after{
content: "";
......@@ -137,7 +145,7 @@
height: 0;
position: absolute;
bottom: -4px;
left: 41%;
left: 44%;
}
}
......
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