|
@@ -6,14 +6,9 @@
|
|
|
<!-- 按钮部分-->
|
|
<!-- 按钮部分-->
|
|
|
<el-form ref="elSearchFormRef" class="demo-form-inline" :rules="searchRule" >
|
|
<el-form ref="elSearchFormRef" class="demo-form-inline" :rules="searchRule" >
|
|
|
<el-form-item>
|
|
<el-form-item>
|
|
|
- <el-input v-model="searchInfo" placeholder="搜索工单编号" clearable style="width: 200px;margin: 5px"></el-input>
|
|
|
|
|
- <el-button type="primary" class="bt" icon="download" @click="hzToExcel" >导出到Excel(汇总)</el-button>
|
|
|
|
|
- <el-button type="primary" class="bt" icon="download" @click="mxToExcel" >导出到Excel(明细)</el-button>
|
|
|
|
|
|
|
+ <!-- <el-input v-model="searchInfo" placeholder="搜索工单编号" clearable style="width: 200px;margin: 5px"></el-input> -->
|
|
|
</el-form-item>
|
|
</el-form-item>
|
|
|
</el-form>
|
|
</el-form>
|
|
|
-
|
|
|
|
|
-
|
|
|
|
|
-
|
|
|
|
|
</div>
|
|
</div>
|
|
|
</layout-header>
|
|
</layout-header>
|
|
|
|
|
|
|
@@ -21,60 +16,68 @@
|
|
|
<!-- 左侧树侧形结构-->
|
|
<!-- 左侧树侧形结构-->
|
|
|
<layout-sider :resize-directions="['right']" :width="190" style="margin-right: 10px;">
|
|
<layout-sider :resize-directions="['right']" :width="190" style="margin-right: 10px;">
|
|
|
<div class="JKWTree-tree" style="height: 200px">
|
|
<div class="JKWTree-tree" style="height: 200px">
|
|
|
- <h3>生产进程查询</h3>
|
|
|
|
|
- <el-tree :data="treeData" :props="defaultProps" @node-click="handleNodeClick" @node-expand="handleNodeExpand">
|
|
|
|
|
|
|
+ <h3>换型换版维护</h3>
|
|
|
|
|
+ <el-tree :data="treeData" class="treecolor" :props="defaultProps" @node-click="handleNodeClick" @node-expand="handleNodeExpand">
|
|
|
</el-tree>
|
|
</el-tree>
|
|
|
</div>
|
|
</div>
|
|
|
</layout-sider>
|
|
</layout-sider>
|
|
|
|
|
|
|
|
<!-- 右侧区域 -->
|
|
<!-- 右侧区域 -->
|
|
|
<layout-content >
|
|
<layout-content >
|
|
|
- <el-main>
|
|
|
|
|
- <div class="gva-table-box">
|
|
|
|
|
- <!-- 表格数据 -->
|
|
|
|
|
- <el-table ref="multipleTable" style="width: 100%;height: 33vh" tooltip-effect="dark"
|
|
|
|
|
- :row-style="{ height: '25px' }" :header-cell-style="{ padding: '0px' }"
|
|
|
|
|
- :cell-style="{ padding: '0px' }" :header-row-style="{ height: '20px' }"
|
|
|
|
|
- :data="hztableData" border row-key="ID"
|
|
|
|
|
- size="small"
|
|
|
|
|
- :cell-class-name="gxbgCellClass"
|
|
|
|
|
- highlight-current-row="true" @row-dblclick="updateCompanyFunc"
|
|
|
|
|
- @row-click="tableRowClick" :show-overflow-tooltip="true"
|
|
|
|
|
- @selection-change="handleSelectionChange">
|
|
|
|
|
- <el-table-column sortable align="center" label="产品名称" prop="产品名称" width="120" />
|
|
|
|
|
- <el-table-column sortable align="center" label="规格(拼数)" prop="印件代号" width="120" />
|
|
|
|
|
- <el-table-column align="center" label="工艺" prop="印件名称" width="200" />
|
|
|
|
|
- <el-table-column align="center" label="开始时间" prop="联数" width="200" />
|
|
|
|
|
- <el-table-column align="center" label="结束时间" prop="投料大箱" width="110" />
|
|
|
|
|
- <el-table-column align="center" label="换型or换版" prop="计划投料" width="200" />
|
|
|
|
|
- <el-table-column align="center" label="数量" prop="工序1" width="200" />
|
|
|
|
|
- <el-table-column align="center" label="是否签样" prop="工序2" width="110" />
|
|
|
|
|
- <el-table-column align="center" label="装换版系数" prop="工序2" width="110" />
|
|
|
|
|
- </el-table>
|
|
|
|
|
-
|
|
|
|
|
- <!-- 分页 -->
|
|
|
|
|
- <div class="gva-pagination">
|
|
|
|
|
- <el-pagination layout="total" :current-page="page" :page-size="pageSize"
|
|
|
|
|
- :total="total" @current-change="handleCurrentChange" @size-change="handleSizeChange" />
|
|
|
|
|
- </div>
|
|
|
|
|
- </div>
|
|
|
|
|
-
|
|
|
|
|
-
|
|
|
|
|
<div class="gva-table-box">
|
|
<div class="gva-table-box">
|
|
|
<!-- 表格数据 -->
|
|
<!-- 表格数据 -->
|
|
|
- <el-table ref="multipleTable" style="width: 100%;height: 45vh" tooltip-effect="dark"
|
|
|
|
|
- :row-style="{ height: '25px' }" :header-cell-style="{ padding: '0px' }"
|
|
|
|
|
- :cell-style="{ padding: '0px' }" :header-row-style="{ height: '20px' }"
|
|
|
|
|
- :data="mxtableData" border row-key="ID"
|
|
|
|
|
|
|
+ <el-table ref="multipleTable" style="width: 100%;height: 70vh" tooltip-effect="dark"
|
|
|
|
|
+ :row-style="{ height: '0px' }" :header-cell-style="{ padding: '0px' }"
|
|
|
|
|
+ :cell-style="{ padding: '5px' }" :header-row-style="{ height: '0px' }"
|
|
|
|
|
+ :data="hxhb_tableData" border row-key="ID"
|
|
|
size="small"
|
|
size="small"
|
|
|
:cell-class-name="gxbgCellClass"
|
|
:cell-class-name="gxbgCellClass"
|
|
|
highlight-current-row="true" @row-dblclick="updateCompanyFunc"
|
|
highlight-current-row="true" @row-dblclick="updateCompanyFunc"
|
|
|
@row-click="tableRowClick" :show-overflow-tooltip="true"
|
|
@row-click="tableRowClick" :show-overflow-tooltip="true"
|
|
|
@selection-change="handleSelectionChange">
|
|
@selection-change="handleSelectionChange">
|
|
|
- <el-table-column sortable align="center" label="机台编号" prop="机台编号" width="120" />
|
|
|
|
|
- <el-table-column sortable align="center" label="开工时间" prop="开工时间" width="120" />
|
|
|
|
|
- <el-table-column sortable align="center" label="主电表" prop="主电表" width="200" />
|
|
|
|
|
- <el-table-column sortable align="center" label="辅电表" prop="辅电表" width="100" />
|
|
|
|
|
|
|
+
|
|
|
|
|
+ <el-table-column align="center" label="工单编号" prop="工单编号" width="110" />
|
|
|
|
|
+ <el-table-column align="center" label="机台编号" prop="机台编号" width="100" />
|
|
|
|
|
+ <el-table-column align="center" label="印件号" prop="印件号" width="70" />
|
|
|
|
|
+ <el-table-column align="center" label="工序号" prop="工序号" width="70" />
|
|
|
|
|
+ <el-table-column align="center" label="工序名称" prop="工序名称" width="150" />
|
|
|
|
|
+ <el-table-column align="center" label="装版类型" prop="装版类型" width="80" />
|
|
|
|
|
+ <el-table-column align="center" label="装版总工时" prop="装版总工时" width="90" />
|
|
|
|
|
+ <el-table-column align="center" label="装版联拼数" prop="装版联拼数" width="90" />
|
|
|
|
|
+ <el-table-column align="center" label="系数" prop="系数" width="60" />
|
|
|
|
|
+ <el-table-column align="center" label="装版补产工时" prop="装版补产工时" width="110" />
|
|
|
|
|
+ <el-table-column align="center" label="班组长确认状态" prop="班组长确认状态" width="130" />
|
|
|
|
|
+ <el-table-column align="center" label="统计确认状态" prop="统计确认状态" width="130" />
|
|
|
|
|
+ <el-table-column align="center" label="班组长" prop="班组长" width="140" />
|
|
|
|
|
+ <el-table-column align="center" label="班组长确认时间" prop="班组长确认时间" width="160" />
|
|
|
|
|
+ <el-table-column align="center" label="统计人员" prop="统计人员" width="160" />
|
|
|
|
|
+ <el-table-column align="center" label="统计确认时间" prop="统计确认时间" width="160" />
|
|
|
|
|
+ <el-table-column align="center" label="上报机台" prop="上报机台" width="220" />
|
|
|
|
|
+ <el-table-column align="center" label="开始时间" prop="开始时间" width="150" />
|
|
|
|
|
+ <el-table-column align="center" label="结束时间" prop="结束时间" width="150" />
|
|
|
|
|
+ <el-table-column align="center" label="创建时间" prop="创建时间" width="160" />
|
|
|
|
|
+ <el-table-column align="center" label="Uniqid" prop="Uniqid" width="100" />
|
|
|
|
|
+ <el-table-column align="center" label="关联ID" prop="关联ID" width="100" />
|
|
|
|
|
+ <el-table-column fixed="right" align="center" label="操作" width="210">
|
|
|
|
|
+ <template #default="scope">
|
|
|
|
|
+ <el-button
|
|
|
|
|
+ type="primary"
|
|
|
|
|
+ size="small"
|
|
|
|
|
+ @click="handleLeaderAudit(scope.row)"
|
|
|
|
|
+ style="margin-right: 5px; padding: 2px 8px; font-size: 12px;"
|
|
|
|
|
+ >
|
|
|
|
|
+ 班组长审核
|
|
|
|
|
+ </el-button>
|
|
|
|
|
+ <el-button
|
|
|
|
|
+ type="success"
|
|
|
|
|
+ size="small"
|
|
|
|
|
+ @click="handleStatAudit(scope.row)"
|
|
|
|
|
+ style="padding: 2px 8px; font-size: 12px;"
|
|
|
|
|
+ >
|
|
|
|
|
+ 统计员审核
|
|
|
|
|
+ </el-button>
|
|
|
|
|
+ </template>
|
|
|
|
|
+ </el-table-column>
|
|
|
</el-table>
|
|
</el-table>
|
|
|
|
|
|
|
|
<!-- 分页 -->
|
|
<!-- 分页 -->
|
|
@@ -84,37 +87,475 @@
|
|
|
</div>
|
|
</div>
|
|
|
</div>
|
|
</div>
|
|
|
|
|
|
|
|
- </el-main>
|
|
|
|
|
</layout-content>
|
|
</layout-content>
|
|
|
</layout>
|
|
</layout>
|
|
|
</layout>
|
|
</layout>
|
|
|
</div>
|
|
</div>
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
|
|
+ <!-- 班组长审核对话框 -->
|
|
|
|
|
+ <el-dialog
|
|
|
|
|
+ v-model="leaderAuditDialog"
|
|
|
|
|
+ title="班组长审核"
|
|
|
|
|
+ width="400px"
|
|
|
|
|
+ @close="closeLeaderAudit"
|
|
|
|
|
+ >
|
|
|
|
|
+ <el-form :model="leaderForm" label-width="100px">
|
|
|
|
|
+ <el-form-item label="换版联拼数">
|
|
|
|
|
+ <el-input v-model="leaderForm.换版联拼数" placeholder="请输入换版联拼数" />
|
|
|
|
|
+ </el-form-item>
|
|
|
|
|
+ <el-form-item label="换版总工时">
|
|
|
|
|
+ <el-input v-model="leaderForm.换版总工时" placeholder="请输入换版总工时" />
|
|
|
|
|
+ </el-form-item>
|
|
|
|
|
+ <el-form-item label="换版类型">
|
|
|
|
|
+ <el-select v-model="leaderForm.换版类型" placeholder="请选择换版类型">
|
|
|
|
|
+ <el-option label="装新版" value="装新版" />
|
|
|
|
|
+ <el-option label="装旧版" value="装旧版" />
|
|
|
|
|
+ <el-option label="换版" value="换版" />
|
|
|
|
|
+ </el-select>
|
|
|
|
|
+ </el-form-item>
|
|
|
|
|
+ <el-form-item label="系数">
|
|
|
|
|
+ <el-input v-model="leaderForm.coefficient" placeholder="请输入系数" />
|
|
|
|
|
+ </el-form-item>
|
|
|
|
|
+ <el-form-item label="班组长">
|
|
|
|
|
+ <el-input v-model="leaderForm.leader" disabled />
|
|
|
|
|
+ </el-form-item>
|
|
|
|
|
+ <el-form-item label="Uniqid">
|
|
|
|
|
+ <el-input v-model="leaderForm.Uniqid" disabled />
|
|
|
|
|
+ </el-form-item>
|
|
|
|
|
+ </el-form>
|
|
|
|
|
+ <template #footer>
|
|
|
|
|
+ <span class="dialog-footer">
|
|
|
|
|
+ <el-button @click="closeLeaderAudit">取消</el-button>
|
|
|
|
|
+ <el-button type="primary" @click="submitLeaderAudit">确认</el-button>
|
|
|
|
|
+ </span>
|
|
|
|
|
+ </template>
|
|
|
|
|
+ </el-dialog>
|
|
|
|
|
+
|
|
|
|
|
+ <!-- 统计员审核对话框 -->
|
|
|
|
|
+ <el-dialog
|
|
|
|
|
+ v-model="statAuditDialog"
|
|
|
|
|
+ title="统计员审核"
|
|
|
|
|
+ width="400px"
|
|
|
|
|
+ @close="closeStatAudit"
|
|
|
|
|
+ >
|
|
|
|
|
+ <el-form :model="statForm" label-width="100px">
|
|
|
|
|
+ <el-form-item label="装版补产工时">
|
|
|
|
|
+ <el-input v-model="statForm.装版补产工时" placeholder="请输入装版补产工时" />
|
|
|
|
|
+ </el-form-item>
|
|
|
|
|
+ <el-form-item label="统计人员">
|
|
|
|
|
+ <el-input v-model="statForm.statistics" disabled />
|
|
|
|
|
+ </el-form-item>
|
|
|
|
|
+ <el-form-item label="Uniqid">
|
|
|
|
|
+ <el-input v-model="statForm.Uniqid" disabled />
|
|
|
|
|
+ </el-form-item>
|
|
|
|
|
+ <el-form-item label="关联ID">
|
|
|
|
|
+ <el-input v-model="statForm.yieldUid" disabled/>
|
|
|
|
|
+ </el-form-item>
|
|
|
|
|
+ </el-form>
|
|
|
|
|
+ <template #footer>
|
|
|
|
|
+ <span class="dialog-footer">
|
|
|
|
|
+ <el-button @click="closeStatAudit">取消</el-button>
|
|
|
|
|
+ <el-button type="primary" @click="submitStatAudit">确认</el-button>
|
|
|
|
|
+ </span>
|
|
|
|
|
+ </template>
|
|
|
|
|
+ </el-dialog>
|
|
|
|
|
+
|
|
|
|
|
+ <!-- 明细数据对话框 -->
|
|
|
|
|
+ <el-dialog
|
|
|
|
|
+ v-model="detailDialogVisible"
|
|
|
|
|
+ title="明细详情数据"
|
|
|
|
|
+ width="600px"
|
|
|
|
|
+ @close="closeDetailDialog"
|
|
|
|
|
+ >
|
|
|
|
|
+ <div class="detail-form">
|
|
|
|
|
+ <el-row :gutter="20">
|
|
|
|
|
+ <el-col :span="12">
|
|
|
|
|
+ <el-form-item label="工单编号">
|
|
|
|
|
+ <el-input v-model="detailData.工单编号" placeholder="-" disabled/>
|
|
|
|
|
+ </el-form-item>
|
|
|
|
|
+ </el-col>
|
|
|
|
|
+ <el-col :span="12">
|
|
|
|
|
+ <el-form-item label="机台编号">
|
|
|
|
|
+ <el-input v-model="detailData.机台编号" placeholder="-" disabled/>
|
|
|
|
|
+ </el-form-item>
|
|
|
|
|
+ </el-col>
|
|
|
|
|
+ <el-col :span="12">
|
|
|
|
|
+ <el-form-item label="印件号">
|
|
|
|
|
+ <el-input v-model="detailData.印件号" placeholder="-" disabled/>
|
|
|
|
|
+ </el-form-item>
|
|
|
|
|
+ </el-col>
|
|
|
|
|
+ <el-col :span="12">
|
|
|
|
|
+ <el-form-item label="工序号">
|
|
|
|
|
+ <el-input v-model="detailData.工序号" placeholder="-" disabled/>
|
|
|
|
|
+ </el-form-item>
|
|
|
|
|
+ </el-col>
|
|
|
|
|
+ <el-col :span="12">
|
|
|
|
|
+ <el-form-item label="工序名称">
|
|
|
|
|
+ <el-input v-model="detailData.工序名称" placeholder="-" disabled/>
|
|
|
|
|
+ </el-form-item>
|
|
|
|
|
+ </el-col>
|
|
|
|
|
+ <el-col :span="12">
|
|
|
|
|
+ <el-form-item label="装版类型">
|
|
|
|
|
+ <el-input v-model="detailData.装版类型" placeholder="-" disabled/>
|
|
|
|
|
+ </el-form-item>
|
|
|
|
|
+ </el-col>
|
|
|
|
|
+ <el-col :span="12">
|
|
|
|
|
+ <el-form-item label="装版总工时">
|
|
|
|
|
+ <el-input v-model="detailData.装版总工时" placeholder="-" disabled/>
|
|
|
|
|
+ </el-form-item>
|
|
|
|
|
+ </el-col>
|
|
|
|
|
+ <el-col :span="12">
|
|
|
|
|
+ <el-form-item label="装版联拼数">
|
|
|
|
|
+ <el-input v-model="detailData.装版联拼数" placeholder="-" disabled/>
|
|
|
|
|
+ </el-form-item>
|
|
|
|
|
+ </el-col>
|
|
|
|
|
+ <el-col :span="12">
|
|
|
|
|
+ <el-form-item label="班组长确认状态">
|
|
|
|
|
+ <el-input v-model="detailData.班组长确认状态" placeholder="-" disabled />
|
|
|
|
|
+ </el-form-item>
|
|
|
|
|
+ </el-col>
|
|
|
|
|
+ <el-col :span="12">
|
|
|
|
|
+ <el-form-item label="统计确认状态">
|
|
|
|
|
+ <el-input v-model="detailData.统计确认状态" placeholder="-" disabled />
|
|
|
|
|
+ </el-form-item>
|
|
|
|
|
+ </el-col>
|
|
|
|
|
+ <el-col :span="12">
|
|
|
|
|
+ <el-form-item label="系数">
|
|
|
|
|
+ <el-input v-model="detailData.系数" placeholder="-" disabled/>
|
|
|
|
|
+ </el-form-item>
|
|
|
|
|
+ </el-col>
|
|
|
|
|
+ <el-col :span="12">
|
|
|
|
|
+ <el-form-item label="装版补产工时">
|
|
|
|
|
+ <el-input v-model="detailData.装版补产工时" placeholder="-" disabled/>
|
|
|
|
|
+ </el-form-item>
|
|
|
|
|
+ </el-col>
|
|
|
|
|
+ <el-col :span="12">
|
|
|
|
|
+ <el-form-item label="开始时间">
|
|
|
|
|
+ <el-input v-model="detailData.开始时间" placeholder="-" disabled/>
|
|
|
|
|
+ </el-form-item>
|
|
|
|
|
+ </el-col>
|
|
|
|
|
+ <el-col :span="12">
|
|
|
|
|
+ <el-form-item label="结束时间">
|
|
|
|
|
+ <el-input v-model="detailData.结束时间" placeholder="-" disabled/>
|
|
|
|
|
+ </el-form-item>
|
|
|
|
|
+ </el-col>
|
|
|
|
|
+ </el-row>
|
|
|
|
|
+ </div>
|
|
|
|
|
+ <template #footer>
|
|
|
|
|
+ <span class="dialog-footer">
|
|
|
|
|
+ <el-button @click="closeDetailDialog">关闭</el-button>
|
|
|
|
|
+ </span>
|
|
|
|
|
+ </template>
|
|
|
|
|
+ </el-dialog>
|
|
|
</template>
|
|
</template>
|
|
|
<script setup>
|
|
<script setup>
|
|
|
// 全量引入格式化工具 请按需保留
|
|
// 全量引入格式化工具 请按需保留
|
|
|
import { Layout, LayoutSider, LayoutContent } from '@arco-design/web-vue';
|
|
import { Layout, LayoutSider, LayoutContent } from '@arco-design/web-vue';
|
|
|
-
|
|
|
|
|
- import {ref, reactive} from 'vue'
|
|
|
|
|
|
|
+ import {
|
|
|
|
|
+ Mount_Hours_getTab,
|
|
|
|
|
+ getMountList,
|
|
|
|
|
+ leaderConfirm,
|
|
|
|
|
+ statisticsConfirm,
|
|
|
|
|
+ } from "@/api/mes/job";
|
|
|
|
|
+ import {ref, reactive, onMounted} from 'vue'
|
|
|
import { exportExcelFile } from '@/utils/excel'
|
|
import { exportExcelFile } from '@/utils/excel'
|
|
|
import {ElMessage} from "element-plus";
|
|
import {ElMessage} from "element-plus";
|
|
|
defineOptions({name: 'Company'})
|
|
defineOptions({name: 'Company'})
|
|
|
- // =========== 获取左侧树侧形结构 ===========
|
|
|
|
|
|
|
+ import { useUserStore } from '@/pinia/modules/user'
|
|
|
|
|
+ const userStore = useUserStore()
|
|
|
|
|
+ const sys_id='['+userStore.userInfo.userName+'/'+userStore.userInfo.nickName+']'
|
|
|
|
|
|
|
|
-
|
|
|
|
|
|
|
|
|
|
|
|
+ //响应式数据
|
|
|
|
|
+ const searchInfo = ref('')
|
|
|
|
|
+ const page = ref(1)
|
|
|
|
|
+ const pageSize = ref(10)
|
|
|
|
|
+ const total = ref(0)
|
|
|
|
|
+ const hxhb_tableData = ref([])
|
|
|
|
|
+ const mxtableData = ref([])
|
|
|
|
|
|
|
|
-
|
|
|
|
|
|
|
+ // 树结构相关数据
|
|
|
|
|
+ const treeData = ref([])
|
|
|
|
|
+ const defaultProps = {
|
|
|
|
|
+ children: 'children',
|
|
|
|
|
+ label: 'label'
|
|
|
|
|
+ }
|
|
|
|
|
|
|
|
-
|
|
|
|
|
|
|
+ // 审核对话框相关数据
|
|
|
|
|
+ const leaderAuditDialog = ref(false)
|
|
|
|
|
+ const statAuditDialog = ref(false)
|
|
|
|
|
+ const currentRow = ref(null)
|
|
|
|
|
+ const leaderForm = reactive({
|
|
|
|
|
+ coefficient: '',
|
|
|
|
|
+ leader: '',
|
|
|
|
|
+ Uniqid: '',
|
|
|
|
|
+ 换版联拼数: '',
|
|
|
|
|
+ 换版总工时: '',
|
|
|
|
|
+ 换版类型: ''
|
|
|
|
|
+ })
|
|
|
|
|
+ const statForm = reactive({
|
|
|
|
|
+ 装版补产工时: '',
|
|
|
|
|
+ statistics: '',
|
|
|
|
|
+ Uniqid: '',
|
|
|
|
|
+ yieldUid: ''
|
|
|
|
|
+ })
|
|
|
|
|
|
|
|
-
|
|
|
|
|
|
|
+ // 明细对话框相关数据
|
|
|
|
|
+ const detailDialogVisible = ref(false)
|
|
|
|
|
+ const detailData = ref({})
|
|
|
|
|
|
|
|
-
|
|
|
|
|
|
|
+ // =========== 获取左侧树结构数据 ===========
|
|
|
|
|
+ const getTreeData = async () => {
|
|
|
|
|
+ try {
|
|
|
|
|
+ const res = await Mount_Hours_getTab()
|
|
|
|
|
+ if (res.code === 0 && res.data) {
|
|
|
|
|
+ const data = res.data
|
|
|
|
|
+ const newTreeData = []
|
|
|
|
|
+
|
|
|
|
|
+ // 处理接口返回的数据,构建树结构
|
|
|
|
|
+ for (const yearMonth in data) {
|
|
|
|
|
+ // 年份月份节点
|
|
|
|
|
+ const yearMonthNode = {
|
|
|
|
|
+ label: yearMonth,
|
|
|
|
|
+ children: []
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ const workshops = data[yearMonth]
|
|
|
|
|
+ for (const workshopName in workshops) {
|
|
|
|
|
+ // 车间节点
|
|
|
|
|
+ const workshopNode = {
|
|
|
|
|
+ label: workshopName,
|
|
|
|
|
+ children: []
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ // 日期节点
|
|
|
|
|
+ workshops[workshopName].forEach(date => {
|
|
|
|
|
+ workshopNode.children.push({
|
|
|
|
|
+ label: date,
|
|
|
|
|
+ value: {
|
|
|
|
|
+ yearMonth: yearMonth,
|
|
|
|
|
+ workshop: workshopName,
|
|
|
|
|
+ date: date
|
|
|
|
|
+ }
|
|
|
|
|
+ })
|
|
|
|
|
+ })
|
|
|
|
|
+
|
|
|
|
|
+ yearMonthNode.children.push(workshopNode)
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ newTreeData.push(yearMonthNode)
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ treeData.value = newTreeData
|
|
|
|
|
+ } else {
|
|
|
|
|
+ ElMessage.error('获取树结构数据失败')
|
|
|
|
|
+ }
|
|
|
|
|
+ } catch (error) {
|
|
|
|
|
+ console.error('获取树结构数据异常:', error)
|
|
|
|
|
+ ElMessage.error('获取树结构数据异常')
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ // 加载详情数据
|
|
|
|
|
+ const loadDetailData = async (params) => {
|
|
|
|
|
+ try {
|
|
|
|
|
+ const { date, workshop } = params
|
|
|
|
|
+ const res = await getMountList({ day: date, sist: workshop })
|
|
|
|
|
+
|
|
|
|
|
+ if (res.code === 0 && res.data) {
|
|
|
|
|
+ // 更新表格数据
|
|
|
|
|
+ hxhb_tableData.value = res.data
|
|
|
|
|
+ total.value = res.data.length
|
|
|
|
|
+ } else {
|
|
|
|
|
+ hxhb_tableData.value = []
|
|
|
|
|
+ total.value = 0
|
|
|
|
|
+ ElMessage.warning('暂无数据')
|
|
|
|
|
+ }
|
|
|
|
|
+ } catch (error) {
|
|
|
|
|
+ console.error('获取详情数据异常:', error)
|
|
|
|
|
+ ElMessage.error('获取详情数据异常')
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ // 节点点击事件
|
|
|
|
|
+ const handleNodeClick = (data, node, component) => {
|
|
|
|
|
+ // 取消所有节点的颜色
|
|
|
|
|
+ const allNodes = document.querySelectorAll('.treecolor .el-tree-node');
|
|
|
|
|
+ allNodes.forEach(node => {
|
|
|
|
|
+ node.querySelector('.el-tree-node__label').style.color = '';
|
|
|
|
|
+ });
|
|
|
|
|
+ // 获取点击的节点
|
|
|
|
|
+ console.log(node)
|
|
|
|
|
+ const clickedNodeId = node['id'];
|
|
|
|
|
+ const clickedNode = document.querySelector(`.treecolor .el-tree-node[data-key="${clickedNodeId}"]`);
|
|
|
|
|
+ if (clickedNode) {
|
|
|
|
|
+ // 给当前点击的节点改变颜色
|
|
|
|
|
+ clickedNode.querySelector('.el-tree-node__label').style.color = 'red';
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
|
|
+ // 只有叶子节点(日期)才执行查询
|
|
|
|
|
+ if (!data.children && data.value) {
|
|
|
|
|
+ console.log('点击了日期节点:', data.value)
|
|
|
|
|
+ // 调用接口获取详情数据
|
|
|
|
|
+ loadDetailData(data.value)
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ // 节点展开事件
|
|
|
|
|
+ const handleNodeExpand = (data, node, component) => {
|
|
|
|
|
+ console.log('展开节点:', data)
|
|
|
|
|
+ }
|
|
|
|
|
|
|
|
|
|
+ // 表格行点击事件
|
|
|
|
|
+ const tableRowClick = (row) => {
|
|
|
|
|
+ console.log('表格行点击:', row)
|
|
|
|
|
+ }
|
|
|
|
|
|
|
|
|
|
+ // 选择变化事件
|
|
|
|
|
+ const handleSelectionChange = (selection) => {
|
|
|
|
|
+ console.log('选择变化:', selection)
|
|
|
|
|
+ }
|
|
|
|
|
|
|
|
|
|
+ // 分页变化事件
|
|
|
|
|
+ const handleCurrentChange = (val) => {
|
|
|
|
|
+ page.value = val
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ const handleSizeChange = (val) => {
|
|
|
|
|
+ pageSize.value = val
|
|
|
|
|
+ page.value = 1
|
|
|
|
|
+ }
|
|
|
|
|
|
|
|
|
|
+ // 双击事件 - 显示明细数据
|
|
|
|
|
+ const updateCompanyFunc = (row) => {
|
|
|
|
|
+ console.log('双击行:', row)
|
|
|
|
|
+ // 设置明细数据
|
|
|
|
|
+ detailData.value = { ...row }
|
|
|
|
|
+ // 打开明细对话框
|
|
|
|
|
+ detailDialogVisible.value = true
|
|
|
|
|
+ }
|
|
|
|
|
|
|
|
|
|
+ // 单元格样式类
|
|
|
|
|
+ const gxbgCellClass = ({row, column, rowIndex, columnIndex}) => {
|
|
|
|
|
+ // 可以根据需要为特定列设置样式
|
|
|
|
|
+ if (column.property === '装版类型') {
|
|
|
|
|
+ if (row['装版类型'] === '装新版') {
|
|
|
|
|
+ return 'new-plate'
|
|
|
|
|
+ } else if (row['装版类型'] === '装旧版') {
|
|
|
|
|
+ return 'old-plate'
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ return ''
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ // 班组长审核处理
|
|
|
|
|
+ const handleLeaderAudit = (row) => {
|
|
|
|
|
+ currentRow.value = row
|
|
|
|
|
+
|
|
|
|
|
+ leaderForm.换版联拼数 = row['装版联拼数']
|
|
|
|
|
+ leaderForm.换版总工时 = row['装版总工时']
|
|
|
|
|
+ leaderForm.换版类型 = row['装版类型']
|
|
|
|
|
+ leaderForm.coefficient = row['系数']
|
|
|
|
|
+ leaderForm.leader = sys_id
|
|
|
|
|
+ leaderForm.Uniqid = row['Uniqid']
|
|
|
|
|
+ // 打开对话框
|
|
|
|
|
+ leaderAuditDialog.value = true
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ // 统计员审核处理
|
|
|
|
|
+ const handleStatAudit = (row) => {
|
|
|
|
|
+ currentRow.value = row
|
|
|
|
|
+ // 初始化表单数据
|
|
|
|
|
+ statForm.装版补产工时 = row['装版补产工时']
|
|
|
|
|
+ statForm.statistics = sys_id
|
|
|
|
|
+ statForm.Uniqid = row['Uniqid']
|
|
|
|
|
+ statForm.yieldUid = row['关联ID']
|
|
|
|
|
+ // 打开对话框
|
|
|
|
|
+ statAuditDialog.value = true
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ // 班组长审核提交
|
|
|
|
|
+ const submitLeaderAudit = async () => {
|
|
|
|
|
+ try {
|
|
|
|
|
+ // 调用实际的班组长审核接口
|
|
|
|
|
+ console.log('提交班组长审核参数:', leaderForm)
|
|
|
|
|
+ const res = await leaderConfirm(leaderForm)
|
|
|
|
|
+
|
|
|
|
|
+ if (res.code === 0) {
|
|
|
|
|
+ ElMessage.success('班组长审核成功')
|
|
|
|
|
+
|
|
|
|
|
+ // 更新当前行的状态
|
|
|
|
|
+ if (currentRow.value) {
|
|
|
|
|
+ currentRow.value['班组长确认状态'] = '已确认'
|
|
|
|
|
+ currentRow.value['班组长确认时间'] = new Date().toLocaleString()
|
|
|
|
|
+ currentRow.value['班组长'] = leaderForm.leader
|
|
|
|
|
+ currentRow.value['系数'] = leaderForm.coefficient
|
|
|
|
|
+ currentRow.value['装版联拼数'] = leaderForm.换版联拼数
|
|
|
|
|
+ currentRow.value['装版总工时'] = leaderForm.换版总工时
|
|
|
|
|
+ currentRow.value['装版类型'] = leaderForm.换版类型
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ // 关闭对话框
|
|
|
|
|
+ leaderAuditDialog.value = false
|
|
|
|
|
+ } else {
|
|
|
|
|
+ ElMessage.error(res.msg || '班组长审核失败')
|
|
|
|
|
+ }
|
|
|
|
|
+ } catch (error) {
|
|
|
|
|
+ console.error('班组长审核失败:', error)
|
|
|
|
|
+ ElMessage.error('班组长审核失败')
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ // 统计员审核提交
|
|
|
|
|
+ const submitStatAudit = async () => {
|
|
|
|
|
+ try {
|
|
|
|
|
+ // 调用实际的统计员审核接口
|
|
|
|
|
+ console.log('提交统计员审核参数:', statForm)
|
|
|
|
|
+ const res = await statisticsConfirm(statForm)
|
|
|
|
|
+
|
|
|
|
|
+ if (res.code === 0) {
|
|
|
|
|
+ ElMessage.success('统计员审核成功')
|
|
|
|
|
+
|
|
|
|
|
+ // 更新当前行的状态
|
|
|
|
|
+ if (currentRow.value) {
|
|
|
|
|
+ currentRow.value['统计确认状态'] = '已确认'
|
|
|
|
|
+ currentRow.value['统计确认时间'] = new Date().toLocaleString()
|
|
|
|
|
+ currentRow.value['统计人员'] = statForm.statistics
|
|
|
|
|
+ currentRow.value['装版补产工时'] = statForm.装版补产工时
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ // 关闭对话框
|
|
|
|
|
+ statAuditDialog.value = false
|
|
|
|
|
+ } else {
|
|
|
|
|
+ ElMessage.error(res.msg || '统计员审核失败')
|
|
|
|
|
+ }
|
|
|
|
|
+ } catch (error) {
|
|
|
|
|
+ console.error('统计员审核失败:', error)
|
|
|
|
|
+ ElMessage.error('统计员审核失败')
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ // 关闭班组长审核对话框
|
|
|
|
|
+ const closeLeaderAudit = () => {
|
|
|
|
|
+ leaderAuditDialog.value = false
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ // 关闭统计员审核对话框
|
|
|
|
|
+ const closeStatAudit = () => {
|
|
|
|
|
+ statAuditDialog.value = false
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ // 关闭明细对话框
|
|
|
|
|
+ const closeDetailDialog = () => {
|
|
|
|
|
+ detailDialogVisible.value = false
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ // 页面挂载时获取数据
|
|
|
|
|
+ onMounted(() => {
|
|
|
|
|
+ getTreeData()
|
|
|
|
|
+ })
|
|
|
</script>
|
|
</script>
|
|
|
|
|
|
|
|
<style scoped>
|
|
<style scoped>
|
|
@@ -133,6 +574,16 @@
|
|
|
width: 150px; /* 调整左侧输入框的宽度 */
|
|
width: 150px; /* 调整左侧输入框的宽度 */
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
+ /* 明细对话框样式 */
|
|
|
|
|
+ .detail-form .el-form-item {
|
|
|
|
|
+ margin-bottom: 15px;
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ .detail-form .el-form-item__label {
|
|
|
|
|
+ font-weight: bold;
|
|
|
|
|
+ color: #606266;
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
:deep(.hui-plan-usage-lows div) {
|
|
:deep(.hui-plan-usage-lows div) {
|
|
|
color: #8c939d !important;
|
|
color: #8c939d !important;
|
|
|
}
|
|
}
|
|
@@ -148,6 +599,10 @@
|
|
|
flex: 1 0 100%; /* 在小屏幕下变成单列布局 */
|
|
flex: 1 0 100%; /* 在小屏幕下变成单列布局 */
|
|
|
margin-right: 0;
|
|
margin-right: 0;
|
|
|
}
|
|
}
|
|
|
|
|
+
|
|
|
|
|
+ .detail-form .el-col {
|
|
|
|
|
+ :span: 24;
|
|
|
|
|
+ }
|
|
|
}
|
|
}
|
|
|
/*:deep(.el-table td .cell) {*/
|
|
/*:deep(.el-table td .cell) {*/
|
|
|
/* line-height: 30px !important;*/
|
|
/* line-height: 30px !important;*/
|
|
@@ -170,11 +625,21 @@
|
|
|
flex: 1;
|
|
flex: 1;
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
-
|
|
|
|
|
/* 选中某行时的背景色 */
|
|
/* 选中某行时的背景色 */
|
|
|
:deep(.el-table__body tr.current-row) > td {
|
|
:deep(.el-table__body tr.current-row) > td {
|
|
|
background: #ff80ff !important;
|
|
background: #ff80ff !important;
|
|
|
}
|
|
}
|
|
|
|
|
+
|
|
|
|
|
+ /* 装版类型样式 */
|
|
|
|
|
+ /* :deep(.new-plate) {
|
|
|
|
|
+ background-color: #e6f7ff !important;
|
|
|
|
|
+ color: #1890ff;
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ :deep(.old-plate) {
|
|
|
|
|
+ background-color: #f6ffed !important;
|
|
|
|
|
+ color: #52c41a;
|
|
|
|
|
+ } */
|
|
|
</style>
|
|
</style>
|
|
|
<style scoped>
|
|
<style scoped>
|
|
|
:deep(.el-table td .cell) {
|
|
:deep(.el-table td .cell) {
|