diff --git a/lms/nladmin-ui/src/router/routers.js b/lms/nladmin-ui/src/router/routers.js index 07be08d..14830c3 100644 --- a/lms/nladmin-ui/src/router/routers.js +++ b/lms/nladmin-ui/src/router/routers.js @@ -5,6 +5,14 @@ import Layout from '../layout/index' Vue.use(Router) export const constantRouterMap = [ + + { + path: '/produceScreen/:id', + component: (resolve) => require(['@/views/wms/produceScreen/index'], resolve), + hidden: true, + meta: { title: '加工看板' } + }, + { path: '/login', meta: { title: '登录', noCache: true }, diff --git a/lms/nladmin-ui/src/views/wms/produceScreen/index.vue b/lms/nladmin-ui/src/views/wms/produceScreen/index.vue new file mode 100644 index 0000000..06aab56 --- /dev/null +++ b/lms/nladmin-ui/src/views/wms/produceScreen/index.vue @@ -0,0 +1,235 @@ +<template> + <div style="border: 1px solid #938d8d;margin-left: 10px;margin-right: 10px;"> + <el-row> + <el-col :span="18"> + <div class="grid-content bg-purple"><h2 style="margin-left: 30px;padding-top: 10px;">车间加工看板</h2></div> + <div class="grid-content bg-purple"> +    + <!-- <el-button type="primary" icon="el-icon-search" @click="queryTask(query.device_code)">搜索</el-button>--> + <el-button type="primary" icon="el-icon-thumb" @click="fresh">界面刷新</el-button> + <el-button style="margin-left: 30px;" type="warning" icon="el-icon-position" @click="callMaterial">生产叫料</el-button> + <el-button style="margin-left: 30px;" type="success" icon="el-icon-finished" @click="finish">生产完成</el-button> + <el-button style="margin-left: 30px;" type="danger" icon="el-icon-top-left" @click="materialBack">余料回库</el-button> + <el-button style="margin-left: 30px;" type="info" icon="el-icon-top-left" @click="emptyVehicleBack">空托回库</el-button> + </div> + </el-col> + + <el-col :span="6"> + <div class="grid-content bg-purple-light"> + <h2 style="text-align:right;margin-right: 140px;">{{ getTime }}</h2> + </div> + <div class="grid-content bg-purple-light"> + <p style="text-align:right;margin-right: 110px;"><b>{{ getDate }}</b></p> + </div> + + </el-col> + </el-row> + <br> + <br> + <div> + <!--表格渲染--> + <el-table + ref="table" + :data="tableData" + size="small" + style="width: 100%;" + @selection-change="handleSelectionChange" + > + <el-table-column + type="selection" + width="55"> + </el-table-column> + <el-table-column v-if="false" prop="produce_uuid" label="生产标识"/> + <el-table-column prop="produce_code" label="生产编码"/> + <el-table-column prop="produce_status_name" label="生产状态" :formatter="formatStatusName"/> + <el-table-column prop="device_code" label="生产设备"/> + <el-table-column prop="produce_qty" label="加工数量"/> + <el-table-column prop="finishproduce_qty" label="完工数量"/> + <el-table-column prop="order_seq" label="顺序号"/> + <el-table-column prop="formula" label="配方"/> + <el-table-column prop="pcsn" label="批次"/> + <el-table-column v-if="false" prop="material_code" label="物料编码"/> + <el-table-column prop="material_name" label="物料名字"/> + <el-table-column prop="start_time" label="开始生产时间"/> + </el-table> + <!--分页组件--> + + </div> + </div> + +</template> + +<script> +import crudProduceTask from '@/views/wms/produceScreen/produceScreen' +import crud from '@/mixins/crud' + +export default { + name: 'ProduceScreen', + mixins: [crud], + data() { + return { + currentDate: new Date(), + getTime: '', + getDate: '', + deviceList: [], + choice: '', + ProduceStatusList: [], + materialList: [], + tableData: [], + id: null + } + }, + created() { + this.id = this.$route.params.id + crudProduceTask.getDevice().then(res => { + this.deviceList = res + }) + crudProduceTask.getProduceStatus().then(res => { + this.ProduceStatusList = res + }) + crudProduceTask.getMaterial().then(res => { + this.materialList = res + }) + this.queryId() + }, + mounted() { + // 定时器 + const timer = setInterval(() => { + this.settime()// 你所加载数据的方法 + }, 1000) + // 销毁定时器 + this.$once('hook:beforeDestroy', () => { + clearInterval(timer) + }) + }, + methods: { + settime() { + const _this = this + const yy = new Date().getFullYear() + const mm = new Date().getMonth() + 1 + const dd = new Date().getDate() + const hh = new Date().getHours() + const mf = new Date().getMinutes() < 10 ? '0' + new Date().getMinutes() : new Date().getMinutes() + const ss = new Date().getSeconds() < 10 ? '0' + new Date().getSeconds() : new Date().getSeconds() + _this.getDate = yy + '年' + mm + '月' + dd + '日 ' + '星期' + '日一二三四五六'.charAt(new Date().getDay()) + _this.getTime = hh + ':' + mf + ':' + ss + }, + queryTask(value) { + crudProduceTask.queryTask(value).then(res => { + this.tableData = res + }) + }, + notify(title, type) { + this.$notify({ + title: title, + type: type, + duration: 2500 + }) + }, + fresh() { + this.queryId() + this.notify('操作成功', 'success') + }, + callMaterial() { + if (this.$refs.table.selection.length === 0) { + this.notify('请选中一条记录!', 'info') + return + } + const data = this.$refs.table.selection[0] + crudProduceTask.callMaterial(data).then(res => { + this.notify('操作成功', 'success') + this.queryId() + }).cache(err => { + console.log(err.response.data.message) + }) + }, + finish() { + debugger + if (this.$refs.table.selection.length === 0) { + this.notify('请选中一条记录!', 'info') + return + } + // 判断是否有完工<加工,弹出提示 + for (const i in this.$refs.table.selection) { + console.log(this.$refs.table.selection[i]) + if (this.$refs.table.selection[i].finishproduce_qty <= this.$refs.table.selection[i].produce_qty) { + this.$confirm('完工数量小于加工数量,是否继续?', '提示', { + confirmButtonText: '确定', + cancelButtonText: '取消', + type: 'warning' + }).then(() => { + const data = this.$refs.table.selection[0] + crudProduceTask.finish(data).then(res => { + this.notify('操作成功', 'success') + this.queryId() + }).cache(err => { + console.log(err.response.data.message) + }) + }).catch(() => { + /*this.$message({ + type: 'info', + message: '已取消' + })*/ + }) + } + } + }, + materialBack() { + if (this.$refs.table.selection.length === 0) { + this.notify('请选中一条记录!', 'info') + return + } + const data = this.$refs.table.selection[0] + crudProduceTask.materialBack(data).then(res => { + this.notify('操作成功', 'success') + this.queryId() + }).cache(err => { + console.log(err.response.data.message) + }) + }, + emptyVehicleBack() { + const data = { + id: this.id + } + debugger + crudProduceTask.emptyVehicleBack(data).then(res => { + this.notify('操作成功', 'success') + this.queryId() + }).cache(err => { + console.log(err.response.data.message) + }) + }, + formatStatusName(row, column) { + for (const item of this.ProduceStatusList) { + if (item.code === row.produce_status) { + return item.name + } + } + }, + changeFun(val) { + this.choice = val[0] + if (val.length > 1) { + return this.$message.error('请选择一条信息操作') + } + }, + handleSelectionChange(val) { + this.multipleSelection = val + if (val.length > 1) { + this.$refs.table.clearSelection() + this.$refs.table.toggleRowSelection(val.pop()) + } + }, + + queryId() { + const id = this.$route.params.id + crudProduceTask.queryIdDevice(id).then(res => { + this.tableData = res + }) + } + } +} +</script> + +<style rel="stylesheet/scss" lang="scss" scoped> + +</style> diff --git a/lms/nladmin-ui/src/views/wms/produceScreen/produceScreen.js b/lms/nladmin-ui/src/views/wms/produceScreen/produceScreen.js new file mode 100644 index 0000000..bd31d08 --- /dev/null +++ b/lms/nladmin-ui/src/views/wms/produceScreen/produceScreen.js @@ -0,0 +1,149 @@ +import request from '@/utils/request' + +export function add(data) { + return request({ + url: 'api/produceTask/add', + method: 'post', + data + }) +} + +export function del(ids) { + return request({ + url: 'api/produceTask/', + method: 'delete', + data: ids + }) +} + +export function edit(data) { + return request({ + url: 'api/produceTask', + method: 'put', + data + }) +} + +export function getDevice() { + return request({ + url: 'api/produceTask/getDevice', + method: 'get' + }) +} + +export function getMaterial() { + return request({ + url: 'api/produceTask/getMaterial', + method: 'get' + }) +} + +export function getProduceStatus() { + return request({ + url: 'api/produceTask/getProduceStatus', + method: 'get' + }) +} + +export function importExcel(id) { + return request({ + url: 'api/produceTask/importExcel/' + id, + method: 'get' + }) +} + +export function queryTask(device_code) { + debugger + return request({ + url: 'api/produceTask/queryTask/' + device_code, + method: 'get' + }) +} + +export function querAllTask() { + return request({ + url: 'api/produceTask/querAllTask', + method: 'get' + }) +} + +export function callMaterial(data) { + return request({ + url: 'api/produceTask/callMaterial', + method: 'put', + data + }) +} + +export function finish(data) { + return request({ + url: 'api/produceTask/finish', + method: 'put', + data + }) +} + +export function materialBack(data) { + return request({ + url: 'api/produceTask/materialBack', + method: 'put', + data + }) +} +export function emptyVehicleBack(data) { + return request({ + url: 'api/produceTask/emptyVehicleBack', + method: 'post', + data + }) +} + +export function queryIdDevice(id) { + return request({ + url: 'api/produceTask/' + id, + method: 'get' + }) +} + +export function popSeek(code) { + return request({ + url: 'api/produceTask/popSeek/' + code, + method: 'get' + }) +} + +export function queryOne() { + return request({ + url: 'api/produceTask/queryOne', + method: 'get' + }) +} + +export function saveOrder(data) { + return request({ + url: 'api/produceTask/saveOrder', + method: 'put', + data: data + }) +} + +export function forceFinish(data) { + return request({ + url: 'api/produceTask/forceFinish', + method: 'post', + data: data + }) +} +export function queryIvtByPscn(data) { + return request({ + url: 'api/produceTask/queryIvtByPscn', + method: 'post', + data: data + }) +} + +export default { + add, edit, del, getDevice, getMaterial, + getProduceStatus, importExcel, queryTask, querAllTask, + callMaterial, finish, queryIdDevice, popSeek, queryOne, saveOrder, forceFinish, materialBack, queryIvtByPscn, emptyVehicleBack +}