qianhao.xu 1fdb9d2a8b 配料
2024-04-29 18:51:15 +08:00

325 lines
8.5 KiB
Vue

<template>
<view>
<u-subsection :list="list" :current="current" @change="sectionChange" mode="subsection" fontSize="1.5rem"></u-subsection>
<view v-if="current == 0">
<view>
<u-row>
<u-col span="6">
<u-button @click="timeshow = true">选择日期</u-button>
<u-datetime-picker :show="timeshow" v-model="queryParams.workerorder_time" mode="date" @confirm="confirm" @cancel="timeshow = false"></u-datetime-picker>
</u-col>
<u-col span="6">
<view style="font-size: 1.2rem">{{ queryParams.workerorder_time | formatDate }}</view>
</u-col>
</u-row>
<u-gap height="10" bgColor="#bbb"></u-gap>
<u-row>
<u-col span="2">任务编号</u-col>
<u-col span="2">任务站点</u-col>
<u-col span="3">任务详情</u-col>
<u-col span="2" offset="2">操作</u-col>
</u-row>
<view class="area">
<u-list>
<u-list-item v-for="(item, index) in taskList" :key="index">
<view class="cartoon-list-item">
<u-row>
<u-col span="2">{{ item.id }}</u-col>
<u-col span="1"><u-tag :text="item.agvPosition" size="mini" type="primary"></u-tag></u-col>
<u-col span="3" offset="1"><u-icon name="arrow-right-double" color="#2979ff" size="50" @click="detail_item(item.taskId)"></u-icon></u-col>
<u-col span="2"><u-button type="success" text="开始" size="mini" @click="confirm_startpoint(item.agvPosition)"></u-button></u-col>
<u-col span="2"><u-button type="error" text="结束" size="mini"></u-button></u-col>
</u-row>
</view>
</u-list-item>
</u-list>
</view>
<u-loading-page :loading="loading"></u-loading-page>
<u-modal :show="show_popup" :title="title" @confirm="show_popup = false">
<view style="width: 100%; height: 150px; overflow: hidden; overflow-y: scroll">
<u-row>
<u-col span="4">工单号</u-col>
<u-col span="4">零件号</u-col>
<u-col span="2">计划数</u-col>
<u-col span="2">已配数</u-col>
</u-row>
<u-list>
<u-list-item v-for="(item, index) in taskList_son" :key="index">
<view class="cartoon-list-item">
<u-row>
<u-col span="4">{{ item.workorder }}</u-col>
<u-col span="4">{{ item.partnumber }}</u-col>
<u-col span="2">{{ item.previousNumber }}</u-col>
<u-col span="2">{{ item.previousNumbered }}</u-col>
</u-row>
</view>
</u-list-item>
</u-list>
</view>
</u-modal>
<view class="tip-box">
<u-row>
<u-col span="2">起点</u-col>
<u-col span="2">
<u--input border="surround" v-model="start_point" @change="get_fab_go_points"></u--input>
</u-col>
<u-col span="2" offset="2">终点</u-col>
<u-col span="4">
<uni-data-select v-model="end_point" :localdata="fab_go_points"></uni-data-select>
</u-col>
</u-row>
<u-row>
<u-col span="3" offset="2">
<view class="tip-icon" @click="start_agv"><span>启动</span></view>
</u-col>
<u-col span="3" offset="3">
<view class="tip-icon2" @click="stop_agv"><span style="font-size: 0.5rem">紧急终止</span></view>
</u-col>
</u-row>
<u-toast ref="uToast"></u-toast>
</view>
</view>
</view>
<view v-if="current == 1"></view>
</view>
</template>
<script>
import { getIngredientTask, getIngredientTask_son, getfabgopoints, go_workshop,emergency_stop_agv } from '@/api/materialManagement/MaterialRequsition.js';
export default {
data() {
return {
list: ['车间叫料', '空车返程'],
current: 0,
queryParams: {
workerorder_time: Number(new Date()),
pageNum: 1,
pageSize: 10,
sort: undefined,
sortType: undefined,
totalNum: 0
},
timeshow: false,
taskList: [],
show_popup: false,
title: '',
taskList_son: [],
loading: false,
start_point: '',
end_point: '',
fab_go_points: [
{ value: 0, text: '篮球' },
{ value: 1, text: '足球' },
{ value: 2, text: '游泳' }
],
reqCode: ''
};
},
watch: {},
filters: {
formatDate: function (value) {
// 创建一个 Date 对象,并使用时间戳初始化
const date = new Date(value);
// 提取年、月、日信息
const year = date.getFullYear();
const month = date.getMonth() + 1; // 月份从 0 开始,所以要加 1
const day = date.getDate();
return `${year}-${month < 10 ? '0' + month : month}-${day < 10 ? '0' + day : day}`;
}
},
mounted() {
this.getInitList();
},
methods: {
// todo 分页查询
getInitList() {
// 使用时间戳创建一个日期对象
let date = new Date(this.queryParams.workerorder_time);
// 获取上海时区的时间偏移量(以分钟为单位)
let offset = 8 * 60; // 上海时区为 UTC+8
// 计算上海时区的时间
let shanghaiTime = new Date(date.getTime() + offset * 60 * 1000);
let queryTask = { ...this.queryParams };
queryTask.datetimespan = shanghaiTime;
delete queryTask.workerorder_time;
getIngredientTask(queryTask).then((res) => {
if (res.code == 200) {
res.data.forEach((item, index) => {
item.id = index;
});
this.taskList = res.data;
}
});
},
sectionChange(index) {
this.current = index;
},
// scrolltolower() {
// this.loadmore();
// },
// loadmore() {
// for (let i = 0; i < 30; i++) {
// this.indexList.push({
// url: this.urls[uni.$u.random(0, this.urls.length - 1)]
// });
// }
// },
//todo 选择时间
confirm() {
this.timeshow = false;
this.$nextTick(() => {
this.getInitList();
});
},
//todo 查看详细信息
detail_item(taskId) {
const query = {
taskId: taskId
};
this.loading = true;
getIngredientTask_son(query).then((res) => {
if (res.code == 200) {
this.loading = false;
this.taskList_son = res.data;
this.show_popup = true;
this.title = '任务号:' + taskId;
}
});
},
//todo 确认起点
confirm_startpoint(point) {
this.start_point = point;
},
//todo获取车间点
get_fab_go_points() {
getfabgopoints().then((res) => {
if (res.code == 200) {
let array = [];
res.data.forEach((item) => {
array.push({ value: item, text: item });
});
this.fab_go_points = array;
}
});
},
//todo 开始agv
start_agv() {
if (this.start_point == '' || this.end_point == '') {
this.$refs.uToast.show({
type: 'error',
message: '起点或者终点不能为空'
});
return;
}
const query = {
start_point: this.start_point,
end_point: this.end_point
};
go_workshop(query).then((res) => {
if (res.code == 200) {
this.reqCode = res.data.data;
this.$refs.uToast.show({
type: 'error',
message: 'agv起动成功' + res.data
});
}
});
},
//todo 紧急终止agv
stop_agv() {
if(this.reqCode==""){
this.$refs.uToast.show({
type: 'error',
message: '无任务编号'
});
return
}
const query = {
reqCode: this.reqCode
};
emergency_stop_agv().then(res=>{
if(res.code==200){
this.$refs.uToast.show({
type: 'success',
message: '成功取消'+res.data
});
}
})
}
}
};
</script>
<style scoped>
.area {
height: 350px;
background-color: white;
overflow: hidden; /* 隐藏超出部分 */
overflow-y: scroll; /* 添加垂直滚动条 */
}
.cartoon-list-item {
background-color: #c8d3db; /* 设置蓝色背景 */
padding: 10px; /* 设置内边距 */
border-radius: 10px; /* 设置圆角边框 */
box-shadow: 0 4px 6px rgba(0, 0, 0, 0.1); /* 添加阴影效果 */
margin-bottom: 10px; /* 设置底部外边距 */
font-family: 'Comic Sans MS', cursive; /* 设置卡通化字体 */
color: white; /* 设置文字颜色为白色 */
}
.cartoon-list-item:hover {
transform: scale(1.05); /* 鼠标悬停时放大 */
}
.tip-box {
width: 100%;
margin-top: 20px;
background-color: #fff; /* 白色背景 */
padding: 20px;
border-radius: 10px;
box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1); /* 添加阴影 */
}
.tip-icon {
margin-top: 5px;
width: 50px;
height: 50px;
background-color: #00ff00;
border-radius: 50%;
display: flex;
justify-content: center;
align-items: center;
font-size: 24px;
color: #fff;
box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1); /* 添加阴影 */
}
.tip-icon2 {
margin-top: 5px;
width: 50px;
height: 50px;
background-color: red;
border-radius: 50%;
display: flex;
justify-content: center;
align-items: center;
font-size: 24px;
color: #fff;
box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1); /* 添加阴影 */
}
.tip-text {
margin-top: 10px;
font-size: 16px;
color: #333;
}
</style>