| | |
| | | >{{ dict.label }}</el-radio> |
| | | </el-radio-group> |
| | | </template> |
| | | <template #taxRate="{row}"> |
| | | <el-input v-model="row.taxRate" :disabled="scope.disabled || !rowKeys.includes(row.rowKey)" type="number" placeholder="请输入税点%"></el-input> |
| | | </template> |
| | | |
| | | <template #segment1FreightQuote="{row}"> |
| | | <el-input v-model="row.segment1FreightQuote" @change="(value:any)=>quoteChange(value,row)" :min="1" :disabled="scope.disabled || !rowKeys.includes(row.rowKey)" type="number" placeholder="请输入一段运费报价"></el-input> |
| | | </template> |
| | | <template #segment1Currency="{row}"> |
| | | <el-radio-group v-model="row.segment1Currency" @change="(value:any)=>quoteChange(value,row)" :disabled="scope.disabled || !rowKeys.includes(row.rowKey)"> |
| | | <el-radio |
| | | v-for="dict in sys_currency" |
| | | :key="dict.value" |
| | | :label="dict.value" |
| | | >{{ dict.label }}</el-radio> |
| | | </el-radio-group> |
| | | </template> |
| | | <template #segment1TaxRate="{row}"> |
| | | <el-input v-model="row.segment1TaxRate" @change="(value:any)=>quoteChange(value,row)" :disabled="scope.disabled || !rowKeys.includes(row.rowKey)" type="number" placeholder="请输入一段运费税点%"></el-input> |
| | | </template> |
| | | |
| | | <template #segment2FreightQuote="{row}"> |
| | | <el-input v-model="row.segment2FreightQuote" :min="1" @change="(value:any)=>quoteChange(value,row)" :disabled="scope.disabled || !rowKeys.includes(row.rowKey)" type="number" placeholder="请输入二段运费报价"></el-input> |
| | | </template> |
| | | <template #segment2Currency="{row}"> |
| | | <el-radio-group v-model="row.segment2Currency" @change="(value:any)=>quoteChange(value,row)" :disabled="scope.disabled || !rowKeys.includes(row.rowKey)"> |
| | | <el-radio |
| | | v-for="dict in sys_currency" |
| | | :key="dict.value" |
| | | :label="dict.value" |
| | | >{{ dict.label }}</el-radio> |
| | | </el-radio-group> |
| | | </template> |
| | | <template #segment2TaxRate="{row}"> |
| | | <el-input v-model="row.segment2TaxRate" @change="(value:any)=>quoteChange(value,row)" :disabled="scope.disabled || !rowKeys.includes(row.rowKey)" type="number" placeholder="请输入二段运费税点%"></el-input> |
| | | </template> |
| | | |
| | | <template #totalFreight="{row}"> |
| | | <div> |
| | | <div v-if="row.totalFreightCny">{{row.totalFreightCny}}人民币</div> |
| | | <div v-if="row.totalFreightHkd">{{row.totalFreightHkd}}港币</div> |
| | | </div> |
| | | </template> |
| | | |
| | | |
| | | </avue-crud> |
| | | </template> |
| | |
| | | const option = ref({ |
| | | pageKey: 'TmsQuoteDetail', |
| | | rowKey: 'id', |
| | | labelWidth: 120, |
| | | labelWidth: 150, |
| | | dialogWidth:'80%', |
| | | group:[ |
| | | { |
| | | label:"基础信息", |
| | |
| | | } |
| | | ], |
| | | }, |
| | | isSegmentedInvoice: { |
| | | label: '是否分段开票',value: '1', |
| | | type: 'radio', dataType: 'string', dicUrl: '/system/dict/data/type/sys_number_is', |
| | | rules: [ |
| | | { |
| | | required: true, |
| | | message: "运费报价不能为空", trigger: "blur" |
| | | } |
| | | ], |
| | | change:({value}:{value:any})=>{ |
| | | if (value==1){ |
| | | itemsTableOption.value.column.freightPrice.hide = false; |
| | | itemsTableOption.value.column.currency.hide = false; |
| | | itemsTableOption.value.column.taxRate.hide = false; |
| | | itemsTableOption.value.column.segment1FreightQuote.hide = true; |
| | | itemsTableOption.value.column.segment1Currency.hide = true; |
| | | itemsTableOption.value.column.segment1TaxRate.hide = true; |
| | | itemsTableOption.value.column.segment2FreightQuote.hide = true; |
| | | itemsTableOption.value.column.segment2Currency.hide = true; |
| | | itemsTableOption.value.column.segment2TaxRate.hide = true; |
| | | itemsTableOption.value.column.totalFreight.hide = true; |
| | | |
| | | |
| | | option.value.group.forEach((item:any) =>{ |
| | | if (item.prop == 'jcxx'){ |
| | | item.column.freightPrice.editDisplay = true; |
| | | item.column.freightPrice.viewDisplay = true; |
| | | item.column.currency.editDisplay = true; |
| | | item.column.currency.viewDisplay = true; |
| | | item.column.taxRate.editDisplay = true; |
| | | item.column.taxRate.viewDisplay = true; |
| | | |
| | | item.column.segment1FreightQuote.editDisplay = false; |
| | | item.column.segment1FreightQuote.viewDisplay = false; |
| | | |
| | | item.column.segment1Currency.editDisplay = false; |
| | | item.column.segment1Currency.viewDisplay = false; |
| | | |
| | | item.column.segment1TaxRate.editDisplay = false; |
| | | item.column.segment1TaxRate.viewDisplay = false; |
| | | |
| | | item.column.segment2FreightQuote.editDisplay = false; |
| | | item.column.segment2FreightQuote.viewDisplay = false; |
| | | |
| | | item.column.segment2Currency.editDisplay = false; |
| | | item.column.segment2Currency.viewDisplay = false; |
| | | |
| | | item.column.segment2TaxRate.editDisplay = false; |
| | | item.column.segment2TaxRate.viewDisplay = false; |
| | | |
| | | item.column.totalFreightCny.editDisplay = false; |
| | | item.column.totalFreightCny.viewDisplay = false; |
| | | |
| | | item.column.totalFreightHkd.editDisplay = false; |
| | | item.column.totalFreightHkd.viewDisplay = false; |
| | | |
| | | } |
| | | }) |
| | | |
| | | }else{ |
| | | itemsTableOption.value.column.freightPrice.hide = true; |
| | | itemsTableOption.value.column.currency.hide = true; |
| | | itemsTableOption.value.column.taxRate.hide = true; |
| | | itemsTableOption.value.column.segment1FreightQuote.hide = false; |
| | | itemsTableOption.value.column.segment1Currency.hide = false; |
| | | itemsTableOption.value.column.segment1TaxRate.hide = false; |
| | | itemsTableOption.value.column.segment2FreightQuote.hide = false; |
| | | itemsTableOption.value.column.segment2Currency.hide = false; |
| | | itemsTableOption.value.column.segment2TaxRate.hide = false; |
| | | itemsTableOption.value.column.totalFreight.hide = false; |
| | | |
| | | option.value.group.forEach((item:any) =>{ |
| | | if (item.prop == 'jcxx'){ |
| | | item.column.freightPrice.editDisplay = false; |
| | | item.column.freightPrice.viewDisplay = false; |
| | | item.column.currency.editDisplay = false; |
| | | item.column.currency.viewDisplay = false; |
| | | item.column.taxRate.editDisplay = false; |
| | | item.column.taxRate.viewDisplay = false; |
| | | |
| | | item.column.segment1FreightQuote.editDisplay = true; |
| | | item.column.segment1FreightQuote.viewDisplay = true; |
| | | |
| | | item.column.segment1Currency.editDisplay = true; |
| | | item.column.segment1Currency.viewDisplay = true; |
| | | |
| | | item.column.segment1TaxRate.editDisplay = true; |
| | | item.column.segment1TaxRate.viewDisplay = true; |
| | | |
| | | item.column.segment2FreightQuote.editDisplay = true; |
| | | item.column.segment2FreightQuote.viewDisplay = true; |
| | | |
| | | item.column.segment2Currency.editDisplay = true; |
| | | item.column.segment2Currency.viewDisplay = true; |
| | | |
| | | item.column.segment2TaxRate.editDisplay = true; |
| | | item.column.segment2TaxRate.viewDisplay = true; |
| | | |
| | | item.column.totalFreightCny.editDisplay = true; |
| | | item.column.totalFreightCny.viewDisplay = true; |
| | | |
| | | item.column.totalFreightHkd.editDisplay = true; |
| | | item.column.totalFreightHkd.viewDisplay = true; |
| | | |
| | | } |
| | | }) |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | } |
| | | } |
| | | }, |
| | | vehicleType: { |
| | | label: '车型', |
| | | addDisplay: false, |
| | |
| | | } |
| | | ], |
| | | }, |
| | | currency: { |
| | | label: '币制',addDisplay: false, |
| | | type: 'radio', dataType: 'string', dicUrl: '/system/dict/data/type/sys_currency', |
| | | rules: [ |
| | | { |
| | | required: true, |
| | | message: "运费报价不能为空", trigger: "blur" |
| | | } |
| | | ], |
| | | }, |
| | | taxRate: { |
| | | label: '税点%', |
| | | addDisplay: false, |
| | | editDisplay: true, |
| | | viewDisplay: true,type: 'number', |
| | | rules: [ |
| | | { |
| | | required: true, |
| | | message: "taxRate不能为空", trigger: "blur" |
| | | } |
| | | ], |
| | | }, |
| | | |
| | | segment1FreightQuote:{ |
| | | label: '一段运费报价', addDisplay: false, |
| | | editDisplay: true, |
| | | viewDisplay: true,type: 'number', |
| | | rules: [ |
| | | { |
| | | required: true, |
| | | message: "一段运费报价不能为空", trigger: "blur" |
| | | } |
| | | ], |
| | | }, |
| | | segment1Currency:{ |
| | | label: '一段运费币制',addDisplay: false, |
| | | type: 'radio', dataType: 'string', dicUrl: '/system/dict/data/type/sys_currency', |
| | | rules: [ |
| | | { |
| | | required: true, |
| | | message: "一段运费币制不能为空", trigger: "blur" |
| | | } |
| | | ], |
| | | }, |
| | | segment1TaxRate:{ |
| | | label: '一段运费税点%', addDisplay: false, |
| | | editDisplay: true, |
| | | viewDisplay: true,type: 'number', |
| | | rules: [ |
| | | { |
| | | required: true, |
| | | message: "一段运费税点不能为空", trigger: "blur" |
| | | } |
| | | ], |
| | | }, |
| | | segment2FreightQuote:{ |
| | | label: '二段运费报价', addDisplay: false, |
| | | editDisplay: true, |
| | | viewDisplay: true,type: 'number', |
| | | rules: [ |
| | | { |
| | | required: true, |
| | | message: "二段运费报价不能为空", trigger: "blur" |
| | | } |
| | | ], |
| | | }, |
| | | segment2Currency:{ |
| | | label: '二段运费币制',addDisplay: false, |
| | | type: 'radio', dataType: 'string', dicUrl: '/system/dict/data/type/sys_currency', |
| | | rules: [ |
| | | { |
| | | required: true, |
| | | message: "二段运费币制不能为空", trigger: "blur" |
| | | } |
| | | ], |
| | | }, |
| | | segment2TaxRate:{ |
| | | label: '二段运费税点%',addDisplay: false, |
| | | editDisplay: true, |
| | | viewDisplay: true,type: 'number', |
| | | rules: [ |
| | | { |
| | | required: true, |
| | | message: "二段运费税点不能为空", trigger: "blur" |
| | | } |
| | | ], |
| | | }, |
| | | totalFreightCny:{ |
| | | label: '总运费人民币报价', disabled: true, addDisplay: false, |
| | | editDisplay: true, |
| | | viewDisplay: true, |
| | | }, |
| | | totalFreightHkd:{ |
| | | label: '总运费港币报价',disabled: true ,addDisplay: false, |
| | | editDisplay: true, |
| | | viewDisplay: true |
| | | } |
| | | |
| | | |
| | | |
| | | } |
| | | }, |
| | | { |
| | |
| | | type: 'select', dataType: 'string', dicUrl: '/system/dict/data/type/sys_currency', |
| | | |
| | | }, |
| | | taxRate: { |
| | | label: '税点%', |
| | | display: false, |
| | | hide: false,minWidth:150, |
| | | }, |
| | | status: { |
| | | label: '状态', |
| | | type: 'radio',dataType:'string', dicUrl: '/system/dict/data/type/sys_normal_disable', |
| | |
| | | type: 'select', dataType: 'string', dicUrl: '/system/dict/data/type/vehicle_type', |
| | | }, |
| | | freightPrice:{ |
| | | label: '*运费报价', |
| | | label: '*运费报价', hide: false |
| | | }, |
| | | currency:{ |
| | | label: '币制', |
| | | label: '币制',hide: false |
| | | }, |
| | | taxRate:{ |
| | | label: '税点%',hide: false |
| | | }, |
| | | |
| | | segment1FreightQuote:{ |
| | | label: '*一段运费报价', hide: true |
| | | }, |
| | | segment1Currency:{ |
| | | label: '*一段运费币制',hide: true |
| | | }, |
| | | segment1TaxRate:{ |
| | | label: '*一段运费税点%',hide: true |
| | | }, |
| | | segment2FreightQuote:{ |
| | | label: '*二段运费报价', hide: true |
| | | }, |
| | | segment2Currency:{ |
| | | label: '*二段运费币制',hide: true |
| | | }, |
| | | segment2TaxRate:{ |
| | | label: '*二段运费税点%',hide: true |
| | | }, |
| | | totalFreight:{ |
| | | label: '总运费报价', hide: true |
| | | } |
| | | } |
| | | }) |
| | |
| | | throw new Error("请至少选择一条车型报价"); |
| | | |
| | | } |
| | | let filter = selectionList2.value.filter((item:any)=>{ |
| | | return !item.freightPrice || !item.currency |
| | | }); |
| | | if (filter.length > 0){ |
| | | proxy.$modal.msgError("请填写所有必填项"); |
| | | loading(); |
| | | throw new Error("请填写所有必填项") |
| | | if (row.isSegmentedInvoice == 1){ |
| | | let filter = selectionList2.value.filter((item:any)=>{ |
| | | return !item.freightPrice || !item.currency |
| | | }); |
| | | if (filter.length > 0){ |
| | | proxy.$modal.msgError("请填写所有必填项"); |
| | | loading(); |
| | | throw new Error("请填写所有必填项") |
| | | } |
| | | |
| | | }else{ |
| | | |
| | | let filter = selectionList2.value.filter((item:any)=>{ |
| | | return !item.segment1FreightQuote || !item.segment1Currency |
| | | || !item.segment1TaxRate|| !item.segment2FreightQuote |
| | | || !item.segment2Currency|| !item.segment2TaxRate |
| | | }); |
| | | if (filter.length > 0){ |
| | | proxy.$modal.msgError("请填写所有必填项"); |
| | | loading(); |
| | | throw new Error("请填写所有必填项") |
| | | } |
| | | } |
| | | row.quoteItems = selectionList2.value; |
| | | }, |
| | |
| | | rowKeys.value = selection?.map((item:any)=>item.rowKey); |
| | | } |
| | | |
| | | const quoteChange = (value:any,row:any) => { |
| | | let segment1FreightQuote = Number(row.segment1FreightQuote) || 0; |
| | | let segment2FreightQuote = Number(row.segment2FreightQuote) || 0; |
| | | let totalFreightCny = 0; |
| | | let totalFreightHkd = 0; |
| | | if (row.segment1Currency){ |
| | | if (row.segment1Currency == 'RMB'){ |
| | | totalFreightCny = segment1FreightQuote; |
| | | }else{ |
| | | totalFreightHkd = segment1FreightQuote; |
| | | } |
| | | } |
| | | if (row.segment2Currency){ |
| | | if (row.segment2Currency == 'RMB'){ |
| | | totalFreightCny += segment2FreightQuote; |
| | | }else{ |
| | | totalFreightHkd += segment2FreightQuote; |
| | | } |
| | | } |
| | | row.totalFreightCny = totalFreightCny; |
| | | row.totalFreightHkd = totalFreightHkd; |
| | | } |
| | | |
| | | </script> |