13 changed files with 14115 additions and 0 deletions
-
19src/api/qc/dm.js
-
108src/api/qc/dmBasic.js
-
15src/api/qc/dmFai.js
-
3src/api/qc/qc.js
-
4225src/views/modules/dm/DMFAIResultEntry.vue
-
668src/views/modules/dm/DMQcFamilyAttribute.vue
-
1162src/views/modules/dm/DMQcItem.vue
-
615src/views/modules/dm/DMQcMethod.vue
-
1630src/views/modules/dm/DMQcPartAttribute.vue
-
1172src/views/modules/dm/DMQcTemplate.vue
-
4162src/views/modules/dm/DMResultEntry.vue
-
121src/views/modules/dm/dm_SOP_upload_file.vue
-
215src/views/modules/dm/dm_upload.vue
@ -0,0 +1,19 @@ |
|||
import { createAPI } from "@/utils/httpRequest.js"; |
|||
|
|||
// DM 结果录入(上机检验)独立接口
|
|||
export const qcDMInspectionSearch = data => createAPI(`/pms/dm/qcDMInspectionSearch`, "post", data); |
|||
export const dmDetailSearch = data => createAPI(`/pms/dm/dmDetailSearch`, "post", data); |
|||
export const dmRecordDelete = data => createAPI(`/pms/dm/dmRecordDelete`, "post", data); |
|||
export const saveDMDetailedRecord = data => createAPI(`/pms/dm/saveDMDetailedRecord`, "post", data); |
|||
export const saveDMSubmitResult = data => createAPI(`/pms/dm/saveDMSubmitResult`, "post", data); |
|||
export const saveDMSubDetailed = data => createAPI(`/pms/dm/saveDMSubDetailed`, "post", data); |
|||
export const selectDMSubDetailedRecord = data => createAPI(`/pms/dm/selectDMSubDetailedRecord`, "post", data); |
|||
export const checkDMIsSubmit = data => createAPI(`/pms/dm/checkDMIsSubmit`, "post", data); |
|||
export const saveDmOsInspection = data => createAPI(`/pms/dm/saveDmOsInspection`, "post", data); |
|||
export const actionDMInspection = data => createAPI(`/pms/dm/actionDMInspection`, "post", data); |
|||
export const cancelDmApproval = data => createAPI(`/pms/dm/cancelDmApproval`, "post", data); |
|||
export const searchDmPartAttributeDetails = data => createAPI(`/pms/dm/searchDmPartAttributeDetails`, "post", data); |
|||
export const queryDmTemplateList = data => createAPI(`/pms/dm/queryDmTemplateList`, "post", data); |
|||
export const getDmIpqcItemObjectList = data => createAPI(`/pms/dm/getDmIpqcItemObjectList`, "post", data); |
|||
export const checkDMSubDetailValue = data => createAPI(`/pms/dm/checkDMSubDetailValue`, "post", data); |
|||
export const inspectionTypeSearch = data => createAPI(`/pms/dm/basic/inspectionTypeSearch`,'post',data) |
|||
@ -0,0 +1,108 @@ |
|||
import { createAPI } from "@/utils/httpRequest.js"; |
|||
|
|||
// 说明:为了让 DM 页面“整页搬运 QC 完整版源码”时只改 import 路径,
|
|||
// 这里同时提供 qc.js 同名导出(qcMethodSearch 等)以及 dm 前缀导出(dmQcMethodSearch 等)。
|
|||
|
|||
// ------------------------------------- 基础通用 -------------------------------------
|
|||
export const inspectionTypeSearch = data => createAPI(`/pms/dm/basic/inspectionTypeSearch`, "post", data); |
|||
export const getSiteAndBuByUserName = data => createAPI(`/pms/dm/basic/getSiteAndBuByUserName`, "post", data); |
|||
export const queryFileId = data => createAPI(`/pms/dm/basic/queryFileId`, "post", data); |
|||
export const uploadSopFile = data => createAPI(`/pms/dm/basic/upload`, "post", data); |
|||
|
|||
// ------------------------------------- 检验方法(后端表 dm_method / dm_method_item,URL 仍为 qcMethod*) -------------------------------------
|
|||
export const qcMethodSearch = data => createAPI(`/pms/dm/basic/qcMethodSearch`, "post", data); |
|||
export const dmMethodSave = data => createAPI(`/pms/dm/basic/dmMethodSave`, "post", data); |
|||
export const dmMethodUpdate = data => createAPI(`/pms/dm/basic/dmMethodUpdate`, "post", data); |
|||
export const dmMethodDelete = data => createAPI(`/pms/dm/basic/dmMethodDelete`, "post", data); |
|||
export const queryMethodList = data => createAPI(`/pms/dm/basic/queryMethodList`, "post", data); |
|||
|
|||
// ------------------------------------- 检验项目 -------------------------------------
|
|||
export const qcItemSearch = data => createAPI(`/pms/dm/basic/qcItemSearch`, "post", data); |
|||
export const qcItemSave = data => createAPI(`/pms/dm/basic/qcItemSave`, "post", data); |
|||
export const qcItemUpdate = data => createAPI(`/pms/dm/basic/qcItemUpdate`, "post", data); |
|||
export const qcItemDelete = data => createAPI(`/pms/dm/basic/qcItemDelete`, "post", data); |
|||
export const uploadExcel = data => createAPI(`/pms/dm/basic/uploadExcel`, "post", data); |
|||
export const getEquipmentNoList = data => createAPI(`/pms/dm/basic/getEquipmentNoList`, "post", data); |
|||
export const getDataContentList = data => createAPI(`/pms/dm/basic/getDataContentList`, "post", data); |
|||
export const getObjectList = data => createAPI(`/pms/dm/basic/getObjectList`, "post", data); |
|||
export const getObjectListBy = data => createAPI(`/pms/dm/basic/getObjectListBy`, "post", data); |
|||
export const addItemObject = data => createAPI(`/pms/dm/basic/addItemObject`, "post", data); |
|||
export const deleteItemObject = data => createAPI(`/pms/dm/basic/deleteItemObject`, "post", data); |
|||
export const updateItemObject = data => createAPI(`/pms/dm/basic/updateItemObject`, "post", data); |
|||
|
|||
// ------------------------------------- 检验模板 -------------------------------------
|
|||
export const templateSearch = data => createAPI(`/pms/dm/basic/templateSearch`, "post", data); |
|||
export const templateSave = data => createAPI(`/pms/dm/basic/templateSave`, "post", data); |
|||
export const templateUpdate = data => createAPI(`/pms/dm/basic/templateUpdate`, "post", data); |
|||
export const templateDelete = data => createAPI(`/pms/dm/basic/templateDelete`, "post", data); |
|||
export const templateDetailsSearch = data => createAPI(`/pms/dm/basic/templateDetailsSearch`, "post", data); |
|||
export const addItemDetails = data => createAPI(`/pms/dm/basic/addItemDetails`, "post", data); |
|||
export const getItemList = data => createAPI(`/pms/dm/basic/getItemList`, "post", data); |
|||
export const delItemDetails = data => createAPI(`/pms/dm/basic/delItemDetails`, "post", data); |
|||
export const saveItemDetailed = data => createAPI(`/pms/dm/basic/saveItemDetailed`, "post", data); |
|||
export const getItem = data => createAPI(`/pms/dm/basic/getItem`, "post", data); |
|||
export const getInspectionStandards = data => createAPI(`/pms/dm/basic/getInspectionStandards`, "post", data); |
|||
export const saveInspectionStandard = data => createAPI(`/pms/dm/basic/saveInspectionStandard`, "post", data); |
|||
export const goUpItemQC = data => createAPI(`/pms/dm/basic/goUpItemQC`, "post", data); |
|||
export const goDownItemQC = data => createAPI(`/pms/dm/basic/goDownItemQC`, "post", data); |
|||
export const uploadTemplateExcel = data => createAPI(`/pms/dm/basic/uploadTemplateExcel`, "post", data); |
|||
|
|||
// ------------------------------------- 刀模属性 / 类别属性 -------------------------------------
|
|||
export const dmPartAttributeSearch = data => createAPI(`/pms/dm/basic/dmPartAttributeSearch`, "post", data); |
|||
export const dmPartAttributeSave = data => createAPI(`/pms/dm/basic/dmPartAttributeSave`, "post", data); |
|||
export const dmPartAttributeEdit = data => createAPI(`/pms/dm/basic/dmPartAttributeEdit`, "post", data); |
|||
export const dmPartAttributeDelete = data => createAPI(`/pms/dm/basic/dmPartAttributeDelete`, "post", data); |
|||
export const qcFamilyAttributeSearch = data => createAPI(`/pms/dm/basic/qcFamilyAttributeSearch`, "post", data); |
|||
export const qcFamilyAttributeSave = data => createAPI(`/pms/dm/basic/qcFamilyAttributeSave`, "post", data); |
|||
export const qcFamilyAttributeDelete = data => createAPI(`/pms/dm/basic/qcFamilyAttributeDelete`, "post", data); |
|||
export const dmAttributeTemplateDetailsSearch = data => createAPI(`/pms/dm/basic/dmAttributeTemplateDetailsSearch`, "post", data); |
|||
export const dmAttributeTemplateSave = data => createAPI(`/pms/dm/basic/dmAttributeTemplateSave`, "post", data); |
|||
export const dmAttributeTemplateDelete = data => createAPI(`/pms/dm/basic/dmAttributeTemplateDelete`, "post", data); |
|||
export const dmAttributeTemplateDetailedSave = data => createAPI(`/pms/dm/basic/dmAttributeTemplateDetailedSave`, "post", data); |
|||
export const dmAttributeTemplateList = data => createAPI(`/pms/dm/basic/dmAttributeTemplateList`, "post", data); |
|||
export const dmAttributeTemplateFirstByTool = data => createAPI(`/pms/dm/basic/dmAttributeTemplateFirstByTool`, "post", data); |
|||
// 物料(刀模)+模板:覆盖检验项目/标准值(检验标准清单)
|
|||
export const dmAttributeTemplateItemDetailsSearch = data => createAPI(`/pms/dm/basic/dmAttributeTemplateItemDetailsSearch`, "post", data); |
|||
export const dmAttributeTemplateItemGetItemList = data => createAPI(`/pms/dm/basic/dmAttributeTemplateItemGetItemList`, "post", data); |
|||
export const dmAttributeTemplateItemAdd = data => createAPI(`/pms/dm/basic/dmAttributeTemplateItemAdd`, "post", data); |
|||
export const dmAttributeTemplateItemDelete = data => createAPI(`/pms/dm/basic/dmAttributeTemplateItemDelete`, "post", data); |
|||
export const dmAttributeTemplateItemSave = data => createAPI(`/pms/dm/basic/dmAttributeTemplateItemSave`, "post", data); |
|||
export const getOperationDescList = data => createAPI(`/pms/dm/basic/getOperationDescList`, "post", data); |
|||
export const getManufacturerList = data => createAPI(`/pms/dm/basic/getManufacturerList`, "post", data); |
|||
export const getAllResourceList = data => createAPI(`/pms/dm/basic/getAllResourceList`, "post", data); |
|||
export const dmToolInfoSearch = data => createAPI(`/pms/dm/basic/dmToolInfoSearch`, "post", data); |
|||
export const dmsearchToolHeader = data => createAPI(`/pms/dm/basic/dmsearchToolHeader`, "post", data); |
|||
export const dmPartAttributeUploadExcel = data => createAPI(`/pms/dm/basic/dmPartAttributeUploadExcel`, "post", data); |
|||
export const uploadFamilyAttributeExcel = data => createAPI(`/pms/dm/basic/uploadFamilyAttributeExcel`, "post", data); |
|||
|
|||
// 兼容导出(旧 DM 页面仍可能引用旧命名)
|
|||
export const searchPartInfo = dmToolInfoSearch; |
|||
export const uploadPartAttributeExcel = dmPartAttributeUploadExcel; |
|||
export const searchPartAttributeDetails = dmAttributeTemplateDetailsSearch; |
|||
export const savePartAttributeDetails = dmAttributeTemplateSave; |
|||
export const deletePartAttributeDetails = dmAttributeTemplateDelete; |
|||
export const saveAttributeDetailed = dmAttributeTemplateDetailedSave; |
|||
export const getPartTemplateLists = dmAttributeTemplateList; |
|||
export const qcPartAttributeSearch = dmPartAttributeSearch; |
|||
export const qcPartAttributeSave = dmPartAttributeSave; |
|||
export const qcPartAttributeEdit = dmPartAttributeEdit; |
|||
export const qcPartAttributeDelete = dmPartAttributeDelete; |
|||
|
|||
// ------------------------------------- dm 前缀(兼容旧命名) -------------------------------------
|
|||
export const dmInspectionTypeSearch = inspectionTypeSearch; |
|||
export const dmQcMethodSearch = qcMethodSearch; |
|||
export const dmQcItemSearch = qcItemSearch; |
|||
export const dmQcItemSave = qcItemSave; |
|||
export const dmQcItemUpdate = qcItemUpdate; |
|||
export const dmQcItemDelete = qcItemDelete; |
|||
export const dmTemplateSearch = templateSearch; |
|||
export const dmTemplateSave = templateSave; |
|||
export const dmTemplateUpdate = templateUpdate; |
|||
export const dmTemplateDelete = templateDelete; |
|||
export const dmQcPartAttributeSearch = dmPartAttributeSearch; |
|||
export const dmQcPartAttributeSave = dmPartAttributeSave; |
|||
export const dmQcPartAttributeEdit = dmPartAttributeEdit; |
|||
export const dmQcPartAttributeDelete = dmPartAttributeDelete; |
|||
export const dmQcFamilyAttributeSearch = qcFamilyAttributeSearch; |
|||
export const dmQcFamilyAttributeSave = qcFamilyAttributeSave; |
|||
export const dmQcFamilyAttributeDelete = qcFamilyAttributeDelete; |
|||
@ -0,0 +1,15 @@ |
|||
import { createAPI } from "@/utils/httpRequest.js"; |
|||
|
|||
export const qcDMFAIInspectionSearch = data => createAPI(`/pms/dm/fai/qcDMFAIInspectionSearch`, "post", data); |
|||
export const dmFaiDetailSearch = data => createAPI(`/pms/dm/fai/dmFaiDetailSearch`, "post", data); |
|||
export const dmFaiRecordDelete = data => createAPI(`/pms/dm/fai/dmFaiRecordDelete`, "post", data); |
|||
export const saveDMFAIDetailedRecord = data => createAPI(`/pms/dm/fai/saveDMFAIDetailedRecord`, "post", data); |
|||
export const saveDMFAISubmitResult = data => createAPI(`/pms/dm/fai/saveDMFAISubmitResult`, "post", data); |
|||
export const saveDMFAISubDetailed = data => createAPI(`/pms/dm/fai/saveDMFAISubDetailed`, "post", data); |
|||
export const selectDMFAISubDetailedRecord = data => createAPI(`/pms/dm/fai/selectDMFAISubDetailedRecord`, "post", data); |
|||
export const checkDMFAIIsSubmit = data => createAPI(`/pms/dm/fai/checkDMFAIIsSubmit`, "post", data); |
|||
export const saveDMFAIInspection = data => createAPI(`/pms/dm/fai/saveDMFAIInspection`, "post", data); |
|||
export const actionDMFAIInspection = data => createAPI(`/pms/dm/fai/actionDMFAIInspection`, "post", data); |
|||
export const cancelDMFAIApproval = data => createAPI(`/pms/dm/fai/cancelDMFAIApproval`, "post", data); |
|||
export const getDMFAIItemObjectList = data => createAPI(`/pms/dm/fai/getDMFAIItemObjectList`, "post", data); |
|||
export const queryDmTemplateList = data => createAPI(`/pms/dm/queryDmTemplateList`, "post", data); |
|||
4225
src/views/modules/dm/DMFAIResultEntry.vue
File diff suppressed because it is too large
View File
File diff suppressed because it is too large
View File
@ -0,0 +1,668 @@ |
|||
<template> |
|||
<div class="mod-config"> |
|||
<el-form :inline="true" label-position="top" :model="searchData" @keyup.enter.native="getDataList()"> |
|||
<el-form-item :label="'BU'"> |
|||
<el-select v-model="searchData.buDesc" placeholder="请选择" clearable style="width: 130px"> |
|||
<el-option v-for="i in userBuList" :key="i.buNo" :label="i.buDesc" :value="i.buDesc"></el-option> |
|||
</el-select> |
|||
</el-form-item> |
|||
<el-form-item :label="'类别编码'"><el-input v-model="searchData.familyID" clearable style="width: 120px"></el-input></el-form-item> |
|||
<el-form-item :label="'类别名称'"><el-input v-model="searchData.familyName" clearable style="width: 120px"></el-input></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> |
|||
</el-form-item> |
|||
<el-form-item :label="' '"> |
|||
<el-button type="primary" icon="el-icon-upload" @click="qcUpload()">导入</el-button> |
|||
</el-form-item> |
|||
</el-form> |
|||
|
|||
<el-table :height="height" :data="dataList" border style="width: 100%;"> |
|||
<el-table-column prop="buDesc" header-align="center" align="center" label="BU"></el-table-column> |
|||
<el-table-column prop="familyID" header-align="center" align="center" label="物料类别编码"></el-table-column> |
|||
<el-table-column prop="familyName" header-align="center" align="center" label="物料类别名称"></el-table-column> |
|||
<el-table-column prop="attributeRemark" header-align="center" align="center" label="备注"></el-table-column> |
|||
<el-table-column fixed="right" header-align="center" align="center" width="160" label="操作"> |
|||
<template slot-scope="scope"> |
|||
<a v-if="!authDetail" type="text" size="small" @click="detailModal(scope.row)">检验模板</a> |
|||
<a v-if="!authDelete" type="text" size="small" @click="deletePropertiesModel(scope.row)">删除</a> |
|||
</template> |
|||
</el-table-column> |
|||
</el-table> |
|||
|
|||
<el-pagination |
|||
@size-change="sizeChangeHandle" |
|||
@current-change="currentChangeHandle" |
|||
:current-page="pageIndex" |
|||
:page-sizes="[20, 50, 100, 200, 500]" |
|||
:page-size="pageSize" |
|||
:total="totalPage" |
|||
layout="total, sizes, prev, pager, next, jumper"> |
|||
</el-pagination> |
|||
|
|||
<el-dialog title="类别属性设置" :close-on-click-modal="false" v-drag :visible.sync="modalFlag" width="430px"> |
|||
<el-form :inline="true" label-position="top" :model="modalData" style="margin-left: 7px;margin-top: -5px;"> |
|||
<el-form-item label="BU"> |
|||
<el-select v-model="modalData.bu" placeholder="请选择" style="width: 375px"> |
|||
<el-option v-for="i in userBuList" :key="i.buNo" :label="i.sitename" :value="i.buNo"></el-option> |
|||
</el-select> |
|||
</el-form-item> |
|||
</el-form> |
|||
<el-form :inline="true" label-position="top" :model="modalData" style="margin-left: 7px;margin-top: -5px;"> |
|||
<el-form-item> |
|||
<span slot="label" @click="getBaseList(1042)"><a herf="#">类别编码</a></span> |
|||
<el-input v-model="modalData.familyID" style="width: 120px"></el-input> |
|||
</el-form-item> |
|||
<el-form-item label="类别名称:"><el-input v-model="modalData.familyName" disabled style="width: 240px"></el-input></el-form-item> |
|||
</el-form> |
|||
<el-form :inline="true" label-position="top" style="margin-left: 7px;margin-top: -5px;"> |
|||
<el-form-item label="备注:"><el-input v-model="modalData.attributeRemark" style="width: 375px"></el-input></el-form-item> |
|||
</el-form> |
|||
<el-footer style="height:40px;margin-top: 10px;text-align:center"> |
|||
<el-button type="primary" @click="saveData()">保存</el-button> |
|||
<el-button type="primary" @click="modalFlag = false">关闭</el-button> |
|||
</el-footer> |
|||
</el-dialog> |
|||
|
|||
<el-dialog title="检验模板清单" :close-on-click-modal="false" v-drag :visible.sync="detailModelFlag" width="1400px"> |
|||
<el-form :inline="true" label-position="top"> |
|||
<el-form-item :label="'类别编码'"><el-input v-model="detailData.familyID" readonly style="width: 120px"></el-input></el-form-item> |
|||
<el-form-item :label="'类别名称'"><el-input v-model="detailData.familyName" readonly style="width: 300px"></el-input></el-form-item> |
|||
<el-form-item :label="' '"><el-button type="primary" @click="addFastModal()">新增</el-button></el-form-item> |
|||
</el-form> |
|||
<el-table :height="300" :data="detailList" border style="width: 100%;"> |
|||
<el-table-column prop="templateId" header-align="center" align="center" label="模板编码"></el-table-column> |
|||
<el-table-column prop="templateName" header-align="center" align="left" label="模板名称"></el-table-column> |
|||
<el-table-column prop="inspectionTypeName" header-align="center" align="center" label="检验类型"></el-table-column> |
|||
<el-table-column prop="operation" header-align="center" align="center" label="工序"></el-table-column> |
|||
<el-table-column prop="resourceID" header-align="center" align="center" label="机台"></el-table-column> |
|||
<el-table-column prop="manufacturerName" header-align="center" align="center" label="供应商"></el-table-column> |
|||
<el-table-column prop="" header-align="center" align="center" min-width="150" label="检验水平"> |
|||
<template slot-scope="scope"> |
|||
<el-button type="primary" @click="chooseLevel(scope.row)" style="width:18%;padding: 3px 7px">· · ·</el-button> |
|||
<el-input v-model="scope.row.samplingLevelDesc" readonly style="width:77%"></el-input> |
|||
</template> |
|||
</el-table-column> |
|||
<el-table-column prop="" header-align="center" align="center" min-width="90" label="检验周期(h)"> |
|||
<template slot-scope="scope"><el-input v-model="scope.row.inspectionCycle" type="number"></el-input></template> |
|||
</el-table-column> |
|||
<el-table-column prop="" header-align="center" align="center" min-width="150" label="抽样方案"> |
|||
<template slot-scope="scope"> |
|||
<el-button type="primary" @click="chooseProgrammeRow(scope.row)" style="width:18%;padding: 3px 7px">· · ·</el-button> |
|||
<el-input v-model="scope.row.samplingProgrammeDesc" readonly style="width:77%"></el-input> |
|||
</template> |
|||
</el-table-column> |
|||
<el-table-column prop="" header-align="center" align="center" min-width="70" label="AQL"> |
|||
<template slot-scope="scope"><el-input v-model="scope.row.aql" type="number"></el-input></template> |
|||
</el-table-column> |
|||
<el-table-column prop="" header-align="center" align="center" min-width="70" label="AC"> |
|||
<template slot-scope="scope"><el-input v-model="scope.row.ac" type="number"></el-input></template> |
|||
</el-table-column> |
|||
<el-table-column prop="" header-align="center" align="center" min-width="70" label="RE"> |
|||
<template slot-scope="scope"><el-input v-model="scope.row.re" type="number"></el-input></template> |
|||
</el-table-column> |
|||
<el-table-column fixed="right" header-align="center" align="center" width="90" label="操作"> |
|||
<template slot-scope="scope"> |
|||
<a type="text" size="small" @click="deletePartAttributeDetails(scope.row)">删除模板</a> |
|||
</template> |
|||
</el-table-column> |
|||
</el-table> |
|||
<el-footer style="height:40px;margin-top: 20px;text-align:center"> |
|||
<el-button type="primary" @click="saveDetail()">保存</el-button> |
|||
<el-button type="primary" @click="detailModelFlag = false">关闭</el-button> |
|||
</el-footer> |
|||
</el-dialog> |
|||
|
|||
<el-dialog title="新增" @close="refreshDetailList" :close-on-click-modal="false" v-drag :visible.sync="fastAddFlag" width="1100px"> |
|||
<div style="font-size: 12px"> |
|||
<el-form :inline="true" label-position="top" :model="detailData"> |
|||
<el-form-item :label="'模板编码'"><el-input v-model="detailData.templateId" clearable style="width: 120px"></el-input></el-form-item> |
|||
<el-form-item :label="'模板名称'"><el-input v-model="detailData.templateName" clearable style="width: 120px"></el-input></el-form-item> |
|||
<el-form-item label="检验类型"> |
|||
<el-select v-model="detailData.inspectionTypeNo" placeholder="请选择" style="width: 100px"> |
|||
<el-option v-for="i in options" :key="i.inspectionTypeNo" :label="i.inspectionTypeName" :value="i.inspectionTypeNo"></el-option> |
|||
</el-select> |
|||
</el-form-item> |
|||
<el-form-item :label="' '"><el-button type="primary" @click="checkInspectionType()">查询</el-button></el-form-item> |
|||
<el-form-item style="margin-left: 117px" :label="' '"> |
|||
<el-button |
|||
v-if="detailData.inspectionTypeNo === '101' || detailData.inspectionTypeNo === '102' || detailData.inspectionTypeNo === '103' || detailData.inspectionTypeNo === '104' || detailData.inspectionTypeNo === '106' || detailData.inspectionTypeNo === '107'" |
|||
type="primary" @click="getOperationList()" style="width: 63px">工序</el-button> |
|||
<el-button v-if="detailData.inspectionTypeNo === '105'" type="primary" @click="getManufacturerListFn()" style="width: 63px">供应商</el-button> |
|||
</el-form-item> |
|||
<el-form-item :label="' '"> |
|||
<el-button |
|||
v-if="detailData.inspectionTypeNo === '101' || detailData.inspectionTypeNo === '102' || detailData.inspectionTypeNo === '103' || detailData.inspectionTypeNo === '104' || detailData.inspectionTypeNo === '106' || detailData.inspectionTypeNo === '107'" |
|||
type="primary" @click="getAllResourceListFn()" style="width: 63px">机台</el-button> |
|||
</el-form-item> |
|||
</el-form> |
|||
</div> |
|||
<el-container style="margin-top: 0px;"> |
|||
<el-main style="width: 470px;padding: 1px"> |
|||
<span style="font-size: 12px">可选模板:</span> |
|||
<el-table height="360" :data="itemList1" border ref="itemTable1" @row-click="itemClickRow1" @selection-change="selectionItem1" highlight-current-row style="width: 100%"> |
|||
<el-table-column type="selection" header-align="center" align="center" width="50"></el-table-column> |
|||
<el-table-column prop="templateId" header-align="center" align="center" min-width="80" label="模板编码"></el-table-column> |
|||
<el-table-column prop="templateName" header-align="center" align="center" min-width="170" label="模板名称"></el-table-column> |
|||
<el-table-column prop="inspectionTypeName" header-align="center" align="center" min-width="80" label="检验类型"></el-table-column> |
|||
</el-table> |
|||
</el-main> |
|||
<el-main style="width: 100px;padding: 1px"> |
|||
<div style="margin-top: 160px;margin-left: 18px"><el-button type="primary" @click="addItem()">添加>></el-button></div> |
|||
<div style="margin-top: 15px;margin-left: 18px"><el-button type="primary" @click="deleteItem()">删除<<</el-button></div> |
|||
</el-main> |
|||
<el-main style="width: 470px;padding: 1px"> |
|||
<span style="font-size: 12px">已有模板:</span> |
|||
<el-table height="360" :data="itemList2" border ref="itemTable2" @row-click="itemClickRow2" @selection-change="selectionItem2" highlight-current-row style="width: 100%"> |
|||
<el-table-column type="selection" header-align="center" align="center" width="50"></el-table-column> |
|||
<el-table-column prop="templateId" header-align="center" align="center" min-width="80" label="模板编码"></el-table-column> |
|||
<el-table-column prop="templateName" header-align="center" align="center" min-width="170" label="模板名称"></el-table-column> |
|||
<el-table-column prop="manufacturerName" header-align="center" align="center" min-width="100" label="供应商"></el-table-column> |
|||
<el-table-column prop="inspectionTypeName" header-align="center" align="center" min-width="80" label="检验类型"></el-table-column> |
|||
</el-table> |
|||
</el-main> |
|||
</el-container> |
|||
<el-footer style="height:40px;margin-top: 20px;text-align:center"> |
|||
<el-button type="primary" @click="fastAddFlag = false">关闭</el-button> |
|||
</el-footer> |
|||
</el-dialog> |
|||
|
|||
<el-dialog title="工序清单" :close-on-click-modal="false" v-drag :visible.sync="operationModelFlag" width="420px"> |
|||
<div class="rq"> |
|||
<el-form :inline="true" label-position="top" :model="operationData"> |
|||
<el-form-item :label="'工序:'"><el-input v-model="operationData.operationDesc" style="width: 120px"></el-input></el-form-item> |
|||
<el-form-item :label="' '"><el-button type="primary" @click="getOperationList2()">查询</el-button></el-form-item> |
|||
</el-form> |
|||
<el-table :height="300" :data="operationList" ref="operationTable" @row-click="operationClickRow" @selection-change="selectionOperationChangeHandle" border :row-class-name="operationRowClassName" style="width: 100%;"> |
|||
<el-table-column type="index" width="50" align="center"> |
|||
<template slot-scope="scope"><el-radio v-model="operationCurrent" :label="scope.row.index">{{""}}</el-radio></template> |
|||
</el-table-column> |
|||
<el-table-column prop="operationDesc" header-align="center" align="center" label="工序"></el-table-column> |
|||
</el-table> |
|||
</div> |
|||
<el-footer style="height:40px;margin-top: 20px;text-align:center"><el-button type="primary" @click="confirmOperation()">确认</el-button></el-footer> |
|||
</el-dialog> |
|||
|
|||
<el-dialog title="机台清单" :close-on-click-modal="false" v-drag :visible.sync="resourceModelFlag" width="420px"> |
|||
<div class="rq"> |
|||
<el-form :inline="true" label-position="top" :model="resourceData"> |
|||
<el-form-item :label="'机台编码'"><el-input v-model="resourceData.resourceId" clearable style="width: 120px"></el-input></el-form-item> |
|||
<el-form-item :label="'机台名称'"><el-input v-model="resourceData.resourceDesc" clearable style="width: 120px"></el-input></el-form-item> |
|||
<el-form-item :label="' '"><el-button type="primary" @click="getAllResourceList2()">查询</el-button></el-form-item> |
|||
</el-form> |
|||
<el-table :height="300" :data="resourceList" ref="resourceTable" @row-click="resourceClickRow" @selection-change="selectionResourceChangeHandle" border :row-class-name="resourceRowClassName" style="width: 100%;"> |
|||
<el-table-column type="index" width="50" align="center"> |
|||
<template slot-scope="scope"><el-radio v-model="resourceCurrent" :label="scope.row.index">{{""}}</el-radio></template> |
|||
</el-table-column> |
|||
<el-table-column prop="resourceId" header-align="center" align="center" label="机台编码"></el-table-column> |
|||
<el-table-column prop="resourceDesc" header-align="center" align="center" label="机台名称"></el-table-column> |
|||
</el-table> |
|||
</div> |
|||
<el-footer style="height:40px;margin-top: 20px;text-align:center"><el-button type="primary" @click="confirmResource()">确认</el-button></el-footer> |
|||
</el-dialog> |
|||
|
|||
<el-dialog title="供应商清单" :close-on-click-modal="false" v-drag :visible.sync="manufacturerModelFlag" width="420px"> |
|||
<div class="rq"> |
|||
<el-form :inline="true" label-position="top" :model="manufacturerData"> |
|||
<el-form-item :label="'供应商编码:'"><el-input v-model="manufacturerData.manufacturerID" clearable style="width: 120px"></el-input></el-form-item> |
|||
<el-form-item :label="'供应商名称:'"><el-input v-model="manufacturerData.manufacturerName" clearable style="width: 120px"></el-input></el-form-item> |
|||
<el-form-item :label="' '"><el-button type="primary" @click="getManufacturerListFn()">查询</el-button></el-form-item> |
|||
</el-form> |
|||
<el-table :height="300" :data="manufacturerList" ref="manufacturerTable" @row-click="manufacturerClickRow" @selection-change="selectionManufacturerChangeHandle" border style="width: 100%;"> |
|||
<el-table-column type="selection" header-align="center" align="center" width="50"></el-table-column> |
|||
<el-table-column prop="manufacturerID" header-align="center" align="center" label="供应商编码"></el-table-column> |
|||
<el-table-column prop="manufacturerName" header-align="center" align="center" label="供应商名称"></el-table-column> |
|||
</el-table> |
|||
</div> |
|||
<el-footer style="height:40px;margin-top: 20px;text-align:center"> |
|||
<el-button type="primary" @click="confirmManufacturer()">确认</el-button> |
|||
<el-button type="primary" @click="manufacturerModelFlag = false">关闭</el-button> |
|||
</el-footer> |
|||
</el-dialog> |
|||
|
|||
<Chooselist ref="baseList" @getBaseData="getBaseData"></Chooselist> |
|||
<dmUpload ref="qcUpload" @refreshPageTables="getDataList()" v-drag></dmUpload> |
|||
</div> |
|||
</template> |
|||
|
|||
<script> |
|||
import { |
|||
qcFamilyAttributeSearch, |
|||
qcFamilyAttributeSave, |
|||
qcFamilyAttributeDelete, |
|||
getPartTemplateLists, |
|||
searchPartAttributeDetails, |
|||
saveAttributeDetailed, |
|||
savePartAttributeDetails, |
|||
deletePartAttributeDetails, |
|||
getOperationDescList, |
|||
getManufacturerList, |
|||
getAllResourceList, |
|||
inspectionTypeSearch, |
|||
getSiteAndBuByUserName |
|||
} from "@/api/qc/dmBasic.js"; |
|||
import Chooselist from "@/views/modules/common/Chooselist_eam"; |
|||
import { userFavoriteList, saveUserFavorite, removeUserFavorite } from "@/api/userFavorite.js"; |
|||
import dmUpload from "./dm_upload.vue"; |
|||
|
|||
export default { |
|||
name: "DMQcFamilyAttribute", |
|||
components: { Chooselist, dmUpload }, |
|||
data() { |
|||
return { |
|||
favorite: false, |
|||
searchData: { site: "", userName: this.$store.state.user.name, familyID: "", familyName: "", buDesc: "RFID", attributeType: "B", inspectionTypeNo: "105", page: 1, limit: 10 }, |
|||
height: 200, |
|||
pageIndex: 1, |
|||
pageSize: 100, |
|||
totalPage: 0, |
|||
modalFlag: false, |
|||
modalData: { site: "", bu: "2_03-RFID", flag: "", familyID: "", familyName: "", supplierNo: "", supplierDesc: "", attributeRemark: "", createBy: this.$store.state.user.name, attributeType: "B" }, |
|||
detailData: { site: "", buNo: "", familyID: "", familyName: "", attributeNo: "", attributeType: "B", inspectionTypeNo: "105", templateId: "", templateName: "", createBy: this.$store.state.user.name }, |
|||
detailModelFlag: false, |
|||
detailList: [], |
|||
fastAddFlag: false, |
|||
itemList1: [], |
|||
itemList2: [], |
|||
itemSelections1: [], |
|||
itemSelections2: [], |
|||
tempLevelRow: null, |
|||
tempProgrammeRow: null, |
|||
operationList: [], |
|||
operationModelFlag: false, |
|||
operationData: { operationDesc: "", inspectionTypeNo: "" }, |
|||
operation: "", |
|||
operationCurrent: -1, |
|||
resourceModelFlag: false, |
|||
resourceData: { site: "", resourceId: "", resourceDesc: "" }, |
|||
resourceList: [], |
|||
resourceId: "", |
|||
resourceCurrent: -1, |
|||
manufacturerModelFlag: false, |
|||
manufacturerList: [], |
|||
manufacturerData: { site: "", manufacturerID: "", manufacturerName: "" }, |
|||
dataListManufacturerSelections: [], |
|||
selectionManufacturer: [], |
|||
dataList: [], |
|||
userBuList: [], |
|||
options: [], |
|||
authSearch: false, |
|||
authSave: false, |
|||
authDelete: false, |
|||
authDetail: false, |
|||
menuId: this.$route.meta.menuId |
|||
}; |
|||
}, |
|||
mounted() { |
|||
this.$nextTick(() => { |
|||
this.height = window.innerHeight - 210; |
|||
}); |
|||
}, |
|||
created() { |
|||
this.getButtonAuthData(); |
|||
this.getSiteAndBuByUserName(); |
|||
this.inspectionTypeSearch(); |
|||
this.favoriteIsOk(); |
|||
if (!this.authSearch) this.getDataList(); |
|||
}, |
|||
methods: { |
|||
chooseLevel(row) { |
|||
this.tempLevelRow = row; |
|||
this.getBaseList(208); |
|||
}, |
|||
chooseProgrammeRow(row) { |
|||
this.tempProgrammeRow = row; |
|||
this.getBaseList(207); |
|||
}, |
|||
getSiteAndBuByUserName() { |
|||
getSiteAndBuByUserName({ username: this.$store.state.user.name }).then(({ data }) => { |
|||
if (data.code === 0) this.userBuList = data.rows; |
|||
}); |
|||
}, |
|||
inspectionTypeSearch() { |
|||
inspectionTypeSearch({ site: this.$store.state.user.site }).then(({ data }) => { |
|||
if (data.code === 0) this.options = data.rows; |
|||
}); |
|||
}, |
|||
getDataList() { |
|||
this.searchData.limit = this.pageSize; |
|||
this.searchData.page = this.pageIndex; |
|||
this.searchData.inspectionTypeNo = "105"; |
|||
qcFamilyAttributeSearch(this.searchData).then(({ data }) => { |
|||
if (data.code === 0) { |
|||
this.dataList = data.page.list; |
|||
this.pageIndex = data.page.currPage; |
|||
this.pageSize = data.page.pageSize; |
|||
this.totalPage = data.page.totalCount; |
|||
} |
|||
}); |
|||
}, |
|||
sizeChangeHandle(val) { this.pageSize = val; this.pageIndex = 1; this.getDataList(); }, |
|||
currentChangeHandle(val) { this.pageIndex = val; this.getDataList(); }, |
|||
addModal() { |
|||
this.modalData = { site: "", bu: '2_03-RFID', flag: "1", familyID: "", familyName: "", supplierNo: "", supplierDesc: "", attributeRemark: "", createBy: this.$store.state.user.name, attributeType: "B" }; |
|||
this.modalFlag = true; |
|||
}, |
|||
saveData() { |
|||
if (!this.modalData.bu) return this.$message.warning("请选择BU!"); |
|||
if (!this.modalData.familyID) return this.$message.warning("请选择物料分类编码!"); |
|||
if (!this.modalData.familyName) return this.$message.warning("请选择物料分类名称!"); |
|||
qcFamilyAttributeSave(this.modalData).then(({ data }) => { |
|||
if (data && data.code === 0) { |
|||
this.getDataList(); |
|||
this.modalFlag = false; |
|||
this.$message({ message: "操作成功", type: "success", duration: 1500, onClose: () => {} }); |
|||
} else { |
|||
this.$alert(data.msg, "错误", { confirmButtonText: "确定" }); |
|||
} |
|||
}); |
|||
}, |
|||
deletePropertiesModel(row) { |
|||
this.$confirm("是否删除这个分类属性?", "提示", { confirmButtonText: "确定", cancelButtonText: "取消", type: "warning" }) |
|||
.then(() => qcFamilyAttributeDelete(row).then(({ data }) => { |
|||
if (data && data.code === 0) { |
|||
this.getDataList(); |
|||
this.$message({ message: "操作成功", type: "success", duration: 1500, onClose: () => {} }); |
|||
} else { |
|||
this.$alert(data.msg, "错误", { confirmButtonText: "确定" }); |
|||
} |
|||
})) |
|||
.catch(() => {}); |
|||
}, |
|||
detailModal(row) { |
|||
this.detailData.site = row.site; |
|||
this.detailData.buNo = row.buNo; |
|||
this.detailData.familyID = row.familyID; |
|||
this.detailData.familyName = row.familyName; |
|||
this.detailData.attributeNo = row.familyID; |
|||
this.detailData.inspectionTypeNo = "105"; |
|||
searchPartAttributeDetails(this.detailData).then(({ data }) => { |
|||
this.detailList = data.rows || []; |
|||
}); |
|||
this.detailModelFlag = true; |
|||
}, |
|||
saveDetail() { |
|||
const reqList = this.detailList.map((item) => { |
|||
const inData = { ...item, updateBy: this.$store.state.user.name }; |
|||
return saveAttributeDetailed(inData); |
|||
}); |
|||
Promise.all(reqList).then(() => { |
|||
this.getDataList(); |
|||
this.detailModelFlag = false; |
|||
this.$message({ message: "操作成功", type: "success", duration: 1500, onClose: () => {} }); |
|||
}); |
|||
}, |
|||
addFastModal() { |
|||
this.itemSelections1 = null; |
|||
this.itemSelections2 = null; |
|||
this.selectionManufacturer = []; |
|||
this.dataListManufacturerSelections = []; |
|||
this.operation = ""; |
|||
this.resourceId = ""; |
|||
this.operationCurrent = -1; |
|||
this.resourceCurrent = -1; |
|||
this.detailData.inspectionTypeNo = "105"; |
|||
this.checkInspectionType(); |
|||
this.fastAddFlag = true; |
|||
}, |
|||
checkInspectionType() { |
|||
this.detailData.inspectionTypeNo = "105"; |
|||
getPartTemplateLists(this.detailData).then(({ data }) => { |
|||
this.operation = ""; |
|||
this.resourceId = ""; |
|||
this.operationCurrent = -1; |
|||
this.resourceCurrent = -1; |
|||
this.itemList1 = data.row1 || []; |
|||
this.itemList2 = data.row2 || []; |
|||
}); |
|||
}, |
|||
itemClickRow1(row) { |
|||
this.$refs.itemTable1.toggleRowSelection(row); |
|||
}, |
|||
itemClickRow2(row) { |
|||
this.$refs.itemTable2.toggleRowSelection(row); |
|||
}, |
|||
selectionItem1(val) { |
|||
this.itemSelections1 = val; |
|||
}, |
|||
selectionItem2(val) { |
|||
this.itemSelections2 = val; |
|||
}, |
|||
selectFlag() { |
|||
return true; |
|||
}, |
|||
addItem() { |
|||
if (!this.itemSelections1 || this.itemSelections1.length === 0) { |
|||
this.$message.warning("请选择可选模板!"); |
|||
return; |
|||
} |
|||
if (this.detailData.inspectionTypeNo === "105" && (!this.selectionManufacturer || this.selectionManufacturer.length === 0)) { |
|||
this.$message.warning("请选择供应商!"); |
|||
return; |
|||
} |
|||
if ((this.detailData.inspectionTypeNo === "101" || this.detailData.inspectionTypeNo === "102" || this.detailData.inspectionTypeNo === "103" || this.detailData.inspectionTypeNo === "104" || this.detailData.inspectionTypeNo === "106" || this.detailData.inspectionTypeNo === "107") && !this.operation) { |
|||
this.$message.warning("请选择工序!"); |
|||
return; |
|||
} |
|||
if ((this.detailData.inspectionTypeNo === "101" || this.detailData.inspectionTypeNo === "102" || this.detailData.inspectionTypeNo === "103" || this.detailData.inspectionTypeNo === "104" || this.detailData.inspectionTypeNo === "106" || this.detailData.inspectionTypeNo === "107") && !this.resourceId) { |
|||
this.$message.warning("请选择机台!"); |
|||
return; |
|||
} |
|||
const inData = { |
|||
site: this.detailData.site, |
|||
buNo: this.detailData.buNo, |
|||
attributeNo: this.detailData.familyID, |
|||
itemList: this.itemSelections1, |
|||
operation: this.operation, |
|||
resourceID: this.resourceId, |
|||
manufacturerList: this.selectionManufacturer, |
|||
attributeType: this.detailData.attributeType, |
|||
inspectionTypeNo: this.detailData.inspectionTypeNo |
|||
}; |
|||
savePartAttributeDetails(inData).then(({ data }) => { |
|||
if (data && data.code === 0) { |
|||
this.checkInspectionType(); |
|||
this.itemSelections1 = []; |
|||
this.operation = ""; |
|||
this.resourceId = ""; |
|||
this.selectionManufacturer = []; |
|||
} else { |
|||
this.$alert(data.msg, "错误", { confirmButtonText: "确定" }); |
|||
} |
|||
}); |
|||
}, |
|||
deleteItem() { |
|||
if (!this.itemSelections2 || this.itemSelections2.length === 0) { |
|||
this.$message.warning("请选择已有模板!"); |
|||
return; |
|||
} |
|||
const inData = { |
|||
attributeNo: this.detailData.familyID, |
|||
itemList: this.itemSelections2, |
|||
attributeType: this.detailData.attributeType, |
|||
site: this.detailData.site, |
|||
buNo: this.detailData.buNo |
|||
}; |
|||
deletePartAttributeDetails(inData).then(({ data }) => { |
|||
if (data && data.code === 0) { |
|||
this.checkInspectionType(); |
|||
this.itemSelections2 = []; |
|||
} else { |
|||
this.$alert(data.msg, "错误", { confirmButtonText: "确定" }); |
|||
} |
|||
}); |
|||
}, |
|||
deletePartAttributeDetails(row) { |
|||
this.$confirm("是否删除这个检验模板?", "提示", { confirmButtonText: "确定", cancelButtonText: "取消", type: "warning" }) |
|||
.then(() => { |
|||
deletePartAttributeDetails(row).then(({ data }) => { |
|||
if (data && data.code === 0) { |
|||
searchPartAttributeDetails(this.detailData).then(({ data }) => { |
|||
this.detailList = data.rows || []; |
|||
}); |
|||
this.$message({ message: "操作成功", type: "success", duration: 1500, onClose: () => {} }); |
|||
} else { |
|||
this.$alert(data.msg, "错误", { confirmButtonText: "确定" }); |
|||
} |
|||
}); |
|||
}) |
|||
.catch(() => {}); |
|||
}, |
|||
refreshDetailList() { |
|||
searchPartAttributeDetails(this.detailData).then(({ data }) => { |
|||
this.detailList = data.rows || []; |
|||
}); |
|||
}, |
|||
getBaseList(val) { |
|||
this.tagNo = val; |
|||
this.$nextTick(() => { |
|||
if (val === 1042) this.$refs.baseList.init(val, this.modalData.familyID); |
|||
if (val === 208 && this.tempLevelRow) this.$refs.baseList.init(val, this.tempLevelRow.samplingLevelNo); |
|||
if (val === 207 && this.tempProgrammeRow) this.$refs.baseList.init(val, this.tempProgrammeRow.samplingProgrammeNo); |
|||
}); |
|||
}, |
|||
getBaseData(val) { |
|||
if (this.tagNo === 1042) { |
|||
this.modalData.familyID = val.FamilyID; |
|||
this.modalData.familyName = val.FamilyName; |
|||
} |
|||
if (this.tagNo === 208 && this.tempLevelRow) { |
|||
this.tempLevelRow.samplingLevelNo = val.sampling_level_no; |
|||
this.tempLevelRow.samplingLevelDesc = val.sampling_level_desc; |
|||
} |
|||
if (this.tagNo === 207 && this.tempProgrammeRow) { |
|||
this.tempProgrammeRow.samplingProgrammeNo = val.sampling_programme_no; |
|||
this.tempProgrammeRow.samplingProgrammeDesc = val.sampling_programme_desc; |
|||
} |
|||
}, |
|||
getManufacturerListFn() { |
|||
this.manufacturerData.site = this.$store.state.user.site; |
|||
getManufacturerList(this.manufacturerData).then(({ data }) => { |
|||
if (data && data.code === 0) { |
|||
this.manufacturerList = data.rows || []; |
|||
this.$nextTick(() => { |
|||
if (this.$refs.manufacturerTable) this.$refs.manufacturerTable.clearSelection(); |
|||
this.manufacturerList.forEach((row) => { |
|||
if (this.selectionManufacturer.includes(row.manufacturerID) && this.$refs.manufacturerTable) { |
|||
this.$refs.manufacturerTable.toggleRowSelection(row, true); |
|||
} |
|||
}); |
|||
}); |
|||
this.manufacturerModelFlag = true; |
|||
} else { |
|||
this.$alert(data.msg, "错误", { confirmButtonText: "确定" }); |
|||
} |
|||
}); |
|||
}, |
|||
manufacturerClickRow(row) { |
|||
this.$refs.manufacturerTable.toggleRowSelection(row); |
|||
}, |
|||
selectionManufacturerChangeHandle(val) { |
|||
this.dataListManufacturerSelections = val; |
|||
}, |
|||
confirmManufacturer() { |
|||
this.selectionManufacturer = this.dataListManufacturerSelections.map((i) => i.manufacturerID); |
|||
this.manufacturerModelFlag = false; |
|||
}, |
|||
getOperationList() { |
|||
this.operationData.inspectionTypeNo = this.detailData.inspectionTypeNo; |
|||
getOperationDescList(this.operationData).then(({ data }) => { |
|||
if (data && data.code === 0) { |
|||
this.operationList = data.rows || []; |
|||
this.operationModelFlag = true; |
|||
} else { |
|||
this.$alert(data.msg, "错误", { confirmButtonText: "确定" }); |
|||
} |
|||
}); |
|||
}, |
|||
getOperationList2() { |
|||
getOperationDescList(this.operationData).then(({ data }) => { |
|||
if (data && data.code === 0) { |
|||
this.operationList = data.rows || []; |
|||
this.operationCurrent = -1; |
|||
} else { |
|||
this.$alert(data.msg, "错误", { confirmButtonText: "确定" }); |
|||
} |
|||
}); |
|||
}, |
|||
operationClickRow(row) { |
|||
this.$refs.operationTable.toggleRowSelection(row); |
|||
}, |
|||
selectionOperationChangeHandle(val) { |
|||
if (val && val.length > 0) { |
|||
this.operation = val[0].operationDesc; |
|||
this.operationCurrent = val[0].index; |
|||
} |
|||
}, |
|||
operationRowClassName({ row, rowIndex }) { |
|||
row.index = rowIndex; |
|||
}, |
|||
confirmOperation() { |
|||
this.operationModelFlag = false; |
|||
}, |
|||
getAllResourceListFn() { |
|||
this.resourceData.site = this.$store.state.user.site; |
|||
getAllResourceList(this.resourceData).then(({ data }) => { |
|||
if (data && data.code === 0) { |
|||
this.resourceList = data.rows || []; |
|||
this.resourceModelFlag = true; |
|||
} else { |
|||
this.$alert(data.msg, "错误", { confirmButtonText: "确定" }); |
|||
} |
|||
}); |
|||
}, |
|||
getAllResourceList2() { |
|||
getAllResourceList(this.resourceData).then(({ data }) => { |
|||
if (data && data.code === 0) { |
|||
this.resourceList = data.rows || []; |
|||
this.resourceCurrent = -1; |
|||
} else { |
|||
this.$alert(data.msg, "错误", { confirmButtonText: "确定" }); |
|||
} |
|||
}); |
|||
}, |
|||
resourceClickRow(row) { |
|||
this.$refs.resourceTable.toggleRowSelection(row); |
|||
}, |
|||
selectionResourceChangeHandle(val) { |
|||
if (val && val.length > 0) { |
|||
this.resourceId = val[0].resourceId; |
|||
this.resourceCurrent = val[0].index; |
|||
} |
|||
}, |
|||
resourceRowClassName({ row, rowIndex }) { |
|||
row.index = rowIndex; |
|||
}, |
|||
confirmResource() { |
|||
this.resourceModelFlag = false; |
|||
}, |
|||
qcUpload() { |
|||
const currentData = { flag: "familyAttribute", createBy: this.$store.state.user.name, site: this.$store.state.user.site }; |
|||
this.$nextTick(() => this.$refs.qcUpload.init(currentData)); |
|||
}, |
|||
favoriteIsOk() { |
|||
userFavoriteList({ userId: this.$store.state.user.id, languageCode: this.$i18n.locale }).then(({ data }) => { |
|||
for (let i = 0; i < data.list.length; i++) if (this.$route.meta.menuId === data.list[i].menuId) this.favorite = true; |
|||
}); |
|||
}, |
|||
favoriteFunction() { |
|||
const userFavorite = { userId: this.$store.state.user.id, functionId: this.$route.meta.menuId }; |
|||
if (this.favorite) { |
|||
removeUserFavorite(userFavorite).then(({ data }) => { this.$message.success(data.msg); this.favorite = false; }); |
|||
} else { |
|||
saveUserFavorite(userFavorite).then(({ data }) => { this.$message.success(data.msg); this.favorite = true; }); |
|||
} |
|||
}, |
|||
getButtonAuthData() { |
|||
const searchFlag = this.isAuth(this.menuId + ":search"); |
|||
const saveFlag = this.isAuth(this.menuId + ":save"); |
|||
const deleteFlag = this.isAuth(this.menuId + ":delete"); |
|||
const detailFlag = this.isAuth(this.menuId + ":detail"); |
|||
this.authSearch = !searchFlag; |
|||
this.authSave = !saveFlag; |
|||
this.authDelete = !deleteFlag; |
|||
this.authDetail = !detailFlag; |
|||
} |
|||
} |
|||
}; |
|||
</script> |
|||
1162
src/views/modules/dm/DMQcItem.vue
File diff suppressed because it is too large
View File
File diff suppressed because it is too large
View File
@ -0,0 +1,615 @@ |
|||
<template> |
|||
<div class="mod-config"> |
|||
<!-- 条件查询 --> |
|||
<el-form :inline="true" label-position="top" :model="searchData"> |
|||
<el-form-item label="BU"> |
|||
<el-select v-model="searchData.buDesc" placeholder="请选择" clearable style="width: 80px"> |
|||
<el-option |
|||
v-for="i in userBuList" |
|||
:key="i.buNo" |
|||
:label="i.buDesc" |
|||
:value="i.buDesc"> |
|||
</el-option> |
|||
</el-select> |
|||
</el-form-item> |
|||
<el-form-item label="方法编码"> |
|||
<el-input v-model="searchData.methodNo" clearable style="width: 120px"></el-input> |
|||
</el-form-item> |
|||
<el-form-item label="方法名称"> |
|||
<el-input v-model="searchData.methodName" clearable style="width: 200px"></el-input> |
|||
</el-form-item> |
|||
<el-form-item label="检验类型"> |
|||
<el-select v-model="searchData.inspectionTypeNo" placeholder="请选择" style="width: 100px"> |
|||
<el-option label="全部" value=""></el-option> |
|||
<el-option |
|||
v-for="i in options" |
|||
:key="i.inspectionTypeNo" |
|||
:label="i.inspectionTypeName" |
|||
:value="i.inspectionTypeNo"> |
|||
</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> |
|||
<download-excel |
|||
:fields="fields()" |
|||
:data="exportData" |
|||
type="xls" |
|||
:name="exportName" |
|||
:header="exportHeader" |
|||
:footer="exportFooter" |
|||
:fetch="createExportData" |
|||
:before-generate="startDownload" |
|||
:before-finish="finishDownload" |
|||
worksheet="导出信息" |
|||
class="el-button el-button--primary el-button--medium"> |
|||
{{ "导出" }} |
|||
</download-excel> |
|||
</el-form-item> |
|||
</el-form> |
|||
|
|||
<!-- 展示列表 --> |
|||
<el-table |
|||
:height="height" |
|||
:data="dataList" |
|||
@header-dragend="handleColumnResize" |
|||
border |
|||
v-loading="dataListLoading" |
|||
style="width: 100%;"> |
|||
<el-table-column |
|||
v-for="(item,index) in columnList" :key="index" |
|||
:sortable="item.columnSortable" |
|||
:prop="item.columnProp" |
|||
:header-align="item.headerAlign" |
|||
:show-overflow-tooltip="item.showOverflowTooltip" |
|||
:align="item.align" |
|||
:fixed="item.fixed===''?false:item.fixed" |
|||
:min-width="item.columnWidth" |
|||
: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-else> |
|||
{{ scope.row[item.columnProp] }} |
|||
</span> |
|||
</span> |
|||
<span v-if="item.columnImage"><img :src="scope.row[item.columnProp]" style="width: 100px; height: 80px"/></span> |
|||
</template> |
|||
</el-table-column> |
|||
<el-table-column |
|||
fixed="right" |
|||
header-align="center" |
|||
align="center" |
|||
width="130" |
|||
label="操作"> |
|||
<template slot-scope="scope"> |
|||
<a v-if="!authUpdate" type="text" size="small" @click="updateModal(scope.row)">修改</a> |
|||
<a v-if="!authDelete" type="text" size="small" @click="deleteModal(scope.row)">删除</a> |
|||
</template> |
|||
</el-table-column> |
|||
</el-table> |
|||
|
|||
<el-pagination |
|||
@size-change="sizeChangeHandle" |
|||
@current-change="currentChangeHandle" |
|||
:current-page="pageIndex" |
|||
:page-sizes="[20, 50, 100, 200, 500]" |
|||
:page-size="pageSize" |
|||
:total="totalPage" |
|||
layout="total, sizes, prev, pager, next, jumper"> |
|||
</el-pagination> |
|||
|
|||
<!-- 新增和修改 --> |
|||
<el-dialog title="检验方法" :close-on-click-modal="false" v-drag :visible.sync="modalFlag" width="500px"> |
|||
<el-form :inline="true" label-position="top" :model="modalData" :rules="rules" style="margin-left: 7px;margin-top: -5px;"> |
|||
<el-form-item label="BU" prop="bu" :rules="rules.bu"> |
|||
<el-select v-model="modalData.bu" placeholder="请选择" :disabled="modalDisableFlag" style="width: 456px"> |
|||
<el-option |
|||
v-for="i in userBuList" |
|||
:key="i.buNo" |
|||
:label="i.sitename" |
|||
:value="i.buNo"> |
|||
<span style="float: left;width: 100px">{{ i.sitename }}</span> |
|||
<span style="float: right; color: #8492a6;white-space:nowrap;overflow:hidden;text-overflow:ellipsis; font-size: 11px;width: 60px"> |
|||
{{ i.buDesc }} |
|||
</span> |
|||
</el-option> |
|||
</el-select> |
|||
</el-form-item> |
|||
</el-form> |
|||
<el-form :inline="true" label-position="top" :model="modalData" :rules="rules" style="margin-left: 7px;margin-top: -5px;"> |
|||
<el-form-item label="方法名称:" prop="methodName" :rules="rules.methodNameType"> |
|||
<el-input v-model="modalData.methodName" style="width: 221px"></el-input> |
|||
</el-form-item> |
|||
<el-form-item label="检验类型:" prop="inspectionTypeNo" :rules="rules.inspectionTypeNoType"> |
|||
<el-select v-model="modalData.inspectionTypeNo" placeholder="请选择" style="width: 221px"> |
|||
<el-option |
|||
v-for="i in options" |
|||
:key="i.inspectionTypeNo" |
|||
:label="i.inspectionTypeName" |
|||
:value="i.inspectionTypeNo"> |
|||
</el-option> |
|||
</el-select> |
|||
</el-form-item> |
|||
</el-form> |
|||
<el-form :inline="true" label-position="top" :model="modalData" style="margin-left: 7px;margin-top: -5px;"> |
|||
<el-form-item :label="'检验方法说明:'"> |
|||
<el-input v-model="modalData.methodRemark" style="width: 456px"></el-input> |
|||
</el-form-item> |
|||
</el-form> |
|||
<el-footer style="height:40px;margin-top: 20px;text-align:center"> |
|||
<el-button type="primary" @click="saveData()">保存</el-button> |
|||
<el-button type="primary" @click="modalFlag = false">关闭</el-button> |
|||
</el-footer> |
|||
</el-dialog> |
|||
</div> |
|||
</template> |
|||
|
|||
<script> |
|||
// 请求体/响应字段与后端 DmMethodData 一致;删除前服务端检查 dm_method_item(DmMethodItemData) |
|||
import { |
|||
qcMethodSearch, |
|||
dmMethodSave, |
|||
dmMethodUpdate, |
|||
dmMethodDelete, |
|||
inspectionTypeSearch, |
|||
getSiteAndBuByUserName |
|||
} from "@/api/qc/dmBasic.js"; |
|||
import { getTableDefaultListLanguage, getTableUserListLanguage, updateColumnSize } from "@/api/table.js"; |
|||
import { userFavoriteList, saveUserFavorite, removeUserFavorite } from "@/api/userFavorite.js"; |
|||
|
|||
export default { |
|||
name: "DMQcMethod", |
|||
data() { |
|||
return { |
|||
columnsProp: ["createBy", "updateBy"], |
|||
favorite: false, |
|||
exportData: [], |
|||
exportName: "刀模检验方法" + this.dayjs().format("YYYYMMDDHHmmss"), |
|||
exportHeader: ["刀模检验方法"], |
|||
exportFooter: [], |
|||
exportList: [], |
|||
searchData: { |
|||
site: "", |
|||
userName: this.$store.state.user.name, |
|||
methodNo: "", |
|||
methodName: "", |
|||
inspectionTypeNo: "", |
|||
buDesc: "RFID", |
|||
page: 1, |
|||
limit: 10 |
|||
}, |
|||
pageIndex: 1, |
|||
pageSize: 20, |
|||
totalPage: 0, |
|||
height: 200, |
|||
dataList: [], |
|||
dataListLoading: false, |
|||
modalFlag: false, |
|||
modalDisableFlag: false, |
|||
modalData: { |
|||
site: "", |
|||
bu: "2_03-RFID", |
|||
flag: "", |
|||
methodNo: "", |
|||
methodName: "", |
|||
createBy: this.$store.state.user.name, |
|||
updateBy: this.$store.state.user.name, |
|||
methodRemark: "", |
|||
inspectionTypeNo: "822" |
|||
}, |
|||
columnList: [ |
|||
{ |
|||
userId: this.$store.state.user.name, |
|||
functionId: 822001, |
|||
serialNumber: "822001TableBuDesc", |
|||
tableId: "822001Table", |
|||
tableName: "检验方法维护表", |
|||
columnProp: "buDesc", |
|||
headerAlign: "center", |
|||
align: "center", |
|||
columnLabel: "BU", |
|||
columnHidden: false, |
|||
columnImage: false, |
|||
columnSortable: false, |
|||
sortLv: 0, |
|||
status: true, |
|||
fixed: "", |
|||
columnWidth: 100 |
|||
}, |
|||
{ |
|||
userId: this.$store.state.user.name, |
|||
functionId: 822001, |
|||
serialNumber: "822001TableMethodNo", |
|||
tableId: "822001Table", |
|||
tableName: "检验方法维护表", |
|||
columnProp: "methodNo", |
|||
headerAlign: "center", |
|||
align: "center", |
|||
columnLabel: "方法编码", |
|||
columnHidden: false, |
|||
columnImage: false, |
|||
columnSortable: false, |
|||
sortLv: 0, |
|||
status: true, |
|||
fixed: "", |
|||
columnWidth: 120 |
|||
}, |
|||
{ |
|||
userId: this.$store.state.user.name, |
|||
functionId: 822001, |
|||
serialNumber: "822001TableMethodName", |
|||
tableId: "822001Table", |
|||
tableName: "检验方法维护表", |
|||
columnProp: "methodName", |
|||
headerAlign: "center", |
|||
align: "left", |
|||
columnLabel: "方法名称", |
|||
columnHidden: false, |
|||
columnImage: false, |
|||
columnSortable: false, |
|||
sortLv: 0, |
|||
status: true, |
|||
fixed: "", |
|||
columnWidth: 200 |
|||
}, |
|||
{ |
|||
userId: this.$store.state.user.name, |
|||
functionId: 822001, |
|||
serialNumber: "822001TableMethodRemark", |
|||
tableId: "822001Table", |
|||
tableName: "检验方法维护表", |
|||
columnProp: "methodRemark", |
|||
headerAlign: "center", |
|||
align: "left", |
|||
columnLabel: "方法说明", |
|||
columnHidden: false, |
|||
columnImage: false, |
|||
columnSortable: false, |
|||
sortLv: 0, |
|||
status: true, |
|||
fixed: "", |
|||
columnWidth: 200 |
|||
}, |
|||
{ |
|||
userId: this.$store.state.user.name, |
|||
functionId: 822001, |
|||
serialNumber: "822001TableInspectionTypeName", |
|||
tableId: "822001Table", |
|||
tableName: "检验方法维护表", |
|||
columnProp: "inspectionTypeName", |
|||
headerAlign: "center", |
|||
align: "center", |
|||
columnLabel: "检验类型", |
|||
columnHidden: false, |
|||
columnImage: false, |
|||
columnSortable: false, |
|||
sortLv: 0, |
|||
status: true, |
|||
fixed: "", |
|||
columnWidth: 120 |
|||
}, |
|||
{ |
|||
userId: this.$store.state.user.name, |
|||
functionId: 822001, |
|||
serialNumber: "822001TableCreateDate", |
|||
tableId: "822001Table", |
|||
tableName: "检验方法维护表", |
|||
columnProp: "createDate", |
|||
headerAlign: "center", |
|||
align: "center", |
|||
columnLabel: "创建时间", |
|||
columnHidden: false, |
|||
columnImage: false, |
|||
columnSortable: false, |
|||
sortLv: 0, |
|||
status: true, |
|||
fixed: "", |
|||
columnWidth: 170 |
|||
}, |
|||
{ |
|||
userId: this.$store.state.user.name, |
|||
functionId: 822001, |
|||
serialNumber: "822001TableCreateBy", |
|||
tableId: "822001Table", |
|||
tableName: "检验方法维护表", |
|||
columnProp: "createBy", |
|||
headerAlign: "center", |
|||
align: "center", |
|||
columnLabel: "创建人", |
|||
columnHidden: false, |
|||
columnImage: false, |
|||
columnSortable: false, |
|||
sortLv: 0, |
|||
status: true, |
|||
fixed: "", |
|||
columnWidth: 120 |
|||
}, |
|||
{ |
|||
userId: this.$store.state.user.name, |
|||
functionId: 822001, |
|||
serialNumber: "822001TableUpdateDate", |
|||
tableId: "822001Table", |
|||
tableName: "检验方法维护表", |
|||
columnProp: "updateDate", |
|||
headerAlign: "center", |
|||
align: "center", |
|||
columnLabel: "更新时间", |
|||
columnHidden: false, |
|||
columnImage: false, |
|||
columnSortable: false, |
|||
sortLv: 0, |
|||
status: true, |
|||
fixed: "", |
|||
columnWidth: 170 |
|||
}, |
|||
{ |
|||
userId: this.$store.state.user.name, |
|||
functionId: 822001, |
|||
serialNumber: "822001TableUpdateBy", |
|||
tableId: "822001Table", |
|||
tableName: "检验方法维护表", |
|||
columnProp: "updateBy", |
|||
headerAlign: "center", |
|||
align: "center", |
|||
columnLabel: "更新人", |
|||
columnHidden: false, |
|||
columnImage: false, |
|||
columnSortable: false, |
|||
sortLv: 0, |
|||
status: true, |
|||
fixed: "", |
|||
columnWidth: 120 |
|||
} |
|||
], |
|||
rules: { |
|||
methodNameType: [{ required: true, message: " ", trigger: ["blur", "change"] }], |
|||
inspectionTypeNoType: [{ required: true, message: " ", trigger: ["blur", "change"] }], |
|||
bu: [{ required: true, message: " ", trigger: ["blur", "change"] }] |
|||
}, |
|||
options: [], |
|||
userBuList: [], |
|||
authSearch: false, |
|||
authSave: false, |
|||
authUpdate: false, |
|||
authDelete: false, |
|||
menuId: this.$route.meta.menuId |
|||
}; |
|||
}, |
|||
mounted() { |
|||
this.$nextTick(() => { |
|||
this.height = window.innerHeight - 180; |
|||
}); |
|||
}, |
|||
created() { |
|||
this.getButtonAuthData(); |
|||
this.getSiteAndBuByUserName(); |
|||
this.favoriteIsOk(); |
|||
this.inspectionTypeSearch(); |
|||
this.getTableUserColumn(this.$route.meta.menuId + "table", 1); |
|||
if (!this.authSearch) { |
|||
this.getDataList(); |
|||
} |
|||
}, |
|||
methods: { |
|||
handleColumnResize(newWidth, oldWidth, column) { |
|||
const inData = this.columnList.filter(item => item.columnProp === column.property)[0]; |
|||
inData.columnWidth = newWidth; |
|||
updateColumnSize(inData).then(({ data }) => { |
|||
if (data.code === 0) { |
|||
console.log("栏位宽度保存成功!"); |
|||
} |
|||
}); |
|||
}, |
|||
getSiteAndBuByUserName() { |
|||
const tempData = { username: this.$store.state.user.name }; |
|||
getSiteAndBuByUserName(tempData).then(({ data }) => { |
|||
if (data.code === 0) { |
|||
this.userBuList = data.rows; |
|||
} |
|||
}); |
|||
}, |
|||
getDataList() { |
|||
this.searchData.limit = this.pageSize; |
|||
this.searchData.page = this.pageIndex; |
|||
qcMethodSearch(this.searchData).then(({ data }) => { |
|||
if (data.code === 0) { |
|||
this.dataList = data.page.list; |
|||
this.pageIndex = data.page.currPage; |
|||
this.pageSize = data.page.pageSize; |
|||
this.totalPage = data.page.totalCount; |
|||
} |
|||
}); |
|||
}, |
|||
sizeChangeHandle(val) { |
|||
this.pageSize = val; |
|||
this.pageIndex = 1; |
|||
this.getDataList(); |
|||
}, |
|||
currentChangeHandle(val) { |
|||
this.pageIndex = val; |
|||
this.getDataList(); |
|||
}, |
|||
addModal() { |
|||
|
|||
this.modalData = { |
|||
flag: "1", |
|||
site: "", |
|||
bu: '2_03-RFID', |
|||
createBy: this.$store.state.user.name, |
|||
updateBy: this.$store.state.user.name, |
|||
methodNo: "", |
|||
methodName: "", |
|||
methodRemark: "", |
|||
inspectionTypeNo: "822" |
|||
}; |
|||
this.modalDisableFlag = false; |
|||
this.modalFlag = true; |
|||
}, |
|||
updateModal(row) { |
|||
this.modalData = { |
|||
flag: "2", |
|||
bu: row.site + "_" + row.buNo, |
|||
site: row.site, |
|||
createBy: this.$store.state.user.name, |
|||
updateBy: this.$store.state.user.name, |
|||
methodNo: row.methodNo, |
|||
methodName: row.methodName, |
|||
methodRemark: row.methodRemark, |
|||
inspectionTypeNo: "822" |
|||
}; |
|||
this.modalDisableFlag = true; |
|||
this.modalFlag = true; |
|||
}, |
|||
deleteModal(row) { |
|||
this.$confirm(`是否删除这个检验方法?`, "提示", { |
|||
confirmButtonText: "确定", |
|||
cancelButtonText: "取消", |
|||
type: "warning" |
|||
}) |
|||
.then(() => { |
|||
dmMethodDelete(row).then(({ data }) => { |
|||
if (data && data.code === 0) { |
|||
this.getDataList(); |
|||
this.$message({ message: "操作成功", type: "success", duration: 1500, onClose: () => {} }); |
|||
} else { |
|||
this.$alert(data.msg, "错误", { confirmButtonText: "确定" }); |
|||
} |
|||
}); |
|||
}) |
|||
.catch(() => {}); |
|||
}, |
|||
saveData() { |
|||
if (this.modalData.bu === "" || this.modalData.bu == null) { |
|||
this.$message.warning("请选择BU!"); |
|||
return; |
|||
} |
|||
if (this.modalData.methodName === "" || this.modalData.methodName == null) { |
|||
this.$message.warning("请输入检验方法名称!"); |
|||
return; |
|||
} |
|||
|
|||
if (this.modalData.flag === "1") { |
|||
dmMethodSave(this.modalData).then(({ data }) => { |
|||
if (data && data.code === 0) { |
|||
this.getDataList(); |
|||
this.modalFlag = false; |
|||
this.$message({ message: "操作成功", type: "success", duration: 1500, onClose: () => {} }); |
|||
} else { |
|||
this.$alert(data.msg, "错误", { confirmButtonText: "确定" }); |
|||
} |
|||
}); |
|||
} else { |
|||
dmMethodUpdate(this.modalData).then(({ data }) => { |
|||
if (data && data.code === 0) { |
|||
this.getDataList(); |
|||
this.modalFlag = false; |
|||
this.$message({ message: "操作成功", type: "success", duration: 1500, onClose: () => {} }); |
|||
} else { |
|||
this.$alert(data.msg, "错误", { confirmButtonText: "确定" }); |
|||
} |
|||
}); |
|||
} |
|||
}, |
|||
inspectionTypeSearch() { |
|||
const tempData = { site: this.$store.state.user.site }; |
|||
inspectionTypeSearch(tempData).then(({ data }) => { |
|||
if (data.code === 0) { |
|||
this.options = data.rows; |
|||
this.modalData.inspectionTypeNo = "822"; |
|||
} |
|||
}); |
|||
}, |
|||
favoriteIsOk() { |
|||
const userFavorite = { userId: this.$store.state.user.id, languageCode: this.$i18n.locale }; |
|||
userFavoriteList(userFavorite).then(({ data }) => { |
|||
for (let i = 0; i < data.list.length; i++) { |
|||
if (this.$route.meta.menuId === data.list[i].menuId) { |
|||
this.favorite = true; |
|||
} |
|||
} |
|||
}); |
|||
}, |
|||
favoriteFunction() { |
|||
const userFavorite = { userId: this.$store.state.user.id, functionId: this.$route.meta.menuId }; |
|||
if (this.favorite) { |
|||
removeUserFavorite(userFavorite).then(({ data }) => { |
|||
this.$message.success(data.msg); |
|||
this.favorite = false; |
|||
}); |
|||
} else { |
|||
saveUserFavorite(userFavorite).then(({ data }) => { |
|||
this.$message.success(data.msg); |
|||
this.favorite = true; |
|||
}); |
|||
} |
|||
}, |
|||
async createExportData() { |
|||
this.searchData.limit = -1; |
|||
this.searchData.page = 1; |
|||
this.searchData.inspectionTypeNo = "822"; |
|||
await qcMethodSearch(this.searchData).then(({ data }) => { |
|||
this.exportList = data.page.list; |
|||
}); |
|||
return this.exportList; |
|||
}, |
|||
startDownload() {}, |
|||
finishDownload() {}, |
|||
fields() { |
|||
let json = "{"; |
|||
this.columnList.forEach((item, index) => { |
|||
if (index === this.columnList.length - 1) { |
|||
json += '"' + item.columnLabel + '":"' + item.columnProp + '"'; |
|||
} else { |
|||
json += '"' + item.columnLabel + '":"' + item.columnProp + '",'; |
|||
} |
|||
}); |
|||
json += "}"; |
|||
// eslint-disable-next-line no-eval |
|||
return eval("(" + json + ")"); |
|||
}, |
|||
async getTableUserColumn(tableId, columnId) { |
|||
const queryTableUser = { |
|||
userId: this.$store.state.user.name, |
|||
functionId: this.$route.meta.menuId, |
|||
tableId, |
|||
status: true, |
|||
languageCode: this.$i18n.locale |
|||
}; |
|||
await getTableUserListLanguage(queryTableUser).then(({ data }) => { |
|||
if (data.rows.length > 0) { |
|||
if (columnId === 1) this.columnList = data.rows; |
|||
} else { |
|||
this.getColumnList(tableId, columnId); |
|||
} |
|||
}); |
|||
}, |
|||
async getColumnList(tableId, columnId) { |
|||
const queryTable = { functionId: this.$route.meta.menuId, tableId, languageCode: this.$i18n.locale }; |
|||
await getTableDefaultListLanguage(queryTable).then(({ data }) => { |
|||
if (!data.rows.length === 0) { |
|||
if (columnId === 1) this.columnList = data.rows; |
|||
} |
|||
}); |
|||
}, |
|||
getButtonAuthData() { |
|||
const searchFlag = this.isAuth(this.menuId + ":search"); |
|||
const saveFlag = this.isAuth(this.menuId + ":save"); |
|||
const updateFlag = this.isAuth(this.menuId + ":update"); |
|||
const deleteFlag = this.isAuth(this.menuId + ":delete"); |
|||
this.authSearch = !searchFlag; |
|||
this.authSave = !saveFlag; |
|||
this.authUpdate = !updateFlag; |
|||
this.authDelete = !deleteFlag; |
|||
} |
|||
} |
|||
}; |
|||
</script> |
|||
|
|||
<style scoped> |
|||
.el-table /deep/ .cell{ |
|||
height: auto; |
|||
line-height: 1.5; |
|||
} |
|||
</style> |
|||
1630
src/views/modules/dm/DMQcPartAttribute.vue
File diff suppressed because it is too large
View File
File diff suppressed because it is too large
View File
1172
src/views/modules/dm/DMQcTemplate.vue
File diff suppressed because it is too large
View File
File diff suppressed because it is too large
View File
4162
src/views/modules/dm/DMResultEntry.vue
File diff suppressed because it is too large
View File
File diff suppressed because it is too large
View File
@ -0,0 +1,121 @@ |
|||
<template> |
|||
<div class="customer-css"> |
|||
<el-dialog :title="pageData.titleCon" :close-on-click-modal="false" :visible.sync="visible" width="390px" style="height: 520px;" class="customer-dialog"> |
|||
<el-form :inline="true" label-position="top" label-width="80px"> |
|||
<el-row> |
|||
<el-col :span="12"> |
|||
<el-form-item class="customer-item" label="物料编码"> |
|||
<el-input v-model="pageData.partNo" style="width: 120px;" disabled></el-input> |
|||
</el-form-item> |
|||
</el-col> |
|||
<el-col :span="12"> |
|||
<el-form-item label="检验类型"> |
|||
<el-select v-model="pageData.inspectionTypeNo" placeholder="请选择"> |
|||
<el-option |
|||
v-for="i in pageData.options" |
|||
:key="i.inspectionTypeNo" |
|||
:label="i.inspectionTypeName" |
|||
:value="i.inspectionTypeNo"> |
|||
</el-option> |
|||
</el-select> |
|||
</el-form-item> |
|||
</el-col> |
|||
</el-row> |
|||
<el-row> |
|||
<el-col :span="24"> |
|||
<el-upload |
|||
class="customer-upload" |
|||
drag |
|||
multiple |
|||
:file-list="fileList" |
|||
action="javascript:void(0);" |
|||
ref="uploadFile" |
|||
:before-upload="beforeUploadHandle" |
|||
:on-change="onChange" |
|||
accept="*" |
|||
:auto-upload="false" |
|||
style="text-align: left;"> |
|||
<i class="el-icon-upload"></i> |
|||
<div class="el-upload__text">将文件拖到此处,或<em>点击上传</em></div> |
|||
</el-upload> |
|||
</el-col> |
|||
</el-row> |
|||
</el-form> |
|||
<span slot="footer" class="dialog-footer"> |
|||
<el-button type="primary" @click="saveUploadFile">保存</el-button> |
|||
<el-button type="primary" @click="closeDialog">关闭</el-button> |
|||
</span> |
|||
</el-dialog> |
|||
</div> |
|||
</template> |
|||
|
|||
<script> |
|||
import { uploadSopFile } from "@/api/qc/dmBasic.js"; |
|||
|
|||
export default { |
|||
name: "DmSopUploadFile", |
|||
data() { |
|||
return { |
|||
visible: false, |
|||
fileList: [], |
|||
pageData: { |
|||
titleCon: "", |
|||
site: "", |
|||
buNo: "", |
|||
createBy: "", |
|||
partNo: "", |
|||
inspectionTypeNo: "", |
|||
options: [] |
|||
}, |
|||
}; |
|||
}, |
|||
methods: { |
|||
init(currentRow) { |
|||
this.pageData = JSON.parse(JSON.stringify(currentRow)); |
|||
this.visible = true; |
|||
}, |
|||
beforeUploadHandle() {}, |
|||
onChange(file, fileList) { |
|||
this.fileList = fileList; |
|||
}, |
|||
closeDialog() { |
|||
this.fileList = []; |
|||
this.$refs.uploadFile.clearFiles(); |
|||
this.$emit("refreshPageTables"); |
|||
this.visible = false; |
|||
}, |
|||
saveUploadFile() { |
|||
if (this.fileList == null || this.fileList.length === 0) { |
|||
this.$message.error("请先上传文件!"); |
|||
return false; |
|||
} |
|||
if (this.pageData.inspectionTypeNo === null || this.pageData.inspectionTypeNo === "") { |
|||
this.$message.error("请选择检验类型!"); |
|||
return false; |
|||
} |
|||
const formData = new FormData(); |
|||
for (let i = 0; i < this.fileList.length; i++) { |
|||
formData.append("file", this.fileList[i].raw); |
|||
} |
|||
formData.append("orderRef1", this.pageData.site); |
|||
formData.append("orderRef2", this.pageData.partNo); |
|||
formData.append("orderRef3", this.pageData.inspectionTypeNo); |
|||
formData.append("createBy", this.pageData.createBy); |
|||
formData.append("orderRef4", this.pageData.buNo); |
|||
uploadSopFile(formData).then(({ data }) => { |
|||
if (data.code === 0) { |
|||
this.$message.success(data.msg); |
|||
this.$refs.uploadFile.clearFiles(); |
|||
this.fileList = []; |
|||
} else { |
|||
this.$message.warning(data.msg); |
|||
} |
|||
}); |
|||
} |
|||
} |
|||
}; |
|||
</script> |
|||
|
|||
<style scoped lang="scss"> |
|||
</style> |
|||
|
|||
@ -0,0 +1,215 @@ |
|||
<template> |
|||
<div class="customer-css"> |
|||
<el-dialog :title="titleCon" :close-on-click-modal="false" :visible.sync="visible" width="390px" style="height: 520px;" class="customer-dialog"> |
|||
<el-form :inline="true" label-position="top" label-width="80px"> |
|||
<el-button type="primary" @click="downloadFile()">下载文件模板</el-button> |
|||
<el-form-item label="BU"> |
|||
<el-select v-model="bu" placeholder="请选择" style="width: 295px"> |
|||
<el-option |
|||
v-for="i in userBuList" |
|||
:key="i.buNo" |
|||
:label="i.sitename" |
|||
:value="(i.site || '') + '_' + (i.buNo || '')"> |
|||
<span style="float: left;width: 100px">{{ i.sitename }}</span> |
|||
<span style="float: right; color: #8492a6;white-space:nowrap;overflow:hidden;text-overflow:ellipsis; font-size: 11px;"> |
|||
{{ i.buDesc }} |
|||
</span> |
|||
</el-option> |
|||
</el-select> |
|||
</el-form-item> |
|||
<el-row> |
|||
<el-col :span="24"> |
|||
<el-upload |
|||
class="customer-upload" |
|||
drag |
|||
action="javascript:void(0);" |
|||
ref="uploadFile" |
|||
:limit="1" |
|||
accept=".xlsx,.xls" |
|||
:before-upload="beforeUploadHandle" |
|||
:on-change="onChange" |
|||
:auto-upload="false" |
|||
style="text-align: left;"> |
|||
<i class="el-icon-upload"></i> |
|||
<div class="el-upload__text">将文件拖到此处,或<em>点击上传</em></div> |
|||
</el-upload> |
|||
</el-col> |
|||
</el-row> |
|||
</el-form> |
|||
<span slot="footer" class="dialog-footer"> |
|||
<el-button type="primary" @click="saveUploadFile()">保存</el-button> |
|||
<el-button type="primary" @click="closeDialog">关闭</el-button> |
|||
</span> |
|||
</el-dialog> |
|||
</div> |
|||
</template> |
|||
|
|||
<script> |
|||
import { |
|||
uploadExcel, |
|||
uploadTemplateExcel, |
|||
uploadPartAttributeExcel, |
|||
uploadFamilyAttributeExcel, |
|||
queryFileId, |
|||
getSiteAndBuByUserName |
|||
} from "@/api/qc/dmBasic.js"; |
|||
import { downLoadObjectFile } from "@/api/eam/eam_object_list.js"; |
|||
|
|||
export default { |
|||
name: "DmUpload", |
|||
data() { |
|||
return { |
|||
titleCon: "文件导入", |
|||
visible: false, |
|||
fileList: [], |
|||
bu: "2_03-RFID", |
|||
userBuList: [], |
|||
pageData: { |
|||
flag: "", |
|||
createBy: "", |
|||
site: "" |
|||
} |
|||
}; |
|||
}, |
|||
created() { |
|||
this.getSiteAndBu(); |
|||
}, |
|||
methods: { |
|||
getSiteAndBu() { |
|||
const tempData = { username: this.$store.state.user.name }; |
|||
getSiteAndBuByUserName(tempData).then(({ data }) => { |
|||
if (data.code === 0) { |
|||
this.userBuList = data.rows; |
|||
} |
|||
}); |
|||
}, |
|||
init(currentRow) { |
|||
this.pageData = JSON.parse(JSON.stringify(currentRow)); |
|||
this.visible = true; |
|||
}, |
|||
beforeUploadHandle(file) { |
|||
const extName = file[0].name.substring(file[0].name.lastIndexOf(".")).toLowerCase(); |
|||
if (!(extName === ".xlsx" || extName === ".xls")) { |
|||
this.$message.error("数据导入失败,请选择正确的xlsx模板文件"); |
|||
return false; |
|||
} |
|||
}, |
|||
onChange(file) { |
|||
this.fileList.push(file); |
|||
}, |
|||
closeDialog() { |
|||
this.fileList = []; |
|||
this.$emit("refreshPageTables"); |
|||
this.visible = false; |
|||
}, |
|||
saveUploadFile() { |
|||
if (this.bu === "" || this.bu == null) { |
|||
this.$message.warning("请选择BU!"); |
|||
return false; |
|||
} |
|||
if (this.fileList == null || this.fileList.length === 0) { |
|||
this.$message.error("请先上传文件!"); |
|||
return false; |
|||
} |
|||
const formData = new FormData(); |
|||
formData.append("file", this.fileList[0].raw); |
|||
formData.append("createBy", this.pageData.createBy); |
|||
const buParts = this.bu.split("_"); |
|||
formData.append("site", buParts[0] || ""); |
|||
if (this.pageData.flag === "item" && buParts.length > 1) { |
|||
formData.append("buNo", buParts.slice(1).join("_")); |
|||
} |
|||
|
|||
if (this.pageData.flag === "item") { |
|||
uploadExcel(formData).then(({ data }) => { |
|||
if (data.code === 0) { |
|||
this.$message.success(data.msg); |
|||
this.$refs.uploadFile.clearFiles(); |
|||
this.closeDialog(); |
|||
} else { |
|||
this.$message.warning(data.msg); |
|||
} |
|||
}); |
|||
} else if (this.pageData.flag === "template") { |
|||
formData.set("site", this.bu); |
|||
uploadTemplateExcel(formData).then(({ data }) => { |
|||
if (data.code === 0) { |
|||
this.$message.success(data.msg); |
|||
this.$refs.uploadFile.clearFiles(); |
|||
this.closeDialog(); |
|||
} else { |
|||
this.$message.warning(data.msg); |
|||
} |
|||
}); |
|||
} else if (this.pageData.flag === "partAttribute") { |
|||
formData.set("site", this.bu); |
|||
uploadPartAttributeExcel(formData).then(({ data }) => { |
|||
if (data.code === 0) { |
|||
this.$message.success(data.msg); |
|||
this.$refs.uploadFile.clearFiles(); |
|||
this.closeDialog(); |
|||
} else { |
|||
this.$message.warning(data.msg); |
|||
} |
|||
}); |
|||
} else if (this.pageData.flag === "familyAttribute") { |
|||
uploadFamilyAttributeExcel(formData).then(({ data }) => { |
|||
if (data.code === 0) { |
|||
this.$message.success(data.msg); |
|||
this.$refs.uploadFile.clearFiles(); |
|||
this.closeDialog(); |
|||
} else { |
|||
this.$message.warning(data.msg); |
|||
} |
|||
}); |
|||
} |
|||
this.bu = ""; |
|||
}, |
|||
async downloadFile() { |
|||
const file = { id: 0, fileName: "" }; |
|||
const tempData = { orderRef1: "", orderRef2: "" }; |
|||
|
|||
// 这里沿用原 QC 的模板文件标识(后台/OSS里通常也是按 qc 保存模板文件) |
|||
if (this.pageData.flag === "item") { |
|||
tempData.orderRef1 = "qc"; |
|||
tempData.orderRef2 = "itemFormat"; |
|||
} else if (this.pageData.flag === "template") { |
|||
tempData.orderRef1 = "qc"; |
|||
tempData.orderRef2 = "templateFormat"; |
|||
} else if (this.pageData.flag === "partAttribute") { |
|||
tempData.orderRef1 = "qc"; |
|||
tempData.orderRef2 = "partAttributeFormat"; |
|||
} else if (this.pageData.flag === "familyAttribute") { |
|||
tempData.orderRef1 = "qc"; |
|||
tempData.orderRef2 = "familyAttributeFormat"; |
|||
} |
|||
|
|||
await queryFileId(tempData).then(({ data }) => { |
|||
if (data && data.code === 0) { |
|||
file.id = data.data.id; |
|||
file.fileName = data.data.fileName; |
|||
} else { |
|||
this.$alert(data.msg, "错误", { confirmButtonText: "确定" }); |
|||
} |
|||
}); |
|||
|
|||
await downLoadObjectFile(file).then(({ data }) => { |
|||
const blob = new Blob([data], { type: "application/octet-stream" }); |
|||
const fileName = file.fileName; |
|||
const linkNode = document.createElement("a"); |
|||
linkNode.download = fileName; |
|||
linkNode.style.display = "none"; |
|||
linkNode.href = URL.createObjectURL(blob); |
|||
document.body.appendChild(linkNode); |
|||
linkNode.click(); |
|||
URL.revokeObjectURL(linkNode.href); |
|||
document.body.removeChild(linkNode); |
|||
}); |
|||
} |
|||
} |
|||
}; |
|||
</script> |
|||
|
|||
<style scoped lang="scss"> |
|||
</style> |
|||
|
|||
Write
Preview
Loading…
Cancel
Save
Reference in new issue