|
|
@@ -40,7 +40,8 @@
|
|
|
icon="el-icon-plus"
|
|
|
class="ele-btn-icon"
|
|
|
v-if="!isContractId"
|
|
|
- @click="handlAdd">
|
|
|
+ @click="handlAdd"
|
|
|
+ >
|
|
|
新增临时产品
|
|
|
</el-button>
|
|
|
</div>
|
|
|
@@ -85,18 +86,18 @@
|
|
|
trigger: 'change'
|
|
|
}"
|
|
|
>
|
|
|
- <el-input
|
|
|
- :disabled="isContractId||row.productCode"
|
|
|
+ <el-input
|
|
|
+ :disabled="isContractId || row.productCode"
|
|
|
v-model="row.productName"
|
|
|
placeholder="请输入"
|
|
|
- style="width: 60%;margin-right: 10px;"
|
|
|
+ style="width: 60%; margin-right: 10px"
|
|
|
></el-input>
|
|
|
<el-button
|
|
|
size="small"
|
|
|
type="primary"
|
|
|
@click.native="handParent(row, $index)"
|
|
|
- >选择
|
|
|
- </el-button>
|
|
|
+ >选择
|
|
|
+ </el-button>
|
|
|
</el-form-item>
|
|
|
</template>
|
|
|
<template v-slot:headerCustomerMark="{ column }">
|
|
|
@@ -186,9 +187,9 @@
|
|
|
style="margin-bottom: 20px"
|
|
|
:prop="'datasource.' + scope.$index + '.productBrand'"
|
|
|
>
|
|
|
- <el-input v-model="scope.row.productBrand"
|
|
|
- :disabled="scope.row.productCode"
|
|
|
-
|
|
|
+ <el-input
|
|
|
+ v-model="scope.row.productBrand"
|
|
|
+ :disabled="scope.row.productCode"
|
|
|
></el-input>
|
|
|
</el-form-item>
|
|
|
</template>
|
|
|
@@ -198,8 +199,9 @@
|
|
|
style="margin-bottom: 20px"
|
|
|
:prop="'datasource.' + scope.$index + '.modelType'"
|
|
|
>
|
|
|
- <el-input v-model="scope.row.modelType"
|
|
|
- :disabled="scope.row.productCode"
|
|
|
+ <el-input
|
|
|
+ v-model="scope.row.modelType"
|
|
|
+ :disabled="scope.row.productCode"
|
|
|
></el-input>
|
|
|
</el-form-item>
|
|
|
</template>
|
|
|
@@ -208,8 +210,9 @@
|
|
|
style="margin-bottom: 20px"
|
|
|
:prop="'datasource.' + scope.$index + '.specification'"
|
|
|
>
|
|
|
- <el-input v-model="scope.row.specification"
|
|
|
- :disabled="scope.row.productCode"
|
|
|
+ <el-input
|
|
|
+ v-model="scope.row.specification"
|
|
|
+ :disabled="scope.row.productCode"
|
|
|
></el-input>
|
|
|
</el-form-item>
|
|
|
</template>
|
|
|
@@ -276,7 +279,6 @@
|
|
|
<el-input
|
|
|
v-model="scope.row.measuringUnit"
|
|
|
:disabled="scope.row.productCode"
|
|
|
-
|
|
|
placeholder="请输入"
|
|
|
></el-input>
|
|
|
</el-form-item>
|
|
|
@@ -590,816 +592,809 @@
|
|
|
</el-form>
|
|
|
</template>
|
|
|
<script>
|
|
|
- import { numberReg, positiveIntegerReg } from 'ele-admin';
|
|
|
- import productList from '@/BIZComponents/product-list.vue';
|
|
|
- import dictMixins from '@/mixins/dictMixins';
|
|
|
- import fileUpload from '@/components/upload/fileUpload';
|
|
|
- import headList from '@/BIZComponents/user-select/user-select.vue';
|
|
|
- import ProductionVersion from '@/components/ProductionVersion2/index.vue';
|
|
|
- import { getFile } from '@/api/system/file';
|
|
|
- import fileMain from '@/components/addDoc/index.vue';
|
|
|
+import { numberReg, positiveIntegerReg } from 'ele-admin';
|
|
|
+import productList from '@/BIZComponents/product-list.vue';
|
|
|
+import dictMixins from '@/mixins/dictMixins';
|
|
|
+import fileUpload from '@/components/upload/fileUpload';
|
|
|
+import headList from '@/BIZComponents/user-select/user-select.vue';
|
|
|
+import ProductionVersion from '@/components/ProductionVersion2/index.vue';
|
|
|
+import { getFile } from '@/api/system/file';
|
|
|
+import fileMain from '@/components/addDoc/index.vue';
|
|
|
|
|
|
- const dayjs = require('dayjs');
|
|
|
+const dayjs = require('dayjs');
|
|
|
|
|
|
- export default {
|
|
|
- mixins: [dictMixins],
|
|
|
- components: {
|
|
|
- fileMain,
|
|
|
- productList,
|
|
|
- fileUpload,
|
|
|
- headList,
|
|
|
- ProductionVersion
|
|
|
+export default {
|
|
|
+ mixins: [dictMixins],
|
|
|
+ components: {
|
|
|
+ fileMain,
|
|
|
+ productList,
|
|
|
+ fileUpload,
|
|
|
+ headList,
|
|
|
+ ProductionVersion
|
|
|
+ },
|
|
|
+ props: {
|
|
|
+ pageName: {
|
|
|
+ default: '',
|
|
|
+ type: String
|
|
|
},
|
|
|
- props: {
|
|
|
- pageName: {
|
|
|
- default: '',
|
|
|
- type: String
|
|
|
- },
|
|
|
- isDiscountTotalPrice: {
|
|
|
- default: false,
|
|
|
- type: Boolean
|
|
|
- },
|
|
|
- isDeliveryDeadline: {
|
|
|
- default: true,
|
|
|
- type: Boolean
|
|
|
- },
|
|
|
- isGuaranteePeriod: {
|
|
|
- default: true,
|
|
|
- type: Boolean
|
|
|
- },
|
|
|
- isCustomerMark: {
|
|
|
- default: true,
|
|
|
- type: Boolean
|
|
|
- },
|
|
|
- customerMark:'',
|
|
|
-
|
|
|
- contractBookType: {
|
|
|
- default: 1
|
|
|
- },
|
|
|
- isContractId: {
|
|
|
- type: Boolean,
|
|
|
- default: false
|
|
|
- },
|
|
|
- pricingWay: {
|
|
|
- type: [Number, String],
|
|
|
- default: 1
|
|
|
- },
|
|
|
- detailType: {
|
|
|
- default: 0
|
|
|
- }
|
|
|
+ isDiscountTotalPrice: {
|
|
|
+ default: false,
|
|
|
+ type: Boolean
|
|
|
},
|
|
|
- data() {
|
|
|
- const defaultForm = {
|
|
|
- key: null,
|
|
|
- endTime: '',
|
|
|
- isFirst: 0,
|
|
|
- name: '',
|
|
|
- startTime: '',
|
|
|
- workHour: '',
|
|
|
- guaranteePeriodUnitCode: '',
|
|
|
- technicalDrawings: []
|
|
|
- };
|
|
|
- return {
|
|
|
- allPrice: 0.0,
|
|
|
- numberReg,
|
|
|
- defaultForm,
|
|
|
- form: {
|
|
|
- discountTotalPrice: '',
|
|
|
- datasource: []
|
|
|
- },
|
|
|
- rules: {}
|
|
|
- };
|
|
|
+ isDeliveryDeadline: {
|
|
|
+ default: true,
|
|
|
+ type: Boolean
|
|
|
+ },
|
|
|
+ isGuaranteePeriod: {
|
|
|
+ default: true,
|
|
|
+ type: Boolean
|
|
|
+ },
|
|
|
+ isCustomerMark: {
|
|
|
+ default: true,
|
|
|
+ type: Boolean
|
|
|
+ },
|
|
|
+ customerMark: '',
|
|
|
+
|
|
|
+ contractBookType: {
|
|
|
+ default: 1
|
|
|
+ },
|
|
|
+ isContractId: {
|
|
|
+ type: Boolean,
|
|
|
+ default: false
|
|
|
+ },
|
|
|
+ pricingWay: {
|
|
|
+ type: [Number, String],
|
|
|
+ default: 1
|
|
|
},
|
|
|
- computed: {
|
|
|
- canHandl() {
|
|
|
- return this.form.datasource.length;
|
|
|
+ detailType: {
|
|
|
+ default: 0
|
|
|
+ }
|
|
|
+ },
|
|
|
+ data() {
|
|
|
+ const defaultForm = {
|
|
|
+ key: null,
|
|
|
+ endTime: '',
|
|
|
+ isFirst: 0,
|
|
|
+ name: '',
|
|
|
+ startTime: '',
|
|
|
+ workHour: '',
|
|
|
+ guaranteePeriodUnitCode: '',
|
|
|
+ technicalDrawings: []
|
|
|
+ };
|
|
|
+ return {
|
|
|
+ allPrice: 0.0,
|
|
|
+ numberReg,
|
|
|
+ defaultForm,
|
|
|
+ form: {
|
|
|
+ discountTotalPrice: '',
|
|
|
+ datasource: []
|
|
|
},
|
|
|
- columns() {
|
|
|
- return [
|
|
|
- {
|
|
|
- width: 45,
|
|
|
- type: 'index',
|
|
|
- columnKey: 'index',
|
|
|
- align: 'center',
|
|
|
- fixed: 'left'
|
|
|
- },
|
|
|
- {
|
|
|
- width: 250,
|
|
|
- prop: 'productName',
|
|
|
- label: '名称',
|
|
|
- slot: 'productName',
|
|
|
- headerSlot: 'headerProductName',
|
|
|
- align: 'center'
|
|
|
- },
|
|
|
- {
|
|
|
- width: 120,
|
|
|
- prop: 'productCode',
|
|
|
- label: '编码',
|
|
|
- slot: 'productCode',
|
|
|
- align: 'center'
|
|
|
- },
|
|
|
- {
|
|
|
- width: 200,
|
|
|
- prop: 'customerMark',
|
|
|
- label: '客户代号',
|
|
|
- slot: 'customerMark',
|
|
|
- headerSlot: 'headerCustomerMark',
|
|
|
- show: this.isCustomerMark,
|
|
|
- align: 'center'
|
|
|
- },
|
|
|
- {
|
|
|
- width: 120,
|
|
|
- prop: 'totalCount',
|
|
|
- label: '数量',
|
|
|
- slot: 'totalCount',
|
|
|
- headerSlot: 'headerTotalCount',
|
|
|
- align: 'center'
|
|
|
- },
|
|
|
- {
|
|
|
- width: 120,
|
|
|
- prop: 'availableCountBase',
|
|
|
- label: '库存数量',
|
|
|
- slot: 'availableCountBase',
|
|
|
- align: 'center'
|
|
|
- },
|
|
|
- {
|
|
|
- width: 160,
|
|
|
- prop: 'singlePrice',
|
|
|
- label: '单价',
|
|
|
- slot: 'singlePrice',
|
|
|
- headerSlot: 'headerSinglePrice',
|
|
|
- align: 'center',
|
|
|
- show: !this.detailType
|
|
|
- },
|
|
|
- {
|
|
|
- width: 120,
|
|
|
- prop: 'singleWeight',
|
|
|
- label: '单重',
|
|
|
- slot: 'singleWeight',
|
|
|
- // headerSlot: 'headerSingleWeight',
|
|
|
- align: 'center'
|
|
|
- },
|
|
|
- {
|
|
|
- width: 160,
|
|
|
- prop: 'customerExpectDeliveryDeadline',
|
|
|
- label: this.contractBookType == 1 ? '客户期望交期' : '交付日期',
|
|
|
- slot: 'customerExpectDeliveryDeadline',
|
|
|
- headerSlot: 'headerCustomerExpectDeliveryDeadline',
|
|
|
- align: 'center'
|
|
|
- },
|
|
|
- {
|
|
|
- width: 160,
|
|
|
- prop: 'produceDeliveryDeadline',
|
|
|
- label: '生产交付交期',
|
|
|
- slot: 'produceDeliveryDeadline',
|
|
|
- show: this.contractBookType == 1 ? true : false,
|
|
|
- align: 'center'
|
|
|
- },
|
|
|
- {
|
|
|
- width: 200,
|
|
|
- prop: 'productCategoryName',
|
|
|
- label: '类型',
|
|
|
- slot: 'productCategoryName',
|
|
|
- align: 'center'
|
|
|
- },
|
|
|
- {
|
|
|
- width: 160,
|
|
|
- prop: 'productBrand',
|
|
|
- label: '牌号',
|
|
|
- slot: 'productBrand',
|
|
|
- align: 'center'
|
|
|
- },
|
|
|
- {
|
|
|
- width: 120,
|
|
|
- prop: 'modelType',
|
|
|
- label: '型号',
|
|
|
- slot: 'modelType',
|
|
|
- align: 'center'
|
|
|
- },
|
|
|
- {
|
|
|
- width: 120,
|
|
|
- prop: 'specification',
|
|
|
- label: '规格',
|
|
|
- slot: 'specification',
|
|
|
- align: 'center'
|
|
|
- },
|
|
|
+ rules: {}
|
|
|
+ };
|
|
|
+ },
|
|
|
+ computed: {
|
|
|
+ canHandl() {
|
|
|
+ return this.form.datasource.length;
|
|
|
+ },
|
|
|
+ columns() {
|
|
|
+ return [
|
|
|
+ {
|
|
|
+ width: 45,
|
|
|
+ type: 'index',
|
|
|
+ columnKey: 'index',
|
|
|
+ align: 'center',
|
|
|
+ fixed: 'left'
|
|
|
+ },
|
|
|
+ {
|
|
|
+ width: 250,
|
|
|
+ prop: 'productName',
|
|
|
+ label: '名称',
|
|
|
+ slot: 'productName',
|
|
|
+ headerSlot: 'headerProductName',
|
|
|
+ align: 'center'
|
|
|
+ },
|
|
|
+ {
|
|
|
+ width: 120,
|
|
|
+ prop: 'productCode',
|
|
|
+ label: '编码',
|
|
|
+ slot: 'productCode',
|
|
|
+ align: 'center'
|
|
|
+ },
|
|
|
+ {
|
|
|
+ width: 200,
|
|
|
+ prop: 'customerMark',
|
|
|
+ label: '客户代号',
|
|
|
+ slot: 'customerMark',
|
|
|
+ headerSlot: 'headerCustomerMark',
|
|
|
+ show: this.isCustomerMark,
|
|
|
+ align: 'center'
|
|
|
+ },
|
|
|
+ {
|
|
|
+ width: 120,
|
|
|
+ prop: 'totalCount',
|
|
|
+ label: '数量',
|
|
|
+ slot: 'totalCount',
|
|
|
+ headerSlot: 'headerTotalCount',
|
|
|
+ align: 'center'
|
|
|
+ },
|
|
|
+ {
|
|
|
+ width: 120,
|
|
|
+ prop: 'availableCountBase',
|
|
|
+ label: '库存数量',
|
|
|
+ slot: 'availableCountBase',
|
|
|
+ align: 'center'
|
|
|
+ },
|
|
|
+ {
|
|
|
+ width: 160,
|
|
|
+ prop: 'singlePrice',
|
|
|
+ label: '单价',
|
|
|
+ slot: 'singlePrice',
|
|
|
+ headerSlot: 'headerSinglePrice',
|
|
|
+ align: 'center',
|
|
|
+ show: !this.detailType
|
|
|
+ },
|
|
|
+ {
|
|
|
+ width: 120,
|
|
|
+ prop: 'singleWeight',
|
|
|
+ label: '单重',
|
|
|
+ slot: 'singleWeight',
|
|
|
+ // headerSlot: 'headerSingleWeight',
|
|
|
+ align: 'center'
|
|
|
+ },
|
|
|
+ {
|
|
|
+ width: 160,
|
|
|
+ prop: 'customerExpectDeliveryDeadline',
|
|
|
+ label: this.contractBookType == 1 ? '客户期望交期' : '交付日期',
|
|
|
+ slot: 'customerExpectDeliveryDeadline',
|
|
|
+ headerSlot: 'headerCustomerExpectDeliveryDeadline',
|
|
|
+ align: 'center'
|
|
|
+ },
|
|
|
+ {
|
|
|
+ width: 160,
|
|
|
+ prop: 'produceDeliveryDeadline',
|
|
|
+ label: '生产交付交期',
|
|
|
+ slot: 'produceDeliveryDeadline',
|
|
|
+ show: this.contractBookType == 1 ? true : false,
|
|
|
+ align: 'center'
|
|
|
+ },
|
|
|
+ {
|
|
|
+ width: 200,
|
|
|
+ prop: 'productCategoryName',
|
|
|
+ label: '类型',
|
|
|
+ slot: 'productCategoryName',
|
|
|
+ align: 'center'
|
|
|
+ },
|
|
|
+ {
|
|
|
+ width: 160,
|
|
|
+ prop: 'productBrand',
|
|
|
+ label: '牌号',
|
|
|
+ slot: 'productBrand',
|
|
|
+ align: 'center'
|
|
|
+ },
|
|
|
+ {
|
|
|
+ width: 120,
|
|
|
+ prop: 'modelType',
|
|
|
+ label: '型号',
|
|
|
+ slot: 'modelType',
|
|
|
+ align: 'center'
|
|
|
+ },
|
|
|
+ {
|
|
|
+ width: 120,
|
|
|
+ prop: 'specification',
|
|
|
+ label: '规格',
|
|
|
+ slot: 'specification',
|
|
|
+ align: 'center'
|
|
|
+ },
|
|
|
|
|
|
- {
|
|
|
- width: 120,
|
|
|
- prop: 'measuringUnit',
|
|
|
- label: '计量单位',
|
|
|
- slot: 'measuringUnit',
|
|
|
- align: 'center'
|
|
|
- },
|
|
|
+ {
|
|
|
+ width: 120,
|
|
|
+ prop: 'measuringUnit',
|
|
|
+ label: '计量单位',
|
|
|
+ slot: 'measuringUnit',
|
|
|
+ align: 'center'
|
|
|
+ },
|
|
|
|
|
|
- {
|
|
|
- width: 120,
|
|
|
- prop: 'totalWeight',
|
|
|
- label: '总重',
|
|
|
- slot: 'totalWeight',
|
|
|
- align: 'center'
|
|
|
- },
|
|
|
- {
|
|
|
- width: 120,
|
|
|
- prop: 'weightUnit',
|
|
|
- label: '重量单位',
|
|
|
- slot: 'weightUnit',
|
|
|
- align: 'center'
|
|
|
- },
|
|
|
+ {
|
|
|
+ width: 120,
|
|
|
+ prop: 'totalWeight',
|
|
|
+ label: '总重',
|
|
|
+ slot: 'totalWeight',
|
|
|
+ align: 'center'
|
|
|
+ },
|
|
|
+ {
|
|
|
+ width: 120,
|
|
|
+ prop: 'weightUnit',
|
|
|
+ label: '重量单位',
|
|
|
+ slot: 'weightUnit',
|
|
|
+ align: 'center'
|
|
|
+ },
|
|
|
|
|
|
- {
|
|
|
- width: 160,
|
|
|
- prop: 'discountSinglePrice',
|
|
|
- label: '折让单价',
|
|
|
- align: 'center',
|
|
|
- show: !this.detailType,
|
|
|
+ {
|
|
|
+ width: 160,
|
|
|
+ prop: 'discountSinglePrice',
|
|
|
+ label: '折让单价',
|
|
|
+ align: 'center',
|
|
|
+ show: !this.detailType,
|
|
|
|
|
|
- formatter: (_row, _column, cellValue) => {
|
|
|
- return _row.discountSinglePrice
|
|
|
- ? Number(_row.discountSinglePrice).toFixed(2)
|
|
|
- : '';
|
|
|
- }
|
|
|
- },
|
|
|
- {
|
|
|
- width: 120,
|
|
|
- prop: 'totalPrice',
|
|
|
- label: '合计',
|
|
|
- slot: 'totalPrice',
|
|
|
- align: 'center',
|
|
|
- show: !this.detailType
|
|
|
- },
|
|
|
- {
|
|
|
- width: 160,
|
|
|
- prop: 'discountTotalPrice',
|
|
|
- label: '折让合计',
|
|
|
- align: 'center',
|
|
|
- show: !this.detailType,
|
|
|
- formatter: (_row, _column, cellValue) => {
|
|
|
- return _row.discountTotalPrice
|
|
|
- ? Number(_row.discountTotalPrice).toFixed(2)
|
|
|
- : '';
|
|
|
- }
|
|
|
- },
|
|
|
+ formatter: (_row, _column, cellValue) => {
|
|
|
+ return _row.discountSinglePrice
|
|
|
+ ? Number(_row.discountSinglePrice).toFixed(2)
|
|
|
+ : '';
|
|
|
+ }
|
|
|
+ },
|
|
|
+ {
|
|
|
+ width: 120,
|
|
|
+ prop: 'totalPrice',
|
|
|
+ label: '合计',
|
|
|
+ slot: 'totalPrice',
|
|
|
+ align: 'center',
|
|
|
+ show: !this.detailType
|
|
|
+ },
|
|
|
+ {
|
|
|
+ width: 160,
|
|
|
+ prop: 'discountTotalPrice',
|
|
|
+ label: '折让合计',
|
|
|
+ align: 'center',
|
|
|
+ show: !this.detailType,
|
|
|
+ formatter: (_row, _column, cellValue) => {
|
|
|
+ return _row.discountTotalPrice
|
|
|
+ ? Number(_row.discountTotalPrice).toFixed(2)
|
|
|
+ : '';
|
|
|
+ }
|
|
|
+ },
|
|
|
|
|
|
- // {
|
|
|
- // width: 80,
|
|
|
- // prop: 'deliveryDays',
|
|
|
- // label: '交期(天)',
|
|
|
- // slot: 'deliveryDays'
|
|
|
- // },
|
|
|
- // {
|
|
|
- // width: 160,
|
|
|
- // prop: 'deliveryDeadline',
|
|
|
- // label: '交期截止日期',
|
|
|
- // slot: 'deliveryDeadline',
|
|
|
- // show: this.isDeliveryDeadline
|
|
|
- // },
|
|
|
+ // {
|
|
|
+ // width: 80,
|
|
|
+ // prop: 'deliveryDays',
|
|
|
+ // label: '交期(天)',
|
|
|
+ // slot: 'deliveryDays'
|
|
|
+ // },
|
|
|
+ // {
|
|
|
+ // width: 160,
|
|
|
+ // prop: 'deliveryDeadline',
|
|
|
+ // label: '交期截止日期',
|
|
|
+ // slot: 'deliveryDeadline',
|
|
|
+ // show: this.isDeliveryDeadline
|
|
|
+ // },
|
|
|
|
|
|
- {
|
|
|
- width: 200,
|
|
|
- prop: 'guaranteePeriod',
|
|
|
- label: '质保期',
|
|
|
- slot: 'guaranteePeriod',
|
|
|
- align: 'center'
|
|
|
- },
|
|
|
- {
|
|
|
- width: 200,
|
|
|
- prop: 'guaranteePeriodDeadline',
|
|
|
- label: '质保期截止日期',
|
|
|
- slot: 'guaranteePeriodDeadline',
|
|
|
- show: this.isGuaranteePeriod,
|
|
|
- align: 'center'
|
|
|
- },
|
|
|
- // {
|
|
|
- // width: 120,
|
|
|
- // prop: 'guaranteePeriodUnitCode',
|
|
|
- // label: '',
|
|
|
- // slot: 'guaranteePeriodUnitCode'
|
|
|
- // },
|
|
|
- {
|
|
|
- width: 220,
|
|
|
- prop: 'customerReqFiles',
|
|
|
- label: '客户需求',
|
|
|
- slot: 'customerReqFiles',
|
|
|
- align: 'center'
|
|
|
- },
|
|
|
- {
|
|
|
- width: 130,
|
|
|
- prop: 'technicalAnswerName',
|
|
|
- label: '技术答疑人',
|
|
|
- slot: 'technicalAnswerName',
|
|
|
- align: 'center'
|
|
|
- },
|
|
|
- {
|
|
|
- width: 220,
|
|
|
- prop: 'technicalParams',
|
|
|
- label: '技术参数',
|
|
|
- slot: 'technicalParams',
|
|
|
- align: 'center'
|
|
|
- },
|
|
|
- {
|
|
|
- width: 240,
|
|
|
- prop: 'technicalDrawings',
|
|
|
- label: '技术图纸',
|
|
|
- slot: 'technicalDrawings',
|
|
|
- align: 'center'
|
|
|
- },
|
|
|
- {
|
|
|
- width: 240,
|
|
|
- prop: 'technologyRouteName',
|
|
|
- label: '工艺路线',
|
|
|
- slot: 'technologyRouteName',
|
|
|
- show: this.contractBookType == 1 ? true : false,
|
|
|
- align: 'center'
|
|
|
- },
|
|
|
- {
|
|
|
- width: 240,
|
|
|
- prop: 'industryArtFiles',
|
|
|
- label: '工艺附件',
|
|
|
- slot: 'industryArtFiles',
|
|
|
- align: 'center'
|
|
|
- },
|
|
|
- {
|
|
|
- width: 240,
|
|
|
- prop: 'otherFiles',
|
|
|
- label: '其他附件',
|
|
|
- slot: 'otherFiles',
|
|
|
- align: 'center'
|
|
|
- },
|
|
|
- {
|
|
|
- width: 220,
|
|
|
- prop: 'remark',
|
|
|
- label: '备注',
|
|
|
- slot: 'remark',
|
|
|
- align: 'center'
|
|
|
- },
|
|
|
- {
|
|
|
- columnKey: 'action',
|
|
|
- label: '操作',
|
|
|
- width: 120,
|
|
|
- align: 'center',
|
|
|
- resizable: false,
|
|
|
- slot: 'action',
|
|
|
- fixed: 'right',
|
|
|
- showOverflowTooltip: true
|
|
|
- }
|
|
|
- ];
|
|
|
- }
|
|
|
+ {
|
|
|
+ width: 200,
|
|
|
+ prop: 'guaranteePeriod',
|
|
|
+ label: '质保期',
|
|
|
+ slot: 'guaranteePeriod',
|
|
|
+ align: 'center'
|
|
|
+ },
|
|
|
+ {
|
|
|
+ width: 200,
|
|
|
+ prop: 'guaranteePeriodDeadline',
|
|
|
+ label: '质保期截止日期',
|
|
|
+ slot: 'guaranteePeriodDeadline',
|
|
|
+ show: this.isGuaranteePeriod,
|
|
|
+ align: 'center'
|
|
|
+ },
|
|
|
+ // {
|
|
|
+ // width: 120,
|
|
|
+ // prop: 'guaranteePeriodUnitCode',
|
|
|
+ // label: '',
|
|
|
+ // slot: 'guaranteePeriodUnitCode'
|
|
|
+ // },
|
|
|
+ {
|
|
|
+ width: 220,
|
|
|
+ prop: 'customerReqFiles',
|
|
|
+ label: '客户需求',
|
|
|
+ slot: 'customerReqFiles',
|
|
|
+ align: 'center'
|
|
|
+ },
|
|
|
+ {
|
|
|
+ width: 130,
|
|
|
+ prop: 'technicalAnswerName',
|
|
|
+ label: '技术答疑人',
|
|
|
+ slot: 'technicalAnswerName',
|
|
|
+ align: 'center'
|
|
|
+ },
|
|
|
+ {
|
|
|
+ width: 220,
|
|
|
+ prop: 'technicalParams',
|
|
|
+ label: '技术参数',
|
|
|
+ slot: 'technicalParams',
|
|
|
+ align: 'center'
|
|
|
+ },
|
|
|
+ {
|
|
|
+ width: 240,
|
|
|
+ prop: 'technicalDrawings',
|
|
|
+ label: '技术图纸',
|
|
|
+ slot: 'technicalDrawings',
|
|
|
+ align: 'center'
|
|
|
+ },
|
|
|
+ {
|
|
|
+ width: 240,
|
|
|
+ prop: 'technologyRouteName',
|
|
|
+ label: '工艺路线',
|
|
|
+ slot: 'technologyRouteName',
|
|
|
+ show: this.contractBookType == 1 ? true : false,
|
|
|
+ align: 'center'
|
|
|
+ },
|
|
|
+ {
|
|
|
+ width: 240,
|
|
|
+ prop: 'industryArtFiles',
|
|
|
+ label: '工艺附件',
|
|
|
+ slot: 'industryArtFiles',
|
|
|
+ align: 'center'
|
|
|
+ },
|
|
|
+ {
|
|
|
+ width: 240,
|
|
|
+ prop: 'otherFiles',
|
|
|
+ label: '其他附件',
|
|
|
+ slot: 'otherFiles',
|
|
|
+ align: 'center'
|
|
|
+ },
|
|
|
+ {
|
|
|
+ width: 220,
|
|
|
+ prop: 'remark',
|
|
|
+ label: '备注',
|
|
|
+ slot: 'remark',
|
|
|
+ align: 'center'
|
|
|
+ },
|
|
|
+ {
|
|
|
+ columnKey: 'action',
|
|
|
+ label: '操作',
|
|
|
+ width: 120,
|
|
|
+ align: 'center',
|
|
|
+ resizable: false,
|
|
|
+ slot: 'action',
|
|
|
+ fixed: 'right',
|
|
|
+ showOverflowTooltip: true
|
|
|
+ }
|
|
|
+ ];
|
|
|
+ }
|
|
|
+ },
|
|
|
+
|
|
|
+ watch: {
|
|
|
+ contractBookType(n) {
|
|
|
+ this.columns.forEach((item) => {
|
|
|
+ if (item.label == '生产交付交期' || item.label == '工艺路线') {
|
|
|
+ item.show = n == 1 ? true : false;
|
|
|
+ }
|
|
|
+ if (item.prop == 'customerExpectDeliveryDeadline') {
|
|
|
+ item.label = n == 1 ? '客户期望交期' : '交付日期';
|
|
|
+ }
|
|
|
+ });
|
|
|
+ this.$refs.table.reRenderTable();
|
|
|
+ }
|
|
|
+ },
|
|
|
+
|
|
|
+ methods: {
|
|
|
+ positiveIntegerReg() {
|
|
|
+ return positiveIntegerReg;
|
|
|
+ },
|
|
|
+ downloadFile(file) {
|
|
|
+ getFile({ objectName: file.storePath }, file.name);
|
|
|
},
|
|
|
+ openVersion(index) {
|
|
|
+ this.$refs.versionRefs.open(index);
|
|
|
+ },
|
|
|
+ //工艺路线
|
|
|
+ changeProduct(data, index) {
|
|
|
+ this.$set(this.form.datasource[index], 'technologyRouteName', data.name);
|
|
|
+ this.$set(this.form.datasource[index], 'technologyRouteId', data.id);
|
|
|
+ },
|
|
|
+ setDeliveryDays(row, index, type, isAll) {
|
|
|
+ if (isAll) {
|
|
|
+ this.form.datasource.forEach((item, i) => {
|
|
|
+ // if (item.deliveryDays) {
|
|
|
+ // this.$set(
|
|
|
+ // this.form.datasource[i],
|
|
|
+ // 'deliveryDeadline',
|
|
|
+ // this.setDay(item.deliveryDays)
|
|
|
+ // );
|
|
|
+ // }
|
|
|
+ // if (item.guaranteePeriodUnitCode) {
|
|
|
+ let guaranteePeriodUnitName = this.guaranteePeriodUnit(
|
|
|
+ item.guaranteePeriodUnitCode
|
|
|
+ );
|
|
|
|
|
|
- watch: {
|
|
|
- contractBookType(n) {
|
|
|
- this.columns.forEach((item) => {
|
|
|
- if (item.label == '生产交付交期' || item.label == '工艺路线') {
|
|
|
- item.show = n == 1 ? true : false;
|
|
|
- }
|
|
|
- if (item.prop == 'customerExpectDeliveryDeadline') {
|
|
|
- item.label = n == 1 ? '客户期望交期' : '交付日期';
|
|
|
- }
|
|
|
+ this.$set(
|
|
|
+ this.form.datasource[i],
|
|
|
+ 'guaranteePeriodDeadline',
|
|
|
+ guaranteePeriodUnitName != 'second'
|
|
|
+ ? this.setDay(item.guaranteePeriod, guaranteePeriodUnitName)
|
|
|
+ : ''
|
|
|
+ );
|
|
|
+ // }
|
|
|
});
|
|
|
- this.$refs.table.reRenderTable();
|
|
|
+ return;
|
|
|
}
|
|
|
- },
|
|
|
-
|
|
|
- methods: {
|
|
|
- positiveIntegerReg() {
|
|
|
- return positiveIntegerReg;
|
|
|
- },
|
|
|
- downloadFile(file) {
|
|
|
- getFile({ objectName: file.storePath }, file.name);
|
|
|
- },
|
|
|
- openVersion(index) {
|
|
|
- this.$refs.versionRefs.open(index);
|
|
|
- },
|
|
|
- //工艺路线
|
|
|
- changeProduct(data, index) {
|
|
|
+ // if (type == 'deliveryDays') {
|
|
|
+ // this.$set(
|
|
|
+ // this.form.datasource[index],
|
|
|
+ // 'deliveryDeadline',
|
|
|
+ // this.setDay(row.deliveryDays)
|
|
|
+ // );
|
|
|
+ // }
|
|
|
+ if (type == 'guaranteePeriod') {
|
|
|
+ let guaranteePeriodUnitName = this.guaranteePeriodUnit(
|
|
|
+ row.guaranteePeriodUnitCode
|
|
|
+ );
|
|
|
this.$set(
|
|
|
this.form.datasource[index],
|
|
|
- 'technologyRouteName',
|
|
|
- data.name
|
|
|
+ 'guaranteePeriodDeadline',
|
|
|
+ guaranteePeriodUnitName != 'second'
|
|
|
+ ? this.setDay(row.guaranteePeriod, guaranteePeriodUnitName)
|
|
|
+ : ''
|
|
|
);
|
|
|
- this.$set(this.form.datasource[index], 'technologyRouteId', data.id);
|
|
|
- },
|
|
|
- setDeliveryDays(row, index, type, isAll) {
|
|
|
- if (isAll) {
|
|
|
- this.form.datasource.forEach((item, i) => {
|
|
|
- // if (item.deliveryDays) {
|
|
|
- // this.$set(
|
|
|
- // this.form.datasource[i],
|
|
|
- // 'deliveryDeadline',
|
|
|
- // this.setDay(item.deliveryDays)
|
|
|
- // );
|
|
|
- // }
|
|
|
- // if (item.guaranteePeriodUnitCode) {
|
|
|
- let guaranteePeriodUnitName = this.guaranteePeriodUnit(
|
|
|
- item.guaranteePeriodUnitCode
|
|
|
- );
|
|
|
+ }
|
|
|
+ },
|
|
|
+ guaranteePeriodUnit(code) {
|
|
|
+ return code == 3
|
|
|
+ ? 'day'
|
|
|
+ : code == 4
|
|
|
+ ? 'month'
|
|
|
+ : code == 5
|
|
|
+ ? 'year'
|
|
|
+ : 'second';
|
|
|
+ },
|
|
|
+ setDay(addDay, dateType = 'day') {
|
|
|
+ return dayjs(this.contractStartDate || new Date())
|
|
|
+ .add(addDay, dateType)
|
|
|
+ .format('YYYY-MM-DD');
|
|
|
+ },
|
|
|
+ // 返回列表数据
|
|
|
+ getTableValue() {
|
|
|
+ let comitDatasource = this.form.datasource;
|
|
|
+ if (comitDatasource.length === 0) return [];
|
|
|
+ comitDatasource.forEach((v) => {
|
|
|
+ v.detailType = this.detailType;
|
|
|
|
|
|
- this.$set(
|
|
|
- this.form.datasource[i],
|
|
|
- 'guaranteePeriodDeadline',
|
|
|
- guaranteePeriodUnitName != 'second'
|
|
|
- ? this.setDay(item.guaranteePeriod, guaranteePeriodUnitName)
|
|
|
- : ''
|
|
|
- );
|
|
|
- // }
|
|
|
- });
|
|
|
- return;
|
|
|
+ if (v.guaranteePeriodUnitCode) {
|
|
|
+ v.guaranteePeriodUnitName = this.getDictValue(
|
|
|
+ '保质期单位',
|
|
|
+ v.guaranteePeriodUnitCode
|
|
|
+ );
|
|
|
}
|
|
|
- // if (type == 'deliveryDays') {
|
|
|
- // this.$set(
|
|
|
- // this.form.datasource[index],
|
|
|
- // 'deliveryDeadline',
|
|
|
- // this.setDay(row.deliveryDays)
|
|
|
- // );
|
|
|
- // }
|
|
|
- if (type == 'guaranteePeriod') {
|
|
|
- let guaranteePeriodUnitName = this.guaranteePeriodUnit(
|
|
|
- row.guaranteePeriodUnitCode
|
|
|
+ v.technicalDrawings = v.technicalDrawings ? v.technicalDrawings : [];
|
|
|
+ v.customerReqFiles = v.customerReqFiles || [];
|
|
|
+ v.industryArtFiles = v.industryArtFiles || [];
|
|
|
+ v.otherFiles = v.otherFiles || [];
|
|
|
+ });
|
|
|
+ return comitDatasource;
|
|
|
+ },
|
|
|
+ getPrice() {
|
|
|
+ return [this.allPrice, this.form.discountTotalPrice];
|
|
|
+ },
|
|
|
+ //改变数量
|
|
|
+ changeCount(row, index) {
|
|
|
+ if (this.detailType) {
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ this.singleWeightChange(row, index);
|
|
|
+ this.getTotalPrice();
|
|
|
+ },
|
|
|
+ //计算总金额
|
|
|
+ getTotalPrice(row) {
|
|
|
+ if (this.form.datasource.length) {
|
|
|
+ let sum = 0;
|
|
|
+ sum = this.getNumTotalPrice();
|
|
|
+ let allsum = sum.toFixed(2);
|
|
|
+ this.allPrice = allsum;
|
|
|
+ this.form.discountTotalPrice = allsum;
|
|
|
+ this.$store.commit('concact/setDiscountAmount', allsum);
|
|
|
+ this.$store.commit('order/setAllcountAmount', allsum);
|
|
|
+ this.$emit('orderDiscountAmount', this.allPrice);
|
|
|
+ this.$refs.table.reload();
|
|
|
+ return allsum;
|
|
|
+ } else {
|
|
|
+ this.allPrice = 0.0;
|
|
|
+ this.form.discountTotalPrice = 0.0;
|
|
|
+ this.$emit('orderDiscountAmount', 0);
|
|
|
+ return 0.0;
|
|
|
+ }
|
|
|
+ },
|
|
|
+ //计算总金额
|
|
|
+ getNumTotalPrice(sum = 0) {
|
|
|
+ this.form.datasource.forEach((r, index) => {
|
|
|
+ this.$set(
|
|
|
+ r,
|
|
|
+ 'discountSinglePrice',
|
|
|
+ r.singlePrice ? Number(r.singlePrice) : ''
|
|
|
+ );
|
|
|
+ if (r.singlePrice) {
|
|
|
+ //&& r.totalCount
|
|
|
+ r.totalPrice = this.getAllPrice(r);
|
|
|
+ r.discountTotalPrice = this.getDiscountTotalPrice(r);
|
|
|
+ this.$set(
|
|
|
+ this.form.datasource[index],
|
|
|
+ 'totalPrice',
|
|
|
+ Number(r.totalPrice)
|
|
|
);
|
|
|
this.$set(
|
|
|
this.form.datasource[index],
|
|
|
- 'guaranteePeriodDeadline',
|
|
|
- guaranteePeriodUnitName != 'second'
|
|
|
- ? this.setDay(row.guaranteePeriod, guaranteePeriodUnitName)
|
|
|
- : ''
|
|
|
+ 'discountTotalPrice',
|
|
|
+ Number(r.discountTotalPrice)
|
|
|
);
|
|
|
+ sum += Number(r.totalPrice);
|
|
|
+ } else {
|
|
|
+ this.$set(r, 'totalPrice', 0);
|
|
|
+ this.$set(r, 'discountTotalPrice', 0);
|
|
|
}
|
|
|
- },
|
|
|
- guaranteePeriodUnit(code) {
|
|
|
- return code == 3
|
|
|
- ? 'day'
|
|
|
- : code == 4
|
|
|
- ? 'month'
|
|
|
- : code == 5
|
|
|
- ? 'year'
|
|
|
- : 'second';
|
|
|
- },
|
|
|
- setDay(addDay, dateType = 'day') {
|
|
|
- return dayjs(this.contractStartDate || new Date())
|
|
|
- .add(addDay, dateType)
|
|
|
- .format('YYYY-MM-DD');
|
|
|
- },
|
|
|
- // 返回列表数据
|
|
|
- getTableValue() {
|
|
|
- let comitDatasource = this.form.datasource;
|
|
|
- if (comitDatasource.length === 0) return [];
|
|
|
- comitDatasource.forEach((v) => {
|
|
|
- v.detailType = this.detailType;
|
|
|
-
|
|
|
- if (v.guaranteePeriodUnitCode) {
|
|
|
- v.guaranteePeriodUnitName = this.getDictValue(
|
|
|
- '保质期单位',
|
|
|
- v.guaranteePeriodUnitCode
|
|
|
- );
|
|
|
- }
|
|
|
- v.technicalDrawings = v.technicalDrawings ? v.technicalDrawings : [];
|
|
|
- v.customerReqFiles = v.customerReqFiles || [];
|
|
|
- v.industryArtFiles = v.industryArtFiles || [];
|
|
|
- v.otherFiles = v.otherFiles || [];
|
|
|
- });
|
|
|
- return comitDatasource;
|
|
|
- },
|
|
|
- getPrice() {
|
|
|
- return [this.allPrice, this.form.discountTotalPrice];
|
|
|
- },
|
|
|
- //改变数量
|
|
|
- changeCount(row, index) {
|
|
|
- if (this.detailType) {
|
|
|
+ });
|
|
|
+ return isNaN(sum) ? 0 : sum;
|
|
|
+ },
|
|
|
+ //更新优惠后总金额
|
|
|
+ discountInput(val) {
|
|
|
+ this.$store.commit('concact/setDiscountAmount', val);
|
|
|
+ },
|
|
|
+ //设置优惠后总金额修改产品单价
|
|
|
+ discountInputByOrder(val) {
|
|
|
+ if (val > this.allPrice) {
|
|
|
+ this.form.discountTotalPrice = this.allPrice;
|
|
|
+ this.$message.warning('优惠金额不能大于总计金额');
|
|
|
+ } else {
|
|
|
+ this.form.discountTotalPrice = val;
|
|
|
+ }
|
|
|
+ //获取优惠金额和总计的差价
|
|
|
+ this.form.datasource.forEach((item) => {
|
|
|
+ if (val === 0) {
|
|
|
+ item.discountTotalPrice = 0;
|
|
|
+ item.discountSinglePrice = 0;
|
|
|
return;
|
|
|
}
|
|
|
- this.singleWeightChange(row, index);
|
|
|
- this.getTotalPrice();
|
|
|
- },
|
|
|
- //计算总金额
|
|
|
- getTotalPrice(row) {
|
|
|
- if (this.form.datasource.length) {
|
|
|
- let sum = 0;
|
|
|
- sum = this.getNumTotalPrice();
|
|
|
- let allsum = sum.toFixed(2);
|
|
|
- this.allPrice = allsum;
|
|
|
- this.form.discountTotalPrice = allsum;
|
|
|
- this.$store.commit('concact/setDiscountAmount', allsum);
|
|
|
- this.$store.commit('order/setAllcountAmount', allsum);
|
|
|
- this.$emit('orderDiscountAmount', this.allPrice);
|
|
|
- this.$refs.table.reload();
|
|
|
- return allsum;
|
|
|
- } else {
|
|
|
- this.allPrice = 0.0;
|
|
|
- this.form.discountTotalPrice = 0.0;
|
|
|
- this.$emit('orderDiscountAmount', 0);
|
|
|
- return 0.0;
|
|
|
+ if (!val) {
|
|
|
+ item.discountTotalPrice = item.totalPrice;
|
|
|
+ item.discountSinglePrice = item.singlePrice;
|
|
|
+ return;
|
|
|
}
|
|
|
- },
|
|
|
- //计算总金额
|
|
|
- getNumTotalPrice(sum = 0) {
|
|
|
- this.form.datasource.forEach((r, index) => {
|
|
|
- this.$set(
|
|
|
- r,
|
|
|
- 'discountSinglePrice',
|
|
|
- r.singlePrice ? Number(r.singlePrice) : ''
|
|
|
+ //获取折让单价
|
|
|
+ item.discountSinglePrice = this.getDiscountSinglePrice(item);
|
|
|
+ item.discountTotalPrice = this.getDiscountTotalPrice(item);
|
|
|
+ });
|
|
|
+ this.$refs.table.reload();
|
|
|
+ this.$store.commit('concact/setDiscountAmount', val);
|
|
|
+ },
|
|
|
+ //获取折让单价
|
|
|
+ getDiscountSinglePrice(row) {
|
|
|
+ let num =
|
|
|
+ (Number(this.form.discountTotalPrice) / Number(this.allPrice)) *
|
|
|
+ Number(row.singlePrice);
|
|
|
+ return isNaN(num) ? 0 : num;
|
|
|
+ },
|
|
|
+ //获取合计
|
|
|
+ getAllPrice(row) {
|
|
|
+ let num = 0;
|
|
|
+ switch (this.pricingWay) {
|
|
|
+ case 1: //按数量计价计算总金额
|
|
|
+ num = Number(row.singlePrice) * Number(row.totalCount);
|
|
|
+ break;
|
|
|
+ case 2: //按重量计价计算总金额
|
|
|
+ num =
|
|
|
+ Number(row.singlePrice) *
|
|
|
+ Number(row.totalCount) *
|
|
|
+ Number(row.singleWeight);
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ return isNaN(num) ? '' : num.toFixed(2);
|
|
|
+ },
|
|
|
+ //获取折让合计
|
|
|
+ getDiscountTotalPrice(row) {
|
|
|
+ let num = 0;
|
|
|
+ switch (this.pricingWay) {
|
|
|
+ case 1: //按数量计价计算折让合计
|
|
|
+ num = Number(row.discountSinglePrice) * (Number(row.totalCount) || 0);
|
|
|
+ break;
|
|
|
+ case 2: //按重量计价计算折让合计
|
|
|
+ num =
|
|
|
+ Number(row.discountSinglePrice) *
|
|
|
+ (Number(row.totalCount) || 0) *
|
|
|
+ (Number(row.singleWeight) || 0);
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ return isNaN(num) ? 0 : num.toFixed(2);
|
|
|
+ },
|
|
|
+ //带料 产出品
|
|
|
+ putTableValueNew(data) {
|
|
|
+ this.form.datasource = data;
|
|
|
+ },
|
|
|
+ //修改回显
|
|
|
+ putTableValue(data) {
|
|
|
+ let productList =
|
|
|
+ (data &&
|
|
|
+ (data.quoteProductList || data.productList || data.detailList)) ||
|
|
|
+ [];
|
|
|
+ if (productList) {
|
|
|
+ productList.forEach((item) => {
|
|
|
+ item.guaranteePeriodUnitCode = item.guaranteePeriodUnitCode
|
|
|
+ ? item.guaranteePeriodUnitCode + ''
|
|
|
+ : '';
|
|
|
+ // if (item.deliveryDays) {
|
|
|
+ // item['deliveryDeadline'] =
|
|
|
+ // item['deliveryDeadline'] || this.setDay(item.deliveryDays);
|
|
|
+ // }
|
|
|
+ let guaranteePeriodUnitName = this.guaranteePeriodUnit(
|
|
|
+ item.guaranteePeriodUnitCode
|
|
|
);
|
|
|
- if (r.singlePrice) {
|
|
|
- //&& r.totalCount
|
|
|
- r.totalPrice = this.getAllPrice(r);
|
|
|
- r.discountTotalPrice = this.getDiscountTotalPrice(r);
|
|
|
- this.$set(
|
|
|
- this.form.datasource[index],
|
|
|
- 'totalPrice',
|
|
|
- Number(r.totalPrice)
|
|
|
- );
|
|
|
- this.$set(
|
|
|
- this.form.datasource[index],
|
|
|
- 'discountTotalPrice',
|
|
|
- Number(r.discountTotalPrice)
|
|
|
- );
|
|
|
- sum += Number(r.totalPrice);
|
|
|
- } else {
|
|
|
- this.$set(r, 'totalPrice', 0);
|
|
|
- this.$set(r, 'discountTotalPrice', 0);
|
|
|
- }
|
|
|
- });
|
|
|
- return isNaN(sum) ? 0 : sum;
|
|
|
- },
|
|
|
- //更新优惠后总金额
|
|
|
- discountInput(val) {
|
|
|
- this.$store.commit('concact/setDiscountAmount', val);
|
|
|
- },
|
|
|
- //设置优惠后总金额修改产品单价
|
|
|
- discountInputByOrder(val) {
|
|
|
- if (val > this.allPrice) {
|
|
|
- this.form.discountTotalPrice = this.allPrice;
|
|
|
- this.$message.warning('优惠金额不能大于总计金额');
|
|
|
- } else {
|
|
|
- this.form.discountTotalPrice = val;
|
|
|
- }
|
|
|
- //获取优惠金额和总计的差价
|
|
|
- this.form.datasource.forEach((item) => {
|
|
|
- if (val === 0) {
|
|
|
- item.discountTotalPrice = 0;
|
|
|
- item.discountSinglePrice = 0;
|
|
|
- return;
|
|
|
- }
|
|
|
- if (!val) {
|
|
|
- item.discountTotalPrice = item.totalPrice;
|
|
|
- item.discountSinglePrice = item.singlePrice;
|
|
|
- return;
|
|
|
+ if (item.guaranteePeriod && item.guaranteePeriodUnitCode) {
|
|
|
+ item['guaranteePeriodDeadline'] =
|
|
|
+ item['guaranteePeriodDeadline'] ||
|
|
|
+ guaranteePeriodUnitName != 'second'
|
|
|
+ ? this.setDay(item.guaranteePeriod, guaranteePeriodUnitName)
|
|
|
+ : '';
|
|
|
}
|
|
|
- //获取折让单价
|
|
|
- item.discountSinglePrice = this.getDiscountSinglePrice(item);
|
|
|
- item.discountTotalPrice = this.getDiscountTotalPrice(item);
|
|
|
});
|
|
|
- this.$refs.table.reload();
|
|
|
- this.$store.commit('concact/setDiscountAmount', val);
|
|
|
- },
|
|
|
- //获取折让单价
|
|
|
- getDiscountSinglePrice(row) {
|
|
|
- let num =
|
|
|
- (Number(this.form.discountTotalPrice) / Number(this.allPrice)) *
|
|
|
- Number(row.singlePrice);
|
|
|
- return isNaN(num) ? 0 : num;
|
|
|
- },
|
|
|
- //获取合计
|
|
|
- getAllPrice(row) {
|
|
|
- let num = 0;
|
|
|
- switch (this.pricingWay) {
|
|
|
- case 1: //按数量计价计算总金额
|
|
|
- num = Number(row.singlePrice) * Number(row.totalCount);
|
|
|
- break;
|
|
|
- case 2: //按重量计价计算总金额
|
|
|
- num =
|
|
|
- Number(row.singlePrice) *
|
|
|
- Number(row.totalCount) *
|
|
|
- Number(row.singleWeight);
|
|
|
- break;
|
|
|
- }
|
|
|
- return isNaN(num) ? '' : num.toFixed(2);
|
|
|
- },
|
|
|
- //获取折让合计
|
|
|
- getDiscountTotalPrice(row) {
|
|
|
- let num = 0;
|
|
|
- switch (this.pricingWay) {
|
|
|
- case 1: //按数量计价计算折让合计
|
|
|
- num =
|
|
|
- Number(row.discountSinglePrice) * (Number(row.totalCount) || 0);
|
|
|
- break;
|
|
|
- case 2: //按重量计价计算折让合计
|
|
|
- num =
|
|
|
- Number(row.discountSinglePrice) *
|
|
|
- (Number(row.totalCount) || 0) *
|
|
|
- (Number(row.singleWeight) || 0);
|
|
|
- break;
|
|
|
- }
|
|
|
- return isNaN(num) ? 0 : num.toFixed(2);
|
|
|
- },
|
|
|
- //带料 产出品
|
|
|
- putTableValueNew(data) {
|
|
|
- this.form.datasource = data;
|
|
|
- },
|
|
|
- //修改回显
|
|
|
- putTableValue(data) {
|
|
|
- let productList =
|
|
|
- (data &&
|
|
|
- (data.quoteProductList || data.productList || data.detailList)) ||
|
|
|
- [];
|
|
|
- if (productList) {
|
|
|
- productList.forEach((item) => {
|
|
|
- item.guaranteePeriodUnitCode = item.guaranteePeriodUnitCode
|
|
|
- ? item.guaranteePeriodUnitCode + ''
|
|
|
- : '';
|
|
|
- // if (item.deliveryDays) {
|
|
|
- // item['deliveryDeadline'] =
|
|
|
- // item['deliveryDeadline'] || this.setDay(item.deliveryDays);
|
|
|
- // }
|
|
|
- let guaranteePeriodUnitName = this.guaranteePeriodUnit(
|
|
|
- item.guaranteePeriodUnitCode
|
|
|
- );
|
|
|
- if (item.guaranteePeriod && item.guaranteePeriodUnitCode) {
|
|
|
- item['guaranteePeriodDeadline'] =
|
|
|
- item['guaranteePeriodDeadline'] ||
|
|
|
- guaranteePeriodUnitName != 'second'
|
|
|
- ? this.setDay(item.guaranteePeriod, guaranteePeriodUnitName)
|
|
|
- : '';
|
|
|
- }
|
|
|
- });
|
|
|
- this.form.datasource = productList;
|
|
|
- this.allPrice = data?.contractVO?.totalPrice;
|
|
|
- // this.getTotalPrice();
|
|
|
+ this.form.datasource = productList;
|
|
|
+ this.allPrice = data?.contractVO?.totalPrice;
|
|
|
+ // this.getTotalPrice();
|
|
|
|
|
|
- this.form.discountTotalPrice = data?.contractVO?.discountTotalPrice;
|
|
|
+ this.form.discountTotalPrice = data?.contractVO?.discountTotalPrice;
|
|
|
|
|
|
- // this.discountInput(data?.contractVO?.discountTotalPrice);
|
|
|
- }
|
|
|
- },
|
|
|
- //修改订单未选择合同时回显
|
|
|
- putTableValueByOrder(row) {
|
|
|
- let data = { ...row };
|
|
|
- let productList = (data && data.productList) || [];
|
|
|
- if (productList) {
|
|
|
- productList.forEach((item) => {
|
|
|
- item.guaranteePeriodUnitCode = item.guaranteePeriodUnitCode
|
|
|
- ? item.guaranteePeriodUnitCode + ''
|
|
|
- : '';
|
|
|
- // if (item.deliveryDays) {
|
|
|
- // item['deliveryDeadline'] =
|
|
|
- // item['deliveryDeadline'] || this.setDay(item.deliveryDays);
|
|
|
- // }
|
|
|
- let guaranteePeriodUnitName = this.guaranteePeriodUnit(
|
|
|
- item.guaranteePeriodUnitCode
|
|
|
- );
|
|
|
- if (item.guaranteePeriod && item.guaranteePeriodUnitCode) {
|
|
|
- item['guaranteePeriodDeadline'] =
|
|
|
- item['guaranteePeriodDeadline'] ||
|
|
|
- guaranteePeriodUnitName != 'second'
|
|
|
- ? this.setDay(item.guaranteePeriod, guaranteePeriodUnitName)
|
|
|
- : '';
|
|
|
- }
|
|
|
- });
|
|
|
- this.form.datasource = productList;
|
|
|
- this.allPrice = data.totalAmount;
|
|
|
- this.form.discountTotalPrice = data.payAmount;
|
|
|
- }
|
|
|
- },
|
|
|
- //计算单重
|
|
|
- singleWeightChange(row, index) {
|
|
|
- if (row && row.singleWeight && row.totalCount) {
|
|
|
- row.totalWeight = (row.singleWeight * row.totalCount).toFixed(2) || 0;
|
|
|
- this.$set(
|
|
|
- this.form.datasource[index],
|
|
|
- 'totalWeight',
|
|
|
- row.totalWeight
|
|
|
+ // this.discountInput(data?.contractVO?.discountTotalPrice);
|
|
|
+ }
|
|
|
+ },
|
|
|
+ //修改订单未选择合同时回显
|
|
|
+ putTableValueByOrder(row) {
|
|
|
+ let data = { ...row };
|
|
|
+ let productList = (data && data.productList) || [];
|
|
|
+ if (productList) {
|
|
|
+ productList.forEach((item) => {
|
|
|
+ item.guaranteePeriodUnitCode = item.guaranteePeriodUnitCode
|
|
|
+ ? item.guaranteePeriodUnitCode + ''
|
|
|
+ : '';
|
|
|
+ // if (item.deliveryDays) {
|
|
|
+ // item['deliveryDeadline'] =
|
|
|
+ // item['deliveryDeadline'] || this.setDay(item.deliveryDays);
|
|
|
+ // }
|
|
|
+ let guaranteePeriodUnitName = this.guaranteePeriodUnit(
|
|
|
+ item.guaranteePeriodUnitCode
|
|
|
);
|
|
|
- } else {
|
|
|
- this.$set(this.form.datasource[index], 'totalWeight', '');
|
|
|
- }
|
|
|
- if (this.pricingWay == 2) {
|
|
|
- this.getTotalPrice(row);
|
|
|
- }
|
|
|
- },
|
|
|
- //选择产品
|
|
|
- handParent(row, index) {
|
|
|
- let item = {
|
|
|
- id: row.productCode
|
|
|
- };
|
|
|
- this.$refs.productListRef.open(item, index);
|
|
|
- },
|
|
|
- //选择技术人回调
|
|
|
- changeAnswer(obj, idx) {
|
|
|
- this.$set(this.form.datasource[idx], 'technicalAnswerId', obj.id);
|
|
|
- this.$set(this.form.datasource[idx], 'technicalAnswerName', obj.name);
|
|
|
- },
|
|
|
- handHead(row, index) {
|
|
|
- let item = {
|
|
|
- id: row.technicalAnswerId
|
|
|
- };
|
|
|
- this.$refs.headRef.open(item, index);
|
|
|
- },
|
|
|
- //选择产品回调
|
|
|
- changeParent(obj, idx) {
|
|
|
- console.log(this.customerMark,'sadsa')
|
|
|
- obj.forEach((item, index) => {
|
|
|
- let i = idx == -1 ? index : idx;
|
|
|
- let row = JSON.parse(JSON.stringify(this.defaultForm));
|
|
|
- row.key = this.form.datasource.length + 1;
|
|
|
- let parasm = idx == -1 ? row : this.form.datasource[i];
|
|
|
- this.$set(parasm, 'productId', item.id);
|
|
|
- this.$set(parasm, 'categoryName', item.name);
|
|
|
- this.$set(parasm, 'productCategoryId', item.categoryLevelId);
|
|
|
- this.$set(parasm, 'productBrand', item.brandNum);
|
|
|
- this.$set(parasm, 'productCategoryName', item.categoryLevelPath);
|
|
|
- this.$set(parasm, 'productCode', item.code);
|
|
|
- this.$set(parasm, 'productName', item.name);
|
|
|
- this.$set(parasm, 'modelType', item.modelType);
|
|
|
- this.$set(parasm, 'availableCountBase', item.availableCountBase);
|
|
|
- this.$set(parasm, 'measuringUnit', item.measuringUnit);
|
|
|
- this.$set(parasm, 'specification', item.specification);
|
|
|
- this.$set(parasm, 'weightUnit', item.weightUnit);
|
|
|
- this.$set(parasm, 'customerMark', this.customerMark || '');
|
|
|
- if (idx == -1) {
|
|
|
- this.form.datasource.push(row);
|
|
|
+ if (item.guaranteePeriod && item.guaranteePeriodUnitCode) {
|
|
|
+ item['guaranteePeriodDeadline'] =
|
|
|
+ item['guaranteePeriodDeadline'] ||
|
|
|
+ guaranteePeriodUnitName != 'second'
|
|
|
+ ? this.setDay(item.guaranteePeriod, guaranteePeriodUnitName)
|
|
|
+ : '';
|
|
|
}
|
|
|
});
|
|
|
- },
|
|
|
- remove(row) {
|
|
|
- let index = this.form.datasource.findIndex((n) => n.key == row.key);
|
|
|
- if (index !== -1) {
|
|
|
- this.form.datasource.splice(index, 1);
|
|
|
- this.setSort();
|
|
|
- }
|
|
|
- },
|
|
|
- // 清空表格
|
|
|
- restTable() {
|
|
|
- this.form.datasource = [];
|
|
|
- },
|
|
|
- // 重新排序
|
|
|
- setSort() {
|
|
|
- this.form.datasource.forEach((n, index) => {
|
|
|
- n.key = index + 1;
|
|
|
- });
|
|
|
- },
|
|
|
- // 添加
|
|
|
- handlAdd() {
|
|
|
- let item = JSON.parse(JSON.stringify(this.defaultForm));
|
|
|
- item.key = this.form.datasource.length + 1;
|
|
|
- this.form.datasource.push(item);
|
|
|
- },
|
|
|
+ this.form.datasource = productList;
|
|
|
+ this.allPrice = data.totalAmount;
|
|
|
+ this.form.discountTotalPrice = data.payAmount;
|
|
|
+ }
|
|
|
+ },
|
|
|
+ //计算单重
|
|
|
+ singleWeightChange(row, index) {
|
|
|
+ if (row && row.singleWeight && row.totalCount) {
|
|
|
+ row.totalWeight = (row.singleWeight * row.totalCount).toFixed(2) || 0;
|
|
|
+ this.$set(this.form.datasource[index], 'totalWeight', row.totalWeight);
|
|
|
+ } else {
|
|
|
+ this.$set(this.form.datasource[index], 'totalWeight', '');
|
|
|
+ }
|
|
|
+ if (this.pricingWay == 2) {
|
|
|
+ this.getTotalPrice(row);
|
|
|
+ }
|
|
|
+ },
|
|
|
+ //选择产品
|
|
|
+ handParent(row, index) {
|
|
|
+ let item = {
|
|
|
+ id: row.productCode
|
|
|
+ };
|
|
|
+ this.$refs.productListRef.open(item, index);
|
|
|
+ },
|
|
|
+ //选择技术人回调
|
|
|
+ changeAnswer(obj, idx) {
|
|
|
+ this.$set(this.form.datasource[idx], 'technicalAnswerId', obj.id);
|
|
|
+ this.$set(this.form.datasource[idx], 'technicalAnswerName', obj.name);
|
|
|
+ },
|
|
|
+ handHead(row, index) {
|
|
|
+ let item = {
|
|
|
+ id: row.technicalAnswerId
|
|
|
+ };
|
|
|
+ this.$refs.headRef.open(item, index);
|
|
|
+ },
|
|
|
+ //选择产品回调
|
|
|
+ changeParent(obj, idx) {
|
|
|
+ console.log(this.customerMark, 'sadsa');
|
|
|
+ obj.forEach((item, index) => {
|
|
|
+ let i = idx == -1 ? index : idx;
|
|
|
+ let row = JSON.parse(JSON.stringify(this.defaultForm));
|
|
|
+ row.key = this.form.datasource.length + 1;
|
|
|
+ let parasm = idx == -1 ? row : this.form.datasource[i];
|
|
|
+ this.$set(parasm, 'productId', item.id);
|
|
|
+ this.$set(parasm, 'categoryName', item.name);
|
|
|
+ this.$set(parasm, 'productCategoryId', item.categoryLevelId);
|
|
|
+ this.$set(parasm, 'productBrand', item.brandNum);
|
|
|
+ this.$set(parasm, 'productCategoryName', item.categoryLevelPath);
|
|
|
+ this.$set(parasm, 'productCode', item.code);
|
|
|
+ this.$set(parasm, 'productName', item.name);
|
|
|
+ this.$set(parasm, 'modelType', item.modelType);
|
|
|
+ this.$set(parasm, 'availableCountBase', item.availableCountBase);
|
|
|
+ this.$set(parasm, 'measuringUnit', item.measuringUnit);
|
|
|
+ this.$set(parasm, 'specification', item.specification);
|
|
|
+ this.$set(parasm, 'weightUnit', item.weightUnit);
|
|
|
+ this.$set(parasm, 'customerMark', this.customerMark || '');
|
|
|
+ this.$set(parasm, 'singleWeight', item.roughWeight);
|
|
|
|
|
|
- validateForm(callback) {
|
|
|
- //开始表单校验
|
|
|
- this.$refs.form.validate((valid) => {
|
|
|
- callback(valid);
|
|
|
- });
|
|
|
+ if (idx == -1) {
|
|
|
+ this.form.datasource.push(row);
|
|
|
+ }
|
|
|
+ });
|
|
|
+ },
|
|
|
+ remove(row) {
|
|
|
+ let index = this.form.datasource.findIndex((n) => n.key == row.key);
|
|
|
+ if (index !== -1) {
|
|
|
+ this.form.datasource.splice(index, 1);
|
|
|
+ this.setSort();
|
|
|
}
|
|
|
+ },
|
|
|
+ // 清空表格
|
|
|
+ restTable() {
|
|
|
+ this.form.datasource = [];
|
|
|
+ },
|
|
|
+ // 重新排序
|
|
|
+ setSort() {
|
|
|
+ this.form.datasource.forEach((n, index) => {
|
|
|
+ n.key = index + 1;
|
|
|
+ });
|
|
|
+ },
|
|
|
+ // 添加
|
|
|
+ handlAdd() {
|
|
|
+ let item = JSON.parse(JSON.stringify(this.defaultForm));
|
|
|
+ item.key = this.form.datasource.length + 1;
|
|
|
+ this.form.datasource.push(item);
|
|
|
+ },
|
|
|
+
|
|
|
+ validateForm(callback) {
|
|
|
+ //开始表单校验
|
|
|
+ this.$refs.form.validate((valid) => {
|
|
|
+ callback(valid);
|
|
|
+ });
|
|
|
}
|
|
|
- };
|
|
|
+ }
|
|
|
+};
|
|
|
</script>
|
|
|
<style lang="scss" scoped>
|
|
|
- .headbox {
|
|
|
- display: flex;
|
|
|
- justify-content: space-between;
|
|
|
- align-items: center;
|
|
|
+.headbox {
|
|
|
+ display: flex;
|
|
|
+ justify-content: space-between;
|
|
|
+ align-items: center;
|
|
|
|
|
|
- .amount {
|
|
|
- font-size: 14px;
|
|
|
- font-weight: bold;
|
|
|
- padding-right: 30px;
|
|
|
- }
|
|
|
+ .amount {
|
|
|
+ font-size: 14px;
|
|
|
+ font-weight: bold;
|
|
|
+ padding-right: 30px;
|
|
|
}
|
|
|
+}
|
|
|
|
|
|
- .time-form .el-form-item {
|
|
|
- margin-bottom: 0 !important;
|
|
|
- }
|
|
|
+.time-form .el-form-item {
|
|
|
+ margin-bottom: 0 !important;
|
|
|
+}
|
|
|
|
|
|
- ::v-deep .period {
|
|
|
- display: flex;
|
|
|
+::v-deep .period {
|
|
|
+ display: flex;
|
|
|
|
|
|
- .borderleftnone {
|
|
|
- .el-input--medium .el-input__inner {
|
|
|
- border-top-right-radius: 0;
|
|
|
- border-bottom-right-radius: 0;
|
|
|
- }
|
|
|
+ .borderleftnone {
|
|
|
+ .el-input--medium .el-input__inner {
|
|
|
+ border-top-right-radius: 0;
|
|
|
+ border-bottom-right-radius: 0;
|
|
|
}
|
|
|
+ }
|
|
|
|
|
|
- .borderrightnone {
|
|
|
- .el-input--medium .el-input__inner {
|
|
|
- border-top-left-radius: 0;
|
|
|
- border-bottom-left-radius: 0;
|
|
|
- }
|
|
|
+ .borderrightnone {
|
|
|
+ .el-input--medium .el-input__inner {
|
|
|
+ border-top-left-radius: 0;
|
|
|
+ border-bottom-left-radius: 0;
|
|
|
}
|
|
|
}
|
|
|
+}
|
|
|
|
|
|
- ::v-deep .time-form tbody > tr:hover > td {
|
|
|
- background-color: transparent !important;
|
|
|
- }
|
|
|
+::v-deep .time-form tbody > tr:hover > td {
|
|
|
+ background-color: transparent !important;
|
|
|
+}
|
|
|
|
|
|
- ::v-deep .time-form .el-table tr {
|
|
|
- background-color: #ffffff;
|
|
|
- }
|
|
|
+::v-deep .time-form .el-table tr {
|
|
|
+ background-color: #ffffff;
|
|
|
+}
|
|
|
|
|
|
- .pricebox {
|
|
|
- display: flex;
|
|
|
- justify-content: flex-start;
|
|
|
- align-items: center;
|
|
|
- font-weight: bold;
|
|
|
- }
|
|
|
+.pricebox {
|
|
|
+ display: flex;
|
|
|
+ justify-content: flex-start;
|
|
|
+ align-items: center;
|
|
|
+ font-weight: bold;
|
|
|
+}
|
|
|
</style>
|