|
|
|
|
@ -26,132 +26,195 @@
|
|
|
|
|
</u-tabs>
|
|
|
|
|
</u-sticky>
|
|
|
|
|
<uni-notice-bar show-icon scrollable text="安全生产!有序生产!高效生产!" />
|
|
|
|
|
<el-collapse accordion v-if="current === 0">
|
|
|
|
|
<el-collapse-item v-for="(item, index) in startList" :name="item.id" :key="index">
|
|
|
|
|
<template #title>
|
|
|
|
|
<el-icon><Tickets /></el-icon>
|
|
|
|
|
<el-text size="large">{{item.productName}}</el-text> /
|
|
|
|
|
<el-text type="success">计划数:{{ item.planNumber }}</el-text>
|
|
|
|
|
</template>
|
|
|
|
|
<el-row>
|
|
|
|
|
<el-col :span="8">
|
|
|
|
|
<el-text type="success">{{item.code}}</el-text>-
|
|
|
|
|
</el-col>
|
|
|
|
|
<el-col :span="12">
|
|
|
|
|
<el-text type="success">计划开始:{{ timestampToTime(item.planStartTime) }}</el-text>
|
|
|
|
|
</el-col>
|
|
|
|
|
<el-col v-if="auth.hasPermi('mes:plan:update')" :span="4">
|
|
|
|
|
<el-button type="success" plain @click="updatePlan(item.id, item.code,'end')">完工</el-button>
|
|
|
|
|
</el-col>
|
|
|
|
|
</el-row>
|
|
|
|
|
<el-row>
|
|
|
|
|
<el-col :span="12">
|
|
|
|
|
<el-text type="warning">计划结束:{{ timestampToTime(item.planEndTime) }}</el-text>
|
|
|
|
|
</el-col>
|
|
|
|
|
<el-col :span="8">
|
|
|
|
|
<el-text type="warning">入库数:{{ item.finishNumber }}</el-text>
|
|
|
|
|
</el-col>
|
|
|
|
|
<el-col v-if="auth.hasPermi('mes:plan:update')" :span="4">
|
|
|
|
|
<el-button type="warning" plain @click="updatePlan(item.id,item.code,'pause')">暂停</el-button>
|
|
|
|
|
</el-col>
|
|
|
|
|
</el-row>
|
|
|
|
|
<el-row>
|
|
|
|
|
<el-col :span="20">
|
|
|
|
|
<el-text>备注:{{ item.remark }}</el-text>
|
|
|
|
|
</el-col>
|
|
|
|
|
<el-col :span="4">
|
|
|
|
|
<el-button type="info" plain @click="planProgress(item)">进度</el-button>
|
|
|
|
|
</el-col>
|
|
|
|
|
</el-row>
|
|
|
|
|
</el-collapse-item>
|
|
|
|
|
</el-collapse>
|
|
|
|
|
<!-- 开工中-->
|
|
|
|
|
<view v-if="current === 0" class="container" >
|
|
|
|
|
<u-list>
|
|
|
|
|
<u-list-item
|
|
|
|
|
v-for="item in startList"
|
|
|
|
|
:key="item"
|
|
|
|
|
>
|
|
|
|
|
<view class="content">
|
|
|
|
|
<view class="header">
|
|
|
|
|
<view class="title">
|
|
|
|
|
<u-image
|
|
|
|
|
src="@/static/images/icon/product.png"
|
|
|
|
|
width="40rpx"
|
|
|
|
|
height="40rpx"
|
|
|
|
|
/>
|
|
|
|
|
<text class="name">
|
|
|
|
|
{{ item.productName }}
|
|
|
|
|
</text>
|
|
|
|
|
</view>
|
|
|
|
|
<el-text type="success">{{item.code}}</el-text>
|
|
|
|
|
</view>
|
|
|
|
|
<view class="flex-box">
|
|
|
|
|
<el-text>计划数:{{ item.planNumber }}</el-text>
|
|
|
|
|
<el-text>入库数:{{ item.finishNumber }}</el-text>
|
|
|
|
|
</view>
|
|
|
|
|
<view class="flex-box">
|
|
|
|
|
<el-text>计划开始时间:{{ timestampToTime(item.planStartTime) }}</el-text>
|
|
|
|
|
<el-text>计划结束时间:{{ timestampToTime(item.planEndTime) }}</el-text>
|
|
|
|
|
</view>
|
|
|
|
|
<view class="text">
|
|
|
|
|
<el-text>备注:</el-text>
|
|
|
|
|
</view>
|
|
|
|
|
<view class="remark">
|
|
|
|
|
<el-text>{{ item.remark }}</el-text>
|
|
|
|
|
</view>
|
|
|
|
|
<view class="u-m-t-30 u-m-b-30"><u-line/></view>
|
|
|
|
|
<view class="u-flex justify-end">
|
|
|
|
|
<el-col v-if="auth.hasPermi('mes:plan:update')" :span="4" class="u-m-r-30">
|
|
|
|
|
<u-button type="success" plain @click="updatePlan(item.id, item.code,'end')">完工</u-button>
|
|
|
|
|
</el-col>
|
|
|
|
|
<el-col v-if="auth.hasPermi('mes:plan:update')" :span="4" class="u-m-r-30">
|
|
|
|
|
<u-button type="warning" plain @click="updatePlan(item.id,item.code,'pause')">暂停</u-button>
|
|
|
|
|
</el-col>
|
|
|
|
|
<el-col :span="4">
|
|
|
|
|
<u-button type="info" plain @click="planProgress(item)">进度</u-button>
|
|
|
|
|
</el-col>
|
|
|
|
|
</view>
|
|
|
|
|
</view>
|
|
|
|
|
</u-list-item>
|
|
|
|
|
</u-list>
|
|
|
|
|
</view>
|
|
|
|
|
<!-- 派工中-->
|
|
|
|
|
<el-collapse accordion v-if="current === 1">
|
|
|
|
|
<el-collapse-item v-for="(item, index) in paigongList" :name="item.id" :key="index">
|
|
|
|
|
<template #title>
|
|
|
|
|
<el-icon><Tickets /></el-icon>
|
|
|
|
|
<el-text size="large">{{item.productName}}</el-text> /
|
|
|
|
|
<el-text type="success">计划数:{{ item.planNumber }}</el-text>
|
|
|
|
|
</template>
|
|
|
|
|
<el-row>
|
|
|
|
|
<el-col :span="8">
|
|
|
|
|
<el-text type="success">{{item.code}}</el-text>-
|
|
|
|
|
</el-col>
|
|
|
|
|
<el-col :span="12">
|
|
|
|
|
<el-text type="success">计划开始:{{ timestampToTime(item.planStartTime) }}</el-text>
|
|
|
|
|
</el-col>
|
|
|
|
|
<el-col v-if="auth.hasPermi('mes:plan:update')" :span="4">
|
|
|
|
|
<el-button type="info" plain @click="updatePlan(item.id,item.code, 'start')">开工</el-button>
|
|
|
|
|
</el-col>
|
|
|
|
|
</el-row>
|
|
|
|
|
<el-row>
|
|
|
|
|
<el-col :span="12">
|
|
|
|
|
<el-text type="warning">计划结束:{{ timestampToTime(item.planEndTime) }}</el-text>
|
|
|
|
|
</el-col>
|
|
|
|
|
</el-row>
|
|
|
|
|
<el-text>备注:{{ item.remark }}</el-text>
|
|
|
|
|
</el-collapse-item>
|
|
|
|
|
</el-collapse>
|
|
|
|
|
<view v-if="current === 1" class="container" >
|
|
|
|
|
<u-list>
|
|
|
|
|
<u-list-item
|
|
|
|
|
v-for="item in dispatch"
|
|
|
|
|
:key="item"
|
|
|
|
|
>
|
|
|
|
|
<view class="content">
|
|
|
|
|
<view class="header">
|
|
|
|
|
<view class="title">
|
|
|
|
|
<u-image
|
|
|
|
|
src="@/static/images/icon/product.png"
|
|
|
|
|
width="40rpx"
|
|
|
|
|
height="40rpx"
|
|
|
|
|
/>
|
|
|
|
|
<text class="name">
|
|
|
|
|
{{ item.productName }}
|
|
|
|
|
</text>
|
|
|
|
|
</view>
|
|
|
|
|
<el-text type="success">{{item.code}}</el-text>
|
|
|
|
|
</view>
|
|
|
|
|
<view class="flex-box">
|
|
|
|
|
<el-text>计划数:{{ item.planNumber }}</el-text>
|
|
|
|
|
<el-text>入库数:{{ item.finishNumber }}</el-text>
|
|
|
|
|
</view>
|
|
|
|
|
<view class="flex-box">
|
|
|
|
|
<el-text>计划开始时间:{{ timestampToTime(item.planStartTime) }}</el-text>
|
|
|
|
|
<el-text>计划结束时间:{{ timestampToTime(item.planEndTime) }}</el-text>
|
|
|
|
|
</view>
|
|
|
|
|
<view class="text">
|
|
|
|
|
<el-text>备注:</el-text>
|
|
|
|
|
</view>
|
|
|
|
|
<view class="remark">
|
|
|
|
|
<el-text>{{ item.remark }}</el-text>
|
|
|
|
|
</view>
|
|
|
|
|
<view class="u-m-t-30 u-m-b-30"><u-line/></view>
|
|
|
|
|
<view class="u-flex justify-end">
|
|
|
|
|
<el-col v-if="auth.hasPermi('mes:plan:update')" :span="4">
|
|
|
|
|
<u-button type="info" plain @click="updatePlan(item.id,item.code, 'start')">开工</u-button>
|
|
|
|
|
</el-col>
|
|
|
|
|
</view>
|
|
|
|
|
</view>
|
|
|
|
|
</u-list-item>
|
|
|
|
|
</u-list>
|
|
|
|
|
</view>
|
|
|
|
|
<!-- 计划中-->
|
|
|
|
|
<el-collapse accordion v-if="current === 2">
|
|
|
|
|
<el-collapse-item v-for="(item, index) in planList" :name="item.id" :key="index">
|
|
|
|
|
<template #title>
|
|
|
|
|
<el-icon><Tickets /></el-icon>
|
|
|
|
|
<el-text size="large">{{item.productName}}</el-text> /
|
|
|
|
|
<el-text type="success">计划数:{{ item.planNumber }}</el-text>
|
|
|
|
|
</template>
|
|
|
|
|
<el-row>
|
|
|
|
|
<el-col :span="8">
|
|
|
|
|
<el-text type="success">{{item.code}}</el-text>-
|
|
|
|
|
</el-col>
|
|
|
|
|
<el-col :span="12">
|
|
|
|
|
<el-text type="success">计划开始:{{ timestampToTime(item.planStartTime) }}</el-text>
|
|
|
|
|
</el-col>
|
|
|
|
|
<el-col v-if="auth.hasPermi('mes:plan:update')" :span="4">
|
|
|
|
|
<el-button type="primary" plain>派工</el-button>
|
|
|
|
|
</el-col>
|
|
|
|
|
</el-row>
|
|
|
|
|
<el-row>
|
|
|
|
|
<el-col :span="12">
|
|
|
|
|
<el-text type="warning">计划结束:{{ timestampToTime(item.planEndTime) }}</el-text>
|
|
|
|
|
</el-col>
|
|
|
|
|
</el-row>
|
|
|
|
|
<el-text>备注:{{ item.remark }}</el-text>
|
|
|
|
|
</el-collapse-item>
|
|
|
|
|
</el-collapse>
|
|
|
|
|
<view v-if="current === 2" class="container" >
|
|
|
|
|
<u-list>
|
|
|
|
|
<u-list-item
|
|
|
|
|
v-for="item in planList"
|
|
|
|
|
:key="item"
|
|
|
|
|
>
|
|
|
|
|
<view class="content">
|
|
|
|
|
<view class="header">
|
|
|
|
|
<view class="title">
|
|
|
|
|
<u-image
|
|
|
|
|
src="@/static/images/icon/product.png"
|
|
|
|
|
width="40rpx"
|
|
|
|
|
height="40rpx"
|
|
|
|
|
/>
|
|
|
|
|
<text class="name">
|
|
|
|
|
{{ item.productName }}
|
|
|
|
|
</text>
|
|
|
|
|
</view>
|
|
|
|
|
<el-text type="success">{{item.code}}</el-text>
|
|
|
|
|
</view>
|
|
|
|
|
<view class="flex-box">
|
|
|
|
|
<el-text>计划数:{{ item.planNumber }}</el-text>
|
|
|
|
|
<el-text>入库数:{{ item.finishNumber }}</el-text>
|
|
|
|
|
</view>
|
|
|
|
|
<view class="flex-box">
|
|
|
|
|
<el-text>计划开始时间:{{ timestampToTime(item.planStartTime) }}</el-text>
|
|
|
|
|
<el-text>计划结束时间:{{ timestampToTime(item.planEndTime) }}</el-text>
|
|
|
|
|
</view>
|
|
|
|
|
<view class="text">
|
|
|
|
|
<el-text>备注:</el-text>
|
|
|
|
|
</view>
|
|
|
|
|
<view class="remark">
|
|
|
|
|
<el-text>{{ item.remark }}</el-text>
|
|
|
|
|
</view>
|
|
|
|
|
<view class="u-m-t-30 u-m-b-30"><u-line/></view>
|
|
|
|
|
<view class="u-flex justify-end">
|
|
|
|
|
<el-col v-if="auth.hasPermi('mes:plan:update')" :span="4">
|
|
|
|
|
<u-button type="primary" plain>派工</u-button>
|
|
|
|
|
</el-col>
|
|
|
|
|
</view>
|
|
|
|
|
</view>
|
|
|
|
|
</u-list-item>
|
|
|
|
|
</u-list>
|
|
|
|
|
</view>
|
|
|
|
|
<!-- 暂停中 -->
|
|
|
|
|
<el-collapse accordion v-if="current === 3">
|
|
|
|
|
<el-collapse-item v-for="(item, index) in pauseList" :name="item.id" :key="index">
|
|
|
|
|
<template #title>
|
|
|
|
|
<el-icon><Tickets /></el-icon>
|
|
|
|
|
<el-text size="large">{{item.productName}}</el-text> /
|
|
|
|
|
<el-text type="success">计划数:{{ item.planNumber }}</el-text>
|
|
|
|
|
</template>
|
|
|
|
|
<el-row>
|
|
|
|
|
<el-col :span="8">
|
|
|
|
|
<el-text type="success">{{item.code}}</el-text>-
|
|
|
|
|
</el-col>
|
|
|
|
|
<el-col :span="12">
|
|
|
|
|
<el-text type="success">计划开始:{{ timestampToTime(item.planStartTime) }}</el-text>
|
|
|
|
|
</el-col>
|
|
|
|
|
<el-col v-if="auth.hasPermi('mes:plan:update')" :span="4">
|
|
|
|
|
<el-button type="success" plain @click="updatePlan(item.id,item.code, 'end')">完工</el-button>
|
|
|
|
|
</el-col>
|
|
|
|
|
</el-row>
|
|
|
|
|
<el-row>
|
|
|
|
|
<el-col :span="12">
|
|
|
|
|
<el-text type="warning">计划结束:{{ timestampToTime(item.planEndTime) }}</el-text>
|
|
|
|
|
</el-col>
|
|
|
|
|
<el-col :span="8">
|
|
|
|
|
<el-text type="warning">入库数:{{ item.finishNumber }}</el-text>
|
|
|
|
|
</el-col>
|
|
|
|
|
<el-col v-if="auth.hasPermi('mes:plan:update')" :span="4">
|
|
|
|
|
<el-button type="info" plain @click="updatePlan(item.id, item.code,'start')">开工</el-button>
|
|
|
|
|
</el-col>
|
|
|
|
|
</el-row>
|
|
|
|
|
<el-text>备注:{{ item.remark }}</el-text>
|
|
|
|
|
</el-collapse-item>
|
|
|
|
|
</el-collapse>
|
|
|
|
|
<view v-if="current === 3" class="container" >
|
|
|
|
|
<u-list>
|
|
|
|
|
<u-list-item
|
|
|
|
|
v-for="item in pauseList"
|
|
|
|
|
:key="item"
|
|
|
|
|
>
|
|
|
|
|
<view class="content">
|
|
|
|
|
<view class="header">
|
|
|
|
|
<view class="title">
|
|
|
|
|
<u-image
|
|
|
|
|
src="@/static/images/icon/product.png"
|
|
|
|
|
width="40rpx"
|
|
|
|
|
height="40rpx"
|
|
|
|
|
/>
|
|
|
|
|
<text class="name">
|
|
|
|
|
{{ item.productName }}
|
|
|
|
|
</text>
|
|
|
|
|
</view>
|
|
|
|
|
<el-text type="success">{{item.code}}</el-text>
|
|
|
|
|
</view>
|
|
|
|
|
<view class="flex-box">
|
|
|
|
|
<el-text>计划数:{{ item.planNumber }}</el-text>
|
|
|
|
|
<el-text>入库数:{{ item.finishNumber }}</el-text>
|
|
|
|
|
</view>
|
|
|
|
|
<view class="flex-box">
|
|
|
|
|
<el-text>计划开始时间:{{ timestampToTime(item.planStartTime) }}</el-text>
|
|
|
|
|
<el-text>计划结束时间:{{ timestampToTime(item.planEndTime) }}</el-text>
|
|
|
|
|
</view>
|
|
|
|
|
<view class="text">
|
|
|
|
|
<el-text>备注:</el-text>
|
|
|
|
|
</view>
|
|
|
|
|
<view class="remark">
|
|
|
|
|
<el-text>{{ item.remark }}</el-text>
|
|
|
|
|
</view>
|
|
|
|
|
<view class="u-m-t-30 u-m-b-30"><u-line/></view>
|
|
|
|
|
<view class="u-flex justify-end">
|
|
|
|
|
<el-col v-if="auth.hasPermi('mes:plan:update')" :span="4" class="u-m-r-30">
|
|
|
|
|
<u-button type="info" plain @click="updatePlan(item.id, item.code,'start')">开工</u-button>
|
|
|
|
|
</el-col>
|
|
|
|
|
<el-col v-if="auth.hasPermi('mes:plan:update')" :span="4">
|
|
|
|
|
<u-button type="success" plain @click="updatePlan(item.id,item.code, 'end')">完工</u-button>
|
|
|
|
|
</el-col>
|
|
|
|
|
</view>
|
|
|
|
|
</view>
|
|
|
|
|
</u-list-item>
|
|
|
|
|
</u-list>
|
|
|
|
|
</view>
|
|
|
|
|
<!-- <view class="charts-box">-->
|
|
|
|
|
<!-- <qiun-data-charts :chartData="chartData" type="column"/>-->
|
|
|
|
|
<!-- </view>-->
|
|
|
|
|
@ -160,17 +223,15 @@
|
|
|
|
|
|
|
|
|
|
<script setup>
|
|
|
|
|
import { ref, onMounted } from 'vue';
|
|
|
|
|
import useUserStore from '@/store/modules/user'
|
|
|
|
|
import { updateStatus, getByStatus } from "@/api/mes/plan"
|
|
|
|
|
import { timestampToTime } from "@/utils/dateUtil";
|
|
|
|
|
import { Tickets } from "@element-plus/icons-vue";
|
|
|
|
|
import modal from "@/plugins/modal";
|
|
|
|
|
import tab from "@/plugins/tab";
|
|
|
|
|
import {showConfirm} from "@/utils/common";
|
|
|
|
|
import { showConfirm } from "@/utils/common";
|
|
|
|
|
import auth from "@/plugins/auth";
|
|
|
|
|
const userStore = useUserStore()
|
|
|
|
|
|
|
|
|
|
const startList = ref([]);
|
|
|
|
|
const paigongList = ref([]);
|
|
|
|
|
const dispatch = ref([]);
|
|
|
|
|
const pauseList = ref([]);
|
|
|
|
|
const planList = ref([]);
|
|
|
|
|
const chartData = ref({});
|
|
|
|
|
@ -198,6 +259,7 @@ onMounted(() => {
|
|
|
|
|
getServerData()
|
|
|
|
|
getPlanList()
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
function getServerData() {
|
|
|
|
|
// 模拟从服务器获取数据时的延时
|
|
|
|
|
setTimeout(() => {
|
|
|
|
|
@ -223,7 +285,7 @@ function getPlanList() {
|
|
|
|
|
planList.value = response.data
|
|
|
|
|
})
|
|
|
|
|
getByStatus(1).then(response => {
|
|
|
|
|
paigongList.value = response.data
|
|
|
|
|
dispatch.value = response.data
|
|
|
|
|
})
|
|
|
|
|
getByStatus(2).then(response => {
|
|
|
|
|
startList.value = response.data
|
|
|
|
|
@ -244,7 +306,6 @@ function updatePlan(id, planCode, type){
|
|
|
|
|
if (res.confirm) {
|
|
|
|
|
const data = {'id':id, 'code':type}
|
|
|
|
|
updateStatus(data).then(response => {
|
|
|
|
|
console.log(response)
|
|
|
|
|
getPlanList()
|
|
|
|
|
})
|
|
|
|
|
modal.msgSuccess("操作成功")
|
|
|
|
|
@ -275,4 +336,52 @@ function planProgress(plan){
|
|
|
|
|
width: 100%;
|
|
|
|
|
height: 300px;
|
|
|
|
|
}
|
|
|
|
|
.container {
|
|
|
|
|
background-color: #f1f1f1;
|
|
|
|
|
padding: 0 20rpx 20rpx 20rpx;
|
|
|
|
|
.content {
|
|
|
|
|
margin: 20rpx 0;
|
|
|
|
|
padding: 20rpx;
|
|
|
|
|
background-color: #ffffff;
|
|
|
|
|
border-radius: 10rpx;
|
|
|
|
|
.header {
|
|
|
|
|
display: flex;
|
|
|
|
|
align-items: center;
|
|
|
|
|
justify-content: space-between;
|
|
|
|
|
.title {
|
|
|
|
|
display: flex;
|
|
|
|
|
align-items: center;
|
|
|
|
|
.name {
|
|
|
|
|
font-size: 28rpx;
|
|
|
|
|
font-weight: bold;
|
|
|
|
|
margin-left: 16rpx;
|
|
|
|
|
color: #333333;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
.flex-box {
|
|
|
|
|
margin-top: 20rpx;
|
|
|
|
|
display: flex;
|
|
|
|
|
align-items: center;
|
|
|
|
|
justify-content: space-between;
|
|
|
|
|
font-size: 24rpx;
|
|
|
|
|
}
|
|
|
|
|
.text {
|
|
|
|
|
margin-top: 20rpx;
|
|
|
|
|
}
|
|
|
|
|
.remark {
|
|
|
|
|
margin-top: 20rpx;
|
|
|
|
|
display: flex;
|
|
|
|
|
align-items: center;
|
|
|
|
|
padding: 20rpx;
|
|
|
|
|
background-color: #f5f7f9;
|
|
|
|
|
border-radius: 10rpx;
|
|
|
|
|
font-size: 24rpx;
|
|
|
|
|
color: #555555;
|
|
|
|
|
}
|
|
|
|
|
.u-button {
|
|
|
|
|
height: 60rpx
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
</style>
|
|
|
|
|
|