Browse Source

2024-10-21

优化
master
fengyuan_yang 2 years ago
parent
commit
5bde27cb09
  1. 7
      src/api/changeManagement/changeManagement.js
  2. 443
      src/views/modules/changeManagement/changeRecord.vue
  3. 406
      src/views/modules/changeManagement/changeRequest.vue
  4. 36
      src/views/modules/customer/customerInformationManagement.vue
  5. 36
      src/views/modules/part/bomManagement.vue
  6. 12
      src/views/modules/part/partInformation.vue
  7. 94
      src/views/modules/part/routingManagement.vue
  8. 2
      src/views/modules/project/projectInfo/com_project_info_part.vue
  9. 127
      src/views/modules/project/projectPart/searchProjectPart.vue

7
src/api/changeManagement/changeManagement.js

@ -7,6 +7,13 @@ import { createAPI } from "@/utils/httpRequest.js";
*/
export const technicalSpecificationSearch = data => createAPI(`/plm/changeManagement/technicalSpecificationSearch`,'post',data)
/**
* 获取技术参数卡列表
* @param data
* @returns {*}
*/
export const technicalSpecificationSearch2 = data => createAPI(`/plm/changeManagement/technicalSpecificationSearch2`,'post',data)
/**
* 根据用户编码获得用户部门
* @param data

443
src/views/modules/changeManagement/changeRecord.vue

@ -3,16 +3,16 @@
<!-- 查询条件 -->
<el-form :inline="true" label-position="top" :model="searchData" @keyup.enter.native="getDataList()">
<!-- <el-form-item :label="'BU'">-->
<!-- <el-select v-model="searchData.buNo" placeholder="请选择" clearable style="width: 130px">-->
<!-- <el-option-->
<!-- v-for = "i in buList"-->
<!-- :key = "i.buNo"-->
<!-- :label = "i.buNo"-->
<!-- :value = "i.buNo">-->
<!-- </el-option>-->
<!-- </el-select>-->
<!-- </el-form-item>-->
<el-form-item :label="'BU'">
<el-select v-model="searchData.buNo" placeholder="请选择" clearable style="width: 130px">
<el-option
v-for = "i in buList"
:key = "i.buNo"
:label = "i.buNo"
:value = "i.buNo">
</el-option>
</el-select>
</el-form-item>
<el-form-item :label="'申请编码'">
<el-input v-model="searchData.changeNo" clearable style="width: 120px"></el-input>
</el-form-item>
@ -210,10 +210,11 @@
<!-- </el-form-item>-->
<!-- </el-form>-->
<el-form :inline="true" label-position="top" style="margin-top: 50px">
<el-button type="primary" @click="addChangeDetail">新增</el-button>
<div class="rq">
<el-table
:data="chooseDataList"
height="348px"
height="320px"
border
style="width:100%">
<el-table-column
@ -519,7 +520,7 @@
min-width="50"
label="操作">
<template slot-scope="scope">
<el-link v-if="scope.row.executeFlag !== 'Y'" style="cursor: pointer" @click="executeModal(scope.row)">执行</el-link>
<el-link v-if="scope.row.executeFlag !== 'Y' && $store.state.user.name === scope.row.executor && modalData.changeStatus === '审批中'" style="cursor: pointer" @click="executeModal(scope.row)">执行</el-link>
</template>
</el-table-column>
</el-table>
@ -560,22 +561,22 @@
<el-table-column
header-align="center"
align="center"
min-width="100"
min-width="200"
label="备注">
<template slot-scope="scope">
<el-input :disabled="changeCountersignatureItemFlag('itemRemark') === 'N'" v-model="scope.row.itemRemark" style="width:98%"></el-input>
</template>
</el-table-column>
<el-table-column
fixed="right"
header-align="center"
align="center"
width="60"
label="操作">
<template slot-scope="scope">
<el-link v-if="scope.row.executeFlag !== 'Y'" style="cursor: pointer" @click="executeCSModal(scope.row)">执行</el-link>
</template>
</el-table-column>
<!-- <el-table-column-->
<!-- fixed="right"-->
<!-- header-align="center"-->
<!-- align="center"-->
<!-- width="60"-->
<!-- label="操作">-->
<!-- <template slot-scope="scope">-->
<!-- <el-link v-if="scope.row.executeFlag !== 'Y'" style="cursor: pointer" @click="executeCSModal(scope.row)">执行</el-link>-->
<!-- </template>-->
<!-- </el-table-column>-->
</el-table>
</div>
</div>
@ -610,6 +611,10 @@
:min-width="item.columnWidth"
:label="item.columnLabel">
<template slot-scope="scope">
<div v-if="item.columnProp === 'codeNo'">
<el-link style="cursor:pointer;" v-if="!item.columnHidden" @click="toMenu(scope.row.codeNo)"> {{ scope.row[item.columnProp] }}</el-link>
<span v-if="item.columnImage"><img :src="scope.row[item.columnProp]" style="width: 100px; height: 80px"/></span>
</div>
<span v-if="!item.columnHidden">{{scope.row[item.columnProp]}}</span>
<span v-if="item.columnImage"><img :src="scope.row[item.columnProp]" style="width: 100px; height: 80px"/></span>
</template>
@ -716,7 +721,7 @@
<!-- ECN种类模态框 -->
<el-dialog title="ECN种类" :close-on-click-modal="false" v-drag :visible.sync="ecnTypeModalFlag" width="900px">
<el-form ref="dataForm" label-position="right">
<el-row v-for="(item, index) in form" :key="index" style="margin-top: 10px">
<el-row v-for="(item, index) in form" :key="index" style="padding-top: 10px;" :style="{borderTop:index === 0?'':'1px solid #ccc'}">
<el-col :span="8">
<el-form-item :prop="'input.'+index+'.value'">
<el-checkbox v-model="item.flag" @change="(val)=>ecnTypeHeaderChange(val,index)" :indeterminate="item.list.filter(a => a.flag === 'Y').length !== 0 && item.list.filter(a => a.flag === 'Y').length !== item.list.length" true-label="Y">{{item.value}}</el-checkbox>
@ -933,6 +938,71 @@
</el-footer>
</el-dialog>
<!-- 可选技术参数卡清单 -->
<el-dialog title="技术参数卡清单" :close-on-click-modal="false" v-drag :visible.sync="addDetailModal" width="820px">
<div class="rq">
<el-form :inline="true" label-position="top" :model="searchData2">
<el-form-item :label="'BU'">
<el-select v-model="searchData2.buNo" disabled style="width: 80px">
<el-option
v-for = "i in buList"
:key = "i.buNo"
:label = "i.buNo"
:value = "i.buNo">
</el-option>
</el-select>
</el-form-item>
<el-form-item label="技术参数卡编码">
<el-input v-model="searchData2.codeNo" clearable style="width: 120px"></el-input>
</el-form-item>
<el-form-item label="正式物料编码">
<el-input v-model="searchData.partNo" clearable style="width: 120px"/>
</el-form-item>
<el-form-item label="客户编码">
<el-input v-model="searchData.customerId" clearable style="width: 120px"/>
</el-form-item>
<el-form-item label="项目编码">
<el-input v-model="searchData.projectId" clearable style="width: 120px"/>
</el-form-item>
<el-form-item :label="' '">
<el-button type="primary" @click="addChangeDetail()">查询</el-button>
</el-form-item>
</el-form>
<el-table
:height="300"
:data="dataList2"
@selection-change="selectionData2"
border
style="width: 100%;">
<el-table-column
type="selection"
header-align="center"
align="center"
width="50">
</el-table-column>
<el-table-column
v-for="(item,index) in columnList2" :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">{{ scope.row[item.columnProp] }}</span>
<span v-if="item.columnImage"><img :src="scope.row[item.columnProp]" style="width: 100px; height: 80px"/></span>
</template>
</el-table-column>
</el-table>
</div>
<el-footer style="height:40px;margin-top: 20px;text-align:center">
<el-button type="primary" @click="addDetail">确认</el-button>
<el-button type="primary" @click="addDetailModal = false">关闭</el-button>
</el-footer>
</el-dialog>
<ChooseList ref="baseList" @getBaseData="getBaseData"></ChooseList>
<!-- 上传文件的modal -->
@ -966,6 +1036,7 @@
getNodeAuthority, //
getApprovalList, //
getBuBySite, // sitebu
technicalSpecificationSearch2, //
} from '@/api/changeManagement/changeManagement.js'
import ChooseList from '@/views/modules/common/Chooselist'
import {verifyData} from "@/api/chooselist/chooselist.js"
@ -1136,6 +1207,17 @@
page: 1,
limit: 10
},
searchData2: {
site: this.$store.state.user.site,
partNo: '',
partDesc: '',
customerId: '',
customerDesc: '',
projectId: '',
projectDesc: '',
codeNo: '',
buNo: '',
},
//
activeTable: 'basicInformation',
activeName: 'basicInformation',
@ -1193,7 +1275,8 @@
menuId: this.$route.meta.menuId,
userName: this.$store.state.user.name,
rejectOpinion: '',
nodeId: ''
nodeId: '',
buNo: ''
},
costImpactData: {
site: this.$store.state.user.site,
@ -1271,6 +1354,7 @@
},
// ======== ========
dataList: [],
dataList2: [],
detailList: [],
fileList: [],
chooseItemList: [],
@ -1288,6 +1372,22 @@
approvalList: [],
// ======== ========
columnList: [
{
userId: this.$store.state.user.name,
functionId: 108002,
serialNumber: '108002Table1BuNo',
tableId: '108002Table1',
tableName: '工程变更记录表',
columnProp: 'buNo',
headerAlign: 'center',
align: 'center',
columnLabel: 'BU',
columnHidden: false,
columnImage: false,
status: true,
fixed: '',
columnWidth: 100
},
{
userId: this.$store.state.user.name,
functionId: 108002,
@ -1481,6 +1581,118 @@
columnWidth: 100
},
],
columnList2: [
{
columnProp: 'buNo',
headerAlign: 'center',
align: 'center',
columnLabel: 'BU',
columnHidden: false,
columnImage: false,
status: true,
fixed: '',
columnWidth: 80
},
{
columnProp: 'partNo',
headerAlign: 'center',
align: 'center',
columnLabel: '正式物料编码',
columnHidden: false,
columnImage: false,
status: true,
fixed: '',
columnWidth: 120
},
{
columnProp: 'partDesc',
headerAlign: 'center',
align: 'left',
columnLabel: '物料名称',
columnHidden: false,
columnImage: false,
status: true,
fixed: '',
columnWidth: 180
},
{
columnProp: 'projectId',
headerAlign: 'center',
align: 'center',
columnLabel: '项目编码',
columnHidden: false,
columnImage: false,
status: true,
fixed: '',
columnWidth: 120
},
{
columnProp: 'projectDesc',
headerAlign: 'center',
align: 'left',
columnLabel: '项目名称',
columnHidden: false,
columnImage: false,
status: true,
fixed: '',
columnWidth: 180
},
{
columnProp: 'customerId',
headerAlign: 'center',
align: 'center',
columnLabel: '客户编码',
columnHidden: false,
columnImage: false,
status: true,
fixed: '',
columnWidth: 120
},
{
columnProp: 'customerDesc',
headerAlign: 'center',
align: 'left',
columnLabel: '客户名称',
columnHidden: false,
columnImage: false,
status: true,
fixed: '',
columnWidth: 180
},
{
columnProp: 'codeNo',
headerAlign: 'center',
align: 'center',
columnLabel: '技术参数卡',
columnHidden: false,
columnImage: false,
status: true,
fixed: '',
columnWidth: 120
},
{
columnProp: 'ecnFlag',
headerAlign: 'center',
align: 'center',
columnLabel: '状态',
columnHidden: false,
columnImage: false,
status: true,
fixed: '',
columnWidth: 100
},
{
columnProp: 'revNo',
headerAlign: 'center',
align: 'center',
columnLabel: '版本号',
columnHidden: false,
columnImage: false,
status: true,
fixed: '',
columnWidth: 80
},
],
detailColumnList: [
{
userId: this.$store.state.user.name,
@ -1920,13 +2132,13 @@
tableName: '执行属性表',
columnProp: 'itemNo',
headerAlign: 'center',
align: 'center',
align: 'left',
columnLabel: '属性编码',
columnHidden: false,
columnImage: false,
status: true,
fixed: '',
columnWidth: 80
columnWidth: 100
},
{
userId: this.$store.state.user.name,
@ -1936,61 +2148,61 @@
tableName: '执行属性表',
columnProp: 'itemDesc',
headerAlign: 'center',
align: 'center',
align: 'left',
columnLabel: '属性名称',
columnHidden: false,
columnImage: false,
status: true,
fixed: '',
columnWidth: 150
},
{
userId: this.$store.state.user.name,
functionId: 108002,
serialNumber: '108002Table7ExecuteFlag',
tableId: '108002Table7',
tableName: '执行属性表',
columnProp: 'executeFlag',
headerAlign: 'center',
align: 'center',
columnLabel: '是否执行',
columnHidden: false,
columnImage: false,
status: true,
fixed: '',
columnWidth: 80
},
{
userId: this.$store.state.user.name,
functionId: 108002,
serialNumber: '108002Table7Executor',
tableId: '108002Table7',
tableName: '执行属性表',
columnProp: 'executor',
headerAlign: 'center',
align: 'center',
columnLabel: '执行人',
columnHidden: false,
columnImage: false,
status: true,
fixed: '',
columnWidth: 100
},{
userId: this.$store.state.user.name,
functionId: 108002,
serialNumber: '108002Table7ExecuteDate',
tableId: '108002Table7',
tableName: '执行属性表',
columnProp: 'itemExecutionDate',
headerAlign: 'center',
align: 'center',
columnLabel: '执行时间',
columnHidden: false,
columnImage: false,
status: true,
fixed: '',
columnWidth: 150
columnWidth: 200
},
// {
// userId: this.$store.state.user.name,
// functionId: 108002,
// serialNumber: '108002Table7ExecuteFlag',
// tableId: '108002Table7',
// tableName: '',
// columnProp: 'executeFlag',
// headerAlign: 'center',
// align: 'center',
// columnLabel: '',
// columnHidden: false,
// columnImage: false,
// status: true,
// fixed: '',
// columnWidth: 80
// },
// {
// userId: this.$store.state.user.name,
// functionId: 108002,
// serialNumber: '108002Table7Executor',
// tableId: '108002Table7',
// tableName: '',
// columnProp: 'executor',
// headerAlign: 'center',
// align: 'center',
// columnLabel: '',
// columnHidden: false,
// columnImage: false,
// status: true,
// fixed: '',
// columnWidth: 100
// },{
// userId: this.$store.state.user.name,
// functionId: 108002,
// serialNumber: '108002Table7ExecuteDate',
// tableId: '108002Table7',
// tableName: '',
// columnProp: 'itemExecutionDate',
// headerAlign: 'center',
// align: 'center',
// columnLabel: '',
// columnHidden: false,
// columnImage: false,
// status: true,
// fixed: '',
// columnWidth: 150
// },
],
approvalColumnList: [
{
@ -2254,6 +2466,7 @@
// ======== ========
fileSelections: [],
itemSelections: [],
dataSelections2: [],
// ======== ========
currentRow: {},
currentCostImpactData: {},
@ -2265,7 +2478,8 @@
chooseModelFlag2: false,
chooseCSModelFlag: false,
uploadDialog: false,
submitModalFlag: false
submitModalFlag: false,
addDetailModal: false
}
},
@ -2551,7 +2765,7 @@
},
executorInput (row, val) {
row.executor = val.toUpperCase()
//row.executor = val.toUpperCase()
},
choosePartNo (row) {
@ -2934,7 +3148,8 @@
isReject: row.isReject,
menuId: this.$route.meta.menuId,
userName: this.$store.state.user.name,
nodeId: row.nodeId
nodeId: row.nodeId,
buNo: row.buNo
}
this.changeTitle = '变更申请-' + this.modalData.changeNo
// ECN
@ -3067,6 +3282,12 @@
}
}
}
if (this.chooseDataList.length === 0) {
this.$message.warning('请添加需要变更的技术参数卡!')
return
}
this.costImpactData.changeTotalCost = this.totalCost
this.executionInfoData.chooseItemList = this.chooseItemList
this.executionInfoData.chooseItemList2 = this.chooseItemList2
@ -3294,10 +3515,10 @@
this.$message.warning('请选择印刷方式!')
return
}
if ((this.modalData.cqcOperatorId === '' || this.modalData.cqcOperatorId == null) && (this.modalData.faiOperatorId === '' || this.modalData.faiOperatorId == null)) {
this.$message.warning('请选择CQC或者FAI人员!')
return
}
// if ((this.modalData.cqcOperatorId === '' || this.modalData.cqcOperatorId == null) && (this.modalData.faiOperatorId === '' || this.modalData.faiOperatorId == null)) {
// this.$message.warning('CQCFAI')
// return
// }
if (this.costImpactData.productionProductFlag === 'Y') { //
@ -3399,6 +3620,10 @@
return;
}
if (this.chooseDataList.length === 0) {
this.$message.warning('请添加需要变更的技术参数卡!')
return
}
this.costImpactData.changeTotalCost = this.totalCost
this.executionInfoData.chooseItemList = this.chooseItemList
this.executionInfoData.chooseItemList2 = this.chooseItemList2
@ -3518,6 +3743,10 @@
row.executeFlag = 'Y'
row.itemExecutionDate = new Date(+ new Date() + 8 * 3600 * 1000).toISOString().replace(/T/g, ' ').replace(/\.[\d]{3}Z/, '')
// row.executor = this.$store.state.user.name
//
if (this.modalData.changeStatus === '审批中') {
this.agreeSubmit()
}
},
//
@ -3601,6 +3830,46 @@
})
},
//
addChangeDetail () {
this.searchData2.buNo = this.modalData.buNo
technicalSpecificationSearch2(this.searchData2).then(({data}) => {
if (data.code === 0) {
this.dataList2 = data.rows
const shouldExclude = (item) => {
return this.chooseDataList.some(cdItem =>
cdItem.site === item.site && cdItem.codeNo === item.codeNo
)
}
this.dataList2 = this.dataList2.filter(item => !shouldExclude(item))
this.addDetailModal = true
} else {
this.dataList2 = []
}
})
},
//
selectionData2 (val) {
this.dataSelections2 = val
},
//
addDetail () {
if (this.dataSelections2.length === 0) {
this.$message.warning("请勾选技术参数卡!")
return
}
this.dataSelections2.forEach(item => {
//
if (!this.chooseDataList.some(cdItem => cdItem.site === item.site && cdItem.codeNo === item.codeNo)) {
this.chooseDataList.push(item)
}
})
this.addDetailModal = false
this.dataSelections2 = []
},
//
focusNextInput (index, type) {
let aaa = ''
@ -3859,6 +4128,14 @@
this.modalData.faiOperatorName = ''
},
toMenu (codeNo) {
if (this.$router.resolve(`/sampleManagement-technicalSpecificationList`).resolved.name === '404') {
this.$alert('权限不足,访问失败', '警告', {confirmButtonText: '确定',})
} else {
this.$router.push({name:`sampleManagement-technicalSpecificationList`,params:{codeNo:codeNo},})
}
},
// ======== ========
/**
* 导出excel

406
src/views/modules/changeManagement/changeRequest.vue

@ -198,7 +198,7 @@
<!-- </el-form-item>-->
<el-form-item label="印刷方式" prop="printing" :rules="rules.printing">
<dict-data-select v-if="modalFlag" v-model="modalData.printing" style="width: 205px" dict-type="change_printing"></dict-data-select>
<el-button type="primary" icon="el-icon-upload" @click="uploadFileModal" style="margin-top: 12px;width: 105px">文件上传</el-button>
<el-button type="primary" icon="el-icon-upload" @click="uploadFileModal" style="margin-top: 15px;width: 105px">文件上传</el-button>
</el-form-item>
</el-form>
<!-- <el-form :inline="true" label-position="top" :model="modalData" :rules="rules" style="margin-top: 50px">-->
@ -218,10 +218,11 @@
<!-- </el-form-item>-->
<!-- </el-form>-->
<el-form :inline="true" label-position="top" style="margin-top: 50px">
<el-button type="primary" @click="addChangeDetail">新增</el-button>
<div class="rq">
<el-table
:data="chooseDataList"
height="348px"
height="320px"
border
style="width:100%">
<el-table-column
@ -512,19 +513,19 @@
min-width="150"
label="备注">
<template slot-scope="scope">
<el-input v-model="scope.row.itemRemark" style="height: 11px" allow-create>;width:98%"></el-input>
</template>
</el-table-column>
<el-table-column
fixed="right"
header-align="center"
align="center"
width="60"
label="操作">
<template slot-scope="scope">
<el-link style="cursor: pointer" v-if="scope.row.executeFlag !== 'Y'" @click="executeModal(scope.row)">执行</el-link>
<el-input v-model="scope.row.itemRemark" style="height: 11px;width:98%"></el-input>
</template>
</el-table-column>
<!-- <el-table-column-->
<!-- fixed="right"-->
<!-- header-align="center"-->
<!-- align="center"-->
<!-- width="60"-->
<!-- label="操作">-->
<!-- <template slot-scope="scope">-->
<!-- <el-link style="cursor: pointer" v-if="scope.row.executeFlag !== 'Y' && $store.state.user.name === scope.row.executor" @click="executeModal(scope.row)">执行</el-link>-->
<!-- </template>-->
<!-- </el-table-column>-->
</el-table>
</div>
</div>
@ -563,22 +564,22 @@
prop=""
header-align="center"
align="center"
min-width="100"
min-width="200"
label="备注">
<template slot-scope="scope">
<el-input v-model="scope.row.itemRemark" style="height: 11px" allow-create>;width:98%"></el-input>
</template>
</el-table-column>
<el-table-column
fixed="right"
header-align="center"
align="center"
width="60"
label="操作">
<template slot-scope="scope">
<el-link style="cursor: pointer" v-if="scope.row.executeFlag !== 'Y'" @click="executeCSModal(scope.row)">执行</el-link>
<el-input v-model="scope.row.itemRemark" style="height: 11px;width:98%"></el-input>
</template>
</el-table-column>
<!-- <el-table-column-->
<!-- fixed="right"-->
<!-- header-align="center"-->
<!-- align="center"-->
<!-- width="60"-->
<!-- label="操作">-->
<!-- <template slot-scope="scope">-->
<!-- <el-link style="cursor: pointer" v-if="scope.row.executeFlag !== 'Y'" @click="executeCSModal(scope.row)">执行</el-link>-->
<!-- </template>-->
<!-- </el-table-column>-->
</el-table>
</div>
</div>
@ -798,6 +799,71 @@
</el-footer>
</el-dialog>
<!-- 可选技术参数卡清单 -->
<el-dialog title="技术参数卡清单" :close-on-click-modal="false" v-drag :visible.sync="addDetailModal" width="820px">
<div class="rq">
<el-form :inline="true" label-position="top" :model="searchData2">
<el-form-item :label="'BU'">
<el-select v-model="searchData2.buNo" placeholder="请选择" clearable style="width: 80px">
<el-option
v-for = "i in buList"
:key = "i.buNo"
:label = "i.buNo"
:value = "i.buNo">
</el-option>
</el-select>
</el-form-item>
<el-form-item label="技术参数卡编码">
<el-input v-model="searchData2.codeNo" clearable style="width: 120px"></el-input>
</el-form-item>
<el-form-item label="正式物料编码">
<el-input v-model="searchData.partNo" clearable style="width: 120px"/>
</el-form-item>
<el-form-item label="客户编码">
<el-input v-model="searchData.customerId" clearable style="width: 120px"/>
</el-form-item>
<el-form-item label="项目编码">
<el-input v-model="searchData.projectId" clearable style="width: 120px"/>
</el-form-item>
<el-form-item :label="' '">
<el-button type="primary" @click="addChangeDetail()">查询</el-button>
</el-form-item>
</el-form>
<el-table
:height="300"
:data="dataList2"
@selection-change="selectionData2"
border
style="width: 100%;">
<el-table-column
type="selection"
header-align="center"
align="center"
width="50">
</el-table-column>
<el-table-column
v-for="(item,index) in columnList2" :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">{{ scope.row[item.columnProp] }}</span>
<span v-if="item.columnImage"><img :src="scope.row[item.columnProp]" style="width: 100px; height: 80px"/></span>
</template>
</el-table-column>
</el-table>
</div>
<el-footer style="height:40px;margin-top: 20px;text-align:center">
<el-button type="primary" @click="addDetail">确认</el-button>
<el-button type="primary" @click="addDetailModal = false">关闭</el-button>
</el-footer>
</el-dialog>
<ChooseList ref="baseList" @getBaseData="getBaseData"></ChooseList>
<!-- 上传文件的modal -->
@ -810,6 +876,7 @@
<script>
import {
technicalSpecificationSearch, //
technicalSpecificationSearch2, //
getDepartmentByUserName, //
changeRequestSave, //
getChangeNo, //
@ -891,6 +958,17 @@
page: 1,
limit: 10
},
searchData2: {
site: this.$store.state.user.site,
partNo: '',
partDesc: '',
customerId: '',
customerDesc: '',
projectId: '',
projectDesc: '',
codeNo: '',
buNo: '',
},
// ======== ========
modalData: {
site: this.$store.state.user.site,
@ -1011,6 +1089,7 @@
},
// ======== ========
dataList: [],
dataList2: [],
chooseDataList: [],
fileList: [],
modelList: [],
@ -1201,6 +1280,118 @@
columnWidth: 80
},
],
columnList2: [
{
columnProp: 'buNo',
headerAlign: 'center',
align: 'center',
columnLabel: 'BU',
columnHidden: false,
columnImage: false,
status: true,
fixed: '',
columnWidth: 80
},
{
columnProp: 'partNo',
headerAlign: 'center',
align: 'center',
columnLabel: '正式物料编码',
columnHidden: false,
columnImage: false,
status: true,
fixed: '',
columnWidth: 120
},
{
columnProp: 'partDesc',
headerAlign: 'center',
align: 'left',
columnLabel: '物料名称',
columnHidden: false,
columnImage: false,
status: true,
fixed: '',
columnWidth: 180
},
{
columnProp: 'projectId',
headerAlign: 'center',
align: 'center',
columnLabel: '项目编码',
columnHidden: false,
columnImage: false,
status: true,
fixed: '',
columnWidth: 120
},
{
columnProp: 'projectDesc',
headerAlign: 'center',
align: 'left',
columnLabel: '项目名称',
columnHidden: false,
columnImage: false,
status: true,
fixed: '',
columnWidth: 180
},
{
columnProp: 'customerId',
headerAlign: 'center',
align: 'center',
columnLabel: '客户编码',
columnHidden: false,
columnImage: false,
status: true,
fixed: '',
columnWidth: 120
},
{
columnProp: 'customerDesc',
headerAlign: 'center',
align: 'left',
columnLabel: '客户名称',
columnHidden: false,
columnImage: false,
status: true,
fixed: '',
columnWidth: 180
},
{
columnProp: 'codeNo',
headerAlign: 'center',
align: 'center',
columnLabel: '技术参数卡',
columnHidden: false,
columnImage: false,
status: true,
fixed: '',
columnWidth: 120
},
{
columnProp: 'ecnFlag',
headerAlign: 'center',
align: 'center',
columnLabel: '状态',
columnHidden: false,
columnImage: false,
status: true,
fixed: '',
columnWidth: 100
},
{
columnProp: 'revNo',
headerAlign: 'center',
align: 'center',
columnLabel: '版本号',
columnHidden: false,
columnImage: false,
status: true,
fixed: '',
columnWidth: 80
},
],
columnChooseDataList: [
{
userId: this.$store.state.user.name,
@ -1440,13 +1631,13 @@
tableName: '执行属性表',
columnProp: 'itemNo',
headerAlign: 'center',
align: 'center',
align: 'left',
columnLabel: '属性编码',
columnHidden: false,
columnImage: false,
status: true,
fixed: '',
columnWidth: 80
columnWidth: 100
},
{
userId: this.$store.state.user.name,
@ -1456,61 +1647,61 @@
tableName: '执行属性表',
columnProp: 'itemDesc',
headerAlign: 'center',
align: 'center',
align: 'left',
columnLabel: '属性名称',
columnHidden: false,
columnImage: false,
status: true,
fixed: '',
columnWidth: 150
},
{
userId: this.$store.state.user.name,
functionId: 108001,
serialNumber: '108001Table6ExecuteFlag',
tableId: '108001Table6',
tableName: '执行属性表',
columnProp: 'executeFlag',
headerAlign: 'center',
align: 'center',
columnLabel: '是否执行',
columnHidden: false,
columnImage: false,
status: true,
fixed: '',
columnWidth: 80
},
{
userId: this.$store.state.user.name,
functionId: 108001,
serialNumber: '108001Table6Executor',
tableId: '108001Table6',
tableName: '执行属性表',
columnProp: 'executor',
headerAlign: 'center',
align: 'center',
columnLabel: '执行人',
columnHidden: false,
columnImage: false,
status: true,
fixed: '',
columnWidth: 100
},{
userId: this.$store.state.user.name,
functionId: 108001,
serialNumber: '108001Table6ExecuteDate',
tableId: '108001Table6',
tableName: '执行属性表',
columnProp: 'itemExecutionDate',
headerAlign: 'center',
align: 'center',
columnLabel: '执行时间',
columnHidden: false,
columnImage: false,
status: true,
fixed: '',
columnWidth: 150
columnWidth: 200
},
// {
// userId: this.$store.state.user.name,
// functionId: 108001,
// serialNumber: '108001Table6ExecuteFlag',
// tableId: '108001Table6',
// tableName: '',
// columnProp: 'executeFlag',
// headerAlign: 'center',
// align: 'center',
// columnLabel: '',
// columnHidden: false,
// columnImage: false,
// status: true,
// fixed: '',
// columnWidth: 80
// },
// {
// userId: this.$store.state.user.name,
// functionId: 108001,
// serialNumber: '108001Table6Executor',
// tableId: '108001Table6',
// tableName: '',
// columnProp: 'executor',
// headerAlign: 'center',
// align: 'center',
// columnLabel: '',
// columnHidden: false,
// columnImage: false,
// status: true,
// fixed: '',
// columnWidth: 100
// },{
// userId: this.$store.state.user.name,
// functionId: 108001,
// serialNumber: '108001Table6ExecuteDate',
// tableId: '108001Table6',
// tableName: '',
// columnProp: 'itemExecutionDate',
// headerAlign: 'center',
// align: 'center',
// columnLabel: '',
// columnHidden: false,
// columnImage: false,
// status: true,
// fixed: '',
// columnWidth: 150
// },
],
columnItemList: [
@ -1726,6 +1917,7 @@
},
// ======== ========
dataSelections: [],
dataSelections2: [],
itemSelections: [],
itemSelections2: [],
itemCSSelections: [],
@ -1740,6 +1932,7 @@
chooseModelFlag2: false,
chooseCSModelFlag: false,
CountersignatureFlag: false,
addDetailModal: false
}
},
@ -1808,7 +2001,7 @@
},
executorInput (row, val) {
row.executor = val.toUpperCase()
//row.executor = val.toUpperCase()
},
choosePartNo (row) {
@ -1889,6 +2082,11 @@
this.$refs.selectDiv.setLengthselected(this.dataSelections.length)
},
//
selectionData2 (val) {
this.dataSelections2 = val
},
//
refreshCurrentTabTable () {
@ -1900,6 +2098,10 @@
this.$message.warning('请选择要变更的技术参数卡!')
return
}
if (!this.dataSelections.every(item => item.buNo === this.dataSelections[0].buNo)) {
this.$message.warning('请选择相同BU的技术参数卡!')
return
}
//
let tempData = {
site: this.$store.state.user.site,
@ -2103,14 +2305,22 @@
this.$message.warning('请选择印刷方式!')
return
}
if ((this.modalData.cqcOperatorId === '' || this.modalData.cqcOperatorId == null) && (this.modalData.faiOperatorId === '' || this.modalData.faiOperatorId == null)) {
this.$message.warning('请选择CQC或者FAI人员!')
return
}
// if ((this.modalData.cqcOperatorId === '' || this.modalData.cqcOperatorId == null) && (this.modalData.faiOperatorId === '' || this.modalData.faiOperatorId == null)) {
// this.$message.warning('CQCFAI')
// return
// }
// if (this.modalData.cqcOperatorId !== '' && this.modalData.cqcOperatorId != null && this.modalData.faiOperatorId !== '' && this.modalData.faiOperatorId != null) {
// this.$message.warning('CQCFAI')
// return
// }
if (this.chooseDataList.length === 0) {
this.$message.warning('请添加需要变更的技术参数卡!')
return
}
if (!this.chooseDataList.every(item => item.buNo === this.chooseDataList[0].buNo)) {
this.$message.warning('请选择相同BU的技术参数卡!')
return
}
this.modalData.detailList = this.chooseDataList
this.modalData.ecnTypeData = this.form
this.fileData.orderRef1 = this.modalData.site
@ -2726,6 +2936,40 @@
})
},
//
addChangeDetail () {
technicalSpecificationSearch2(this.searchData2).then(({data}) => {
if (data.code === 0) {
this.dataList2 = data.rows
const shouldExclude = (item) => {
return this.chooseDataList.some(cdItem =>
cdItem.site === item.site && cdItem.codeNo === item.codeNo
)
}
this.dataList2 = this.dataList2.filter(item => !shouldExclude(item))
this.addDetailModal = true
} else {
this.dataList2 = []
}
})
},
//
addDetail () {
if (this.dataSelections2.length === 0) {
this.$message.warning("请勾选技术参数卡!")
return
}
this.dataSelections2.forEach(item => {
//
if (!this.chooseDataList.some(cdItem => cdItem.site === item.site && cdItem.codeNo === item.codeNo)) {
this.chooseDataList.push(item)
}
})
this.addDetailModal = false
this.dataSelections2 = []
},
// S
getBaseList (val, type) {
this.tagNo = val

36
src/views/modules/customer/customerInformationManagement.vue

@ -1612,24 +1612,24 @@ export default {
fixed: '',
columnWidth: 160
},
{
userId: this.$store.state.user.name,
functionId: 101001,
serialNumber: '101001Table4Status',
tableId: '101001Table4',
tableName: '客户项目信息表',
columnProp: 'status',
headerAlign: 'center',
align: 'center',
columnLabel: '项目状态',
columnHidden: false,
columnImage: false,
columnSortable: false,
sortLv: 0,
status: true,
fixed: '',
columnWidth: 100
},
// {
// userId: this.$store.state.user.name,
// functionId: 101001,
// serialNumber: '101001Table4Status',
// tableId: '101001Table4',
// tableName: '',
// columnProp: 'status',
// headerAlign: 'center',
// align: 'center',
// columnLabel: '',
// columnHidden: false,
// columnImage: false,
// columnSortable: false,
// sortLv: 0,
// status: true,
// fixed: '',
// columnWidth: 100
// },
{
userId: this.$store.state.user.name,
functionId: 101001,

36
src/views/modules/part/bomManagement.vue

@ -1615,6 +1615,24 @@ export default {
fixed: '',
columnWidth: 120
},
{
userId: this.$store.state.user.name,
functionId: 104002,
serialNumber: '104002Table2PartStatusDesc',
tableId: '104002Table2',
tableName: 'BOM子物料表',
columnProp: 'partStatusDesc',
headerAlign: 'center',
align: 'left',
columnLabel: '零件状态',
columnHidden: false,
columnImage: false,
columnSortable: false,
sortLv: 0,
status: true,
fixed: '',
columnWidth: 100
},
{
userId: this.$store.state.user.name,
functionId: 104002,
@ -1833,6 +1851,24 @@ export default {
fixed: '',
columnWidth: 120
},
{
userId: this.$store.state.user.name,
functionId: 104002,
serialNumber: '104002Table3PartStatusDesc',
tableId: '104002Table3',
tableName: 'BOM副产品表',
columnProp: 'partStatusDesc',
headerAlign: 'center',
align: 'left',
columnLabel: '零件状态',
columnHidden: false,
columnImage: false,
columnSortable: false,
sortLv: 0,
status: true,
fixed: '',
columnWidth: 100
},
{
userId: this.$store.state.user.name,
functionId: 104002,

12
src/views/modules/part/partInformation.vue

@ -248,7 +248,7 @@
</el-form-item>
</el-form>
<el-form :inline="true" label-position="top" :model="modalData" :rules="rules">
<el-form-item prop="codeNo" :rules="rules.codeNo">
<el-form-item>
<span style="cursor: pointer" slot="label" @click="getBaseList(20)"><a herf="#">属性模板</a></span>
<el-input v-model="modalData.codeNo" @blur="codeNoBlur(20)" style="width: 128px"></el-input>
<el-input v-model="modalData.codeDesc" disabled style="width: 330px"></el-input>
@ -3758,7 +3758,7 @@
partDesc: '',
spec: '',
partTypeDb: '',
partType: 'Manufactured',
partType: 'Purchased',
familyId: '',
familyName: '',
groupId: '',
@ -4603,10 +4603,10 @@
this.$message.warning('请选择计量单位!')
return
}
if (this.modalData.codeNo === '' || this.modalData.codeNo == null) {
this.$message.warning('请选择属性模板!')
return
}
// if (this.modalData.codeNo === '' || this.modalData.codeNo == null) {
// this.$message.warning('')
// return
// }
if (this.modalData.flag === '3' && (this.modalData.planningMethod == null || this.modalData.planningMethod === '')) {
this.$message.warning('请选择计划方法!')
return

94
src/views/modules/part/routingManagement.vue

@ -434,7 +434,8 @@
<el-form :inline="true" label-position="top" :model="componentData" :rules="componentRules" style="margin-left: 5px">
<el-form-item style="margin-left: 235px" prop="setupLaborClassNo" :rules="componentRules.setupLaborClassNo">
<span style="cursor: pointer" slot="label" @click="getBaseList(118, 2)"><a herf="#">调机过程中人员等级</a></span>
<el-input v-model="componentData.setupLaborClassDesc" readonly style="width: 221px"></el-input>
<el-input v-model="componentData.setupLaborClassNo" @blur="setupLaborClassBlur(118)" style="width: 90px"></el-input>
<el-input v-model="componentData.setupLaborClassDesc" disabled style="width: 127px"></el-input>
</el-form-item>
</el-form>
<el-form :inline="true" label-position="top" :model="componentData" :rules="componentRules" style="margin-left: 5px">
@ -460,7 +461,8 @@
</el-form-item>
<el-form-item prop="laborClassNo" :rules="componentRules.laborClassNo">
<span style="cursor: pointer" slot="label" @click="getBaseList(118, 1)"><a herf="#">人员等级</a></span>
<el-input v-model="componentData.laborClassDesc" readonly style="width: 221px"></el-input>
<el-input v-model="componentData.laborClassNo" @blur="laborClassBlur(118)" style="width: 90px"></el-input>
<el-input v-model="componentData.laborClassDesc" disabled style="width: 127px"></el-input>
</el-form-item>
</el-form>
<el-form :inline="true" label-position="top" :model="componentData" :rules="componentRules" style="margin-left: 5px">
@ -1750,10 +1752,10 @@ export default {
serialNumber: '104003Table2LaborClassNo',
tableId: '104003Table2',
tableName: 'Routing工序表',
columnProp: 'laborClassDesc',
columnProp: 'laborClassNo',
headerAlign: 'center',
align: 'center',
columnLabel: '人员等级',
align: 'left',
columnLabel: '人员等级编码',
columnHidden: false,
columnImage: false,
columnSortable: false,
@ -1762,6 +1764,42 @@ export default {
fixed: '',
columnWidth: 100
},
{
userId: this.$store.state.user.name,
functionId: 104003,
serialNumber: '104003Table2LaborClassDesc',
tableId: '104003Table2',
tableName: 'Routing工序表',
columnProp: 'laborClassDesc',
headerAlign: 'center',
align: 'left',
columnLabel: '人员等级名称',
columnHidden: false,
columnImage: false,
columnSortable: false,
sortLv: 0,
status: true,
fixed: '',
columnWidth: 120
},
{
userId: this.$store.state.user.name,
functionId: 104003,
serialNumber: '104003Table2SetupLaborClassNo',
tableId: '104003Table2',
tableName: 'Routing工序表',
columnProp: 'setupLaborClassNo',
headerAlign: 'center',
align: 'left',
columnLabel: '调机时人员等级编码',
columnHidden: false,
columnImage: false,
columnSortable: false,
sortLv: 0,
status: true,
fixed: '',
columnWidth: 120
},
{
userId: this.$store.state.user.name,
functionId: 104003,
@ -1770,15 +1808,15 @@ export default {
tableName: 'Routing工序表',
columnProp: 'setupLaborClassDesc',
headerAlign: 'center',
align: 'center',
columnLabel: '调机时人员等级',
align: 'left',
columnLabel: '调机时人员等级名称',
columnHidden: false,
columnImage: false,
columnSortable: false,
sortLv: 0,
status: true,
fixed: '',
columnWidth: 100
columnWidth: 120
},
{
userId: this.$store.state.user.name,
@ -4457,6 +4495,46 @@ export default {
this.componentData.workCenterType = ''
},
//
laborClassBlur (tagNo) {
if (this.componentData.laborClassNo != null && this.componentData.laborClassNo !== '') {
let tempData = {
tagno: tagNo,
conditionSql: " and level_id = '" + this.componentData.laborClassNo + "'" + " and site = '" + this.componentData.site + "'"
}
verifyData(tempData).then(({data}) => {
if (data && data.code === 0) {
if (data.baseListData.length > 0) {
this.componentData.laborClassNo = data.baseListData[0].level_id
this.componentData.laborClassDesc = data.baseListData[0].level_desc
return
}
}
})
}
this.componentData.laborClassDesc = ''
},
//
setupLaborClassBlur (tagNo) {
if (this.componentData.setupLaborClassNo != null && this.componentData.setupLaborClassNo !== '') {
let tempData = {
tagno: tagNo,
conditionSql: " and level_id = '" + this.componentData.setupLaborClassNo + "'" + " and site = '" + this.componentData.site + "'"
}
verifyData(tempData).then(({data}) => {
if (data && data.code === 0) {
if (data.baseListData.length > 0) {
this.componentData.setupLaborClassNo = data.baseListData[0].level_id
this.componentData.setupLaborClassDesc = data.baseListData[0].level_desc
return
}
}
})
}
this.componentData.setupLaborClassDesc = ''
},
// ======== ========
/**
* 导出excel

2
src/views/modules/project/projectInfo/com_project_info_part.vue

@ -1778,7 +1778,7 @@
customerPartNo: '',
spec: '',
partTypeDb: '',
partType: 'Manufactured',
partType: 'Purchased',
familyId: '',
familyName: '',
groupId: '',

127
src/views/modules/project/projectPart/searchProjectPart.vue

@ -166,130 +166,7 @@
</el-tab-pane>
<el-tab-pane label="客户信息" name="customer">
<el-divider content-position="left">直接客户</el-divider>
<el-form label-position="top" label-width="100px">
<el-row :gutter="20">
<el-col :span="4">
<div class="grid-content bg-purple">
<el-form-item :label="'客户代码'">
<el-input v-model="customerData.customerNo" readonly></el-input>
</el-form-item>
</div>
</el-col>
<el-col :span="8">
<div class="grid-content bg-purple">
<el-form-item :label="'客户名称'">
<el-input v-model="customerData.customerDesc" readonly></el-input>
</el-form-item>
</div>
</el-col>
<el-col :span="4">
<div class="grid-content bg-purple">
<el-form-item :label="'客户币种'">
<el-input v-model="customerData.customerCurrency" readonly></el-input>
</el-form-item>
</div>
</el-col>
<el-col :span="4">
<div class="grid-content bg-purple">
<el-form-item :label="'年营业额'">
<el-input v-model="customerData.turnoverOfYear" readonly></el-input>
</el-form-item>
</div>
</el-col>
<el-col :span="4">
<div class="grid-content bg-purple">
<el-form-item :label="'年潜在投入'">
<el-input v-model="customerData.potentialRevenueOfYear" readonly></el-input>
</el-form-item>
</div>
</el-col>
</el-row>
<el-row :gutter="20">
<el-col :span="4">
<div class="grid-content bg-purple">
<el-form-item :label="'重要程度'">
<el-input v-model="customerData.importantCustomer" readonly></el-input>
</el-form-item>
</div>
</el-col>
<el-col :span="4">
<div class="grid-content bg-purple">
<el-form-item :label="'客户状态'">
<el-input v-model="customerData.customerStatus" readonly></el-input>
</el-form-item>
</div>
</el-col>
<el-col :span="16">
<div class="grid-content bg-purple">
<el-form-item :label="'客户描述'">
<el-input v-model="customerData.customerDescription" readonly></el-input>
</el-form-item>
</div>
</el-col>
</el-row>
<el-divider content-position="left">终端客户</el-divider>
<el-row :gutter="20">
<el-col :span="4">
<div class="grid-content bg-purple">
<el-form-item :label="'终端客户代码'">
<el-input v-model="finalCustomerData.customerNo" readonly></el-input>
</el-form-item>
</div>
</el-col>
<el-col :span="8">
<div class="grid-content bg-purple">
<el-form-item :label="'终端客户名称'">
<el-input v-model="finalCustomerData.customerDesc" readonly></el-input>
</el-form-item>
</div>
</el-col>
<el-col :span="4">
<div class="grid-content bg-purple">
<el-form-item :label="'客户币种'">
<el-input v-model="finalCustomerData.customerCurrency" readonly></el-input>
</el-form-item>
</div>
</el-col>
<el-col :span="4">
<div class="grid-content bg-purple">
<el-form-item :label="'年营业额'">
<el-input v-model="finalCustomerData.turnoverOfYear" readonly></el-input>
</el-form-item>
</div>
</el-col>
<el-col :span="4">
<div class="grid-content bg-purple">
<el-form-item :label="'年潜在投入'">
<el-input v-model="finalCustomerData.potentialRevenueOfYear" readonly></el-input>
</el-form-item>
</div>
</el-col>
</el-row>
<el-row :gutter="20">
<el-col :span="4">
<div class="grid-content bg-purple">
<el-form-item :label="'重要程度'">
<el-input v-model="finalCustomerData.importantCustomer" readonly></el-input>
</el-form-item>
</div>
</el-col>
<el-col :span="4">
<div class="grid-content bg-purple">
<el-form-item :label="'客户状态'">
<el-input v-model="finalCustomerData.customerStatus" readonly></el-input>
</el-form-item>
</div>
</el-col>
<el-col :span="16">
<div class="grid-content bg-purple">
<el-form-item :label="'客户描述'">
<el-input v-model="finalCustomerData.customerDescription" readonly></el-input>
</el-form-item>
</div>
</el-col>
</el-row>
</el-form>
<customer-info :project="currentRow"></customer-info>
</el-tab-pane>
<el-tab-pane label="询价信息" name="projectQuotation">
@ -334,8 +211,10 @@
import quotationHeader from "../projectInfo/com_project_info_quotation";
import ProjectPartQuote from "./projectPartQuote.vue";
import toolApply from "../projectInfo/com_project_toolApplyCation.vue";
import CustomerInfo from "../../quotation/sellForQuotation/customerInfo.vue";
export default {
components: {
CustomerInfo,
toolApply,
ProjectPartQuote,
Chooselist,

Loading…
Cancel
Save