|
|
|
@ -30,6 +30,31 @@ |
|
|
|
<el-form-item :label="'类别名称'"> |
|
|
|
<el-input v-model="searchData.familyName" clearable style="width: 120px"></el-input> |
|
|
|
</el-form-item> |
|
|
|
<el-form-item label="IQC"> |
|
|
|
<el-select v-model="searchData.iqcFlag" placeholder="全部" clearable style="width: 90px"> |
|
|
|
<el-option v-for="item in maintainStatusOptions" :key="'iqc-' + item.value" :label="item.label" :value="item.value"></el-option> |
|
|
|
</el-select> |
|
|
|
</el-form-item> |
|
|
|
<el-form-item label="IPQC"> |
|
|
|
<el-select v-model="searchData.ipqcFlag" placeholder="全部" clearable style="width: 90px"> |
|
|
|
<el-option v-for="item in maintainStatusOptions" :key="'ipqc-' + item.value" :label="item.label" :value="item.value"></el-option> |
|
|
|
</el-select> |
|
|
|
</el-form-item> |
|
|
|
<el-form-item label="FQC"> |
|
|
|
<el-select v-model="searchData.fqcFlag" placeholder="全部" clearable style="width: 90px"> |
|
|
|
<el-option v-for="item in maintainStatusOptions" :key="'fqc-' + item.value" :label="item.label" :value="item.value"></el-option> |
|
|
|
</el-select> |
|
|
|
</el-form-item> |
|
|
|
<el-form-item label="OQC"> |
|
|
|
<el-select v-model="searchData.oqcFlag" placeholder="全部" clearable style="width: 90px"> |
|
|
|
<el-option v-for="item in maintainStatusOptions" :key="'oqc-' + item.value" :label="item.label" :value="item.value"></el-option> |
|
|
|
</el-select> |
|
|
|
</el-form-item> |
|
|
|
<el-form-item label="SQC"> |
|
|
|
<el-select v-model="searchData.sqcFlag" placeholder="全部" clearable style="width: 90px"> |
|
|
|
<el-option v-for="item in maintainStatusOptions" :key="'sqc-' + item.value" :label="item.label" :value="item.value"></el-option> |
|
|
|
</el-select> |
|
|
|
</el-form-item> |
|
|
|
<el-form-item :label="' '"> |
|
|
|
<el-button v-if="!authSearch" type="primary" @click="getDataList()">查询</el-button> |
|
|
|
<el-button v-if="!authSave" type="primary" @click="addModal()">新增</el-button> |
|
|
|
@ -71,7 +96,10 @@ |
|
|
|
:label="item.columnLabel"> |
|
|
|
<template slot-scope="scope"> |
|
|
|
<span v-if="!item.columnHidden"> |
|
|
|
<span v-if="columnsProp.includes(item.columnProp)">{{ scope.row[`${item.columnProp}Desc`] }}</span> |
|
|
|
<span v-if="maintainFlagProps.includes(item.columnProp)"> |
|
|
|
<el-tag :type="isMaintained(scope.row[item.columnProp]) ? 'success' : 'info'" size="small">{{ scope.row[item.columnProp] }}</el-tag> |
|
|
|
</span> |
|
|
|
<span v-else-if="columnsProp.includes(item.columnProp)">{{ scope.row[`${item.columnProp}Desc`] }}</span> |
|
|
|
<span v-else> |
|
|
|
{{ scope.row[item.columnProp] }} |
|
|
|
</span> |
|
|
|
@ -520,7 +548,7 @@ |
|
|
|
<el-form-item :label="'物料名称'"> |
|
|
|
<el-input v-model="standardDetailData.partDesc" readonly style="width: 240px"></el-input> |
|
|
|
</el-form-item> |
|
|
|
<el-form-item label="检验类型"> |
|
|
|
<!-- <el-form-item label="检验类型"> |
|
|
|
<el-select v-model="standardDetailData.inspectionTypeNo" @change="syncStandardInspectionTypeName" placeholder="请选择" style="width: 160px"> |
|
|
|
<el-option |
|
|
|
v-for="i in options" |
|
|
|
@ -529,9 +557,10 @@ |
|
|
|
:value="i.inspectionTypeNo"> |
|
|
|
</el-option> |
|
|
|
</el-select> |
|
|
|
</el-form-item> |
|
|
|
</el-form-item> --> |
|
|
|
<el-form-item :label="' '"> |
|
|
|
<el-button type="primary" @click="standardAddFastModal()">新增</el-button> |
|
|
|
<!-- <el-button type="primary" @click="standardAddFastModal()">新增</el-button> --> |
|
|
|
<el-button type="primary" @click="standardSyncFromTemplate()">同步检验项目</el-button> |
|
|
|
<!-- <el-button type="primary" @click="standardGoUp()">上移</el-button> |
|
|
|
<el-button type="primary" @click="standardGoDown()">下移</el-button> --> |
|
|
|
</el-form-item> |
|
|
|
@ -874,7 +903,7 @@ |
|
|
|
label="操作"> |
|
|
|
<template slot-scope="scope"> |
|
|
|
<a @click="downloadFile(scope.row)">下载</a> |
|
|
|
<a type="text" size="small" @click="deleteFile(scope.row)">删除</a> |
|
|
|
<a v-if="scope.row.orderReftype !== 'AttachmentList'" type="text" size="small" @click="deleteFile(scope.row)">删除</a> |
|
|
|
</template> |
|
|
|
</el-table-column> |
|
|
|
</el-table> |
|
|
|
@ -1036,17 +1065,19 @@ |
|
|
|
addPartAttrItemDetails, |
|
|
|
delPartAttrItemDetails, |
|
|
|
savePartAttrDetailed, |
|
|
|
syncPartAttrDetailedFromTemplate, |
|
|
|
goUpPartAttrItem, |
|
|
|
goDownPartAttrItem, |
|
|
|
getPatrolConfigList as fetchPatrolConfigListApi, |
|
|
|
savePatrolConfig as savePatrolConfigApi, |
|
|
|
updatePatrolConfig as updatePatrolConfigApi, |
|
|
|
deletePatrolConfig as deletePatrolConfigApi, |
|
|
|
getPatrolOperationDescList as getPatrolOperationDescListApi |
|
|
|
getPatrolOperationDescList as getPatrolOperationDescListApi, |
|
|
|
getPartAttributeFileList |
|
|
|
} from "@/api/qc/qc.js" |
|
|
|
import {getTableDefaultListLanguage, getTableUserListLanguage} from "@/api/table.js" |
|
|
|
import Chooselist from '@/views/modules/common/Chooselist_eam' |
|
|
|
import {getFileContentList, downLoadObjectFile} from '@/api/eam/eam_object_list.js' |
|
|
|
import {downLoadObjectFile} from '@/api/eam/eam_object_list.js' |
|
|
|
import {userFavoriteList, saveUserFavorite, removeUserFavorite} from '@/api/userFavorite.js' |
|
|
|
import {deleteObjectFile} from '@/api/eam/eam.js' |
|
|
|
import qcUpload from "./qc_upload" |
|
|
|
@ -1062,6 +1093,7 @@ |
|
|
|
data () { |
|
|
|
return { |
|
|
|
columnsProp:['createBy', 'updateBy'], |
|
|
|
maintainFlagProps: ['iqcFlag', 'ipqcFlag', 'fqcFlag', 'oqcFlag', 'sqcFlag'], |
|
|
|
// 是否收藏 |
|
|
|
favorite: false, |
|
|
|
// 导出 start |
|
|
|
@ -1093,6 +1125,11 @@ |
|
|
|
familyID: '', |
|
|
|
familyName: '', |
|
|
|
buDesc: '', |
|
|
|
iqcFlag: '', |
|
|
|
ipqcFlag: '', |
|
|
|
fqcFlag: '', |
|
|
|
oqcFlag: '', |
|
|
|
sqcFlag: '', |
|
|
|
attributeType: 'A', |
|
|
|
page: 1, |
|
|
|
limit: 10, |
|
|
|
@ -1397,6 +1434,96 @@ |
|
|
|
fixed: '', |
|
|
|
columnWidth: 100, |
|
|
|
}, |
|
|
|
{ |
|
|
|
userId: this.$store.state.user.name, |
|
|
|
functionId: 301003, |
|
|
|
serialNumber: '301003Table1IqcFlag', |
|
|
|
tableId: "301003Table1", |
|
|
|
tableName: "物料属性设置表", |
|
|
|
columnProp: 'iqcFlag', |
|
|
|
headerAlign: "center", |
|
|
|
align: "center", |
|
|
|
columnLabel: 'IQC', |
|
|
|
columnHidden: false, |
|
|
|
columnImage: false, |
|
|
|
columnSortable: false, |
|
|
|
sortLv: 0, |
|
|
|
status: true, |
|
|
|
fixed: '', |
|
|
|
columnWidth: 90, |
|
|
|
}, |
|
|
|
{ |
|
|
|
userId: this.$store.state.user.name, |
|
|
|
functionId: 301003, |
|
|
|
serialNumber: '301003Table1IpqcFlag', |
|
|
|
tableId: "301003Table1", |
|
|
|
tableName: "物料属性设置表", |
|
|
|
columnProp: 'ipqcFlag', |
|
|
|
headerAlign: "center", |
|
|
|
align: "center", |
|
|
|
columnLabel: 'IPQC', |
|
|
|
columnHidden: false, |
|
|
|
columnImage: false, |
|
|
|
columnSortable: false, |
|
|
|
sortLv: 0, |
|
|
|
status: true, |
|
|
|
fixed: '', |
|
|
|
columnWidth: 90, |
|
|
|
}, |
|
|
|
{ |
|
|
|
userId: this.$store.state.user.name, |
|
|
|
functionId: 301003, |
|
|
|
serialNumber: '301003Table1FqcFlag', |
|
|
|
tableId: "301003Table1", |
|
|
|
tableName: "物料属性设置表", |
|
|
|
columnProp: 'fqcFlag', |
|
|
|
headerAlign: "center", |
|
|
|
align: "center", |
|
|
|
columnLabel: 'FQC', |
|
|
|
columnHidden: false, |
|
|
|
columnImage: false, |
|
|
|
columnSortable: false, |
|
|
|
sortLv: 0, |
|
|
|
status: true, |
|
|
|
fixed: '', |
|
|
|
columnWidth: 90, |
|
|
|
}, |
|
|
|
{ |
|
|
|
userId: this.$store.state.user.name, |
|
|
|
functionId: 301003, |
|
|
|
serialNumber: '301003Table1OqcFlag', |
|
|
|
tableId: "301003Table1", |
|
|
|
tableName: "物料属性设置表", |
|
|
|
columnProp: 'oqcFlag', |
|
|
|
headerAlign: "center", |
|
|
|
align: "center", |
|
|
|
columnLabel: 'OQC', |
|
|
|
columnHidden: false, |
|
|
|
columnImage: false, |
|
|
|
columnSortable: false, |
|
|
|
sortLv: 0, |
|
|
|
status: true, |
|
|
|
fixed: '', |
|
|
|
columnWidth: 90, |
|
|
|
}, |
|
|
|
{ |
|
|
|
userId: this.$store.state.user.name, |
|
|
|
functionId: 301003, |
|
|
|
serialNumber: '301003Table1SqcFlag', |
|
|
|
tableId: "301003Table1", |
|
|
|
tableName: "物料属性设置表", |
|
|
|
columnProp: 'sqcFlag', |
|
|
|
headerAlign: "center", |
|
|
|
align: "center", |
|
|
|
columnLabel: 'SQC', |
|
|
|
columnHidden: false, |
|
|
|
columnImage: false, |
|
|
|
columnSortable: false, |
|
|
|
sortLv: 0, |
|
|
|
status: true, |
|
|
|
fixed: '', |
|
|
|
columnWidth: 90, |
|
|
|
}, |
|
|
|
// { |
|
|
|
// userId: this.$store.state.user.name, |
|
|
|
// functionId: 301003, |
|
|
|
@ -1939,6 +2066,12 @@ |
|
|
|
}, |
|
|
|
|
|
|
|
computed: { |
|
|
|
maintainStatusOptions () { |
|
|
|
return [ |
|
|
|
{ label: '已维护', value: '已维护' }, |
|
|
|
{ label: '未维护', value: '未维护' } |
|
|
|
] |
|
|
|
}, |
|
|
|
detailColumnsBeforeIpqc () { |
|
|
|
const list = Array.isArray(this.columnDetailList) ? this.columnDetailList : [] |
|
|
|
const idx = list.findIndex(i => i.columnProp === 'inspectionTypeName') |
|
|
|
@ -1978,6 +2111,9 @@ |
|
|
|
}, |
|
|
|
|
|
|
|
methods: { |
|
|
|
isMaintained (val) { |
|
|
|
return val === '已维护' |
|
|
|
}, |
|
|
|
// 获取用户的bu |
|
|
|
getSiteAndBuByUserName () { |
|
|
|
let tempData = { |
|
|
|
@ -2788,6 +2924,52 @@ |
|
|
|
this.standardFastAddFlag = true |
|
|
|
}, |
|
|
|
|
|
|
|
standardSyncFromTemplate () { |
|
|
|
const queryData = { |
|
|
|
site: this.standardDetailData.site, |
|
|
|
buNo: this.standardDetailData.buNo, |
|
|
|
attributeNo: this.standardDetailData.attributeNo, |
|
|
|
attributeType: 'A' |
|
|
|
} |
|
|
|
searchPartAttributeDetails(queryData).then(({data}) => { |
|
|
|
const templates = (data.rows || []).filter(t => t.templateId) |
|
|
|
if (templates.length === 0) { |
|
|
|
this.$message.warning('没有已维护的检验模板,请先在检验模板清单中维护!') |
|
|
|
return |
|
|
|
} |
|
|
|
const seen = new Set() |
|
|
|
const uniqueTemplates = templates.filter(t => { |
|
|
|
if (seen.has(t.templateId)) return false |
|
|
|
seen.add(t.templateId) |
|
|
|
return true |
|
|
|
}) |
|
|
|
this.$confirm(`将根据全部检验类型下 ${uniqueTemplates.length} 个检验模板同步检验项目,已存在的项目将跳过,是否继续?`, '提示', { |
|
|
|
confirmButtonText: '确定', |
|
|
|
cancelButtonText: '取消', |
|
|
|
type: 'warning' |
|
|
|
}).then(() => { |
|
|
|
const syncPromises = uniqueTemplates.map(t => syncPartAttrDetailedFromTemplate({ |
|
|
|
site: this.standardDetailData.site, |
|
|
|
buNo: this.standardDetailData.buNo, |
|
|
|
attributeNo: this.standardDetailData.attributeNo, |
|
|
|
attributeType: 'A', |
|
|
|
templateId: t.templateId, |
|
|
|
inspectionTypeNo: t.inspectionTypeNo, |
|
|
|
updateBy: this.$store.state.user.name |
|
|
|
})) |
|
|
|
return Promise.all(syncPromises) |
|
|
|
}).then((results) => { |
|
|
|
const failed = (results || []).filter(r => r && r.data && r.data.code !== 0) |
|
|
|
if (failed.length > 0) { |
|
|
|
this.$alert((failed[0].data && failed[0].data.msg) || '部分模板同步失败', '错误', { confirmButtonText: '确定' }) |
|
|
|
} else { |
|
|
|
this.$message.success('同步成功') |
|
|
|
} |
|
|
|
this.standardRefreshDetailList() |
|
|
|
}).catch(() => {}) |
|
|
|
}) |
|
|
|
}, |
|
|
|
|
|
|
|
standardGetItem () { |
|
|
|
this.syncStandardInspectionTypeName() |
|
|
|
getPartAttrItem(this.standardDetailData).then(({data}) => { |
|
|
|
@ -3312,7 +3494,7 @@ |
|
|
|
orderRef3:this.sopData.inspectionTypeNo, |
|
|
|
orderRef4: this.sopData.buNo, |
|
|
|
} |
|
|
|
getFileContentList(tempData).then(({data}) => { |
|
|
|
getPartAttributeFileList(tempData).then(({data}) => { |
|
|
|
if (data && data.code === 200) { |
|
|
|
this.sopList = data.rows |
|
|
|
} else { |
|
|
|
@ -3341,6 +3523,17 @@ |
|
|
|
|
|
|
|
// 文件下载 |
|
|
|
downloadFile (row) { |
|
|
|
if (row.orderReftype === 'AttachmentList') { |
|
|
|
const linkNode = document.createElement('a') |
|
|
|
linkNode.href = this.$store.state.user.padSopUrl + row.url |
|
|
|
linkNode.download = row.fileName |
|
|
|
linkNode.target = '_blank' |
|
|
|
linkNode.style.display = 'none' |
|
|
|
document.body.appendChild(linkNode) |
|
|
|
linkNode.click() |
|
|
|
document.body.removeChild(linkNode) |
|
|
|
return |
|
|
|
} |
|
|
|
downLoadObjectFile(row).then(({data}) => { |
|
|
|
// 不限制文件下载类型 |
|
|
|
const blob = new Blob([data], {type: "application/octet-stream"}) |
|
|
|
|