生产进度
This commit is contained in:
parent
f132d277f6
commit
d57ac2413e
@ -11,16 +11,18 @@
|
|||||||
<script lang="ts" setup>
|
<script lang="ts" setup>
|
||||||
import { ref, onMounted, toRefs, computed } from 'vue'
|
import { ref, onMounted, toRefs, computed } from 'vue'
|
||||||
import * as UserApi from '@/api/system/user'
|
import * as UserApi from '@/api/system/user'
|
||||||
|
import { number } from 'vue-types'
|
||||||
|
|
||||||
const props = defineProps({
|
const props = defineProps({
|
||||||
modelValue: {
|
modelValue: {
|
||||||
type: [Number, String],
|
type: [Number, String],
|
||||||
required: true // 如果是必需的属性,可以设置为true
|
required: true // 如果是必需的属性,可以设置为true
|
||||||
}
|
},
|
||||||
|
pageSize:number
|
||||||
})
|
})
|
||||||
const userParams = {
|
const userParams = {
|
||||||
pageNo: 1,
|
pageNo: 1,
|
||||||
pageSize: 10,
|
pageSize: props.pageSize?props.pageSize:10,
|
||||||
status: 0, // 根据实际情况调整参数
|
status: 0, // 根据实际情况调整参数
|
||||||
username: undefined,
|
username: undefined,
|
||||||
nickname: undefined,
|
nickname: undefined,
|
||||||
|
@ -61,7 +61,9 @@
|
|||||||
@keyup.enter="handleQuery"
|
@keyup.enter="handleQuery"
|
||||||
class="!w-240px"
|
class="!w-240px"
|
||||||
/> -->
|
/> -->
|
||||||
<UserSelect v-model="queryParams.owner" @update:newValue="handleSelectedUser1" class="!w-265px"/>
|
<el-select class="!w-240px" v-model="queryParams.owner" filterable placeholder="请选择任务责任人" >
|
||||||
|
<el-option v-for="item in userList" :key="item.id" :label="item.username + ' ' + item.nickname" :value="item.id" />
|
||||||
|
</el-select>
|
||||||
|
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item>
|
<el-form-item>
|
||||||
@ -83,50 +85,555 @@
|
|||||||
|
|
||||||
<!-- 列表 -->
|
<!-- 列表 -->
|
||||||
<ContentWrap>
|
<ContentWrap>
|
||||||
|
<el-tabs v-model="activeName" class="demo-tabs" @tab-click="handleClick">
|
||||||
<el-table v-loading="loading" :data="list" :show-overflow-tooltip="true" border class="hl-table" :row-class-name="tableRowClassName">
|
<el-tab-pane label="加工件" name="first">{{ }}</el-tab-pane>
|
||||||
<el-table-column type="index" min-width="60" fixed label="序号" align="center" />
|
<el-tab-pane label="标准件" name="second">{{ }}</el-tab-pane>
|
||||||
|
</el-tabs>
|
||||||
|
<el-table style="height: 500px;" v-loading="loading" :data="list" :show-overflow-tooltip="true" border class="hl-table" :row-class-name="tableRowClassName" :cell-class-name="cellClassName">
|
||||||
|
<el-table-column type="index" min-width="60" label="序号" align="center" />
|
||||||
<el-table-column label="项目编号" align="center" prop="projectCode" width="240px" />
|
<el-table-column label="零件名称" align="center" prop="materialName" min-width="180"/>
|
||||||
<el-table-column label="项目名称" align="center" prop="projectName" width="240px"/>
|
<el-table-column label="材质" prop="compositionName" min-width="180"/>
|
||||||
<el-table-column label="报工类型" align="center" prop="planType" width="160px">
|
<el-table-column label="规格型号" prop="spec" min-width="180"/>
|
||||||
<template #default="scope">
|
<el-table-column label="数量" prop="amount" min-width="145"/>
|
||||||
{{scope.row.type=='ASSEMBLE'?"装配任务派工单":"生产任务派工单"}}
|
<el-table-column v-if="activeIndex == 'first'" label="下料" min-width="145">
|
||||||
</template>
|
<template #default="{ row }">
|
||||||
|
<template v-for="(item, index) in row.taskDispatchDetailDOList" :key="index">
|
||||||
|
<div v-if="item.procedureName === '下料'" class="custom-cell">
|
||||||
|
<!-- 第一行 -->
|
||||||
|
<div class="first-row">
|
||||||
|
<span class="left">{{ item.sort }}</span>
|
||||||
|
<span class="right">
|
||||||
|
<img
|
||||||
|
v-if="item.checkYn === 1"
|
||||||
|
src="/src/assets/imgs/checkStatus.png"
|
||||||
|
class="status-icon"
|
||||||
|
/>
|
||||||
|
</span>
|
||||||
|
</div>
|
||||||
|
<!-- 第二行 -->
|
||||||
|
<div class="second-row">
|
||||||
|
<span class="left">{{ item.reportTime }}</span>
|
||||||
|
<span class="right">
|
||||||
|
<img
|
||||||
|
v-if="item.isOutsourcing === 'Y'"
|
||||||
|
src="/src/assets/imgs/out.png"
|
||||||
|
class="status-icon"
|
||||||
|
/>
|
||||||
|
</span>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
<el-table-column v-if="activeIndex == 'first'" label="电焊" min-width="145">
|
||||||
|
<template #default="{ row }">
|
||||||
|
<template v-for="(item, index) in row.taskDispatchDetailDOList" :key="index">
|
||||||
|
<div v-if="item.procedureName === '电焊'" class="custom-cell">
|
||||||
|
<!-- 第一行 -->
|
||||||
|
<div class="first-row">
|
||||||
|
<span >
|
||||||
|
<span v-if="!item.reportTime">{{ item.sort }}</span> <!-- 仅当 reportTime 为空时显示 sort -->
|
||||||
|
</span>
|
||||||
|
<span>
|
||||||
|
<!-- isOutsourcing 图片 -->
|
||||||
|
<img
|
||||||
|
v-if="item.isOutsourcing === 'Y'"
|
||||||
|
src="/src/assets/imgs/out.png"
|
||||||
|
class="status-icon"
|
||||||
|
/>
|
||||||
|
<!-- checkYn 图片 -->
|
||||||
|
<img
|
||||||
|
v-if="item.checkYn === 1"
|
||||||
|
src="/src/assets/imgs/checkstatusss.png"
|
||||||
|
class="status-icon"
|
||||||
|
/>
|
||||||
|
</span>
|
||||||
|
</div>
|
||||||
|
<!-- 第二行(仅当 reportTime 有值时显示) -->
|
||||||
|
<div v-if="item.reportTime" class="second-row">
|
||||||
|
<span class="left">{{ formatLongToDate(item.reportTime) }}</span>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
<el-table-column v-if="activeIndex == 'first'" label="编程" min-width="145">
|
||||||
|
<template #default="{ row }">
|
||||||
|
<template v-for="(item, index) in row.taskDispatchDetailDOList" :key="index">
|
||||||
|
<div v-if="item.procedureName === '编程'" class="custom-cell">
|
||||||
|
<!-- 第一行 -->
|
||||||
|
<div class="first-row">
|
||||||
|
<span >
|
||||||
|
<span v-if="!item.reportTime">{{ item.sort }}</span> <!-- 仅当 reportTime 为空时显示 sort -->
|
||||||
|
</span>
|
||||||
|
<span>
|
||||||
|
<!-- isOutsourcing 图片 -->
|
||||||
|
<img
|
||||||
|
v-if="item.isOutsourcing === 'Y'"
|
||||||
|
src="/src/assets/imgs/out.png"
|
||||||
|
class="status-icon"
|
||||||
|
/>
|
||||||
|
<!-- checkYn 图片 -->
|
||||||
|
<img
|
||||||
|
v-if="item.checkYn === 1"
|
||||||
|
src="/src/assets/imgs/checkstatusss.png"
|
||||||
|
class="status-icon"
|
||||||
|
/>
|
||||||
|
</span>
|
||||||
|
</div>
|
||||||
|
<!-- 第二行(仅当 reportTime 有值时显示) -->
|
||||||
|
<div v-if="item.reportTime" class="second-row">
|
||||||
|
<span class="left">{{ formatLongToDate(item.reportTime) }}</span>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
<el-table-column v-if="activeIndex == 'first'" label="开粗" min-width="145">
|
||||||
|
<template #default="{ row }">
|
||||||
|
<template v-for="(item, index) in row.taskDispatchDetailDOList" :key="index">
|
||||||
|
<div v-if="item.procedureName === '开粗'" class="custom-cell">
|
||||||
|
<!-- 第一行 -->
|
||||||
|
<div class="first-row">
|
||||||
|
<span >
|
||||||
|
<span v-if="!item.reportTime">{{ item.sort }}</span> <!-- 仅当 reportTime 为空时显示 sort -->
|
||||||
|
</span>
|
||||||
|
<span>
|
||||||
|
<!-- isOutsourcing 图片 -->
|
||||||
|
<img
|
||||||
|
v-if="item.isOutsourcing === 'Y'"
|
||||||
|
src="/src/assets/imgs/out.png"
|
||||||
|
class="status-icon"
|
||||||
|
/>
|
||||||
|
<!-- checkYn 图片 -->
|
||||||
|
<img
|
||||||
|
v-if="item.checkYn === 1"
|
||||||
|
src="/src/assets/imgs/checkstatusss.png"
|
||||||
|
class="status-icon"
|
||||||
|
/>
|
||||||
|
</span>
|
||||||
|
</div>
|
||||||
|
<!-- 第二行(仅当 reportTime 有值时显示) -->
|
||||||
|
<div v-if="item.reportTime" class="second-row">
|
||||||
|
<span class="left">{{ formatLongToDate(item.reportTime) }}</span>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
<el-table-column v-if="activeIndex == 'first'" label="铣床" min-width="145">
|
||||||
|
<template #default="{ row }">
|
||||||
|
<template v-for="(item, index) in row.taskDispatchDetailDOList" :key="index">
|
||||||
|
<div v-if="item.procedureName === '铣床'" class="custom-cell">
|
||||||
|
<!-- 第一行 -->
|
||||||
|
<div class="first-row">
|
||||||
|
<span >
|
||||||
|
<span v-if="!item.reportTime">{{ item.sort }}</span> <!-- 仅当 reportTime 为空时显示 sort -->
|
||||||
|
</span>
|
||||||
|
<span>
|
||||||
|
<!-- isOutsourcing 图片 -->
|
||||||
|
<img
|
||||||
|
v-if="item.isOutsourcing === 'Y'"
|
||||||
|
src="/src/assets/imgs/out.png"
|
||||||
|
class="status-icon"
|
||||||
|
/>
|
||||||
|
<!-- checkYn 图片 -->
|
||||||
|
<img
|
||||||
|
v-if="item.checkYn === 1"
|
||||||
|
src="/src/assets/imgs/checkstatusss.png"
|
||||||
|
class="status-icon"
|
||||||
|
/>
|
||||||
|
</span>
|
||||||
|
</div>
|
||||||
|
<!-- 第二行(仅当 reportTime 有值时显示) -->
|
||||||
|
<div v-if="item.reportTime" class="second-row">
|
||||||
|
<span class="left">{{ formatLongToDate(item.reportTime) }}</span>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
<el-table-column v-if="activeIndex == 'first'" label="车床" min-width="145">
|
||||||
|
<template #default="{ row }">
|
||||||
|
<template v-for="(item, index) in row.taskDispatchDetailDOList" :key="index">
|
||||||
|
<div v-if="item.procedureName === '车床'" class="custom-cell">
|
||||||
|
<!-- 第一行 -->
|
||||||
|
<div class="first-row">
|
||||||
|
<span >
|
||||||
|
<span v-if="!item.reportTime">{{ item.sort }}</span> <!-- 仅当 reportTime 为空时显示 sort -->
|
||||||
|
</span>
|
||||||
|
<span>
|
||||||
|
<!-- isOutsourcing 图片 -->
|
||||||
|
<img
|
||||||
|
v-if="item.isOutsourcing === 'Y'"
|
||||||
|
src="/src/assets/imgs/out.png"
|
||||||
|
class="status-icon"
|
||||||
|
/>
|
||||||
|
<!-- checkYn 图片 -->
|
||||||
|
<img
|
||||||
|
v-if="item.checkYn === 1"
|
||||||
|
src="/src/assets/imgs/checkstatusss.png"
|
||||||
|
class="status-icon"
|
||||||
|
/>
|
||||||
|
</span>
|
||||||
|
</div>
|
||||||
|
<!-- 第二行(仅当 reportTime 有值时显示) -->
|
||||||
|
<div v-if="item.reportTime" class="second-row">
|
||||||
|
<span class="left">{{ formatLongToDate(item.reportTime) }}</span>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
<el-table-column v-if="activeIndex == 'first'" label="热处理" min-width="145">
|
||||||
|
<template #default="{ row }">
|
||||||
|
<template v-for="(item, index) in row.taskDispatchDetailDOList" :key="index">
|
||||||
|
<div v-if="item.procedureName === '热处理'" class="custom-cell">
|
||||||
|
<!-- 第一行 -->
|
||||||
|
<div class="first-row">
|
||||||
|
<span >
|
||||||
|
<span v-if="!item.reportTime">{{ item.sort }}</span> <!-- 仅当 reportTime 为空时显示 sort -->
|
||||||
|
</span>
|
||||||
|
<span>
|
||||||
|
<!-- isOutsourcing 图片 -->
|
||||||
|
<img
|
||||||
|
v-if="item.isOutsourcing === 'Y'"
|
||||||
|
src="/src/assets/imgs/out.png"
|
||||||
|
class="status-icon"
|
||||||
|
/>
|
||||||
|
<!-- checkYn 图片 -->
|
||||||
|
<img
|
||||||
|
v-if="item.checkYn === 1"
|
||||||
|
src="/src/assets/imgs/checkstatusss.png"
|
||||||
|
class="status-icon"
|
||||||
|
/>
|
||||||
|
</span>
|
||||||
|
</div>
|
||||||
|
<!-- 第二行(仅当 reportTime 有值时显示) -->
|
||||||
|
<div v-if="item.reportTime" class="second-row">
|
||||||
|
<span class="left">{{ formatLongToDate(item.reportTime) }}</span>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
<el-table-column v-if="activeIndex == 'first'" label="磨床" min-width="145">
|
||||||
|
<template #default="{ row }">
|
||||||
|
<template v-for="(item, index) in row.taskDispatchDetailDOList" :key="index">
|
||||||
|
<div v-if="item.procedureName === '磨床'" class="custom-cell">
|
||||||
|
<!-- 第一行 -->
|
||||||
|
<div class="first-row">
|
||||||
|
<span >
|
||||||
|
<span v-if="!item.reportTime">{{ item.sort }}</span> <!-- 仅当 reportTime 为空时显示 sort -->
|
||||||
|
</span>
|
||||||
|
<span>
|
||||||
|
<!-- isOutsourcing 图片 -->
|
||||||
|
<img
|
||||||
|
v-if="item.isOutsourcing === 'Y'"
|
||||||
|
src="/src/assets/imgs/out.png"
|
||||||
|
class="status-icon"
|
||||||
|
/>
|
||||||
|
<!-- checkYn 图片 -->
|
||||||
|
<img
|
||||||
|
v-if="item.checkYn === 1"
|
||||||
|
src="/src/assets/imgs/checkstatusss.png"
|
||||||
|
class="status-icon"
|
||||||
|
/>
|
||||||
|
</span>
|
||||||
|
</div>
|
||||||
|
<!-- 第二行(仅当 reportTime 有值时显示) -->
|
||||||
|
<div v-if="item.reportTime" class="second-row">
|
||||||
|
<span class="left">{{ formatLongToDate(item.reportTime) }}</span>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
<el-table-column v-if="activeIndex == 'first'" label="数控1" min-width="145">
|
||||||
|
<template #default="{ row }">
|
||||||
|
<template v-for="(item, index) in row.taskDispatchDetailDOList" :key="index">
|
||||||
|
<div v-if="item.procedureName === '数控1'" class="custom-cell">
|
||||||
|
<!-- 第一行 -->
|
||||||
|
<div class="first-row">
|
||||||
|
<span >
|
||||||
|
<span v-if="!item.reportTime">{{ item.sort }}</span> <!-- 仅当 reportTime 为空时显示 sort -->
|
||||||
|
</span>
|
||||||
|
<span>
|
||||||
|
<!-- isOutsourcing 图片 -->
|
||||||
|
<img
|
||||||
|
v-if="item.isOutsourcing === 'Y'"
|
||||||
|
src="/src/assets/imgs/out.png"
|
||||||
|
class="status-icon"
|
||||||
|
/>
|
||||||
|
<!-- checkYn 图片 -->
|
||||||
|
<img
|
||||||
|
v-if="item.checkYn === 1"
|
||||||
|
src="/src/assets/imgs/checkstatusss.png"
|
||||||
|
class="status-icon"
|
||||||
|
/>
|
||||||
|
</span>
|
||||||
|
</div>
|
||||||
|
<!-- 第二行(仅当 reportTime 有值时显示) -->
|
||||||
|
<div v-if="item.reportTime" class="second-row">
|
||||||
|
<span class="left">{{ formatLongToDate(item.reportTime) }}</span>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
<el-table-column v-if="activeIndex == 'first'" label="数控2" min-width="145">
|
||||||
|
<template #default="{ row }">
|
||||||
|
<template v-for="(item, index) in row.taskDispatchDetailDOList" :key="index">
|
||||||
|
<div v-if="item.procedureName === '数控2'" class="custom-cell">
|
||||||
|
<!-- 第一行 -->
|
||||||
|
<div class="first-row">
|
||||||
|
<span >
|
||||||
|
<span v-if="!item.reportTime">{{ item.sort }}</span> <!-- 仅当 reportTime 为空时显示 sort -->
|
||||||
|
</span>
|
||||||
|
<span>
|
||||||
|
<!-- isOutsourcing 图片 -->
|
||||||
|
<img
|
||||||
|
v-if="item.isOutsourcing === 'Y'"
|
||||||
|
src="/src/assets/imgs/out.png"
|
||||||
|
class="status-icon"
|
||||||
|
/>
|
||||||
|
<!-- checkYn 图片 -->
|
||||||
|
<img
|
||||||
|
v-if="item.checkYn === 1"
|
||||||
|
src="/src/assets/imgs/checkstatusss.png"
|
||||||
|
class="status-icon"
|
||||||
|
/>
|
||||||
|
</span>
|
||||||
|
</div>
|
||||||
|
<!-- 第二行(仅当 reportTime 有值时显示) -->
|
||||||
|
<div v-if="item.reportTime" class="second-row">
|
||||||
|
<span class="left">{{ formatLongToDate(item.reportTime) }}</span>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
<el-table-column v-if="activeIndex == 'first'" label="火花" min-width="145">
|
||||||
|
<template #default="{ row }">
|
||||||
|
<template v-for="(item, index) in row.taskDispatchDetailDOList" :key="index">
|
||||||
|
<div v-if="item.procedureName === '火花'" class="custom-cell">
|
||||||
|
<!-- 第一行 -->
|
||||||
|
<div class="first-row">
|
||||||
|
<span >
|
||||||
|
<span v-if="!item.reportTime">{{ item.sort }}</span> <!-- 仅当 reportTime 为空时显示 sort -->
|
||||||
|
</span>
|
||||||
|
<span>
|
||||||
|
<!-- isOutsourcing 图片 -->
|
||||||
|
<img
|
||||||
|
v-if="item.isOutsourcing === 'Y'"
|
||||||
|
src="/src/assets/imgs/out.png"
|
||||||
|
class="status-icon"
|
||||||
|
/>
|
||||||
|
<!-- checkYn 图片 -->
|
||||||
|
<img
|
||||||
|
v-if="item.checkYn === 1"
|
||||||
|
src="/src/assets/imgs/checkstatusss.png"
|
||||||
|
class="status-icon"
|
||||||
|
/>
|
||||||
|
</span>
|
||||||
|
</div>
|
||||||
|
<!-- 第二行(仅当 reportTime 有值时显示) -->
|
||||||
|
<div v-if="item.reportTime" class="second-row">
|
||||||
|
<span class="left">{{ formatLongToDate(item.reportTime) }}</span>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
<el-table-column v-if="activeIndex == 'first'" label="线切割" min-width="145">
|
||||||
|
<template #default="{ row }">
|
||||||
|
<template v-for="(item, index) in row.taskDispatchDetailDOList" :key="index">
|
||||||
|
<div v-if="item.procedureName === '线切割'" class="custom-cell">
|
||||||
|
<!-- 第一行 -->
|
||||||
|
<div class="first-row">
|
||||||
|
<span >
|
||||||
|
<span v-if="!item.reportTime">{{ item.sort }}</span> <!-- 仅当 reportTime 为空时显示 sort -->
|
||||||
|
</span>
|
||||||
|
<span>
|
||||||
|
<!-- isOutsourcing 图片 -->
|
||||||
|
<img
|
||||||
|
v-if="item.isOutsourcing === 'Y'"
|
||||||
|
src="/src/assets/imgs/out.png"
|
||||||
|
class="status-icon"
|
||||||
|
/>
|
||||||
|
<!-- checkYn 图片 -->
|
||||||
|
<img
|
||||||
|
v-if="item.checkYn === 1"
|
||||||
|
src="/src/assets/imgs/checkstatusss.png"
|
||||||
|
class="status-icon"
|
||||||
|
/>
|
||||||
|
</span>
|
||||||
|
</div>
|
||||||
|
<!-- 第二行(仅当 reportTime 有值时显示) -->
|
||||||
|
<div v-if="item.reportTime" class="second-row">
|
||||||
|
<span class="left">{{ formatLongToDate(item.reportTime) }}</span>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
<el-table-column v-if="activeIndex == 'first'" label="刻字" min-width="145">
|
||||||
|
<template #default="{ row }">
|
||||||
|
<template v-for="(item, index) in row.taskDispatchDetailDOList" :key="index">
|
||||||
|
<div v-if="item.procedureName === '刻字'" class="custom-cell">
|
||||||
|
<!-- 第一行 -->
|
||||||
|
<div class="first-row">
|
||||||
|
<span >
|
||||||
|
<span v-if="!item.reportTime">{{ item.sort }}</span> <!-- 仅当 reportTime 为空时显示 sort -->
|
||||||
|
</span>
|
||||||
|
<span>
|
||||||
|
<!-- isOutsourcing 图片 -->
|
||||||
|
<img
|
||||||
|
v-if="item.isOutsourcing === 'Y'"
|
||||||
|
src="/src/assets/imgs/out.png"
|
||||||
|
class="status-icon"
|
||||||
|
/>
|
||||||
|
<!-- checkYn 图片 -->
|
||||||
|
<img
|
||||||
|
v-if="item.checkYn === 1"
|
||||||
|
src="/src/assets/imgs/checkstatusss.png"
|
||||||
|
class="status-icon"
|
||||||
|
/>
|
||||||
|
</span>
|
||||||
|
</div>
|
||||||
|
<!-- 第二行(仅当 reportTime 有值时显示) -->
|
||||||
|
<div v-if="item.reportTime" class="second-row">
|
||||||
|
<span class="left">{{ formatLongToDate(item.reportTime) }}</span>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
<el-table-column v-if="activeIndex == 'first'" label="网格" min-width="145">
|
||||||
|
<template #default="{ row }">
|
||||||
|
<template v-for="(item, index) in row.taskDispatchDetailDOList" :key="index">
|
||||||
|
<div v-if="item.procedureName === '网格'" class="custom-cell">
|
||||||
|
<!-- 第一行 -->
|
||||||
|
<div class="first-row">
|
||||||
|
<span >
|
||||||
|
<span v-if="!item.reportTime">{{ item.sort }}</span> <!-- 仅当 reportTime 为空时显示 sort -->
|
||||||
|
</span>
|
||||||
|
<span>
|
||||||
|
<!-- isOutsourcing 图片 -->
|
||||||
|
<img
|
||||||
|
v-if="item.isOutsourcing === 'Y'"
|
||||||
|
src="/src/assets/imgs/out.png"
|
||||||
|
class="status-icon"
|
||||||
|
/>
|
||||||
|
<!-- checkYn 图片 -->
|
||||||
|
<img
|
||||||
|
v-if="item.checkYn === 1"
|
||||||
|
src="/src/assets/imgs/checkstatusss.png"
|
||||||
|
class="status-icon"
|
||||||
|
/>
|
||||||
|
</span>
|
||||||
|
</div>
|
||||||
|
<!-- 第二行(仅当 reportTime 有值时显示) -->
|
||||||
|
<div v-if="item.reportTime" class="second-row">
|
||||||
|
<span class="left">{{ formatLongToDate(item.reportTime) }}</span>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
<el-table-column v-if="activeIndex == 'first'" label="深孔钻" min-width="145">
|
||||||
|
<template #default="{ row }">
|
||||||
|
<template v-for="(item, index) in row.taskDispatchDetailDOList" :key="index">
|
||||||
|
<div v-if="item.procedureName === '深孔钻'" class="custom-cell">
|
||||||
|
<!-- 第一行 -->
|
||||||
|
<div class="first-row">
|
||||||
|
<span >
|
||||||
|
<span v-if="!item.reportTime">{{ item.sort }}</span> <!-- 仅当 reportTime 为空时显示 sort -->
|
||||||
|
</span>
|
||||||
|
<span>
|
||||||
|
<!-- isOutsourcing 图片 -->
|
||||||
|
<img
|
||||||
|
v-if="item.isOutsourcing === 'Y'"
|
||||||
|
src="/src/assets/imgs/out.png"
|
||||||
|
class="status-icon"
|
||||||
|
/>
|
||||||
|
<!-- checkYn 图片 -->
|
||||||
|
<img
|
||||||
|
v-if="item.checkYn === 1"
|
||||||
|
src="/src/assets/imgs/checkstatusss.png"
|
||||||
|
class="status-icon"
|
||||||
|
/>
|
||||||
|
</span>
|
||||||
|
</div>
|
||||||
|
<!-- 第二行(仅当 reportTime 有值时显示) -->
|
||||||
|
<div v-if="item.reportTime" class="second-row">
|
||||||
|
<span class="left">{{ formatLongToDate(item.reportTime) }}</span>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
<el-table-column v-if="activeIndex == 'first'" label="钻孔" min-width="145">
|
||||||
|
<template #default="{ row }">
|
||||||
|
<template v-for="(item, index) in row.taskDispatchDetailDOList" :key="index">
|
||||||
|
<div v-if="item.procedureName === '钻孔'" class="custom-cell">
|
||||||
|
<!-- 第一行 -->
|
||||||
|
<div class="first-row">
|
||||||
|
<span >
|
||||||
|
<span v-if="!item.reportTime">{{ item.sort }}</span> <!-- 仅当 reportTime 为空时显示 sort -->
|
||||||
|
</span>
|
||||||
|
<span>
|
||||||
|
<!-- isOutsourcing 图片 -->
|
||||||
|
<img
|
||||||
|
v-if="item.isOutsourcing === 'Y'"
|
||||||
|
src="/src/assets/imgs/out.png"
|
||||||
|
class="status-icon"
|
||||||
|
/>
|
||||||
|
<!-- checkYn 图片 -->
|
||||||
|
<img
|
||||||
|
v-if="item.checkYn === 1"
|
||||||
|
src="/src/assets/imgs/checkstatusss.png"
|
||||||
|
class="status-icon"
|
||||||
|
/>
|
||||||
|
</span>
|
||||||
|
</div>
|
||||||
|
<!-- 第二行(仅当 reportTime 有值时显示) -->
|
||||||
|
<div v-if="item.reportTime" class="second-row">
|
||||||
|
<span class="left">{{ formatLongToDate(item.reportTime) }}</span>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
|
||||||
|
<!--标准件-->
|
||||||
|
<!--加工件-->
|
||||||
|
|
||||||
|
<el-table-column v-if="activeIndex == 'second'" label="物料需求计划" align="center" prop="planBoomExists" min-width="180">
|
||||||
|
<template #default="{ row }">
|
||||||
|
{{ row.planBoomExists ?(row.planBoomExists== 1?'✔':''):''}}
|
||||||
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column label="生产计划号" align="center" prop="taskNo" width="240px"/>
|
<el-table-column v-if="activeIndex == 'second'" label="去库存" prop="purYard" min-width="180">
|
||||||
<el-table-column label="生产状态" align="center" prop="planType" >
|
<template #default="{ row }">
|
||||||
<template #default="scope">
|
{{ row.purYard ?(row.purYard== 1?'✔':''):''}}
|
||||||
<dict-tag :type="DICT_TYPE.HELI_PLANTYPE" :value="scope.row.planType" />
|
</template>
|
||||||
</template>
|
</el-table-column>
|
||||||
</el-table-column>
|
<el-table-column v-if="activeIndex == 'second'" label="采购单" prop="makeStatus" min-width="180">
|
||||||
<el-table-column label="子项目名称" align="center" prop="projectSubName" />
|
<template #default="{ row }">
|
||||||
<el-table-column label="零件名称" align="center" prop="materialName" />
|
{{ row.makeStatus ?(row.makeStatus== 1?'送审':(row.makeStatus == 2 ? '已审批':'')):''}}
|
||||||
<el-table-column label="工序名称" align="center" prop="procdureName" />
|
</template>
|
||||||
<el-table-column label="任务负责人" align="center" prop="owner" >
|
</el-table-column>
|
||||||
<template #default="scope">
|
<el-table-column v-if="activeIndex == 'second'" label="采购订单" prop="orderNoExists" min-width="180">
|
||||||
{{ userList.find((user) => user.id === scope.row.owner)?.nickname }}
|
<template #default="{ row }">
|
||||||
</template>
|
{{ row.orderNoExists ?(row.orderNoExists== 1?'✔':(row.orderNoExists == 0 ? '':'')):''}}
|
||||||
</el-table-column>
|
</template>
|
||||||
<el-table-column label="预计结束日期" align="center" prop="endTime">
|
</el-table-column>
|
||||||
<template #default="scope">
|
<el-table-column v-if="activeIndex == 'second'" label="收货状态" align="center" prop="receivingStatus" min-width="180">
|
||||||
{{ formatDateT(scope.row.endTime)}}
|
<template #default="{ row }">
|
||||||
</template>
|
{{ row.receivingStatus ?(row.receivingStatus== 1?'未收货':(row.receivingStatus == 2 ? '收货中':(row.receivingStatus == 3 ? '已收货':''))):''}}
|
||||||
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column label="总预计工时" align="center" prop="workTime" />
|
|
||||||
<el-table-column label="总派工数量" align="center" prop="amount" />
|
|
||||||
<el-table-column label="总报工工时" align="center" prop="bgWorkTime" />
|
|
||||||
<el-table-column label="总报工数量" align="center" prop="bgAmount" />
|
|
||||||
<el-table-column label="完成标志" align="center" prop="wgType">
|
|
||||||
|
|
||||||
<template #default="scope">
|
|
||||||
<dict-tag :type="DICT_TYPE.HELI_PG_PLANTYPE" :value="1" v-if="scope.row.wgType==2"/>
|
|
||||||
<dict-tag :type="DICT_TYPE.HELI_PG_PLANTYPE" :value="0" v-else/>
|
|
||||||
</template>
|
|
||||||
</el-table-column>
|
|
||||||
|
|
||||||
</el-table>
|
</el-table>
|
||||||
<!-- 分页 -->
|
<!-- 分页 -->
|
||||||
<Pagination
|
<Pagination
|
||||||
@ -148,7 +655,8 @@ import * as processbomApi from '@/api/heli/processbom'
|
|||||||
import { getIntDictOptions, getStrDictOptions, DICT_TYPE, getDictLabel } from '@/utils/dict'
|
import { getIntDictOptions, getStrDictOptions, DICT_TYPE, getDictLabel } from '@/utils/dict'
|
||||||
import UserSelect from '@/views/heli/hlvuestyle/userSelect.vue'
|
import UserSelect from '@/views/heli/hlvuestyle/userSelect.vue'
|
||||||
import * as UserApi from '@/api/system/user'
|
import * as UserApi from '@/api/system/user'
|
||||||
|
import type { TabsPaneContext } from 'element-plus'
|
||||||
|
import { get } from 'sortablejs'
|
||||||
defineOptions({ name: 'Shenhe' })
|
defineOptions({ name: 'Shenhe' })
|
||||||
const userList = ref<UserApi.UserVO[]>([]) // 用户列表
|
const userList = ref<UserApi.UserVO[]>([]) // 用户列表
|
||||||
const message = useMessage() // 消息弹窗
|
const message = useMessage() // 消息弹窗
|
||||||
@ -172,6 +680,7 @@ const exportLoading = ref(false) // 导出的加载中
|
|||||||
|
|
||||||
const handleSelectedUser1 = (newValue: any) => {
|
const handleSelectedUser1 = (newValue: any) => {
|
||||||
queryParams.owner = newValue?.id
|
queryParams.owner = newValue?.id
|
||||||
|
console.log(queryParams.owner)
|
||||||
}
|
}
|
||||||
const formatDateT = (timestamp) => {
|
const formatDateT = (timestamp) => {
|
||||||
const date = new Date(timestamp);
|
const date = new Date(timestamp);
|
||||||
@ -180,20 +689,48 @@ const formatDateT = (timestamp) => {
|
|||||||
const day = String(date.getDate()).padStart(2, '0');
|
const day = String(date.getDate()).padStart(2, '0');
|
||||||
return `${year}-${month}-${day}`; // 返回 YYYY-MM-DD 格式
|
return `${year}-${month}-${day}`; // 返回 YYYY-MM-DD 格式
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const activeName = ref('first')
|
||||||
|
const activeIndex = ref('first')
|
||||||
|
/**切换tab */
|
||||||
|
const handleClick = async(tab: TabsPaneContext, event: Event) => {
|
||||||
|
var tabIndex = tab.props.name;
|
||||||
|
activeIndex.value = tabIndex;
|
||||||
|
await getList(tabIndex);
|
||||||
|
}
|
||||||
|
|
||||||
/** 查询列表 */
|
/** 查询列表 */
|
||||||
const getList = async () => {
|
const getList = async () => {
|
||||||
loading.value = true
|
loading.value = true
|
||||||
try {
|
try {
|
||||||
// const data = await processbomApi.getPlanBb(queryParams)
|
|
||||||
const data = await processbomApi.planBZJPage(queryParams)
|
if( activeIndex.value == 'first'){
|
||||||
|
const data = await processbomApi.getPlanBb(queryParams)
|
||||||
console.log(data)
|
console.log(data)
|
||||||
list.value = data.list
|
list.value = data.list
|
||||||
|
|
||||||
total.value = data.total
|
total.value = data.total
|
||||||
|
}else{
|
||||||
|
const data = await processbomApi.planBZJPage(queryParams)
|
||||||
|
list.value = data.list
|
||||||
|
|
||||||
|
total.value = data.total
|
||||||
|
}
|
||||||
} finally {
|
} finally {
|
||||||
loading.value = false
|
loading.value = false
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
const formatLongToDate = (longTimestamp) => {
|
||||||
|
if(!longTimestamp){
|
||||||
|
return '';
|
||||||
|
}
|
||||||
|
const date = new Date(longTimestamp);
|
||||||
|
const year = date.getFullYear();
|
||||||
|
const month = String(date.getMonth() + 1).padStart(2, '0'); // 月份从 0 开始
|
||||||
|
const day = String(date.getDate()).padStart(2, '0');
|
||||||
|
return `${year}-${month}-${day}`;
|
||||||
|
}
|
||||||
|
|
||||||
const tableRowClassName = ({ row }) => {
|
const tableRowClassName = ({ row }) => {
|
||||||
var endTime = new Date(row.endTime);
|
var endTime = new Date(row.endTime);
|
||||||
|
|
||||||
@ -209,6 +746,23 @@ const tableRowClassName = ({ row }) => {
|
|||||||
return ''
|
return ''
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
const cellClassName = ({ row,column }) => {
|
||||||
|
if(row.taskDispatchDetailDOList){
|
||||||
|
for(var i = 0 ;i < row.taskDispatchDetailDOList.length ; i++){
|
||||||
|
var item = row.taskDispatchDetailDOList[i];
|
||||||
|
|
||||||
|
if (item.procedureName == column.label && item.flag === 1) {
|
||||||
|
return 'green-cell'
|
||||||
|
};
|
||||||
|
if (item.procedureName == column.label && item.flag === 2) return 'yellow-cell';
|
||||||
|
if (item.procedureName == column.label && item.flag === 3) return 'red-cell';
|
||||||
|
return '';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
/** 搜索按钮操作 */
|
/** 搜索按钮操作 */
|
||||||
const handleQuery = () => {
|
const handleQuery = () => {
|
||||||
queryParams.pageNo = 1
|
queryParams.pageNo = 1
|
||||||
@ -246,6 +800,7 @@ const handleExport = async () => {
|
|||||||
onMounted(async () => {
|
onMounted(async () => {
|
||||||
loading.value = true
|
loading.value = true
|
||||||
await getList()
|
await getList()
|
||||||
|
|
||||||
userList.value = await UserApi.getSimpleUserList()
|
userList.value = await UserApi.getSimpleUserList()
|
||||||
})
|
})
|
||||||
</script>
|
</script>
|
||||||
@ -254,5 +809,33 @@ onMounted(async () => {
|
|||||||
.warning-row {
|
.warning-row {
|
||||||
background-color: #D3D3D3 !important;
|
background-color: #D3D3D3 !important;
|
||||||
}
|
}
|
||||||
|
.green-cell {
|
||||||
|
background-color: #e6f7e6 !important;
|
||||||
|
}
|
||||||
|
.yellow-cell {
|
||||||
|
background-color: #fffbe6 !important;
|
||||||
|
}
|
||||||
|
.red-cell {
|
||||||
|
background-color: #fff1f0 !important;
|
||||||
|
}
|
||||||
|
.custom-cell {
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
width: 100%;
|
||||||
|
}
|
||||||
|
|
||||||
|
.first-row, .second-row {
|
||||||
|
display: flex;
|
||||||
|
justify-content: flex-start;
|
||||||
|
width: 100%;
|
||||||
|
margin-bottom: 4px; /* 增加行间距 */
|
||||||
|
}
|
||||||
|
|
||||||
|
.status-icon {
|
||||||
|
width: 35px; /* 增大图片宽度 */
|
||||||
|
height: 35px; /* 增大图片高度 */
|
||||||
|
margin-left: 8px;
|
||||||
|
vertical-align: middle;
|
||||||
|
object-fit: contain; /* 确保图片比例不变形 */
|
||||||
|
}
|
||||||
</style>
|
</style>
|
||||||
|
Loading…
Reference in New Issue
Block a user