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

portal 无关内容删除

parent c5404559
<template>
<div class="parameter">
<Form ref="form" :model="entity" :rules="rules" :label-width="100">
<Row :gutter="20">
<Col span="12">
<div class="left-up">
<p class="title-c">参数设置</p>
<FormItem :label="l('plan_method')" prop="plan_method">
<i-switch v-model="entity.plan_method" size="large">
<span slot="open">On</span>
<span slot="close">Off</span>
</i-switch>
</FormItem>
<FormItem :label="l('calId')" prop="calId">
<Select v-model="entity.calId" style="width:150px">
<Option
v-for="(item,index) in listCal"
:key="index"
:value="item.calid"
:label="item.calname"
></Option>
</Select>
</FormItem>
<FormItem :label="l('overTime')" prop="overTime">
<i-switch v-model="entity.overTime" size="large">
<span slot="open">On</span>
<span slot="close">Off</span>
</i-switch>
</FormItem>
<FormItem :label="l('efficiencyValue')" prop="efficiencyValue">
<Input v-model="entity.efficiencyValue" style="width:150px"></Input>
</FormItem>
<FormItem :label="l('run_time')" prop="run_time">
<InputNumber v-model="entity.run_time"></InputNumber>
</FormItem>
<FormItem :label="l('isDiscrete')" prop="isDiscrete">
<i-switch v-model="entity.isDiscrete" size="large">
<span slot="open">On</span>
<span slot="close">Off</span>
</i-switch>
</FormItem>
<FormItem :label="l('discrete')" prop="discrete">
<InputNumber v-model="entity.discrete"></InputNumber>
</FormItem>
<FormItem :label="l('discrete_percent')" prop="discrete_percent">
<InputNumber v-model="entity.discrete_percent"></InputNumber>
</FormItem>
</div>
<div class="left-donw">
<p class="title-c">参数级别</p>
<div class="icon">
<Dropdown trigger="custom" :visible="visible" style="width:150px">
<a href="javascript:void(0)" @click="handleOpen">
<Icon type="md-git-compare" />
</a>
<DropdownMenu slot="list" style="text-align: center;">
<DropdownItem>
<a href="#">
<Icon type="md-apps" />
</a>
<span>转序规则</span>
</DropdownItem>
<DropdownItem>
<a href="#">
<Icon type="md-apps" />
</a>
<span>加班策略</span>
</DropdownItem>
<DropdownItem>
<a href="#">
<Icon type="md-apps" />
</a>
<span>任务平衡</span>
</DropdownItem>
<DropdownItem>
<a href="#">
<Icon type="md-apps" />
</a>
<span>是否离散</span>
</DropdownItem>
<div style="margin:10px;">
<Button type="primary" @click="handleOk">确定</Button>
<Button type="primary" @click="handle">关闭</Button>
</div>
</DropdownMenu>
</Dropdown>
</div>
<div class="slider">
<Slider v-model="entity.value1" :step="25" show-stops></Slider>
<div class="slow"></div>
<div class="fast"></div>
</div>
</div>
</Col>
<Col span="12">
<div class="right-up">
<p class="title-d">多台分配设置</p>
<div class="duo">
<Row>
<Col :span="12">
<FormItem :label="l('multi_machine')" prop="multi_machine">
<i-switch v-model="entity.switch4" size="large">
<span slot="open">On</span>
<span slot="close">Off</span>
</i-switch>
</FormItem>
</Col>
<Col :span="12">
<FormItem label="多台数量" prop="abbre">
<InputNumber v-model="entity.abbre"></InputNumber>
</FormItem>
</Col>
</Row>
<FormItem label="班组结构">
<Select v-model="entity.select6" style="width:150px">
<Option value="beijing">结构1</Option>
<Option value="shanghai">结构2</Option>
<Option value="shenzhen">结构3</Option>
<Option value="shenzhen">结构4</Option>
</Select>
</FormItem>
<div class="check-box">
<CheckboxGroup v-model="entity.fruit">
<Checkbox label="10985553333(数控车床 车工班)"></Checkbox>
<br />
<Checkbox label="10985553333(数控车床 车工班)"></Checkbox>
<br />
<Checkbox label="10985553333(数控车床 车工班)"></Checkbox>
<br />
<Checkbox label="10985553333(数控车床 车工班)"></Checkbox>
<br />
</CheckboxGroup>
</div>
</div>
</div>
<div class="left-donw right-down">
<p class="title-c">参数应用</p>
<div class="slider">
<Slider v-model="entity.value2" :step="33.3" show-stops></Slider>
<div class="slow">工序</div>
<div class="ding">订单</div>
<div class="ling">零件</div>
<div class="fast">所有</div>
</div>
</div>
</Col>
</Row>
<FormItem class="click-btn">
<Button type="primary" @click="handleSubmit">确定</Button>
<Button @click="handleClose" class="ml20">取消</Button>
</FormItem>
</Form>
</div>
</template>
<script>
import Api from "./api";
export default {
data() {
return {
entity: {
value1: 100,
value2: 100,
fruit: []
},
listCal: [],
visible: false,
rules: {
businessName: [{ required: true, message: "必填", trigger: "blur" }],
businessCode: [{ required: true, message: "必填", trigger: "blur" }]
}
};
},
mounted() {
this.getCal();
},
methods: {
getCal() {
Api.getallcal().then(res => {
if (res.success) {
this.listCal = res.result;
}
});
},
handleSubmit() {
this.$refs.form.validate(valid => {
if (valid) {
Api.apsschedulupdateparameter(this.entity).then(res => {
if (res.success) {
}
});
} else {
this.$Message.error("Fail!");
}
});
},
handleClose() {
this.$emit("on-close");
},
handleOpen() {
this.visible = true;
},
handle() {
this.visible = false;
},
handleOk() {},
l(key) {
let vkey = "mes_op_task_plan_simulate" + "." + key;
return this.$t(vkey) || key;
}
}
};
</script>
<style lang="less" scoped>
.parameter {
margin: 10px;
.left-up {
position: relative;
border: 1px solid #e0e0e0;
padding: 25px 0;
.title-c {
width: 68px;
padding-left: 5px;
background: #fff;
position: absolute;
top: -9px;
left: 25px;
color: #2680eb;
}
}
.left-donw {
margin-top: 15px;
position: relative;
border: 1px solid #e0e0e0;
padding: 25px 0;
.title-c {
width: 68px;
padding-left: 5px;
background: #fff;
position: absolute;
top: -9px;
left: 25px;
color: #2680eb;
}
.slider {
margin: 0 50px 0 50px;
position: relative;
.slow {
position: absolute;
top: 7px;
left: -5px;
}
.fast {
position: absolute;
top: 7px;
right: -10px;
}
.ding {
position: absolute;
top: 7px;
left: 30%;
}
.ling {
position: absolute;
top: 7px;
right: 30%;
}
}
.icon {
text-align: right;
padding-right: 15px;
margin-top: -15px;
}
}
.right-up {
position: relative;
border: 1px solid #e0e0e0;
padding: 25px 0;
.title-d {
width: 95px;
padding-left: 5px;
margin-left: 10px;
background: #fff;
position: absolute;
top: -9px;
left: 25px;
color: #2680eb;
}
.check-box {
height: 348px;
border-top: 1px solid #e0e0e0;
padding: 15px;
padding-left: 0;
margin-left: 25px;
overflow: auto;
}
}
.right-down {
height: 92px;
}
.click-btn {
text-align: right;
margin-top: 15px;
}
}
</style>
\ No newline at end of file
import Api from '@/plugins/request'
export default {
index: `${resourceUrl}mesparttaskplansimulate/paged`,
paged(params) {
return Api.post(`${resourceUrl}mesparttaskplansimulate/paged`, params);
},
get(params) {
return Api.get(`${resourceUrl}mesparttaskplansimulate/get`, params);
},
create(params) {
return Api.post(`${resourceUrl}mesparttaskplansimulate/create`, params);
},
update(params) {
return Api.post(`${resourceUrl}mesparttaskplansimulate/update`, params);
},
//删除:
delete(params) {
return Api.delete(`${resourceUrl}mesparttaskplansimulate/delete`, {
params: params
});
},
//获取排产池数据列表
getall() {
return Api.get(`${apsUrl}/Mes_part_task_plan_simulate/getall`);
},
//点开排产池列表查看对应的工序
getbyorderid(params) {
return Api.get(`${apsUrl}/mes_op_task_plan_simulate/getbyorderid`, params);
},
//订单优先级
orderpriority(params) {
return Api.post(`${apsUrl}/apspoolappservices/orderpriority`, params);
},
//删除工序
removeoptasksimluate(params) {
return Api.post(`${apsUrl}/apspoolappservices/removeoptasksimluate`, params);
},
//恢复工艺
recoveryoptasksimluate(params) {
return Api.post(`${apsUrl}/apspoolappservices/recoveryoptasksimluate`, params);
},
//移出排产池
shiftoutapspool(params) {
return Api.post(`${apsUrl}/apspoolappservices/shiftoutapspool`, params);
},
//排产计算
apsprepareandcalc(params) {
return Api.post(`${apsUrl}/apspoolappservices/apsprepareandcalc`, params);
},
//排产方案下发
processschemedispatch(params) {
return Api.post(`${apsUrl}/apspoolappservices/processschemedispatch`, params);
},
//APS排产前数据合法性校验
apsdatachecked(params) {
return Api.post(`${apsUrl}/apspoolappservices/apsdatachecked`, params);
},
//获取连班策略
getallcal(params) {
return Api.get(`${apsUrl}/mes_daily_work_sched/getallcal`, params);
},
//工序参数调整
apsschedulupdateparameter(params) {
return Api.post(`${apsUrl}/ser/apsschedulupdateparameter`, params);
},
}
<template>
<Form ref="form" :model="entity" :rules="rules" :label-width="100">
<Row>
<Col :span="12">
<FormItem :label="l('tASKSEQ')" prop="tASKSEQ">
<Input></Input>
</FormItem>
</Col>
<Col :span="12">
<FormItem :label="l('tASKNAME')" prop="tASKNAME">
<Input></Input>
</FormItem>
</Col>
<Col :span="12">
<FormItem :label="l('sHOPID')" prop="sHOPID">
<!-- v-model="orderSearchForm.orderCat" -->
<Select >
<Option value="" class="option-text">请选择</Option>
<Option v-for="item in orderCatList" :value="item" :key="item">{{ item }}</Option>
</Select>
</FormItem>
</Col>
<Col :span="12">
<FormItem :label="l('eQUIPID')" prop="eQUIPID">
<Select >
<Option value="" class="option-text">请选择</Option>
<Option v-for="item in orderCatList" :value="item" :key="item">{{ item }}</Option>
</Select>
</FormItem>
</Col>
<Col :span="12">
<FormItem label="关重资源名称" prop="rUNTIME">
<Select >
<Option value="" class="option-text">请选择</Option>
<Option v-for="item in orderCatList" :value="item" :key="item">{{ item }}</Option>
</Select>
</FormItem>
</Col>
<Col :span="12">
<FormItem :label="l('rUNTIME')" prop="rUNTIME">
<!-- v-model="value1" -->
<InputNumber :max="100" :min="1"></InputNumber>
</FormItem>
</Col>
</Row>
<FormItem>
<Button type="primary" @click="handleSubmit" :disabled="disabled">保存</Button>
<Button @click="handleClose" class="ml20">取消</Button>
</FormItem>
</Form>
</template>
<script>
import Api from '../api'
export default {
name: 'Edit',
data() {
return {
disabled: false,
entity: {},
orderCatList:[
],
rules: {
name: [{ required: true, message: '必填', trigger: 'blur' }]
}
}
},
props: {
eid: Number
},
methods: {
load(v) {
// Api.get({ id: v }).then((r) => {
// this.entity = r.result
// this.$emit('on-load')
// })
},
handleSubmit() {
this.$refs.form.validate((v) => {
if (v) {
this.disabled = true
Api.update(this.entity)
.then((r) => {
this.disabled = false
if (r.success) {
this.$Message.success('保存成功')
this.$emit('on-ok')
} else {
this.$Message.error('保存失败')
}
})
.catch((err) => {
this.disabled = false
this.$Message.error('保存失败')
console.warn(err)
})
}
})
},
handleClose() {
this.$emit('on-close')
},
l(key) {
key = 'mes_op_task_execute' + '.' + key
return this.$t(key)
}
},
watch: {
eid(v) {
if (v != 0) {
this.load(v)
}
}
}
}
</script>
This diff is collapsed.
<template>
<div>
<DataGrid
:columns="columns"
ref="grid"
:draggable="true"
:data="list"
:high="false"
@on-drag-drop="onDragDrop"
:page="false"
@on-selection-change="onSelect"
:batch="true"
:border="false"
:easy="false"
>
<template slot="easySearch"></template>
<template slot="searchBack">
<Select placeholder="选择历史方案" style="width: 150px"></Select>
<DatePicker type="date" placeholder="设置基准日期" style="width: 150px"></DatePicker>
<a style="font-weight:bold" @click="addModal=true">
<Icon type="ios-options" size="14" />&nbsp;工序参数调整
</a>
</template>
<template slot="searchForm">
<Search />
</template>
<template slot="buttons">
<Button type="primary" @click="apsModal=true">APS排产</Button>
</template>
<template slot="batch">
<Button type="primary" class="mr10 ml10" @click="removeOk">移出排产</Button>
</template>
</DataGrid>
<Modal v-model="addModal" title="工序参数设置" footer-hide width="1000">
<Add @on-close="cancel" @on-ok="addOk" />
</Modal>
<Modal v-model="apsModal" title="确定APS排产" @on-ok="removeOk" @on-cancel="cancel">
<p>确定进行APS排产?</p>
</Modal>
</div>
</template>
<script>
import Api from "./api";
import Add from "./add";
import Expand from "./components/excute";
export default {
name: "list",
components: {
Add,
Expand
},
data() {
return {
action: Api.index,
easySearch: {
keys: { op: "notes", value: null }
},
addModal: false,
editModal: false,
detailModal: false,
deletelModal: false,
apsModal: false,
list: [],
curId: 0,
columns: [
{
key: "move",
title: " ",
hide: false,
align: "center",
width: 30,
render: (h, params) => {
return h("Icon", {
attrs: {
type: "md-more",
size: 18
},
class: "drag"
});
}
},
{
type: "expand",
width: 50,
render: (h, params) => {
return h(Expand, {
props: {
rowId: params.row.part_task_pk
}
});
}
},
{
key: "selection",
type: "selection",
width: 50,
align: "center"
},
{
key: "id",
title: this.l("id"),
hide: true,
align: "left",
sortable: true,
width: 50
},
{
key: "insert_flag",
title: this.l("insert_flag"),
align: "center",
width: 70,
high: true,
code: "aps.aps.insert_flag",
category: "icon"
},
{
key: "part_task_pk",
title: this.l("part_task_pk"),
align: "left",
high: true
},
{
key: "priority",
title: this.l("priority"),
align: "left",
high: true,
render: (h, params) => {
return h("span", {
},params.index+1);
}
},
{
key: "plan_qty",
title: this.l("plan_qty"),
align: "left",
high: true,
sortable: true
},
{
key: "spare_qty",
title: this.l("spare_qty"),
align: "left",
high: true
},
{
key: "plan_start",
title: this.l("plan_start"),
align: "center",
high: true,
resizable: true,
width: 140
},
{
key: "plan_finish",
title: this.l("plan_finish"),
align: "center",
high: true,
sortable: true,
resizable: true,
width: 140
},
{
key: "notes",
title: this.l("notes"),
align: "left",
easy: true,
high: true,
hide: true
},
{
key: "demand_start",
title: this.l("demand_start"),
align: "center",
hide: true,
resizable: true,
width: 100
},
{
key: "demand_finish",
title: this.l("demand_finish"),
align: "center",
high: true,
resizable: true,
width: 140
},
{
key: "badjustflag",
title: this.l("badjustflag"),
align: "left",
high: true
},
{
title: "操作",
key: "action",
width: 140,
align: "center",
// fixed:"right",
render: (h, params) => {
return h("div", { class: "action" }, [
h("op", {
attrs: {
icon: "md-options",
type: "icon",
title: "工序参数设置"
},
on: { click: () => this.openParms(params.row.id) }
}),
h("op", {
attrs: {
icon: "md-return-left",
type: "icon",
title: "移出排产池",
oprate: "delete",
msg: "确认要移出排产吗?"
},
on: { click: () => this.remove(params.row.part_task_pk) }
}),
h("op", {
attrs: {
icon: "md-refresh",
type: "icon",
title: "恢复工序",
oprate: "delete",
msg: "确认要恢复工序吗?"
},
on: { click: () => this.refresh(params.row.part_task_pk) }
})
]);
}
}
],
arrPartPkId:[]
};
},
mounted() {
this.loadList();
},
async fetch({ store, params }) {
await store.dispatch("loadDictionary"); // 加载数据字典
},
methods: {
//排产池加载数据列表
loadList() {
Api.getall().then(res => {
if (res.success) {
this.list = res.result;
}
});
},
addOk() {
this.$refs.grid.load();
this.addModal = false;
this.detailModal = false;
this.editModal = false;
this.curId = 0;
},
detail(id) {
this.detailModal = true;
this.curId = id;
},
edit(id) {
this.editModal = true;
this.curId = id;
},
refresh(partPkId) {//恢复工序
let params = {
id: partPkId
};
Api.recoveryoptasksimluate(params).then(r => {
if (r.success) {
this.$Message.success("恢复成功");
this.loadList();
}
});
},
remove(partPkId) {//移出排产池
let paramsArry = [];
if (partPkId.constructor == Array) {
paramsArry = partPkId;
} else {
paramsArry.push(partPkId);
}
let params={
partPks:paramsArry
}
Api.shiftoutapspool(params).then(r => {
if (r.success) {
this.$Message.success("移出排产池操作成功");
this.loadList();
}
});
},
onSelect(a, b) {//批量选择
let selectRows = a;
this.arrPartPkId = [];
selectRows.forEach(e => {
this.arrPartPkId.push(e.part_task_pk);
});
},
removeOk() {//批量选择移出排产池
this.remove(this.arrPartPkId);
},
removeCancel() {
this.deletelModal = false;
},
cancel() {
this.curId = 0;
this.addModal = false;
this.detailModal = false;
this.editModal = false;
this.deletedlModal = false;
this.apsModal = false;
},
onDragDrop(a, b) {
this.list.splice(b, 1, ...this.list.splice(a, 1, this.list[b]));
},
openParms(id) {
this.addModal = true;
},
l(key) {
let vkey = "mes_part_task_plan_simulate" + "." + key;
return this.$t(vkey) || key;
}
}
};
</script>
<style lang="less">
.drag {
cursor: move;
}
</style>
\ No newline at end of file
import Api from '@/plugins/request'
export default {
index: `${PlanUrl}/mesorder/planpaged`,
// 获取当前登录用户信息
getUserInfo(params) {
return Api.get(`${systemUrl}/user/getuserinfo`, params);
},
// 获取人员列表信息
getUser(params) {
return Api.post(`${systemUrl}/user/getselectuser`, params);
},
// 获取用户所在车间
getUserDepartment(params){
return Api.get(`${systemUrl}/user/getuserdepartment`, params);
},
// 获取用户所有设备
getlistall(params){
return Api.get(`${systemUrl}/equipinfo/getlistall`, params);
},
// 获取用户班组工单
getEntryList(params){
return Api.get(`${PlanUrl}/teamsdispatchs/getentrylist`, params);
},
// 派工接口(保存)
saveTeamentry(params){
return Api.post(`${PlanUrl}/teamsdispatchs/saveteamentry`, params);
},
//删除:
delete(params) {
return Api.delete(`${PlanUrl}/mesorder/delete`, {
params: params
});
},
}
\ No newline at end of file
.dispatch{
padding: 12px 5px;
.footer02 {
background: #4c5968;
opacity: 0.9;
position: absolute;
bottom: 0;
box-shadow: 0px -5px 6px rgba(0,0,0,0.3);
width: 98%;
z-index: 99;
padding: 10px;
color: #fff;
margin: 10px 0 10px 0;
}
}
.dispatch_part{
border: 1px solid #ccc;
height: 100%;
.dispatch_part_top{
height: 50px;
line-height: 50px;
padding: 0 0 0 12px;
background: #F5F6FA;
.check{
position: absolute;
top: 0;
right: 24px;
}
}
.dispatch_part_body{
padding: 10px;
overflow-y: auto;
.dispatch_card{
margin: 10px 0;
.card{
.card_top{
.label{
cursor: pointer;
}
}
.ivu-card-head{
background: #2d8cf0!important;
}
}
.g_title{
color: #2d8cf0;
}
}
.dispatch_card02{
margin: 10px 0;
// padding-left: 0!important;
// padding-right: 0!important;
.man_body{
max-width: 185px;
label{
border-radius: 24px;
width: 100%;
height: 50px;
line-height: 47px;
span.ivu-checkbox{
.ivu-checkbox-inner{
margin-top: -42px!important;
}
}
span{
// overflow: hidden;
// text-overflow: ellipsis;
// -o-text-overflow: ellipsis;
// white-space:nowrap;
// display: inline-block;
height: 50px;
}
.svg_name{
width: 50px;
}
.svg{
width: 70px;
}
}
}
}
}
}
.drawer_midell{
.drawer_center{
text-align: center;
padding: 10px;
color: #2d8cf0;
.color{
color: #2d8cf0;
}
}
}
.drawer_box{
.drawer_row_title{
width: 100px;
height: 40px;
float: left;
margin: 2px 0 0;
font-weight: 600;
}
.drawer_midell{
// height: 120px;
// margin: 20px 0;
.drawer_center{
text-align: center;
padding: 10px;
color: #2d8cf0;
.color{
color: #2d8cf0;
}
}
}
.drawer_row_textarea{
width: 550px;
textarea{
max-height: 200px;
}
}
.drawer_footer{
width: 100%;
position: absolute;
bottom: 0;
left: 0;
border-top: 1px solid #e8e8e8;
padding: 10px 16px;
text-align: right;
background: #fff;
}
}
\ No newline at end of file
This diff is collapsed.
This diff is collapsed.
import Api from '@/plugins/request'
export default {
index: `${PlanUrl}/mesorders/planpaged`,
paged(params) {
return Api.post(`${PlanUrl}/mesorders/planpaged`, params);
},
get(params){
return Api.get(`${PlanUrl}/mesorders/get`, params);
},
create(params) {
return Api.post(`${PlanUrl}/mesorders/create`, params);
},
update(params) {
return Api.post(`${PlanUrl}/mesorders/update`, params);
},
//删除:
delete(params) {
return Api.delete(`${PlanUrl}/mesorders/delete`, {
params: params
});
},
moveinbatch(params) {//移入排产
return Api.post(`${PlanUrl}/messchedule/moveinbatch`, params);
},
routingdistribute(params) {//工艺派发
return Api.post(`${PlanUrl}/messchedule/routingdistribute`, params);
},
moveintoaps() {//跳转进入排产池前判断
return Api.post(`${PlanUrl}/messchedule/moveintoaps`);
},
}
\ No newline at end of file
<template>
<div class="detail">
<Row>
<!-- <Filed :span="12" :name="l('upId')">{{entity.upId}}</Filed> -->
<Filed :span="12" :name="l('mesCode')">{{entity.mesCode}}</Filed>
<Filed :span="12" :name="l('taskType')">{{entity.taskType}}</Filed>
<Filed :span="12" :name="l('productId')">{{entity.productId}}</Filed>
<Filed :span="12" :name="l('stage')">{{entity.stage}}</Filed>
<Filed :span="12" :name="l('materialId')">{{entity.materialId}}</Filed>
<Filed :span="12" :name="l('quantity')">{{entity.quantity}}</Filed>
<Filed :span="12" :name="l('guestName')">{{entity.guestName}}</Filed>
<Filed :span="12" :name="l('printSupply')">{{entity.printSupply}}</Filed>
<Filed :span="12" :name="l('functionaryOffice')">{{entity.functionaryOffice}}</Filed>
<Filed :span="12" :name="l('mainDepartmentId')">{{entity.mainDepartmentId}}</Filed>
<Filed :span="24" :name="l('remark')">{{entity.remark}}</Filed>
<Filed :span="12" :name="l('taskInputDate')">{{entity.taskInputDate}}</Filed>
<Filed :span="12" :name="l('taskRequire')">{{entity.taskRequire}}</Filed>
<Filed :span="12" :name="l('putintDocmentCode')">{{entity.putintDocmentCode}}</Filed>
<Filed :span="12" :name="l('technologyDocmentCode')">{{entity.technologyDocmentCode}}</Filed>
<Filed :span="12" :name="l('outerDrawnNumber')">{{entity.outerDrawnNumber}}</Filed>
<Filed :span="12" :name="l('modelVersion')">{{entity.modelVersion}}</Filed>
<Filed :span="12" :name="l('taskCode')">{{entity.taskCode}}</Filed>
<Filed :span="12" :name="l('designer')">{{entity.designer}}</Filed>
<Filed :span="12" :name="l('officeFunctionary')">{{entity.officeFunctionary}}</Filed>
<Filed :span="12" :name="l('mainRoutingPeople')">{{entity.mainRoutingPeople}}</Filed>
<Filed :span="12" :name="l('status')">{{entity.status}}</Filed>
<Filed :span="12" :name="l('workHours')">{{entity.workHours}}</Filed>
<Filed :span="12" :name="l('printPeriod')">{{entity.printPeriod}}</Filed>
<Filed :span="12" :name="l('equipment')">{{entity.equipment}}</Filed>
<Filed :span="12" :name="l('materialWeight')">{{entity.materialWeight}}</Filed>
<Filed :span="12" :name="l('isSupportingFinish')">{{entity.isSupportingFinish}}</Filed>
<Filed :span="12" :name="l('demandStartDate')">{{entity.demandStartDate}}</Filed>
<Filed :span="12" :name="l('demandFinishDate')">{{entity.demandFinishDate}}</Filed>
<Filed :span="12" :name="l('actualStartDate')">{{entity.actualStartDate}}</Filed>
<Filed :span="12" :name="l('actualFinishDate')">{{entity.actualFinishDate}}</Filed>
<Filed :span="12" :name="l('isDeleted')">{{entity.isDeleted}}</Filed>
<Filed :span="12" :name="l('creatorUserId')">{{entity.creatorUserId}}</Filed>
<Filed :span="12" :name="l('creationTime')">{{entity.creationTime}}</Filed>
<Filed :span="12" :name="l('lastModifierUserId')">{{entity.lastModifierUserId}}</Filed>
<Filed :span="12" :name="l('lastModificationTime')">{{entity.lastModificationTime}}</Filed>
<Filed :span="12" :name="l('orderQuotationStatus')">{{entity.orderQuotationStatus}}</Filed>
<Filed :span="12" :name="l('distributeMainRouting')">{{entity.distributeMainRouting}}</Filed>
<Filed :span="12" :name="l('mainRoutingFinishDate')">{{entity.mainRoutingFinishDate}}</Filed>
<Filed :span="12" :name="l('majorRoutingPeople')">{{entity.majorRoutingPeople}}</Filed>
<Filed :span="12" :name="l('majorRoutingFinishDate')">{{entity.majorRoutingFinishDate}}</Filed>
<Filed :span="12" :name="l('checkUpPeople')">{{entity.checkUpPeople}}</Filed>
<Filed :span="12" :name="l('checkUpFinishDate')">{{entity.checkUpFinishDate}}</Filed>
<Filed
:span="12"
:name="l('productingPreparationPeople')"
>{{entity.productingPreparationPeople}}</Filed>
<Filed
:span="12"
:name="l('productingPreparationFinishDate')"
>{{entity.productingPreparationFinishDate}}</Filed>
<Filed :span="12" :name="l('quotationPeople')">{{entity.quotationPeople}}</Filed>
<Filed :span="12" :name="l('quotationFinishDate')">{{entity.quotationFinishDate}}</Filed>
<Filed :span="12" :name="l('routingMethod')">{{entity.routingMethod}}</Filed>
<Filed :span="12" :name="l('outerEnvelopeSize')">{{entity.outerEnvelopeSize}}</Filed>
<Filed :span="12" :name="l('divideMark')">{{entity.divideMark}}</Filed>
<Filed :span="24" :name="l('productCode')">{{entity.productCode}}</Filed>
<Filed :span="12" :name="l('productName')">{{entity.productName}}</Filed>
<Filed :span="12" :name="l('drawnNumber')">{{entity.drawnNumber}}</Filed>
<Filed :span="12" :name="l('qualifiedQuantity')">{{entity.qualifiedQuantity}}</Filed>
<Filed :span="12" :name="l('uncertificateQuantity')">{{entity.uncertificateQuantity}}</Filed>
<Filed :span="12" :name="l('mainRoutingSetStatus')">{{entity.mainRoutingSetStatus}}</Filed>
<Filed :span="12" :name="l('majorRoutingSetStatus')">{{entity.majorRoutingSetStatus}}</Filed>
<Filed :span="12" :name="l('materialBillSetStatus')">{{entity.materialBillSetStatus}}</Filed>
<Filed :span="12" :name="l('routingDataSetStatus')">{{entity.routingDataSetStatus}}</Filed>
<Filed :span="12" :name="l('rootId')">{{entity.rootId}}</Filed>
<Filed :span="12" :name="l('mainRoutingExecuteStatus')">{{entity.mainRoutingExecuteStatus}}</Filed>
<Filed :span="12" :name="l('majorRoutingExecuteStatus')">{{entity.majorRoutingExecuteStatus}}</Filed>
<Filed
:span="12"
:name="l('mainRoutingActualStartDate')"
>{{entity.mainRoutingActualStartDate}}</Filed>
<Filed
:span="12"
:name="l('mainRoutingActualFinishDate')"
>{{entity.mainRoutingActualFinishDate}}</Filed>
<Filed
:span="12"
:name="l('majorRoutingActualStartDate')"
>{{entity.majorRoutingActualStartDate}}</Filed>
<Filed
:span="12"
:name="l('majorRoutingActualFinishDate')"
>{{entity.majorRoutingActualFinishDate}}</Filed>
<Filed :span="12" :name="l('batchNumber')">{{entity.batchNumber}}</Filed>
<Filed :span="12" :name="l('projectNumber')">{{entity.projectNumber}}</Filed>
<Filed :span="12" :name="l('urgencyLevel')">{{entity.urgencyLevel}}</Filed>
<Filed :span="12" :name="l('materialName')">{{entity.materialName}}</Filed>
<Filed :span="12" :name="l('isPreschedule')">{{entity.isPreschedule}}</Filed>
<Filed :span="12" :name="l('spareQty')">{{entity.spareQty}}</Filed>
<Filed :span="12" :name="l('demandStart')">{{entity.demandStart}}</Filed>
<Filed :span="12" :name="l('demandFinish')">{{entity.demandFinish}}</Filed>
<Filed :span="12" :name="l('partNamePro')">{{entity.partNamePro}}</Filed>
</Row>
</div>
</template>
<script>
import Api from './api'
export default {
name: 'Add',
data() {
return {
entity: {},
rules: {
name: [{ required: true, message: '必填', trigger: 'blur' }],
code: [{ required: true, message: '必填', trigger: 'blur' }]
}
}
},
props: {
eid: Number
},
methods: {
load(v) {
Api.get({ id: v }).then((r) => {
this.entity = r.result
this.$emit('on-load')
})
},
handleClose() {
this.$emit('on-close')
},
l(key) {
key = 'mes_order' + '.' + key
return this.$t(key)
}
},
watch: {
eid(v) {
if (v != 0) {
this.load(v)
}
}
}
}
</script>
<template>
<Form ref="form" :model="entity" :rules="rules" :label-width="90">
<Row>
<Col span="24">
<FormItem :label="l('DistributeMainRouting')" prop="DistributeMainRouting">
<UserSelect ref="userSelected" v-model="entity.DistributeMainRouting" />
</FormItem>
</Col>
<Col span="24">
<FormItem label="完成时间" style="width:100%" prop="MainRoutingFinishDate">
<DatePicker
v-model="entity.MainRoutingFinishDate"
type="datetime"
placeholder="请选择日期"
style="width:240px"
@on-change="getTimeMainRFD"
></DatePicker>
</FormItem>
</Col>
</Row>
<FormItem>
<Button type="primary" @click="handleSubmit" :disabled="disabled">保存</Button>
<Button @click="handleClose" class="ml20">取消</Button>
</FormItem>
</Form>
</template>
<script>
import Api from './api'
export default {
name: 'Dispatch',
props: {
ids: Array
},
data() {
return {
disabled: false,
entity: {
DistributeMainRouting: null,
MainRoutingFinishDate: ''
},
rules: {
DistributeMainRouting: [
{
required: true,
message: '请选择人员',
trigger: 'change',
type: 'number'
}
],
MainRoutingFinishDate: [
{
required: true,
message: '请选择时间',
trigger: 'change'
}
]
}
}
},
methods: {
handleSubmit() {
this.$refs.form.validate((v) => {
if (v) {
this.entity.ids = this.ids
Api.routingdistribute(this.entity)
.then((r) => {
if (r.success) {
this.$Message.success('工艺派发成功')
this.$emit('on-ok')
} else {
this.$Message.error('工艺派发失败')
}
this.$emit('on-ok')
})
.catch((err) => {
this.$Message.error('工艺派发失败')
})
}
})
},
handleClose() {
this.$emit('on-close')
},
l(key) {
key = 'mes_order' + '.' + key
return this.$t(key)
},
getTimeMainRFD(value) {
this.entity.MainRoutingFinishDate = value
}
},
watch: {}
}
</script>
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
import Api from '@/plugins/request'
export default {
// index: `${apsUrl}/scheduletotal/getall`,
paged(params) {
return Api.get(`${apsUrl}/scheduletotal/getall`, params);
},
getall(params) {
return Api.get(`${apsUrl}/schema/getall`, params);
},
clearall(params) {
return Api.post(`${apsUrl}/schema/clearall`, params);
},
getdetail(params) {
return Api.get(`${apsUrl}/scheduletotal/getdetail`, params);
},
}
<template>
<div class="results">
<Layout>
<Sider hide-trigger width="300">
<h4>排产方案列表</h4>
<div class="btn">
<a href="#" @click="clear">
<Icon type="ios-trash" />
<span>清空列表</span>
</a>
</div>
<div
class="left-body"
v-for="(li,index) in list"
:key="index"
@click="listData(li.schedule_Id,index)"
:class="isactive == index ? 'addclass' : '' "
>
<div class="title-t">排产方案:{{li.schedule_Id}}</div>
<div class="fa">排产时间:{{li.plan_Date}}</div>
<div class="fa">
<span>{{li.iNSERTFLAG}} /</span>
<span>参数级别:{{li.routing_schema}} /</span>
<span>参数应用:{{li.routing_version}}</span>
</div>
</div>
</Sider>
<Content>
<h4>排产结果</h4>
<div class="btn">
<Button type="primary" @click="parameter">下发</Button>
<!-- <Button type="primary">导出</Button> -->
<Button type="primary" icon="ios-redo" @click="comeBlck">返回</Button>
</div>
<div>
<Table :columns="columns" :data="data"></Table>
</div>
</Content>
</Layout>
</div>
</template>
<script>
import Api from "./api";
import expandRow from "./table-expand.vue";
export default {
components: { expandRow },
data() {
return {
isactive: 0,
data: [],
list: [],
columns: [
{
type: "expand",
width: 50,
render: (h, params) => {
return h(expandRow, {
props: {
row: params.row
}
});
}
},
{
title: "超期预警",
key: "id",
align: "center",
render: (h, params) => {
return h("div", [
h("Icon", {
props: {
type:
params.row.id == 1
? "ios-information-circle-outline"
: "ios-remove-circle-outline"
},
style: {
marginRight: "5px",
fontSize: "18px",
fontWeight: "bold",
color: params.row.id == 1 ? "#FE7777" : "#0DD78D"
}
})
]);
}
},
{
title: "零件图号",
key: "part_id",
align: "center"
},
{
title: "零件名称",
key: "part_name",
align: "center"
},
{
title: "计划开始时间",
key: "plan_start",
width: 220,
align: "center"
},
{
title: "计划结束时间",
key: "plan_start",
width: 220,
align: "center"
},
{
title: "投料时间",
key: "demand_start",
width: 220,
align: "center"
},
{
title: "节点时间",
key: "demand_finish",
width: 220,
align: "center"
},
{
title: "计划数量",
key: "plan_qty",
align: "center"
}
]
};
},
async fetch({ store, params }) {
await store.dispatch("loadDictionary"); // 加载数据字典
},
created() {
this.orderlist();
},
methods: {
orderlist() {
Api.getall()
.then(r => {
if (r.success) {
this.list = r.result;
if (r.result) {
this.listData(r.result[0].schedule_Id, 0);
} else {
this.listData(0, null);
}
}
})
.catch(error => {
this.$$Message.error("请求失败");
});
},
listData(id, index) {
this.isactive = index;
Api.paged({ scheduleId: id })
.then(r => {
if (r.success) {
this.data = r.result;
}
})
.catch(error => {
this.$$Message.error("请求失败");
});
},
clear() {
if (this.list.length > 0) {
this.$Modal.confirm({
title: "清空列表",
content: "您确定要清空列表吗",
onOk: () => {
Api.clearall().then(r => {
if (r.success) {
this.$Message.success("清空列表成功");
this.orderlist();
}
});
},
onCancel: () => {
this.$Message.info("已取消");
}
});
}
},
parameter() {},
addOk() {},
cancel() {},
comeBlck() {
this.$router.push({ path: "/aps/aps" });
}
}
};
</script>
<style lang="less" scoped>
.results {
font-family: Microsoft YaHei;
.ivu-layout-sider {
background: none;
height: 90vh;
border-right: 1px solid #e4e6ed;
.btn {
float: right;
margin-top: -44px;
margin-right: 15px;
}
}
.addclass {
border-color: #2680eb !important;
}
h4 {
height: 38px;
line-height: 38px;
border-bottom: 1px solid #e4e6ed;
margin-bottom: 15px;
margin-right: 15px;
}
.left-body:hover {
cursor: pointer;
border-color: #2680eb;
}
.left-body {
margin: 10px 15px 0 0;
border: 1px solid rgba(228, 230, 237, 1);
border-radius: 4px;
padding: 5px 8px;
.title-t {
height: 30px;
line-height: 30px;
color: #2680eb;
font-size: 15px;
font-weight: bold;
}
.fa {
height: 30px;
line-height: 30px;
}
}
.ivu-layout-content {
margin-left: 15px;
.btn {
float: right;
margin-top: -52px;
margin-right: 15px;
}
}
}
</style>
\ No newline at end of file
<template>
<div class="parameter">
<Form ref="form" :model="entity" :rules="rules" :label-width="100">
<Row :gutter="20">
<Col span="12">
<div class="left-up">
<p class="title-c">参数设置</p>
<FormItem :label="l('plan_method')" prop="plan_method">
<i-switch v-model="entity.plan_method" size="large">
<span slot="open">On</span>
<span slot="close">Off</span>
</i-switch>
</FormItem>
<FormItem :label="l('cal_id')" prop="cal_id">
<Select v-model="entity.cal_id" style="width:150px">
<Option value="beijing">策略1</Option>
<Option value="shanghai">策略2</Option>
<Option value="shenzhen">策略3</Option>
</Select>
</FormItem>
<FormItem :label="l('over_time')" prop="over_time">
<i-switch v-model="entity.over_time" size="large">
<span slot="open">On</span>
<span slot="close">Off</span>
</i-switch>
</FormItem>
<FormItem :label="l('efficiency_value')" prop="efficiency_value">
<Input v-model="entity.efficiency_value" style="width:150px"></Input>
</FormItem>
<FormItem :label="l('run_time')" prop="run_time">
<InputNumber v-model="entity.run_time"></InputNumber>
</FormItem>
<FormItem :label="l('isdiscrete')" prop="isdiscrete">
<i-switch v-model="entity.isdiscrete" size="large">
<span slot="open">On</span>
<span slot="close">Off</span>
</i-switch>
</FormItem>
<FormItem :label="l('discrete_value')" prop="discrete_value">
<InputNumber v-model="entity.discrete_value"></InputNumber>
</FormItem>
<FormItem :label="l('discrete_percent')" prop="discrete_percent">
<InputNumber v-model="entity.discrete_percent"></InputNumber>
</FormItem>
</div>
<div class="left-donw">
<p class="title-c">参数级别</p>
<div class="icon">
<Dropdown trigger="custom" :visible="visible" style="width:150px">
<a href="javascript:void(0)" @click="handleOpen">
<Icon type="md-git-compare" />
</a>
<DropdownMenu slot="list" style="text-align: center;">
<DropdownItem>
<a href="#">
<Icon type="md-apps" />
</a>
<span>转序规则</span>
</DropdownItem>
<DropdownItem>
<a href="#">
<Icon type="md-apps" />
</a>
<span>加班策略</span>
</DropdownItem>
<DropdownItem>
<a href="#">
<Icon type="md-apps" />
</a>
<span>任务平衡</span>
</DropdownItem>
<DropdownItem>
<a href="#">
<Icon type="md-apps" />
</a>
<span>是否离散</span>
</DropdownItem>
<div style="margin:10px;">
<Button type="primary" @click="handleOk">确定</Button>
<Button type="primary" @click="handle">关闭</Button>
</div>
</DropdownMenu>
</Dropdown>
</div>
<div class="slider">
<Slider v-model="entity.value1" :step="25" show-stops></Slider>
<div class="slow"></div>
<div class="fast"></div>
</div>
</div>
</Col>
<Col span="12">
<div class="right-up">
<p class="title-d">多台分配设置</p>
<div class="duo">
<Row>
<Col :span="12">
<FormItem :label="l('multi_machine')" prop="multi_machine">
<i-switch v-model="entity.switch4" size="large">
<span slot="open">On</span>
<span slot="close">Off</span>
</i-switch>
</FormItem>
</Col>
<Col :span="12">
<FormItem label="多台数量" prop="abbre">
<InputNumber v-model="entity.abbre"></InputNumber>
</FormItem>
</Col>
</Row>
<FormItem label="班组结构">
<Select v-model="entity.select6" style="width:150px">
<Option value="beijing">结构1</Option>
<Option value="shanghai">结构2</Option>
<Option value="shenzhen">结构3</Option>
<Option value="shenzhen">结构4</Option>
</Select>
</FormItem>
<div class="check-box">
<CheckboxGroup v-model="entity.fruit">
<Checkbox label="10985553333(数控车床 车工班)"></Checkbox>
<br />
<Checkbox label="10985553333(数控车床 车工班)"></Checkbox>
<br />
<Checkbox label="10985553333(数控车床 车工班)"></Checkbox>
<br />
<Checkbox label="10985553333(数控车床 车工班)"></Checkbox>
<br />
</CheckboxGroup>
</div>
</div>
</div>
<div class="left-donw right-down">
<p class="title-c">参数应用</p>
<div class="slider">
<Slider v-model="entity.value2" :step="33.3" show-stops></Slider>
<div class="slow">工序</div>
<div class="ding">订单</div>
<div class="ling">零件</div>
<div class="fast">所有</div>
</div>
</div>
</Col>
</Row>
<FormItem class="click-btn">
<Button type="primary" @click="handleSubmit">确定</Button>
<Button @click="handleClose" class="ml20">取消</Button>
</FormItem>
</Form>
</div>
</template>
<script>
export default {
data() {
return {
entity: {
value1: '100',
value2: '100',
fruit: []
},
visible: false,
rules: {
businessName: [{ required: true, message: '必填', trigger: 'blur' }],
businessCode: [{ required: true, message: '必填', trigger: 'blur' }]
}
}
},
methods: {
handleSubmit() {},
handleClose() {},
handleOpen() {
this.visible = true
},
handle() {
this.visible = false
},
handleOk() {},
l(key) {
let vkey = 'mes_op_task_plan_simulate' + '.' + key
return this.$t(vkey) || key
}
}
}
</script>
<style lang="less" scoped>
.parameter {
margin: 10px;
.left-up {
position: relative;
border: 1px solid #e0e0e0;
padding: 25px 0;
.title-c {
width: 68px;
padding-left: 5px;
background: #fff;
position: absolute;
top: -9px;
left: 25px;
color: #2680eb;
}
}
.left-donw {
margin-top: 15px;
position: relative;
border: 1px solid #e0e0e0;
padding: 25px 0;
.title-c {
width: 68px;
padding-left: 5px;
background: #fff;
position: absolute;
top: -9px;
left: 25px;
color: #2680eb;
}
.slider {
margin: 0 50px 0 50px;
position: relative;
.slow {
position: absolute;
top: 7px;
left: -5px;
}
.fast {
position: absolute;
top: 7px;
right: -10px;
}
.ding {
position: absolute;
top: 7px;
left: 30%;
}
.ling {
position: absolute;
top: 7px;
right: 30%;
}
}
.icon {
text-align: right;
padding-right: 15px;
margin-top: -15px;
}
}
.right-up {
position: relative;
border: 1px solid #e0e0e0;
padding: 25px 0;
.title-d {
width: 95px;
padding-left: 5px;
margin-left: 10px;
background: #fff;
position: absolute;
top: -9px;
left: 25px;
color: #2680eb;
}
.check-box {
height: 300px;
border-top: 1px solid #e0e0e0;
padding: 15px;
padding-left: 0;
margin-left: 25px;
overflow: auto;
}
}
.right-down {
height: 100px;
}
.click-btn {
text-align: right;
margin-top: 15px;
}
}
</style>
\ No newline at end of file
<template>
<div class="result-aps">
<Row class="expand-row">
<Col span="4">
<span class="expand-key">工序序号</span>
</Col>
<Col span="3">
<span class="expand-key">工序名称</span>
</Col>
<Col span="3">
<span class="expand-key">投入数量</span>
</Col>
<Col span="3">
<span class="expand-key">派工数量</span>
</Col>
<Col span="4">
<span class="expand-key">计划开始时间</span>
</Col>
<Col span="4">
<span class="expand-key">计划结束时间</span>
</Col>
<Col span="3">
<span class="expand-key">设备编号</span>
</Col>
</Row>
<Row v-for="(item,index) in dataList" :key="item.id">
<Col span="4">
<span class="expand-value">{{ item.op_task_pk }}</span>
</Col>
<Col span="3">
<span class="expand-value">{{ item.task_name }}</span>
</Col>
<Col span="3">
<span class="expand-value">{{ item.put_into_qty }}</span>
</Col>
<Col span="3">
<span class="expand-value">{{ item.dispatch_qty }}</span>
</Col>
<Col span="4">
<span class="expand-value">{{ item.plan_start }}</span>
</Col>
<Col span="4">
<span class="expand-value">{{ item.plan_finish }}</span>
</Col>
<Col span="3">
<span class="expand-value">{{ row.equip_id }}</span>
</Col>
</Row>
</div>
</template>
<script>
import Api from './api'
export default {
props: {
row: Object
},
data() {
return {
dataList: []
}
},
mounted() {
this.getList(this.row)
},
methods: {
getList(row) {
Api.getdetail({
part_task_pk: row.id,
scheduleId: row.schedule_id
}).then((r) => {
if (r.success) {
this.dataList = r.result
}
})
}
}
}
</script>
<style lang='less'>
.result-aps {
.expand-row {
text-align: center;
}
// .ivu-row {
// font-weight: bold !important;
// }
}
td.ivu-table-expanded-cell {
padding: 0 !important;
}
</style>
\ No newline at end of file
import Api from '@/plugins/request'
export default {
getmesorder(params) {
return Api.get(`${apsManualUrl}/aps/getmesorder`, 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;">
<Col span="20">
<div>
<!-- :indeterminate="indeterminate" -->
<Checkbox
:label="resourcesType==0?singleList.shop_name:resourcesType==2?singleList.equip_name:''"
v-model="checkAll"
@click.prevent.native="handleCheckAll(singleList.shop_id)"
>{{resourcesType==0?singleList.shop_name:resourcesType==2?singleList.equip_name:''}}</Checkbox>
</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>
<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>
</div>
</template>
<script>
import Api from './api'
export default {
name: 'CheckboxList',
props: ['singleList', 'resourcesType'],
data() {
return {
indeterminate: true,
checkAll: false,
checkAllGroup: [],
typeIcon: 'ios-arrow-down',
show: -1,
list: [],
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)
}
})
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;
}
}
</style>
\ No newline at end of file
<template>
<div class="scheduling">
<div class="aps-l">
<Row class="row-p">
<Col :span="9" class="chan-chi">排产池</Col>
</Row>
<div
class="left-body"
v-for="(li,index) in list"
:key="index"
@click="listData(li.part_task_pk,index)"
:class="isactive == index ? 'addclass' : '' "
>
<Row class="title-i">
<Col :span="20" class="order-code">订单号:{{li.order_id}}</Col>
<Col :span="4" class="order-ringht">
<Icon type="md-close" @click="close" />
</Col>
</Row>
<div class="fa">{{li.routing_version}}</div>
<div class="gong-xu">
<Icon type="ios-copy" />
<span>工序:{{li.routing_schema}}</span>
</div>
<div class="time-s">{{li.demand_start}}{{li.demand_finish}}</div>
</div>
</div>
<div class="aps-r">
<!-- <div class="g-list">工序列表</div> -->
<Row class="g-list">
<Col :span="2" class="chan-chi">工序列表</Col>
<Col :span="22" class="l-ringht">
<Tabs v-model="selectName" type="card" @on-click="tagClick">
<TabPane label="全部" name="all"></TabPane>
<TabPane label="已排产" name="yi"></TabPane>
<TabPane label="未排产" name="wei"></TabPane>
</Tabs>
</Col>
</Row>
<div class="right-body">
<List :result="result"></List>
</div>
</div>
</div>
</template>
<script>
import List from './list.vue'
import Api from './api'
export default {
name: 'list',
components: {
List
},
async fetch({ store, params }) {
await store.dispatch('loadDictionary') // 加载数据字典
},
data() {
return {
activeindex: 1,
list: [],
status: '', //为空是全部排产,0为未排产;13为已排查;
partTaskPk: '', //车间
result: [],
isactive: 0,
selectName: 'all'
}
},
created() {
this.orderlist()
},
methods: {
orderlist() {
Api.getmesorder({ status: 2, workshop_id: 3 }).then((r) => {
// console.log(r)
if (r.success) {
this.list = r.result
this.listData(r.result[0].part_task_pk, 0)
}
})
},
listData(li, index) {
this.status = ''
this.partTaskPk = li
this.tagClick('all')
this.isactive = index
},
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)
if (r.success) {
this.result = r.result
}
})
},
close() {}
}
}
</script>
<style lang="less" scoped>
.addclass {
border-color: #249e91 !important;
.title-i {
background: #249e91 !important;
}
}
.scheduling {
display: flex;
display: -webkit-flex;
height: 100%;
.aps-l {
width: 25%;
border-right: 1px solid #e4e6ed;
height: 100%;
padding: 0 15px 10px 10px;
overflow: auto;
.row-p {
border-bottom: 1px solid #e4e6ed;
.chan-chi {
font-size: 14px;
font-weight: bold;
margin-top: 3px;
}
.l-ringht {
text-align: right;
}
}
.left-body {
margin-top: 15px;
border: 1px solid rgba(228, 230, 237, 1);
border-radius: 4px;
.title-i {
padding: 0 8px;
height: 34px;
line-height: 34px;
color: #515a6e;
background: #e4e6ed;
.order-ringht {
text-align: right;
.ivu-icon {
cursor: pointer;
}
}
}
.fa {
height: 32px;
line-height: 32px;
color: #249e91;
padding: 5px 8px 0 8px;
}
.gong-xu {
padding: 0 8px;
height: 32px;
line-height: 32px;
color: #515a6e;
}
.time-s {
padding: 0 8px;
height: 32px;
line-height: 32px;
color: #515a6e;
}
}
}
.aps-r {
width: 75%;
padding: 0 15px;
.g-list {
font-size: 14px;
font-weight: bold;
.chan-chi {
font-size: 14px;
font-weight: bold;
margin-top: 3px;
padding-bottom: 6px;
border-bottom: 1px solid #e4e6ed;
}
.l-ringht {
text-align: left;
}
}
.right-body {
margin-top: 15px;
}
}
}
</style>
\ No newline at end of file
This diff is collapsed.
This diff is collapsed.
<template>
<Form ref="formValidate" :model="formValidate" :rules="ruleValidate" :show-message="false" :label-width="90">
<Row>
<FormItem label="类型" prop="typeid">
<Select v-model="formValidate.typeid" placeholder="请选择" style="width:240px;">
<Option v-for="(item,index) in alltype " :key="item.index" :value="item.value">{{item.label}}</Option>
</Select>
</FormItem>
</Row>
<Row>
<FormItem label="名称" prop="name">
<Input v-model="formValidate.name" style="width:240px;"></Input>
</FormItem>
</Row>
<Row>
<FormItem label="描述" prop="description">
<Input v-model="formValidate.description" style="width:240px;"></Input>
</FormItem>
</Row>
<!-- <FormItem label="编号" prop="number">
<Input v-model="formValidate.number" number></Input>
</FormItem> -->
</Form>
</template>
<script>
export default {
name:'addDictionary',
props:['alltype'],
data(){
return {
formValidate:{typeid:'',name:'',description:''},
ruleValidate:{
name:[{required: true}],
// number:[{required: true,type:'number'}],
typeid:[{required: true}]
}
}
}
}
</script>
<style scoped>
.ivu-form-item {width:48%;display:inline-block;}
.ivu-form-item:nth-child(odd) {
margin-left: 10px
}
</style>
\ No newline at end of file
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
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