@@ -1,37 +1,43 @@
< template >
< div class = "app-container" >
< el-form :model = "taskQueryParams" ref = "taskQueryForm" siz e= "s mall" :inline = "true" v-show = "showSearch" label-width="68px" >
< div styl e= "margin-bottom: 16px;" >
< div style = "display: flex; align-items: center; margin-bottom: 6px;" >
< span
style = "font-size: 13px; color: #909399; white-space: nowrap; margin-right: 12px; width: 68px; text-align: right;" > 所属单位 : < / span >
< el-radio-group v-model = "selectedCompany" @change="handleCompanyChange" size="small" >
< el -radio -button label = "" > 全部 < / el-radio-button >
< el-radio-button v-for = "company in companyOptions" :key="company" :label="company" > {{ company }} < / el -radio -button >
< / el-radio-group >
< / div >
< div v-if = "selectedCompany" style="display: flex; align-items: center;" >
< span
style = "font-size: 13px; color: #909399; white-space: nowrap; margin-right: 12px; width: 68px; text-align: right;" > 方案名称 : < / span >
< el-radio-group v-model = "selectedScheme" @change="handleSchemeChange" size="small" >
< el -radio -button label = "" > 全部 < / el-radio-button >
< el-radio-button v-for = "scheme in schemeOptions" :key="scheme" :label="scheme" > {{ scheme }} < / el -radio -button >
< / el-radio-group >
< / div >
< / div >
< el-form :model = "taskQueryParams" ref = "taskQueryForm" size = "small" :inline = "true" v-show = "showSearch"
label -width = " 68px " >
< el-form-item label = "任务编号" prop = "taskCode" >
< el-input
v-model = "taskQueryParams.taskCode"
placeholder = "请输入任务编号"
clearable
@keyup.enter.native ="handleTaskQuery"
/ >
< el-input v-model = "taskQueryParams.taskCode" placeholder="请输入任务编号" clearable
@keyup.enter.native ="handleTaskQuery" / >
< / el-form-item >
< el-form-item label = "方案名称 " prop = "schemeNam e" >
< el-input
v-model = "taskQueryParams.schemeName"
placeholder = "请输入检验方案名称"
clearable
@keyup.enter.native ="handleTaskQuery"
/ >
< el-form-item label = "任务类型 " prop = "taskTyp e" >
< el-select v-model = "taskQueryParams.taskType" placeholder="请选择任务类型" clearable filterable allow -create >
< el-option label = "内控检验" value = "内控检验" / >
< el-option label = "产品检验" value = "产品检验" / >
< / el-select >
< / el-form-item >
< el-form-item label = "检验人" prop = "inspectUser" >
< el-input
v-model = "taskQueryParams.inspectUser"
placeholder = "请输入检验人"
clearable
@keyup.enter.native ="handleTaskQuery"
/ >
< el-input v-model = "taskQueryParams.inspectUser" placeholder="请输入检验人" clearable
@keyup.enter.native ="handleTaskQuery" / >
< / el-form-item >
< el-form-item label = "审核人" prop = "auditUser" >
< el-input
v-model = "taskQueryParams.auditUser"
placeholder = "请输入审核人"
clearable
@keyup.enter.native ="handleTaskQuery"
/ >
< el-input v-model = "taskQueryParams.auditUser" placeholder="请输入审核人" clearable
@keyup.enter.native ="handleTaskQuery" / >
< / el-form-item >
< el-form-item >
< el-button type = "primary" icon = "el-icon-search" size = "mini" @click ="handleTaskQuery" > 搜索 < / el -button >
@@ -41,91 +47,62 @@
< el-row :gutter = "10" class = "mb8" >
< el-col :span = "1.5" v-if = "!readonly" >
< el -button
type = "primary"
plain
icon = "el-icon-plus"
size = "mini"
@click ="handleTaskAdd"
> 新增 < / el-button >
< el -button type = "primary" plain icon = "el-icon-plus" size = "mini" @click ="handleTaskAdd" > 新增 < / el -button >
< / el-col >
< el-col :span = "1.5" v-if = "!readonly" >
< el -button
type = "success"
plain
icon = "el-icon-edit"
size = "mini"
:disabled = "taskSingle"
@click ="handleTaskUpdate"
> 修改 < / el-button >
< el -button type = "primary" plain icon = "el-icon-circle-plus-outline" size = "mini"
@click ="handleQuickCreate" > 快捷创建 < / el -button >
< / el-col >
< el-col :span = "1.5" v-if = "!readonly" >
< el -button
type = "danger"
plain
icon = "el-icon-delete"
size = "mini"
:disabled = "taskMultiple"
@click ="handleTaskDelete"
> 删除 < / el-button >
< el -button type = "success" plain icon = "el-icon-edit" size = "mini" :disabled = "taskSingle"
@click ="handleTaskUpdate" > 修改 < / el -button >
< / el-col >
< el-col :span = "1.5" v-if = "!readonly" >
< el -button
type = "warning"
plain
icon = "el-icon-download"
size = "mini"
@click ="handleTaskExport"
> 导出 < / el-button >
< el -button type = "danger" plain icon = "el-icon-delete" size = "mini" :disabled = "taskMultiple"
@click ="handleTaskDelete" > 删除 < / el -button >
< / el-col >
< el-col :span = "1.5" v-if = "!readonly" >
< el -button
type = "primary"
plain
icon = "el-icon-circle-plus-outline"
size = "mini"
@click ="handleQuickCreate"
> 快捷创建 < / el-button >
< el -button type = "warning" plain icon = "el-icon-download" size = "mini" @click ="handleTaskExport" > 导出 < / el -button >
< / el-col >
< right-toolbar :showSearch.sync = "showSearch" @queryTable ="getTaskList" > < / right -toolbar >
< / el-row >
< el-table
v-loading = "taskLoading"
:data = "inspectionTaskList"
@ selection -change = " handleTaskSelectionChange "
highlight -current -row
@ row -click = " handleRowClick "
>
< el-table v-loading = "taskLoading" :data="inspectionTaskList" @selection-change="handleTaskSelectionChange"
highlight -current -row @ row -click = " handleRowClick " >
< el-table-column type = "selection" width = "55" align = "center" v-if = "!readonly" / >
< el-table-column label = "任务ID" align = "center" prop = "taskId" v-if = "false" / >
< el-table-column label = "任务ID" align = "center" prop = "taskId" v-if = "false" / >
< el-table-column label = "任务编号" align = "center" prop = "taskCode" / >
< el-table-column label = "任务类型" align = "center" prop = "taskType" / >
< el-table-column label = "检验方案名称 " align = "center" prop = "schemeName " / >
< el-table-column label = "所属单位 " align = "center" prop = "belongCompany " / >
< el-table-column label = "方案名称" align = "center" prop = "schemeName" / >
< el-table-column label = "状态" align = "center" prop = "status" width = "90" >
< template slot -scope = " scope " >
< el-tag v-if = "scope.row.status === 0 || scope.row.status === '0'" type="info" size="small" > 待检验 < / el -tag >
< el-tag v-else-if = "scope.row.status === 1 || scope.row.status === '1'" type="warning" size="small" > 已检验 < / el -tag >
< el-tag v-else-if = "scope.row.status === 2 || scope.row.status === '2'" type="success" size="small" > 已审核 < / el -tag >
< el-tag v-else-if = "scope.row.status === 1 || scope.row.status === '1'" type="warning"
size = "small" > 已检验 < / el-tag>
< el-tag v-else-if = "scope.row.status === 2 || scope.row.status === '2'" type="success"
size = "small" > 已审核 < / el-tag >
< span v-else > {{ scope.row.status }} < / span >
< / template >
< / el -table -column >
< el-table-column label = "检验人 " align = "center" prop = "inspectUser" / >
< el-table-column label = "检验时间" align = "center" prop = "inspectTime" width = "180" >
< el-table-column label = "检验情况 " align = "center" prop = "inspectTime" width = "180" >
< template slot -scope = " scope " >
< span > { { parseTime ( scope . row . inspectTime , '{y}-{m}-{d}' ) } } < / span >
< div v-if = "scope.row.inspectUser" > 检验人 : {{ scope.row.inspectUser }} < / div >
< div > { { parseTime ( scope . row . inspectTime , '{y}-{m}-{d}' ) } } < / div >
< / template >
< / el-table-column >
< el-table-column label = "审核人 " align = "center" prop = "auditUser" / >
< el-table-column label = "审核时间" align = "center" prop = "auditTime" width = "180" >
< el-table-column label = "审核情况 " align = "center" prop = "auditTime" width = "160" >
< template slot -scope = " scope " >
< span > { { parseTime ( scope . row . auditTime , '{y}-{m}-{d}' ) } } < / span >
< div v-if = "scope.row.auditUser" > 审核人 : {{ scope.row.auditUser }} < / div >
< div > { { parseTime ( scope . row . auditTime , '{y}-{m}-{d}' ) } } < / div >
< / template >
< / el-table-column >
< el-table-column label = "最终结果" align = "center" prop = "result" / >
< el-table-column label = "关联钢卷" align = "center" width = "20 0" >
< el-table-column label = "关联钢卷" align = "center" width = "14 0" >
< template slot -scope = " scope " >
< div v-if = "scope.row.coilList && scope.row.coilList.length > 0" style="display: flex; flex-wrap: wrap; gap: 4px;" >
< div v-if = "scope.row.coilList && scope.row.coilList.length > 0"
style = "display: flex; flex-wrap: wrap; gap: 4px;" >
< div v-for = "(coil, index) in scope.row.coilList" :key="coil.coilId || index" >
< CurrentCoilNo : currentCoilNo = "coil.currentCoilNo || coil.coilNo || ''" / >
< / div >
@@ -136,74 +113,50 @@
< el-table-column label = "备注" align = "center" prop = "remark" / >
< el-table-column label = "操作" align = "center" class -name = " small -padding fixed -width " width = "180" >
< template slot -scope = " scope " >
< el-button v-if = "!readonly" size="mini" type="text" icon="el-icon-edit" @click="handleTaskUpdate(scope.row)" > 修改 < / el -button >
< el-button v-if = "!readonly" size="mini" type="text" icon="el-icon-delete" @click="handleTaskDele te(scope.row)"> 删除 < / el -button >
< el-button v-if = "!readonly" size="mini" type="text" icon="el-icon-edit"
@click ="handleTaskUpda te(scope.row)" > 修改 < / el -button >
< el-button v-if = "!readonly" size="mini" type="text" icon="el-icon-delete"
@click ="handleTaskDelete(scope.row)" > 删除 < / el -button >
< div >
< el-button v-if = "scope.row.status === '0' || scope.row.status === 0" size="mini" type="text" icon="el-icon-check" @click="handleInspect(scope.row)" style="color: #67c23a;" > 检验 < / el -button >
< el-button v-if = "scope.row.status === '1' || scope.row.status === 1" size="mini" type="text" icon="el-icon-s-flag" @click="handleAudi t(scope.row)" style="color: #409eff;" > 审核 < / el -button >
< el-button v-if = "scope.row.status === '0' || scope.row.status === 0" size="mini" type="text"
icon = "el-icon-check" @click ="handleInspec t(scope.row)" style = "color: #67c23a;" > 检验 < / el-button>
< el-button v-if = "scope.row.status === '1' || scope.row.status === 1" size="mini" type="text"
icon = "el-icon-s-flag" @click ="handleAudit(scope.row)" style = "color: #409eff;" > 审核 < / el-button >
< / div >
< / template >
< / el-table-column >
< / el-table >
< pagination
v-show = "taskTotal>0"
:total = "taskTotal"
:page.sync = "taskQueryParams.pageNum"
:limit.sync = "taskQueryParams.pageSize"
@pagination ="getTaskList"
/ >
< pagination v-show = "taskTotal > 0" :total="taskTotal" :page.sync="taskQueryParams.pageNum"
:limit.sync = "taskQueryParams.pageSize" @pagination ="getTaskList" / >
< div v-if = "currentTask" style="margin: 16px 0; padding: 10px 16px; background: #f0f9eb; border-left: 4px solid #67c23a; border-radius: 4px; font-size: 14px;" >
< div v-if = "currentTask"
style = "margin: 16px 0; padding: 10px 16px; background: #f0f9eb; border-left: 4px solid #67c23a; border-radius: 4px; font-size: 14px;" >
< span > 当前选中任务 : < strong > { { currentTask . taskCode } } < / strong > - { { currentTask . schemeName } } < / span >
< / div >
< div v-if = "currentTask" >
< el -row :gutter = "10" class = "mb8" >
< el-col :span = "1.5" v-if = "!itemReadonly" >
< el -button
type = "primary"
plain
icon = "el-icon-plus"
size = "mini"
@click ="handleItemAdd"
> 新增 < / el-button >
< el -button type = "primary" plain icon = "el-icon-plus" size = "mini" @click ="handleItemAdd" > 新增 < / el -button >
< / el-col >
< el-col :span = "1.5" v-if = "!itemReadonly" >
< el -button
type = "success"
plain
icon = "el-icon-edit"
size = "mini"
:disabled = "itemSingle"
@click ="handleItemUpdate"
> 修改 < / el-button >
< el -button type = "success" plain icon = "el-icon-edit" size = "mini" :disabled = "itemSingle"
@click ="handleItemUpdate" > 修改 < / el -button >
< / el-col >
< el-col :span = "1.5" v-if = "!itemReadonly" >
< el -button
type = "danger"
plain
icon = "el-icon-delete"
size = "mini"
:disabled = "itemMultiple"
@click ="handleItemDelete"
> 删除 < / el-button >
< el -button type = "danger" plain icon = "el-icon-delete" size = "mini" :disabled = "itemMultiple"
@click ="handleItemDelete" > 删除 < / el -button >
< / el-col >
< el-col :span = "1.5" v-if = "!itemReadonly" >
< el -button
type = "warning"
plain
icon = "el-icon-download"
size = "mini"
@click ="handleItemExport"
> 导出 < / el-button >
< el -button type = "warning" plain icon = "el-icon-download" size = "mini" @click ="handleItemExport" > 导出 < / el -button >
< / el-col >
< right-toolbar :showSearch.sync = "showSearch" @queryTable ="getItemList" > < / right -toolbar >
< / el-row >
< el-table v-loading = "itemLoading" :data="inspectionItemList" @selection-change="handleItemSelectionChange" border >
< el-table-column type = "selection" width = "45" align = "center" v-if = "!itemReadonly" / >
< el-table-column label = "明细ID" align = "center" prop = "itemId" v-if = "false" / >
< el-table-column label = "明细ID" align = "center" prop = "itemId" v-if = "false" / >
< el-table-column label = "检验项目名称" align = "center" prop = "itemName" min -width = " 100 " / >
< el-table-column label = "标准值" align = "center" prop = "standardValue" width = "80" >
< template slot -scope = " scope " >
@@ -260,7 +213,8 @@
< el-table-column label = "检验时间" align = "center" prop = "inspectTime" width = "170" >
< template slot -scope = " scope " >
< span v-if = "itemReadonly" > {{ parseTime ( scope.row.inspectTime , ' { y } - { m } - { d } ' ) }} < / span >
< el -date -picker v-else v-model = "scope.row.inspectTime" type="datetime" value-format="yyyy-MM-dd HH:mm:ss" size="mini" style="width: 100%;" / >
< el -date -picker v-else v-model = "scope.row.inspectTime" type="datetime" value-format="yyyy-MM-dd HH:mm:ss"
size = "mini" style = "width: 100%;" / >
< / template >
< / el-table-column >
< el-table-column label = "备注" align = "center" prop = "remark" min -width = " 100 " >
@@ -277,13 +231,8 @@
< / el-table-column >
< / el-table >
< pagination
v-show = "itemTotal>0"
:total = "itemTotal"
:page.sync = "itemQueryParams.pageNum"
:limit.sync = "itemQueryParams.pageSize"
@pagination ="getItemList"
/ >
< pagination v-show = "itemTotal > 0" :total="itemTotal" :page.sync="itemQueryParams.pageNum"
:limit.sync = "itemQueryParams.pageSize" @pagination ="getItemList" / >
< / div >
< div v-else style = "text-align: center; padding: 40px 0; color: #999; font-size: 14px;" >
< i class = "el-icon-inbox" style = "font-size: 48px; display: block; margin-bottom: 12px; color: #ddd;" > < / i >
@@ -295,30 +244,17 @@
< el-form-item label = "任务编号" prop = "taskCode" >
< el-input v-model = "taskForm.taskCode" placeholder="请输入任务编号" / >
< / el-form-item >
< el-form-item label = "检验方案名称 " prop = "schemeNam e" >
< el-inpu t v-model = "taskForm.schemeNam e" placeholder="请输入检验方案名称" / >
< el-form-item label = "任务类型 " prop = "taskTyp e" >
< el-selec t v-model = "taskForm.taskTyp e" placeholder="请选择任务类型" clearable filterable allow -create >
< el-option label = "内控检验" value = "内控检验" / >
< el-option label = "产品检验" value = "产品检验" / >
< / el-select >
< / el-form-item >
< el-form-item label = "检验人 " prop = "inspectUser " >
< el-input v-model = "taskForm.inspectUser " placeholder="请输入检验人 " / >
< el-form-item label = "所属单位 " prop = "belongCompany " >
< el-input v-model = "taskForm.belongCompany " placeholder="请输入所属单位 " / >
< / el-form-item >
< el-form-item label = "检验时间 " prop = "inspectTi me" >
< el-date-picker clearable
v-model = "taskForm.inspectTime"
type = "datetime"
value -format = " yyyy -MM -dd HH : mm : ss "
placeholder = "请选择检验时间" >
< / el-date-picker >
< / el-form-item >
< el-form-item label = "审核人" prop = "auditUser" >
< el-input v-model = "taskForm.auditUser" placeholder="请输入审核人" / >
< / el-form-item >
< el-form-item label = "审核时间" prop = "auditTime" >
< el-date-picker clearable
v-model = "taskForm.auditTime"
type = "datetime"
value -format = " yyyy -MM -dd HH : mm : ss "
placeholder = "请选择审核时间" >
< / el-date-picker >
< el-form-item label = "方案名称 " prop = "schemeNa me" >
< el-input v-model = "taskForm.schemeName" placeholder="请输入方案名称" / >
< / el-form-item >
< el-form-item label = "最终结果" prop = "result" >
< el-input v-model = "taskForm.result" placeholder="请输入最终结果" / >
@@ -334,10 +270,12 @@
< span v-if = "taskCoilList.length > 0" style="margin-left: 8px; font-size: 13px; color: #67c23a;" >
已选 {{ taskCoilList.length }} 卷
< / span >
< el -button v-if = "taskCoilList.length > 0" type="text" size="small" style="margin-left: 4px; color: #f56c6c;" @click="taskCoilList = []" > 清除 < / el -button >
< el -button v-if = "taskCoilList.length > 0" type="text" size="small" style="margin-left: 4px; color: #f56c6c;"
@click ="taskCoilList = []" > 清除 < / el -button >
< / div >
< div v-if = "taskCoilList.length > 0" style="display: flex; flex-wrap: wrap; gap: 8px; margin: 0 0 12px 80px;" >
< div v-for = "(coil, index) in taskCoilList" :key="coil.coilId || index" style="display: flex; align-items: center; gap: 4px;" >
< div v-for = "(coil, index) in taskCoilList" :key="coil.coilId || index"
style = "display: flex; align-items: center; gap: 4px;" >
< CurrentCoilNo : currentCoilNo = "coil.currentCoilNo || coil.coilNo || ''" / >
< el-button type = "text" icon = "el-icon-close" size = "mini" @click ="taskCoilList.splice(index, 1)" > < / el -button >
< / div >
@@ -378,10 +316,7 @@
< el-input v-model = "itemForm.inspectUser" placeholder="请输入检验人" / >
< / el-form-item >
< el-form-item label = "检验时间" prop = "inspectTime" >
< el-date-picker clearable
v-model = "itemForm.inspectTime"
type = "datetime"
value -format = " yyyy -MM -dd HH : mm : ss "
< el-date-picker clearable v-model = "itemForm.inspectTime" type="datetime" value-format="yyyy-MM-dd HH:mm:ss"
placeholder = "请选择检验时间" >
< / el-date-picker >
< / el-form-item >
@@ -414,6 +349,7 @@
< script >
import { listInspectionTask , getInspectionTask , delInspectionTask , addInspectionTask , updateInspectionTask , addInspectionTaskWithItems } from "@/api/mes/qc/inspectionTask" ;
import { listInspectionItem , getInspectionItem , delInspectionItem , addInspectionItem , updateInspectionItem } from "@/api/mes/qc/inspectionItem" ;
import { listInspectionItemTemplate } from "@/api/mes/qc/inspectionItemTemplate" ;
import { SchemeSelect } from "@/components/KLPService" ;
import CoilSelector from "@/components/CoilSelector/index.vue" ;
import CurrentCoilNo from "@/components/KLPService/Renderer/CurrentCoilNo.vue" ;
@@ -450,6 +386,7 @@ export default {
pageSize : 10 ,
taskCode : undefined ,
taskType : undefined ,
belongCompany : undefined ,
schemeName : undefined ,
status : undefined ,
inspectUser : undefined ,
@@ -496,6 +433,11 @@ export default {
resultForm : { result : undefined } ,
resultAction : null ,
resultTaskRow : null ,
cascadeData : { } ,
companyOptions : [ ] ,
schemeOptions : [ ] ,
selectedCompany : '' ,
selectedScheme : '' ,
} ;
} ,
computed : {
@@ -507,6 +449,7 @@ export default {
} ,
created ( ) {
this . getTaskList ( ) ;
this . loadCascadeData ( ) ;
} ,
methods : {
getTaskList ( ) {
@@ -540,6 +483,9 @@ export default {
} ,
resetTaskQuery ( ) {
this . resetForm ( "taskQueryForm" ) ;
this . selectedCompany = '' ;
this . selectedScheme = '' ;
this . schemeOptions = [ ] ;
this . handleTaskQuery ( ) ;
} ,
handleTaskSelectionChange ( selection ) {
@@ -620,12 +566,14 @@ export default {
handleQuickCreate ( ) {
this . schemeVisible = true ;
} ,
handleSchemeConfirm ( { template , taskCode , coilIds } ) {
handleSchemeConfirm ( { template , taskCode , taskType , belongCompany , coilIds } ) {
this . taskLoading = true ;
addInspectionTaskWithItems ( {
taskCode : taskCode ,
schemeId : template . templateId ,
schemeName : template . templateName ,
belongCompany : belongCompany ,
taskType : taskType ,
coilIds : coilIds
} ) . then ( ( ) => {
this . $modal . msgSuccess ( "快捷创建成功" ) ;
@@ -675,6 +623,38 @@ export default {
this . resultLoading = false ;
} ) ;
} ,
loadCascadeData ( ) {
listInspectionItemTemplate ( { pageNum : 1 , pageSize : 9999 } ) . then ( response => {
const templates = response . rows || response . data || [ ] ;
const cascade = { } ;
templates . forEach ( t => {
const company = t . templateUnit || '未分类' ;
if ( ! cascade [ company ] ) {
cascade [ company ] = [ ] ;
}
if ( t . templateName && ! cascade [ company ] . includes ( t . templateName ) ) {
cascade [ company ] . push ( t . templateName ) ;
}
} ) ;
this . cascadeData = cascade ;
this . companyOptions = Object . keys ( cascade ) . sort ( ) ;
} ) ;
} ,
handleCompanyChange ( ) {
this . selectedScheme = '' ;
if ( this . selectedCompany ) {
this . schemeOptions = this . cascadeData [ this . selectedCompany ] || [ ] ;
} else {
this . schemeOptions = [ ] ;
}
this . taskQueryParams . belongCompany = this . selectedCompany || undefined ;
this . taskQueryParams . schemeName = undefined ;
this . handleTaskQuery ( ) ;
} ,
handleSchemeChange ( ) {
this . taskQueryParams . schemeName = this . selectedScheme || undefined ;
this . handleTaskQuery ( ) ;
} ,
cancelTask ( ) {
this . taskOpen = false ;
this . resetTaskForm ( ) ;