Browse Source

2026-10-10

打样申请优化“客户编码”
master
fengyuan_yang 1 month ago
parent
commit
4074cd8b52
  1. 248
      src/views/modules/proofing/requestForProofing.vue

248
src/views/modules/proofing/requestForProofing.vue

@ -216,15 +216,15 @@
<!-- 打样模态框 -->
<el-dialog :title="modalData.title" @close="closeModalDiaLog" @open="openModalDialog" :close-on-click-modal="false" v-drag :visible.sync="modalFlag" top="5vh" width="1200px">
<el-form label-position="top" ref="modalForm" :model="modalData" :rules="rules">
<el-form label-position="top" ref="modalForm" :model="modalData" :rules="rules" :key="editFormKey">
<el-row :gutter="15">
<el-col :span="8">
<el-row :gutter="10">
<el-col :span="10">
<el-form-item prop="customerNo" label="客户编码" :show-message="false">
<span style="cursor: pointer" slot="label" v-if="modalData.flag === '1'"
<span style="cursor: pointer" slot="label" v-if="!headerFieldDisabled('customerNo')"
@click="getBaseList(102,1)"><a herf="#">客户编码</a></span>
<el-input :disabled="(modalData.flag !== '1' && columnFlagByHeader('customerNo')) || detailVisible"
<el-input :disabled="headerFieldDisabled('customerNo')"
v-model="modalData.customerNo" @blur="handleQueryCustomer"></el-input>
</el-form-item>
</el-col>
@ -237,17 +237,17 @@
</el-col>
<el-col :span="4">
<el-form-item label="打样数量" prop="proofingNumber" :show-message="false">
<el-input-number :controls="false" :disabled="detailVisible" :min="0" v-model="modalData.proofingNumber" :step="0" style="width: 100%"></el-input-number>
<el-input-number :controls="false" :disabled="headerFieldDisabled('proofingNumber')" :min="0" v-model="modalData.proofingNumber" :step="0" style="width: 100%"></el-input-number>
</el-form-item>
</el-col>
<el-col :span="4">
<el-form-item label="打样金额" prop="proofingAmount" :show-message="false">
<el-input-number :controls="false" :disabled="detailVisible" v-model="modalData.proofingAmount" :step="0" style="width: 100%"></el-input-number>
<el-input-number :controls="false" :disabled="headerFieldDisabled('proofingAmount')" v-model="modalData.proofingAmount" :step="0" style="width: 100%"></el-input-number>
</el-form-item>
</el-col>
<el-col :span="4">
<el-form-item label="优先等级" :show-message="false">
<dict-data-select v-if="modalFlag" :disabled="columnFlagByHeader('priorityLevel') || detailVisible"
<dict-data-select v-if="modalFlag" :disabled="headerFieldDisabled('priorityLevel')"
v-model="modalData.priorityLevel"
dict-type="priority_Level"></dict-data-select>
</el-form-item>
@ -256,7 +256,7 @@
<el-form-item label="要求交付日期" prop="requiredDeliveryDate" :show-message="false">
<el-date-picker v-model="modalData.requiredDeliveryDate" style="width: 100%" type="date"
value-format="yyyy-MM-dd" placeholder="选择日期"
:disabled="columnFlagByHeader('requiredDeliveryDate') || detailVisible"></el-date-picker>
:disabled="headerFieldDisabled('requiredDeliveryDate')"></el-date-picker>
</el-form-item>
</el-col>
</el-row>
@ -265,9 +265,9 @@
<el-row :gutter="10">
<el-col :span="10">
<el-form-item prop="projectId" label="项目号" :show-message="false">
<span slot="label" v-if="modalData.customerNo && modalData.flag === '1'"
<span slot="label" v-if="modalData.customerNo && !headerFieldDisabled('projectId')"
@click="chooseProjectListFlag = true"><a herf="#">项目号</a></span>
<el-input :disabled="(!modalData.customerNo || modalData.flag !== '1')"
<el-input :disabled="headerFieldDisabled('projectId') || !modalData.customerNo"
v-model="modalData.projectId" @blur="handleQueryProjectByCustomer"></el-input>
</el-form-item>
</el-col>
@ -280,37 +280,37 @@
</el-col>
<el-col :span="4">
<el-form-item :show-message="false" prop="trackerName">
<label v-if="columnFlagByHeader('tracker') || detailVisible" slot="label">CS</label>
<label v-if="headerFieldDisabled('tracker')" slot="label">CS</label>
<span v-else style="cursor: pointer" slot="label" @click="getBaseList(2051)"><a herf="#">CS</a></span>
<el-input v-model="modalData.trackerName" :disabled="columnFlagByHeader('tracker') || detailVisible" readonly>
<span slot="suffix" v-show="modalData.trackerName && !detailVisible" @click="clearModalData('tracker')"><i class="el-icon-circle-close" style="margin-left: 5px;cursor: pointer;"></i></span>
<el-input v-model="modalData.trackerName" :disabled="headerFieldDisabled('tracker')" readonly>
<span slot="suffix" v-show="modalData.trackerName && !headerFieldDisabled('tracker')" @click="clearModalData('tracker')"><i class="el-icon-circle-close" style="margin-left: 5px;cursor: pointer;"></i></span>
</el-input>
</el-form-item>
</el-col>
<el-col :span="4">
<el-form-item :show-message="false">
<label v-if="columnFlagByHeader('engineer') || detailVisible" slot="label">NPI工程师</label>
<label v-if="headerFieldDisabled('engineer')" slot="label">NPI工程师</label>
<span v-else style="cursor: pointer" slot="label" @click="getBaseList(2052)"><a>NPI工程师</a></span>
<el-input v-model="modalData.engineerName" :disabled="columnFlagByHeader('engineer') || detailVisible" readonly>
<span slot="suffix" v-show="modalData.engineerName && !detailVisible" @click="clearModalData('engineer')"><i class="el-icon-circle-close" style="margin-left: 5px;cursor: pointer;"></i></span>
<el-input v-model="modalData.engineerName" :disabled="headerFieldDisabled('engineer')" readonly>
<span slot="suffix" v-show="modalData.engineerName && !headerFieldDisabled('engineer')" @click="clearModalData('engineer')"><i class="el-icon-circle-close" style="margin-left: 5px;cursor: pointer;"></i></span>
</el-input>
</el-form-item>
</el-col>
<el-col :span="4">
<el-form-item>
<label v-if="columnFlagByHeader('approver') || detailVisible" slot="label">Approver</label>
<label v-if="headerFieldDisabled('approver')" slot="label">Approver</label>
<span v-else style="cursor: pointer" slot="label" @click="getBaseList(2053)"><a herf="#">Approver</a></span>
<el-input v-model="modalData.approverName" :disabled="columnFlagByHeader('approver') || detailVisible" readonly>
<span slot="suffix" v-show="modalData.approverName && !detailVisible" @click="clearModalData('approver')"><i class="el-icon-circle-close" style="margin-left: 5px;cursor: pointer;"></i></span>
<el-input v-model="modalData.approverName" :disabled="headerFieldDisabled('approver')" readonly>
<span slot="suffix" v-show="modalData.approverName && !headerFieldDisabled('approver')" @click="clearModalData('approver')"><i class="el-icon-circle-close" style="margin-left: 5px;cursor: pointer;"></i></span>
</el-input>
</el-form-item>
</el-col>
<el-col :span="4">
<el-form-item>
<label v-if="columnFlagByDelegateAccess('delegateAccess') || detailVisible" slot="label">DelegateAccess</label>
<label v-if="delegateFieldDisabled('delegateAccess')" slot="label">DelegateAccess</label>
<span v-else style="cursor: pointer" slot="label" @click="delegateAccessVisible = true"><a herf="#">DelegateAccess</a></span>
<el-input v-model="delegateAccessName" :disabled="columnFlagByDelegateAccess('delegateAccess') || detailVisible" readonly>
<span slot="suffix" v-show="delegateAccessName && !detailVisible" @click="selectionDelegateAccess = []"><i class="el-icon-circle-close" style="margin-left: 5px;cursor: pointer;"></i></span>
<el-input v-model="delegateAccessName" :disabled="delegateFieldDisabled('delegateAccess')" readonly>
<span slot="suffix" v-show="delegateAccessName && !delegateFieldDisabled('delegateAccess')" @click="selectionDelegateAccess = []"><i class="el-icon-circle-close" style="margin-left: 5px;cursor: pointer;"></i></span>
</el-input>
</el-form-item>
</el-col>
@ -318,21 +318,21 @@
<el-row :gutter="15">
<el-col :span="24">
<el-form-item label="样品用途" class="auto" prop="sendSamplesUsage" :show-message="false">
<el-input v-model="modalData.sendSamplesUsage" :disabled="detailVisible" clearable></el-input>
<el-input v-model="modalData.sendSamplesUsage" :disabled="headerFieldDisabled('sendSamplesUsage')" clearable></el-input>
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="15">
<el-col :span="24">
<el-form-item label="样品寄送地址" class="auto">
<el-input type="textarea" v-model="modalData.sendSamplesAddress" :disabled="detailVisible" :rows="3" resize='none' show-word-limit></el-input>
<el-input type="textarea" v-model="modalData.sendSamplesAddress" :disabled="headerFieldDisabled('sendSamplesAddress')" :rows="3" resize='none' show-word-limit></el-input>
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="15">
<el-col :span="24">
<el-form-item label="备注" style="height: 90px">
<el-input type="textarea" v-model="modalData.technicalConsiderations" :disabled="detailVisible" :rows="3" resize='none' show-word-limit></el-input>
<el-input type="textarea" v-model="modalData.technicalConsiderations" :disabled="headerFieldDisabled('technicalConsiderations')" :rows="3" resize='none' show-word-limit></el-input>
</el-form-item>
</el-col>
</el-row>
@ -968,40 +968,11 @@ export default {
}
},
columnFlagByHeader() {
return (value) => {
if (this.modalData.flag === '1') {
return false
}
if (!this.columnFieldList1) {
return true
}
let arr = this.columnFieldList1.filter(a => a.fieldId === value)
if (arr.length > 0) {
return arr[0].updateFlag === 'N'
}
return true
}
},
columnFlagByDelegateAccess() {
return (value) => {
if (this.modalData.flag === '1') {
return false
}
if (!this.columnFieldList2) {
return true
}
let arr = this.columnFieldList2.filter(a => a.fieldId === value)
if (arr.length > 0) {
return arr[0].updateFlag === 'N'
}
return true
}
},
},
data() {
return {
issuingSet: {},
editFormKey: 0,
approvalList: [],
selectionDelegateAccess: [],
selectionDelegateAccess2: [],
@ -2301,6 +2272,26 @@ export default {
},
methods: {
headerFieldDisabled(fieldId) {
return this.detailVisible || this.columnFlagByHeader(fieldId)
},
delegateFieldDisabled(fieldId) {
return this.detailVisible || this.columnFlagByDelegateAccess(fieldId)
},
// 新增都可填。编辑只有当前节点明确勾选可编辑(updateFlag 为 Y)的字段才能改。
columnFlagByHeader(value) {
return !this.fieldEditable(this.columnFieldList1, value)
},
columnFlagByDelegateAccess(value) {
return !this.fieldEditable(this.columnFieldList2, value)
},
fieldEditable(list, fieldId) {
if (this.modalData.flag === '1') {
return true
}
const rows = (list || []).filter(item => item.fieldId === fieldId)
return rows.length > 0 && rows.every(item => item.updateFlag === 'Y')
},
fetchNodeOptions() {
getNodeList(this.searchData).then(({ data }) => {
@ -2588,6 +2579,9 @@ export default {
addModal() {
this.searchDelegateAccessByUser();
this.modalData.createBy = this.$store.state.user.name
this.columnFieldList1 = []
this.columnFieldList2 = []
this.editFormKey += 1
this.modalDisableFlag = false
this.modalFlag = true
},
@ -2648,6 +2642,7 @@ export default {
sendSamplesUsage: row.sendSamplesUsage
}
this.searchDelegateAccessByUser();
this.editFormKey += 1
this.modalDisableFlag = true
this.modalFlag = true
},
@ -2704,6 +2699,7 @@ export default {
sendSamplesUsage: row.sendSamplesUsage
}
this.searchDelegateAccessByUser();
this.editFormKey += 1
this.modalDisableFlag = true
this.modalFlag = true
},
@ -2774,7 +2770,7 @@ export default {
* 客户信息新增/编辑
*/
saveData() {
this.$refs.modalForm.validate((valid, obj) => {
this.$refs.modalForm.validate(async (valid, obj) => {
if (!valid) {
let i = 1;
for (let key in obj) {
@ -2785,6 +2781,9 @@ export default {
i++;
}
} else {
if (!(await this.validateCustomerAndProject())) {
return
}
if (this.projectPartListSelections.length <= 0) {
this.$message.warning('请选择项目料号')
return
@ -3647,7 +3646,11 @@ export default {
return s
},
closeModalDiaLog() {
this.$refs.modalForm.resetFields();
this.columnFieldList1 = []
this.columnFieldList2 = []
if (this.$refs.modalForm) {
this.$refs.modalForm.resetFields();
}
this.modalData = {
flag: '1',
title: '打样新增',
@ -3988,57 +3991,136 @@ export default {
// 获取流程的配置权限
async getNodeAuthority(row) {
this.columnFieldList1 = []
this.columnFieldList2 = []
let tempData = {
site: row.site,
stepId: row.stepId,
menuId: this.$route.meta.menuId
menuId: this.$route.meta.menuId,
currentNodeOnly: true
}
await getNodeAuthority(tempData).then(({data}) => {
if (data && data.code === 0) {
this.columnFieldList1 = data.rows.plm_proofing_information
this.columnFieldList2 = data.rows.plm_proofing_delegate_access
this.columnFieldList1 = (data.rows && data.rows.plm_proofing_information) || []
this.columnFieldList2 = (data.rows && data.rows.plm_proofing_delegate_access) || []
}
})
},
handleQueryCustomer() {
let params = {
site: this.$store.state.user.site,
customerNo: this.modalData.customerNo
const customerNo = (this.modalData.customerNo || '').trim()
if (!customerNo) {
this.modalData.customerDesc = ''
return
}
queryCustomer(params).then(({data}) => {
if (data && data.code === 0) {
if (data.rows && data.rows.length === 1) {
this.modalData.customerDesc = data.rows[0].customerDesc
} else {
this.modalData.customerDesc = ''
}
} else {
this.lookupCustomer().then(ok => {
if (ok === false) {
this.$message.warning('客户编码不存在或已失效')
}
})
},
handleQueryProjectByCustomer() {
const projectId = (this.modalData.projectId || '').trim()
if (!projectId) {
this.modalData.projectName = ''
return
}
if (!(this.modalData.customerNo || '').trim()) {
this.modalData.projectName = ''
this.$message.warning('请先填写客户编码')
return
}
this.lookupProject().then(ok => {
if (ok === false) {
this.$message.warning('项目号不存在,或不属于该客户')
}
})
},
lookupCustomer() {
const customerNo = (this.modalData.customerNo || '').trim()
if (!customerNo) {
this.modalData.customerDesc = ''
return Promise.resolve(false)
}
return queryCustomer({
site: this.$store.state.user.site,
customerNo
}).then(({data}) => {
if (data && data.code !== 0) {
this.$message.warning(data.msg)
this.modalData.customerDesc = ''
return 'error'
}
const site = this.$store.state.user.site
const rows = ((data && data.rows) || []).filter(row => !row.site || row.site === site)
if (rows.length === 1) {
this.modalData.customerDesc = rows[0].customerDesc
return true
}
this.modalData.customerDesc = ''
return false
}).catch((error) => {
this.$message.error(error)
this.modalData.customerDesc = ''
return 'error'
})
},
handleQueryProjectByCustomer() {
let params = {
site: this.$store.state.user.site,
customerId: this.modalData.customerNo,
projectId: this.modalData.projectId
lookupProject() {
const customerNo = (this.modalData.customerNo || '').trim()
const projectId = (this.modalData.projectId || '').trim()
if (!customerNo || !projectId) {
this.modalData.projectName = ''
return Promise.resolve(false)
}
queryProjectByCustomer(params).then(({data}) => {
if (data && data.code === 0) {
if (data.rows && data.rows.length === 1) {
this.modalData.projectName = data.rows[0].projectName
} else {
this.modalData.projectName = ''
}
} else {
return queryProjectByCustomer({
site: this.$store.state.user.site,
customerId: customerNo,
projectId
}).then(({data}) => {
if (data && data.code !== 0) {
this.$message.warning(data.msg)
this.modalData.projectName = ''
return 'error'
}
const rows = (data && data.rows) || []
if (rows.length === 1) {
this.modalData.projectName = rows[0].projectName
return true
}
this.modalData.projectName = ''
return false
}).catch((error) => {
this.$message.error(error)
this.modalData.projectName = ''
return 'error'
})
},
async validateCustomerAndProject() {
const customerNo = (this.modalData.customerNo || '').trim()
if (!customerNo) {
this.$message.warning('请选择客户编码!')
return false
}
const customerOk = await this.lookupCustomer()
if (customerOk !== true) {
if (customerOk === false) {
this.$message.warning('客户编码不存在或已失效')
}
return false
}
const projectId = (this.modalData.projectId || '').trim()
if (!projectId) {
this.$message.warning('请选择项目号!')
return false
}
const projectOk = await this.lookupProject()
if (projectOk !== true) {
if (projectOk === false) {
this.$message.warning('项目号不存在,或不属于该客户')
}
return false
}
return true
},
// 查询审批信息
getApprovalList() {
let tempData = {

Loading…
Cancel
Save