Browse Source

2025-03-27

master
qiezi 11 months ago
parent
commit
58d7fbd7f0
  1. 5
      src/views/modules/project/projectInfo/projectInfo.vue
  2. 170
      src/views/modules/project/projectPart/projectPartQuote.vue
  3. 200
      src/views/modules/quote/detail/quoteDetail.vue
  4. 200
      src/views/modules/quote/detail/quoteGroupDetail.vue
  5. 1
      src/views/modules/quote/index.vue

5
src/views/modules/project/projectInfo/projectInfo.vue

@ -245,7 +245,8 @@
<project-quotation ref="projectQuotation" ></project-quotation>
</el-tab-pane>
<el-tab-pane label="报价信息" name="quotationHeader">
<quote :is-menu="false" :project-no="currentRow.projectId" height="22vh"></quote>
<!-- <quote :is-menu="false" :project-no="currentRow.projectId" height="22vh"></quote>-->
<project-part-quote :is-export="true" height="26vh" :part="{site:currentRow.site,projectId:currentRow.projectId}"></project-part-quote>
</el-tab-pane>
<el-tab-pane label="打样信息" name="sample">
<sample ref="sample"></sample>
@ -411,9 +412,11 @@
import CustomerInfo from "../../quotation/sellForQuotation/customerInfo.vue";
import Quote from "../../quote/index.vue";
import ProjectQuotation from "./com_project_puotation.vue";
import ProjectPartQuote from "../projectPart/projectPartQuote.vue";
/*組件*/
export default {
components: {
ProjectPartQuote,
ProjectQuotation,
Quote,
CustomerInfo,

170
src/views/modules/project/projectPart/projectPartQuote.vue

@ -11,11 +11,19 @@ export default {
height:{
type: [String,Number],
default: '26vh'
},
isExport:{
type: Boolean,
default: false
}
},
data(){
return{
dataList:[],
exportData: [],
exportName: '项目报价'+this.dayjs().format('YYYYMMDDHHmmss'),
exportHeader: ["项目报价"],
exportFooter: [],
queryLoading:false,
columns:[
{
@ -110,130 +118,129 @@ export default {
},
{
userId: this.$store.state.user.name,
functionId: 101002002,
serialNumber: '101002002Table2AdjustPartCost',
tableId: '101002002Table2',
functionId: 102001,
serialNumber: '102001Table2Qty',
tableId: '102001Table2',
tableName: '报价详情信息表',
columnProp: 'adjustPartCost',
columnProp: 'unitPrice',
headerAlign: 'center',
align: 'right',
columnLabel: '材料成本',
columnLabel: '未税单价',
columnHidden: false,
columnImage: false,
columnSortable: false,
sortLv: 0,
status: true,
fixed: '',
columnWidth: 130
columnWidth: 100
},
{
userId: this.$store.state.user.name,
functionId: 101002002,
serialNumber: '101002002Table2AdjustLabourCost',
tableId: '101002002Table2',
functionId: 102001,
serialNumber: '102001Table2Qty',
tableId: '102001Table2',
tableName: '报价详情信息表',
columnProp: 'adjustLabourCost',
columnProp: 'taxRate',
headerAlign: 'center',
align: 'right',
columnLabel: '人工成本',
columnLabel: '税率',
columnHidden: false,
columnImage: false,
columnSortable: false,
sortLv: 0,
status: true,
fixed: '',
columnWidth: 120
columnWidth: 100
},
{
userId: this.$store.state.user.name,
functionId: 101002002,
serialNumber: '101002002Table2AdjustMachineCost',
tableId: '101002002Table2',
functionId: 102001,
serialNumber: '102001Table2Qty',
tableId: '102001Table2',
tableName: '报价详情信息表',
columnProp: 'adjustMachineCost',
columnProp: 'exchangeRate1',
headerAlign: 'center',
align: 'right',
columnLabel: '机器成本',
columnLabel: '其他税率',
columnHidden: false,
columnImage: false,
columnSortable: false,
sortLv: 0,
status: true,
fixed: '',
columnWidth: 120
columnWidth: 100
},
{
userId: this.$store.state.user.name,
functionId: 101002002,
serialNumber: '101002002Table2AdjustToolCost',
tableId: '101002002Table2',
functionId: 102001,
serialNumber: '102001Table2Qty',
tableId: '102001Table2',
tableName: '报价详情信息表',
columnProp: 'adjustToolCost',
columnProp: 'taxUnitPrice',
headerAlign: 'center',
align: 'right',
columnLabel: '工具成本',
columnLabel: '含税单价(CNY)',
columnHidden: false,
columnImage: false,
columnSortable: false,
sortLv: 0,
status: true,
fixed: '',
columnWidth: 120
columnWidth: 100
},
{
userId: this.$store.state.user.name,
functionId: 101002002,
serialNumber: '101002002Table2AdjustTestCost',
tableId: '101002002Table2',
functionId: 102001,
serialNumber: '102001Table2Qty',
tableId: '102001Table2',
tableName: '报价详情信息表',
columnProp: 'adjustTestCost',
columnProp: 'currencyDesc2',
headerAlign: 'center',
align: 'right',
columnLabel: '测试成本',
columnLabel: '币种',
columnHidden: false,
columnImage: false,
columnSortable: false,
sortLv: 0,
status: true,
fixed: '',
columnWidth: 120
columnWidth: 100
},
{
userId: this.$store.state.user.name,
functionId: 101002002,
serialNumber: '101002002Table2AdjustElseCost',
tableId: '101002002Table2',
functionId: 102001,
serialNumber: '102001Table2Qty',
tableId: '102001Table2',
tableName: '报价详情信息表',
columnProp: 'adjustElseCost',
columnProp: 'exchangeRate2',
headerAlign: 'center',
align: 'right',
columnLabel: '其他成本',
columnLabel: '汇率',
columnHidden: false,
columnImage: false,
columnSortable: false,
sortLv: 0,
status: true,
fixed: '',
columnWidth: 120
columnWidth: 100
},
{
userId: this.$store.state.user.name,
functionId: 101002002,
serialNumber: '101002002Table2TotalCost',
tableId: '101002002Table2',
functionId: 102001,
serialNumber: '102001Table2Qty',
tableId: '102001Table2',
tableName: '报价详情信息表',
columnProp: 'totalCost',
columnProp: 'currencyTotalCost2',
headerAlign: 'center',
align: 'right',
columnLabel: '总成本',
columnLabel: '含税单价',
columnHidden: false,
columnImage: false,
columnSortable: false,
sortLv: 0,
status: true,
fixed: '',
columnWidth: 140
columnWidth: 100
},
{
userId: this.$store.state.user.name,
@ -307,7 +314,22 @@ export default {
},
})
}
}
},
fields() {
let json = "{"
this.columns.forEach((item, index) => {
if (index === this.columns.length - 1) {
json += "\"" + item.columnLabel + "\"" + ":" + "\"" + item.columnProp + "\""
} else {
json += "\"" + item.columnLabel + "\"" + ":" + "\"" + item.columnProp + "\"" + ","
}
})
json += "}"
return eval("(" + json + ")")
},
createExportData() {
return this.dataList;
},
},
watch:{
part(newVal,oldVal){
@ -322,29 +344,43 @@ export default {
</script>
<template>
<el-table :data="dataList" style="width: 100%;margin-top: 5px" :height="height" v-loading="queryLoading" border>
<el-table-column
v-for="(item,index) in columns" :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" >
<div v-if="item.columnProp === 'quoteVersionNo'">
<el-link v-if="!item.columnHidden" @click="handleClick(scope.row)"> {{ `${scope.row[item.columnProp]}` }}</el-link>
<span v-if="item.columnImage"><img :src="scope.row[item.columnProp]" style="width: 100px; height: 80px"/></span>
</div>
<div v-else>
<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>
</div>
</template>
</el-table-column>
</el-table>
<div>
<download-excel v-if="isExport"
:fields="fields()"
:data="exportData"
type="xls"
:name="exportName"
:header="exportHeader"
:footer="exportFooter"
:fetch="createExportData"
worksheet="导出信息"
class="el-button el-button--primary el-button--medium">
{{ '导出' }}
</download-excel>
<el-table :data="dataList" style="width: 100%;margin-top: 5px" :height="height" v-loading="queryLoading" border>
<el-table-column
v-for="(item,index) in columns" :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" >
<div v-if="item.columnProp === 'quoteVersionNo'">
<el-link v-if="!item.columnHidden" @click="handleClick(scope.row)"> {{ `${scope.row[item.columnProp]}` }}</el-link>
<span v-if="item.columnImage"><img :src="scope.row[item.columnProp]" style="width: 100px; height: 80px"/></span>
</div>
<div v-else>
<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>
</div>
</template>
</el-table-column>
</el-table>
</div>
</template>
<style scoped>

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

@ -297,7 +297,205 @@ export default {
sortLv: 0,
status: true,
fixed: '',
columnWidth: 140
columnWidth: 80
},
{
userId: this.$store.state.user.name,
functionId: 5011,
serialNumber: '5011Table2QuoteProfitRate',
tableId: '5011Table2',
tableName: '报价详情信息表',
columnProp: 'quoteProfitRate',
headerAlign: 'center',
align: 'right',
columnLabel: 'VA%',
columnHidden: false,
columnImage: false,
columnSortable: false,
sortLv: 0,
status: true,
fixed: '',
columnWidth: 80
},
{
userId: this.$store.state.user.name,
functionId: 5011,
serialNumber: '5011Table2QuoteProfitAmount',
tableId: '5011Table2',
tableName: '报价详情信息表',
columnProp: 'quoteProfitAmount',
headerAlign: 'center',
align: 'right',
columnLabel: 'Contribution%',
columnHidden: false,
columnImage: false,
columnSortable: false,
sortLv: 0,
status: true,
fixed: '',
columnWidth: 100
},
{
userId: this.$store.state.user.name,
functionId: 5011,
serialNumber: '5011Table2QuoteTaxRate',
tableId: '5011Table2',
tableName: '报价详情信息表',
columnProp: 'quoteTaxRate',
headerAlign: 'center',
align: 'right',
columnLabel: 'Margin%',
columnHidden: false,
columnImage: false,
columnSortable: false,
sortLv: 0,
status: true,
fixed: '',
columnWidth: 80
},
{
userId: this.$store.state.user.name,
functionId: 5011,
serialNumber: '5011Table2QuoteTaxTotalPrice',
tableId: '5011Table2',
tableName: '报价详情信息表',
columnProp: 'quoteTaxTotalPrice',
headerAlign: 'center',
align: 'right',
columnLabel: 'Price ¥(ex VAT)',
columnHidden: false,
columnImage: false,
columnSortable: false,
sortLv: 0,
status: true,
fixed: '',
columnWidth: 100
},
{
userId: this.$store.state.user.name,
functionId: 5011,
serialNumber: '5011Table2Qty',
tableId: '5011Table2',
tableName: '报价详情信息表',
columnProp: 'unitPrice',
headerAlign: 'center',
align: 'right',
columnLabel: '未税单价',
columnHidden: false,
columnImage: false,
columnSortable: false,
sortLv: 0,
status: true,
fixed: '',
columnWidth: 100
},
{
userId: this.$store.state.user.name,
functionId: 5011,
serialNumber: '5011Table2Qty',
tableId: '5011Table2',
tableName: '报价详情信息表',
columnProp: 'taxRate',
headerAlign: 'center',
align: 'right',
columnLabel: '税率',
columnHidden: false,
columnImage: false,
columnSortable: false,
sortLv: 0,
status: true,
fixed: '',
columnWidth: 100
},
{
userId: this.$store.state.user.name,
functionId: 5011,
serialNumber: '5011Table2Qty',
tableId: '5011Table2',
tableName: '报价详情信息表',
columnProp: 'exchangeRate1',
headerAlign: 'center',
align: 'right',
columnLabel: '其他税率',
columnHidden: false,
columnImage: false,
columnSortable: false,
sortLv: 0,
status: true,
fixed: '',
columnWidth: 100
},
{
userId: this.$store.state.user.name,
functionId: 5011,
serialNumber: '5011Table2Qty',
tableId: '5011Table2',
tableName: '报价详情信息表',
columnProp: 'taxUnitPrice',
headerAlign: 'center',
align: 'right',
columnLabel: '含税单价(CNY)',
columnHidden: false,
columnImage: false,
columnSortable: false,
sortLv: 0,
status: true,
fixed: '',
columnWidth: 100
},
{
userId: this.$store.state.user.name,
functionId: 5011,
serialNumber: '5011Table2Qty',
tableId: '5011Table2',
tableName: '报价详情信息表',
columnProp: 'currencyDesc2',
headerAlign: 'center',
align: 'right',
columnLabel: '币种',
columnHidden: false,
columnImage: false,
columnSortable: false,
sortLv: 0,
status: true,
fixed: '',
columnWidth: 100
},
{
userId: this.$store.state.user.name,
functionId: 5011,
serialNumber: '5011Table2Qty',
tableId: '5011Table2',
tableName: '报价详情信息表',
columnProp: 'exchangeRate2',
headerAlign: 'center',
align: 'right',
columnLabel: '汇率',
columnHidden: false,
columnImage: false,
columnSortable: false,
sortLv: 0,
status: true,
fixed: '',
columnWidth: 100
},
{
userId: this.$store.state.user.name,
functionId: 5011,
serialNumber: '5011Table2Qty',
tableId: '5011Table2',
tableName: '报价详情信息表',
columnProp: 'currencyTotalCost2',
headerAlign: 'center',
align: 'right',
columnLabel: '含税单价',
columnHidden: false,
columnImage: false,
columnSortable: false,
sortLv: 0,
status: true,
fixed: '',
columnWidth: 100
},
{
userId: this.$store.state.user.name,

200
src/views/modules/quote/detail/quoteGroupDetail.vue

@ -293,7 +293,205 @@ export default {
sortLv: 0,
status: true,
fixed: '',
columnWidth: 140
columnWidth: 80
},
{
userId: this.$store.state.user.name,
functionId: 5011,
serialNumber: '5011Table2QuoteProfitRate',
tableId: '5011Table2',
tableName: '报价详情信息表',
columnProp: 'quoteProfitRate',
headerAlign: 'center',
align: 'right',
columnLabel: 'VA%',
columnHidden: false,
columnImage: false,
columnSortable: false,
sortLv: 0,
status: true,
fixed: '',
columnWidth: 80
},
{
userId: this.$store.state.user.name,
functionId: 5011,
serialNumber: '5011Table2QuoteProfitAmount',
tableId: '5011Table2',
tableName: '报价详情信息表',
columnProp: 'quoteProfitAmount',
headerAlign: 'center',
align: 'right',
columnLabel: 'Contribution%',
columnHidden: false,
columnImage: false,
columnSortable: false,
sortLv: 0,
status: true,
fixed: '',
columnWidth: 100
},
{
userId: this.$store.state.user.name,
functionId: 5011,
serialNumber: '5011Table2QuoteTaxRate',
tableId: '5011Table2',
tableName: '报价详情信息表',
columnProp: 'quoteTaxRate',
headerAlign: 'center',
align: 'right',
columnLabel: 'Margin%',
columnHidden: false,
columnImage: false,
columnSortable: false,
sortLv: 0,
status: true,
fixed: '',
columnWidth: 80
},
{
userId: this.$store.state.user.name,
functionId: 5011,
serialNumber: '5011Table2QuoteTaxTotalPrice',
tableId: '5011Table2',
tableName: '报价详情信息表',
columnProp: 'quoteTaxTotalPrice',
headerAlign: 'center',
align: 'right',
columnLabel: 'Price ¥(ex VAT)',
columnHidden: false,
columnImage: false,
columnSortable: false,
sortLv: 0,
status: true,
fixed: '',
columnWidth: 100
},
{
userId: this.$store.state.user.name,
functionId: 5011,
serialNumber: '5011Table2Qty',
tableId: '5011Table2',
tableName: '报价详情信息表',
columnProp: 'unitPrice',
headerAlign: 'center',
align: 'right',
columnLabel: '未税单价',
columnHidden: false,
columnImage: false,
columnSortable: false,
sortLv: 0,
status: true,
fixed: '',
columnWidth: 100
},
{
userId: this.$store.state.user.name,
functionId: 5011,
serialNumber: '5011Table2Qty',
tableId: '5011Table2',
tableName: '报价详情信息表',
columnProp: 'taxRate',
headerAlign: 'center',
align: 'right',
columnLabel: '税率',
columnHidden: false,
columnImage: false,
columnSortable: false,
sortLv: 0,
status: true,
fixed: '',
columnWidth: 100
},
{
userId: this.$store.state.user.name,
functionId: 5011,
serialNumber: '5011Table2Qty',
tableId: '5011Table2',
tableName: '报价详情信息表',
columnProp: 'exchangeRate1',
headerAlign: 'center',
align: 'right',
columnLabel: '其他税率',
columnHidden: false,
columnImage: false,
columnSortable: false,
sortLv: 0,
status: true,
fixed: '',
columnWidth: 100
},
{
userId: this.$store.state.user.name,
functionId: 5011,
serialNumber: '5011Table2Qty',
tableId: '5011Table2',
tableName: '报价详情信息表',
columnProp: 'taxUnitPrice',
headerAlign: 'center',
align: 'right',
columnLabel: '含税单价(CNY)',
columnHidden: false,
columnImage: false,
columnSortable: false,
sortLv: 0,
status: true,
fixed: '',
columnWidth: 100
},
{
userId: this.$store.state.user.name,
functionId: 5011,
serialNumber: '5011Table2Qty',
tableId: '5011Table2',
tableName: '报价详情信息表',
columnProp: 'currencyDesc2',
headerAlign: 'center',
align: 'right',
columnLabel: '币种',
columnHidden: false,
columnImage: false,
columnSortable: false,
sortLv: 0,
status: true,
fixed: '',
columnWidth: 100
},
{
userId: this.$store.state.user.name,
functionId: 5011,
serialNumber: '5011Table2Qty',
tableId: '5011Table2',
tableName: '报价详情信息表',
columnProp: 'exchangeRate2',
headerAlign: 'center',
align: 'right',
columnLabel: '汇率',
columnHidden: false,
columnImage: false,
columnSortable: false,
sortLv: 0,
status: true,
fixed: '',
columnWidth: 100
},
{
userId: this.$store.state.user.name,
functionId: 5011,
serialNumber: '5011Table2Qty',
tableId: '5011Table2',
tableName: '报价详情信息表',
columnProp: 'currencyTotalCost2',
headerAlign: 'center',
align: 'right',
columnLabel: '含税单价',
columnHidden: false,
columnImage: false,
columnSortable: false,
sortLv: 0,
status: true,
fixed: '',
columnWidth: 100
},
{
userId: this.$store.state.user.name,

1
src/views/modules/quote/index.vue

@ -962,7 +962,6 @@ export default {
}
})
},
fields() {
let json = "{"
this.columns.forEach((item, index) => {

Loading…
Cancel
Save