fix: 一些bug调整

This commit is contained in:
caoqianming 2023-11-27 18:14:35 +08:00
parent 4801c126c7
commit 93a85eb192
15 changed files with 1438 additions and 1805 deletions

View File

@ -2,90 +2,92 @@
<div ref="ganttContainer"></div>
</template>
<script>
import {gantt} from 'dhtmlx-gantt';
export default {
props: {
tasks: {
type: Object,
default () {
return {
data: [],
links: [],
}
import { gantt } from 'dhtmlx-gantt';
export default {
props: {
tasks: {
type: Object,
default() {
return {
data: [],
links: [],
}
},
start_date:{
type:String,
default () {
return ''
}
},
end_date:{
type:String,
default () {
return ''
}
},
}
},
mounted: function () {
gantt.clearAll();//
gantt.i18n.setLocale('cn'); //
gantt.config.date_format = "%Y-%m-%d";
gantt.config.date_grid = "%Y/%m/%d";
gantt.config.readonly = true; //
gantt.config.autosize = true;//
gantt.plugins({tooltip: true});
gantt.config.bar_height = 20; //task
// gantt.config.start_date = new Date(2023, 9, 1);
// gantt.config.end_date = new Date(2023, 9, 10);
//
// gantt.templates.grid_folder = (item) => {
// return ""
// }
//
// gantt.templates.grid_file = (item) => {
// return ""
// }
gantt.config.columns = [
{name: 'number',label: '任务编号',tree: true,width: '*',align: 'left'},
{name: 'cate',label: '规格型号', width: '70',align: 'center'},
{name: 'count',label: '完成量',width: '50', align: 'center'}
];
gantt.attachEvent('onGanttReady', function () {
gantt.templates.tooltip_text = function (start, end, task) {
return task.number +
start_date: {
type: String,
default() {
return ''
}
},
end_date: {
type: String,
default() {
return ''
}
},
},
mounted: function () {
gantt.clearAll();//
gantt.i18n.setLocale('cn'); //
gantt.config.date_format = "%Y-%m-%d";
gantt.config.date_grid = "%Y/%m/%d";
gantt.config.readonly = true; //
gantt.config.autosize = true;//
gantt.plugins({ tooltip: true });
gantt.config.bar_height = 20; //task
// gantt.config.start_date = new Date(2023, 9, 1);
// gantt.config.end_date = new Date(2023, 9, 10);
//
// gantt.templates.grid_folder = (item) => {
// return ""
// }
//
// gantt.templates.grid_file = (item) => {
// return ""
// }
gantt.config.columns = [
{ name: 'number', label: '任务编号', tree: true, width: '200', align: 'left' },
{ name: 'material_name', label: '产品名称', width: '70', align: 'left' },
{ name: 'material_specification', label: '规格', width: '70', align: 'left' },
{ name: 'material_model', label: '型号', width: '70', align: 'left' },
{ name: 'count', label: '任务量', width: '50', align: 'center' }
];
gantt.attachEvent('onGanttReady', function () {
gantt.templates.tooltip_text = function (start, end, task) {
return task.number +
'<br/>计划产量:' + task.count +
'<br/>当日产量:' + task.count_real +
'<br/>完成产量:' + task.count_ok +
'<br/>开工时间:' + gantt.templates.tooltip_date_format(start) +
'<br/>完工时间:' + gantt.templates.tooltip_date_format(start);
};
});
//, 使,
// gantt.config.autosize = true;
// gantt.config.open_split_tasks = true;
};
});
//, 使,
// gantt.config.autosize = true;
// gantt.config.open_split_tasks = true;
// gantt.config.scale_unit = "day";
// gantt.config.step = 1;
// gantt.config.date_scale = " %Y/%m/%d";
//
var yearScaleCss = function () {
return 'yearScaleStyle';
};
var monthScaleCss = function () {
return 'monthScaleStyle';
};
gantt.config.scales = [
{ unit: 'year', step: 1, format: " %Y年", css: yearScaleCss },
{ unit: 'day', step: 1, format: " %m月%d日", css: monthScaleCss }
];
gantt.config.duration_step = 1;
//
gantt.init(this.$refs.ganttContainer);
gantt.parse(this.$props.tasks);
}
// gantt.config.scale_unit = "day";
// gantt.config.step = 1;
// gantt.config.date_scale = " %Y/%m/%d";
//
var yearScaleCss = function () {
return 'yearScaleStyle';
};
var monthScaleCss = function () {
return 'monthScaleStyle';
};
gantt.config.scales = [
{ unit: 'year', step: 1, format: " %Y年", css: yearScaleCss },
{ unit: 'day', step: 1, format: " %m月%d日", css: monthScaleCss }
];
gantt.config.duration_step = 1;
//
gantt.init(this.$refs.ganttContainer);
gantt.parse(this.$props.tasks);
}
</script>
<style>
@import "~dhtmlx-gantt/codebase/dhtmlxgantt.css";
</style>
}
</script>
<style>
@import "~dhtmlx-gantt/codebase/dhtmlxgantt.css";
</style>

View File

@ -2,38 +2,23 @@
<el-container>
<el-header>
<div class="left-panel">
<el-button type="primary" icon="el-icon-plus" @click="add">新增</el-button>
<el-button type="primary" icon="el-icon-plus" @click="add" v-auth="'equipment.create'">新增</el-button>
</div>
<div class="right-panel">
<el-input
v-model="query.search"
placeholder="名称"
clearable
style="margin-right: 5px;"
></el-input>
<el-button
type="primary"
icon="el-icon-search"
@click="handleQuery"
></el-button>
<el-input v-model="query.search" placeholder="名称" clearable style="margin-right: 5px;"></el-input>
<el-button type="primary" icon="el-icon-search" @click="handleQuery"></el-button>
</div>
</el-header>
<el-main class="nopadding">
<scTable
ref="table"
:apiObj="apiObj"
row-key="id"
stripe
:params="query"
>
<el-table-column type="index" width="50"/>
<scTable ref="table" :apiObj="apiObj" row-key="id" stripe :params="query">
<el-table-column type="index" width="50" />
<el-table-column label="设备名称" prop="name" show-overflow-tooltip>
</el-table-column>
<el-table-column label="设备编号" prop="number">
</el-table-column>
<el-table-column label="型号规格" prop="model">
</el-table-column>
<el-table-column label="生产厂及国别" prop="factory" show-overflow-tooltip>
<el-table-column label="生产厂" prop="factory" show-overflow-tooltip>
</el-table-column>
<el-table-column label="生产日期" prop="production_date">
</el-table-column>
@ -41,13 +26,13 @@
</el-table-column>
<el-table-column label="状态">
<template #default="scope">
<el-tag v-if="scope.row.state===10" type="success">
<el-tag v-if="scope.row.state === 10" type="success">
{{ state_[scope.row.state] }}
</el-tag>
<el-tag v-else-if="scope.row.state===20" type="warning">
<el-tag v-else-if="scope.row.state === 20" type="warning">
{{ state_[scope.row.state] }}
</el-tag>
<el-tag v-else-if="scope.row.state===30">
<el-tag v-else-if="scope.row.state === 30">
{{ state_[scope.row.state] }}
</el-tag>
<el-tag v-else type="danger">
@ -64,117 +49,76 @@
<el-table-column label="存放位置" show-overflow-tooltip>
<template #default="scope">{{ scope.row.place }}</template>
</el-table-column>
<el-table-column label="备注" show-overflow-tooltip>
<el-table-column label="备注" show-overflow-tooltip>
<template #default="scope">{{ scope.row.description }}</template>
</el-table-column>
<el-table-column label="操作" fixed="right" align="left">
<el-table-column label="操作" fixed="right" align="left" width="180">
<template #default="scope">
<el-link
type="primary"
@click="table_record (scope.row)"
v-auth="'equipment'"
>
巡检记录
</el-link>
<el-button link type="primary" @click="table_record(scope.row)" v-auth="'echeckrecord.create'">
巡检
</el-button>
<el-divider direction="vertical"></el-divider>
<el-link
type="primary"
@click="table_edit(scope.row)"
v-auth="'equipment'"
>
<el-button link type="warning" @click="table_edit(scope.row)" v-auth="'equipment.update'">
编辑
</el-link>
</el-button>
<el-divider direction="vertical"></el-divider>
<el-link
type="danger"
@click="table_del(scope.row)"
v-auth="'equipment'"
>
<el-button link type="danger" @click="table_del(scope.row)" v-auth="'equipment.delete'">
删除
</el-link>
</el-button>
</template>
</el-table-column>
</scTable>
</el-main>
</el-container>
<save-dialog
v-if="dialog.save"
ref="saveDialog"
@success="handleSaveSuccess"
@closed="dialog.save = false"
></save-dialog>
<el-drawer
title="检定记录"
v-model="visibleRecord"
:size="1000"
destroy-on-close
@closed="visibleRecord=false"
>
<el-container v-loading="loading">
<el-button type="primary" icon="el-icon-plus" @click="record_create" v-auth="'equipment'" style="position: absolute;z-index: 10;left: 110px;top: 16px;"></el-button>
<el-main style="padding: 0 20px 20px 20px">
<scTable
ref="drawer_table"
:apiObj="apiObj2"
row-key="id"
stripe
:params="query2"
>
<el-table-column type="index" width="50"/>
<el-table-column label="设备名称" prop="name" show-overflow-tooltip>
</el-table-column>
<el-table-column label="巡检时间" prop="inspect_time">
</el-table-column>
<el-table-column label="巡检结果" prop="result">
<template #default="scope">
<span>{{results_[scope.row.result]}}</span>
</template>
</el-table-column>
<el-table-column label="巡检人" prop="production_date">
</el-table-column>
<el-table-column label="操作" fixed="right" align="center" width="160px">
<template #default="scope">
<el-link
type="danger"
@click="record_del(scope.row)"
v-auth="'equipment.delete'"
>
删除
</el-link>
</template>
</el-table-column>
</scTable>
</el-main>
</el-container>
</el-drawer>
<el-dialog title="设备巡检" v-model="visible">
<el-form
ref="dialogForm"
:rules="rules"
label-width="100px"
:model="form"
>
<el-row>
<el-col :md="12" :sm="24" prop="inspect_time">
<el-form-item label="巡检时间">
<el-date-picker
v-model="form.inspect_time"
type="datetime"
placeholder="巡检时间"
value-format="YYYY-MM-DD HH:mm:ss"
style="width:100%"
>
</el-date-picker>
</el-form-item>
</el-col>
<el-col :md="12" :sm="24">
<el-form-item label="巡检人" prop="inspect_user">
<span style="display:flex">
<el-input readonly v-model="form.inspect_user_name"></el-input>
<ehsUserSelect :multiple="false" @submit="getReceptionist"/>
</span>
</el-form-item>
<!-- <el-form-item label="巡检人" prop="inspect_user">
<save-dialog v-if="dialog.save" ref="saveDialog" @success="handleSaveSuccess"
@closed="dialog.save = false"></save-dialog>
<el-drawer title="检定记录" v-model="visibleRecord" :size="1000" destroy-on-close @closed="visibleRecord = false">
<el-container v-loading="loading">
<el-button type="primary" icon="el-icon-plus" @click="record_create" v-auth="'equipment'"
style="position: absolute;z-index: 10;left: 110px;top: 16px;"></el-button>
<el-main style="padding: 0 20px 20px 20px">
<scTable ref="drawer_table" :apiObj="apiObj2" row-key="id" stripe :params="query2">
<el-table-column type="index" width="50" />
<el-table-column label="设备名称" prop="equipment_name" show-overflow-tooltip>
</el-table-column>
<el-table-column label="巡检时间" prop="inspect_time">
</el-table-column>
<el-table-column label="巡检结果" prop="result">
<template #default="scope">
<span>{{ results_[scope.row.result] }}</span>
</template>
</el-table-column>
<el-table-column label="巡检人" prop="inspect_user_name">
</el-table-column>
<el-table-column label="操作" fixed="right" align="center" width="160px">
<template #default="scope">
<el-link type="danger" @click="record_del(scope.row)" v-auth="'equipment.delete'">
删除
</el-link>
</template>
</el-table-column>
</scTable>
</el-main>
</el-container>
</el-drawer>
<el-dialog title="设备巡检" v-model="visible">
<el-form ref="dialogForm" :rules="rules" label-width="100px" :model="form">
<el-row>
<el-col :md="12" :sm="24" prop="inspect_time">
<el-form-item label="巡检时间">
<el-date-picker v-model="form.inspect_time" type="datetime" placeholder="巡检时间"
value-format="YYYY-MM-DD HH:mm:ss" style="width:100%">
</el-date-picker>
</el-form-item>
</el-col>
<el-col :md="12" :sm="24">
<el-form-item label="巡检人" prop="inspect_user">
<span style="display:flex">
<el-input readonly v-model="form.inspect_user_name"></el-input>
<ehsUserSelect :multiple="false" @submit="getReceptionist" />
</span>
</el-form-item>
<!-- <el-form-item label="巡检人" prop="inspect_user">
<el-select
v-model="form.inspect_user"
placeholder="巡检人"
@ -189,31 +133,27 @@
/>
</el-select>
</el-form-item> -->
</el-col>
<el-col :md="12" :sm="24">
<el-form-item label="巡检结果" prop="result">
<el-select style="width: 100%" v-model="form.result" placeholder="巡检结果">
<el-option
v-for="item in options"
:key="item.id"
:label="item.name"
:value="item.id">
</el-option>
</el-select>
</el-form-item>
</el-col>
<el-col :md="12" :sm="24">
<el-form-item label="备注">
<el-input v-model="form.note" placeholder="备注"/>
</el-form-item>
</el-col>
</el-row>
</el-form>
<el-footer>
<el-button type="primary" :loading="isSaveing" @click="submit">保存</el-button>
<el-button @click="visible = false">取消</el-button>
</el-footer>
</el-dialog>
</el-col>
<el-col :md="12" :sm="24">
<el-form-item label="巡检结果" prop="result">
<el-select style="width: 100%" v-model="form.result" placeholder="巡检结果">
<el-option v-for="item in options" :key="item.id" :label="item.name" :value="item.id">
</el-option>
</el-select>
</el-form-item>
</el-col>
<el-col :md="12" :sm="24">
<el-form-item label="备注">
<el-input v-model="form.note" placeholder="备注" />
</el-form-item>
</el-col>
</el-row>
</el-form>
<el-footer>
<el-button type="primary" :loading="isSaveing" @click="submit">保存</el-button>
<el-button @click="visible = false">取消</el-button>
</el-footer>
</el-dialog>
</template>
<script>
import saveDialog from "./equipment_form.vue";
@ -229,85 +169,85 @@ export default {
},
apiObj: this.$API.em.equipment.list,
query: {
page:1,
page_size:20,
type:10
page: 1,
page_size: 20,
type: 10
},
apiObj2: this.$API.em.einspect.list,
query2: {
equipment:''
equipment: ''
},
selection: [],
state_: {
10: '完好',
20: '限用',
30: '在修',
40: '禁用',
},
results_:{
'pass': '合格',
'fail': '不合格',
},
options:[
{id:'pass',name: '合格'},
{id:'fail',name: '不合格'}
],
form:{},
rules: {
check_date: [{ required: true, message: "请选择检验时间" }],
check_organization: [{ required: true, message: "请填写检定机构" }],
},
item:{},
visible:false,
visibleRecord:false,
10: '完好',
20: '限用',
30: '在修',
40: '禁用',
},
results_: {
'pass': '合格',
'fail': '不合格',
},
options: [
{ id: 'pass', name: '合格' },
{ id: 'fail', name: '不合格' }
],
form: {},
rules: {
check_date: [{ required: true, message: "请选择检验时间" }],
check_organization: [{ required: true, message: "请填写检定机构" }],
},
item: {},
visible: false,
visibleRecord: false,
};
},
mounted(){
mounted() {
this.getUserList();
},
methods: {
//
getUserList(){
getUserList() {
let that = this;
this.$API.system.user.list.req({page_size:20,page:1}).then(res=>{
this.$API.system.user.list.req({ page_size: 20, page: 1 }).then(res => {
that.userList = res.results;
});
},
getReceptionist(data) {
this.form.inspect_user=data.id;
this.form.inspect_user_name=data.name;
this.form.inspect_user = data.id;
this.form.inspect_user_name = data.name;
},
//
add() {
this.dialog.save = true;
this.$nextTick(() => {
this.$refs.saveDialog.open("add",10);
this.$refs.saveDialog.open("add", 10);
});
},
//
table_edit(row) {
this.dialog.save = true;
this.$nextTick(() => {
this.$refs.saveDialog.open("edit",10).setData(row);
this.$refs.saveDialog.open("edit", 10).setData(row);
});
},
//
table_show(row) {
this.dialog.save = true;
this.$nextTick(() => {
this.$refs.saveDialog.open("show",10).setData(row);
this.$refs.saveDialog.open("show", 10).setData(row);
});
},
table_record(row){
table_record(row) {
this.item = row;
this.form.equipment = row.id;
this.query2.equipment = row.id;
this.$nextTick(()=>{
this.$nextTick(() => {
this.visibleRecord = true;
})
},
//
record_create(){
record_create() {
this.visible = true;
},
//
@ -315,12 +255,12 @@ export default {
this.$refs.dialogForm.validate(async (valid) => {
if (valid) {
this.isSaveing = true;
this.$API.em.einspect.create.req(this.form).then(res=>{
this.$API.em.einspect.create.req(this.form).then(res => {
this.visible = false;
this.isSaveing = false;
this.$message.success("操作成功");
this.$refs.drawer_table.refresh();
}).catch(()=>{
}).catch(() => {
this.isSaveing = false;
})
}
@ -348,8 +288,8 @@ export default {
}
},
handleQuery() {
this.$refs.table.queryData(this.query)
},
this.$refs.table.queryData(this.query)
},
resetQuery() {
this.query = {};
},

View File

@ -1,267 +1,184 @@
<template>
<el-drawer
:title="titleMap[mode]"
v-model="visible"
:size="1000"
destroy-on-close
@closed="$emit('closed')"
>
<el-drawer :title="titleMap[mode]" v-model="visible" :size="1000" destroy-on-close @closed="$emit('closed')">
<el-container v-loading="loading">
<el-main style="padding: 0 20px 20px 20px">
<el-form
ref="dialogForm"
:model="form"
:rules="rules"
:disabled="mode == 'show'"
label-width="100px"
v-if="form.type==10"
>
<el-row>
<el-col :md="12" :sm="24">
<el-form-item label="所属部门">
<el-select
v-model="form.belong_dept"
placeholder="所属部门"
clearable
style="width: 100%"
@change="deptChange"
>
<el-option
v-for="item in group"
:key="item.id"
:label="item.name"
:value="item.id"
></el-option>
</el-select>
</el-form-item>
</el-col>
<el-col :md="12" :sm="24">
<el-form-item label="所属工段">
<el-select
v-model="form.mgroup"
placeholder="所属工段"
clearable
style="width: 100%"
>
<el-option
v-for="item in mgroups"
:key="item.id"
:label="item.name"
:value="item.id"
></el-option>
</el-select>
</el-form-item>
</el-col>
<el-col :md="12" :sm="24">
<el-form-item label="设备名称" prop="name">
<el-input v-model="form.name" placeholder="设备名称"/>
</el-form-item>
</el-col>
<el-col :md="12" :sm="24">
<el-form-item label="设备编号" prop="number">
<el-input v-model="form.number" placeholder="设备编号"/>
</el-form-item>
</el-col>
<el-col :md="12" :sm="24">
<el-form-item label="型号规格">
<el-input v-model="form.model" placeholder="规格型号规格"/>
</el-form-item>
</el-col>
<el-col :md="12" :sm="24">
<el-form-item label="生产厂">
<el-input v-model="form.factory" placeholder="生产厂"/>
</el-form-item>
</el-col>
<el-col :md="12" :sm="24">
<el-form-item label="状态">
<el-select style="width: 100%" v-model="form.state" placeholder="请选择">
<el-option
v-for="item in options"
:key="item.value"
:label="item.label"
:value="item.value">
</el-option>
</el-select>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :md="12" :sm="24">
<el-form-item label="生产日期">
<el-date-picker
v-model="form.production_date"
type="date"
placeholder="选择日期"
value-format="YYYY-MM-DD"
style="width:100%"
>
</el-date-picker>
</el-form-item>
</el-col>
<el-col :md="12" :sm="24">
<el-form-item label="购置日期">
<el-date-picker
v-model="form.buy_date"
type="date"
placeholder="选择日期"
value-format="YYYY-MM-DD"
style="width:100%"
>
</el-date-picker>
</el-form-item>
</el-col>
<el-col :md="12" :sm="24">
<el-form-item label="用电功率">
<el-input-number v-model="form.power_kw" :precision="2" :min="0" controls-position="right" placeholder="用电功率"/>
</el-form-item>
</el-col>
<el-col :md="12" :sm="24">
<el-form-item label="责任人" prop="leader_name">
<span style="display:flex">
<el-input readonly v-model="form.keeper_name"></el-input>
<ehsUserSelect :multiple="false" @submit="getReceptionist"/>
<el-form ref="dialogForm" :model="form" :rules="rules" :disabled="mode == 'show'" label-width="100px"
v-if="form.type == 10">
<el-row>
<el-col :md="12" :sm="24">
<el-form-item label="所属部门">
<el-select v-model="form.belong_dept" placeholder="所属部门" clearable style="width: 100%"
@change="deptChange">
<el-option v-for="item in group" :key="item.id" :label="item.name" :value="item.id"></el-option>
</el-select>
</el-form-item>
</el-col>
<el-col :md="12" :sm="24">
<el-form-item label="所属工段">
<el-select v-model="form.mgroup" placeholder="所属工段" clearable style="width: 100%">
<el-option v-for="item in mgroups" :key="item.id" :label="item.name" :value="item.id"></el-option>
</el-select>
</el-form-item>
</el-col>
<el-col :md="12" :sm="24">
<el-form-item label="设备名称" prop="name">
<el-input v-model="form.name" placeholder="设备名称" />
</el-form-item>
</el-col>
<el-col :md="12" :sm="24">
<el-form-item label="设备编号" prop="number">
<el-input v-model="form.number" placeholder="设备编号" />
</el-form-item>
</el-col>
<el-col :md="12" :sm="24">
<el-form-item label="型号规格">
<el-input v-model="form.model" placeholder="规格型号规格" />
</el-form-item>
</el-col>
<el-col :md="12" :sm="24">
<el-form-item label="生产厂">
<el-input v-model="form.factory" placeholder="生产厂" />
</el-form-item>
</el-col>
<el-col :md="12" :sm="24">
<el-form-item label="状态">
<el-select style="width: 100%" v-model="form.state" placeholder="请选择">
<el-option v-for="item in options" :key="item.value" :label="item.label" :value="item.value">
</el-option>
</el-select>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :md="12" :sm="24">
<el-form-item label="生产日期">
<el-date-picker v-model="form.production_date" type="date" placeholder="选择日期" value-format="YYYY-MM-DD"
style="width:100%">
</el-date-picker>
</el-form-item>
</el-col>
<el-col :md="12" :sm="24">
<el-form-item label="购置日期">
<el-date-picker v-model="form.buy_date" type="date" placeholder="选择日期" value-format="YYYY-MM-DD"
style="width:100%">
</el-date-picker>
</el-form-item>
</el-col>
<el-col :md="12" :sm="24" v-if="baseInfo.name == 'enm'">
<el-form-item label="用电功率">
<el-input-number v-model="form.power_kw" :precision="2" :min="0" controls-position="right"
placeholder="用电功率" />
</el-form-item>
</el-col>
<el-col :md="12" :sm="24">
<el-form-item label="责任人" prop="leader_name">
<span style="display:flex">
<el-input readonly v-model="form.keeper_name"></el-input>
<ehsUserSelect :multiple="false" @submit="getReceptionist" />
</span>
</el-form-item>
</el-col>
<el-col :md="12" :sm="24">
<el-form-item label="存放位置">
<el-input v-model="form.place" placeholder="存放位置"/>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :md="12" :sm="24">
<el-form-item label="技术参数">
<el-input
type="textarea"
:rows="4"
v-model="form.parameter"
placeholder="技术参数"
/>
</el-form-item>
</el-col>
<el-col :md="12" :sm="24">
<el-form-item label="描述">
<el-input
type="textarea"
:rows="4"
v-model="form.description"
placeholder="描述"
/>
</el-form-item>
</el-col>
</el-row>
</el-form-item>
</el-col>
<el-col :md="12" :sm="24">
<el-form-item label="存放位置">
<el-input v-model="form.place" placeholder="存放位置" />
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :md="12" :sm="24">
<el-form-item label="技术参数">
<el-input type="textarea" :rows="4" v-model="form.parameter" placeholder="技术参数" />
</el-form-item>
</el-col>
<el-col :md="12" :sm="24">
<el-form-item label="备注">
<el-input type="textarea" :rows="4" v-model="form.description" placeholder="备注" />
</el-form-item>
</el-col>
</el-row>
</el-form>
<el-form
ref="dialogForm"
:model="form"
:rules="rules"
:disabled="mode == 'show'"
label-width="120px"
v-if="form.type==20"
>
<el-row>
<el-col :md="12" :sm="24">
<el-form-item label="所属部门" prop="belong_dept">
<el-select
v-model="form.belong_dept"
placeholder="所属部门"
clearable
style="width: 100%"
>
<el-option
v-for="item in group"
:key="item.id"
:label="item.name"
:value="item.id"
></el-option>
</el-select>
</el-form-item>
</el-col>
<el-col :md="12" :sm="24">
<el-form-item label="计量编号" prop="number">
<el-input v-model="form.number" placeholder="设备编号"/>
</el-form-item>
</el-col>
<el-col :md="12" :sm="24">
<el-form-item label="设备名称" prop="name">
<el-input v-model="form.name" placeholder="设备名称"/>
</el-form-item>
</el-col>
<el-col :md="12" :sm="24">
<el-form-item label="规格型号">
<el-input v-model="form.model" placeholder="规格型号"/>
</el-form-item>
</el-col>
<el-col :md="12" :sm="24">
<el-form-item label="仪表类型">
<el-input v-model="form.meter_type" placeholder="仪表类型"/>
</el-form-item>
</el-col>
<el-col :md="12" :sm="24">
<el-form-item label="量范">
<el-input v-model="form.measurement_range" placeholder="量范"/>
</el-form-item>
</el-col>
<el-col :md="12" :sm="24">
<el-form-item label="启用日期">
<el-date-picker
v-model="form.use_date"
type="date"
placeholder="启用日期"
value-format="YYYY-MM-DD"
style="width:100%"
>
</el-date-picker>
</el-form-item>
</el-col>
<el-col :md="12" :sm="24">
<el-form-item label="出厂编号">
<el-input placeholder="出厂编号"/>
</el-form-item>
</el-col>
<el-col :md="12" :sm="24">
<el-form-item label="测量介质">
<el-input placeholder="测量介质"/>
</el-form-item>
</el-col>
<el-col :md="12" :sm="24">
<el-form-item label="管理等级">
<el-input v-model="form.management_level" placeholder="管理等级"/>
</el-form-item>
</el-col>
<el-col :md="12" :sm="24">
<el-form-item label="精度等级">
<el-input v-model="form.accuracy_level" placeholder="精度等级"/>
</el-form-item>
</el-col>
<el-col :md="12" :sm="24">
<el-form-item label="生产厂家">
<el-input v-model="form.factory" placeholder="生产厂家"/>
</el-form-item>
</el-col>
<el-col :md="12" :sm="24">
<el-form-item label="安装位置">
<el-input v-model="form.place" placeholder="安装位置"/>
</el-form-item>
</el-col>
<el-col :md="12" :sm="24">
<el-form-item label="检定周期(月)">
<el-input-number v-model="form.cycle"
:precision="1" :min="0" controls-position="right"
style="width: 100%;"
placeholder="检定周期(月)"/>
</el-form-item>
</el-col>
</el-row>
<el-form-item label="备注">
<el-input
type="textarea"
:rows="4"
v-model="form.description"
placeholder="备注"
/>
</el-form-item>
<el-form ref="dialogForm" :model="form" :rules="rules" :disabled="mode == 'show'" label-width="120px"
v-if="form.type == 20">
<el-row>
<el-col :md="12" :sm="24">
<el-form-item label="所属部门" prop="belong_dept">
<el-select v-model="form.belong_dept" placeholder="所属部门" clearable style="width: 100%">
<el-option v-for="item in group" :key="item.id" :label="item.name" :value="item.id"></el-option>
</el-select>
</el-form-item>
</el-col>
<el-col :md="12" :sm="24">
<el-form-item label="计量编号" prop="number">
<el-input v-model="form.number" placeholder="设备编号" />
</el-form-item>
</el-col>
<el-col :md="12" :sm="24">
<el-form-item label="设备名称" prop="name">
<el-input v-model="form.name" placeholder="设备名称" />
</el-form-item>
</el-col>
<el-col :md="12" :sm="24">
<el-form-item label="规格型号">
<el-input v-model="form.model" placeholder="规格型号" />
</el-form-item>
</el-col>
<el-col :md="12" :sm="24">
<el-form-item label="仪表类型">
<el-input v-model="form.meter_type" placeholder="仪表类型" />
</el-form-item>
</el-col>
<el-col :md="12" :sm="24">
<el-form-item label="量范">
<el-input v-model="form.measurement_range" placeholder="量范" />
</el-form-item>
</el-col>
<el-col :md="12" :sm="24">
<el-form-item label="启用日期">
<el-date-picker v-model="form.use_date" type="date" placeholder="启用日期" value-format="YYYY-MM-DD"
style="width:100%">
</el-date-picker>
</el-form-item>
</el-col>
<el-col :md="12" :sm="24">
<el-form-item label="出厂编号">
<el-input placeholder="出厂编号" />
</el-form-item>
</el-col>
<el-col :md="12" :sm="24">
<el-form-item label="测量介质">
<el-input placeholder="测量介质" />
</el-form-item>
</el-col>
<el-col :md="12" :sm="24">
<el-form-item label="管理等级">
<el-input v-model="form.management_level" placeholder="管理等级" />
</el-form-item>
</el-col>
<el-col :md="12" :sm="24">
<el-form-item label="精度等级">
<el-input v-model="form.accuracy_level" placeholder="精度等级" />
</el-form-item>
</el-col>
<el-col :md="12" :sm="24">
<el-form-item label="生产厂家">
<el-input v-model="form.factory" placeholder="生产厂家" />
</el-form-item>
</el-col>
<el-col :md="12" :sm="24">
<el-form-item label="安装位置">
<el-input v-model="form.place" placeholder="安装位置" />
</el-form-item>
</el-col>
<el-col :md="12" :sm="24">
<el-form-item label="检定周期(月)">
<el-input-number v-model="form.cycle" :precision="1" :min="0" controls-position="right"
style="width: 100%;" placeholder="检定周期(月)" />
</el-form-item>
</el-col>
</el-row>
<el-form-item label="备注">
<el-input type="textarea" :rows="4" v-model="form.description" placeholder="备注" />
</el-form-item>
</el-form>
</el-main>
<el-footer>
@ -286,28 +203,28 @@ export default {
show: "查看",
},
form: {
type:10,
type: 10,
},
rules: {
name: [{required: true, message: "请输入", trigger: "blur"}],
number: [{required: true, message: "请输入", trigger: "blur"}],
keeper_name: [{required: true, message: "请输入", trigger: "blur"}],
belong_dept: [{required: true, message: "请选择所属部门", trigger: "blur"}]
},
name: [{ required: true, message: "请输入", trigger: "blur" }],
number: [{ required: true, message: "请输入", trigger: "blur" }],
keeper_name: [{ required: true, message: "请输入", trigger: "blur" }],
belong_dept: [{ required: true, message: "请选择所属部门", trigger: "blur" }]
},
options: [{
value: 10,
label: '完好'
}, {
value: 20,
label: '限用'
}, {
value: 30,
label: '在修'
}, {
value: 40,
label: '禁用'
}],
value: 10,
label: '完好'
}, {
value: 20,
label: '限用'
}, {
value: 30,
label: '在修'
}, {
value: 40,
label: '禁用'
}],
visible: false,
isSaveing: false,
keeperOptions: [],
@ -316,33 +233,39 @@ export default {
setFiltersVisible: false,
belong_dept_options: [],
group: [],
mgroups:[],
mgroups: [],
baseInfo: {}
};
},
mounted() {
this.getGroup();
this.getBaseInfo();
},
methods: {
getBaseInfo() {
this.baseInfo = this.$TOOL.data.get('BASE_INFO').base
console.log(this.baseInfo)
},
//
getGroup() {
this.$API.system.dept.list.req({type:'dept'}).then(res=>{
this.$API.system.dept.list.req({ type: 'dept' }).then(res => {
this.group = res.results;
});
},
getReceptionist(data) {
this.form.keeper=data.id;
this.form.keeper_name=data.name
},
deptChange(){
this.$API.mtm.mgroup.list.req({ page:0,belong_dept:this.form.belong_dept}).then(res=>{
getReceptionist(data) {
this.form.keeper = data.id;
this.form.keeper_name = data.name
},
deptChange() {
this.$API.mtm.mgroup.list.req({ page: 0, belong_dept: this.form.belong_dept }).then(res => {
this.mgroups = res;
});
},
//
open(mode = "add",type) {
open(mode = "add", type) {
this.mode = mode;
this.visible = true;
this.form.type=type;
this.form.type = type;
return this;
},
//
@ -376,6 +299,7 @@ export default {
//
setData(data) {
Object.assign(this.form, data);
this.deptChange()
},
//
setFilters(filters) {
@ -386,5 +310,4 @@ export default {
};
</script>
<style>
</style>
<style></style>

View File

@ -2,31 +2,16 @@
<el-container>
<el-header>
<div class="left-panel">
<el-button type="primary" icon="el-icon-plus" @click="add">新增</el-button>
<el-button type="primary" icon="el-icon-plus" @click="add" v-auth="'equipment.create'">新增</el-button>
</div>
<div class="right-panel">
<el-input
v-model="query.search"
placeholder="名称"
clearable
style="margin-right: 5px;"
></el-input>
<el-button
type="primary"
icon="el-icon-search"
@click="handleQuery"
></el-button>
<el-input v-model="query.search" placeholder="名称" clearable style="margin-right: 5px;"></el-input>
<el-button type="primary" icon="el-icon-search" @click="handleQuery"></el-button>
</div>
</el-header>
<el-main class="nopadding">
<scTable
ref="table"
:apiObj="apiObj"
row-key="id"
stripe
:params="query"
>
<el-table-column type="index" width="50"/>
<scTable ref="table" :apiObj="apiObj" row-key="id" stripe :params="query">
<el-table-column type="index" width="50" />
<el-table-column label="设备名称" prop="name" show-overflow-tooltip>
</el-table-column>
<el-table-column label="计量编号" prop="number">
@ -45,17 +30,17 @@
</el-table-column>
<el-table-column label="生产厂家" prop="factory" show-overflow-tooltip>
</el-table-column>
<el-table-column label="检定周期(月)" prop="cycle">
<el-table-column label="检定周期/月" prop="cycle" width="100">
</el-table-column>
<el-table-column label="检定日期" prop="check_date">
<el-table-column label="检定日期" prop="check_date" width="100">
<template #default="scope">
<el-tag v-if="scope.row.state===10" type="success">
<el-tag v-if="scope.row.state === 10" type="success">
{{ state_[scope.row.state] }}
</el-tag>
<el-tag v-else-if="scope.row.state===20" type="warning">
<el-tag v-else-if="scope.row.state === 20" type="warning">
{{ state_[scope.row.state] }}
</el-tag>
<el-tag v-else-if="scope.row.state===30">
<el-tag v-else-if="scope.row.state === 30">
{{ state_[scope.row.state] }}
</el-tag>
<el-tag v-else type="danger">
@ -63,63 +48,39 @@
</el-tag>
</template>
</el-table-column>
<el-table-column label="检定结果" prop="check_date">
<el-table-column label="下次检定日期" prop="next_check_date" width="100">
</el-table-column>
<el-table-column label="下次检定日期" prop="next_check_date">
</el-table-column>
<el-table-column label="精度等级" prop="factory" show-overflow-tooltip>
<el-table-column label="精度等级" prop="accuracy_level" show-overflow-tooltip>
</el-table-column>
<el-table-column label="安装位置" prop="place" show-overflow-tooltip>
</el-table-column>
<el-table-column label="备注" show-overflow-tooltip>
<el-table-column label="备注" show-overflow-tooltip>
<template #default="scope">{{ scope.row.description }}</template>
</el-table-column>
<el-table-column label="操作" fixed="right" align="center" width="170px">
<template #default="scope">
<el-link
type="primary"
v-if="scope.row.cycle!==null"
@click="table_record (scope.row)"
v-auth="'equipment'"
>
检定记录
<el-link type="primary" v-if="scope.row.cycle !== null" @click="table_record(scope.row)"
v-auth="'einspect.create'">
检定记录
</el-link>
<el-divider direction="vertical"></el-divider>
<el-link
type="primary"
@click="table_edit(scope.row)"
v-auth="'equipment'"
>
<el-link type="primary" @click="table_edit(scope.row)" v-auth="'equipment.update'">
编辑
</el-link>
<el-divider direction="vertical"></el-divider>
<el-link
type="danger"
@click="table_del(scope.row)"
v-auth="'equipment'"
>
<el-link type="danger" @click="table_del(scope.row)" v-auth="'equipment.delete'">
删除
</el-link>
</template>
</el-table-column>
</scTable>
<el-dialog title="计量器具检验" v-model="visible">
<el-form
ref="dialogForm"
:rules="rules"
label-width="100px"
:model="form"
>
<el-form ref="dialogForm" :rules="rules" label-width="100px" :model="form">
<el-row>
<el-col :md="12" :sm="24" prop="check_date">
<el-form-item label="检定时间">
<el-date-picker
v-model="form.check_date"
type="date"
placeholder="检定时间"
value-format="YYYY-MM-DD"
style="width:100%"
>
<el-date-picker v-model="form.check_date" type="date" placeholder="检定时间" value-format="YYYY-MM-DD"
style="width:100%">
</el-date-picker>
</el-form-item>
</el-col>
@ -131,18 +92,14 @@
<el-col :md="12" :sm="24">
<el-form-item label="检定结果" prop="result">
<el-select style="width: 100%" v-model="form.result" placeholder="检定结果">
<el-option
v-for="item in options"
:key="item.id"
:label="item.name"
:value="item.id">
<el-option v-for="item in options" :key="item.id" :label="item.name" :value="item.id">
</el-option>
</el-select>
</el-form-item>
</el-col>
<el-col :md="12" :sm="24">
<el-form-item label="备注">
<el-input v-model="form.note" placeholder="备注"/>
<el-input v-model="form.note" placeholder="备注" />
</el-form-item>
</el-col>
</el-row>
@ -152,62 +109,41 @@
<el-button @click="visible = false">取消</el-button>
</el-footer>
</el-dialog>
<el-drawer
title="检定记录"
v-model="visibleRecord"
:size="1000"
destroy-on-close
@closed="visibleRecord=false"
>
<el-drawer title="检定记录" v-model="visibleRecord" :size="1000" destroy-on-close @closed="visibleRecord = false">
<el-container v-loading="loading">
<el-button type="primary" icon="el-icon-plus" @click="record_create" v-auth="'equipment'" style="position: absolute;z-index: 10;left: 110px;top: 16px;"></el-button>
<el-button type="primary" icon="el-icon-plus" @click="record_create" v-auth="'equipment'"
style="position: absolute;z-index: 10;left: 110px;top: 16px;"></el-button>
<el-main style="padding: 0 20px 20px 20px">
<scTable
ref="drawer_table"
:apiObj="apiObj2"
row-key="id"
stripe
:params="query2"
>
<el-table-column type="index" width="50"/>
<el-table-column label="设备名称" prop="name" show-overflow-tooltip>
<scTable ref="drawer_table" :apiObj="apiObj2" row-key="id" stripe :params="query2">
<el-table-column type="index" width="50" />
<el-table-column label="设备名称" prop="equipment_name" show-overflow-tooltip>
</el-table-column>
<el-table-column label="检定日期" prop="check_date">
</el-table-column>
<el-table-column label="检定结果" prop="result">
<template #default="scope">
<span>{{state_[scope.row.result]}}</span>
<span>{{ state_[scope.row.result] }}</span>
</template>
</el-table-column>
<el-table-column label="检定周期(月)" prop="factory" show-overflow-tooltip>
</el-table-column>
<el-table-column label="检定单位" prop="check_organization">
</el-table-column>
<el-table-column label="操作" fixed="right" align="center" width="160px">
<template #default="scope">
<el-link
type="danger"
@click="record_del(scope.row)"
v-auth="'equipment.delete'"
>
删除
</el-link>
</template>
</el-table-column>
<template #default="scope">
<el-link type="danger" @click="record_del(scope.row)" v-auth="'equipment.delete'">
删除
</el-link>
</template>
</el-table-column>
</scTable>
</el-main>
</el-container>
</el-drawer>
</el-main>
</el-container>
<save-dialog
v-if="dialog.save"
ref="saveDialog"
@success="handleSaveSuccess"
@closed="dialog.save = false"
></save-dialog>
<save-dialog v-if="dialog.save" ref="saveDialog" @success="handleSaveSuccess"
@closed="dialog.save = false"></save-dialog>
</template>
<script>
<script>
import saveDialog from "./equipment_form.vue";
export default {
name: "rparty",
@ -222,44 +158,44 @@ export default {
},
apiObj: this.$API.em.equipment.list,
query: {
page:1,
page_size:20,
type:20,
page: 1,
page_size: 20,
type: 20,
},
apiObj2: this.$API.em.echeckrecord.list,
query2: {
page:1,
page_size:20,
equipment:''
page: 1,
page_size: 20,
equipment: ''
},
visible:false,
isSaveing:false,
visibleRecord:false,
visible: false,
isSaveing: false,
visibleRecord: false,
selection: [],
state_: {
10: '完好',
20: '限用',
30: '在修',
40: '禁用',
},
options:[
{id:10,name: '正常'},
{id:20,name: '异常'}
],
form:{},
rules: {
check_date: [{ required: true, message: "请选择检验时间" }],
check_organization: [{ required: true, message: "请填写检定机构" }],
},
item:{},
10: '完好',
20: '限用',
30: '在修',
40: '禁用',
},
options: [
{ id: 10, name: '正常' },
{ id: 20, name: '异常' }
],
form: {},
rules: {
check_date: [{ required: true, message: "请选择检验时间" }],
check_organization: [{ required: true, message: "请填写检定机构" }],
},
item: {},
};
},
methods: {
table_record(row){
table_record(row) {
this.item = row;
this.form.equipment = row.id;
this.query2.equipment = row.id;
this.$nextTick(()=>{
this.$nextTick(() => {
this.visibleRecord = true;
})
},
@ -267,21 +203,21 @@ export default {
add() {
this.dialog.save = true;
this.$nextTick(() => {
this.$refs.saveDialog.open("add",20);
this.$refs.saveDialog.open("add", 20);
});
},
//
table_edit(row) {
this.dialog.save = true;
this.$nextTick(() => {
this.$refs.saveDialog.open("edit",20).setData(row);
this.$refs.saveDialog.open("edit", 20).setData(row);
});
},
//
table_show(row) {
this.dialog.save = true;
this.$nextTick(() => {
this.$refs.saveDialog.open("show",20).setData(row);
this.$refs.saveDialog.open("show", 20).setData(row);
});
},
//
@ -297,20 +233,21 @@ export default {
});
},
//
record_create(){
record_create() {
this.visible = true;
},
//
submit() {
//
submit() {
this.$refs.dialogForm.validate(async (valid) => {
if (valid) {
this.isSaveing = true;
this.$API.em.echeckrecord.create.req(this.form).then(res=>{
this.$API.em.echeckrecord.create.req(this.form).then(res => {
this.visible = false;
this.isSaveing = false;
this.$message.success("操作成功");
this.$refs.drawer_table.refresh();
}).catch(()=>{
this.$refs.table.refresh();
}).catch(() => {
this.isSaveing = false;
})
}
@ -319,11 +256,12 @@ export default {
//
record_del(row) {
this.$API.em.echeckrecord.delete.req(row.id).then((res) => {
this.$message.success("删除成功");
this.$refs.drawer_table.refresh();
}).catch((err) => {
return err;
});
this.$message.success("删除成功");
this.$refs.drawer_table.refresh();
this.$refs.table.refresh();
}).catch((err) => {
return err;
});
},
//
handleSaveSuccess(data, mode) {
@ -334,8 +272,8 @@ export default {
}
},
handleQuery() {
this.$refs.table.queryData(this.query)
},
this.$refs.table.queryData(this.query)
},
resetQuery() {
this.query = {};
},

View File

@ -21,6 +21,10 @@
</el-table-column>
<el-table-column label="物料名称" prop="name">
</el-table-column>
<el-table-column label="规格" prop="specification">
</el-table-column>
<el-table-column label="型号" prop="model">
</el-table-column>
<el-table-column label="物料类别" prop="type">
<template #default="scope">
<span><el-tag>{{ typeOptions[scope.row.type] }}</el-tag>
@ -29,12 +33,11 @@
<el-tag type="warning" v-if="scope.row.is_hidden"></el-tag></span>
</template>
</el-table-column>
<el-table-column label="规格型号" prop="specification">
</el-table-column>
<el-table-column label="关联物料" prop="brothers">
<template #default="scope">
<el-icon v-if="scope.row.brothers.length>0" color="green">
<CircleCheckFilled />
<el-icon v-if="scope.row.brothers.length > 0" color="green">
<CircleCheckFilled />
</el-icon>
</template>
</el-table-column>

View File

@ -15,13 +15,18 @@
</el-form-item>
</el-col>
<el-col :md="12" :sm="24" prop="cate">
<el-form-item label="物料cate">
<el-input v-model="form.cate" placeholder="物料名称" />
<el-form-item label="物料系列">
<el-input v-model="form.cate" placeholder="物料系列" />
</el-form-item>
</el-col>
<el-col :md="12" :sm="24">
<el-form-item label="规格型号">
<el-input v-model="form.specification" placeholder="规格型号" />
<el-form-item label="规格">
<el-input v-model="form.specification" placeholder="规格" />
</el-form-item>
</el-col>
<el-col :md="12" :sm="24">
<el-form-item label="型号">
<el-input v-model="form.model" placeholder="型号" />
</el-form-item>
</el-col>
<el-col :md="12" :sm="24">
@ -33,19 +38,8 @@
</el-col>
<el-col :md="12" :sm="24">
<el-form-item label="关联物料" prop="type">
<el-select
v-model="brothers"
placeholder="关联物料"
clearable
multiple
style="width:100%"
>
<el-option
v-for="item in materialOptions"
:key="item.id"
:label="item.name"
:value="item.id"
/>
<el-select v-model="brothers" placeholder="关联物料" clearable multiple style="width:100%">
<el-option v-for="item in materialOptions" :key="item.id" :label="item.name" :value="item.id" />
</el-select>
</el-form-item>
</el-col>
@ -93,7 +87,7 @@ export default {
edit: "编辑物料",
show: "查看物料",
},
brothers:[],
brothers: [],
form: {},
rules: {
name: [{ required: true, message: "请输入物料名称", trigger: "blur" }],
@ -111,9 +105,9 @@ export default {
{ id: 60, name: '辅助工装' },
{ id: 70, name: '办公用品' },
],
handle_user:[],
handle_user: [],
selectionFilters: [],
materialOptions:[],
materialOptions: [],
setFiltersVisible: false,
};
},
@ -127,17 +121,17 @@ export default {
this.visible = true;
return this;
},
getMaterial(val){
getMaterial(val) {
let that = this;
let query = {};
query.type = val;
query.page = 0;
query.is_hidden = false;
this.$API.mtm.material.list.req(query).then(res=>{
this.$API.mtm.material.list.req(query).then(res => {
that.materialOptions = res;
})
},
typeChange(val){
typeChange(val) {
this.getMaterial(val);
},
//
@ -147,22 +141,22 @@ export default {
this.isSaveing = true;
this.form.brothers = this.brothers;
if (this.mode == "add") {
this.$API.mtm.material.create.req(this.form).then(res=>{
this.$API.mtm.material.create.req(this.form).then(res => {
this.isSaveing = false;
this.$emit("success", this.form, this.mode);
this.visible = false;
this.$message.success("操作成功");
}).catch(()=>{
}).catch(() => {
this.isSaveing = false;
this.visible = false;
})
} else if (this.mode == "edit") {
this.$API.mtm.material.update.req(this.form.id, this.form).then(res=>{
this.$API.mtm.material.update.req(this.form.id, this.form).then(res => {
this.isSaveing = false;
this.$emit("success", this.form, this.mode);
this.visible = false;
this.$message.success("操作成功");
}).catch(()=>{
}).catch(() => {
this.isSaveing = false;
})
}

View File

@ -20,12 +20,12 @@
</el-table-column>
<el-table-column label="所属部门" prop="belong_dept_name" min-width="150"></el-table-column>
<el-table-column label="班次规则" prop="shift_rule" min-width="80"></el-table-column>
<el-table-column label="能源监测" prop="need_enm" min-width="80">
<!-- <el-table-column label="能源监测" prop="need_enm" min-width="80">
<template #default="scope">
<span v-if="scope.row.need_enm"></span>
<span v-else></span>
</template>
</el-table-column>
</el-table-column> -->
<el-table-column label="排序" prop="sort" min-width="80"></el-table-column>
<el-table-column label="创建时间" prop="create_time" min-width="150"></el-table-column>
<el-table-column label="操作" fixed="right" align="center" width="180">

View File

@ -12,9 +12,9 @@
<el-option v-for="item in options" :key="item.id" :label="item.name" :value="item.id"></el-option>
</el-select>
</el-form-item>
<el-form-item label="能源监测" prop="need_enm">
<!-- <el-form-item label="能源监测" prop="need_enm">
<el-switch v-model="form.need_enm"></el-switch>
</el-form-item>
</el-form-item> -->
<el-form-item label="所属部门">
<el-select v-model="form.belong_dept" placeholder="所属部门" clearable style="width: 100%;">
<el-option v-for="item in group" :key="item.id" :label="item.name" :value="item.id"></el-option>
@ -32,24 +32,30 @@
<sc-form-table ref="table" v-model="materialList" :addTemplate="addTemplate" placeholder="暂无数据">
<el-table-column prop="type" label="输入物料" min-width="120" align="center">
<template #default="scope">
<el-select v-model="scope.row.material_in" style="width: 100%">
<span v-if="!scope.row.isedit">{{
scope.row.material_in_name
}}</span>
<el-select v-else v-model="scope.row.material_in" style="width: 100%">
<el-option v-for="item in materials" :key="item.id" :label="item.name" :value="item.id"></el-option>
</el-select>
</template>
</el-table-column>
<el-table-column prop="type" label="输出物料" min-width="120" align="center">
<template #default="scope">
<el-select v-model="scope.row.material_out" filterable style="width: 100%">
<el-option v-for="item in materials" :key="item" :label="item" :value="item"></el-option>
<span v-if="!scope.row.isedit">{{
scope.row.material_out_name
}}</span>
<el-select v-else v-model="scope.row.material_out" filterable style="width: 100%">
<el-option v-for="item in materials" :key="item.id" :label="item.name" :value="item.id"></el-option>
</el-select>
</template>
</el-table-column>
<el-table-column prop="type" label="操作" min-width="80" align="center">
<template #default="scope">
<el-button type="primary" v-if="scope.row.isedit"
<el-button type="primary" size="small" v-if="scope.row.isedit"
@click="submitForm(scope.row, scope.$index)">确定</el-button>
<el-button type="warning" v-else @click="editForm(scope.row, scope.$index)">编辑</el-button>
<el-button type="danger" @click="delForm(scope.row, scope.$index)">删除</el-button>
<el-button type="warning" size="small" v-else @click="editForm(scope.row, scope.$index)">编辑</el-button>
<el-button type="danger" size="small" @click="delForm(scope.row, scope.$index)">删除</el-button>
</template>
</el-table-column>
</sc-form-table>
@ -99,7 +105,7 @@ export default {
routes: [],
materials: [],
setFiltersVisible: false,
materialList: [{ material_in: '', material_out: '', mgroup: '', isedit: true }],
materialList: [],
addTemplate: { material_in: '', material_out: '', mgroup: '', isedit: true }
};
},
@ -142,16 +148,19 @@ export default {
let that = this;
that.$API.mtm.route.list.req({ mgroup: id, page: 0 }).then(res => {
that.routes = res;
if (res.length > 0) {
res.forEach(item => {
let obj = {};
obj.material_in = item.material_in;
obj.material_out = item.material_out;
obj.mgroup = id;
obj.isedit = false;
})
that.materialList.push(obj);
} else { }
let mList = []
res.forEach(item => {
let obj = {};
obj.id = item.id;
obj.material_in = item.material_in;
obj.material_out = item.material_out;
obj.material_in_name = item.material_in_name;
obj.material_out_name = item.material_out_name;
obj.mgroup = id;
obj.isedit = false;
mList.push(obj)
})
that.materialList = mList
});
},
//
@ -213,6 +222,7 @@ export default {
} else {
obj.mgroup = that.form.id;
this.$API.mtm.route.create.req(obj).then(res => {
that.materialList[index] = res
that.materialList[index].isedit = false;
})
}

View File

@ -1,10 +1,10 @@
<template>
<el-container style="flex-direction: column">
<el-main id="topContainer" class="nopadding" style="position: relative;margin-bottom: 10px;">
<el-main id="topContainer" class="nopadding" style="position: relative;margin-bottom: 10px;">
<div class="right-panel btnsContainer">
<el-button type="primary" icon="el-icon-plus" @click="add">新增任务</el-button>
<!-- <el-button type="primary" @click="utaskDepuse" v-loading="isloading">任务分解</el-button> -->
<el-button type="primary" @click="utaskDepuse" v-loading="isloading">任务下达</el-button>
<el-button type="primary" @click="utaskDepuse" v-loading="isloading">任务下达</el-button>
</div>
<el-tabs v-model="activeName" class="demo-tabs" @tab-click="handleClick">
<!-- <el-tab-pane label="混料工序" name="8车间">
@ -71,39 +71,42 @@
</scTable>
</el-tab-pane> -->
<el-tab-pane label="成型7车间" name="7车间">
<scTable
ref="table7"
:apiObj="apiUtask"
row-key="id"
stripe
:height="topHeight"
:params="paramsUtask7"
@row-click="rowclick"
@selection-change="handleSelectionChange"
>
<el-table-column type="selection" width="40" />
<scTable ref="table7" :apiObj="apiUtask" row-key="id" stripe :height="topHeight" :params="paramsUtask7"
@row-click="rowclick" @selection-change="handleSelectionChange">
<el-table-column type="selection" width="40" />
<el-table-column type="index" width="40" />
<el-table-column label="任务编号" prop="number">
</el-table-column>
<el-table-column label="产品名称" prop="material" show-overflow-tooltip>
<el-table-column label="产品名称" prop="material_" show-overflow-tooltip>
<template #default="scope">
{{ scope.row.material_.name }}
</template>
</el-table-column>
<el-table-column label="型号" prop="number">
<el-table-column label="规格" prop="material_">
<template #default="scope">
{{ scope.row.material_.specification }}
</template>
</el-table-column>
<el-table-column label="型号" prop="material_">
<template #default="scope">
{{ scope.row.material_.model }}
</template>
</el-table-column>
<el-table-column label="任务状态" prop="state">
<template #default="scope">
<el-tag v-if="scope.row.state!==40">
{{ state_[scope.row.state] }}
</el-tag>
<el-tag v-else type="success">
{{ state_[scope.row.state] }}
</el-tag>
</template>
<el-tag v-if="scope.row.state !== 40">
{{ state_[scope.row.state] }}
</el-tag>
<el-tag v-else type="success">
{{ state_[scope.row.state] }}
</el-tag>
</template>
</el-table-column>
<el-table-column label="任务量" prop="number">
</el-table-column>
<el-table-column label="计划量" prop="count">
</el-table-column>
<el-table-column label="日均产量" prop="count">
<el-table-column label="日均产量" prop="count_day">
</el-table-column>
<el-table-column label="计划开工时间" prop="start_date">
</el-table-column>
@ -120,12 +123,13 @@
<el-link type="primary" @click="table_show(scope.row)">
查看
</el-link>
<el-divider direction="vertical" v-if="scope.row.state==10"></el-divider>
<el-link type="primary" @click="table_edit(scope.row)" v-if="scope.row.state==10">
<el-divider direction="vertical" v-if="scope.row.state == 10"></el-divider>
<el-link type="primary" @click="table_edit(scope.row)" v-if="scope.row.state == 10">
编辑
</el-link>
<el-divider direction="vertical" v-if="scope.row.state==10||scope.row.state==14"></el-divider>
<el-link type="danger" @click="table_del(scope.row)" v-if="scope.row.state==10||scope.row.state==14">
<el-divider direction="vertical" v-if="scope.row.state == 10 || scope.row.state == 14"></el-divider>
<el-link type="danger" @click="table_del(scope.row)"
v-if="scope.row.state == 10 || scope.row.state == 14">
删除
</el-link>
</template>
@ -133,33 +137,28 @@
</scTable>
</el-tab-pane>
<el-tab-pane label="成型10车间" name="10车间">
<scTable
ref="table10"
:apiObj="apiUtask"
row-key="id"
stripe
:height="topHeight"
:params="paramsUtask10"
@row-click="rowclick"
@selection-change="handleSelectionChange"
>
<scTable ref="table10" :apiObj="apiUtask" row-key="id" stripe :height="topHeight" :params="paramsUtask10"
@row-click="rowclick" @selection-change="handleSelectionChange">
<el-table-column type="selection" width="40" />
<el-table-column type="index" width="40" />
<el-table-column label="任务编号" prop="number">
</el-table-column>
<el-table-column label="产品名称" prop="material" show-overflow-tooltip>
<el-table-column label="产品名称" prop="material" show-overflow-tooltip>
<template #default="scope">
{{ scope.row.material_.name }}
</template>
</el-table-column>
<el-table-column label="型号" prop="number">
</el-table-column>
<el-table-column label="任务状态" prop="state">
<template #default="scope">
<el-tag v-if="scope.row.state!==40">
{{ state_[scope.row.state] }}
</el-tag>
<el-tag v-else type="success">
{{ state_[scope.row.state] }}
</el-tag>
</template>
<el-tag v-if="scope.row.state !== 40">
{{ state_[scope.row.state] }}
</el-tag>
<el-tag v-else type="success">
{{ state_[scope.row.state] }}
</el-tag>
</template>
</el-table-column>
<el-table-column label="任务量" prop="number">
</el-table-column>
@ -182,14 +181,16 @@
<el-link type="primary" @click="table_show(scope.row)">
查看
</el-link>
<el-divider direction="vertical" v-if="scope.row.state==10"></el-divider>
<el-link type="primary" @click="table_edit(scope.row)" v-if="scope.row.state==10">
<el-divider direction="vertical" v-if="scope.row.state == 10"></el-divider>
<el-link type="primary" @click="table_edit(scope.row)" v-if="scope.row.state == 10">
编辑
</el-link>
<el-divider direction="vertical" v-if="scope.row.state==30||scope.row.state==20"></el-divider>
<el-link type="danger" @click="table_end(scope.row)" v-if="scope.row.state==30||scope.row.state==20">终止</el-link>
<el-divider direction="vertical" v-if="scope.row.state==10||scope.row.state==14"></el-divider>
<el-link type="danger" @click="table_del(scope.row)" v-if="scope.row.state==10||scope.row.state==14">
<el-divider direction="vertical" v-if="scope.row.state == 30 || scope.row.state == 20"></el-divider>
<el-link type="danger" @click="table_end(scope.row)"
v-if="scope.row.state == 30 || scope.row.state == 20">终止</el-link>
<el-divider direction="vertical" v-if="scope.row.state == 10 || scope.row.state == 14"></el-divider>
<el-link type="danger" @click="table_del(scope.row)"
v-if="scope.row.state == 10 || scope.row.state == 14">
删除
</el-link>
</template>
@ -204,91 +205,59 @@
<span style="font-size:14px ;">生产进度</span>
</div>
<div class="right-panel">
<el-date-picker
v-model="query.date"
type="daterange"
range-separator="至"
start-placeholder="开始时间"
end-placeholder="结束时间"
value-format="YYYY-MM-DD"
/>
<el-button
type="primary"
icon="el-icon-search"
@click="handleQuery"
>查询</el-button>
<el-date-picker v-model="query.date" type="daterange" range-separator="" start-placeholder="开始时间"
end-placeholder="结束时间" value-format="YYYY-MM-DD" />
<el-button type="primary" icon="el-icon-search" @click="handleQuery">查询</el-button>
</div>
</el-header>
<scTable
ref="table2"
:data="dataList"
row-key="id"
stripe
:height="bottomHeight"
:hideDo="hideDo"
:params="query"
>
<el-table-column type="index" width="50"/>
<scTable ref="table2" :data="dataList" row-key="id" stripe :height="bottomHeight" :hideDo="hideDo" :params="query">
<el-table-column type="index" width="50" />
<el-table-column label="任务编号" prop="number" width="100" fixed="left">
</el-table-column>
<el-table-column label="产品名称" prop="name" width="100" show-overflow-tooltip fixed="left">
<el-table-column label="产品名称" prop="material" width="100" show-overflow-tooltip fixed="left">
<template #default="scope">
{{ scope.row.material_.name }}
</template>
</el-table-column>
<el-table-column label="型号" prop="xh" width="100" fixed="left">
<el-table-column label="规格" prop="specification" width="100" fixed="left">
<template #default="scope">
{{ scope.row.material_.specification }}
</template>
</el-table-column>
<el-table-column label="型号" prop="model" width="100" fixed="left">
<template #default="scope">
{{ scope.row.material_.model }}
</template>
</el-table-column>
<el-table-column label="计划量" prop="count" width="100" fixed="left">
</el-table-column>
<el-table-column label="日均产量" prop="count1" width="100" fixed="left">
<el-table-column label="日均产量" prop="count_day" width="100" fixed="left">
</el-table-column>
<el-table-column label="计划开工时间" prop="start_date" width="100" fixed="left">
</el-table-column>
<el-table-column label="计划完工时间" prop="end_date" width="100" fixed="left">
</el-table-column>
<el-table-column v-for="item in columList" :label="item.data" :key="item">
<el-table-column v-for="item in columList" :label="item.data" :key="item" width="100">
<div :class="bindClass(item)">
<div v-if="activeName=='10车间'">{{ item.count1 }}</div>
<div>{{ item.count2 }}</div>
<div>{{ item.count3 }}</div>
</div>
<div v-if="activeName == '10车间'">{{ item.count1 }}</div>
<div>{{ item.count2 }}</div>
<div>{{ item.count3 }}</div>
</div>
</el-table-column>
</scTable>
</el-main>
</el-container>
<save-dialog
v-if="dialog.save"
ref="saveDialog"
:activeName="activeName"
@success="handleSaveSuccess"
@closed="dialog.save = false"
></save-dialog>
<el-drawer
title="任务详情"
v-model="visibleRecord"
:size="800"
destroy-on-close
@closed="visibleRecord=false"
>
<save-dialog v-if="dialog.save" ref="saveDialog" :activeName="activeName" @success="handleSaveSuccess"
@closed="dialog.save = false"></save-dialog>
<el-drawer title="任务详情" v-model="visibleRecord" :size="800" destroy-on-close @closed="visibleRecord = false">
<div class="right-panel tabsHeader">
<el-date-picker
v-model="paramsObj.start_date"
type="date"
value-format="YYYY-MM-DD"
/>
<el-button
type="primary"
icon="el-icon-search"
@click="handleDetailQuery"
>查询</el-button>
<el-date-picker v-model="paramsObj.start_date" type="date" value-format="YYYY-MM-DD" />
<el-button type="primary" icon="el-icon-search" @click="handleDetailQuery">查询</el-button>
</div>
<el-container v-loading="isloading">
<el-main style="padding: 0 20px 20px 20px">
<scTable
ref="drawer_table"
:apiObj="apiObj"
row-key="id"
stripe
:params="paramsObj"
>
<el-table-column type="index" width="50"/>
<scTable ref="drawer_table" :apiObj="apiObj" row-key="id" stripe :params="paramsObj">
<el-table-column type="index" width="50" />
<el-table-column label="工段" prop="mgroup_name" show-overflow-tooltip>
</el-table-column>
<el-table-column label="任务编号" prop="number">
@ -299,7 +268,7 @@
</el-table-column>
<el-table-column label="状态" prop="state" show-overflow-tooltip>
<template #default="scope">
<el-tag v-if="scope.row.state!==40">
<el-tag v-if="scope.row.state !== 40">
{{ state_[scope.row.state] }}
</el-tag>
<el-tag v-else type="success">
@ -317,7 +286,7 @@ import saveDialog from "./mtask_form.vue";
export default {
name: "rparty",
components: {
saveDialog,
saveDialog,
},
data() {
return {
@ -325,30 +294,30 @@ export default {
save: false,
},
apiUtask: this.$API.pm.utask.list,
paramsUtask7: { belong_dept__name: '7车间' },
paramsUtask7: { belong_dept__name: '7车间' },
paramsUtask8: { belong_dept__name: '8车间' },
paramsUtask10: { belong_dept__name: '10车间' },
apiObj: null,
paramsObj:{utask:''},
paramsObj: { utask: '' },
query: {
page:1,
page_size:20,
date:''
page: 1,
page_size: 20,
date: ''
},
utaskId:'',
isloading:false,
visibleRecord:false,
tableHeight:null,
hideDo:true,
activeName:'7车间',
dataList:[
utaskId: '',
isloading: false,
visibleRecord: false,
tableHeight: null,
hideDo: true,
activeName: '7车间',
dataList: [
// {number:'rwbh2023',name:'',xh:'',count:100,count1:100,start_date:'2023-10-15',end_date:'2023-10-15', count01:100, count02:200, count03:300 },
// {number:'rwbh2023',name:'',xh:'',count:100,count1:100,start_date:'2023-10-15',end_date:'2023-10-15', count01:100, count02:250, count03:300 },
],
// columList:['10.15','10.16','10.17'],
columList:[],
columList: [],
selection: [],
selectedIds:[],
selectedIds: [],
state_: {
10: '创建中',
14: '已分解',
@ -356,45 +325,49 @@ export default {
30: '生产中',
40: '已提交'
},
topHeight:null,
bottomHeight:null,
topHeight: null,
bottomHeight: null,
};
},
mounted(){
mounted() {
let date = new Date();
let year = date.getFullYear();
let month = date.getMonth()+1;
let month = date.getMonth() + 1;
let day = date.getDate();
let timeNow = date.getTime();
let timer = 1000*60*60*24*2;
let data2 = new Date(timeNow-timer);//2
let timer = 1000 * 60 * 60 * 24 * 2;
let data2 = new Date(timeNow - timer);//2
let year2 = data2.getFullYear();
let month2 = data2.getMonth()+1;
let month2 = data2.getMonth() + 1;
let day2 = data2.getDate();
let startDate = year2+'-'+month2+'-'+day2;
let endDate = year+'-'+month+'-'+day;
this.query.date = [startDate,endDate];
let startDate = year2 + '-' + month2 + '-' + day2;
let endDate = year + '-' + month + '-' + day;
this.query.date = [startDate, endDate];
let heights = document.getElementById('topContainer').clientHeight;
this.topHeight = (heights-45)+'px';
this.bottomHeight = (heights-65)+'px';
this.topHeight = (heights - 45) + 'px';
this.bottomHeight = (heights - 65) + 'px';
},
methods: {
// Class
bindClass(item){
bindClass(item) {
let count = item.count;
let classInfo = {countBlock:true, redColor: false, greenColor: false, orangeColor:false };
let classInfo = { countBlock: true, redColor: false, greenColor: false, orangeColor: false };
let countok = 0;
if(this.activeName=='10车间'){
if (this.activeName == '10车间') {
countok = item.count3;
}else{
} else {
countok = item.count2;
}
if(countok>=count){
classInfo.greenColor = true;
}else{
classInfo.redColor = true;
if (item.state != 40) {
classInfo.orangeColor = true;
} else {
if (countok >= count) {
classInfo.greenColor = true;
} else {
classInfo.redColor = true;
}
}
return classInfo
},
//
@ -414,30 +387,30 @@ export default {
//
async table_del(row) {
this.$confirm(`确定删除吗?`, "提示", {
type: "warning",
type: "warning",
}).then(() => {
this.$API.pm.utask.delete.req(row.id).then((res) => {
this.$message.success("删除成功");
this.$refs.table7.refresh();
return res;
}).catch((err) => {
return err;
});
}).catch(() => {});
this.$API.pm.utask.delete.req(row.id).then((res) => {
this.$message.success("删除成功");
this.$refs.table7.refresh();
return res;
}).catch((err) => {
return err;
});
}).catch(() => { });
},
//
table_end(row){
table_end(row) {
this.$confirm(`确定终止该任务吗?`, "提示", {
type: "warning",
type: "warning",
}).then(() => {
this.$API.pm.utask.stop.req(row.id).then((res) => {
this.$message.success("操作成功");
this.$refs.table10.refresh();
return res;
}).catch((err) => {
return err;
});
}).catch(() => {});
this.$API.pm.utask.stop.req(row.id).then((res) => {
this.$message.success("操作成功");
this.$refs.table10.refresh();
return res;
}).catch((err) => {
return err;
});
}).catch(() => { });
},
//
handleSaveSuccess(data, mode) {
@ -448,73 +421,73 @@ export default {
handleQuery() {
let startDate = this.query.date[0];
let endDate = this.query.date[1];
let arr = this.getBetweenDate(startDate,endDate);
this.columList = arr;
let arr = this.getBetweenDate(startDate, endDate);
// this.columList = arr;
},
getBetweenDate(start,end){
getBetweenDate(start, end) {
let arr = [];
let startTimer = new Date(start).getTime();
let endTimer = new Date(end).getTime();
let oneTime = 1000*60*60*24;//1
let oneTime = 1000 * 60 * 60 * 24;//1
let tempTime = startTimer;
while(tempTime<=endTimer){
while (tempTime <= endTimer) {
let dates = new Date(tempTime);
let year = dates.getFullYear();
let month = dates.getMonth()+1;
let month = dates.getMonth() + 1;
let day = dates.getDate();
let item = year+'-'+month+'-'+day;
let item = year + '-' + month + '-' + day;
arr.push(item);
tempTime = tempTime+oneTime;
}
tempTime = tempTime + oneTime;
}
return arr;
},
resetQuery() {
this.query = {};
},
handleSelectionChange(selection){
handleSelectionChange(selection) {
this.selectedIds = [];
selection.forEach(item => {
this.selectedIds.push(item.id)
});
},
//
utaskDepuse(){
//
utaskDepuse() {
let that = this;
if(that.selectedIds.length>0){
let ids =that.selectedIds;
if (that.selectedIds.length > 0) {
let ids = that.selectedIds;
that.isloading = true;
that.$API.pm.utask.scheduemtasks.req({ids:ids}).then(res=>{
that.$API.pm.utask.assgin.req({ids:ids}).then(res=>{
that.$API.pm.utask.scheduemtasks.req({ ids: ids }).then(res => {
that.$API.pm.utask.assgin.req({ ids: ids }).then(res => {
that.$message.success('下达任务成功');
that.isloading = false;
that.$refs.table7.refresh();
// that.$refs.table8.refresh();
that.$refs.table10.refresh();
}).catch(()=>{
}).catch(() => {
that.isloading = false;
})
}).catch(()=>{
}).catch(() => {
that.isloading = false;
})
}else{
} else {
this.$message.error('未选择任何任务')
}
},
utaskAssgin(){
utaskAssgin() {
let that = this;
if(that.selectedIds.length>0){
if (that.selectedIds.length > 0) {
that.isloading = true;
that.$API.pm.utask.assgin.req({ids:that.selectedIds}).then(res=>{
that.$API.pm.utask.assgin.req({ ids: that.selectedIds }).then(res => {
that.$message.success('下达任务成功');
that.isloading = false;
that.$refs.table7.refresh();
// that.$refs.table8.refresh();
that.$refs.table10.refresh();
}).catch(()=>{
}).catch(() => {
that.isloading = false;
})
}else{
} else {
this.$message.error('未选择任何任务')
}
},
@ -525,71 +498,83 @@ export default {
this.apiObj = this.$API.pm.mtask.list;
this.visibleRecord = true;
},
handleClick(){
handleClick() {
this.columList = [];
this.dataList = [];
},
rowclick(val){
rowclick(val) {
let that = this;
that.columList = [];
let utask = val.id;
that.dataList.push(val)
this.$API.pm.mtask.list.req({utask:utask,page:0}).then(res=>{
res.forEach(item=>{
that.dataList = [val]
this.$API.pm.mtask.list.req({ utask: utask, page: 0 }).then(res => {
let columList = []
res.forEach(item => {
let obj = {};
obj.count1 = 0;obj.count2 = 0;obj.count3 = 0;
obj.state = item.state
obj.count1 = 0; obj.count2 = 0; obj.count3 = 0;
obj.count = item.count;
obj.data = item.start_date;
if(that.activeName=='7车间'){
let rate = (item.count_ok/item.count)*100;
if (that.activeName == '7车间') {
let rate = (item.count_ok / item.count) * 100;
obj.count2 = item.count_ok;//7count_ok
obj.count3 = rate+'%';//7
}else if(that.activeName=='10车间'){
obj.count3 = rate + '%';//7
} else if (that.activeName == '10车间') {
let mlogs = item.mlogs;
if(mlogs.length>0){
for(let i=0;i<mlogs.length;i++){
if(mlogs[i].shift_name=='白班'){
if (mlogs.length > 0) {
for (let i = 0; i < mlogs.length; i++) {
if (mlogs[i].shift_name == '白班') {
obj.count1 = mlogs[i].count_ok;//10
}else{
} else {
obj.count2 = mlogs[i].count_ok;//10
}
obj.count3 = obj.count1+obj.count2;//10
obj.count3 = obj.count1 + obj.count2;//10
}
}
}
that.columList.push(obj);
columList.push(obj);
})
this.columList = columList
console.log(columList)
})
},
},
};
</script>
<style scoped>
.right-panel > * + * {
margin-left: 10px;
}
.countBlock{
width: 80px;
color: #ffffff;
text-align: center;
}
.redColor{
background-color: brown;
}
.greenColor{
background-color: green;
}
.orangeColor{
background-color: orange;
}
.el-main.nopadding{
padding:0 20px 0 20px
}
.btnsContainer{
display: inline-block;
position: absolute;
right: 20px;
margin-top: 4px;
z-index: 100
}
.right-panel>*+* {
margin-left: 10px;
}
.countBlock {
width: 80px;
color: #ffffff;
text-align: center;
}
.redColor {
background-color: brown;
}
.greenColor {
background-color: green;
}
.orangeColor {
background-color: orange;
}
.el-main.nopadding {
padding: 0 20px 0 20px
}
.btnsContainer {
display: inline-block;
position: absolute;
right: 20px;
margin-top: 4px;
z-index: 100
}
</style>

View File

@ -4,34 +4,40 @@
<div class="right-panel btnsContainer" style=" ">
<el-button type="primary" icon="el-icon-plus" @click="add">新增</el-button>
<el-button type="primary" @click="utaskDepuse" v-loading="isloading">任务分解</el-button>
<el-button type="primary" @click="utaskAssgin" v-loading="isloading">任务下达</el-button>
<el-button type="primary" @click="utaskAssgin" v-loading="isloading">任务下达</el-button>
</div>
<el-tabs v-model="activeName" class="demo-tabs">
<el-tab-pane label="粗加工6车间" name="6车间">
<scTable
ref="table1"
:apiObj="apiUtask"
row-key="id" stripe
:params="paramsUtask"
:height="tableHeight"
@row-click="rowClick"
@selection-change="handleSelectionChange"
hidePagination
>
<scTable ref="table1" :apiObj="apiUtask" row-key="id" stripe :params="paramsUtask" :height="tableHeight"
@row-click="rowClick" @selection-change="handleSelectionChange" hidePagination>
<el-table-column type="selection" width="40" />
<el-table-column type="index" width="40" />
<el-table-column label="任务编号" prop="number">
</el-table-column>
<el-table-column label="产品名称" prop="material">
<template #default="scope">
{{ scope.row.material_.name }}
</template>
</el-table-column>
<el-table-column label="规格" prop="material">
<template #default="scope">
{{ scope.row.material_.specification }}
</template>
</el-table-column>
<el-table-column label="型号" prop="material">
<template #default="scope">
{{ scope.row.material_.model }}
</template>
</el-table-column>
<el-table-column label="任务状态" prop="state">
<template #default="scope">
<el-tag v-if="scope.row.state!==40">
{{ state_[scope.row.state] }}
</el-tag>
<el-tag v-else type="success">
{{ state_[scope.row.state] }}
</el-tag>
</template>
<el-tag v-if="scope.row.state !== 40">
{{ state_[scope.row.state] }}
</el-tag>
<el-tag v-else type="success">
{{ state_[scope.row.state] }}
</el-tag>
</template>
</el-table-column>
<el-table-column label="任务量" prop="count">
</el-table-column>
@ -48,14 +54,15 @@
<el-link type="primary" @click="table_show(scope.row)">
查看
</el-link>
<el-divider direction="vertical" v-if="scope.row.state==10"></el-divider>
<el-link type="primary" @click="table_edit(scope.row)" v-if="scope.row.state==10">
<el-divider direction="vertical" v-if="scope.row.state == 10"></el-divider>
<el-link type="primary" @click="table_edit(scope.row)" v-if="scope.row.state == 10">
编辑
</el-link>
<el-divider direction="vertical" v-if="scope.row.state==30"></el-divider>
<el-link type="primary" @click="table_end(scope.row)" v-if="scope.row.state==30">终止</el-link>
<el-divider direction="vertical" v-if="scope.row.state==10||scope.row.state==20"></el-divider>
<el-link type="danger" @click="table_del(scope.row)" v-if="scope.row.state==10||scope.row.state==20">
<el-divider direction="vertical" v-if="scope.row.state == 30"></el-divider>
<el-link type="primary" @click="table_end(scope.row)" v-if="scope.row.state == 30">终止</el-link>
<el-divider direction="vertical" v-if="scope.row.state == 10 || scope.row.state == 20"></el-divider>
<el-link type="danger" @click="table_del(scope.row)"
v-if="scope.row.state == 10 || scope.row.state == 20">
删除
</el-link>
</template>
@ -70,102 +77,68 @@
</div>
<el-tabs v-model="activeNameSub" class="demo-tabs" @tab-click="handleClick">
<el-tab-pane label="生产进度" name="rate">
<GanttComponent class="left-container" :tasks="tasks" :start_date="start_date" :end_date="end_date"></GanttComponent>
<GanttComponent class="left-container" :tasks="tasks" :start_date="start_date" :end_date="end_date">
</GanttComponent>
</el-tab-pane>
</el-tabs>
</el-main>
</el-container>
<save-dialog v-if="dialog.save" ref="saveDialog" :activeName="activeName" @success="handleSaveSuccess"
@closed="dialog.save = false"></save-dialog>
<el-dialog
title="排产"
destroy-on-close
v-model="visible"
@closed="closeAssginVisible"
>
<el-dialog title="排产" destroy-on-close v-model="visible" @closed="closeAssginVisible">
<el-form ref="dialogForm" :model="form" :rules="rules" label-width="120px">
<el-row>
<el-col :md="12" :sm="24">
<el-form-item label="计划开工日期" prop="start_date">
<el-date-picker
v-model="form.start_date"
type="date"
placeholder="计划开工日期"
value-format="YYYY-MM-DD"
style="width:90%"
>
<el-date-picker v-model="form.start_date" type="date" placeholder="计划开工日期" value-format="YYYY-MM-DD"
style="width:90%">
</el-date-picker>
</el-form-item>
</el-col>
<el-col :md="12" :sm="24">
<el-form-item label="计划完工日期" prop="end_date">
<el-date-picker
v-model="form.end_date"
type="date"
placeholder="计划完工日期"
value-format="YYYY-MM-DD"
style="width:90%"
>
<el-date-picker v-model="form.end_date" type="date" placeholder="计划完工日期" value-format="YYYY-MM-DD"
style="width:90%">
</el-date-picker>
</el-form-item>
</el-col>
</el-row>
</el-form>
<el-footer>
<el-button type="primary" :loading="isSaveing" @click="submit">保存</el-button>
<el-button @click="visible = false">取消</el-button>
</el-footer>
</el-dialog>
<el-drawer
title="任务详情"
v-model="visibleRecord"
:size="800"
destroy-on-close
@closed="visibleRecord=false"
>
<div class="right-panel tabsHeader">
<el-date-picker
v-model="paramsObj.start_date"
type="date"
value-format="YYYY-MM-DD"
/>
<el-button
type="primary"
icon="el-icon-search"
@click="handleDetailQuery"
>查询</el-button>
</div>
<el-container v-loading="loading">
<el-main style="padding: 0 20px 20px 20px">
<scTable
ref="drawer_table"
:apiObj="apiObj"
row-key="id"
stripe
:params="paramsObj"
>
<el-table-column type="index" width="50"/>
<el-table-column label="工段" prop="mgroup_name" show-overflow-tooltip>
</el-table-column>
<el-table-column label="物料编号" prop="number">
</el-table-column>
<el-table-column label="数量" prop="count">
</el-table-column>
<el-table-column label="工作日期" prop="start_date">
</el-table-column>
<el-table-column label="状态" prop="state" show-overflow-tooltip>
<template #default="scope">
<el-tag v-if="scope.row.state!==40">
{{ state_[scope.row.state] }}
</el-tag>
<el-tag v-else type="success">
{{ state_[scope.row.state] }}
</el-tag>
</template>
</el-table-column>
</scTable>
</el-main>
</el-container>
<el-button type="primary" :loading="isSaveing" @click="submit">保存</el-button>
<el-button @click="visible = false">取消</el-button>
</el-footer>
</el-dialog>
<el-drawer title="任务详情" v-model="visibleRecord" :size="800" destroy-on-close @closed="visibleRecord = false">
<div class="right-panel tabsHeader">
<el-date-picker v-model="paramsObj.start_date" type="date" value-format="YYYY-MM-DD" />
<el-button type="primary" icon="el-icon-search" @click="handleDetailQuery">查询</el-button>
</div>
<el-container v-loading="loading">
<el-main style="padding: 0 20px 20px 20px">
<scTable ref="drawer_table" :apiObj="apiObj" row-key="id" stripe :params="paramsObj">
<el-table-column type="index" width="50" />
<el-table-column label="任务编号" prop="number">
</el-table-column>
<el-table-column label="工段" prop="mgroup_name" show-overflow-tooltip>
</el-table-column>
<el-table-column label="数量" prop="count">
</el-table-column>
<el-table-column label="工作日期" prop="start_date">
</el-table-column>
<el-table-column label="状态" prop="state" show-overflow-tooltip>
<template #default="scope">
<el-tag v-if="scope.row.state !== 40">
{{ state_[scope.row.state] }}
</el-tag>
<el-tag v-else type="success">
{{ state_[scope.row.state] }}
</el-tag>
</template>
</el-table-column>
</scTable>
</el-main>
</el-container>
</el-drawer>
</template>
<script>
@ -175,7 +148,7 @@ import { useTransitionFallthroughEmits } from 'element-plus';
export default {
name: "rparty",
components: {
saveDialog,GanttComponent
saveDialog, GanttComponent
},
data() {
return {
@ -190,21 +163,21 @@ export default {
ganttLoading: false,
projectId: '',
orderitems: [],
form:{
orderitems:[],
start_date:'',
end_date:'',
form: {
orderitems: [],
start_date: '',
end_date: '',
},
rules: {
start_date: [{required: true, message: "请选择计划开工日期", trigger: "blur"}],
end_date: [{required: true, message: "请选择计划完工日期", trigger: "blur"}],
start_date: [{ required: true, message: "请选择计划开工日期", trigger: "blur" }],
end_date: [{ required: true, message: "请选择计划完工日期", trigger: "blur" }],
},
dialog: {
save: false,
},
apiObj:null,
paramsObj:{start_date:''},
apiObj: null,
paramsObj: { start_date: '' },
apiUtask: this.$API.pm.utask.list,
apiOrderItem: this.$API.sam.orderitem.list,
paramsOrderItem: { utask__isnull: true },
@ -214,22 +187,22 @@ export default {
page_size: 20,
date: ''
},
isloading:false,
visibleRecord:false,
isSaveing:false,
tableHeight:null,
isloading: false,
visibleRecord: false,
isSaveing: false,
tableHeight: null,
activeName: '6车间',
activeNameSub: 'rate',
visible:false,
orderitemList:[],
selectedIds:[],
utaskDetail:[],
visible: false,
orderitemList: [],
selectedIds: [],
utaskDetail: [],
tasks: {
data: []
},
loading:false,
end_date:'',
start_date:'',
loading: false,
end_date: '',
start_date: '',
};
},
created() {
@ -238,62 +211,62 @@ export default {
},
mounted() {
let heights = document.getElementById('topContainer').clientHeight;
console.log('heights',heights)
this.tableHeight = (heights-50)+'px';
console.log('heights', heights)
this.tableHeight = (heights - 50) + 'px';
},
methods: {
handleSelectionChange(selection){
handleSelectionChange(selection) {
this.selectedIds = [];
selection.forEach(item => {
this.selectedIds.push(item.id)
});
},
//
utaskDepuse(){
utaskDepuse() {
let that = this;
if(that.selectedIds.length>0){
if (that.selectedIds.length > 0) {
that.isloading = true;
that.$API.pm.utask.scheduemtasks.req({ids:that.selectedIds}).then(res=>{
that.$API.pm.utask.scheduemtasks.req({ ids: that.selectedIds }).then(res => {
that.$message.success('任务分解成功');
that.isloading = false;
that.$refs.table1.refresh();
}).catch(()=>{
}).catch(() => {
that.isloading = false;
})
}else{
} else {
this.$message.error('未选择任何任务')
}
},
//
table_end(row){
table_end(row) {
this.$confirm(`确定终止该任务吗?`, "提示", {
type: "warning",
type: "warning",
}).then(() => {
// this.$API.pm.utask.delete.req(row.id).then((res) => {
// this.$message.success("");
// this.$refs.table7.refresh();
// return res;
// }).catch((err) => {
// return err;
// });
}).catch(() => {});
// this.$API.pm.utask.delete.req(row.id).then((res) => {
// this.$message.success("");
// this.$refs.table7.refresh();
// return res;
// }).catch((err) => {
// return err;
// });
}).catch(() => { });
},
utaskAssgin(){
utaskAssgin() {
let that = this;
if(that.selectedIds.length>0){
if (that.selectedIds.length > 0) {
that.isloading = true;
that.$API.pm.utask.assgin.req({ids:that.selectedIds}).then(res=>{
that.$API.pm.utask.assgin.req({ ids: that.selectedIds }).then(res => {
that.$message.success('下达任务成功');
that.isloading = false;
that.$refs.table1.refresh();
}).catch(()=>{
}).catch(() => {
that.isloading = false;
})
}else{
} else {
this.$message.error('未选择任何任务')
}
},
selectionOrderItemChange(selection){
selectionOrderItemChange(selection) {
this.orderitemList = [];
selection.forEach(item => {
this.orderitemList.push(item.id)
@ -303,60 +276,59 @@ export default {
startPlan() {
debugger;
let that = this;
if(this.orderitemList.length>0){
that.visible = true;
}else{
if (this.orderitemList.length > 0) {
that.visible = true;
} else {
this.$message.error('未选择任何订单明细项目')
}
},
rowClick(row){
rowClick(row) {
// mtask
let that = this;
that.tasks.data = [];
that.start_date = row.start_date;
that.end_date = row.end_date;
let objItem = {};
objItem.id=row.id;
objItem.type='utask';
objItem.number=row.number;
objItem.count=row.count;
objItem.text =row.number,
objItem.cate='',
objItem.id = row.id;
objItem.type = 'utask';
objItem.number = row.number;
objItem.count = row.count;
objItem.text = row.number;
objItem.material_name = row.material_.name;
objItem.material_specification = row.material_.specification;
objItem.material_model = row.material_.model;
objItem.progress = 1;
objItem.count_ok=row.count_ok;
objItem.count_real=row.count_real;
objItem.count_notok=row.count_notok;
objItem.state =row.state;
objItem.start_date =row.start_date;
objItem.mgroup_name = '';
objItem.material_name = '';
objItem.specification = '';
objItem.open=true;
objItem.count_ok = row.count_ok;
objItem.count_real = row.count_real;
objItem.count_notok = row.count_notok;
objItem.state = row.state;
objItem.start_date = row.start_date;
objItem.mgroup_name = row.mgroup_name;
objItem.open = true;
that.tasks.data.push(objItem)
this.$API.pm.mtask.list.req({utask:row.id,page:0,ordering:'start_date,mgroup__process__sort'}).then(res=>{
console.log('获取甘特图数据',res)//
res.forEach(item=>{
this.$API.pm.mtask.list.req({ utask: row.id, page: 0, ordering: 'start_date,mgroup__process__sort' }).then(res => {
console.log('获取甘特图数据', res)//
res.forEach(item => {
let obj = {};
obj.id=item.id;
obj.type='task';
obj.parent=row.id;
obj.number=item.number;
obj.text =item.mgroup_name,
obj.cate='100*50*2',
obj.state =item.state;
obj.id = item.id;
obj.type = 'task';
obj.parent = row.id;
obj.number = item.number;
obj.text = item.mgroup_name,
obj.state = item.state;
obj.start = item.start_date;
obj.start_date = item.start_date;
obj.duration = 1;
obj.progress = item.count_real/item.count;
obj.count=item.count;
obj.count_ok=item.count_ok;
obj.count_real=item.count_real;
obj.count_notok=item.count_notok;
obj.progress = item.count_real / item.count;
obj.count = item.count;
obj.count_ok = item.count_ok;
obj.count_real = item.count_real;
obj.count_notok = item.count_notok;
obj.state = item.state;
obj.utask = item.utask;
obj.mgroup_name = item.mgroup_name;
obj.material_name = item.material_out_.name;
obj.specification = item.material_out_.specification;
// obj.material_name = item.material_out_.name;
// obj.material_specification = item.material_out_.specification;
console.log(obj)
that.tasks.data.push(obj)
})
@ -400,7 +372,7 @@ export default {
this.apiObj = this.$API.pm.mtask.list;
this.visibleRecord = true;
},
handleDetailQuery(){
handleDetailQuery() {
this.$refs.drawer_table.refresh();
},
//
@ -428,8 +400,8 @@ export default {
resetQuery() {
this.query = {};
},
closeAssginVisible(){},
submit(){
closeAssginVisible() { },
submit() {
let that = this;
that.$refs.dialogForm.validate(async (valid) => {
if (valid) {
@ -437,12 +409,12 @@ export default {
that.form.orderitems = that.orderitemList;
that.form.belong_dept = '3423857962907983872';//6
console.log(that.form)
that.$API.pm.utask.schedueutasks.req(that.form).then(res=>{
that.$API.pm.utask.schedueutasks.req(that.form).then(res => {
that.visible = false;
that.$message.success("操作成功");
that.$refs.table1.refresh();
that.$refs.table2.refresh();
}).catch(err=>{
}).catch(err => {
that.visible = false;
})
}
@ -452,13 +424,15 @@ export default {
};
</script>
<style scoped>
.right-panel > * + * {
margin-left: 10px;
}
.right-panel>*+* {
margin-left: 10px;
}
.el-main.nopadding {
padding: 0 20px 0 20px
}
.btnsContainer{
.btnsContainer {
display: inline-block;
position: absolute;
right: 20px;
@ -475,5 +449,4 @@ export default {
padding: 10px;
border-radius: 4px;
}
</style>

View File

@ -1,87 +1,48 @@
<template>
<el-dialog
:title="titleMap[mode]"
v-model="visible"
:size="1000"
destroy-on-close
@closed="$emit('closed')"
>
<el-dialog :title="titleMap[mode]" v-model="visible" :size="1000" destroy-on-close @closed="$emit('closed')">
<el-container v-loading="loading">
<el-main style="padding: 0 20px 20px 20px">
<el-form
ref="dialogForm"
:model="form"
:rules="rules"
label-width="120px"
>
<el-form ref="dialogForm" :model="form" :rules="rules" label-width="120px">
<el-row>
<el-col :md="12" :sm="24">
<el-form-item label="任务编号" prop="number">
<el-input v-model="form.number" placeholder="任务编号" :disabled="mode=='edit'"/>
<el-input v-model="form.number" placeholder="任务编号" :disabled="mode == 'edit'" />
</el-form-item>
</el-col>
<el-col :md="12" :sm="24" v-if="activeName!=='6车间'">
<el-col :md="12" :sm="24" v-if="activeName !== '6车间'">
<el-form-item label="工段" prop="mgroup">
<el-select
v-model="form.mgroup"
placeholder="工段"
clearable
style="width:100%"
:disabled="mode=='edit'"
>
<el-option
v-for="item in options"
:key="item.id"
:label="item.name"
:value="item.id"
></el-option>
<el-select v-model="form.mgroup" placeholder="工段" clearable style="width:100%" :disabled="mode == 'edit'"
@change="getMaterial">
<el-option v-for="item in options" :key="item.id" :label="item.name" :value="item.id"></el-option>
</el-select>
</el-form-item>
</el-col>
<el-col :md="12" :sm="24">
<el-form-item label="产物" prop="material">
<el-select
v-model="form.material"
placeholder="产物"
clearable
style="width:100%"
:disabled="mode=='edit'"
>
<el-option
v-for="item in materialOptions"
:key="item.id"
:label="item.name"
:value="item.id"
></el-option>
<el-select v-model="form.material" placeholder="产物" clearable style="width:100%"
:disabled="mode == 'edit'">
<el-option v-for="item in materialOptions" :key="item.id" :label="item.name"
:value="item.id"></el-option>
</el-select>
</el-form-item>
</el-col>
<el-col :md="12" :sm="24">
<el-form-item label="任务数" prop="count">
<el-input-number style="width:100%" v-model="form.count" :min="1" controls-position="right" placeholder="任务数"/>
<el-input-number style="width:100%" v-model="form.count" :min="1" controls-position="right"
placeholder="任务数" />
</el-form-item>
</el-col>
<el-col :md="12" :sm="24">
<el-form-item label="开工日期" prop="start_date">
<el-date-picker
v-model="form.start_date"
type="date"
placeholder="开工日期"
value-format="YYYY-MM-DD"
style="width:100%"
>
<el-date-picker v-model="form.start_date" type="date" placeholder="开工日期" value-format="YYYY-MM-DD"
style="width:100%">
</el-date-picker>
</el-form-item>
</el-col>
<el-col :md="12" :sm="24">
<el-form-item label="完工日期" prop="end_date">
<el-date-picker
v-model="form.end_date"
type="date"
placeholder="完工日期"
value-format="YYYY-MM-DD"
style="width:100%"
>
<el-date-picker v-model="form.end_date" type="date" placeholder="完工日期" value-format="YYYY-MM-DD"
style="width:100%">
</el-date-picker>
</el-form-item>
</el-col>
@ -98,8 +59,8 @@
<script>
export default {
emits: ["success", "closed"],
props:{
activeName:{ type: String, default: '' },
props: {
activeName: { type: String, default: '' },
},
data() {
return {
@ -112,17 +73,17 @@ export default {
},
form: {},
rules: {
mgroup:[{required:true, message:'请选择工段', trigger: "blur"}],
count:[{required:true, message:'请输入任务数', trigger: "blur"}],
start_date: [{required: true, message: "请选择开始时间", trigger: "blur"}],
end_date: [{required: true, message: "请选择结束时间", trigger: "blur"}],
number: [{required: true, message: "请输入任务编号", trigger: "blur"}],
material: [{required: true, message: "请选选择产品", trigger: "blur"}]
},
mgroup: [{ required: true, message: '请选择工段', trigger: "blur" }],
count: [{ required: true, message: '请输入任务数', trigger: "blur" }],
start_date: [{ required: true, message: "请选择开始时间", trigger: "blur" }],
end_date: [{ required: true, message: "请选择结束时间", trigger: "blur" }],
number: [{ required: true, message: "请输入任务编号", trigger: "blur" }],
material: [{ required: true, message: "请选选择产品", trigger: "blur" }]
},
visible: false,
isSaveing: false,
options:[],
materialOptions:[],
options: [],
materialOptions: [],
selectionFilters: [],
setFiltersVisible: false,
belong_dept_options: [],
@ -130,38 +91,52 @@ export default {
};
},
mounted() {
this.getMaterial();
this.getMgroup();
if (this.activeName == '6车间') {
this.getMaterial6dept();
}
},
methods: {
//
open(mode = "add",type) {
open(mode = "add", type) {
this.mode = mode;
this.visible = true;
return this;
},
getMgroup(){
var res = this.$API.mtm.mgroup.list.req({ page: 0 }).then(res => {
getMgroup() {
var res = this.$API.mtm.mgroup.list.req({ page: 0, belong_dept__name: this.activeName }).then(res => {
this.options = res;
});
},
getMaterial(){
//type:20,is_hidden:false
// page:0,type:'10'
let obj ={};
obj.page = 0;
if(this.activeName=='6车间'){
obj.type = 10;
obj.is_hidden = false;
obj.is_assemb = false;
}else{
obj.type = 20;
obj.is_hidden = false;
}
this.$API.mtm.material.list.req(obj).then(res=>{
getMaterial6dept() {
this.$API.mtm.material.list.req({ page: 0, need_route: true }).then(res => {
this.materialOptions = res;
})
},
getMaterial(mgroupId) {
//type:20,is_hidden:false
// page:0,type:'10'
this.$API.mtm.route.list.req({ page: 0, mgroup: mgroupId }).then(res => {
let mOptions = []
for (var i = 0; i < res.length; i++) {
mOptions.push({ 'id': res[i].material_out, 'name': res[i].material_out_name })
}
this.materialOptions = mOptions;
})
// let obj = {};
// obj.page = 0;
// if (this.activeName == '6') {
// obj.type = 10;
// obj.is_hidden = false;
// obj.is_assemb = false;
// } else {
// obj.type = 20;
// obj.is_hidden = false;
// }
// this.$API.mtm.material.list.req(obj).then(res => {
// this.materialOptions = res;
// })
},
//
submit() {
this.$refs.dialogForm.validate(async (valid) => {
@ -169,19 +144,19 @@ export default {
this.isSaveing = true;
try {
var res;
if(this.activeName=='6车间'){
if (this.activeName == '6车间') {
this.form.belong_dept = '3423857962907983872';//6
}else if(this.activeName=='7车间'){
} else if (this.activeName == '7车间') {
this.form.belong_dept = '3423858259797598208';//7
}else if(this.activeName=='8车间'){
} else if (this.activeName == '8车间') {
this.form.belong_dept = '3423858687901908992';//8
}else if(this.activeName=='10车间'){
} else if (this.activeName == '10车间') {
this.form.belong_dept = '3423858348557549568';//10
}
if (this.mode == "add") {
res = await this.$API.pm.utask.create.req(this.form);
} else if (this.mode == "edit") {
res = await this.$API.pm.utask.update.req(this.form.id,this.form);
res = await this.$API.pm.utask.update.req(this.form.id, this.form);
}
this.isSaveing = false;
this.$emit("success");
@ -207,5 +182,4 @@ export default {
},
};
</script>
<style>
</style>
<style></style>

View File

@ -1,275 +1,211 @@
<template>
<el-dialog
:title="titleMap[mode]"
v-model="visible"
width="1000px"
:size="1000"
destroy-on-close
@closed="$emit('closed')"
>
<el-dialog :title="titleMap[mode]" v-model="visible" width="1000px" :size="1000" destroy-on-close
@closed="$emit('closed')">
<el-form ref="dialogForm" :model="form" :rules="rules" label-width="80px">
<el-row>
<el-col :md="12" :sm="24">
<el-form-item label="交接物料" prop="material">
<el-select
v-model="form.wm"
placeholder="交接物料"
clearable
style="width:100%"
@change="materialChange"
>
<el-option
v-for="item in materialOptions"
:key="item.id"
:label="item.batch"
:value="item.id"
></el-option>
<el-select v-model="form.wm" placeholder="交接物料" clearable style="width:100%"
@change="materialChange">
<el-option v-for="item in materialOptions" :key="item.id" :label="item.batch"
:value="item.id"></el-option>
</el-select>
</el-form-item>
</el-col>
<el-col :md="12" :sm="24">
<el-form-item label="交接数量" width="100">
<el-input-number
v-model="form.count"
controls-position="right"
:min="0" step="1"
:step-strictly="true"
style="width:100%"
placeholder="交接数量">
<el-input-number v-model="form.count" controls-position="right" :min="0" step="1"
:step-strictly="true" style="width:100%" placeholder="交接数量">
</el-input-number>
</el-form-item>
</el-col>
<el-col :md="12" :sm="24">
<el-form-item label="送料部门" prop="send_dept">
<el-select
v-model="form.send_dept"
placeholder="送料部门"
clearable
style="width:100%"
>
<el-option
v-for="item in deptOptions"
:key="item.id"
:label="item.name"
:value="item.id"
></el-option>
<el-select v-model="form.send_dept" placeholder="送料部门" clearable style="width:100%">
<el-option v-for="item in deptOptions" :key="item.id" :label="item.name"
:value="item.id"></el-option>
</el-select>
</el-form-item>
</el-col>
<el-col :md="12" :sm="24">
<el-form-item label="交送人" prop="send_user">
<el-select
v-model="form.send_user"
placeholder="交送人"
clearable
style="width:100%"
>
<el-option
v-for="item in userList"
:key="item.id"
:label="item.name"
:value="item.id"
/>
<el-select v-model="form.send_user" placeholder="交送人" clearable style="width:100%">
<el-option v-for="item in userList" :key="item.id" :label="item.name" :value="item.id" />
</el-select>
</el-form-item>
</el-col>
<el-col :md="12" :sm="24">
<el-form-item label="接收部门" prop="recive_dept">
<el-select
v-model="form.recive_dept"
placeholder="接收部门"
clearable
style="width:100%"
>
<el-option
v-for="item in deptOptions"
:key="item.id"
:label="item.name"
:value="item.id"
></el-option>
<el-select v-model="form.recive_dept" placeholder="接收部门" clearable style="width:100%">
<el-option v-for="item in deptOptions" :key="item.id" :label="item.name"
:value="item.id"></el-option>
</el-select>
</el-form-item>
</el-col>
<el-col :md="12" :sm="24">
<el-form-item label="接收人" prop="recive_user">
<el-select
v-model="form.recive_user"
placeholder="接收人"
clearable
style="width:100%"
>
<el-option
v-for="item in userList2"
:key="item.id"
:label="item.name"
:value="item.id"
/>
<el-select v-model="form.recive_user" placeholder="接收人" clearable style="width:100%">
<el-option v-for="item in userList2" :key="item.id" :label="item.name" :value="item.id" />
</el-select>
</el-form-item>
</el-col>
<el-col :md="12" :sm="24">
<el-form-item label="交送日期">
<el-date-picker
v-model="form.send_date"
type="date"
placeholder="选择时间"
format="YYYY-MM-DD"
value-format="YYYY-MM-DD"
style="width:100%"
/>
<el-date-picker v-model="form.send_date" type="date" placeholder="选择时间" format="YYYY-MM-DD"
value-format="YYYY-MM-DD" style="width:100%" />
</el-form-item>
</el-col>
</el-row>
</el-form>
<el-footer>
<el-button type="primary" v-loading="isSaveing" @click="submit">确定</el-button>
<el-button @click="resetForm">取消</el-button>
<el-button @click="visible = false">取消</el-button>
</el-footer>
</el-dialog>
</template>
<script>
export default {
emits: ["success", "closed"],
data() {
return {
yseorno:['是','否'],
loading: false,
mode: "add",
titleMap: {
add: "新增交接记录",
edit: "编辑交接记录",
show: "查看交接记录",
},
handle_user:[],
form:{
batch:'',
count:0,//
wm:'',
send_user:'',
send_dept:'',
send_date:'',
recive_dept:'',
recive_user:'',
},
userList:[],
userList2:[],
deptOptions:[],
materialOptions:[],
visible: false,
isSaveing: false,
setFiltersVisible: false,
};
},
mounted() {
let materialObj = this.$TOOL.data.get('MATERIAL_OBJECT');
this.materialObj = materialObj;
this.getDeptOptions();
this.getMaterial();
this.getUserList();
let date = new Date();
let year = date.getFullYear();
let month = date.getMonth()+1;
let day = date.getDate();
this.form.handle_date = year+'-'+month+'-'+day;
export default {
emits: ["success", "closed"],
data() {
return {
yseorno: ['是', '否'],
loading: false,
mode: "add",
titleMap: {
add: "新增交接记录",
edit: "编辑交接记录",
show: "查看交接记录",
},
handle_user: [],
form: {
batch: '',
count: 0,//
wm: '',
send_user: '',
send_dept: '',
send_date: '',
recive_dept: '',
recive_user: '',
},
userList: [],
userList2: [],
deptOptions: [],
materialOptions: [],
visible: false,
isSaveing: false,
setFiltersVisible: false,
};
},
mounted() {
let materialObj = this.$TOOL.data.get('MATERIAL_OBJECT');
this.materialObj = materialObj;
this.getDeptOptions();
this.getMaterial();
this.getUserList();
let date = new Date();
let year = date.getFullYear();
let month = date.getMonth() + 1;
let day = date.getDate();
this.form.handle_date = year + '-' + month + '-' + day;
},
methods: {
//68
getUserList() {
let that = this;
this.$API.system.user.list.req({ belong_dept__name: '6车间', page: 0 }).then(res => {
that.userList2 = res;
});
this.$API.system.user.list.req({ belong_dept__name: '8车间', page: 0 }).then(res => {
that.userList = res;
});
},
methods: {
//68
getUserList(){
let that = this;
this.$API.system.user.list.req({belong_dept__name:'6车间',page:0}).then(res=>{
that.userList2 = res;
});
this.$API.system.user.list.req({belong_dept__name:'8车间',page:0}).then(res=>{
that.userList = res;
});
},
//
getDeptOptions() {
this.$API.system.dept.list.req({ page: 0, type__in: 'dept' }).then((res) => {
this.deptOptions = [];
res.forEach(item=>{
if(item.parent=='3423856735881117696'){
this.deptOptions.push(item)
}
})
});
},
//
getMaterial(){
let that = this;
this.$API.wpm.wmaterial.list.req({belong_dept_name:'8车间',page:0}).then(res=>{
that.materialOptions = res;
});
},
//
getMgroupList(){
let that = this;
this.$API.mtm.mgroup.list.req({page:0,cate:'photon'}).then(res=>{
let data = res.filter(item=>{
return item.process_cate=='成型'
})
that.mgroupOptions = res;
})
},
//
open(mode = "add") {
this.mode = mode;
this.visible = true;
return this;
},
materialChange(val){
let data = this.materialOptions.filter(item=>{
return item.id==val;
})
this.form.batch = data[0].batch;
},
//
submit() {
this.$refs.dialogForm.validate(async (valid) => {
if (valid) {
if (this.mode == "add") {
this.$API.wpm.handover.create.req(this.form).then(res=>{
this.isSaveing = false;
this.$emit("success", this.form, this.mode);
this.visible = false;
this.$message.success("操作成功");
}).catch( (err) =>{
//
this.isSaveing = false;
return err;
})
} else if (this.mode == "edit") {
this.$API.wpm.handover.update.req(this.form.id,this.form).then(res=>{
this.isSaveing = false;
this.$emit("success", this.form, this.mode);
this.visible = false;
this.$message.success("操作成功");
}).catch( (err) =>{
//
this.isSaveing = false;
return err;
})
}
//
getDeptOptions() {
this.$API.system.dept.list.req({ page: 0, type__in: 'dept' }).then((res) => {
this.deptOptions = [];
res.forEach(item => {
if (item.parent == '3423856735881117696') {
this.deptOptions.push(item)
}
});
},
//
setData(data) {
Object.assign(this.form, data);
},
//
setFilters(filters) {
this.selectionFilters = filters;
this.setFiltersVisible = true;
},
})
});
},
};
//
getMaterial() {
let that = this;
this.$API.wpm.wmaterial.list.req({ belong_dept_name: '8车间', page: 0 }).then(res => {
that.materialOptions = res;
});
},
//
getMgroupList() {
let that = this;
this.$API.mtm.mgroup.list.req({ page: 0, cate: 'photon' }).then(res => {
let data = res.filter(item => {
return item.process_cate == '成型'
})
that.mgroupOptions = res;
})
},
//
open(mode = "add") {
this.mode = mode;
this.visible = true;
return this;
},
materialChange(val) {
let data = this.materialOptions.filter(item => {
return item.id == val;
})
this.form.batch = data[0].batch;
},
//
submit() {
this.$refs.dialogForm.validate(async (valid) => {
if (valid) {
if (this.mode == "add") {
this.$API.wpm.handover.create.req(this.form).then(res => {
this.isSaveing = false;
this.$emit("success", this.form, this.mode);
this.visible = false;
this.$message.success("操作成功");
}).catch((err) => {
//
this.isSaveing = false;
return err;
})
} else if (this.mode == "edit") {
this.$API.wpm.handover.update.req(this.form.id, this.form).then(res => {
this.isSaveing = false;
this.$emit("success", this.form, this.mode);
this.visible = false;
this.$message.success("操作成功");
}).catch((err) => {
//
this.isSaveing = false;
return err;
})
}
}
});
},
//
setData(data) {
Object.assign(this.form, data);
},
//
setFilters(filters) {
this.selectionFilters = filters;
this.setFiltersVisible = true;
},
},
};
</script>
<style scoped>
.formTitle{
margin-bottom:10px;
font-weight:600
.formTitle {
margin-bottom: 10px;
font-weight: 600
}
</style>

View File

@ -4,19 +4,13 @@
<el-row :gutter="10">
<el-col :span="activeSpan" style="border-right: 1px solid #eeeeee;position: relative;">
<div class="right-panel btnWrap">
<el-button v-if="activeName == '8车间' || activeName == '退火'" type="primary" icon="el-icon-plus" @click="add">新增</el-button>
<el-button v-if="activeName == '8车间' || activeName == '退火'" type="primary" icon="el-icon-plus"
@click="add">新增</el-button>
<el-button v-if="activeName == '退火'" type="primary" @click="submittuihuo">提交</el-button>
<el-date-picker v-if="activeName == '7车间' || activeName == '10车间'"
v-model="paramsDate"
type="date"
value-format="YYYY-MM-DD"
/>
<el-button
type="primary"
icon="el-icon-search"
@click="handleQuerys"
v-if="activeName == '7车间' || activeName == '10车间'"
>查询</el-button>
<el-date-picker v-if="activeName == '7车间' || activeName == '10车间'" v-model="paramsDate" type="date"
value-format="YYYY-MM-DD" />
<el-button type="primary" icon="el-icon-search" @click="handleQuerys"
v-if="activeName == '7车间' || activeName == '10车间'">查询</el-button>
</div>
<el-tabs v-model="activeName" class="demo-tabs" @tab-click="handleClick">
<el-tab-pane label="混料工序" name="8车间">
@ -30,8 +24,6 @@
}}</span>
</template>
</el-table-column>
<el-table-column label="设备" prop="equipment_name">
</el-table-column>
<el-table-column label="批次" prop="batch">
</el-table-column>
<el-table-column label="数量/桶数" prop="count_real">
@ -68,8 +60,6 @@
}}</span>
</template>
</el-table-column>
<el-table-column label="设备" prop="equipment_name">
</el-table-column>
<el-table-column label="批次" prop="batch">
</el-table-column>
<el-table-column label="数量/桶数" prop="count">
@ -86,7 +76,7 @@
编辑
</el-link>
<el-divider direction="vertical"></el-divider>
<el-link type="danger" @click="table_del(scope.row, '8车间')" v-auth="'equipment'">
<el-link type="danger" @click="delHandover2(scope.row, '8车间')" v-auth="'equipment'">
删除
</el-link>
</template>
@ -170,26 +160,18 @@
</div>
<scTable ref="table8wM" :apiObj="apiObjMetarial" row-key="id" stripe :height="tableHeightHalf"
:params="paramsMaterial" hidePagination hideDo @selection-change="handleSelectionChange">
<el-table-column type="index" width="50" />
<el-table-column type="selection" width="40" />
<el-table-column label="送料日期" prop="send_date">
<el-table-column label="物料名" prop="material">
<template #default="scope">{{ scope.row.material_.name }}</template>
</el-table-column>
<el-table-column label="产物" prop="material" show-overflow-tooltip>
<template #default="scope"><span v-if="scope.row.material_out_">{{ scope.row.material_out_.name
}}</span>
</template>
<el-table-column label="规格" prop="material">
<template #default="scope">{{ scope.row.material_.specification }}</template>
</el-table-column>
<el-table-column label="设备" prop="equipment_name">
<el-table-column label="型号" prop="material">
<template #default="scope">{{ scope.row.material_.model }}</template>
</el-table-column>
<el-table-column label="批次" prop="batch">
</el-table-column>
<el-table-column label="数量/桶数" prop="count_real">
</el-table-column>
<el-table-column label="每桶重量/kg" prop="count_real_eweight">
</el-table-column>
<el-table-column label="交送人" prop="send_user_name">
</el-table-column>
<el-table-column label="接收人" prop="send_user_name">
<el-table-column label="数量" prop="count" width="80">
</el-table-column>
<!-- <el-table-column label="操作" fixed="right" align="left">
<template #default="scope">
@ -216,7 +198,7 @@
</el-tab-pane>
<el-tab-pane label="7车间" name="7车间">
<scTable ref="table7" :apiObj="apiObjMtask" row-key="id" stripe :height="tableHeight" :params="params7"
hideDo @row-click="rowClick">
hideDo @row-click="rowClick">
<el-table-column type="index" width="50" />
<el-table-column label="产品名称" prop="material" show-overflow-tooltip>
<template #default="scope">
@ -261,7 +243,7 @@
</el-tab-pane>
<el-tab-pane label="10车间" name="10车间">
<scTable ref="table10" :apiObj="apiObjMtask" row-key="id" stripe :height="tableHeight" :params="params10"
hideDo @row-click="rowClick">
hideDo @row-click="rowClick">
<el-table-column type="index" width="50" />
<el-table-column label="产品名称" prop="material" show-overflow-tooltip>
<template #default="scope">
@ -303,7 +285,7 @@
</el-tab-pane>
</el-tabs>
</el-col>
<el-col :span="12" v-if="activeName=='7车间'||activeName == '10车间'">
<el-col :span="12" v-if="activeName == '7车间' || activeName == '10车间'">
<el-card>
<el-form label-width="100px">
<el-row>
@ -462,28 +444,20 @@
<el-button type="primary" @click="getMaterial">领料</el-button>
</div>
</div>
<scTable ref="table8wM" :apiObj="apiObjMetarial" row-key="id" stripe :height="300"
:params="paramsMaterial" hidePagination hideDo>
<el-table-column type="index" width="50" />
<el-table-column type="selection" width="40" />
<el-table-column label="送料日期" prop="send_date">
<scTable ref="table8wM" :apiObj="apiObjMetarial" row-key="id" stripe :height="300" :params="paramsMaterial"
hidePagination hideDo>
<el-table-column label="物料名" prop="material">
<template #default="scope">{{ scope.row.material_.name }}</template>
</el-table-column>
<el-table-column label="产物" prop="material" show-overflow-tooltip>
<template #default="scope">
<span v-if="scope.row.material_out_">{{ scope.row.material_out_.name}}</span>
</template>
<el-table-column label="规格" prop="material">
<template #default="scope">{{ scope.row.material_.specification }}</template>
</el-table-column>
<el-table-column label="设备" prop="equipment_name">
<el-table-column label="型号" prop="material">
<template #default="scope">{{ scope.row.material_.model }}</template>
</el-table-column>
<el-table-column label="批次" prop="batch">
</el-table-column>
<el-table-column label="数量/桶数" prop="count_real">
</el-table-column>
<el-table-column label="每桶重量/kg" prop="count_real_eweight">
</el-table-column>
<el-table-column label="交送人" prop="send_user_name">
</el-table-column>
<el-table-column label="接收人" prop="send_user_name">
<el-table-column label="数量" prop="count" width="80">
</el-table-column>
</scTable>
</el-col>
@ -511,13 +485,6 @@
</el-select>
</el-form-item>
</el-col>
<el-col :md="12" :sm="24">
<el-form-item label="送料部门" prop="send_dept">
<el-select v-model="handoverForm.send_dept" placeholder="送料部门" clearable style="width:100%">
<el-option v-for="item in group" :key="item.id" :label="item.name" :value="item.id"></el-option>
</el-select>
</el-form-item>
</el-col>
<el-col :md="12" :sm="24">
<el-form-item label="接收人" prop="recive_user">
<el-select v-model="handoverForm.recive_user" placeholder="接收人" clearable style="width:100%">
@ -569,7 +536,7 @@ export default {
handover: false
},
handoverVisible: false,
paramsDate:'',
paramsDate: '',
// apiObj: this.$API.pm.mtask.list,
params7: {
mgroup__belong_dept__name: '7车间'
@ -679,16 +646,16 @@ export default {
console.log(val.index);
if (val.index == 0) {
this.activeSpan = 24
}else if(val.index == 1) {
} else if (val.index == 1) {
this.activeSpan = 24;
this.paramsMaterial.belong_dept__name = '8车间';
this.$refs.table8wM.refresh();
}else if(val.index == 2){
} else if (val.index == 2) {
this.activeSpan = 12;
this.paramsMaterial.belong_dept__name = '7车间';
this.$refs.table8wM.refresh();
}
else if(val.index == 3){
else if (val.index == 3) {
this.activeSpan = 12;
this.paramsMaterial.belong_dept__name = '10车间';
this.$refs.table8wM.refresh();
@ -697,14 +664,14 @@ export default {
this.choseData = null;
this.flogs = [];
},
handleQuerys(){
if(this.activeName=='7车间'){
handleQuerys() {
if (this.activeName == '7车间') {
this.params7.start_date = this.paramsDate;
this.params7.end_date = this.paramsDate;
console.log('paramsDate',this.paramsDate)
console.log('7车间',this.params7)
console.log('paramsDate', this.paramsDate)
console.log('7车间', this.params7)
this.$refs.table7.queryData(this.params7);
}else{
} else {
this.params10.start_date = this.paramsDate;
this.params10.end_date = this.paramsDate;
this.$refs.table10.queryData(this.params10);
@ -719,8 +686,8 @@ export default {
})
},
//退
table_tuihuo_submit(row){
this.$API.wpm.mlog.submit.req(row.id,row).then(res => {
table_tuihuo_submit(row) {
this.$API.wpm.mlog.submit.req(row.id, row).then(res => {
console.log(res)
})
},
@ -754,7 +721,7 @@ export default {
}
},
//退
submittuihuo(){},
submittuihuo() { },
//
table_edit(row) {
@ -820,7 +787,7 @@ export default {
this.handoverForm.batch = row.batch;
this.handoverForm.count = row.count_real;
this.handoverForm.count_eweight = row.count_real_eweight;
this.handoverForm.send_dept = '';
this.handoverForm.send_dept = row.belong_dept;
this.handoverForm.recive_dept = '';
this.handoverForm.send_user = '';
this.handoverForm.recive_user = '';
@ -846,6 +813,7 @@ export default {
}).then(() => {
this.$API.wpm.handover.delete.req(row.id).then((res) => {
this.$message.success("删除成功");
this.$refs.table8.refresh();
return res;
}).catch((err) => {
return err;

View File

@ -1,151 +1,108 @@
<template>
<el-container style="flex-direction: column">
<el-main id="topContainer" class="nopadding" style="position: relative;margin-bottom: 10px;">
<div class="right-panel tabsHeader">
<el-date-picker
v-model="query.date"
type="date"
value-format="YYYY-MM-DD"
/>
<el-button
type="primary"
icon="el-icon-search"
@click="handleQuery"
>查询</el-button>
</div>
<el-tabs v-model="activeName" class="demo-tabs" @tab-click="handleClick">
<el-tab-pane label="粗加工6车间" name="first">
<scTable
ref="table"
:apiObj="apiObj"
row-key="id"
stripe
:height="topHeight"
:params="query"
hidePagination
@row-click="rowClick"
>
<el-table-column type="index" width="50"/>
<el-table-column label="任务编号" prop="number">
</el-table-column>
<el-table-column label="产品名称" prop="material" show-overflow-tooltip>
<template #default="scope">
<span v-if="scope.row.material_out_">{{ scope.row.material_out_.name }}</span>
</template>
</el-table-column>
<el-table-column label="产品型号" prop="number">
</el-table-column>
<el-table-column label="产品规格" prop="number">
</el-table-column>
<el-table-column label="计划数量" prop="count">
</el-table-column>
<el-table-column label="计划日期" prop="count">
</el-table-column>
<el-table-column label="状态" prop="state">
<template #default="scope">
<el-tag v-if="scope.row.state!==40">
{{ state_[scope.row.state] }}
</el-tag>
<el-tag v-else type="success">
{{ state_[scope.row.state] }}
</el-tag>
</template>
</el-table-column>
<el-table-column label="操作" fixed="right" width="120">
<template #default="scope">
<el-link
type="primary"
@click="table_edit(scope.row)"
v-if="scope.row.status==10"
>生产记录
</el-link>
<el-link
type="primary"
@click="table_show(scope.row)"
v-else
>查看
</el-link>
</template>
</el-table-column>
</scTable>
</el-tab-pane>
</el-tabs>
</el-main>
<el-main class="nopadding" style="position: relative;">
<div>
<el-row :gutter="20">
<el-col :span="13" style="border-right: 1px solid #eeeeee;">
<div class="tableTitle">工序进度</div>
<scTable
ref="tableprocess"
row-key="id"
stripe
:hideDo="hideDo"
:data="processList"
:height="bottomHeight"
>
<el-table-column type="index" width="50"/>
<el-table-column label="日期" prop="start_date">
</el-table-column>
<el-table-column label="工序" prop="mgroup_name">
</el-table-column>
<el-table-column label="产品名称" prop="number">
</el-table-column>
<el-table-column label="型号规格" prop="specification">
</el-table-column>
<el-table-column label="规格" prop="number">
</el-table-column>
<el-table-column label="计划数量" prop="count">
</el-table-column>
<el-table-column label="合格数量" prop="count_ok">
</el-table-column>
<el-table-column label="操作人" prop="">
</el-table-column>
</scTable>
</el-col>
<el-col :span="11">
<div class="tableTitle" style="display:flex;justify-content: space-between;">
<div>车间物料</div>
<div class="btnsContainer right-panel">
<el-button type="primary" @click="tomio">车间入库</el-button>
<el-button type="primary" @click="tomio">车间出库</el-button>
</div>
<el-container style="flex-direction: column">
<el-main id="topContainer" class="nopadding" style="position: relative;margin-bottom: 10px;">
<div class="right-panel tabsHeader">
<el-date-picker v-model="query.date" type="date" value-format="YYYY-MM-DD" />
<el-button type="primary" icon="el-icon-search" @click="handleQuery">查询</el-button>
</div>
<el-tabs v-model="activeName" class="demo-tabs" @tab-click="handleClick">
<el-tab-pane label="粗加工6车间" name="first">
<scTable ref="table" :apiObj="apiObj" row-key="id" stripe :height="topHeight" :params="query" hidePagination
@row-click="rowClick">
<el-table-column type="index" width="50" />
<el-table-column label="任务编号" prop="number">
</el-table-column>
<el-table-column label="产品名称" prop="material" show-overflow-tooltip>
<template #default="scope">
<span v-if="scope.row.material_out_">{{ scope.row.material_out_.name }}</span>
</template>
</el-table-column>
<el-table-column label="产品型号" prop="number">
</el-table-column>
<el-table-column label="产品规格" prop="number">
</el-table-column>
<el-table-column label="计划数量" prop="count">
</el-table-column>
<el-table-column label="计划日期" prop="count">
</el-table-column>
<el-table-column label="状态" prop="state">
<template #default="scope">
<el-tag v-if="scope.row.state !== 40">
{{ state_[scope.row.state] }}
</el-tag>
<el-tag v-else type="success">
{{ state_[scope.row.state] }}
</el-tag>
</template>
</el-table-column>
<el-table-column label="操作" fixed="right" width="120">
<template #default="scope">
<el-link type="primary" @click="table_edit(scope.row)" v-if="scope.row.status == 10">生产记录
</el-link>
<el-link type="primary" @click="table_show(scope.row)" v-else>查看
</el-link>
</template>
</el-table-column>
</scTable>
</el-tab-pane>
</el-tabs>
</el-main>
<el-main class="nopadding" style="position: relative;">
<div>
<el-row :gutter="20">
<el-col :span="13" style="border-right: 1px solid #eeeeee;">
<div class="tableTitle">工序进度</div>
<scTable ref="tableprocess" row-key="id" stripe :hideDo="hideDo" :data="processList" :height="bottomHeight">
<el-table-column type="index" width="50" />
<el-table-column label="日期" prop="start_date">
</el-table-column>
<el-table-column label="工序" prop="mgroup_name">
</el-table-column>
<el-table-column label="产品名称" prop="number">
</el-table-column>
<el-table-column label="型号规格" prop="specification">
</el-table-column>
<el-table-column label="规格" prop="number">
</el-table-column>
<el-table-column label="计划数量" prop="count">
</el-table-column>
<el-table-column label="合格数量" prop="count_ok">
</el-table-column>
<el-table-column label="操作人" prop="">
</el-table-column>
</scTable>
</el-col>
<el-col :span="11">
<div class="tableTitle" style="display:flex;justify-content: space-between;">
<div>车间物料</div>
<div class="btnsContainer right-panel">
<el-button type="primary" @click="tomio">车间入库</el-button>
<el-button type="primary" @click="tomio">车间出库</el-button>
</div>
<scTable
ref="tableMaterial"
row-key="id"
stripe
:hideDo="hideDo"
:data="wMaterial"
:height="bottomHeight"
>
<el-table-column type="index" width="50"/>
<el-table-column label="产品编号" prop="material_">
<template #default="scope">
<span v-if="scope.row.material_">{{ scope.row.material_.number }}</span>
</template>
</el-table-column>
<el-table-column label="产品名称" prop="material_">
<template #default="scope">
<span v-if="scope.row.material_">{{ scope.row.material_.name }}</span>
</template>
</el-table-column>
<el-table-column label="型号规格" prop="specification">
</el-table-column>
<el-table-column label="数量" prop="count">
</el-table-column>
</scTable>
</el-col>
</el-row>
</div>
</el-main>
</el-container>
<save-dialog
v-if="dialog.save"
ref="saveDialog"
@success="handleSaveSuccess"
@closed="dialog.save = false"
></save-dialog>
</div>
<scTable ref="tableMaterial" row-key="id" stripe :hideDo="hideDo" :data="wMaterial" :height="bottomHeight">
<el-table-column type="index" width="50" />
<el-table-column label="物料名" prop="material">
<template #default="scope">{{ scope.row.material_.name }}</template>
</el-table-column>
<el-table-column label="规格" prop="material">
<template #default="scope">{{ scope.row.material_.specification }}</template>
</el-table-column>
<el-table-column label="型号" prop="material">
<template #default="scope">{{ scope.row.material_.model }}</template>
</el-table-column>
<el-table-column label="批次" prop="batch">
</el-table-column>
<el-table-column label="数量" prop="count" width="80">
</el-table-column>
</scTable>
</el-col>
</el-row>
</div>
</el-main>
</el-container>
<save-dialog v-if="dialog.save" ref="saveDialog" @success="handleSaveSuccess"
@closed="dialog.save = false"></save-dialog>
</template>
<script>
export default {
@ -157,59 +114,59 @@ export default {
},
apiObj: "",
query: {
page:1,
page_size:20,
belong_dept_name:'6车间',
date:'2023-10-24'
page: 1,
page_size: 20,
belong_dept_name: '6车间',
date: '2023-10-24'
},
activeName:'first',
activeName: 'first',
tableData: [],
selection: [],
wMaterial:[],//
processList:[],//
wMaterial: [],//
processList: [],//
state_: {
10: '创建中',
20: '已下达',
30: '生产中',
40: '已提交',
},
hideDo:true,
topHeight:null,
bottomHeight:null,
10: '创建中',
20: '已下达',
30: '生产中',
40: '已提交',
},
hideDo: true,
topHeight: null,
bottomHeight: null,
};
},
mounted(){
mounted() {
let heights = document.getElementById('topContainer').clientHeight;
console.log('heights',heights)
this.topHeight = (heights-50)+'px';
this.bottomHeight = (heights-50)+'px';
console.log('heights', heights)
this.topHeight = (heights - 50) + 'px';
this.bottomHeight = (heights - 50) + 'px';
this.getWorkSpaceMaterial();
let NowDate = new Date();
let month = NowDate.getMonth()>8?NowDate.getMonth()+1:'0'+(NowDate.getMonth()+1)
this.query.date = NowDate.getFullYear()+'-'+(NowDate.getMonth()+1)+'-'+NowDate.getDate();
let month = NowDate.getMonth() > 8 ? NowDate.getMonth() + 1 : '0' + (NowDate.getMonth() + 1)
this.query.date = NowDate.getFullYear() + '-' + (NowDate.getMonth() + 1) + '-' + NowDate.getDate();
this.apiObj = this.$API.pm.mtask.daylist;
},
methods: {
//
getWorkSpaceMaterial(){
getWorkSpaceMaterial() {
let that = this;
this.$API.wpm.wmaterial.list.req({belong_dept_name:'6车间'}).then(res=>{
this.$API.wpm.wmaterial.list.req({ belong_dept__name: '6车间' }).then(res => {
that.wMaterial = res.results;
})
},
handleClick(val){
if(val==0){
handleClick(val) {
if (val == 0) {
}else if(val==1){
} else if (val == 1) {
}
},
//
rowClick(row){
rowClick(row) {
debugger;
console.log(row)
let that = this;
this.$API.pm.mtask.list.req({start_date:row.start_date,end_date:row.end_date,mgroup__belong_dept__name:'6车间',utask:row.utask}).then(res=>{
this.$API.pm.mtask.list.req({ start_date: row.start_date, end_date: row.end_date, mgroup__belong_dept__name: '6车间', utask: row.utask }).then(res => {
// debugger;
console.log('工序进度')
console.log(res)
@ -233,9 +190,9 @@ export default {
//
table_show(row) {
this.$nextTick(() => {
this.$router.push({
this.$router.push({
name: "worktaskFlog",
query:{mtask:row.id}
query: { mtask: row.id }
});
});
@ -243,15 +200,15 @@ export default {
//
async table_del(row) {
this.$confirm(`确定删除吗?`, "提示", {
type: "warning",
type: "warning",
}).then(() => {
this.$API.pm.mtask.delete.req(row.id).then((res) => {
this.$message.success("删除成功");
return res;
}).catch((err) => {
return err;
});
}).catch(() => {});
this.$API.pm.mtask.delete.req(row.id).then((res) => {
this.$message.success("删除成功");
return res;
}).catch((err) => {
return err;
});
}).catch(() => { });
},
//
@ -268,31 +225,34 @@ export default {
resetQuery() {
this.query = {};
},
tomio(){
tomio() {
this.$router.push('/inm/mio')
},
},
};
</script>
<style scoped>
.tabsHeader{
display: inline-block;
position: absolute;
right: 20px;
margin-top: 4px;
z-index:100
}
.right-panel > * + * {
margin-left: 10px;
}
.el-main.nopadding{
padding:0 20px 0 20px
}
.tableTitle{
height: 40px;
line-height: 40px;
font-size: 14px;
box-sizing: border-box;
border-bottom: 1px solid #eeeeee;
}
.tabsHeader {
display: inline-block;
position: absolute;
right: 20px;
margin-top: 4px;
z-index: 100
}
.right-panel>*+* {
margin-left: 10px;
}
.el-main.nopadding {
padding: 0 20px 0 20px
}
.tableTitle {
height: 40px;
line-height: 40px;
font-size: 14px;
box-sizing: border-box;
border-bottom: 1px solid #eeeeee;
}
</style>

View File

@ -6,7 +6,8 @@
<el-row>
<el-col :md="12" :sm="24">
<el-form-item label="工段" prop="material">
<el-select v-model="form.mgroup" placeholder="工段" clearable style="width:100%">
<el-select v-model="form.mgroup" placeholder="工段" clearable style="width:100%"
@change="getMaterial">
<el-option v-for="item in mgroupOptions" :key="item.id" :label="item.name"
:value="item.id"></el-option>
</el-select>
@ -20,16 +21,24 @@
</el-select>
</el-form-item>
</el-col>
<el-col :md="12" :sm="24">
<!-- <el-col :md="12" :sm="24">
<el-form-item label="设备" prop="material">
<el-select v-model="form.equipment" placeholder="设备" clearable style="width:100%">
<el-option v-for="item in equipmentOptions" :key="item.id" :label="item.name"
:value="item.id"></el-option>
</el-select>
</el-form-item>
</el-col> -->
<el-col :md="12" :sm="24">
<el-form-item label="班次" prop="material">
<el-select v-model="form.shift" placeholder="班次" clearable style="width:100%">
<el-option v-for="item in shiftOptions" :key="item.id" :label="item.name"
:value="item.id"></el-option>
</el-select>
</el-form-item>
</el-col>
<el-col :md="12" :sm="24">
<el-form-item label="批次" width="100">
<el-form-item label="物料批次" width="100">
<el-input v-model="form.batch" tyle="width:100%" placeholder="请输入批次"></el-input>
</el-form-item>
</el-col>
@ -48,12 +57,18 @@
</el-form-item>
</el-col>
<el-col :md="12" :sm="24">
<el-form-item label="配料人" prop="material">
<el-form-item label="配料人">
<el-select v-model="form.handle_users" placeholder="配料人" clearable multiple style="width:100%">
<el-option v-for="item in userList" :key="item.id" :label="item.name" :value="item.id" />
</el-select>
</el-form-item>
</el-col>
<el-col :md="12" :sm="24">
<el-form-item label="操作日期" prop="handle_date">
<el-date-picker v-model="form.handle_date" type="date" placeholder="操作日期" format="YYYY-MM-DD"
value-format="YYYY-MM-DD" style="width:100%" />
</el-form-item>
</el-col>
</el-row>
</el-form>
<!-- 退火 -->
@ -462,7 +477,7 @@
</el-form>
<el-footer>
<el-button type="primary" v-loading="isSaveing" @click="submit">确定</el-button>
<el-button @click="resetForm">取消</el-button>
<el-button @click="visible = false">取消</el-button>
</el-footer>
</el-dialog>
</template>
@ -506,7 +521,7 @@ export default {
materialOptions: [],
equipmentOptions: [],
wMaterialOptions: [],
shiftOptions: ['白班', '夜班'],
shiftOptions: [],
visible: false,
isSaveing: false,
setFiltersVisible: false,
@ -516,22 +531,21 @@ export default {
};
},
mounted() {
let materialObj = this.$TOOL.data.get('MATERIAL_OBJECT');
this.materialObj = materialObj;
this.form.material_out = materialObj.id;
this.getMaterial();
//
// let materialObj = this.$TOOL.data.get('MATERIAL_OBJECT');
// this.materialObj = materialObj;
// this.form.material_out = materialObj.id;
// this.getMaterial();
this.getMgroupList();
this.getUserList();
this.getEquipment();
this.getMgroupList();
this.getShiftOptions();
let date = new Date();
let year = date.getFullYear();
let month = date.getMonth() + 1;
let day = date.getDate();
this.form.handle_date = year + '-' + month + '-' + day;
if (this.activeType == '10车间') {
this.$API.mtm.shift.list.req({ page: 0 }).then(res => {
this.shiftOptions = res;
})
if (this.mode == 'add') {
let mlogb = [];
if (this.brothersList && this.brothersList.length > 0) {
@ -548,6 +562,11 @@ export default {
this.getWorkShopMaterial();
},
methods: {
getShiftOptions() {
this.$API.mtm.shift.list.req({ page: 0 }).then(res => {
this.shiftOptions = res;
})
},
getUserList() {
let that = this;
let deptName = '';
@ -570,10 +589,10 @@ export default {
//
getMgroupList() {
let that = this;
this.$API.mtm.mgroup.list.req({ page: 0, cate: 'photon' }).then(res => {
let data = res.filter(item => {
return item.process_cate == '成型'
})
this.$API.mtm.mgroup.list.req({ page: 0, belong_dept__name: this.activeType }).then(res => {
// let data = res.filter(item => {
// return item.process_cate == ''
// })
that.mgroupOptions = res;
})
},
@ -583,13 +602,20 @@ export default {
this.equipmentOptions = res;
})
},
getMaterial() {
let obj = {};
obj.page = 0;
obj.is_hidden = false;
this.$API.mtm.material.list.req(obj).then(res => {
this.materialOptions = res;
getMaterial(mgroupId) {
this.$API.mtm.route.list.req({ page: 0, mgroup: mgroupId }).then(res => {
let mOptions = []
for (var i = 0; i < res.length; i++) {
mOptions.push({ 'id': res[i].material_out, 'name': res[i].material_out_name })
}
this.materialOptions = mOptions;
})
// let obj = {};
// obj.page = 0;
// obj.is_hidden = false;
// this.$API.mtm.material.list.req(obj).then(res => {
// this.materialOptions = res;
// })
},
//
// getMaterial(){
@ -694,6 +720,7 @@ export default {
//
setData(data) {
Object.assign(this.form, data);
this.getMaterial(this.form.mgroup)
if (this.activeType == '8车间') {
if (this.form.handle_user.indexOf(',') > -1) {
this.handle_user = this.form.handle_user.split(',')