Browse Source

Merge remote-tracking branch 'origin/dev' into dev

liyuan 4 months ago
parent
commit
b7686aedd7
20 changed files with 4746 additions and 3855 deletions
  1. 20 1
      src/api/iosBasicData/customsdeclaration.js
  2. 12 0
      src/enums/column-name.js
  3. 1 0
      src/views/iosBasicData/AirtransportExport/bills/assembly/EntrustmentLnformation.vue
  4. 2 2
      src/views/iosBasicData/AirtransportExport/bills/assembly/feecenter.vue
  5. 1 0
      src/views/iosBasicData/AirtransportExport/bills/billsDetails.vue
  6. 6 6
      src/views/iosBasicData/AirtransportImport/bills/assembly/feecenter.vue
  7. 8 8
      src/views/iosBasicData/OceanFreightImport/bills/assembly/DistributionBox/containers.vue
  8. 2 2
      src/views/iosBasicData/OceanFreightImport/bills/assembly/feecenter.vue
  9. 5 5
      src/views/iosBasicData/OceanFreightImport/bills/billsDetails.vue
  10. 45 33
      src/views/iosBasicData/SeafreightExportF/bills/assembly/DistributionBox/PackingBusiness.vue
  11. 8 8
      src/views/iosBasicData/SeafreightExportF/bills/assembly/DistributionBox/containers.vue
  12. 2 0
      src/views/iosBasicData/SeafreightExportF/bills/assembly/DocumentCenter.vue
  13. 62 22
      src/views/iosBasicData/SeafreightExportF/bills/assembly/feecenter.vue
  14. 200 253
      src/views/iosBasicData/SeafreightExportF/bills/assembly/reportformsFrame/BillofLadingDetails.vue
  15. 42 22
      src/views/iosBasicData/SeafreightExportF/bills/billsDetails.vue
  16. 19 2
      src/views/iosBasicData/financeProfit/index.vue
  17. 1077 873
      src/views/iosBasicData/reportClose/AEreportClose/index.vue
  18. 1080 873
      src/views/iosBasicData/reportClose/AIreportClose/index.vue
  19. 1078 873
      src/views/iosBasicData/reportClose/SEreportClose/index.vue
  20. 1076 872
      src/views/iosBasicData/reportClose/SIreportClose/index.vue

+ 20 - 1
src/api/iosBasicData/customsdeclaration.js

@@ -11,6 +11,18 @@ export const customsdeclarationList = (current, size, params) => {
     }
   })
 }
+// 列表
+export const GmyList = (current, size, params) => {
+  return request({
+    url: '/api/blade-los/gmyDataExchangApi/list',
+    method: 'get',
+    params: {
+      ...params,
+      current,
+      size,
+    }
+  })
+}
 // 详情
 export const customsdeclarationDetail = (id) => {
   return request({
@@ -31,7 +43,6 @@ export const customsdeclarationRemove = (ids) => {
     }
   })
 }
-// 保存
 export const customsdeclarationSubmit = (row) => {
   return request({
     url: '/api/blade-los/customsdeclaration/submit',
@@ -39,6 +50,14 @@ export const customsdeclarationSubmit = (row) => {
     data: row
   })
 }
+// 导入
+export const gmyImportDecl = (row) => {
+  return request({
+    url: '/api/blade-los/gmyDataExchangApi/importDecl',
+    method: 'post',
+    params: row
+  })
+}
 // 单据请核
 export const checkCustomsDeclaration = (row) => {
   return request({

+ 12 - 0
src/enums/column-name.js

@@ -2057,6 +2057,18 @@ const columnName = [{
 },{
   code: 468,
   name: '货代-海运派车-海运派车应付明细'
+},{
+  code: 469,
+  name: '货代-报关-海运出口关贸云列表页'
+},{
+  code: 470,
+  name: '货代-报关-海运进口关贸云列表页'
+},{
+  code: 471,
+  name: '货代-报关-空运出口关贸云列表页'
+},{
+  code: 472,
+  name: '货代-报关-空运进口关贸云列表页'
 }
 ]
 export const getColumnName = (key) => {

+ 1 - 0
src/views/iosBasicData/AirtransportExport/bills/assembly/EntrustmentLnformation.vue

@@ -4,6 +4,7 @@
             <el-row :gutter="20">
                 <el-col :span="8">
                     <el-row>
+                        {{ detailData}}
                         <el-form-item label="发货人" prop="hshipperCnName">
                             <span slot="label">
                                 <span style="color: #1e9fff">发货人</span>

+ 2 - 2
src/views/iosBasicData/AirtransportExport/bills/assembly/feecenter.vue

@@ -1638,7 +1638,7 @@ export default {
                 obj.corpCnName = this.assemblyForm.corpCnName
                 obj.corpEnName = this.assemblyForm.corpEnName
                 // 预付/到付
-                obj.paymode = this.assemblyForm.mpaymode
+                obj.paymode = 'PP' // 2025.07.17 wmr 田真  this.assemblyForm.mpaymode
                 getBcorpsDetail(this.assemblyForm.corpId).then(res => {
                     obj.shortName = res.data.data.shortName
                     this.assemblyForm.feeCenterListD.push(obj)
@@ -1724,7 +1724,7 @@ export default {
                 // obj.corpCnName = this.assemblyForm.corpCnName.split(' - ')[0]
                 // obj.corpEnName = this.assemblyForm.corpEnName
                 // 预付/到付
-                obj.paymode = this.assemblyForm.mpaymode
+                obj.paymode = 'PP' // 2025.07.17 wmr 田真  this.assemblyForm.mpaymode
                 // getBcorpsDetail(this.assemblyForm.corpId).then(res => {
                 //     obj.shortName = res.data.data.shortName
                 //     this.assemblyForm.feeCenterListC.push(obj)

+ 1 - 0
src/views/iosBasicData/AirtransportExport/bills/billsDetails.vue

@@ -1787,6 +1787,7 @@ export default {
             // }else {
             //     this.detailData.seeDisabled = false
             // }
+            // this.detailData.seeDisabled = true
             // 把字符串集合转换一下
             // 是否随机
             this.$set(this.comprehensiveForm, 'random', this.form.comprehensive.split(',').indexOf('随机') != -1 ? '随机' : null)

+ 6 - 6
src/views/iosBasicData/AirtransportImport/bills/assembly/feecenter.vue

@@ -155,12 +155,12 @@
                     <span v-else>{{ row.price }}</span>
                 </template>
                 <!-- <template slot="quantity" slot-scope="{ row }">
-                    <el-input v-if="row.edit" type="number" v-model="row.quantity" size="small" 
+                    <el-input v-if="row.edit" type="number" v-model="row.quantity" size="small"
                         placeholder="请输入" @blur="quantityinputfun(row)"></el-input>
                     <span v-else>{{ row.quantity }}</span>
                 </template> -->
                 <template slot="quantity" slot-scope="{ row }">
-                    <el-input-number v-if="row.edit" v-model="row.quantity" size="small" 
+                    <el-input-number v-if="row.edit" v-model="row.quantity" size="small"
                         :controls="false" :precision="3" placeholder="请输入" style="width: 100%;"
                         @blur="quantityinputfun(row)"></el-input-number>
                     <span v-else>{{ row.quantity }}</span>
@@ -306,12 +306,12 @@
                     <span v-else>{{ row.price }}</span>
                 </template>
                 <!-- <template slot="quantity" slot-scope="{ row }">
-                    <el-input v-if="row.edit" type="number" v-model="row.quantity" size="small" 
+                    <el-input v-if="row.edit" type="number" v-model="row.quantity" size="small"
                         placeholder="请输入" @blur="quantityinputfun(row)"></el-input>
                     <span v-else>{{ row.quantity }}</span>
                 </template> -->
                 <template slot="quantity" slot-scope="{ row }">
-                    <el-input-number v-if="row.edit" v-model="row.quantity" size="small" 
+                    <el-input-number v-if="row.edit" v-model="row.quantity" size="small"
                         :controls="false" :precision="3" placeholder="请输入" style="width: 100%;"
                         @blur="quantityinputfun(row)"></el-input-number>
                     <span v-else>{{ row.quantity }}</span>
@@ -1638,7 +1638,7 @@ export default {
                 obj.corpCnName = this.assemblyForm.corpCnName
                 obj.corpEnName = this.assemblyForm.corpEnName
                 // 预付/到付
-                obj.paymode = this.assemblyForm.mpaymode
+                obj.paymode = 'PP' // 2025.07.17 wmr 田真  this.assemblyForm.mpaymode
                 getBcorpsDetail(this.assemblyForm.corpId).then(res => {
                     obj.shortName = res.data.data.shortName
                     this.assemblyForm.feeCenterListD.push(obj)
@@ -1724,7 +1724,7 @@ export default {
                 // obj.corpCnName = this.assemblyForm.corpCnName.split(' - ')[0]
                 // obj.corpEnName = this.assemblyForm.corpEnName
                 // 预付/到付
-                obj.paymode = this.assemblyForm.mpaymode
+                obj.paymode = 'PP' // 2025.07.17 wmr 田真  this.assemblyForm.mpaymode
                 // getBcorpsDetail(this.assemblyForm.corpId).then(res => {
                 //     obj.shortName = res.data.data.shortName
                 //     this.assemblyForm.feeCenterListC.push(obj)

+ 8 - 8
src/views/iosBasicData/OceanFreightImport/bills/assembly/DistributionBox/containers.vue

@@ -79,23 +79,23 @@
           <span v-else>{{ scope.row.sealNo }}</span>
         </template>
         <template slot-scope="scope" slot="quantity">
-          <el-input v-if="scope.row.edit" v-model="scope.row.quantity" size="small" clearable
-            placeholder="请输入件数"></el-input>
+          <el-input-number v-if="scope.row.edit" v-model="scope.row.quantity" size="small" clearable
+            style="width: 100%;" :controls="false" placeholder="请输入件数" :precision="0"></el-input-number>
           <span v-else>{{ Number(scope.row.quantity).toFixed(0) }}</span>
         </template>
         <template slot-scope="scope" slot="grossWeight">
-          <el-input v-if="scope.row.edit" v-model="scope.row.grossWeight" size="small" clearable
-            placeholder="请输入毛重"></el-input>
+          <el-input-number v-if="scope.row.edit" v-model="scope.row.grossWeight" size="small" clearable
+            style="width: 100%;" :controls="false" placeholder="请输入毛重"></el-input-number>
           <span v-else>{{ scope.row.grossWeight }}</span>
         </template>
         <template slot-scope="scope" slot="netWeight">
-          <el-input v-if="scope.row.edit" v-model="scope.row.netWeight" size="small" clearable
-            placeholder="请输入净重"></el-input>
+          <el-input-number v-if="scope.row.edit" v-model="scope.row.netWeight" size="small" clearable
+            style="width: 100%;" :controls="false" placeholder="请输入净重"></el-input-number>
           <span v-else>{{ scope.row.netWeight }}</span>
         </template>
         <template slot-scope="scope" slot="measurement">
-          <el-input v-if="scope.row.edit" v-model="scope.row.measurement" size="small" clearable
-            placeholder="请输入尺码"></el-input>
+          <el-input-number v-if="scope.row.edit" v-model="scope.row.measurement" size="small" clearable
+            style="width: 100%;" :controls="false" placeholder="请输入尺码"></el-input-number>
           <span v-else>{{ scope.row.measurement }}</span>
         </template>
         <template slot-scope="scope" slot="remarks">

+ 2 - 2
src/views/iosBasicData/OceanFreightImport/bills/assembly/feecenter.vue

@@ -1952,7 +1952,7 @@ export default {
                 obj.corpEnName = this.assemblyForm.corpEnName
                 obj.dc = 'D'
                 // 预付/到付
-                obj.paymode = this.assemblyForm.mpaymode
+                obj.paymode = 'PP' // 2025.07.17 wmr 田真  this.assemblyForm.mpaymode
                 getBcorpsDetail(this.assemblyForm.corpId).then(res => {
                     obj.shortName = res.data.data.shortName
                     this.assemblyForm.feeCenterListD.push(obj)
@@ -2040,7 +2040,7 @@ export default {
                 // obj.corpEnName = this.assemblyForm.corpEnName
                 // 预付/到付
                 obj.dc = 'D'
-                obj.paymode = this.assemblyForm.mpaymode
+                obj.paymode = 'PP' // 2025.07.17 wmr 田真  this.assemblyForm.mpaymode
                 // getBcorpsDetail(this.assemblyForm.corpId).then(res => {
                 //     obj.shortName = res.data.data.shortName
                 //     this.assemblyForm.feeCenterListC.push(obj)

+ 5 - 5
src/views/iosBasicData/OceanFreightImport/bills/billsDetails.vue

@@ -2206,11 +2206,11 @@ export default {
             this.copyFormData = JSON.parse(JSON.stringify(res.data.data));
             this.inLock();
             // 如果已经请核就禁用按钮
-            // if (this.form.status == 1 || this.form.status == 2 || this.form.status == 3) {
-            //     this.detailData.seeDisabled = true
-            // }else {
-            //     this.detailData.seeDisabled = false
-            // }
+            if (this.form.status == 1 || this.form.status == 2 || this.form.status == 3) {
+                this.detailData.seeDisabled = true
+            }else {
+                this.detailData.seeDisabled = false
+            }
             if (
                 this.form.status == 1 ||
                 this.form.status == 2 ||

+ 45 - 33
src/views/iosBasicData/SeafreightExportF/bills/assembly/DistributionBox/PackingBusiness.vue

@@ -142,6 +142,11 @@
                             label="dictValue" url="/blade-system/dict-biz/dictionary?code=hazard_Level"
                             :filterable="true"></dic-select>
                     </tempalte>
+                    <tempalte slot-scope="{type,disabled}" slot="dgFlashPointUnitForm">
+                        <dic-select v-model="Detailform.dgFlashPointUnit" placeholder="易燃易爆品闪点单位" key="dictKey"
+                            label="dictValue" url="/blade-system/dict-biz/dictionary?code=Emergency_Unit"
+                            :filterable="true"></dic-select>
+                    </tempalte>
                     <tempalte slot-scope="{type,disabled}" slot="dgEmerTemperatureUnitForm">
                         <dic-select v-model="Detailform.dgEmerTemperatureUnit" placeholder="Emergency温度单位" key="dictKey"
                             label="dictValue" url="/blade-system/dict-biz/dictionary?code=Emergency_Unit"
@@ -163,8 +168,8 @@
                     <span>
                         <avue-crud :data="verifyDataList" :option="optionVerify" :row-style="rowStyle">
                             <template slot="whether" slot-scope="{ row }">
-                                <i v-if="row.whether==1" class="el-icon-check" style="color: #E6A23C;"></i>
-                                <i v-if="row.whether==0" class="el-icon-close" style="color: #F56C6C;"></i>
+                                <i v-if="row.whether == 1" class="el-icon-check" style="color: #E6A23C;"></i>
+                                <i v-if="row.whether == 0" class="el-icon-close" style="color: #F56C6C;"></i>
                             </template>
                         </avue-crud>
                     </span>
@@ -278,7 +283,7 @@ export default {
             optionVerify: {
                 header: false,
                 menu: false,
-                align:'center',
+                align: 'center',
                 column: [
                     {
                         label: '箱号',
@@ -429,19 +434,19 @@ export default {
                         overHidden: true,
                         display: false,
                     },
-                    {
-                        label: "包装等级",
-                        prop: "packingLevel",
-                        labelWidth: 130,
-                        width: "120",
-                        overHidden: true,
-                        display: false,
-                        rules: [{
-                            required: true,
-                            message: "",
-                            trigger: "blur"
-                        }]
-                    },
+                    // {
+                    //     label: "包装等级",
+                    //     prop: "packingLevel",
+                    //     labelWidth: 130,
+                    //     width: "120",
+                    //     overHidden: true,
+                    //     display: false,
+                    //     rules: [{
+                    //         required: true,
+                    //         message: "",
+                    //         trigger: "blur"
+                    //     }]
+                    // },
                     {
                         label: "货物描述",
                         prop: "commodityDescr",
@@ -1066,7 +1071,7 @@ export default {
                                 labelWidth: 130,
                                 width: "120",
                                 overHidden: true,
-                                display: false,
+                                // display: false,
                                 cell: true,
                             },
                             {
@@ -1121,19 +1126,19 @@ export default {
                                 },
                                 cell: true,
                             },
-                            {
-                                label: "包装等级",
-                                prop: "packingLevel",
-                                labelWidth: 130,
-                                width: "120",
-                                overHidden: true,
-                                cell: true,
-                                rules: [{
-                                    required: true,
-                                    message: "",
-                                    trigger: "blur"
-                                }]
-                            },
+                            // {
+                            //     label: "包装等级",
+                            //     prop: "packingLevel",
+                            //     labelWidth: 130,
+                            //     width: "120",
+                            //     overHidden: true,
+                            //     cell: true,
+                            //     rules: [{
+                            //         required: true,
+                            //         message: "",
+                            //         trigger: "blur"
+                            //     }]
+                            // },
                             {
                                 label: "是否申报数量",
                                 prop: "dgIsDeclareQuantity",
@@ -1296,7 +1301,10 @@ export default {
             },
             selectionDetailList: [], // 选中的数据
             loading: false,
-            Detailform: {},
+            Detailform: {
+                dgEmerTemperatureUnit: 'C',
+                dgCtrlTemperatureUnit: 'C',
+            },
         }
     },
     comments: {
@@ -1318,7 +1326,7 @@ export default {
                     this.optionDetail.group.forEach(item => {
                         if (item.prop == 'type2') {
                             item.column.forEach(row => {
-                                if (row.prop == 'dgImdgCode' || row.prop == 'dgImdgName' || row.prop == 'dgUnCode' || row.prop == 'dgCommodityName' || row.prop == 'dgPackingUnit' || row.prop == 'dgPackingLevel' || row.prop == 'dgFlashPoint' || row.prop == 'dgFlashPointUnit' || row.prop == 'dgContacts' || row.prop == 'dgTel') {
+                                if (row.prop == 'dgImdgCode' || row.prop == 'dgImdgName' || row.prop == 'dgUnCode' || row.prop == 'dgCommodityName' || row.prop == 'dgPackingUnit' || row.prop == 'dgFlashPoint' || row.prop == 'dgFlashPointUnit' || row.prop == 'dgContacts' || row.prop == 'dgTel') {
                                     row.display = true
                                 }
                             })
@@ -1328,7 +1336,7 @@ export default {
                     this.optionDetail.group.forEach(item => {
                         if (item.prop == 'type2') {
                             item.column.forEach(row => {
-                                if (row.prop == 'dgImdgCode' || row.prop == 'dgImdgName' || row.prop == 'dgUnCode' || row.prop == 'dgCommodityName' || row.prop == 'dgPackingUnit' || row.prop == 'dgPackingLevel' || row.prop == 'dgFlashPoint' || row.prop == 'dgFlashPointUnit' || row.prop == 'dgContacts' || row.prop == 'dgTel') {
+                                if (row.prop == 'dgImdgCode' || row.prop == 'dgImdgName' || row.prop == 'dgUnCode' || row.prop == 'dgCommodityName' || row.prop == 'dgPackingUnit' || row.prop == 'dgFlashPoint' || row.prop == 'dgFlashPointUnit' || row.prop == 'dgContacts' || row.prop == 'dgTel') {
                                     row.display = false
                                 }
                             })
@@ -1368,6 +1376,10 @@ export default {
             this.Detailform.packingUnit = this.assemblyForm.packingUnit
             this.Detailform.commodityDescr = this.assemblyForm.commodityDescr
             this.Detailform.marks = this.assemblyForm.marks
+            this.Detailform.Detailform = {
+                dgEmerTemperatureUnit: 'C',
+                dgCtrlTemperatureUnit: 'C',
+            }
             this.$refs.crudDetail.rowAdd()
         },
         // 货物明细单个保存接口

+ 8 - 8
src/views/iosBasicData/SeafreightExportF/bills/assembly/DistributionBox/containers.vue

@@ -87,23 +87,23 @@
                     <span v-else>{{ scope.row.sealNo }}</span>
                 </template>
                 <template slot-scope="scope" slot="quantity">
-                    <el-input v-if="scope.row.edit" v-model="scope.row.quantity" size="small" clearable
-                        placeholder="请输入件数"></el-input>
+                    <el-input-number v-if="scope.row.edit" v-model="scope.row.quantity" size="small" clearable
+                        style="width: 100%;" :controls="false" placeholder="请输入件数" :precision="0"></el-input-number>
                     <span v-else>{{ Number(scope.row.quantity).toFixed(0) }}</span>
                 </template>
                 <template slot-scope="scope" slot="grossWeight">
-                    <el-input v-if="scope.row.edit" v-model="scope.row.grossWeight" size="small" clearable
-                        placeholder="请输入毛重"></el-input>
+                    <el-input-number v-if="scope.row.edit" v-model="scope.row.grossWeight" size="small" clearable
+                        style="width: 100%;" :controls="false" placeholder="请输入毛重"></el-input-number>
                     <span v-else>{{ scope.row.grossWeight }}</span>
                 </template>
                 <template slot-scope="scope" slot="netWeight">
-                    <el-input v-if="scope.row.edit" v-model="scope.row.netWeight" size="small" clearable
-                        placeholder="请输入净重"></el-input>
+                    <el-input-number v-if="scope.row.edit" v-model="scope.row.netWeight" size="small" clearable
+                        style="width: 100%;" :controls="false" placeholder="请输入净重"></el-input-number>
                     <span v-else>{{ scope.row.netWeight }}</span>
                 </template>
                 <template slot-scope="scope" slot="measurement">
-                    <el-input v-if="scope.row.edit" v-model="scope.row.measurement" size="small" clearable
-                        placeholder="请输入尺码"></el-input>
+                    <el-input-number v-if="scope.row.edit" v-model="scope.row.measurement" size="small" clearable
+                        style="width: 100%;" :controls="false" placeholder="请输入尺码"></el-input-number>
                     <span v-else>{{ scope.row.measurement }}</span>
                 </template>
                 <template slot-scope="scope" slot="remarks">

+ 2 - 0
src/views/iosBasicData/SeafreightExportF/bills/assembly/DocumentCenter.vue

@@ -450,6 +450,8 @@ export default {
                 this.documentForm = res.data.data.data
                 // 联系人
                 this.documentForm.corpAttnName = this.documentForm.corpAttnName + '' + this.documentForm.corpAttnTel
+                this.documentForm.prepaidAt =this.documentForm.mpaymode=='FREIGHT PREPAID'?this.documentForm.mpayplace:null
+                this.documentForm.payableAt =this.documentForm.mpaymode=='FREIGHT COLLECT'?this.documentForm.mpayplace:null
                 // this.documenturl = this.businesstypeData.url;
                 // 打开报表选择框
                 this.documentVisible = true

+ 62 - 22
src/views/iosBasicData/SeafreightExportF/bills/assembly/feecenter.vue

@@ -104,7 +104,7 @@
                         :disabled="disabled || pleasereviewType" @click="allClick('发票申请', 'D')">发票申请</el-button>
                     <el-button v-if="isFeeEditD" type="primary" plain size="small"
                         :disabled="disabled || !selectionDList.length"
-                        @click="allClick('批量修改结算单位')">批量修改结算单位</el-button>
+                        @click="allClick('D批量修改结算单位')">批量修改结算单位</el-button>
                 </template>
                 <template slot="indexHeader" slot-scope="scope">
                     <el-button v-if="isFeeEditD" type="primary" size="small" icon="el-icon-plus" circle
@@ -253,6 +253,9 @@
                     </el-button>
                     <el-button type="info" plain size="small" :disabled="disabled"
                         @click="allClick('付费申请', 'C')">付费申请</el-button>
+                    <el-button v-if="isFeeEditC" type="primary" plain size="small"
+                        :disabled="disabled || !selectionCList.length"
+                        @click="allClick('C批量修改结算单位')">批量修改结算单位</el-button>
                 </template>
                 <template slot="indexHeader" slot-scope="scope">
                     <el-button v-if="isFeeEditC" type="primary" size="small" icon="el-icon-plus" circle
@@ -605,7 +608,7 @@
             </span>
             <span slot="footer" class="dialog-footer">
                 <el-button @click="dialogVisible = false" size="small">取 消</el-button>
-                <el-button type="primary" @click="upSibmit" size="small">确 定</el-button>
+                <el-button type="primary" @click="upSibmit(dc)" size="small">确 定</el-button>
             </span>
         </el-dialog>
     </div>
@@ -1506,6 +1509,7 @@ export default {
             isProfitView: false, // 当前登录人是否有利润查看角色
             idArr: [],
             business: null,
+            dc: null,
         }
     },
     async created() {
@@ -2011,7 +2015,7 @@ export default {
                 obj.dc = "D"
                 //
                 // 预付/到付
-                obj.paymode = this.assemblyForm.mpaymode
+                obj.paymode = 'PP'  // 2025.07.17 wmr 田真 this.assemblyForm.mpaymode
                 getBcorpsDetail(this.assemblyForm.corpId).then(res => {
                     obj.shortName = res.data.data.shortName
                     this.assemblyForm.feeCenterListD.push(obj)
@@ -2097,7 +2101,7 @@ export default {
                 // obj.corpCnName = this.assemblyForm.corpCnName.split(' - ')[0]
                 // obj.corpEnName = this.assemblyForm.corpEnName
                 // 预付/到付
-                obj.paymode = this.assemblyForm.mpaymode
+                obj.paymode = 'PP' // 2025.07.17 wmr 田真 this.assemblyForm.mpaymode
                 obj.dc = "C"
                 // getBcorpsDetail(this.assemblyForm.corpId).then(res => {
                 //     obj.shortName = res.data.data.shortName
@@ -2252,23 +2256,29 @@ export default {
         },
         // 撤销账单
         RevokingBillsfun(dc) {
+            let billList = []
+            if (dc == 'D') {
+                for (let item of this.selectionDList) {
+                    billList.push(item)
+                    if (item.accStatus == 0) {
+                        return this.$message.error('请选择已生成账单的数据')
+                    }
+                }
+
+            } else {
+                for (let item of this.selectionCList) {
+                    billList.push(item)
+                    if (item.accStatus == 0) {
+                        return this.$message.error('请选择已生成账单的数据')
+                    }
+                }
+            }
             this.$confirm("确定将选择数据撤销账单?", {
                 confirmButtonText: "确定",
                 cancelButtonText: "取消",
                 type: "warning"
             }).then(() => {
-                let billList = []
-                if (dc == 'D') {
-                    for (let item of this.selectionDList) {
-                        billList.push(item)
-                    }
-                    this.finaccbillsRevokeBillfun(billList)
-                } else {
-                    for (let item of this.selectionCList) {
-                        billList.push(item)
-                    }
-                    this.finaccbillsRevokeBillfun(billList)
-                }
+                this.finaccbillsRevokeBillfun(billList)
             })
 
         },
@@ -2624,7 +2634,7 @@ export default {
             if (!row.curCode) {
                 return;
             }
-            if (row.amountLimit && Number(row.amountLimit)>0 && row.noAmount && row.amount) {
+            if (row.amountLimit && Number(row.amountLimit) > 0 && row.noAmount && row.amount) {
                 if ((Number(row.amount) + Number(row.noAmount)) > Number(row.amountLimit)) {
                     this.$message.error(`应收账款:${(Number(row.amount) + Number(row.noAmount))}超出限额:${Number(row.amountLimit)}`);
                     delete row.amountLimit
@@ -2697,7 +2707,7 @@ export default {
             if (!row.curCode) {
                 return;
             }
-            if (row.amountLimit && Number(row.amountLimit)>0 && row.noAmount && row.amount) {
+            if (row.amountLimit && Number(row.amountLimit) > 0 && row.noAmount && row.amount) {
                 if ((Number(row.amount) + Number(row.noAmount)) > Number(row.amountLimit)) {
                     this.$message.error(`应收账款:${(Number(row.amount) + Number(row.noAmount))}超出限额:${Number(row.amountLimit)}`);
                     delete row.amountLimit
@@ -2972,9 +2982,19 @@ export default {
                 if (!item.corpId || !item.feeId || !item.elementsId || !item.curCode) {
                     sum += `应收第${item.$index + 1}行${!item.corpId ? ' 结算单位' : ''}${!item.feeId ? ' 费用简称' : ''}${!item.elementsId ? ' 核算要素' : ''}${!item.curCode ? ' 币种' : ''}`
                 }
-                if (Number(item.price) == 0) {
+                if (Number(item.price) == 0 || !item.price) {
                     sum += `应收第${item.$index + 1}行单价`
                 }
+                if (item.curCode == 'CNY') {
+                    if (Number(item.rmbAmount) == 0 || !item.rmbAmount) {
+                        sum += `应收第${item.$index + 1}行金额不能为0`
+                    }
+                }
+                if (item.curCode == 'USD') {
+                    if (Number(item.usdAmount) == 0 || !item.usdAmount) {
+                        sum += `应收第${item.$index + 1}行金额不能为0`
+                    }
+                }
             }
             for (let item of this.assemblyForm.feeCenterListC) {
                 if (!item.corpId || !item.feeId || !item.elementsId || !item.curCode) {
@@ -2983,6 +3003,16 @@ export default {
                 if (Number(item.price) == 0) {
                     sum += `应付第${item.$index + 1}行单价`
                 }
+                if (item.curCode == 'CNY') {
+                    if (Number(item.rmbAmount) == 0 || !item.rmbAmount) {
+                        sum += `应收第${item.$index + 1}行金额不能为0`
+                    }
+                }
+                if (item.curCode == 'USD') {
+                    if (Number(item.usdAmount) == 0 || !item.usdAmount) {
+                        sum += `应收第${item.$index + 1}行金额不能为0`
+                    }
+                }
             }
             if (sum != '请输入') {
                 this.$confirm(sum, {
@@ -3120,19 +3150,28 @@ export default {
                     })
                 }
             }
-            if (name == '批量修改结算单位') {
+            if (name == 'D批量修改结算单位') {
                 if (this.selectionDList.length == 0) return this.$message.error("请选择费用");
                 if (this.selectionDList.length != this.selectionDList.filter(e => e.accStatus == 0).length) return this.$message.error("已生成账单费用明细不允许修改结算单位");
                 this.dialogVisible = true
+                this.upForm = {}
+                this.dc = 'D'
+            }
+            if (name == 'C批量修改结算单位') {
+                if (this.selectionCList.length == 0) return this.$message.error("请选择费用");
+                if (this.selectionCList.length != this.selectionCList.filter(e => e.accStatus == 0).length) return this.$message.error("已生成账单费用明细不允许修改结算单位");
+                this.dialogVisible = true
+                this.upForm = {}
+                this.dc = 'C'
             }
         },
-        upSibmit() {
+        upSibmit(dc) {
             const obj = {
                 corpId: this.upForm.corpId,
                 corpCnName: this.upForm.corpCnName,
                 corpEnName: this.upForm.corpEnName,
                 shortName: this.upForm.shortName,
-                feeCenterListD: this.selectionDList
+                feeCenterListD: dc == 'D' ? this.selectionDList : this.selectionCList
             }
             updateCorpBatch(obj).then(res => {
                 this.$message({
@@ -3140,6 +3179,7 @@ export default {
                     message: "操作成功!"
                 });
                 this.dialogVisible = false
+                this.dc = null
                 this.$emit('billsDetailfun')
             })
         },

+ 200 - 253
src/views/iosBasicData/SeafreightExportF/bills/assembly/reportformsFrame/BillofLadingDetails.vue

@@ -3,432 +3,379 @@
         <el-row>
             <el-col :span="14">
                 <div style="border: 1px solid #000;">
-                    <el-form-item label="SHIPPER/EXPORTER:" prop="hshipperDetails" >
-                        <el-input type="textarea" :rows="4" style="width: 100%;" v-model="documentForm.hshipperDetails"
-                                  size="small" autocomplete="off" clearable placeholder=" " >
+                    <el-form-item label="Shippper" prop="hshipperDetails">
+                        <el-input type="textarea" :rows="5" style="width: 100%;" v-model="documentForm.hshipperDetails"
+                            size="small" autocomplete="off" clearable placeholder=" ">
                         </el-input>
                     </el-form-item>
                 </div>
                 <div style="border: 1px solid #000;">
-                    <el-form-item label="CONSIGNEE:" prop="hconsigneeDetails" >
-                        <el-input type="textarea" :rows="4" style="width: 100%;" v-model="documentForm.hconsigneeDetails"
-                                  size="small" autocomplete="off" clearable placeholder=" " >
+                    <el-form-item label="Consignee" prop="hconsigneeDetails">
+                        <el-input type="textarea" :rows="5" style="width: 100%;"
+                            v-model="documentForm.hconsigneeDetails" size="small" autocomplete="off" clearable
+                            placeholder=" ">
                         </el-input>
                     </el-form-item>
                 </div>
                 <div style="border: 1px solid #000;">
-                    <el-form-item label="NOTIFY PARTY (lt is agreed that no responsibility shall be attached to the Carrier or its Agents for failure to notify"
-                                  prop="hnotifyDetails" >
-                        <el-input type="textarea" :rows="4" style="width: 100%;" v-model="documentForm.hnotifyDetails"
-                                  size="small" autocomplete="off" clearable
-                                  placeholder=" " >
+                    <el-form-item label="Notify party" prop="hnotifyDetails">
+                        <el-input type="textarea" :rows="5" style="width: 100%;" v-model="documentForm.hnotifyDetails"
+                            size="small" autocomplete="off" clearable placeholder=" ">
                         </el-input>
                     </el-form-item>
                 </div>
                 <el-row>
                     <el-col :span="12">
                         <div style="border: 1px solid #000;">
-                            <el-form-item label="PRE-CARRIAGE BY" prop="value1" >
-                                <el-input type="textarea" :rows="2" style="width: 100%;" v-model="documentForm.value1"
-                                          size="small" autocomplete="off" clearable >
+                            <el-form-item label="Pre-Carriage by" prop="value1">
+                                <el-input type="textarea" :rows="1" style="width: 100%;" v-model="documentForm.value1"
+                                    size="small" autocomplete="off" clearable>
                                 </el-input>
                             </el-form-item>
                         </div>
                     </el-col>
                     <el-col :span="12">
                         <div style="border: 1px solid #000;">
-                            <el-form-item label="PLACE OF RECEIPT" prop="placeReceiptNamePrint" >
-                                <el-input type="textarea" :rows="2" style="width: 100%;" v-model="documentForm.placeReceiptNamePrint"
-                                          size="small" autocomplete="off" clearable >
+                            <el-form-item label="place of Receipt" prop="placeReceiptNamePrint">
+                                <el-input type="textarea" :rows="1" style="width: 100%;"
+                                    v-model="documentForm.placeReceiptNamePrint" size="small" autocomplete="off"
+                                    clearable>
                                 </el-input>
                             </el-form-item>
                         </div>
                     </el-col>
                 </el-row>
-            </el-col>
-            <el-col :span="10">
                 <el-row>
-                    <el-col :span="12" >
+                    <el-col :span="12">
                         <div style="border: 1px solid #000;">
-                            <el-form-item label="BOOKING NO." prop="bookingNo" >
-                                <el-input type="textarea" :rows="2" style="width: 100%;" v-model="documentForm.bookingNo"
-                                          size="small" autocomplete="off" clearable >
+                            <el-form-item label="Ocean Vessel Voy No." prop="vesselCnName">
+                                <el-input type="textarea" :rows="1" style="width: 100%;"
+                                    v-model="documentForm.vesselCnName" size="small" autocomplete="off" clearable>
                                 </el-input>
                             </el-form-item>
                         </div>
                     </el-col>
-                    <el-col :span="12" >
+                    <el-col :span="12">
                         <div style="border: 1px solid #000;">
-                            <el-form-item label="BILLOF LADING NO." prop="mblno" >
-                                <el-input type="textarea" :rows="2" style="width: 100%;" v-model="documentForm.mblno"
-                                          size="small" autocomplete="off" clearable >
+                            <el-form-item label="Port of Loading" prop="polEnName">
+                                <el-input type="textarea" :rows="1" style="width: 100%;"
+                                    v-model="documentForm.polEnName" size="small" autocomplete="off" clearable>
                                 </el-input>
                             </el-form-item>
                         </div>
                     </el-col>
                 </el-row>
+                <el-row>
+                    <el-col :span="12">
+                        <div style="border: 1px solid #000;">
+                            <el-form-item label="Port of Discharge" prop="destinationNamePrint">
+                                <el-input type="textarea" :rows="1" style="width: 100%;"
+                                    v-model="documentForm.destinationNamePrint" size="small" autocomplete="off"
+                                    clearable>
+                                </el-input>
+                            </el-form-item>
+                        </div>
+                    </el-col>
+                    <el-col :span="12">
+                        <div style="border: 1px solid #000;">
+                            <el-form-item label="Place of Delivery" prop="podEnName">
+                                <el-input type="textarea" :rows="1" style="width: 100%;"
+                                    v-model="documentForm.podEnName" size="small" autocomplete="off" clearable>
+                                </el-input>
+                            </el-form-item>
+                        </div>
+                    </el-col>
+                </el-row>
+            </el-col>
+            <el-col :span="10">
                 <div style="border: 1px solid #000;">
-                    <el-form-item label="EXPORT REFERENCES(for the Merchant's and/or Carrier's reference only. See back clause 8. (4).)"
-                                  prop="value2" >
-                        <el-input type="textarea" :rows="3" style="width: 100%;" v-model="documentForm.value2"
-                                  size="small" autocomplete="off" clearable>
+                    <el-form-item label=" " prop="">
+                        <el-input type="textarea" :rows="5" style="width: 100%;" disabled size="small"
+                            autocomplete="off" clearable>
                         </el-input>
                     </el-form-item>
                 </div>
                 <div style="border: 1px solid #000;">
-                    <el-form-item label="FORWARDING AGENT-REFERENCESFMC NO." prop="forwarding" >
-                        <el-input type="textarea" :rows="3" style="width: 100%;" v-model="documentForm.forwarding"
-                                  size="small" autocomplete="off" clearable >
+                    <el-form-item label=" " prop="">
+                        <el-input type="textarea" :rows="5" style="width: 100%;" disabled size="small"
+                            autocomplete="off" clearable>
                         </el-input>
                     </el-form-item>
                 </div>
-            </el-col>
-        </el-row>
-        <el-row>
-            <el-col :span="7">
                 <div style="border: 1px solid #000;">
-                    <el-form-item label="OCEAN VESSELVOYAGE NO,FLAG" prop="vesselCnName" >
-                        <el-input type="textarea" :rows="2" style="width: 100%;" v-model="documentForm.vesselCnName"
-                                  size="small" autocomplete="off" clearable >
+                    <el-form-item label=" " prop="">
+                        <el-input type="textarea" :rows="5" style="width: 100%;" disabled size="small"
+                            autocomplete="off" clearable>
                         </el-input>
                     </el-form-item>
                 </div>
-            </el-col>
-            <el-col :span="7">
                 <div style="border: 1px solid #000;">
-                    <el-form-item label="PORT OF LOADING" prop="polEnName" >
-                        <el-input type="textarea" :rows="2" style="width: 100%;" v-model="documentForm.polEnName"
-                                  size="small" autocomplete="off" clearable >
+                    <el-form-item label="For delivery please apply to" prop="mshipperDetails">
+                        <el-input type="textarea" :rows="5" style="width: 100%;" v-model="documentForm.mshipperDetails"
+                            size="small" autocomplete="off" clearable>
                         </el-input>
                     </el-form-item>
                 </div>
-            </el-col>
-            <el-col :span="10">
                 <div style="border: 1px solid #000;">
-                    <el-form-item label="FINAL DESTINATION(for the Merchant's reference only" prop="value3" >
-                        <el-input type="textarea" :rows="2" style="width: 100%;" v-model="documentForm.value3"
-                                  size="small" autocomplete="off" clearable
-                                  placeholder="" >
+                    <el-form-item label="Final Destination(for the Merchant's reference)" prop="">
+                        <el-input type="textarea" :rows="1" style="width: 100%;"
+                            size="small" autocomplete="off" clearable placeholder="">
                         </el-input>
                     </el-form-item>
                 </div>
             </el-col>
         </el-row>
         <el-row>
-            <el-col :span="7">
+            <el-col :span="6">
                 <div style="border: 1px solid #000;">
-                    <el-form-item label="PORT OF DISCHARGE" prop="destinationNamePrint" >
-                        <el-input type="textarea" :rows="2" style="width: 100%;" v-model="documentForm.destinationNamePrint"
-                                  size="small" autocomplete="off" clearable >
+                    <el-form-item label="Marks and Numbers Conatainer No." prop="marks">
+                        <el-input type="textarea" :rows="15" style="width: 100%;" v-model="documentForm.marks"
+                            size="small" autocomplete="off" clearable>
                         </el-input>
                     </el-form-item>
                 </div>
             </el-col>
-            <el-col :span="7">
+            <el-col :span="3">
                 <div style="border: 1px solid #000;">
-                    <el-form-item label="PLACE OF DELIVERY" prop="podEnName" >
-                        <el-input type="textarea" :rows="2" style="width: 100%;" v-model="documentForm.podEnName"
-                                  size="small" autocomplete="off" clearable >
+                    <el-form-item label="Seal No." prop="cntrSealNo">
+                        <el-input type="textarea" :rows="15" style="width: 100%;" v-model="documentForm.cntrSealNo"
+                            size="small" autocomplete="off" clearable>
                         </el-input>
                     </el-form-item>
                 </div>
             </el-col>
-            <el-col :span="10">
+            <el-col :span="3">
                 <div style="border: 1px solid #000;">
-                    <el-form-item label="TYPE OF MOVEMENTUIF MIXED.USE DESCRIPTION OF PACKAGESAND GOODS FIELDI" prop="value4" >
-                        <el-input type="textarea" :rows="2" style="width: 100%;" v-model="documentForm.value4"
-                                  size="small" autocomplete="off" clearable >
+                    <el-form-item label="No. of containers or packages" prop="quantityCntrDescr">
+                        <el-input type="textarea" :rows="14" style="width: 100%;"
+                            v-model="documentForm.quantityCntrDescr" size="small" autocomplete="off" clearable>
                         </el-input>
                     </el-form-item>
                 </div>
             </el-col>
-        </el-row>
-
-        <div style="border-bottom: 1px solid #000;border-top: 1px solid #000;padding: 5px;">
-            <span>(CHECK"HM'"COLUMN IF HAZARDOUS MATERIAL)</span>
-            <span style="font-weight: 500;">PARTICULARS DECLARED BY SHIPPER BUT NOT ACKNOWLEDGED BY THE CARRIER</span>
-        </div>
-        <el-row>
             <el-col :span="6">
                 <div style="border: 1px solid #000;">
-                    <el-form-item label="CNTR.NOS.W/SEAL NOS.MARKS & NUMBERS" prop="marks" >
-                        <el-input type="textarea" :rows="5" style="width: 100%;" v-model="documentForm.marks"
-                                  size="small" autocomplete="off" clearable >
-                        </el-input>
-                        <el-input type="textarea" :rows="5" style="width: 100%;" v-model="documentForm.cntryString"
-                                  size="small" autocomplete="off" clearable >
-                        </el-input>
-                    </el-form-item>
-                </div>
-            </el-col>
-            <el-col :span="7">
-                <div style="border: 1px solid #000;">
-                    <el-form-item label="QUANTITY(FOR CUSTOMS DECLARATION ONLY)" prop="quantity" >
-                        <el-input type="textarea" :rows="10" style="width: 100%;" v-model="documentForm.quantity"
-                                  size="small" autocomplete="off" clearable >
-                        </el-input>
-                    </el-form-item>
-                </div>
-            </el-col>
-            <el-col :span="4">
-                <div style="border: 1px solid #000;">
-                    <el-form-item label="DESCRIPTION OF GOODS" prop="commodityDescr" >
-                        <el-input type="textarea" :rows="10" style="width: 100%;" v-model="documentForm.commodityDescr"
-                                  size="small" autocomplete="off" clearable >
+                    <el-form-item label="Kind of packages,description of goods" prop="commodityDescr">
+                        <el-input type="textarea" :rows="15" style="width: 100%;" v-model="documentForm.commodityDescr"
+                            size="small" autocomplete="off" clearable>
                         </el-input>
                     </el-form-item>
                 </div>
             </el-col>
             <el-col :span="3">
                 <div style="border: 1px solid #000;">
-                    <el-form-item label="GROSS WEIGHT" prop="grossWeight" >
-                        <el-input type="textarea" :rows="10" style="width: 100%;" v-model="documentForm.grossWeight"
-                                  size="small" autocomplete="off" clearable >
+                    <el-form-item label="Gross Weight" prop="grossWeight">
+                        <el-input type="textarea" :rows="15" style="width: 100%;" v-model="documentForm.grossWeight"
+                            size="small" autocomplete="off" clearable>
                         </el-input>
                     </el-form-item>
                 </div>
             </el-col>
-            <el-col :span="4">
+            <el-col :span="3">
                 <div style="border: 1px solid #000;">
-                    <el-form-item label="GROSS MEASUREMENT" prop="measurement" >
-                        <el-input type="textarea" :rows="10" style="width: 100%;" v-model="documentForm.measurement"
-                                  size="small" autocomplete="off" clearable >
+                    <el-form-item label="Measurement" prop="measurement">
+                        <el-input type="textarea" :rows="15" style="width: 100%;" v-model="documentForm.measurement"
+                            size="small" autocomplete="off" clearable>
                         </el-input>
                     </el-form-item>
                 </div>
             </el-col>
         </el-row>
+        <el-row>
+            <div style="border: 1px solid #000;">
+                <el-form-item label="Total No. of Containaers or Packages(in words)" prop="quantityPackingDescr">
+                    <el-row>
+                        <el-col :span="18">
+                            <el-input type="textarea" :rows="1" style="width: 100%;" v-model="documentForm.quantityPackingDescr"
+                                size="small" autocomplete="off" clearable>
+                            </el-input>
+                        </el-col>
+                        <el-col :span="6">
+                            <el-input type="textarea" :rows="1" style="width: 100%;"
+                                v-model="documentForm.quantityCntrTypesDescr" size="small" autocomplete="off" clearable>
+                            </el-input>
+                        </el-col>
+                    </el-row>
 
-        <div style="margin-top: 5px;">
-            <span>Declared Cargo Value US $</span>
-            <el-input style="width: 10%" v-model="documentForm.value5" size="small" autocomplete="off" clearable ></el-input>
-            <span>. If Merchant enters a value. Carrier's limitation of liability shall not apply and the ad valorem rate will be charged.</span>
-        </div>
+                </el-form-item>
+            </div>
+        </el-row>
         <el-row>
-            <el-col :span="2">
+            <el-col :span="6">
                 <div style="border: 1px solid #000;">
-                    <el-form-item label="FREIGHT" prop="hpaymode" >
-                        <el-input type="textarea" :rows="2" style="width: 100%;" v-model="documentForm.hpaymode"
-                                  size="small" autocomplete="off" clearable >
+                    <el-form-item label="Freight and charges" prop="">
+                        <el-input type="textarea" :rows="2" style="width: 100%;"
+                            size="small" autocomplete="off" clearable>
                         </el-input>
                     </el-form-item>
                 </div>
             </el-col>
-            <el-col :span="4">
+            <el-col :span="5">
                 <div style="border: 1px solid #000;">
-                    <el-form-item label="CHARGES PAYABLE AT / BY:" prop="hpayplace" >
-                        <el-input type="textarea" :rows="2" style="width: 100%;" v-model="documentForm.hpayplace"
-                                  size="small" autocomplete="off" clearable >
+                    <el-form-item label="Revenue Tons" prop="">
+                        <el-input type="textarea" :rows="2" style="width: 100%;"
+                            size="small" autocomplete="off" clearable>
                         </el-input>
                     </el-form-item>
                 </div>
             </el-col>
-            <el-col :span="4">
+            <el-col :span="5">
                 <div style="border: 1px solid #000;">
-                    <el-form-item label="SERVICE CONTRACT NO." prop="serviceTerms" >
-                        <el-input type="textarea" :rows="2" style="width: 100%;" v-model="documentForm.serviceTerms"
-                                  size="small" autocomplete="off" clearable >
+                    <el-form-item label="Rate Per" prop="">
+                        <el-input type="textarea" :rows="2" style="width: 100%;"
+                            size="small" autocomplete="off" clearable>
                         </el-input>
                     </el-form-item>
                 </div>
             </el-col>
             <el-col :span="4">
                 <div style="border: 1px solid #000;">
-                    <el-form-item label="DOC FROM NO." prop="value6" >
-                        <el-input type="textarea" :rows="2" style="width: 100%;" v-model="documentForm.value6"
-                                  size="small" autocomplete="off" clearable >
+                    <el-form-item label="Prepaid" prop="">
+                        <el-input type="textarea" :rows="2" style="width: 100%;"
+                            size="small" autocomplete="off" clearable>
                         </el-input>
                     </el-form-item>
                 </div>
             </el-col>
-            <el-col :span="3">
+            <el-col :span="4">
                 <div style="border: 1px solid #000;">
-                    <el-form-item label="COMMODITY CODE" prop="hscode" >
-                        <el-input type="textarea" :rows="2" style="width: 100%;" v-model="documentForm.hscode"
-                                  size="small" autocomplete="off" clearable >
+                    <el-form-item label="Collect" prop="">
+                        <el-input type="textarea" :rows="2" style="width: 100%;"
+                            size="small" autocomplete="off" clearable>
                         </el-input>
                     </el-form-item>
                 </div>
             </el-col>
-            <el-col :span="3">
+        </el-row>
+
+        <el-row>
+            <el-col :span="6">
                 <div style="border: 1px solid #000;">
-                    <el-form-item label="EXCHANGE RATE" prop="value7" >
-                        <el-input type="textarea" :rows="2" style="width: 100%;" v-model="documentForm.value7"
-                                  size="small" autocomplete="off" clearable >
+                    <el-form-item label="Ex.Rate" prop="">
+                        <el-input type="textarea" :rows="5" style="width: 100%;"
+                            size="small" autocomplete="off" clearable>
                         </el-input>
                     </el-form-item>
                 </div>
             </el-col>
-        </el-row>
-
-        <el-row>
-            <el-col :span="20">
+            <el-col :span="12">
                 <el-row>
-                    <el-col :span="4" >
-                        <div style="border: 1px solid #000;">
-                            <el-form-item label="COOE TARIFF ITEM" prop="value8" >
-                                <el-input type="textarea" :rows="13" style="width: 100%;" v-model="documentForm.value8"
-                                          size="small" autocomplete="off" clearable >
-                                </el-input>
-                            </el-form-item>
-                        </div>
-                    </el-col>
-                    <el-col :span="4" >
+                    <el-col :span="12">
                         <div style="border: 1px solid #000;">
-                            <el-form-item label="FREIGHTED AS" prop="value9" >
-                                <el-input type="textarea" :rows="13" style="width: 100%;" v-model="documentForm.value9"
-                                          size="small" autocomplete="off" clearable >
+                            <el-form-item label="Prepaid at" prop="prepaidAt">
+                                <el-input type="textarea" :rows="1" style="width: 100%;" v-model="documentForm.prepaidAt"
+                                    size="small" autocomplete="off" clearable>
                                 </el-input>
                             </el-form-item>
                         </div>
                     </el-col>
-                    <el-col :span="4" >
+                    <el-col :span="12">
                         <div style="border: 1px solid #000;">
-                            <el-form-item label="RATE" prop="value10" >
-                                <el-input type="textarea" :rows="13" style="width: 100%;" v-model="documentForm.value10"
-                                          size="small" autocomplete="off" clearable >
+                            <el-form-item label="Payable at" prop="payableAt">
+                                <el-input type="textarea" :rows="1" style="width: 100%;" v-model="documentForm.payableAt"
+                                    size="small" autocomplete="off" clearable>
                                 </el-input>
                             </el-form-item>
                         </div>
                     </el-col>
-                    <el-col :span="4" >
+                </el-row>
+                <el-row>
+                    <el-col :span="12">
                         <div style="border: 1px solid #000;">
-                            <el-form-item label="PREPAID" prop="value11" >
-                                <el-input type="textarea" :rows="13" style="width: 100%;" v-model="documentForm.value11"
-                                          size="small" autocomplete="off" clearable >
+                            <el-form-item label="Total Prepaid in Local Currency" prop="">
+                                <el-input type="textarea" :rows="1" style="width: 100%;"
+                                    size="small" autocomplete="off" clearable>
                                 </el-input>
                             </el-form-item>
                         </div>
                     </el-col>
-                    <el-col :span="5" >
+                    <el-col :span="12">
                         <div style="border: 1px solid #000;">
-                            <el-form-item label="COLLECT" prop="value12" >
-                                <el-input type="textarea" :rows="13" style="width: 100%;" v-model="documentForm.value12"
-                                          size="small" autocomplete="off" clearable >
+                            <el-form-item label="No. of original B(s)L" prop="">
+                                <el-input type="textarea" :rows="1" style="width: 100%;"
+                                    size="small" autocomplete="off" clearable>
                                 </el-input>
                             </el-form-item>
                         </div>
                     </el-col>
                 </el-row>
             </el-col>
-            <el-col :span="4">
-                <div style="border: 1px solid #000;">
-                    <el-form-item label="DATE CARGO RECEIVED" prop="corpCnName" >
-                        <el-input type="textarea" :rows="2" style="width: 100%;" v-model="documentForm.value13"
-                                  size="small" autocomplete="off" clearable >
-                        </el-input>
-                    </el-form-item>
-                </div>
-                <div style="border: 1px solid #000;">
-                    <el-form-item label="DATE LADEN ON BOARD" prop="etd" >
-                        <el-input type="textarea" :rows="2" style="width: 100%;" v-model="documentForm.etd"
-                                  size="small" autocomplete="off" clearable >
-                        </el-input>
-                    </el-form-item>
-                </div>
-                <div style="border: 1px solid #000;">
-                    <el-form-item label="PLACE OF BILL(S)ISSUE" prop="issueAt" >
-                        <el-input type="textarea" :rows="2" style="width: 100%;" v-model="documentForm.issueAt"
-                                  size="small" autocomplete="off" clearable >
-                        </el-input>
-                    </el-form-item>
-                </div>
+            <el-col :span="6">
                 <div style="border: 1px solid #000;">
-                    <el-form-item label="DATED" prop="etd" >
-                        <el-input type="textarea" :rows="2" style="width: 100%;" v-model="documentForm.etd"
-                                  size="small" autocomplete="off" clearable >
+                    <el-form-item label="Place and date of issue" prop="">
+                        <el-input type="textarea" :rows="5" style="width: 100%;"
+                            size="small" autocomplete="off" clearable>
                         </el-input>
                     </el-form-item>
                 </div>
             </el-col>
         </el-row>
 
-        <el-row>
-            <el-col :span="6">
-                <span>The printed terms and conditions on this Bill are available at its website at www.one-line.com</span>
-            </el-col>
-            <el-col :span="4">
-                <div style="border: 1px solid #000;height: 80px;"></div>
-            </el-col>
-            <el-col :span="4">
-                <div style="border: 1px solid #000;height: 80px;"></div>
-            </el-col>
-            <el-col :span="5">
-                <el-form-item label="SIGNED BY:" prop="value14" >
-                    <el-input type="textarea" :rows="2" style="width: 100%;" v-model="documentForm.value14"
-                              size="small" autocomplete="off" clearable >
-                    </el-input>
-                </el-form-item>
-            </el-col>
-            <el-col :span="5">
-                <span>.as agent for and on behalf of</span>
-            </el-col>
-        </el-row>
-
     </el-form>
 </template>
 
 <script>
-    import SearchQuery from "@/components/iosbasic-data/searchquery.vue";
-    import {bportsList} from "@/api/iosBasicData/bports";
-    import {getDeptTree} from "@/api/system/dept";
-    import TreeSelect from "@/components/iosbasic-data/TreeSelect.vue";
+import SearchQuery from "@/components/iosbasic-data/searchquery.vue";
+import { bportsList } from "@/api/iosBasicData/bports";
+import { getDeptTree } from "@/api/system/dept";
+import TreeSelect from "@/components/iosbasic-data/TreeSelect.vue";
 
-    export default {
-        components: {TreeSelect, SearchQuery},
-        data(){
-            return {
-                destinationData:[], // 目的港数据
-                departmentData:[], // 部门
-            }
+export default {
+    components: { TreeSelect, SearchQuery },
+    data() {
+        return {
+            destinationData: [], // 目的港数据
+            departmentData: [], // 部门
+        }
+    },
+    props: {
+        // 表单对象
+        documentForm: {
+            type: Object,
+            default: {}
         },
-        props:{
-            // 表单对象
-            documentForm:{
-                type:Object,
-                default:{}
-            },
 
-        },
-        created() {
-            this.getLazylistfun()
-        },
-        methods:{
-            corpChange(value,name){
-                if (name == 'destinationName') {
-                    for(let item of this.destinationData) {
-                        if (item.enName == value) {
-                            this.$set(this.documentForm,'destinationId',item.id)
-                            this.$set(this.documentForm,'destinationName',item.enName)
-                            this.$set(this.documentForm,'destinationCode',item.code)
-                            this.$set(this.documentForm,'destinationNamePrint',item.enName)
-                        }
+    },
+    created() {
+        this.getLazylistfun()
+    },
+    methods: {
+        corpChange(value, name) {
+            if (name == 'destinationName') {
+                for (let item of this.destinationData) {
+                    if (item.enName == value) {
+                        this.$set(this.documentForm, 'destinationId', item.id)
+                        this.$set(this.documentForm, 'destinationName', item.enName)
+                        this.$set(this.documentForm, 'destinationCode', item.code)
+                        this.$set(this.documentForm, 'destinationNamePrint', item.enName)
                     }
-                }else {
-                    this.$set(this.documentForm,name,value)
                 }
-            },
-            // 目的地
-            destinationBportsListfun(enName){
-                bportsList(1,10,{enName}).then(res=>{
-                    this.destinationData = res.data.data.records
-                })
-            },
-            // 获取机构管理接口
-            getLazylistfun(){
-                getDeptTree().then(res=>{
-                    this.departmentData = res.data.data
-                })
-            },
+            } else {
+                this.$set(this.documentForm, name, value)
+            }
+        },
+        // 目的地
+        destinationBportsListfun(enName) {
+            bportsList(1, 10, { enName }).then(res => {
+                this.destinationData = res.data.data.records
+            })
+        },
+        // 获取机构管理接口
+        getLazylistfun() {
+            getDeptTree().then(res => {
+                this.departmentData = res.data.data
+            })
+        },
 
-        }
     }
+}
 </script>
 
 <style scoped>
 ::v-deep.el-form-item {
     margin-bottom: 0;
 }
+
 ::v-deep.el-form--label-top .el-form-item__label {
     padding: 0;
     line-height: 20px;

+ 42 - 22
src/views/iosBasicData/SeafreightExportF/bills/billsDetails.vue

@@ -56,8 +56,8 @@
                 <el-button size="small" style="margin-right: 8px" :loading="saveLoading" :disabled="!form.id"
                     v-if="bigtabs == 'fy'" @click="previewDialogfun">预 览
                 </el-button>
-                <el-button size="small" type="warning" :disabled="!form.id || detailData.seeDisabled || showLock"
-                    v-if="form.status == 1" @click.stop="revokeDocumentApproval">撤销单据请核
+                <el-button size="small" type="warning" :disabled="!form.id || showLock" v-if="form.status == 1"
+                    @click.stop="revokeDocumentApproval">撤销单据请核
                 </el-button>
                 <el-button size="small" type="success" :disabled="!form.id || detailData.seeDisabled || showLock"
                     v-if="form.status == 0 || form.status == 4" @click.stop="DocumentApproval">单据请核
@@ -2075,16 +2075,36 @@ export default {
                         if (!item.corpId || !item.feeId || !item.elementsId || !item.curCode) {
                             msgs.push(`应收第${item.$index + 1}行${!item.corpId ? ' 往来单位' : ''}${!item.feeId ? ' 费用简称' : ''}${!item.elementsId ? ' 核算要素' : ''}${!item.curCode ? ' 币种' : ''}`)
                         }
-                        if (Number(item.price)==0) {
-                            msgs.push(`应收第${item.$index + 1}行单价不能为0`)
+                        if (Number(item.price) == 0 || !item.price) {
+                            msgs.push(`应收第${item.$index + 1}行单价不能为0或空`)
+                        }
+                        if (item.curCode == 'CNY') {
+                            if (Number(item.rmbAmount) == 0 || !item.rmbAmount) {
+                                msgs.push(`应收第${item.$index + 1}行金额不能为0`)
+                            }
+                        }
+                        if (item.curCode == 'USD') {
+                            if (Number(item.usdAmount) == 0 || !item.usdAmount) {
+                                msgs.push(`应收第${item.$index + 1}行金额不能为0`)
+                            }
                         }
                     }
                     for (let item of this.form.feeCenterListC) {
                         if (!item.corpId || !item.feeId || !item.elementsId || !item.curCode) {
                             msgs.push(`应付第${item.$index + 1}行${!item.corpId ? ' 往来单位' : ''}${!item.feeId ? ' 费用简称' : ''}${!item.elementsId ? ' 核算要素' : ''}${!item.curCode ? ' 币种' : ''}`)
                         }
-                         if (Number(item.price)==0) {
-                            msgs.push(`应付第${item.$index + 1}行单价不能为0`)
+                        if (Number(item.price) == 0 || !item.price) {
+                            msgs.push(`应付第${item.$index + 1}行单价不能为0或空`)
+                        }
+                        if (item.curCode == 'CNY') {
+                            if (Number(item.rmbAmount) == 0 || !item.rmbAmount) {
+                                msgs.push(`应收第${item.$index + 1}行金额不能为0`)
+                            }
+                        }
+                        if (item.curCode == 'USD') {
+                            if (Number(item.usdAmount) == 0 || !item.usdAmount) {
+                                msgs.push(`应收第${item.$index + 1}行金额不能为0`)
+                            }
                         }
                     }
                     if (msgs.length > 0) {
@@ -2243,10 +2263,10 @@ export default {
                         let fldNames = 'hshipperDetails,hconsigneeDetails,hnotifyDetails,mshipperDetails,mconsigneeDetails,mnotifyDetails'.split(",");
                         let fldDescs = '发货人,收货人,通知人,MBL 发货人,MBL 收货人,MBL 通知人'.split(",");
                         let msgsList = []
-                        fldNames.forEach((fld, idx)=>{
+                        fldNames.forEach((fld, idx) => {
                             const cfs = checkFullWidthSymbols(this.form.detail[fld]);
-                            if(cfs.hasFullWidth){
-                                if(cfs.isResetText){
+                            if (cfs.hasFullWidth) {
+                                if (cfs.isResetText) {
                                     this.$set(this.form.detail, fld, cfs.resetText);
                                 }
                                 msgsList.push(fldDescs[idx] + ": " + cfs.message)
@@ -2255,24 +2275,24 @@ export default {
 
                         fldNames = 'marks,commodityDescr,forwarding,siRemarks,bookingRemarks'.split(",");
                         fldDescs = '唛头,货描,FORWARDING,SI 备注,订舱备注'.split(",");
-                        fldNames.forEach((fld, idx)=>{
+                        fldNames.forEach((fld, idx) => {
                             const cfs = checkFullWidthSymbols(this.form[fld]);
                             console.log(fldDescs[idx], cfs)
-                            if(cfs.isResetText===true){
+                            if (cfs.isResetText === true) {
                                 console.log("set", fld, this.form[fld], cfs.resetText)
                                 this.$set(this.form, fld, cfs.resetText);
                             }
-                            if(cfs.hasFullWidth){
+                            if (cfs.hasFullWidth) {
                                 msgsList.push(fldDescs[idx] + ": " + cfs.message)
                             }
                         })
 
                         fldNames = 'placeReceiptNamePrint,polNamePrint,podNamePrint,destinationNamePrint,placeDeliveryNamePrint,potNamePrint'.split(",");
                         fldDescs = '收货地,装货港,卸货港,目的地,交货地,中转港'.split(",");
-                        fldNames.forEach((fld, idx)=>{
+                        fldNames.forEach((fld, idx) => {
                             const cfs = checkFullWidthSymbols(this.form[fld]);
-                            if(cfs.hasFullWidth){
-                                if(cfs.isResetText){
+                            if (cfs.hasFullWidth) {
+                                if (cfs.isResetText) {
                                     this.$set(this.form, fld, cfs.resetText);
                                 }
                                 msgsList.push(fldDescs[idx] + ": " + cfs.message)
@@ -2288,7 +2308,7 @@ export default {
                             return;
                         }
 
-                        msgsList=[]
+                        msgsList = []
                         console.log(this.form.detail)
                         if (!verifyEnglish(this.form.detail.hshipperDetails)) {
                             msgsList.push('发货人')
@@ -2631,6 +2651,12 @@ export default {
             const res = await billsDetail(id)
             // this.form = res.data.data;
             this.$set(this, 'form', res.data.data)
+            // 如果已经请核就禁用按钮
+            if (this.form.status == 1 || this.form.status == 2 || this.form.status == 3) {
+                this.detailData.seeDisabled = true
+            } else {
+                this.detailData.seeDisabled = false
+            }
             if (this.overdueJudgment(res.data.data.locked == 0 ? res.data.data.etd : res.data.data.lockedDate)) {
                 this.detailData.seeDisabled = true
                 this.$message.error("已锁账,请申请解锁");
@@ -2643,12 +2669,6 @@ export default {
             // console.log(this.$refs)
 
             this.copyFormData = JSON.parse(JSON.stringify(res.data.data))
-            // 如果已经请核就禁用按钮
-            // if (this.form.status == 1 || this.form.status == 2 || this.form.status == 3) {
-            //     this.detailData.seeDisabled = true
-            // }else {
-            //     this.detailData.seeDisabled = false
-            // }
             this.columnforfun('teamName').disabled = true
 
             this.columnforfun('operatorName').disabled = true

+ 19 - 2
src/views/iosBasicData/financeProfit/index.vue

@@ -123,7 +123,7 @@ export default {
                 calcHeight: 30,
                 tip: false,
                 searchShow: true,
-                searchMenuSpan: 24,
+                searchMenuSpan: 18,
                 border: true,
                 index: false,
                 selection: true,
@@ -257,7 +257,7 @@ export default {
                     {
                         label: "日期",
                         prop: "statisticsDate",
-                        width:100,
+                        width: 100,
                         overHidden: true,
                         type: "date",
                         format: "yyyy-MM-dd",
@@ -294,6 +294,19 @@ export default {
                         valueFormat: "yyyy-MM-dd",
                     },
                     {
+                        label: "客户来源",
+                        prop: "corpSource",
+                        // hide: true,
+                        search: true,
+                        type: "select",
+                        dicUrl: "/api/blade-system/dict-biz/dictionary?code=corp_Source",
+                        props: {
+                            label: "dictValue",
+                            value: "dictValue"
+                        },
+                        overHidden: true,
+                    },
+                    {
                         label: "业务员",
                         prop: "salesman",
                         overHidden: true,
@@ -805,6 +818,10 @@ export default {
                 financeStatisticsFinanceProfitSum(Object.assign(params, this.query)).then(re => {
                     this.commodityData = [re.data.data]
                 })
+                this.$nextTick(() => {
+                    this.$refs.crud.doLayout();
+                    this.$refs.crud.dicInit();
+                });
                 this.selectionClear();
             });
         },

File diff suppressed because it is too large
+ 1077 - 873
src/views/iosBasicData/reportClose/AEreportClose/index.vue


File diff suppressed because it is too large
+ 1080 - 873
src/views/iosBasicData/reportClose/AIreportClose/index.vue


File diff suppressed because it is too large
+ 1078 - 873
src/views/iosBasicData/reportClose/SEreportClose/index.vue


File diff suppressed because it is too large
+ 1076 - 872
src/views/iosBasicData/reportClose/SIreportClose/index.vue


Some files were not shown because too many files changed in this diff