Commit 40a5e8f6 authored by 仇晓婷's avatar 仇晓婷

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

parents e0b8f60b 59a692ab
......@@ -731,66 +731,54 @@ export default {
notes: '备注',
},
// 工厂日历
calendar_class: {
mes_shift_work_sched: {
id: '',
creationTime: '创建时间',
creatorUserId: '创建人',
lastModificationTime: '更新时间',
lastModifierUserId: '更新人',
isDeleted: '删除人',
deletionTime: '删除时间',
deleterUserId: '删除人',
title: '班次名称',
startTime: '开始时间',
endTime: '结束时间',
startendTime: '班次时间',
workHours: '工作时长',
shiftWorkSchedCode:'班次编号',
shiftName:'班次名称',
shiftStart:'班次开始时间',
shiftEnd:'班次结束时间',
shiftStartEnd: '班次时间',
status:'状态',
workingLong:'工作时长',
shiftWorkSchedPk1:'班次id',
creationTime:'',
creatorUserId:'',
lastModificationTime:'',
lastModifierUserId:'',
isDeleted:'',
deletionTime:'',
deleterUserId:'',
},
calendar_holiday: {
id: '',
creationTime: '创建时间',
holidayId: "节假日编号",
holidayName: "节假日名称",
holidayTimeslot: "节假日时间段",
holidayStart: "节假日开始日期",
holidayEnd: "节假日结束日期",
creationTime: "创建时间",
creatorUserId: '创建人',
lastModificationTime: '更新时间',
lastModifierUserId: '更新人',
isDeleted: '删除人',
deletionTime: '删除时间',
deleterUserId: '删除人',
title: '节日名称',
startTime: '开始时间',
days: '工作时长(小时)',
status: '状态',
endTime: '结束时间',
id: '',
},
calendar_overtime: {
id: '',
holidayCalId: "日历编号",
holidayCalName: "日历名称",
mesHolidayTitles: "关联节假日",
mesHolidayIds: "关联节假日id",
creationTime: '创建时间',
creatorUserId: '创建人',
lastModificationTime: '更新时间',
lastModifierUserId: '更新人',
isDeleted: '删除人',
deletionTime: '删除时间',
deleterUserId: '删除人',
title: '日历名称',
restType: '',
holidayId: '',
holidayTitle: '关联节假日',
status: '',
},
calendar_work: {
id: '',
creationTime: '创建时间',
creatorUserId: '创建人',
lastModificationTime: '更新时间',
lastModifierUserId: '更新人',
isDeleted: '删除人',
deletionTime: '删除时间',
deleterUserId: '删除人',
title: '日历名称',
calendarClassId: '',
calendarClassTitle: '关联班次',
calendarClassStart: '开始时间',
calendarClassEnd: '结束时间',
workHours: '工作时长',
calId: "日历编号",
calName: "日历名称",
mesShiftWorkSchedIds: "关联班次id",
shiftName: "关联班次名称",
workingLong: "工作时长",
creationTime: "创建时间",
creatorUserId: "创建人",
},
Connector: {
id: '',
......
......@@ -7,6 +7,7 @@
@on-click="handleClick"
>
<Avatar size="small" :src="info.avatar" v-if="info.avatar" />
<Avatar size="small" style="background-color: #87d068" icon="ios-person" v-else-if="!info.avatar" />
<span class="i-layout-header-user-name" v-if="!isMobile">{{ info.name }}</span>
<DropdownMenu slot="list">
<i-link to="/basicData/userManagent/userInfo">
......
<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
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
This diff is collapsed.
......@@ -16,9 +16,8 @@
<script>
export default {
data() {
return {
}},
return {}
},
created() {
// this.openView(1)
},
......
This diff is collapsed.
import Api from '@/plugins/request'
export default {
index:`${systemUrl}/calendarclass/paged`,
index:`${systemUrl}/messhiftworksched/paged`,
paged(params){
return Api.post(`${systemUrl}/calendarclass/paged`,params);
return Api.post(`${systemUrl}/messhiftworksched/paged`,params);
},
get(params){
return Api.get(`${systemUrl}/calendarclass/get`,params);
return Api.get(`${systemUrl}/messhiftworksched/get`,params);
},
create(params){
return Api.post(`${systemUrl}/calendarclass/create`,params);
return Api.post(`${systemUrl}/messhiftworksched/create`,params);
},
update(params){
return Api.post(`${systemUrl}/calendarclass/update`,params);
return Api.post(`${systemUrl}/messhiftworksched/update`,params);
},
//删除:
delete(params) {
return Api.delete(`${systemUrl}/calendarclass/delete`,{params:params});
return Api.delete(`${systemUrl}/messhiftworksched/delete`,{params:params});
},
}
\ No newline at end of file
}
\ No newline at end of file
......@@ -2,10 +2,13 @@
<div class="detail">
<Row>
<Filed :span="12" :name="l('title')">{{entity.title}}</Filed>
<Filed :span="12" :name="l('startTime')">{{entity.startTime}}</Filed>
<Filed :span="12" :name="l('endTime')">{{entity.endTime}}</Filed>
<Filed :span="12" :name="l('workHours')">{{entity.workHours}}</Filed>
<Filed :span="12" :name="l('shiftWorkSchedCode')">{{entity.shiftWorkSchedCode}}</Filed>
<Filed :span="12" :name="l('shiftName')">{{entity.shiftName}}</Filed>
<Filed :span="12" :name="l('shiftStart')">{{entity.shiftStart}}</Filed>
<Filed :span="12" :name="l('shiftEnd')">{{entity.shiftEnd}}</Filed>
<!-- <Filed :span="12" :name="l('status')">{{entity.status}}</Filed>
<Filed :span="12" :name="l('workingLong')">{{entity.workingLong}}</Filed>
<Filed :span="12" :name="l('shiftWorkSchedPk1')">{{entity.shiftWorkSchedPk1}}</Filed> -->
</Row>
</div>
......@@ -37,7 +40,7 @@
this.$emit('on-close')
},
l(key) {
key = "calendar_class" + "." + key;
key = "mes_shift_work_sched" + "." + key;
return this.$t(key)
}
},
......
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.
<template>
<classView></classView>
<classView @on-ok="onLaode"></classView>
</template>
<script>
import classView from './class/index'
export default {
components:{classView},
methods:{
onLaode(){
alert("reloade")
console.log("123123")
},
},
}
</script>
<style lang="less">
......
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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