Browse Source

2025-10-24

1、ECN增加通知人(DelegateAccess)
2、BM的RoutingTool增加工具备注
3、销售报价默认报价行优化
master
fengyuan_yang 3 months ago
parent
commit
aad2755964
  1. 2
      src/api/changeManagement/changeManagement.js
  2. 142
      src/views/modules/changeManagement/changeRecord.vue
  3. 112
      src/views/modules/changeManagement/changeRequest.vue
  4. 40
      src/views/modules/quote/detail/quoteDetail.vue
  5. 82
      src/views/modules/sampleManagement/technicalSpecificationDetail/com_bm_prepress.vue

2
src/api/changeManagement/changeManagement.js

@ -245,7 +245,7 @@ export const csExecute = data => createAPI(`/plm/changeManagement/csExecute`,'po
*/
export const checkSuperAdmin = data => createAPI(`/plm/changeManagement/checkSuperAdmin`,'post',data)
export const searchDelegateAccess = (data)=> createAPI(`/plm/changeManagement/searchDelegateAccess`,'post',data)

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

@ -203,7 +203,15 @@
<el-input v-model="modalData.faiOperatorName" disabled style="width: 293px"></el-input>
</el-form-item>
</el-form>
<el-form :inline="true" label-position="top" :model="modalData" :rules="rules">
<el-form :inline="true" label-position="top" :model="modalData">
<el-form-item label="DelegateAccess">
<span style="cursor: pointer" slot="label" @click="delegateAccessVisible = true"><a herf="#">DelegateAccess</a></span>
<el-input type="textarea" v-model="delegateAccessName" readonly :rows="2" resize='none' style="width: 848px"></el-input>
</el-form-item>
</el-form>
<el-form :inline="true" label-position="top" :model="modalData" :rules="rules" style="margin-top: 30px">
<el-form-item label="变更要求描述/Requirements Desc." prop="changeRequestDesc" :rules="rules.changeRequestDesc">
<el-input type="textarea" v-model="modalData.changeRequestDesc" :disabled="changeRequestFlag('changeRequestDesc') === 'N'" :rows="3" resize='none' show-word-limit style="width: 636px;height: 30px"></el-input>
</el-form-item>
@ -1298,6 +1306,43 @@
</el-footer>
</el-dialog>
<el-dialog title="人员选择" @open="openDelegateAccess" @close="closeDelegateAccess" v-drag :visible.sync="delegateAccessVisible" width="40vw">
<el-form :inline="true" label-position="top" :model="changeDelegateAccess">
<el-form-item label="编码">
<el-input v-model="changeDelegateAccess.delegateAccess" clearable style="width: 120px"></el-input>
</el-form-item>
<el-form-item label="名称">
<el-input v-model="changeDelegateAccess.delegateAccessName" clearable style="width: 120px"></el-input>
</el-form-item>
<el-form-item label=" ">
<el-button type="primary" @click="searchDelegateAccessByUser()">查询</el-button>
</el-form-item>
</el-form>
<el-table
v-if="delegateAccessVisible"
:height="300"
:data="baseDelegateAccessList"
@selection-change="handleSelectionChange"
@row-click="(row,column, event)=>handleTableClick(row,column, event,'delegateAccesstTable')"
ref="delegateAccesstTable"
border row-key="delegateAccess"
style="width: 100%;">
<el-table-column
type="selection"
header-align="center"
align="center"
:reserve-selection="true"
width="50">
</el-table-column>
<el-table-column label="编码" property="delegateAccess" align="left" header-align="center"/>
<el-table-column label="名称" property="delegateAccessName" align="left" header-align="center"/>
</el-table>
<el-footer style="height:40px;margin-top: 20px;text-align:center">
<el-button type="primary" @click="confirmDelegateAccess">确定</el-button>
<el-button type="primary" @click="delegateAccessVisible=false">关闭</el-button>
</el-footer>
</el-dialog>
<ChooseList ref="baseList" @getBaseData="getBaseData"></ChooseList>
<!-- 上传文件的modal -->
@ -1338,6 +1383,7 @@
technicalSpecificationSearch2, //
choosePartNoList, //
checkSuperAdmin, //
searchDelegateAccess
} from '@/api/changeManagement/changeManagement.js'
import {
getNodeList
@ -1352,6 +1398,7 @@
import OssComponents from "../oss/ossComponents.vue";
import FilterSearch from "../../common/filterSearch.vue";
import {changeRecordSearchAny, technicalSpecificationSearchAny} from "../../../api/changeManagement/changeManagement";
import {searchDelegateAccessByUser} from "@/api/proofing/proofingInformation.js"
export default {
components: {
FilterSearch,
@ -1363,6 +1410,13 @@
ChooseList,
},
computed: {
delegateAccessName: {
get() {
return this.selectionDelegateAccess.map(item => item.delegateAccessName).join(';')
},
set(val) {
}
},
totalCost: {
get () {
let total = 0
@ -1526,6 +1580,15 @@
data () {
return {
buList: [],
// DelegateAccess
selectionDelegateAccess: [],
selectionDelegateAccess2: [],
delegateAccessVisible: false,
baseDelegateAccessList: [],
changeDelegateAccess: {
delegateAccess: '',
delegateAccessName: '',
},
//
exportData: [],
exportName: '工程变更记录' + this.dayjs().format('YYYYMMDDHHmmss'),
@ -3707,6 +3770,10 @@
this.tpExecutionInfoSearch()
//
this.countersignatureSearch()
// DelegateAccess
this.searchDelegateAccessByUser()
// DelegateAccess
this.searchDelegateAccess()
this.activeName = 'basicInformation'
this.modalFlag = true
this.modalDisableFlag = true
@ -4198,6 +4265,7 @@
this.modalData.costImpactData = this.costImpactData
this.modalData.executionInfoData = this.executionInfoData
this.modalData.countersignatureData = this.countersignatureData
this.modalData.delegateAccessList = this.selectionDelegateAccess.map(item => item.delegateAccess) // DelegateAccess
this.saveLoading = true
changeRequestUpdate(this.modalData).then(({data}) => {
if (data && data.code === 0) {
@ -4936,6 +5004,78 @@
this.modalData.faiOperatorName = ''
},
// ======== DelegateAccess ========
searchDelegateAccessByUser() {
// ROO7
let params = {
...this.changeDelegateAccess,
site: this.$store.state.user.site,
}
searchDelegateAccessByUser(params).then(({data}) => {
if (data && data.code === 0) {
this.baseDelegateAccessList = data.rows;
} else {
this.$message.warning(data.msg)
}
}).catch((error) => {
this.$message.error(error)
})
},
handleSelectionChange(val) {
//
this.selectionDelegateAccess2 = val;
},
handleTableClick(row, column, event, val) {
//
this.$refs[val].toggleRowSelection(row);
},
openDelegateAccess() {
let rows = JSON.parse(JSON.stringify(this.selectionDelegateAccess))
if (rows && rows.length > 0) {
this.$nextTick(() => {
rows.forEach(item => {
let row = this.baseDelegateAccessList.find(row => row.delegateAccess === item.delegateAccess);
if (row) {
this.$refs.delegateAccesstTable.toggleRowSelection(row);
}
})
})
}
},
closeDelegateAccess() {
this.selectionDelegateAccess2 = [];
},
confirmDelegateAccess() {
this.selectionDelegateAccess = JSON.parse(JSON.stringify(this.selectionDelegateAccess2))
this.delegateAccessVisible = false;
},
searchDelegateAccess() {
let params = {
site: this.modalData.site,
changeNo: this.modalData.changeNo,
}
searchDelegateAccess(params).then(({data}) => {
if (data && data.code === 0) {
this.selectionDelegateAccess = data.rows.map(item => {
return {
delegateAccess: item.delegateAccess,
delegateAccessName: item.delegateAccessName,
}
})
} else {
this.$message.warning(data.msg)
}
}).catch((error) => {
this.$message.error(error)
})
},
toMenu (row) {
if (this.$router.resolve(`/sampleManagement-technicalSpecificationList`).resolved.name === '404') {
this.$alert('权限不足,访问失败', '警告', {confirmButtonText: '确定',})

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

@ -199,7 +199,15 @@
<el-input v-model="modalData.faiOperatorName" disabled style="width: 293px"></el-input>
</el-form-item>
</el-form>
<el-form :inline="true" label-position="top" :model="modalData" :rules="rules">
<el-form :inline="true" label-position="top" :model="modalData">
<el-form-item label="DelegateAccess">
<span style="cursor: pointer" slot="label" @click="delegateAccessVisible = true"><a herf="#">DelegateAccess</a></span>
<el-input type="textarea" v-model="delegateAccessName" readonly :rows="2" resize='none' style="width: 848px"></el-input>
</el-form-item>
</el-form>
<el-form :inline="true" label-position="top" :model="modalData" :rules="rules" style="margin-top: 30px">
<el-form-item label="变更要求描述/Requirements Desc." prop="changeRequestDesc" :rules="rules.changeRequestDesc">
<el-input type="textarea" v-model="modalData.changeRequestDesc" :rows="3" resize='none' show-word-limit style="width: 636px;height: 30px"></el-input>
</el-form-item>
@ -943,6 +951,43 @@
</el-footer>
</el-dialog>
<el-dialog title="人员选择" @open="openDelegateAccess" @close="closeDelegateAccess" v-drag :visible.sync="delegateAccessVisible" width="40vw">
<el-form :inline="true" label-position="top" :model="changeDelegateAccess">
<el-form-item label="编码">
<el-input v-model="changeDelegateAccess.delegateAccess" clearable style="width: 120px"></el-input>
</el-form-item>
<el-form-item label="名称">
<el-input v-model="changeDelegateAccess.delegateAccessName" clearable style="width: 120px"></el-input>
</el-form-item>
<el-form-item label=" ">
<el-button type="primary" @click="searchDelegateAccessByUser()">查询</el-button>
</el-form-item>
</el-form>
<el-table
v-if="delegateAccessVisible"
:height="300"
:data="baseDelegateAccessList"
@selection-change="handleSelectionChange"
@row-click="(row,column, event)=>handleTableClick(row,column, event,'delegateAccesstTable')"
ref="delegateAccesstTable"
border row-key="delegateAccess"
style="width: 100%;">
<el-table-column
type="selection"
header-align="center"
align="center"
:reserve-selection="true"
width="50">
</el-table-column>
<el-table-column label="编码" property="delegateAccess" align="left" header-align="center"/>
<el-table-column label="名称" property="delegateAccessName" align="left" header-align="center"/>
</el-table>
<el-footer style="height:40px;margin-top: 20px;text-align:center">
<el-button type="primary" @click="confirmDelegateAccess">确定</el-button>
<el-button type="primary" @click="delegateAccessVisible=false">关闭</el-button>
</el-footer>
</el-dialog>
<ChooseList ref="baseList" @getBaseData="getBaseData"></ChooseList>
<upload-file-list ref="changeRef" v-if="modalFlag" folder="change" title="工程变更文件上传" :label="'变更单号'" :file-list.sync="fileData.file" :no="modalData.changeNo" :upload-dialog.sync="uploadDialog" path="/upload/test"></upload-file-list>
@ -971,6 +1016,7 @@
deleteTempChangeInfo, //
} from "@/api/changeManagement/changeManagement.js"
import {getChooselistData, verifyData} from "@/api/chooselist/chooselist.js"
import { searchDelegateAccessByUser} from "@/api/proofing/proofingInformation.js"
import ChooseList from '@/views/modules/common/Chooselist'
import DictDataSelect from '../sys/dict-data-select.vue'
import UploadFileList from "../common/uploadFileList.vue"
@ -1041,6 +1087,15 @@
uploadDialog: false,
form: [],
buList: [],
// DelegateAccess
selectionDelegateAccess: [],
selectionDelegateAccess2: [],
delegateAccessVisible: false,
baseDelegateAccessList: [],
changeDelegateAccess: {
delegateAccess: '',
delegateAccessName: '',
},
//
exportData: [],
exportName: '工程变更申请' + this.dayjs().format('YYYYMMDDHHmmss'),
@ -2156,6 +2211,13 @@
})
},
computed:{
delegateAccessName: {
get() {
return this.selectionDelegateAccess.map(item => item.delegateAccessName).join(';')
},
set(val) {
}
},
totalCost: {
get () {
let total = 0
@ -2622,6 +2684,7 @@
this.modalData.costImpactData = this.costImpactData //
this.modalData.executionInfoData = this.executionInfoData // TP
this.modalData.countersignatureData = this.countersignatureData //
this.modalData.delegateAccessList = this.selectionDelegateAccess.map(item => item.delegateAccess) // DelegateAccess
changeRequestUpdate(this.modalData).then(({data}) => {
if (data && data.code === 0) {
this.modalData = data.rows.modalData
@ -3246,7 +3309,54 @@
this.modalData.faiOperatorName = ''
},
// ======== DelegateAccess ========
searchDelegateAccessByUser() {
// ROO7
let params = {
...this.changeDelegateAccess,
site: this.$store.state.user.site,
}
searchDelegateAccessByUser(params).then(({data}) => {
if (data && data.code === 0) {
this.baseDelegateAccessList = data.rows;
} else {
this.$message.warning(data.msg)
}
}).catch((error) => {
this.$message.error(error)
})
},
handleSelectionChange(val) {
//
this.selectionDelegateAccess2 = val;
},
handleTableClick(row, column, event, val) {
//
this.$refs[val].toggleRowSelection(row);
},
openDelegateAccess() {
let rows = JSON.parse(JSON.stringify(this.selectionDelegateAccess))
if (rows && rows.length > 0) {
this.$nextTick(() => {
rows.forEach(item => {
let row = this.baseDelegateAccessList.find(row => row.delegateAccess === item.delegateAccess);
this.$refs.delegateAccesstTable.toggleRowSelection(row);
})
})
}
},
closeDelegateAccess() {
this.selectionDelegateAccess2 = [];
},
confirmDelegateAccess() {
this.selectionDelegateAccess = JSON.parse(JSON.stringify(this.selectionDelegateAccess2))
this.delegateAccessVisible = false;
},
// ======== ========
/**

40
src/views/modules/quote/detail/quoteDetail.vue

@ -1028,6 +1028,15 @@ export default {
formatDecimal(value) {
const num = parseFloat(value);
return !isNaN(num) ? num.toFixed(4) : value;
},
handleSetDefaultQuoteRow(row) {
if (!this.isAuth('5011:group:current')) {
return;
}
const oldVal = this.quoteGroupDetail.currentQuoteDetailItemNo;
this.quoteGroupDetail.currentQuoteDetailItemNo = row.itemNo;
// emit
this.$emit('currentQuoteDetailItemNo', oldVal);
}
},
watch:{
@ -1059,13 +1068,13 @@ export default {
this.handleQueryQuoteDetail();
}
},
'quoteGroupDetail.currentQuoteDetailItemNo'(newVal,oldVal){
// console.log(this.quoteGroupDetail)
// emit
if (this.quoteGroupDetail && this.quoteGroupDetail.currentQuoteDetailItemNo){
this.$emit('currentQuoteDetailItemNo',oldVal);
}
}
// 'quoteGroupDetail.currentQuoteDetailItemNo'(newVal,oldVal){
// // console.log(this.quoteGroupDetail)
// // emit
// if (this.quoteGroupDetail && this.quoteGroupDetail.currentQuoteDetailItemNo){
// this.$emit('currentQuoteDetailItemNo',oldVal);
// }
// }
},
created() {
this.quoteDetail.profitRate = this.quote.markup
@ -1097,14 +1106,17 @@ export default {
<el-table v-loading="queryLoading" border :data="dataList" style="width: 100%;margin-top: 5px" :height="height">
<el-table-column width="80" align="center" label="默认报价行" v-if="quoteGroupDetail && quoteGroupDetail.status === '草稿'">
<template slot-scope="{row}">
<el-radio
class="radio"
:label="row.itemNo"
:disabled="!isAuth('5011:group:current')"
v-model="quoteGroupDetail.currentQuoteDetailItemNo"
></el-radio>
<div @click="handleSetDefaultQuoteRow(row)" style="cursor: pointer;">
<el-radio
class="radio"
:label="row.itemNo"
:disabled="!isAuth('5011:group:current')"
v-model="quoteGroupDetail.currentQuoteDetailItemNo"
@click.native.stop.prevent
></el-radio>
</div>
</template>
</el-table-column>·
</el-table-column>
<el-table-column type="index" width="55" align="center" label="序号"></el-table-column>
<el-table-column
v-for="(item,index) in columns" :key="index"

82
src/views/modules/sampleManagement/technicalSpecificationDetail/com_bm_prepress.vue

@ -100,8 +100,7 @@
label="Tool Desc.">
<template slot-scope="scope">
<span v-if="editBatchVisible">
<el-input :controls="false" v-model="scope.row.toolDesc" style="height: 11px; width: 98%;">
</el-input>
<el-input :controls="false" v-model="scope.row.toolDesc" style="height: 11px; width: 98%;"></el-input>
</span>
<span v-else>
<span>{{scope.row[scope.column.property]}}</span>
@ -118,8 +117,7 @@
label="Across">
<template slot-scope="scope">
<span v-if="editBatchVisible">
<el-input :controls="false" v-model="scope.row.numberAcross" style="height: 11px; width: 98%;">
</el-input>
<el-input :controls="false" v-model="scope.row.numberAcross" style="height: 11px; width: 98%;"></el-input>
</span>
<span v-else>
<span>{{scope.row[scope.column.property]}}</span>
@ -136,8 +134,24 @@
label="Down">
<template slot-scope="scope">
<span v-if="editBatchVisible">
<el-input :controls="false" v-model="scope.row.numberDown" style="height: 11px; width: 98%;">
</el-input>
<el-input :controls="false" v-model="scope.row.numberDown" style="height: 11px; width: 98%;"></el-input>
</span>
<span v-else>
<span>{{scope.row[scope.column.property]}}</span>
</span>
</template>
</el-table-column>
</el-table-column>
<el-table-column label="工具备注" header-align="center">
<el-table-column
prop="remark"
header-align="center"
align="left"
min-width="200"
label="Tool Remark">
<template slot-scope="scope">
<span v-if="editBatchVisible">
<el-input :controls="false" v-model="scope.row.remark" style="height: 11px; width: 98%;"></el-input>
</span>
<span v-else>
<span>{{scope.row[scope.column.property]}}</span>
@ -308,6 +322,23 @@
</template>
</el-table-column>
</el-table-column>
<el-table-column label="工具备注" header-align="center">
<el-table-column
prop="remark"
header-align="center"
align="left"
min-width="200"
label="Tool Remark">
<template slot-scope="scope">
<span v-if="editBatchVisible">
<el-input :controls="false" v-model="scope.row.remark" style="height: 11px; width: 98%;"></el-input>
</span>
<span v-else>
<span>{{scope.row[scope.column.property]}}</span>
</span>
</template>
</el-table-column>
</el-table-column>
<el-table-column
fixed="left"
header-align="center"
@ -470,6 +501,23 @@
</template>
</el-table-column>
</el-table-column>
<el-table-column label="工具备注" header-align="center">
<el-table-column
prop="remark"
header-align="center"
align="left"
min-width="200"
label="Tool Remark">
<template slot-scope="scope">
<span v-if="editBatchVisible">
<el-input :controls="false" v-model="scope.row.remark" style="height: 11px; width: 98%;"></el-input>
</span>
<span v-else>
<span>{{scope.row[scope.column.property]}}</span>
</span>
</template>
</el-table-column>
</el-table-column>
<el-table-column
fixed="left"
header-align="center"
@ -630,6 +678,23 @@
</template>
</el-table-column>
</el-table-column>
<el-table-column label="工具备注" header-align="center">
<el-table-column
prop="remark"
header-align="center"
align="left"
min-width="200"
label="Tool Remark">
<template slot-scope="scope">
<span v-if="editBatchVisible">
<el-input :controls="false" v-model="scope.row.remark" style="height: 11px; width: 98%;"></el-input>
</span>
<span v-else>
<span>{{scope.row[scope.column.property]}}</span>
</span>
</template>
</el-table-column>
</el-table-column>
<el-table-column
fixed="left"
header-align="center"
@ -708,6 +773,9 @@
<el-form-item :label="'竖排数/Down'">
<el-input v-model="toolData.numberDown" style="width: 120px"></el-input>
</el-form-item>
<el-form-item :label="'工具备注/Tool Remark'">
<el-input v-model="toolData.remark" style="width: 290px"></el-input>
</el-form-item>
</el-form>
<el-footer style="height:40px;margin-top: 10px;text-align:center">
<el-button type="primary" @click="toolSave">保存</el-button>
@ -798,6 +866,7 @@
createDate: '',
updateBy: '',
updateDate: '',
remark: ''
},
toolFlag: false,
editBatchVisible: false,
@ -878,6 +947,7 @@
createDate: '',
updateBy: '',
updateDate: '',
remark: ''
}
//
getBMToolSeqNo(this.toolData).then(({data}) => {

Loading…
Cancel
Save