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 |  347 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++-
 1 files changed, 337 insertions(+), 10 deletions(-)

diff --git a/ui/admin-ui3/src/views/tms/collectionTmsQuoteDetail/index.vue b/ui/admin-ui3/src/views/tms/collectionTmsQuoteDetail/index.vue
index 1fda4f8..4d8da87 100644
--- a/ui/admin-ui3/src/views/tms/collectionTmsQuoteDetail/index.vue
+++ b/ui/admin-ui3/src/views/tms/collectionTmsQuoteDetail/index.vue
@@ -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:"鍩虹淇℃伅",
@@ -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;
   },
@@ -627,4 +931,27 @@
   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