Browse Source

2024.10.15 成本历史功能新增

RFQ - 询价单号、产品编码规则后台生成
java8
yuejiayang 1 year ago
parent
commit
e97eff34c0
  1. 7
      src/api/part/partCostInformation.js
  2. 6
      src/api/part/partInformation.js
  3. 2
      src/views/modules/eam/eamBuDocumentListDefinition.vue
  4. 99
      src/views/modules/inquiry/inquiryApplication.vue
  5. 250
      src/views/modules/part/partCostInformation.vue
  6. 6
      src/views/modules/part/standardRoutingOperation.vue

7
src/api/part/partCostInformation.js

@ -1,7 +0,0 @@
import { createAPI } from "@/utils/httpRequest.js";
// partCostInformationSearch 物料成本信息列表查询
export const partCostInformationSearch = data => createAPI(`/part/partCostInformation/partCostInformationSearch`,'post',data)
// partCostInformationEdit 物料成本信息编辑
export const partCostInformationEdit = data => createAPI(`/part/partCostInformation/partCostInformationEdit`,'post',data)

6
src/api/part/partInformation.js

@ -186,5 +186,11 @@ export const getProjectPartNo = data => createAPI(`/part/partInformation/getProj
*/
export const verifyData = data => createAPI(`part/partInformation/verifyData`,'post',data)
// partCostInformationEdit 物料成本信息编辑
export const partCostInformationEdit = data => createAPI(`/part/partInformation/partCostInformationEdit`,'post',data)
// costHistorySearch 成本历史查询
export const costHistorySearch = data => createAPI(`/part/partInformation/costHistorySearch`,'post',data)

2
src/views/modules/eam/eamBuDocumentListDefinition.vue

@ -114,7 +114,7 @@
<el-option
v-for = "i in userBuList"
:key = "i.buNo"
:label = "i.sitename"
:label = "i.buDesc"
:value = "i.buNo">
<span style="float: right; color: #8492a6;white-space:nowrap;overflow:hidden;text-overflow:ellipsis; font-size: 11px;width: 60px">
{{ i.buDesc }}

99
src/views/modules/inquiry/inquiryApplication.vue

@ -182,8 +182,9 @@
</el-pagination>
<!-- 询价模态框 -->
<el-dialog :title="modalData.title" v-drag @close="closeSaveDataDialog" @open="openSaveDataDialog"
:close-on-click-modal="false" top="10%" :visible.sync="modalFlag" width="692px">
<el-dialog :title="modalData.title" v-drag @close="closeSaveDataDialog"
:close-on-click-modal="false" top="10%" :visible.sync="modalFlag" width="568px">
<!-- @open="openSaveDataDialog"-->
<el-form :inline="true" label-position="top" :model="modalData" :rules="rules" style="margin-top: -5px;">
<el-form-item label="BU" prop="bu" :rules="rules.bu">
<el-select v-model="modalData.bu" placeholder="请选择" :disabled="modalDisableFlag" style="width: 110px">
@ -219,12 +220,6 @@
<el-form-item label="客户询价单号" prop="customerInquiryNo">
<el-input v-model="modalData.customerInquiryNo" style="width: 166px;"></el-input>
</el-form-item>
<el-form-item label="优先等级" >
<dict-data-select v-if="modalFlag"
v-model="modalData.priorityLevel" dict-type="inquiry_info_priority_level"
style="width: 110px;">
</dict-data-select>
</el-form-item>
</el-form>
<!-- <el-col :span="4">-->
@ -249,8 +244,11 @@
<el-input v-model="modalData.quoter" @blur="quoterBlur(2002)" style="width: 110px;"></el-input>
<el-input disabled v-model="modalData.quoterName" style="width: 120px;"></el-input>
</el-form-item>
<el-form-item label="询价单号" prop="rfqNo">
<el-input v-model="modalData.rfqNo" disabled style="width: 166px;"></el-input>
<el-form-item label="优先等级" >
<dict-data-select v-if="modalFlag"
v-model="modalData.priorityLevel" dict-type="inquiry_info_priority_level"
style="width: 166px;">
</dict-data-select>
</el-form-item>
</el-form>
<el-form :inline="true" label-position="top" :model="modalData" style="margin-top: -5px;">
@ -309,17 +307,18 @@
</el-tab-pane>
</el-tabs>
<el-dialog :title="inquiryPartModalData.title" v-drag @close="closeInquiryPartSaveDataDialog" @open="openInquiryPartSaveDataDialog"
:close-on-click-modal="false" top="10%" :visible.sync="inquiryPartModalFlag" width="506px">
<el-dialog :title="inquiryPartModalData.title" v-drag @close="closeInquiryPartSaveDataDialog"
:close-on-click-modal="false" top="10%" :visible.sync="inquiryPartModalFlag" width="422px">
<!-- @open="openInquiryPartSaveDataDialog"-->
<el-form :inline="true" label-position="top" :model="inquiryPartModalData" :rules="inquiryPartRules" style="margin-top: -5px;">
<el-form-item prop="partNo" label="产品编码">
<el-input v-model="inquiryPartModalData.partNo" disabled style="width: 128px;"></el-input>
</el-form-item>
<!-- <el-form-item prop="partNo" label="产品编码">-->
<!-- <el-input v-model="inquiryPartModalData.partNo" disabled style="width: 128px;"></el-input>-->
<!-- </el-form-item>-->
<el-form-item prop="partDesc" label="产品名称">
<el-input v-model="inquiryPartModalData.partDesc" style="width: 260px;margin-left: -10px"></el-input>
<el-input v-model="inquiryPartModalData.partDesc" style="width: 128px"></el-input>
</el-form-item>
<el-form-item label="BU" prop="bu" :rules="inquiryPartRules.bu">
<el-select v-model="inquiryPartModalData.bu" placeholder="请选择" :disabled="inquiryPartModalDisableFlag" style="width: 70px">
<el-select v-model="inquiryPartModalData.bu" placeholder="请选择" :disabled="inquiryPartModalDisableFlag" style="width: 118px">
<el-option
v-for = "i in userBuList"
:key = "i.buNo"
@ -328,6 +327,9 @@
</el-option>
</el-select>
</el-form-item>
<el-form-item label="询价数量" prop="inquiryQty" :rules="inquiryPartRules.inquiryQty">
<el-input-number :controls="false" :step="0" v-model="inquiryPartModalData.inquiryQty" style="width: 118px;"></el-input-number>
</el-form-item>
</el-form>
<el-form :inline="true" label-position="top" :model="inquiryPartModalData" :rules="inquiryPartRules" style="margin-top: -5px;">
<el-form-item prop="umId">
@ -335,9 +337,6 @@
<el-input v-model="inquiryPartModalData.umId" @blur="umIdBlur(510)" style="width: 128px"></el-input>
<el-input v-model="inquiryPartModalData.umName" disabled style="width: 260px"></el-input>
</el-form-item>
<el-form-item label="询价数量" prop="inquiryQty" :rules="inquiryPartRules.inquiryQty">
<el-input-number :controls="false" :step="0" v-model="inquiryPartModalData.inquiryQty" style="width: 70px;"></el-input-number>
</el-form-item>
</el-form>
<el-form :inline="true" label-position="top" :model="inquiryPartModalData" :rules="inquiryPartRules" style="margin-top: -5px;">
<el-form-item prop="codeNo" :rules="rules.codeNo">
@ -1579,10 +1578,6 @@ export default {
})
return
}
if (this.modalData.rfqNo === '' || this.modalData.rfqNo == null) {
this.$message.warning('请输入询价单号!')
return
}
if (this.modalData.flag === '1') {
addInquiryApplicationInfo(this.modalData).then(({data}) => {
if (data && data.code === 0) {
@ -2017,10 +2012,6 @@ export default {
async saveInquiryPartData() {
await this.modelBlur(220)
await this.umIdBlur(510)
if (this.inquiryPartModalData.partNo === '' || this.inquiryPartModalData.partNo == null) {
this.$message.warning('请输入产品编码!')
return
}
if (this.inquiryPartModalData.partDesc === '' || this.inquiryPartModalData.partDesc == null) {
this.$message.warning('请输入产品描述!')
return
@ -2348,32 +2339,32 @@ export default {
})
},
openSaveDataDialog(){
if (this.modalData.title === '询价新增') {
let rfqNos = [];
this.dataList.forEach((item) => {
// item.rfqNoXJ
if (item.rfqNo.startsWith('XJ')) {
//
const numPart = parseInt(item.rfqNo.replace('XJ', ''), 10);
if (!isNaN(numPart)) {
rfqNos.push(numPart);
}
}
});
if (rfqNos.length === 0) {
// XJrfqNo
this.modalData.rfqNo = 'XJ00000001';
} else {
// XJrfqNo
let maxRfqNo = Math.max(...rfqNos);
// rfqNo9
maxRfqNo += 1; //
this.modalData.rfqNo = 'XJ' + String(maxRfqNo).padStart(8, '0');
}
}
},
// openSaveDataDialog(){
// if (this.modalData.title === '') {
// let rfqNos = [];
// this.dataList.forEach((item) => {
// // item.rfqNoXJ
// if (item.rfqNo.startsWith('XJ')) {
// //
// const numPart = parseInt(item.rfqNo.replace('XJ', ''), 10);
// if (!isNaN(numPart)) {
// rfqNos.push(numPart);
// }
// }
// });
// if (rfqNos.length === 0) {
// // XJrfqNo
// this.modalData.rfqNo = 'XJ00000001';
// } else {
// // XJrfqNo
// let maxRfqNo = Math.max(...rfqNos);
//
// // rfqNo9
// maxRfqNo += 1; //
// this.modalData.rfqNo = 'XJ' + String(maxRfqNo).padStart(8, '0');
// }
// }
// },
//
closeSaveDataDialog() {
this.modalData = {

250
src/views/modules/part/partCostInformation.vue

@ -47,10 +47,11 @@
fixed="right"
header-align="center"
align="center"
width="60"
width="100"
label="操作">
<template slot-scope="scope">
<el-link v-if="!authUpdate" style="cursor: pointer" @click="updateModal(scope.row)">修改</el-link>
<el-link style="cursor: pointer" @click="costHistorySearch(scope.row)">成本历史</el-link>
</template>
</el-table-column>
</el-table>
@ -121,7 +122,7 @@
</el-form>
<el-form :inline="true" label-position="top" :model="modalData" style="margin-top: 0px;">
<el-form-item label="备注" style="height: 80px">
<el-input v-model="modalData.remark" style="width: 565px"></el-input>
<el-input v-model="modalData.costRemark" style="width: 565px"></el-input>
</el-form-item>
</el-form>
</el-form>
@ -131,16 +132,45 @@
</el-footer>
</el-dialog>
<!-- 成本历史模态框 -->
<el-dialog title="物料成本信息 - 成本历史" @close="closeCostHistoryDialog" :close-on-click-modal="false" v-drag :visible.sync="costHistoryFlag" width="680px">
<el-table
:height="height - 300"
:data="costHistoryList"
border
style="width: 100%;">
<el-table-column
v-for="(item,index) in columnCostHistoryList" :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>
<span slot="footer" class="dialog-footer">
<el-button type="primary" @click="closeCostHistoryDialog">关闭</el-button>
</span>
</el-dialog>
<choose-list-eam ref="baseList" @getBaseData="getBaseData"></choose-list-eam>
</div>
</template>
<script>
import {partCostInformationSearch,partCostInformationEdit} from "@/api/part/partCostInformation";
import {partInformationSearch,partCostInformationEdit} from "@/api/part/partInformation";
import Chooselist from "../common/Chooselist.vue";
import {getSiteAndBuByUserName} from "../../../api/qc/qc";
import ChooseListEam from "../common/Chooselist_eam.vue";
import {verifyData} from "../../../api/part/partInformation";
import {costHistorySearch, verifyData} from "../../../api/part/partInformation";
import {getTableDefaultListLanguage, getTableUserListLanguage} from "../../../api/table";
export default {
components: {
@ -186,7 +216,7 @@ export default {
standardCostCurrency: '',
actualCost: '',
actualCostCurrency: '',
remark: '',
costRemark: '',
createBy: '',
createDate: '',
updateBy: '',
@ -195,13 +225,14 @@ export default {
originalData: {},
// ======== ========
dataList: [],
costHistoryList: [],
//
columnList: [
{
userId: this.$store.state.user.name,
functionId: 6010011,
serialNumber: '6010011Table2BuDesc',
tableId: '6010011Table2',
serialNumber: '6010011Table1BuDesc',
tableId: '6010011Table1',
tableName: '物料成本表',
columnProp: 'buDesc',
headerAlign: 'center',
@ -434,10 +465,10 @@ export default {
{
userId: this.$store.state.user.name,
functionId: 6010011,
serialNumber: '6010011Table1Remark',
serialNumber: '6010011Table1CostRemark',
tableId: '6010011Table1',
tableName: '物料成本表',
columnProp: 'remark',
columnProp: 'costRemark',
headerAlign: 'center',
align: 'left',
columnLabel: '备注',
@ -522,6 +553,134 @@ export default {
columnWidth: 80
}
],
columnCostHistoryList: [
{
userId: this.$store.state.user.name,
functionId: 6010011,
serialNumber: '6010011Table2FieldCaption',
tableId: '6010011Table2',
tableName: '物料成本表',
columnProp: 'fieldcaption',
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: 6010011,
serialNumber: '6010011Table2FieldName',
tableId: '6010011Table2',
tableName: '物料成本表',
columnProp: 'fieldname',
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: 6010011,
serialNumber: '6010011Table2OldValue',
tableId: '6010011Table2',
tableName: '物料成本表',
columnProp: 'oldvalue',
headerAlign: 'center',
align: 'center',
columnLabel: 'Old Value',
columnHidden: false,
columnImage: false,
columnSortable: false,
sortLv: 0,
status: true,
fixed: '',
columnWidth: 100
},
{
userId: this.$store.state.user.name,
functionId: 6010011,
serialNumber: '6010011Table2NewValue',
tableId: '6010011Table2',
tableName: '物料成本表',
columnProp: 'newvalue',
headerAlign: 'center',
align: 'center',
columnLabel: 'New Value',
columnHidden: false,
columnImage: false,
columnSortable: false,
sortLv: 0,
status: true,
fixed: '',
columnWidth: 100
},
{
userId: this.$store.state.user.name,
functionId: 6010011,
serialNumber: '6010011Table2Recordtype',
tableId: '6010011Table2',
tableName: '物料成本表',
columnProp: 'recordtype',
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: 6010011,
serialNumber: '6010011Table2UserId',
tableId: '6010011Table2',
tableName: '物料成本表',
columnProp: 'userid',
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: 6010011,
serialNumber: '6010011Table2CreateDate',
tableId: '6010011Table2',
tableName: '物料成本表',
columnProp: 'createdate',
headerAlign: 'center',
align: 'center',
columnLabel: '更新时间',
columnHidden: false,
columnImage: false,
columnSortable: false,
sortLv: 0,
status: true,
fixed: '',
columnWidth: 100
}
],
// ======== ========
authSearch: false,
authSave: false,
@ -529,6 +688,7 @@ export default {
authDelete: false,
modalFlag: false,
modalDisableFlag: false,
costHistoryFlag: false,
menuId: this.$route.meta.menuId,
tagNo:undefined,
}
@ -546,7 +706,7 @@ export default {
// site bu
this.getSiteAndBuByUserName()
//
// this.getTableUserColumn(this.$route.meta.menuId+'table1',1)
this.getTableUserColumn(this.$route.meta.menuId+'table1',1)
if (!this.authSearch) {
//
this.getDataList()
@ -632,7 +792,7 @@ export default {
this.searchData.limit = this.pageSize
this.searchData.page = this.pageIndex
this.searchData.buNo = this.searchData.bu.split('_')[1]
partCostInformationSearch(this.searchData).then(({data}) => {
partInformationSearch(this.searchData).then(({data}) => {
if (data.code === 0) {
this.dataList = data.page.list
this.pageIndex = data.page.currPage
@ -667,7 +827,7 @@ export default {
standardCostCurrency: row.standardCostCurrency,
actualCost: row.actualCost,
actualCostCurrency: row.actualCostCurrency,
remark: row.remark,
costRemark: row.costRemark,
createBy: row.createBy,
createDate: row.createDate,
}
@ -700,7 +860,7 @@ export default {
standardCostCurrency: this.modalData.standardCostCurrency,
actualCost: this.modalData.actualCost,
actualCostCurrency: this.modalData.actualCostCurrency,
remark: this.modalData.remark,
costRemark: this.modalData.costRemark,
updateBy: this.$store.state.user.name,
updateDate:''
}
@ -748,7 +908,7 @@ export default {
standardCostCurrency: '',
actualCost: '',
actualCostCurrency: '',
remark: '',
costRemark: '',
}
this.modalFlag = false
},
@ -757,7 +917,67 @@ export default {
if (this.modalData.actualCost === '' || this.modalData.actualCost === null){
this.modalData.actualCost = this.modalData.standardCost
}
}
},
costHistorySearch(row) {
let inData = {
site: row.site,
partno: row.partNo
}
costHistorySearch(inData).then(({data}) => {
if (data.code === 0) {
this.costHistoryList = data.rows
this.costHistoryFlag = true
} else {
this.$message.error(data.msg)
}
})
},
closeCostHistoryDialog () {
this.costHistoryFlag = false
this.costHistoryList = []
},
//
async getTableUserColumn(tableId, columnId) {
let queryTableUser = {
userId: this.$store.state.user.name,
functionId: this.$route.meta.menuId,
tableId: tableId,
status: true,
languageCode: this.$i18n.locale
}
await getTableUserListLanguage(queryTableUser).then(({data}) => {
if (data.rows.length > 0) {
switch (columnId) {
case 1:
this.columnList = data.rows
break;
}
} else {
this.getColumnList(tableId, columnId)
}
})
},
// tableDefault
async getColumnList (tableId, columnId) {
let queryTable= {
functionId: this.$route.meta.menuId,
tableId: tableId,
languageCode: this.$i18n.locale
}
await getTableDefaultListLanguage(queryTable).then(({data}) => {
if (!data.rows.length === 0) {
switch (columnId) {
case 1:
this.columnList = data.rows
break;
}
}
})
},
}
}
</script>

6
src/views/modules/part/standardRoutingOperation.vue

@ -276,7 +276,7 @@ export default {
},
{
userId: this.$store.state.user.name,
functionId: 601003,
functionId: 6010012,
serialNumber: '6010012Table2SetupCrewSize',
tableId: '6010012Table2',
tableName: '标准工序表',
@ -330,7 +330,7 @@ export default {
},
{
userId: this.$store.state.user.name,
functionId: 601003,
functionId: 6010012,
serialNumber: '6010012Table2CrewSize',
tableId: '6010012Table2',
tableName: '标准工序表',
@ -383,7 +383,7 @@ export default {
columnWidth: 100
},
{
functionId: 601003,
functionId: 6010012,
serialNumber: '6010012Table1WorkCenterNo',
tableId: '6010012Table1',
tableName: '标准工序表',

Loading…
Cancel
Save