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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@ -20,12 +20,12 @@
</el-table-column> </el-table-column>
<el-table-column label="所属部门" prop="belong_dept_name" min-width="150"></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="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"> <template #default="scope">
<span v-if="scope.row.need_enm"></span> <span v-if="scope.row.need_enm"></span>
<span v-else></span> <span v-else></span>
</template> </template>
</el-table-column> </el-table-column> -->
<el-table-column label="排序" prop="sort" min-width="80"></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="创建时间" prop="create_time" min-width="150"></el-table-column>
<el-table-column label="操作" fixed="right" align="center" width="180"> <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-option v-for="item in options" :key="item.id" :label="item.name" :value="item.id"></el-option>
</el-select> </el-select>
</el-form-item> </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-switch v-model="form.need_enm"></el-switch>
</el-form-item> </el-form-item> -->
<el-form-item label="所属部门"> <el-form-item label="所属部门">
<el-select v-model="form.belong_dept" placeholder="所属部门" clearable style="width: 100%;"> <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-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="暂无数据"> <sc-form-table ref="table" v-model="materialList" :addTemplate="addTemplate" placeholder="暂无数据">
<el-table-column prop="type" label="输入物料" min-width="120" align="center"> <el-table-column prop="type" label="输入物料" min-width="120" align="center">
<template #default="scope"> <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-option v-for="item in materials" :key="item.id" :label="item.name" :value="item.id"></el-option>
</el-select> </el-select>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column prop="type" label="输出物料" min-width="120" align="center"> <el-table-column prop="type" label="输出物料" min-width="120" align="center">
<template #default="scope"> <template #default="scope">
<el-select v-model="scope.row.material_out" filterable style="width: 100%"> <span v-if="!scope.row.isedit">{{
<el-option v-for="item in materials" :key="item" :label="item" :value="item"></el-option> 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> </el-select>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column prop="type" label="操作" min-width="80" align="center"> <el-table-column prop="type" label="操作" min-width="80" align="center">
<template #default="scope"> <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> @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="warning" size="small" 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="danger" size="small" @click="delForm(scope.row, scope.$index)">删除</el-button>
</template> </template>
</el-table-column> </el-table-column>
</sc-form-table> </sc-form-table>
@ -99,7 +105,7 @@ export default {
routes: [], routes: [],
materials: [], materials: [],
setFiltersVisible: false, setFiltersVisible: false,
materialList: [{ material_in: '', material_out: '', mgroup: '', isedit: true }], materialList: [],
addTemplate: { material_in: '', material_out: '', mgroup: '', isedit: true } addTemplate: { material_in: '', material_out: '', mgroup: '', isedit: true }
}; };
}, },
@ -142,16 +148,19 @@ export default {
let that = this; let that = this;
that.$API.mtm.route.list.req({ mgroup: id, page: 0 }).then(res => { that.$API.mtm.route.list.req({ mgroup: id, page: 0 }).then(res => {
that.routes = res; that.routes = res;
if (res.length > 0) { let mList = []
res.forEach(item => { res.forEach(item => {
let obj = {}; let obj = {};
obj.material_in = item.material_in; obj.id = item.id;
obj.material_out = item.material_out; obj.material_in = item.material_in;
obj.mgroup = id; obj.material_out = item.material_out;
obj.isedit = false; obj.material_in_name = item.material_in_name;
}) obj.material_out_name = item.material_out_name;
that.materialList.push(obj); obj.mgroup = id;
} else { } obj.isedit = false;
mList.push(obj)
})
that.materialList = mList
}); });
}, },
// //
@ -213,6 +222,7 @@ export default {
} else { } else {
obj.mgroup = that.form.id; obj.mgroup = that.form.id;
this.$API.mtm.route.create.req(obj).then(res => { this.$API.mtm.route.create.req(obj).then(res => {
that.materialList[index] = res
that.materialList[index].isedit = false; that.materialList[index].isedit = false;
}) })
} }

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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