feat: 新增业务员、合同号查询与展示,优化钢卷管理功能
1. 在钢卷相关API中新增对saleName和contractNo字段的过滤逻辑,避免数据覆盖 2. 多个报表页面新增业务员和合同号查询条件 3. 钢卷物料页面重构表单布局,新增生产耗时计算、合同绑定功能 4. 告警页面优化UI展示,新增详情弹窗和备注处理流程 5. 多处代码格式化与注释优化
This commit is contained in:
@@ -49,7 +49,8 @@ export function addMaterialCoil(data) {
|
|||||||
|
|
||||||
export function updateMaterialCoil(data) {
|
export function updateMaterialCoil(data) {
|
||||||
// 对data进行预处理,将currentCoilNo去除首位的空格
|
// 对data进行预处理,将currentCoilNo去除首位的空格
|
||||||
const payload = {
|
// 将saleName和contractNo剔除防止覆盖
|
||||||
|
const { saleName, contractNo, ...payload} = {
|
||||||
...data,
|
...data,
|
||||||
currentCoilNo: data.currentCoilNo.trim(),
|
currentCoilNo: data.currentCoilNo.trim(),
|
||||||
}
|
}
|
||||||
@@ -63,7 +64,8 @@ export function updateMaterialCoil(data) {
|
|||||||
// 简单更新钢卷物料表
|
// 简单更新钢卷物料表
|
||||||
export function updateMaterialCoilSimple(data) {
|
export function updateMaterialCoilSimple(data) {
|
||||||
// 对data进行预处理,将currentCoilNo去除首位的空格
|
// 对data进行预处理,将currentCoilNo去除首位的空格
|
||||||
const payload = {
|
// 将saleName和contractNo剔除防止覆盖
|
||||||
|
const { saleName, contractNo, ...payload} = {
|
||||||
...data,
|
...data,
|
||||||
currentCoilNo: data.currentCoilNo.trim(),
|
currentCoilNo: data.currentCoilNo.trim(),
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -83,19 +83,26 @@
|
|||||||
<el-input v-model="queryParams.remark" placeholder="请输入备注" clearable size="small" />
|
<el-input v-model="queryParams.remark" placeholder="请输入备注" clearable size="small" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
|
|
||||||
<el-form-item>
|
<el-form-item label="业务员" prop="saleName" v-if="orderBy">
|
||||||
|
<el-input v-model="queryParams.saleName" placeholder="请输入业务员" clearable size="small" />
|
||||||
|
</el-form-item>
|
||||||
|
|
||||||
|
<el-form-item label="合同号" prop="contractNo" v-if="orderBy">
|
||||||
|
<el-input v-model="queryParams.contractNo" placeholder="请输入合同号" clearable size="small" />
|
||||||
|
</el-form-item>
|
||||||
|
|
||||||
|
<el-form-item>
|
||||||
<el-button v-if="multiple" type="primary" size="small" icon="el-icon-check"
|
<el-button v-if="multiple" type="primary" size="small" icon="el-icon-check"
|
||||||
@click="handleSelectAllCurrentPage">全选当前卷</el-button>
|
@click="handleSelectAllCurrentPage">全选当前卷</el-button>
|
||||||
<el-checkbox v-if="orderBy" style="margin-left: 10px;" v-model="showCoilMap"
|
<el-checkbox v-if="orderBy" style="margin-left: 10px;" v-model="showCoilMap"
|
||||||
size="small">显示钢卷地图</el-checkbox>
|
size="small">显示钢卷地图</el-checkbox>
|
||||||
<el-checkbox v-if="orderBy && orderId" style="margin-left: 10px;" v-model="showOrderInfo"
|
<el-checkbox v-if="orderBy && orderId" style="margin-left: 10px;" v-model="showOrderInfo"
|
||||||
size="small">显示订单详情</el-checkbox>
|
size="small">显示订单详情</el-checkbox>
|
||||||
|
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-form>
|
</el-form>
|
||||||
|
|
||||||
<div style="display: flex; flex-direction: column; justify-content: flex-start; align-items: center; gap: 2px;">
|
<div
|
||||||
|
style="display: flex; flex-direction: column; justify-content: flex-start; align-items: center; gap: 2px;">
|
||||||
<el-button type="primary" icon="el-icon-search" size="small" @click="handleQuery">搜索</el-button>
|
<el-button type="primary" icon="el-icon-search" size="small" @click="handleQuery">搜索</el-button>
|
||||||
<el-button icon="el-icon-refresh" size="small" @click="resetQuery">重置</el-button>
|
<el-button icon="el-icon-refresh" size="small" @click="resetQuery">重置</el-button>
|
||||||
<el-button type="warning" size="small" icon="el-icon-setting"
|
<el-button type="warning" size="small" icon="el-icon-setting"
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
<template>
|
<template>
|
||||||
<div class="app-container">
|
<div class="app-container">
|
||||||
<el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="68px">
|
<el-form v-show="showSearch" ref="queryForm" :model="queryParams" size="small" :inline="true" label-width="68px">
|
||||||
<el-form-item label="告警类型" prop="warningType">
|
<el-form-item label="告警类型" prop="warningType">
|
||||||
<el-radio-group v-model="queryParams.warningType" @change="handleQuery">
|
<el-radio-group v-model="queryParams.warningType" @change="handleQuery">
|
||||||
<el-radio-button label="LENGTH">长度告警</el-radio-button>
|
<el-radio-button label="LENGTH">长度告警</el-radio-button>
|
||||||
@@ -15,16 +15,24 @@
|
|||||||
</el-select>
|
</el-select>
|
||||||
</el-form-item> -->
|
</el-form-item> -->
|
||||||
<el-form-item label="告警状态" prop="warningStatus">
|
<el-form-item label="告警状态" prop="warningStatus">
|
||||||
<el-select v-model="queryParams.warningStatus" placeholder="请选择告警状态" clearable
|
<el-select
|
||||||
@change="handleQuery">
|
v-model="queryParams.warningStatus"
|
||||||
|
placeholder="请选择告警状态"
|
||||||
|
clearable
|
||||||
|
@change="handleQuery"
|
||||||
|
>
|
||||||
<el-option label="未处理" value="0" />
|
<el-option label="未处理" value="0" />
|
||||||
<el-option label="已处理" value="1" />
|
<el-option label="已处理" value="1" />
|
||||||
<el-option label="已忽略" value="2" />
|
<el-option label="已忽略" value="2" />
|
||||||
</el-select>
|
</el-select>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="工序" prop="actionType">
|
<el-form-item label="工序" prop="actionType">
|
||||||
<el-select v-model="queryParams.actionType" placeholder="请选择工序" clearable
|
<el-select
|
||||||
@change="handleQuery">
|
v-model="queryParams.actionType"
|
||||||
|
placeholder="请选择工序"
|
||||||
|
clearable
|
||||||
|
@change="handleQuery"
|
||||||
|
>
|
||||||
<el-option v-for="item in dict.type.action_type" :key="item.value" :label="item.label" :value="item.value" />
|
<el-option v-for="item in dict.type.action_type" :key="item.value" :label="item.label" :value="item.value" />
|
||||||
</el-select>
|
</el-select>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
@@ -83,13 +91,14 @@
|
|||||||
</el-col>
|
</el-col>
|
||||||
</el-row>
|
</el-row>
|
||||||
|
|
||||||
<el-table v-loading="loading" :data="materialWarningList" @selection-change="handleSelectionChange" :row-class-name="getRowClassName">
|
<el-table v-loading="loading" :data="materialWarningList" :row-class-name="getRowClassName" @selection-change="handleSelectionChange">
|
||||||
<el-table-column type="selection" width="55" align="center" />
|
<el-table-column type="selection" width="55" align="center" />
|
||||||
<!-- <el-table-column label="钢卷ID" align="center" prop="coilId" /> -->
|
<!-- <el-table-column label="钢卷ID" align="center" prop="coilId" /> -->
|
||||||
<el-table-column label="告警类型" align="center" prop="warningType">
|
<el-table-column label="告警类型" align="center" prop="warningType" width="100">
|
||||||
<template slot-scope="scope">
|
<template slot-scope="scope">
|
||||||
<span>{{ scope.row.warningType === 'LENGTH' ? '长度' : scope.row.warningType === 'THICKNESS' ? '厚度' : '宽度'
|
<el-tag :type="scope.row.warningType === 'LENGTH' ? 'warning' : scope.row.warningType === 'THICKNESS' ? '' : 'success'" size="small" effect="plain">
|
||||||
}}</span>
|
{{ scope.row.warningType === 'LENGTH' ? '长度' : scope.row.warningType === 'THICKNESS' ? '厚度' : '宽度' }}
|
||||||
|
</el-tag>
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column label="工序" align="center" prop="actionType">
|
<el-table-column label="工序" align="center" prop="actionType">
|
||||||
@@ -99,6 +108,7 @@
|
|||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column label="入场卷号" align="center" prop="coilVo.enterCoilNo" />
|
<el-table-column label="入场卷号" align="center" prop="coilVo.enterCoilNo" />
|
||||||
<el-table-column label="当前卷号" align="center" prop="coilVo.currentCoilNo" />
|
<el-table-column label="当前卷号" align="center" prop="coilVo.currentCoilNo" />
|
||||||
|
<el-table-column label="品质" align="center" prop="coilVo.qualityStatus" />
|
||||||
<el-table-column label="发生时间" align="center" prop="createTime" width="180">
|
<el-table-column label="发生时间" align="center" prop="createTime" width="180">
|
||||||
<!-- 如果是今天的标红显示 -->
|
<!-- 如果是今天的标红显示 -->
|
||||||
<template slot-scope="scope">
|
<template slot-scope="scope">
|
||||||
@@ -119,87 +129,103 @@
|
|||||||
<el-table-column label="告警说明" align="center" prop="warningMsg" show-overflow-tooltip />
|
<el-table-column label="告警说明" align="center" prop="warningMsg" show-overflow-tooltip />
|
||||||
<el-table-column label="告警状态" align="center" prop="warningStatus">
|
<el-table-column label="告警状态" align="center" prop="warningStatus">
|
||||||
<template slot-scope="scope">
|
<template slot-scope="scope">
|
||||||
<span>{{ scope.row.warningStatus == 0 ? '未处理' : scope.row.warningStatus == 1 ? '已处理' : '已忽略' }}</span>
|
<div class="status-cell">
|
||||||
|
<el-tag
|
||||||
|
:type="scope.row.warningStatus == 0 ? 'danger' : scope.row.warningStatus == 1 ? 'success' : 'info'"
|
||||||
|
size="small"
|
||||||
|
effect="plain"
|
||||||
|
>
|
||||||
|
{{ scope.row.warningStatus == 0 ? '未处理' : scope.row.warningStatus == 1 ? '已处理' : '已忽略' }}
|
||||||
|
</el-tag>
|
||||||
|
</div>
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column label="处理人" align="center" prop="handleBy" />
|
|
||||||
<el-table-column label="处理时间" align="center" prop="handleTime" width="180">
|
|
||||||
<template slot-scope="scope">
|
|
||||||
<span>{{ parseTime(scope.row.handleTime, '{y}-{m}-{d}') }}</span>
|
|
||||||
</template>
|
|
||||||
</el-table-column>
|
|
||||||
<!-- <el-table-column label="处理备注" align="center" prop="handleRemark" /> -->
|
|
||||||
<!-- <el-table-column label="备注" align="center" prop="remark" /> -->
|
<!-- <el-table-column label="备注" align="center" prop="remark" /> -->
|
||||||
<el-table-column label="操作" align="center" class-name="small-padding fixed-width">
|
<el-table-column label="操作" align="center" class-name="small-padding fixed-width">
|
||||||
<template slot-scope="scope">
|
<template slot-scope="scope">
|
||||||
<el-button size="mini" type="text" icon="el-icon-edit" @click="handleHandle(scope.row)">处理</el-button>
|
<el-button size="mini" type="text" icon="el-icon-edit" @click="handleHandle(scope.row)">处理</el-button>
|
||||||
<el-button size="mini" type="text" icon="el-icon-edit" @click="handleIgnore(scope.row)">忽略</el-button>
|
<el-button size="mini" type="text" icon="el-icon-edit" @click="handleIgnore(scope.row)">忽略</el-button>
|
||||||
|
<el-button size="mini" type="text" icon="el-icon-view" @click="showDetail(scope.row)">详情</el-button>
|
||||||
<el-button size="mini" type="text" icon="el-icon-delete" @click="handleDelete(scope.row)">删除</el-button>
|
<el-button size="mini" type="text" icon="el-icon-delete" @click="handleDelete(scope.row)">删除</el-button>
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
</el-table>
|
</el-table>
|
||||||
|
|
||||||
<pagination v-show="total > 0" :total="total" :page.sync="queryParams.pageNum" :limit.sync="queryParams.pageSize"
|
<pagination
|
||||||
@pagination="getList" />
|
v-show="total > 0"
|
||||||
|
:total="total"
|
||||||
|
:page.sync="queryParams.pageNum"
|
||||||
|
:limit.sync="queryParams.pageSize"
|
||||||
|
@pagination="getList"
|
||||||
|
/>
|
||||||
|
|
||||||
<!-- 添加或修改钢卷告警对话框 -->
|
<!-- 告警详情弹窗 -->
|
||||||
<!-- <el-dialog :title="title" :visible.sync="open" width="500px" append-to-body>
|
<el-dialog title="告警详情" :visible.sync="detailDialogVisible" width="1400px" append-to-body>
|
||||||
<el-form ref="form" :model="form" :rules="rules" label-width="80px">
|
<div v-if="detailData.warningId" v-loading="detailLoading">
|
||||||
<el-form-item label="钢卷ID" prop="coilId">
|
<el-divider content-position="left">钢卷信息</el-divider>
|
||||||
<el-input v-model="form.coilId" placeholder="请输入钢卷ID" />
|
<CoilInfoRender :coilInfo="detailData.coilVo" />
|
||||||
</el-form-item>
|
|
||||||
<el-form-item label="理论值" prop="theoreticalVal">
|
<el-divider content-position="left">告警信息</el-divider>
|
||||||
<el-input v-model="form.theoreticalVal" placeholder="请输入理论值" />
|
<el-descriptions :column="2" border size="small">
|
||||||
</el-form-item>
|
<el-descriptions-item label="告警类型">
|
||||||
<el-form-item label="实测值" prop="actualVal">
|
<el-tag :type="detailData.warningType === 'LENGTH' ? 'warning' : detailData.warningType === 'THICKNESS' ? '' : 'success'" size="small" effect="plain">
|
||||||
<el-input v-model="form.actualVal" placeholder="请输入实测值" />
|
{{ detailData.warningType === 'LENGTH' ? '长度' : detailData.warningType === 'THICKNESS' ? '厚度' : '宽度' }}
|
||||||
</el-form-item>
|
</el-tag>
|
||||||
<el-form-item label="允许偏差" prop="allowDeviation">
|
</el-descriptions-item>
|
||||||
<el-input v-model="form.allowDeviation" placeholder="请输入允许偏差" />
|
<el-descriptions-item label="工序">
|
||||||
</el-form-item>
|
<dict-tag :options="dict.type.action_type" :value="detailData.actionType" />
|
||||||
<el-form-item label="实际偏差值" prop="deviationValue">
|
</el-descriptions-item>
|
||||||
<el-input v-model="form.deviationValue" placeholder="请输入实际偏差值" />
|
<el-descriptions-item label="告警状态">
|
||||||
</el-form-item>
|
<el-tag
|
||||||
<el-form-item label="偏差率(%)" prop="deviationRate">
|
:type="detailData.warningStatus == 0 ? 'danger' : detailData.warningStatus == 1 ? 'success' : 'info'"
|
||||||
<el-input v-model="form.deviationRate" placeholder="请输入偏差率(%)" />
|
size="small"
|
||||||
</el-form-item>
|
effect="plain"
|
||||||
<el-form-item label="告警级别(WARNING/ERROR/CRITICAL)" prop="warningLevel">
|
>
|
||||||
<el-input v-model="form.warningLevel" placeholder="请输入告警级别(WARNING/ERROR/CRITICAL)" />
|
{{ detailData.warningStatus == 0 ? '未处理' : detailData.warningStatus == 1 ? '已处理' : '已忽略' }}
|
||||||
</el-form-item>
|
</el-tag>
|
||||||
<el-form-item label="告警说明" prop="warningMsg">
|
</el-descriptions-item>
|
||||||
<el-input v-model="form.warningMsg" placeholder="请输入告警说明" />
|
<el-descriptions-item label="发生时间">
|
||||||
</el-form-item>
|
{{ parseTime(detailData.createTime, '{y}-{m}-{d} {h}:{i}:{s}') }}
|
||||||
<el-form-item label="处理人" prop="handleBy">
|
</el-descriptions-item>
|
||||||
<el-input v-model="form.handleBy" placeholder="请输入处理人" />
|
<el-descriptions-item label="推论值">{{ detailData.theoreticalVal }}</el-descriptions-item>
|
||||||
</el-form-item>
|
<el-descriptions-item label="实际值">{{ detailData.actualVal }}</el-descriptions-item>
|
||||||
<el-form-item label="处理时间" prop="handleTime">
|
<el-descriptions-item label="允许偏差">{{ detailData.allowDeviation }}</el-descriptions-item>
|
||||||
<el-date-picker clearable
|
<el-descriptions-item label="实际偏差">{{ detailData.deviationValue }}</el-descriptions-item>
|
||||||
v-model="form.handleTime"
|
<el-descriptions-item label="告警说明" :span="2">{{ detailData.warningMsg }}</el-descriptions-item>
|
||||||
type="datetime"
|
</el-descriptions>
|
||||||
value-format="yyyy-MM-dd HH:mm:ss"
|
|
||||||
placeholder="请选择处理时间">
|
<el-divider v-if="detailData.warningStatus != 0" content-position="left">处理信息</el-divider>
|
||||||
</el-date-picker>
|
<div v-if="detailData.warningStatus != 0" class="handle-detail">
|
||||||
</el-form-item>
|
<div class="handle-remark-body">"{{ detailData.handleRemark }}"</div>
|
||||||
|
<div class="handle-meta-row">
|
||||||
|
<span>{{ detailData.handleBy }}</span>
|
||||||
|
<span class="handle-meta-sep">·</span>
|
||||||
|
<span>{{ parseTime(detailData.handleTime, '{y}-{m}-{d} {h}:{i}:{s}') }}</span>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</el-dialog>
|
||||||
|
|
||||||
|
<!-- 处理备注弹窗 -->
|
||||||
|
<el-dialog title="填写处理备注" :visible.sync="handleRemarkDialogVisible" width="500px" append-to-body>
|
||||||
|
<el-form ref="handleRemarkForm" :model="handleRemarkForm" :rules="handleRemarkRules" label-width="80px">
|
||||||
<el-form-item label="处理备注" prop="handleRemark">
|
<el-form-item label="处理备注" prop="handleRemark">
|
||||||
<el-input v-model="form.handleRemark" placeholder="请输入处理备注" />
|
<el-input v-model="handleRemarkForm.handleRemark" type="textarea" placeholder="请输入处理备注" :rows="4" />
|
||||||
</el-form-item>
|
|
||||||
<el-form-item label="备注" prop="remark">
|
|
||||||
<el-input v-model="form.remark" placeholder="请输入备注" />
|
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-form>
|
</el-form>
|
||||||
<div slot="footer" class="dialog-footer">
|
<div slot="footer" class="dialog-footer">
|
||||||
<el-button :loading="buttonLoading" type="primary" @click="submitForm">确 定</el-button>
|
<el-button @click="handleRemarkDialogVisible = false">取 消</el-button>
|
||||||
<el-button @click="cancel">取 消</el-button>
|
<el-button type="primary" @click="confirmHandleRemark">确 定</el-button>
|
||||||
</div>
|
</div>
|
||||||
</el-dialog> -->
|
</el-dialog>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
import { listMaterialWarning, getMaterialWarning, delMaterialWarning, addMaterialWarning, updateMaterialWarning, batchHandleMaterial, batchHandleHistory } from "@/api/wms/materialWarning";
|
import { listMaterialWarning, getMaterialWarning, delMaterialWarning, addMaterialWarning, updateMaterialWarning, batchHandleMaterial, batchHandleHistory } from '@/api/wms/materialWarning'
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
name: "MaterialWarning",
|
name: 'MaterialWarning',
|
||||||
data() {
|
data() {
|
||||||
return {
|
return {
|
||||||
// 按钮loading
|
// 按钮loading
|
||||||
@@ -219,9 +245,25 @@ export default {
|
|||||||
// 钢卷告警表格数据
|
// 钢卷告警表格数据
|
||||||
materialWarningList: [],
|
materialWarningList: [],
|
||||||
// 弹出层标题
|
// 弹出层标题
|
||||||
title: "",
|
title: '',
|
||||||
// 是否显示弹出层
|
// 是否显示弹出层
|
||||||
open: false,
|
open: false,
|
||||||
|
// 详情弹窗
|
||||||
|
detailDialogVisible: false,
|
||||||
|
detailLoading: false,
|
||||||
|
detailData: {},
|
||||||
|
// 处理备注弹窗
|
||||||
|
handleRemarkDialogVisible: false,
|
||||||
|
handleRemarkMode: 'single',
|
||||||
|
handleRemarkTarget: null,
|
||||||
|
handleRemarkForm: {
|
||||||
|
handleRemark: ''
|
||||||
|
},
|
||||||
|
handleRemarkRules: {
|
||||||
|
handleRemark: [
|
||||||
|
{ required: true, message: '处理备注不能为空', trigger: 'blur' }
|
||||||
|
]
|
||||||
|
},
|
||||||
// 查询参数
|
// 查询参数
|
||||||
queryParams: {
|
queryParams: {
|
||||||
pageNum: 1,
|
pageNum: 1,
|
||||||
@@ -241,205 +283,199 @@ export default {
|
|||||||
handleRemark: undefined,
|
handleRemark: undefined,
|
||||||
onlyToday: true,
|
onlyToday: true,
|
||||||
createStartTime: undefined,
|
createStartTime: undefined,
|
||||||
createEndTime: undefined,
|
createEndTime: undefined
|
||||||
},
|
},
|
||||||
// 表单参数
|
// 表单参数
|
||||||
form: {},
|
form: {},
|
||||||
// 表单校验
|
// 表单校验
|
||||||
rules: {
|
rules: {
|
||||||
warningId: [
|
warningId: [
|
||||||
{ required: true, message: "告警ID不能为空", trigger: "blur" }
|
{ required: true, message: '告警ID不能为空', trigger: 'blur' }
|
||||||
],
|
],
|
||||||
coilId: [
|
coilId: [
|
||||||
{ required: true, message: "钢卷ID不能为空", trigger: "blur" }
|
{ required: true, message: '钢卷ID不能为空', trigger: 'blur' }
|
||||||
],
|
],
|
||||||
warningType: [
|
warningType: [
|
||||||
{ required: true, message: "告警类型(LENGTH=长度, THICKNESS=厚度, WIDTH=宽度)不能为空", trigger: "change" }
|
{ required: true, message: '告警类型(LENGTH=长度, THICKNESS=厚度, WIDTH=宽度)不能为空', trigger: 'change' }
|
||||||
],
|
],
|
||||||
theoreticalVal: [
|
theoreticalVal: [
|
||||||
{ required: true, message: "理论值不能为空", trigger: "blur" }
|
{ required: true, message: '理论值不能为空', trigger: 'blur' }
|
||||||
],
|
],
|
||||||
actualVal: [
|
actualVal: [
|
||||||
{ required: true, message: "实测值不能为空", trigger: "blur" }
|
{ required: true, message: '实测值不能为空', trigger: 'blur' }
|
||||||
],
|
],
|
||||||
allowDeviation: [
|
allowDeviation: [
|
||||||
{ required: true, message: "允许偏差(数值/百分比)不能为空", trigger: "blur" }
|
{ required: true, message: '允许偏差(数值/百分比)不能为空', trigger: 'blur' }
|
||||||
],
|
],
|
||||||
deviationValue: [
|
deviationValue: [
|
||||||
{ required: true, message: "实际偏差值不能为空", trigger: "blur" }
|
{ required: true, message: '实际偏差值不能为空', trigger: 'blur' }
|
||||||
],
|
],
|
||||||
deviationRate: [
|
deviationRate: [
|
||||||
{ required: true, message: "偏差率(%)不能为空", trigger: "blur" }
|
{ required: true, message: '偏差率(%)不能为空', trigger: 'blur' }
|
||||||
],
|
],
|
||||||
warningLevel: [
|
warningLevel: [
|
||||||
{ required: true, message: "告警级别(WARNING/ERROR/CRITICAL)不能为空", trigger: "blur" }
|
{ required: true, message: '告警级别(WARNING/ERROR/CRITICAL)不能为空', trigger: 'blur' }
|
||||||
],
|
],
|
||||||
warningMsg: [
|
warningMsg: [
|
||||||
{ required: true, message: "告警说明不能为空", trigger: "blur" }
|
{ required: true, message: '告警说明不能为空', trigger: 'blur' }
|
||||||
],
|
],
|
||||||
warningStatus: [
|
warningStatus: [
|
||||||
{ required: true, message: "告警状态(0=未处理,1=已处理,2=已忽略)不能为空", trigger: "change" }
|
{ required: true, message: '告警状态(0=未处理,1=已处理,2=已忽略)不能为空', trigger: 'change' }
|
||||||
],
|
],
|
||||||
handleBy: [
|
handleBy: [
|
||||||
{ required: true, message: "处理人不能为空", trigger: "blur" }
|
{ required: true, message: '处理人不能为空', trigger: 'blur' }
|
||||||
],
|
],
|
||||||
handleTime: [
|
handleTime: [
|
||||||
{ required: true, message: "处理时间不能为空", trigger: "blur" }
|
{ required: true, message: '处理时间不能为空', trigger: 'blur' }
|
||||||
],
|
],
|
||||||
handleRemark: [
|
handleRemark: [
|
||||||
{ required: true, message: "处理备注不能为空", trigger: "blur" }
|
{ required: true, message: '处理备注不能为空', trigger: 'blur' }
|
||||||
],
|
],
|
||||||
delFlag: [
|
delFlag: [
|
||||||
{ required: true, message: "删除标志不能为空", trigger: "blur" }
|
{ required: true, message: '删除标志不能为空', trigger: 'blur' }
|
||||||
],
|
],
|
||||||
createTime: [
|
createTime: [
|
||||||
{ required: true, message: "创建时间不能为空", trigger: "blur" }
|
{ required: true, message: '创建时间不能为空', trigger: 'blur' }
|
||||||
],
|
],
|
||||||
updateTime: [
|
updateTime: [
|
||||||
{ required: true, message: "更新时间不能为空", trigger: "blur" }
|
{ required: true, message: '更新时间不能为空', trigger: 'blur' }
|
||||||
],
|
],
|
||||||
remark: [
|
remark: [
|
||||||
{ required: true, message: "备注不能为空", trigger: "blur" }
|
{ required: true, message: '备注不能为空', trigger: 'blur' }
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
};
|
}
|
||||||
},
|
},
|
||||||
dicts: ['action_type'],
|
dicts: ['action_type'],
|
||||||
created() {
|
created() {
|
||||||
this.getList();
|
this.getList()
|
||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
/** 查询钢卷告警列表 */
|
/** 查询钢卷告警列表 */
|
||||||
getList() {
|
getList() {
|
||||||
this.loading = true;
|
this.loading = true
|
||||||
if (this.queryParams.onlyToday) {
|
if (this.queryParams.onlyToday) {
|
||||||
const today = new Date();
|
const today = new Date()
|
||||||
const y = today.getFullYear();
|
const y = today.getFullYear()
|
||||||
const m = String(today.getMonth() + 1).padStart(2, '0');
|
const m = String(today.getMonth() + 1).padStart(2, '0')
|
||||||
const d = String(today.getDate()).padStart(2, '0');
|
const d = String(today.getDate()).padStart(2, '0')
|
||||||
this.queryParams.createStartTime = `${y}-${m}-${d} 00:00:00`;
|
this.queryParams.createStartTime = `${y}-${m}-${d} 00:00:00`
|
||||||
this.queryParams.createEndTime = `${y}-${m}-${d} 23:59:59`;
|
this.queryParams.createEndTime = `${y}-${m}-${d} 23:59:59`
|
||||||
} else {
|
} else {
|
||||||
this.queryParams.createStartTime = undefined;
|
this.queryParams.createStartTime = undefined
|
||||||
this.queryParams.createEndTime = undefined;
|
this.queryParams.createEndTime = undefined
|
||||||
}
|
}
|
||||||
listMaterialWarning(this.queryParams).then(response => {
|
listMaterialWarning(this.queryParams).then(response => {
|
||||||
this.materialWarningList = response.rows;
|
this.materialWarningList = response.rows
|
||||||
this.total = response.total;
|
this.total = response.total
|
||||||
this.loading = false;
|
this.loading = false
|
||||||
});
|
})
|
||||||
},
|
},
|
||||||
/** 忽略按钮操作 */
|
/** 忽略按钮操作 */
|
||||||
handleIgnore(row) {
|
handleIgnore(row) {
|
||||||
this.loading = true;
|
this.$modal.confirm('确认忽略该告警?').then(() => {
|
||||||
updateMaterialWarning({ ...row, warningStatus: 2, handleBy: this.$store.state.user.name, handleTime: this.parseTime(new Date(), '{y}-{m}-{d} {h}:{i}:{s}') }).then(response => {
|
this.loading = true
|
||||||
this.loading = false;
|
updateMaterialWarning({ ...row, warningStatus: 2, handleBy: this.$store.state.user.name, handleTime: this.parseTime(new Date(), '{y}-{m}-{d} {h}:{i}:{s}') }).then(response => {
|
||||||
this.$message({
|
this.loading = false
|
||||||
message: "忽略成功",
|
this.$modal.msgSuccess('忽略成功')
|
||||||
type: "success"
|
this.getList()
|
||||||
});
|
})
|
||||||
this.getList();
|
}).catch(() => {})
|
||||||
});
|
|
||||||
},
|
},
|
||||||
/** 行样式区分长度告警和厚度告警 */
|
/** 行样式区分长度告警和厚度告警 */
|
||||||
getRowClassName({ row }) {
|
getRowClassName({ row }) {
|
||||||
if (row.warningType === 'LENGTH') return 'warning-row-length';
|
if (row.warningType === 'LENGTH') return 'warning-row-length'
|
||||||
if (row.warningType === 'THICKNESS') return 'warning-row-thickness';
|
if (row.warningType === 'THICKNESS') return 'warning-row-thickness'
|
||||||
return '';
|
return ''
|
||||||
},
|
},
|
||||||
/** 判断是否是今天的 */
|
/** 判断是否是今天的 */
|
||||||
isToday(date) {
|
isToday(date) {
|
||||||
const today = new Date();
|
const today = new Date()
|
||||||
const year = today.getFullYear();
|
const year = today.getFullYear()
|
||||||
const month = today.getMonth() + 1;
|
const month = today.getMonth() + 1
|
||||||
const day = today.getDate();
|
const day = today.getDate()
|
||||||
const dateObj = new Date(date);
|
const dateObj = new Date(date)
|
||||||
const year2 = dateObj.getFullYear();
|
const year2 = dateObj.getFullYear()
|
||||||
const month2 = dateObj.getMonth() + 1;
|
const month2 = dateObj.getMonth() + 1
|
||||||
const day2 = dateObj.getDate();
|
const day2 = dateObj.getDate()
|
||||||
return year === year2 && month === month2 && day === day2;
|
return year === year2 && month === month2 && day === day2
|
||||||
},
|
},
|
||||||
/** 处理按钮操作 */
|
/** 处理按钮操作 */
|
||||||
handleHandle(row) {
|
handleHandle(row) {
|
||||||
this.loading = true;
|
this.$modal.confirm('确认将该告警标记为已处理?').then(() => {
|
||||||
// 填写处理人和处理时间
|
this.handleRemarkMode = 'single'
|
||||||
updateMaterialWarning({ ...row, warningStatus: 1, handleBy: this.$store.state.user.name, handleTime: this.parseTime(new Date(), '{y}-{m}-{d} {h}:{i}:{s}') }).then(response => {
|
this.handleRemarkTarget = row
|
||||||
this.loading = false;
|
this.handleRemarkForm.handleRemark = ''
|
||||||
this.$message({
|
this.handleRemarkDialogVisible = true
|
||||||
message: "处理成功",
|
this.$nextTick(() => {
|
||||||
type: "success"
|
this.$refs.handleRemarkForm && this.$refs.handleRemarkForm.clearValidate()
|
||||||
});
|
})
|
||||||
this.getList();
|
}).catch(() => {})
|
||||||
});
|
|
||||||
},
|
},
|
||||||
/** 批量处理按钮操作 */
|
/** 批量处理按钮操作 */
|
||||||
handleBatchProcess() {
|
handleBatchProcess() {
|
||||||
if (this.ids.length === 0) {
|
if (this.ids.length === 0) {
|
||||||
this.$modal.msgWarning("请至少选择一条记录");
|
this.$modal.msgWarning('请至少选择一条记录')
|
||||||
return;
|
return
|
||||||
}
|
}
|
||||||
this.$modal.confirm('确认将选中的 ' + this.ids.length + ' 条告警标记为已处理?').then(() => {
|
this.$modal.confirm('确认将选中的 ' + this.ids.length + ' 条告警标记为已处理?').then(() => {
|
||||||
this.loading = true;
|
this.handleRemarkMode = 'batch'
|
||||||
return batchHandleMaterial({ warningIds: this.ids, warningStatus: 1 });
|
this.handleRemarkTarget = this.ids
|
||||||
}).then(() => {
|
this.handleRemarkForm.handleRemark = ''
|
||||||
this.loading = false;
|
this.handleRemarkDialogVisible = true
|
||||||
this.$modal.msgSuccess("批量处理成功");
|
this.$nextTick(() => {
|
||||||
this.getList();
|
this.$refs.handleRemarkForm && this.$refs.handleRemarkForm.clearValidate()
|
||||||
}).catch(() => {
|
})
|
||||||
}).finally(() => {
|
}).catch(() => {})
|
||||||
this.loading = false;
|
|
||||||
});
|
|
||||||
},
|
},
|
||||||
/** 批量忽略按钮操作 */
|
/** 批量忽略按钮操作 */
|
||||||
handleBatchIgnore() {
|
handleBatchIgnore() {
|
||||||
if (this.ids.length === 0) {
|
if (this.ids.length === 0) {
|
||||||
this.$modal.msgWarning("请至少选择一条记录");
|
this.$modal.msgWarning('请至少选择一条记录')
|
||||||
return;
|
return
|
||||||
}
|
}
|
||||||
this.$modal.confirm('确认将选中的 ' + this.ids.length + ' 条告警标记为已忽略?').then(() => {
|
this.$modal.confirm('确认将选中的 ' + this.ids.length + ' 条告警标记为已忽略?').then(() => {
|
||||||
this.loading = true;
|
this.loading = true
|
||||||
return batchHandleMaterial({ warningIds: this.ids, warningStatus: 2 });
|
return batchHandleMaterial({ warningIds: this.ids, warningStatus: 2 })
|
||||||
}).then(() => {
|
}).then(() => {
|
||||||
this.loading = false;
|
this.loading = false
|
||||||
this.$modal.msgSuccess("批量忽略成功");
|
this.$modal.msgSuccess('批量忽略成功')
|
||||||
this.getList();
|
this.getList()
|
||||||
}).catch(() => {
|
}).catch(() => {
|
||||||
}).finally(() => {
|
}).finally(() => {
|
||||||
this.loading = false;
|
this.loading = false
|
||||||
});
|
})
|
||||||
},
|
},
|
||||||
/** 处理历史告警按钮操作(批量标记今天以前的所有记录为已处理) */
|
/** 处理历史告警按钮操作(批量标记今天以前的所有记录为已处理) */
|
||||||
handleBatchProcessHistory() {
|
handleBatchProcessHistory() {
|
||||||
this.$modal.confirm('确认将今天以前的所有告警标记为已处理?').then(() => {
|
this.$modal.confirm('确认将今天以前的所有告警标记为已处理?').then(() => {
|
||||||
this.loading = true;
|
this.handleRemarkMode = 'history'
|
||||||
return batchHandleHistory({ warningStatus: 1 });
|
this.handleRemarkTarget = null
|
||||||
}).then(() => {
|
this.handleRemarkForm.handleRemark = ''
|
||||||
this.loading = false;
|
this.handleRemarkDialogVisible = true
|
||||||
this.$modal.msgSuccess("处理历史告警成功");
|
this.$nextTick(() => {
|
||||||
this.getList();
|
this.$refs.handleRemarkForm && this.$refs.handleRemarkForm.clearValidate()
|
||||||
}).catch(() => {
|
})
|
||||||
}).finally(() => {
|
}).catch(() => {})
|
||||||
this.loading = false;
|
|
||||||
});
|
|
||||||
},
|
},
|
||||||
/** 忽略历史告警按钮操作(批量标记今天以前的所有记录为已忽略) */
|
/** 忽略历史告警按钮操作(批量标记今天以前的所有记录为已忽略) */
|
||||||
handleBatchIgnoreHistory() {
|
handleBatchIgnoreHistory() {
|
||||||
this.$modal.confirm('确认将今天以前的所有告警标记为已忽略?').then(() => {
|
this.$modal.confirm('确认将今天以前的所有告警标记为已忽略?').then(() => {
|
||||||
this.loading = true;
|
this.loading = true
|
||||||
return batchHandleHistory({ warningStatus: 2 });
|
return batchHandleHistory({ warningStatus: 2 })
|
||||||
}).then(() => {
|
}).then(() => {
|
||||||
this.loading = false;
|
this.loading = false
|
||||||
this.$modal.msgSuccess("忽略历史告警成功");
|
this.$modal.msgSuccess('忽略历史告警成功')
|
||||||
this.getList();
|
this.getList()
|
||||||
}).catch(() => {
|
}).catch(() => {
|
||||||
}).finally(() => {
|
}).finally(() => {
|
||||||
this.loading = false;
|
this.loading = false
|
||||||
});
|
})
|
||||||
},
|
},
|
||||||
// 取消按钮
|
// 取消按钮
|
||||||
cancel() {
|
cancel() {
|
||||||
this.open = false;
|
this.open = false
|
||||||
this.reset();
|
this.reset()
|
||||||
},
|
},
|
||||||
// 表单重置
|
// 表单重置
|
||||||
reset() {
|
reset() {
|
||||||
@@ -464,18 +500,18 @@ export default {
|
|||||||
updateTime: undefined,
|
updateTime: undefined,
|
||||||
updateBy: undefined,
|
updateBy: undefined,
|
||||||
remark: undefined
|
remark: undefined
|
||||||
};
|
}
|
||||||
this.resetForm("form");
|
this.resetForm('form')
|
||||||
},
|
},
|
||||||
/** 搜索按钮操作 */
|
/** 搜索按钮操作 */
|
||||||
handleQuery() {
|
handleQuery() {
|
||||||
this.queryParams.pageNum = 1;
|
this.queryParams.pageNum = 1
|
||||||
this.getList();
|
this.getList()
|
||||||
},
|
},
|
||||||
/** 重置按钮操作 */
|
/** 重置按钮操作 */
|
||||||
resetQuery() {
|
resetQuery() {
|
||||||
this.resetForm("queryForm");
|
this.resetForm('queryForm')
|
||||||
this.handleQuery();
|
this.handleQuery()
|
||||||
},
|
},
|
||||||
// 多选框选中数据
|
// 多选框选中数据
|
||||||
handleSelectionChange(selection) {
|
handleSelectionChange(selection) {
|
||||||
@@ -485,61 +521,130 @@ export default {
|
|||||||
},
|
},
|
||||||
/** 新增按钮操作 */
|
/** 新增按钮操作 */
|
||||||
handleAdd() {
|
handleAdd() {
|
||||||
this.reset();
|
this.reset()
|
||||||
this.open = true;
|
this.open = true
|
||||||
this.title = "添加钢卷告警";
|
this.title = '添加钢卷告警'
|
||||||
},
|
},
|
||||||
/** 修改按钮操作 */
|
/** 修改按钮操作 */
|
||||||
handleUpdate(row) {
|
handleUpdate(row) {
|
||||||
this.loading = true;
|
this.loading = true
|
||||||
this.reset();
|
this.reset()
|
||||||
const warningId = row.warningId || this.ids
|
const warningId = row.warningId || this.ids
|
||||||
getMaterialWarning(warningId).then(response => {
|
getMaterialWarning(warningId).then(response => {
|
||||||
this.loading = false;
|
this.loading = false
|
||||||
this.form = response.data;
|
this.form = response.data
|
||||||
this.open = true;
|
this.open = true
|
||||||
this.title = "修改钢卷告警";
|
this.title = '修改钢卷告警'
|
||||||
});
|
})
|
||||||
},
|
},
|
||||||
/** 提交按钮 */
|
/** 提交按钮 */
|
||||||
submitForm() {
|
submitForm() {
|
||||||
this.$refs["form"].validate(valid => {
|
this.$refs['form'].validate(valid => {
|
||||||
if (valid) {
|
if (valid) {
|
||||||
this.buttonLoading = true;
|
this.buttonLoading = true
|
||||||
if (this.form.warningId != null) {
|
if (this.form.warningId != null) {
|
||||||
updateMaterialWarning(this.form).then(response => {
|
updateMaterialWarning(this.form).then(response => {
|
||||||
this.$modal.msgSuccess("修改成功");
|
this.$modal.msgSuccess('修改成功')
|
||||||
this.open = false;
|
this.open = false
|
||||||
this.getList();
|
this.getList()
|
||||||
}).finally(() => {
|
}).finally(() => {
|
||||||
this.buttonLoading = false;
|
this.buttonLoading = false
|
||||||
});
|
})
|
||||||
} else {
|
} else {
|
||||||
addMaterialWarning(this.form).then(response => {
|
addMaterialWarning(this.form).then(response => {
|
||||||
this.$modal.msgSuccess("新增成功");
|
this.$modal.msgSuccess('新增成功')
|
||||||
this.open = false;
|
this.open = false
|
||||||
this.getList();
|
this.getList()
|
||||||
}).finally(() => {
|
}).finally(() => {
|
||||||
this.buttonLoading = false;
|
this.buttonLoading = false
|
||||||
});
|
})
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
});
|
})
|
||||||
|
},
|
||||||
|
/** 详情按钮操作 */
|
||||||
|
showDetail(row) {
|
||||||
|
this.detailDialogVisible = true
|
||||||
|
// this.detailLoading = true
|
||||||
|
this.detailData = row;
|
||||||
|
// getMaterialWarning(row.warningId).then(response => {
|
||||||
|
// this.detailData = response.data
|
||||||
|
// this.detailLoading = false
|
||||||
|
// }).catch(() => {
|
||||||
|
// this.detailLoading = false
|
||||||
|
// })
|
||||||
|
},
|
||||||
|
/** 确认填写处理备注 */
|
||||||
|
confirmHandleRemark() {
|
||||||
|
this.$refs.handleRemarkForm.validate(valid => {
|
||||||
|
if (!valid) return
|
||||||
|
this.loading = true
|
||||||
|
const handleBy = this.$store.state.user.name
|
||||||
|
const handleTime = this.parseTime(new Date(), '{y}-{m}-{d} {h}:{i}:{s}')
|
||||||
|
const handleRemark = this.handleRemarkForm.handleRemark
|
||||||
|
|
||||||
|
if (this.handleRemarkMode === 'single') {
|
||||||
|
const row = this.handleRemarkTarget
|
||||||
|
updateMaterialWarning({
|
||||||
|
...row,
|
||||||
|
warningStatus: 1,
|
||||||
|
handleBy,
|
||||||
|
handleTime,
|
||||||
|
handleRemark
|
||||||
|
}).then(() => {
|
||||||
|
this.loading = false
|
||||||
|
this.handleRemarkDialogVisible = false
|
||||||
|
this.$modal.msgSuccess('处理成功')
|
||||||
|
this.getList()
|
||||||
|
}).catch(() => {
|
||||||
|
this.loading = false
|
||||||
|
})
|
||||||
|
} else if (this.handleRemarkMode === 'batch') {
|
||||||
|
batchHandleMaterial({
|
||||||
|
warningIds: this.handleRemarkTarget,
|
||||||
|
warningStatus: 1,
|
||||||
|
handleBy,
|
||||||
|
handleTime,
|
||||||
|
handleRemark
|
||||||
|
}).then(() => {
|
||||||
|
this.loading = false
|
||||||
|
this.handleRemarkDialogVisible = false
|
||||||
|
this.$modal.msgSuccess('批量处理成功')
|
||||||
|
this.getList()
|
||||||
|
}).catch(() => {
|
||||||
|
this.loading = false
|
||||||
|
})
|
||||||
|
} else if (this.handleRemarkMode === 'history') {
|
||||||
|
batchHandleHistory({
|
||||||
|
warningStatus: 1,
|
||||||
|
handleBy,
|
||||||
|
handleTime,
|
||||||
|
handleRemark
|
||||||
|
}).then(() => {
|
||||||
|
this.loading = false
|
||||||
|
this.handleRemarkDialogVisible = false
|
||||||
|
this.$modal.msgSuccess('处理历史告警成功')
|
||||||
|
this.getList()
|
||||||
|
}).catch(() => {
|
||||||
|
this.loading = false
|
||||||
|
})
|
||||||
|
}
|
||||||
|
})
|
||||||
},
|
},
|
||||||
/** 删除按钮操作 */
|
/** 删除按钮操作 */
|
||||||
handleDelete(row) {
|
handleDelete(row) {
|
||||||
const warningIds = row.warningId || this.ids;
|
const warningIds = row.warningId || this.ids
|
||||||
this.$modal.confirm('是否确认删除钢卷告警编号为"' + warningIds + '"的数据项?').then(() => {
|
this.$modal.confirm('是否确认删除钢卷告警编号为"' + warningIds + '"的数据项?').then(() => {
|
||||||
this.loading = true;
|
this.loading = true
|
||||||
return delMaterialWarning(warningIds);
|
return delMaterialWarning(warningIds)
|
||||||
}).then(() => {
|
}).then(() => {
|
||||||
this.loading = false;
|
this.loading = false
|
||||||
this.getList();
|
this.getList()
|
||||||
this.$modal.msgSuccess("删除成功");
|
this.$modal.msgSuccess('删除成功')
|
||||||
}).catch(() => {
|
}).catch(() => {
|
||||||
}).finally(() => {
|
}).finally(() => {
|
||||||
this.loading = false;
|
this.loading = false
|
||||||
});
|
})
|
||||||
},
|
},
|
||||||
/** 导出按钮操作 */
|
/** 导出按钮操作 */
|
||||||
handleExport() {
|
handleExport() {
|
||||||
@@ -548,7 +653,7 @@ export default {
|
|||||||
}, `materialWarning_${new Date().getTime()}.xlsx`)
|
}, `materialWarning_${new Date().getTime()}.xlsx`)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
};
|
}
|
||||||
</script>
|
</script>
|
||||||
<style scoped>
|
<style scoped>
|
||||||
.el-table .warning-row-length {
|
.el-table .warning-row-length {
|
||||||
@@ -557,4 +662,57 @@ export default {
|
|||||||
.el-table .warning-row-thickness {
|
.el-table .warning-row-thickness {
|
||||||
background-color: #ecf5ff;
|
background-color: #ecf5ff;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.status-cell {
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
align-items: center;
|
||||||
|
gap: 6px;
|
||||||
|
padding: 4px 0;
|
||||||
|
}
|
||||||
|
.status-detail {
|
||||||
|
width: 100%;
|
||||||
|
text-align: left;
|
||||||
|
}
|
||||||
|
.status-remark {
|
||||||
|
font-size: 13px;
|
||||||
|
color: #303133;
|
||||||
|
line-height: 1.5;
|
||||||
|
margin-bottom: 4px;
|
||||||
|
font-weight: 500;
|
||||||
|
word-break: break-all;
|
||||||
|
}
|
||||||
|
.status-meta {
|
||||||
|
font-size: 11px;
|
||||||
|
color: #909399;
|
||||||
|
letter-spacing: 0.3px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.handle-detail {
|
||||||
|
padding: 12px 0;
|
||||||
|
}
|
||||||
|
.handle-remark-body {
|
||||||
|
font-size: 15px;
|
||||||
|
color: #303133;
|
||||||
|
line-height: 1.8;
|
||||||
|
margin-bottom: 12px;
|
||||||
|
padding: 12px 16px;
|
||||||
|
background: #fafafa;
|
||||||
|
border-radius: 0 6px 6px 0;
|
||||||
|
font-style: italic;
|
||||||
|
letter-spacing: 0.5px;
|
||||||
|
}
|
||||||
|
.handle-meta-row {
|
||||||
|
font-size: 13px;
|
||||||
|
color: #909399;
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
gap: 8px;
|
||||||
|
justify-content: flex-start;
|
||||||
|
letter-spacing: 0.4px;
|
||||||
|
}
|
||||||
|
.handle-meta-sep {
|
||||||
|
color: #c0c4cc;
|
||||||
|
font-weight: bold;
|
||||||
|
}
|
||||||
</style>
|
</style>
|
||||||
|
|||||||
@@ -83,6 +83,14 @@
|
|||||||
@keyup.enter.native="handleQuery" />
|
@keyup.enter.native="handleQuery" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
|
|
||||||
|
<el-form-item label="业务员" prop="saleName">
|
||||||
|
<el-input v-model="queryParams.saleName" placeholder="请输入业务员" clearable size="small" />
|
||||||
|
</el-form-item>
|
||||||
|
|
||||||
|
<el-form-item label="合同号" prop="contractNo">
|
||||||
|
<el-input v-model="queryParams.contractNo" placeholder="请输入合同号" clearable size="small" />
|
||||||
|
</el-form-item>
|
||||||
|
|
||||||
<el-form-item v-if="showWaybill" label="发货状态">
|
<el-form-item v-if="showWaybill" label="发货状态">
|
||||||
<el-radio-group v-model="queryParams.status" @change="handleQuery">
|
<el-radio-group v-model="queryParams.status" @change="handleQuery">
|
||||||
<el-radio-button label="">全部</el-radio-button>
|
<el-radio-button label="">全部</el-radio-button>
|
||||||
@@ -136,13 +144,11 @@
|
|||||||
<el-button type="info" plain icon="el-icon-download" size="mini" @click="handleExportAllProps">导出全部</el-button>
|
<el-button type="info" plain icon="el-icon-download" size="mini" @click="handleExportAllProps">导出全部</el-button>
|
||||||
</el-col>
|
</el-col>
|
||||||
|
|
||||||
<el-col :span="2" v-if="canExportAll">
|
<!-- <el-col :span="2" v-if="canExportAll">
|
||||||
<el-button type="info" plain icon="el-icon-printer" size="mini" :disabled="multiple"
|
<el-button type="info" plain icon="el-icon-printer" size="mini" :disabled="multiple"
|
||||||
@click="handleBatchPrintLabel">批量打印标签</el-button>
|
@click="handleBatchPrintLabel">批量打印标签</el-button>
|
||||||
</el-col>
|
|
||||||
<!-- <el-col :span="2" v-if="showWaybill">
|
|
||||||
|
|
||||||
</el-col> -->
|
</el-col> -->
|
||||||
|
|
||||||
<el-col :span="1.5" v-if="showOrderBy">
|
<el-col :span="1.5" v-if="showOrderBy">
|
||||||
<el-checkbox v-model="queryParams.orderBy" v-loading="loading" @change="getList"
|
<el-checkbox v-model="queryParams.orderBy" v-loading="loading" @change="getList"
|
||||||
label="orderBy">按实际库区排序</el-checkbox>
|
label="orderBy">按实际库区排序</el-checkbox>
|
||||||
@@ -187,6 +193,7 @@
|
|||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column label="业务员" align="center" prop="saleName" width="60" />
|
<el-table-column label="业务员" align="center" prop="saleName" width="60" />
|
||||||
|
<el-table-column label="合同号" align="center" prop="contractNo" width="120" />
|
||||||
<el-table-column v-if="showAbnormal" label="异常数量" align="center" prop="abnormalCount"></el-table-column>
|
<el-table-column v-if="showAbnormal" label="异常数量" align="center" prop="abnormalCount"></el-table-column>
|
||||||
<el-table-column label="长度 (米)" align="center" prop="length" v-if="showLength" />
|
<el-table-column label="长度 (米)" align="center" prop="length" v-if="showLength" />
|
||||||
<el-table-column label="发货时间" v-if="showExportTime" align="center" prop="exportTime" width="205">
|
<el-table-column label="发货时间" v-if="showExportTime" align="center" prop="exportTime" width="205">
|
||||||
@@ -223,7 +230,7 @@
|
|||||||
<el-table-column v-if="moreColumn" label="材质" prop="material"></el-table-column>
|
<el-table-column v-if="moreColumn" label="材质" prop="material"></el-table-column>
|
||||||
<el-table-column v-if="moreColumn" label="厂家" prop="manufacturer"></el-table-column>
|
<el-table-column v-if="moreColumn" label="厂家" prop="manufacturer"></el-table-column>
|
||||||
<el-table-column v-if="moreColumn" label="表面处理" prop="surfaceTreatmentDesc"></el-table-column>
|
<el-table-column v-if="moreColumn" label="表面处理" prop="surfaceTreatmentDesc"></el-table-column>
|
||||||
<el-table-column v-if="moreColumn" label="品质" prop="qualityStatus"></el-table-column>
|
<el-table-column label="品质" prop="qualityStatus"></el-table-column>
|
||||||
<el-table-column v-if="moreColumn" label="备注" prop="remark" show-overflow-tooltip></el-table-column>
|
<el-table-column v-if="moreColumn" label="备注" prop="remark" show-overflow-tooltip></el-table-column>
|
||||||
<el-table-column v-if="moreColumn" label="切边" prop="trimmingRequirement"></el-table-column>
|
<el-table-column v-if="moreColumn" label="切边" prop="trimmingRequirement"></el-table-column>
|
||||||
<el-table-column v-if="moreColumn" label="包装" prop="packagingRequirement"></el-table-column>
|
<el-table-column v-if="moreColumn" label="包装" prop="packagingRequirement"></el-table-column>
|
||||||
@@ -402,111 +409,219 @@
|
|||||||
@pagination="getList" />
|
@pagination="getList" />
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|
||||||
<!-- 添加或修改钢卷物料对话框 -->
|
<!-- 添加或修改钢卷物料对话框 -->
|
||||||
<el-dialog :title="title" :visible.sync="open" width="500px" append-to-body>
|
<el-dialog :title="title" :visible.sync="open" width="1200px" append-to-body>
|
||||||
<el-form ref="form" :model="form" :rules="rules" label-width="100px">
|
<el-form ref="form" :model="form" :rules="rules" label-width="100px">
|
||||||
<el-form-item label="入场钢卷号" prop="enterCoilNo">
|
<el-row :gutter="20">
|
||||||
<el-input v-model="form.enterCoilNo" placeholder="请输入入场钢卷号" :disabled="form.coilId" />
|
<el-col :span="12">
|
||||||
</el-form-item>
|
<el-form-item label="入场钢卷号" prop="enterCoilNo">
|
||||||
<el-form-item label="当前钢卷号" prop="currentCoilNo">
|
<el-input v-model="form.enterCoilNo" placeholder="请输入入场钢卷号" :disabled="!!form.coilId" />
|
||||||
<el-input v-model="form.currentCoilNo" placeholder="请输入当前钢卷号" />
|
</el-form-item>
|
||||||
</el-form-item>
|
</el-col>
|
||||||
<el-form-item label="厂家原料卷号" prop="supplierCoilNo">
|
<el-col :span="12">
|
||||||
<el-input v-model="form.supplierCoilNo" placeholder="请输入厂家原料卷号" />
|
<el-form-item label="当前钢卷号" prop="currentCoilNo">
|
||||||
</el-form-item>
|
<el-input v-model.trim="form.currentCoilNo" placeholder="请输入当前钢卷号" />
|
||||||
<el-form-item label="所在库位" prop="warehouseId">
|
</el-form-item>
|
||||||
<warehouse-select v-model="form.warehouseId" placeholder="请选择仓库/库区/库位" style="width: 100%;" clearable />
|
</el-col>
|
||||||
</el-form-item>
|
</el-row>
|
||||||
<el-form-item label="实际库区" prop="actualWarehouseId">
|
<el-row :gutter="20">
|
||||||
<actual-warehouse-select v-model="form.actualWarehouseId" :clearInput="form.coilId != null"
|
<el-col :span="12">
|
||||||
placeholder="请选择实际库区" style="width: 100%;" clearable />
|
<el-form-item label="厂家原料卷号" prop="supplierCoilNo">
|
||||||
</el-form-item>
|
<el-input v-model.trim="form.supplierCoilNo" placeholder="请输入厂家原料卷号" />
|
||||||
<el-form-item label="班组" prop="team">
|
</el-form-item>
|
||||||
<el-select v-model="form.team" placeholder="请选择班组" style="width: 100%">
|
</el-col>
|
||||||
<el-option key="甲" label="甲" value="甲" />
|
<el-col :span="12">
|
||||||
<el-option key="乙" label="乙" value="乙" />
|
<el-form-item label="所在库位" prop="warehouseId">
|
||||||
</el-select>
|
<warehouse-select v-model="form.warehouseId" placeholder="请选择仓库/库区/库位" style="width: 100%;" clearable />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="材料类型" prop="materialType">
|
</el-col>
|
||||||
<el-select v-model="form.materialType" placeholder="请选择材料类型" @change="handleMaterialTypeChange">
|
</el-row>
|
||||||
<el-option label="成品" value="成品" />
|
<el-row :gutter="20">
|
||||||
<el-option label="原料" value="原料" />
|
<el-col :span="12">
|
||||||
</el-select>
|
<el-form-item label="实际库区" prop="actualWarehouseId">
|
||||||
</el-form-item>
|
<actual-warehouse-select v-model="form.actualWarehouseId" placeholder="请选择实际库区" style="width: 100%;"
|
||||||
<el-form-item :label="getItemLabel" prop="itemId">
|
clearable />
|
||||||
<product-select v-if="form.itemType == 'product'" v-model="form.itemId" placeholder="请选择成品"
|
</el-form-item>
|
||||||
style="width: 100%;" clearable />
|
</el-col>
|
||||||
<raw-material-select v-else-if="form.itemType == 'raw_material'" v-model="form.itemId" placeholder="请选择原料"
|
<el-col :span="12">
|
||||||
style="width: 100%;" clearable />
|
<el-form-item label="班组" prop="team">
|
||||||
<div v-else>请先选择材料类型</div>
|
<el-select v-model="form.team" placeholder="请选择班组" style="width: 100%">
|
||||||
</el-form-item>
|
<el-option key="甲" label="甲" value="甲" />
|
||||||
<!-- <el-form-item label="质量状态" prop="qualityStatus">
|
<el-option key="乙" label="乙" value="乙" />
|
||||||
<el-select v-model="form.qualityStatus" placeholder="请选择质量状态" style="width: 100%">
|
</el-select>
|
||||||
<el-option v-for="item in dict.type.coil_quality_status" :key="item.value" :label="item.label"
|
</el-form-item>
|
||||||
:value="item.value" />
|
</el-col>
|
||||||
</el-select>
|
</el-row>
|
||||||
</el-form-item> -->
|
<el-row :gutter="20">
|
||||||
|
<el-col :span="12">
|
||||||
<el-form-item label="切边要求" prop="trimmingRequirement">
|
<el-form-item label="材料类型" prop="materialType">
|
||||||
<el-select v-model="form.trimmingRequirement" placeholder="请选择切边要求" style="width: 100%">
|
<el-select v-model="form.materialType" placeholder="请选择材料类型" @change="handleMaterialTypeChange">
|
||||||
<el-option label="净边料" value="净边料" />
|
<el-option label="成品" value="成品" />
|
||||||
<el-option label="毛边料" value="毛边料" />
|
<el-option label="原料" value="原料" />
|
||||||
</el-select>
|
</el-select>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
<el-form-item label="原料材质" prop="packingStatus">
|
<el-col :span="12">
|
||||||
<el-input v-model="form.packingStatus" placeholder="请输入原料材质">
|
<el-form-item :label="getItemLabel" prop="itemId">
|
||||||
</el-input>
|
<product-select v-if="form.itemType == 'product'" v-model="form.itemId" placeholder="请选择成品"
|
||||||
</el-form-item>
|
style="width: 100%;" clearable />
|
||||||
|
<raw-material-select v-else-if="form.itemType == 'raw_material'" v-model="form.itemId" placeholder="请选择原料"
|
||||||
<el-form-item label="包装要求" prop="packagingRequirement">
|
style="width: 100%;" clearable />
|
||||||
<el-select v-model="form.packagingRequirement" placeholder="请选择包装要求" style="width: 100%">
|
<div v-else>请先选择材料类型</div>
|
||||||
<el-option label="裸包" value="裸包" />
|
</el-form-item>
|
||||||
<el-option label="普包" value="普包" />
|
</el-col>
|
||||||
<el-option label="简包" value="简包" />
|
</el-row>
|
||||||
<el-option label="精包" value="精包" />
|
<el-row :gutter="20">
|
||||||
</el-select>
|
<el-col :span="12">
|
||||||
</el-form-item>
|
<el-form-item label="质量状态" prop="qualityStatus">
|
||||||
<el-form-item label="毛重" prop="grossWeight">
|
<el-select v-model="form.qualityStatus" placeholder="请选择质量状态" style="width: 100%">
|
||||||
<el-input v-model="form.grossWeight" placeholder="请输入毛重" />
|
<el-option v-for="item in dict.type.coil_quality_status" :key="item.value" :label="item.label"
|
||||||
</el-form-item>
|
:value="item.value" />
|
||||||
<el-form-item label="净重" prop="netWeight">
|
</el-select>
|
||||||
<el-input v-model="form.netWeight" placeholder="请输入净重" />
|
</el-form-item>
|
||||||
</el-form-item>
|
</el-col>
|
||||||
<el-form-item label="长度" prop="length" v-if="showLength">
|
<el-col :span="12">
|
||||||
<el-input v-model="form.length" placeholder="请输入长度" />
|
<el-form-item label="切边要求" prop="trimmingRequirement">
|
||||||
</el-form-item>
|
<el-select v-model="form.trimmingRequirement" placeholder="请选择切边要求" style="width: 100%">
|
||||||
<el-form-item label="实测长度(m)" prop="actualLength">
|
<el-option label="净边料" value="净边料" />
|
||||||
<el-input-number :controls="false" v-model="form.actualLength" placeholder="请输入实测长度" type="number"
|
<el-option label="毛边料" value="毛边料" />
|
||||||
:step="0.01" />
|
</el-select>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="实测厚度(mm)" prop="actualThickness" class="form-item-half">
|
</el-col>
|
||||||
<el-input-number :controls="false" v-model="form.actualThickness" placeholder="请输入实测厚度" type="number"
|
</el-row>
|
||||||
:step="0.01" />
|
<el-row :gutter="20">
|
||||||
</el-form-item>
|
<el-col :span="12">
|
||||||
<el-form-item label="实测宽度(mm)" prop="actualWidth">
|
<el-form-item label="原料材质" prop="packingStatus">
|
||||||
<el-input-number :controls="false" v-model="form.actualWidth" placeholder="请输入实测宽度" type="number"
|
<el-input v-model="form.packingStatus" placeholder="请输入原料材质" />
|
||||||
:step="0.01" />
|
</el-form-item>
|
||||||
</el-form-item>
|
</el-col>
|
||||||
<el-form-item label="业务目的" prop="businessPurpose">
|
<el-col :span="12">
|
||||||
<el-select v-model="form.businessPurpose" placeholder="业务目的" filterable>
|
<el-form-item label="包装要求" prop="packagingRequirement">
|
||||||
<el-option v-for="item in dict.type.coil_business_purpose" :key="item.value" :value="item.value"
|
<el-select v-model="form.packagingRequirement" placeholder="请选择包装要求" style="width: 100%">
|
||||||
:label="item.label" />
|
<el-option label="裸包" value="裸包" />
|
||||||
</el-select>
|
<el-option label="普包" value="普包" />
|
||||||
</el-form-item>
|
<el-option label="简包" value="简包" />
|
||||||
<el-form-item label="调制度" prop="temperGrade">
|
<el-option label="精包" value="精包" />
|
||||||
<el-input v-model="form.temperGrade" placeholder="请输入调制度" />
|
</el-select>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="镀层种类" prop="coatingType">
|
</el-col>
|
||||||
<MemoInput storageKey="coatingType" v-model="form.coatingType" placeholder="请输入镀层种类" />
|
</el-row>
|
||||||
</el-form-item>
|
<el-row :gutter="20">
|
||||||
<el-form-item label="钢卷表面处理" prop="coilSurfaceTreatment">
|
<el-col :span="12">
|
||||||
<MemoInput storageKey="surfaceTreatmentDesc" v-model="form.coilSurfaceTreatment" placeholder="请输入钢卷表面处理" />
|
<el-form-item label="毛重" prop="grossWeight">
|
||||||
</el-form-item>
|
<el-input v-model="form.grossWeight" placeholder="请输入毛重" />
|
||||||
<el-form-item label="备注" prop="remark">
|
</el-form-item>
|
||||||
<el-input v-model="form.remark" placeholder="请输入备注" />
|
</el-col>
|
||||||
</el-form-item>
|
<el-col :span="12">
|
||||||
|
<el-form-item label="净重" prop="netWeight">
|
||||||
|
<el-input v-model="form.netWeight" placeholder="请输入净重" />
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
</el-row>
|
||||||
|
<el-row :gutter="20">
|
||||||
|
<el-col :span="12">
|
||||||
|
<el-form-item label="实测长度(mm)" prop="actualLength">
|
||||||
|
<el-input-number :controls="false" v-model="form.actualLength" placeholder="请输入实测长度" type="number"
|
||||||
|
:step="0.01" />
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="12">
|
||||||
|
<el-form-item label="实测宽度(mm)" prop="actualWidth">
|
||||||
|
<el-input-number :controls="false" v-model="form.actualWidth" placeholder="请输入实测宽度" type="number"
|
||||||
|
:step="0.01" />
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
</el-row>
|
||||||
|
<el-row :gutter="20">
|
||||||
|
<el-col :span="12">
|
||||||
|
<el-form-item label="实测厚度(mm)" prop="actualThickness">
|
||||||
|
<el-input-number :controls="false" v-model="form.actualThickness" placeholder="请输入实测厚度" type="number"
|
||||||
|
:step="0.01" />
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="12">
|
||||||
|
<el-form-item label="业务目的" prop="businessPurpose">
|
||||||
|
<el-select v-model="form.businessPurpose" placeholder="请选择业务目的" style="width: 100%">
|
||||||
|
<el-option v-for="item in dict.type.coil_business_purpose" :key="item.value" :value="item.value"
|
||||||
|
:label="item.label" />
|
||||||
|
</el-select>
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
</el-row>
|
||||||
|
<el-row :gutter="20">
|
||||||
|
<el-col :span="12">
|
||||||
|
<el-form-item label="调制度" prop="temperGrade">
|
||||||
|
<el-input v-model="form.temperGrade" placeholder="请输入调制度" />
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="12">
|
||||||
|
<el-form-item label="镀层种类" prop="coatingType">
|
||||||
|
<MemoInput storageKey="coatingType" v-model="form.coatingType" placeholder="请输入镀层种类" />
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
</el-row>
|
||||||
|
<el-row :gutter="20">
|
||||||
|
<el-col :span="12">
|
||||||
|
<el-form-item label="钢卷表面处理" prop="coilSurfaceTreatment">
|
||||||
|
<MemoInput storageKey="surfaceTreatmentDesc" v-model="form.coilSurfaceTreatment" placeholder="请输入钢卷表面处理" />
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="12">
|
||||||
|
<el-form-item label="排产厚度(mm)" prop="scheduleThickness">
|
||||||
|
<el-input-number :controls="false" v-model="form.scheduleThickness" placeholder="请输入排产厚度" type="number"
|
||||||
|
:step="0.001" style="width: 100%;" />
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
</el-row>
|
||||||
|
<el-row :gutter="20">
|
||||||
|
<el-col :span="12">
|
||||||
|
<el-form-item label="生产开始时间" prop="productionStartTime">
|
||||||
|
<TimeInput v-model="form.productionStartTime" @input="calculateFormProductionDuration" />
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="12">
|
||||||
|
<el-form-item label="生产结束时间" prop="productionEndTime">
|
||||||
|
<TimeInput v-model="form.productionEndTime" @input="calculateFormProductionDuration" :show-now-button="true" />
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
</el-row>
|
||||||
|
<el-row :gutter="20">
|
||||||
|
<el-col :span="12">
|
||||||
|
<el-form-item label="生产耗时" prop="productionDuration">
|
||||||
|
<el-input v-model="form.formattedDuration" placeholder="自动计算" disabled />
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="12">
|
||||||
|
<el-form-item label="备注" prop="remark">
|
||||||
|
<el-input v-model="form.remark" placeholder="请输入备注" />
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
</el-row>
|
||||||
|
<el-row :gutter="20" v-if="form.coilId">
|
||||||
|
<el-col :span="12">
|
||||||
|
<el-form-item label="创建时间" prop="createTime">
|
||||||
|
<el-date-picker v-model="form.createTime" type="datetime" value-format="yyyy-MM-dd HH:mm:ss"
|
||||||
|
placeholder="请选择创建时间" style="width: 100%;" />
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="12">
|
||||||
|
<el-form-item label="创建人" prop="createBy">
|
||||||
|
<el-select v-model="form.createBy" placeholder="请选择创建人" style="width: 100%;" clearable filterable>
|
||||||
|
<el-option v-for="item in userList" :key="item.userName" :label="item.nickName" :value="item.userName" />
|
||||||
|
</el-select>
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
</el-row>
|
||||||
|
<el-row :gutter="20" v-if="form.coilId">
|
||||||
|
<el-col :span="24">
|
||||||
|
<el-form-item label="绑定合同" prop="contractId">
|
||||||
|
<div style="display: flex; gap: 10px; width: 100%;">
|
||||||
|
<contract-select v-model="form.contractId" placeholder="请选择合同" style="flex: 1;" clearable mode="all" />
|
||||||
|
<el-button type="success" :loading="contractLoading" @click="saveContractRel">保存合同</el-button>
|
||||||
|
</div>
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
</el-row>
|
||||||
</el-form>
|
</el-form>
|
||||||
<div slot="footer" class="dialog-footer">
|
<div slot="footer" class="dialog-footer">
|
||||||
<el-button :loading="buttonLoading" type="primary" @click="submitForm">确 定</el-button>
|
<el-button :loading="buttonLoading" type="primary" @click="submitForm">确 定</el-button>
|
||||||
@@ -848,9 +963,12 @@ import { getCoilTagPrintType } from '@/views/wms/coil/js/coilPrint';
|
|||||||
import DragResizeBox from '@/components/DragResizeBox/index.vue';
|
import DragResizeBox from '@/components/DragResizeBox/index.vue';
|
||||||
import ProcessFlow from '../components/ProcessFlow.vue';
|
import ProcessFlow from '../components/ProcessFlow.vue';
|
||||||
import WarehouseTree from '@/components/KLPService/WarehouseTree/index.vue';
|
import WarehouseTree from '@/components/KLPService/WarehouseTree/index.vue';
|
||||||
|
import TimeInput from "@/components/TimeInput";
|
||||||
|
import ContractSelect from "@/components/KLPService/ContractSelect";
|
||||||
import { listDeliveryWaybillDetail, delDeliveryWaybillDetail } from "@/api/wms/deliveryWaybillDetail";
|
import { listDeliveryWaybillDetail, delDeliveryWaybillDetail } from "@/api/wms/deliveryWaybillDetail";
|
||||||
import { listDeliveryPlan } from "@/api/wms/deliveryPlan";
|
import { listDeliveryPlan } from "@/api/wms/deliveryPlan";
|
||||||
import { addCoilQualityRejudge } from "@/api/wms/coilQualityRejudge";
|
import { addCoilQualityRejudge } from "@/api/wms/coilQualityRejudge";
|
||||||
|
import { listCoilContractRel, addCoilContractRel, updateCoilContractRel } from "@/api/wms/coilContractRel";
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
name: "MaterialCoil",
|
name: "MaterialCoil",
|
||||||
@@ -874,6 +992,8 @@ export default {
|
|||||||
ProcessFlow,
|
ProcessFlow,
|
||||||
DragResizeBox,
|
DragResizeBox,
|
||||||
WarehouseTree,
|
WarehouseTree,
|
||||||
|
TimeInput,
|
||||||
|
ContractSelect,
|
||||||
},
|
},
|
||||||
dicts: ['product_coil_status', 'coil_material', 'coil_itemname', 'coil_manufacturer', 'coil_quality_status', 'wms_next_warehouse', 'coil_business_purpose'],
|
dicts: ['product_coil_status', 'coil_material', 'coil_itemname', 'coil_manufacturer', 'coil_quality_status', 'wms_next_warehouse', 'coil_business_purpose'],
|
||||||
props: {
|
props: {
|
||||||
@@ -1006,6 +1126,8 @@ export default {
|
|||||||
},
|
},
|
||||||
// 按钮loading
|
// 按钮loading
|
||||||
buttonLoading: false,
|
buttonLoading: false,
|
||||||
|
contractLoading: false,
|
||||||
|
contractRelId: null,
|
||||||
showProcessFlow: false,
|
showProcessFlow: false,
|
||||||
// 遮罩层
|
// 遮罩层
|
||||||
loading: true,
|
loading: true,
|
||||||
@@ -1245,9 +1367,7 @@ export default {
|
|||||||
},
|
},
|
||||||
},
|
},
|
||||||
created() {
|
created() {
|
||||||
if (this.showExportTime) {
|
this.getUserList();
|
||||||
this.getUserList();
|
|
||||||
}
|
|
||||||
if (this.useWarehouseIds) {
|
if (this.useWarehouseIds) {
|
||||||
this.warehouseIds = this.warehouseOptions.map(item => item.value).join(',');
|
this.warehouseIds = this.warehouseOptions.map(item => item.value).join(',');
|
||||||
}
|
}
|
||||||
@@ -1725,6 +1845,25 @@ export default {
|
|||||||
this.$set(this.productionTimeForm, 'formattedDuration', '');
|
this.$set(this.productionTimeForm, 'formattedDuration', '');
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
// 计算表单中的生产耗时
|
||||||
|
calculateFormProductionDuration() {
|
||||||
|
const { productionStartTime, productionEndTime } = this.form;
|
||||||
|
if (productionStartTime && productionEndTime) {
|
||||||
|
const start = new Date(productionStartTime).getTime();
|
||||||
|
const end = new Date(productionEndTime).getTime();
|
||||||
|
if (end < start) {
|
||||||
|
this.form.productionDuration = '';
|
||||||
|
this.form.formattedDuration = '';
|
||||||
|
} else {
|
||||||
|
const durationMs = end - start;
|
||||||
|
this.form.productionDuration = Math.round(durationMs / (1000 * 60));
|
||||||
|
this.form.formattedDuration = this.formatDuration(durationMs);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
this.form.productionDuration = '';
|
||||||
|
this.form.formattedDuration = '';
|
||||||
|
}
|
||||||
|
},
|
||||||
// 处理生产时间提交
|
// 处理生产时间提交
|
||||||
submitProductionTimeForm() {
|
submitProductionTimeForm() {
|
||||||
this.$refs.productionTimeForm.validate((valid) => {
|
this.$refs.productionTimeForm.validate((valid) => {
|
||||||
@@ -1986,6 +2125,45 @@ export default {
|
|||||||
this.open = false;
|
this.open = false;
|
||||||
this.reset();
|
this.reset();
|
||||||
},
|
},
|
||||||
|
loadContractRel(coilId) {
|
||||||
|
if (!coilId) {
|
||||||
|
this.contractRelId = null;
|
||||||
|
this.$set(this.form, 'contractId', null);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
listCoilContractRel({ coilId }).then(res => {
|
||||||
|
const rows = res.rows || [];
|
||||||
|
if (rows.length > 0) {
|
||||||
|
this.contractRelId = rows[0].relId;
|
||||||
|
this.$set(this.form, 'contractId', rows[0].contractId);
|
||||||
|
} else {
|
||||||
|
this.contractRelId = null;
|
||||||
|
this.$set(this.form, 'contractId', null);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
},
|
||||||
|
saveContractRel() {
|
||||||
|
this.contractLoading = true;
|
||||||
|
listCoilContractRel({ coilId: this.form.coilId }).then(res => {
|
||||||
|
const rows = res.rows || [];
|
||||||
|
if (rows.length > 0) {
|
||||||
|
return updateCoilContractRel({
|
||||||
|
relId: rows[0].relId,
|
||||||
|
coilId: this.form.coilId,
|
||||||
|
contractId: this.form.contractId
|
||||||
|
});
|
||||||
|
} else {
|
||||||
|
return addCoilContractRel({
|
||||||
|
coilId: this.form.coilId,
|
||||||
|
contractId: this.form.contractId
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}).then(() => {
|
||||||
|
this.$message.success('合同绑定保存成功');
|
||||||
|
}).finally(() => {
|
||||||
|
this.contractLoading = false;
|
||||||
|
});
|
||||||
|
},
|
||||||
// 表单重置
|
// 表单重置
|
||||||
reset() {
|
reset() {
|
||||||
this.form = {
|
this.form = {
|
||||||
@@ -2013,6 +2191,15 @@ export default {
|
|||||||
materialType: '原料',
|
materialType: '原料',
|
||||||
temperGrade: undefined,
|
temperGrade: undefined,
|
||||||
coatingType: undefined,
|
coatingType: undefined,
|
||||||
|
qualityStatus: undefined,
|
||||||
|
actualLength: undefined,
|
||||||
|
actualWidth: undefined,
|
||||||
|
scheduleThickness: undefined,
|
||||||
|
productionStartTime: undefined,
|
||||||
|
productionEndTime: undefined,
|
||||||
|
productionDuration: undefined,
|
||||||
|
formattedDuration: undefined,
|
||||||
|
contractId: undefined,
|
||||||
};
|
};
|
||||||
this.resetForm("form");
|
this.resetForm("form");
|
||||||
},
|
},
|
||||||
@@ -2072,6 +2259,12 @@ export default {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (this.form.productionDuration) {
|
||||||
|
this.form.formattedDuration = this.formatDuration(this.form.productionDuration * 60 * 1000);
|
||||||
|
}
|
||||||
|
|
||||||
|
this.loadContractRel(coilId);
|
||||||
|
|
||||||
this.open = true;
|
this.open = true;
|
||||||
this.title = "修改钢卷物料";
|
this.title = "修改钢卷物料";
|
||||||
});
|
});
|
||||||
@@ -2178,6 +2371,12 @@ export default {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (this.form.productionDuration) {
|
||||||
|
this.form.formattedDuration = this.formatDuration(this.form.productionDuration * 60 * 1000);
|
||||||
|
}
|
||||||
|
|
||||||
|
this.loadContractRel(coilId);
|
||||||
|
|
||||||
this.open = true;
|
this.open = true;
|
||||||
this.title = "修改钢卷物料";
|
this.title = "修改钢卷物料";
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -41,14 +41,15 @@
|
|||||||
<muti-select v-model="queryParams.qualityStatusCsv" :options="dict.type.coil_quality_status"
|
<muti-select v-model="queryParams.qualityStatusCsv" :options="dict.type.coil_quality_status"
|
||||||
placeholder="请选择品质" clearable />
|
placeholder="请选择品质" clearable />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<!-- <el-form-item label="导出模式" prop="abnormalExportCount">
|
<el-form-item label="业务员" prop="saleName">
|
||||||
<el-radio-group v-model="abnormalExportCount">
|
<el-input style="width: 200px;" v-model="queryParams.saleName" placeholder="请输入业务员" clearable
|
||||||
<el-radio-button :label="0">多行导出</el-radio-button>
|
@keyup.enter.native="handleQuery" />
|
||||||
<el-radio-button :label="1">单行拼接</el-radio-button>
|
</el-form-item>
|
||||||
</el-radio-group>
|
<el-form-item label="合同号" prop="contractNo">
|
||||||
</el-form-item> -->
|
<el-input style="width: 200px;" v-model="queryParams.contractNo" placeholder="请输入合同号" clearable
|
||||||
|
@keyup.enter.native="handleQuery" />
|
||||||
|
</el-form-item>
|
||||||
<el-form-item>
|
<el-form-item>
|
||||||
<!-- <el-button type="primary" @click="getList">查询</el-button> -->
|
|
||||||
<el-dropdown split-button type="primary" @click="getList" @command="handleCommand">
|
<el-dropdown split-button type="primary" @click="getList" @command="handleCommand">
|
||||||
查询
|
查询
|
||||||
<el-dropdown-menu slot="dropdown">
|
<el-dropdown-menu slot="dropdown">
|
||||||
@@ -57,14 +58,8 @@
|
|||||||
|
|
||||||
<el-dropdown-item command="exportDataMore">导出产出钢卷(多行)</el-dropdown-item>
|
<el-dropdown-item command="exportDataMore">导出产出钢卷(多行)</el-dropdown-item>
|
||||||
<el-dropdown-item command="exportLossDataMore">导出消耗钢卷(多行)</el-dropdown-item>
|
<el-dropdown-item command="exportLossDataMore">导出消耗钢卷(多行)</el-dropdown-item>
|
||||||
<!-- <el-dropdown-item command="saveOutputReport">保存产出报表</el-dropdown-item>
|
|
||||||
<el-dropdown-item command="saveLossReport">保存消耗报表</el-dropdown-item> -->
|
|
||||||
</el-dropdown-menu>
|
</el-dropdown-menu>
|
||||||
</el-dropdown>
|
</el-dropdown>
|
||||||
<!-- <el-button type="primary" @click="exportData">导出产出钢卷</el-button>
|
|
||||||
<el-button type="primary" @click="exportLossData">导出消耗钢卷</el-button>
|
|
||||||
<el-button type="primary" @click="saveOutputReport">保存产出报表</el-button>
|
|
||||||
<el-button type="primary" @click="saveLossReport">保存消耗报表</el-button> -->
|
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-form>
|
</el-form>
|
||||||
</el-row>
|
</el-row>
|
||||||
|
|||||||
@@ -38,6 +38,15 @@
|
|||||||
<muti-select v-model="queryParams.qualityStatusCsv" :options="dict.type.coil_quality_status"
|
<muti-select v-model="queryParams.qualityStatusCsv" :options="dict.type.coil_quality_status"
|
||||||
placeholder="请选择品质" clearable />
|
placeholder="请选择品质" clearable />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
|
<el-form-item label="业务员" prop="saleName">
|
||||||
|
<el-input style="width: 200px;" v-model="queryParams.saleName" placeholder="请输入业务员" clearable
|
||||||
|
@keyup.enter.native="handleQuery" />
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="合同号" prop="contractNo">
|
||||||
|
<el-input style="width: 200px;" v-model="queryParams.contractNo" placeholder="请输入合同号" clearable
|
||||||
|
@keyup.enter.native="handleQuery" />
|
||||||
|
</el-form-item>
|
||||||
|
|
||||||
<el-form-item prop="endTime">
|
<el-form-item prop="endTime">
|
||||||
<el-button type="primary" @click="getList">查询</el-button>
|
<el-button type="primary" @click="getList">查询</el-button>
|
||||||
<el-button type="primary" @click="exportData">导出</el-button>
|
<el-button type="primary" @click="exportData">导出</el-button>
|
||||||
|
|||||||
@@ -99,6 +99,12 @@
|
|||||||
<warehouse-select v-model="queryParams.warehouseId" placeholder="请选择仓库/库区/库位"
|
<warehouse-select v-model="queryParams.warehouseId" placeholder="请选择仓库/库区/库位"
|
||||||
style="width: 100%; display: inline-block; width: 200px;" clearable />
|
style="width: 100%; display: inline-block; width: 200px;" clearable />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
|
<el-form-item label="业务员" prop="saleName">
|
||||||
|
<el-input v-model="queryParams.saleName" placeholder="请输入业务员" clearable size="small" />
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="合同号" prop="contractNo">
|
||||||
|
<el-input v-model="queryParams.contractNo" placeholder="请输入合同号" clearable size="small" />
|
||||||
|
</el-form-item>
|
||||||
</template>
|
</template>
|
||||||
<template v-else>
|
<template v-else>
|
||||||
<el-form-item label="入场钢卷号" prop="enterCoilNo">
|
<el-form-item label="入场钢卷号" prop="enterCoilNo">
|
||||||
@@ -134,6 +140,12 @@
|
|||||||
<muti-select v-model="queryParams.qualityStatusCsv" :options="dict.type.coil_quality_status"
|
<muti-select v-model="queryParams.qualityStatusCsv" :options="dict.type.coil_quality_status"
|
||||||
placeholder="请选择品质" clearable />
|
placeholder="请选择品质" clearable />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
|
<el-form-item label="业务员" prop="saleName">
|
||||||
|
<el-input v-model="queryParams.saleName" placeholder="请输入业务员" clearable size="small" />
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="合同号" prop="contractNo">
|
||||||
|
<el-input v-model="queryParams.contractNo" placeholder="请输入合同号" clearable size="small" />
|
||||||
|
</el-form-item>
|
||||||
</template>
|
</template>
|
||||||
<el-form-item>
|
<el-form-item>
|
||||||
<el-button type="primary" @click="handleQuery">查询</el-button>
|
<el-button type="primary" @click="handleQuery">查询</el-button>
|
||||||
@@ -541,7 +553,7 @@ export default {
|
|||||||
'材质属性': ['material', 'manufacturer', 'surfaceTreatmentDesc', 'zincLayer', 'packingStatus', 'temperGrade', 'coatingType', 'chromePlateCoilNo'],
|
'材质属性': ['material', 'manufacturer', 'surfaceTreatmentDesc', 'zincLayer', 'packingStatus', 'temperGrade', 'coatingType', 'chromePlateCoilNo'],
|
||||||
'用途': ['purpose', 'businessPurpose'],
|
'用途': ['purpose', 'businessPurpose'],
|
||||||
'状态': ['qualityStatus', 'statusDesc', 'isRelatedToOrderText'],
|
'状态': ['qualityStatus', 'statusDesc', 'isRelatedToOrderText'],
|
||||||
'其他': ['itemName', 'itemId', 'packagingRequirement', 'trimmingRequirement', 'transferType', 'saleName', 'remark', 'team'],
|
'其他': ['itemName', 'itemId', 'packagingRequirement', 'trimmingRequirement', 'transferType', 'contractNo', 'saleName', 'remark', 'team'],
|
||||||
},
|
},
|
||||||
queryParams: {
|
queryParams: {
|
||||||
startTime: start,
|
startTime: start,
|
||||||
|
|||||||
Reference in New Issue
Block a user