From 89fd2cf7202c321512c2ea699a3a220a7138ed44 Mon Sep 17 00:00:00 2001
From: wujianwei <wjw@11.com>
Date: 星期四, 09 四月 2026 10:40:52 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/cwxt_master' into cwxt_master
---
ui/admin-ui3/src/views/tms/collectionTmsQuoteDetail/index.vue | 358 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++--
1 files changed, 344 insertions(+), 14 deletions(-)
diff --git a/ui/admin-ui3/src/views/tms/collectionTmsQuoteDetail/index.vue b/ui/admin-ui3/src/views/tms/collectionTmsQuoteDetail/index.vue
index 0b89c66..4d8da87 100644
--- a/ui/admin-ui3/src/views/tms/collectionTmsQuoteDetail/index.vue
+++ b/ui/admin-ui3/src/views/tms/collectionTmsQuoteDetail/index.vue
@@ -59,10 +59,10 @@
:data="form.items" ref="itemsCrudRef"
>
<template #freightPrice="{row}">
- <el-input v-model="row.freightPrice" :min="1" :disabled="scope.disabled" type="number" placeholder="璇疯緭鍏ラ噾棰�"></el-input>
+ <el-input v-model="row.freightPrice" :min="1" :disabled="scope.disabled || !rowKeys.includes(row.rowKey)" type="number" placeholder="璇疯緭鍏ラ噾棰�"></el-input>
</template>
<template #currency="{row}">
- <el-radio-group v-model="row.currency" :disabled="scope.disabled">
+ <el-radio-group v-model="row.currency" :disabled="scope.disabled || !rowKeys.includes(row.rowKey)">
<el-radio
v-for="dict in sys_currency"
:key="dict.value"
@@ -70,6 +70,49 @@
>{{ 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>
@@ -131,7 +174,8 @@
const option = ref({
pageKey: 'TmsQuoteDetail',
rowKey: 'id',
- labelWidth: 120,
+ labelWidth: 150,
+ dialogWidth:'80%',
group:[
{
label:"鍩虹淇℃伅",
@@ -154,7 +198,7 @@
label: '璧风偣琛屾斂鍖哄煙',
addDisplay: true,
editDisplay: true,dataType: 'string',
- viewDisplay: true,
+ viewDisplay: true,checkStrictly:true,
type:'cascader',
rules: [
{
@@ -229,7 +273,7 @@
addDisplay: true,
editDisplay: true,
viewDisplay: true,dataType: 'string',
- type:'cascader',
+ type:'cascader',checkStrictly:true,
rules: [
{
required: true,
@@ -312,6 +356,121 @@
}
],
},
+ 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,
@@ -353,6 +512,106 @@
}
],
},
+ 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
+ }
+
+
+
}
},
{
@@ -511,6 +770,11 @@
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',
@@ -540,10 +804,35 @@
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
}
}
})
@@ -597,13 +886,28 @@
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;
},
@@ -621,7 +925,33 @@
router.back()
}
+const rowKeys = ref<any>([]);
const selectionChange2 = (selection?: any[]) => {
selectionList2.value = selection;
+ 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>
--
Gitblit v1.8.0