Browse Source

客户托书 新加报表 财务发票 币别和汇率联动 申请修改 新加修改原因 完善修改联动

Qukatie 7 months ago
parent
commit
2561190834

+ 1085 - 0
src/components/boxManagement/businessReportsTS.vue

@@ -0,0 +1,1085 @@
+<template>
+  <div>
+    <el-dialog append-to-body title="预览报表" class="el-dialogDeep" :visible.sync="previewDialog" width="60%"
+      :close-on-click-modal="false" :destroy-on-close="true" :close-on-press-escape="false" v-dialog-drag>
+      <avue-crud :option="selecList.length || type ? optionBack : optionPrinting" :table-loading="loading" :data="data"
+        :page.sync="page" :permission="permissionList" v-model="form" ref="crud" id="out-table"
+        :header-cell-class-name="headerClassName" :search.sync="query" @search-change="searchChange"
+        @search-reset="searchReset" @selection-change="selectionChange" @current-change="currentChange"
+        @size-change="sizeChange" @refresh-change="refreshChange">
+        <template slot-scope="scope" slot="menu">
+          <el-link type="primary" :disabled="scope.row.status == 1"
+            @click="reportsGetReportDatafun(scope.row.url, scope.row)">预览报表</el-link>
+        </template>
+        <template slot="curCode" slot-scope="{ row }">
+          <dic-select v-model="row.curCode" placeholder="币别" key="id" keyValue="key" label="code"
+            :mockData="curCodeList" :filterable="true" :activateCreated="false"></dic-select>
+        </template>
+      </avue-crud>
+    </el-dialog>
+    <reportContainer ref="reportContainer"></reportContainer>
+    <mail-component ref="mailComponentRef" />
+  </div>
+</template>
+
+<script>
+import { getList, getDetail, add, update, remove, printingUpdate } from "@/api/boxManagement/reports";
+// import { reportsGetReportData } from "@/api/boxManagement/reports";
+import { reportsGetReportData } from "@/api/iosBasicData/reports";
+import { getUserApprovalList } from "@/api/approval/processConfig";
+import { mapGetters } from "vuex";
+import { billsDetail } from '@/api/iosBasicData/bills'
+import { bbusinesstypeList } from "@/api/iosBasicData/bbusinesstype";
+import reportContainer from "@/views/iosBasicData/report-container/report-container.vue"
+import { getFeeCenterCorpIds } from "@/api/iosBasicData/feecenter";
+import dicSelect from "@/components/dicSelect/main";
+import mailComponent from "@/components/iosbasic-data/mail-component.vue";
+export default {
+  components: {
+    dicSelect,
+    reportContainer,
+    mailComponent
+  },
+  props: {
+    id: {
+      type: String
+    },
+    disabled: {
+      type: Boolean,
+      default: false,
+    },
+    businessValue: {
+      type: String,
+      default: ''
+    },
+    classifyCode: {
+      type: String,
+      default: ''
+    },
+    groupCode: {
+      type: String,
+      default: ''
+    },
+    selecList: {
+      type: Array,
+      default: []
+    },
+    itemIds: {
+      type: String,
+      default: null
+    },
+    type: {
+      type: Boolean,
+      default: false,
+    },
+
+  },
+  data() {
+    return {
+      roleName: localStorage.getItem("roleName"),
+      curCodeList: [
+        {
+          key: null,
+          code: '全部'
+        },
+        {
+          key: 'CNY',
+          code: 'CNY'
+        },
+        {
+          key: 'USD',
+          code: 'USD'
+        }
+      ],
+      userList: [],
+      previewDialog: false,
+      isPrintTheBoxNumber: false,
+      bbDisabled: false,
+      form: {},
+      formReport: {},
+      query: {
+        classifyCode: '业务',
+      },
+      loading: true,
+      page: {
+        pageSize: 10,
+        currentPage: 1,
+        total: 0
+      },
+      optionPrinting: {
+        stripe: true,
+        height: 400,
+        calcHeight: 30,
+        tip: false,
+        searchShow: true,
+        searchMenuSpan: 6,
+        border: true,
+        selection: true,
+        dialogClickModal: false,
+        refreshBtn: false,
+        columnBtn: false,
+        addBtn: false,
+        viewBtn: false,
+        delBtn: false,
+        editBtn: false,
+        menuWidth: '100',
+        header: false,
+        // menu:false,
+        column: [
+          // {
+          //     label: "币别",
+          //     prop: "curCode",
+          //     overHidden: true,
+          //   },
+          {
+            label: "客户名称",
+            prop: "cnName",
+            overHidden: true,
+          },
+          {
+            label: "客户编号",
+            prop: "code",
+            overHidden: true,
+          },
+        ]
+      },
+      selectionList: [],
+      option: {},
+      optionBack: {
+        height: 400,
+        calcHeight: 30,
+        tip: false,
+        searchShow: false,
+        searchMenuSpan: 6,
+        border: true,
+        index: true,
+        viewBtn: true,
+        selection: true,
+        searchBtn: false,
+        emptyBtn: false,
+        dialogClickModal: false,
+        menuWidth: 100,
+        column: [
+          {
+            label: "组别",
+            prop: "groupCode",
+            overHidden: true,
+            rules: [{
+              required: true,
+              message: "请输入组别",
+              trigger: "blur"
+            }]
+          },
+          {
+            label: "业务类别",
+            prop: "classifyCode",
+            overHidden: true,
+          },
+          {
+            label: "报表编码",
+            prop: "code",
+            overHidden: true,
+            rules: [{
+              required: true,
+              message: "请输入报表编码",
+              trigger: "blur"
+            }]
+          },
+          {
+            label: "中文名称",
+            prop: "cnName",
+            overHidden: true,
+            rules: [{
+              required: true,
+              message: "请输入中文名称",
+              trigger: "blur"
+            }]
+          },
+          {
+            label: "英文名称",
+            prop: "enName",
+            overHidden: true,
+          },
+          {
+            label: "报表格式",
+            prop: "content",
+            overHidden: true,
+            rules: [{
+              required: true,
+              message: "请输入报表格式",
+              trigger: "blur"
+            }]
+          },
+          {
+            label: "备注",
+            prop: "remarks",
+            overHidden: true,
+          },
+        ]
+      },
+      data: [],
+    };
+  },
+  async created() {
+    // this.option = await this.getColumnData(this.getColumnName(397), this.optionBack);
+    getUserApprovalList().then(res => {
+      this.findObject(this.option.column, "authorizedUsersId").dicData = res.data.data
+    })
+    // 获取业务类型
+    bbusinesstypeList(1, 20).then(res => {
+      this.findObject(this.option.column, "businessType").dicData = res.data.data.records
+    })
+  },
+  computed: {
+    ...mapGetters(["permission"]),
+    permissionList() {
+      return {
+        addBtn: this.vaildData(this.permission.reports_add, false),
+        viewBtn: this.vaildData(this.permission.reports_view, false),
+        delBtn: this.vaildData(this.permission.reports_delete, false),
+        editBtn: this.vaildData(this.permission.reports_edit, false)
+      };
+    },
+    ids() {
+      let ids = [];
+      this.selectionList.forEach(ele => {
+        ids.push(ele.id);
+      });
+      return ids.join(",");
+    }
+  },
+  methods: {
+    openDialog() {
+      this.previewDialog = true
+      this.onLoad(this.page, this.query);
+    },
+    // 设计报表
+    async reportDesignButton(url) {
+      Stimulsoft.Base.StiLicense.key = '6vJhGtLLLz2GNviWmUTrhSqnOItdDwjBylQzQcAOiHn0s4gy0Fr5YoUZ9V00Y0igCSFQzwEqYBh/N77k4f0fWXTHW5rqeBNLkaurJDenJ9o97TyqHs9HfvINK18Uwzsc/bG01Rq+x3H3Rf+g7AY92gvWmp7VA2Uxa30Q97f61siWz2dE5kdBVcCnSFzC6awE74JzDcJMj8OuxplqB1CYcpoPcOjKy1PiATlC3UsBaLEXsok1xxtRMQ283r282tkh8XQitsxtTczAJBxijuJNfziYhci2jResWXK51ygOOEbVAxmpflujkJ8oEVHkOA/CjX6bGx05pNZ6oSIu9H8deF94MyqIwcdeirCe60GbIQByQtLimfxbIZnO35X3fs/94av0ODfELqrQEpLrpU6FNeHttvlMc5UVrT4K+8lPbqR8Hq0PFWmFrbVIYSi7tAVFMMe2D1C59NWyLu3AkrD3No7YhLVh7LV0Tttr/8FrcZ8xirBPcMZCIGrRIesrHxOsZH2V8t/t0GXCnLLAWX+TNvdNXkB8cF2y9ZXf1enI064yE5dwMs2fQ0yOUG/xornE'
+      // Stimulsoft.Base.StiLicense.Key = '6vJhGtLLLz2GNviWmUTrhSqnOItdDwjBylQzQcAOiHkcgIvwL0jnpsDqRpWg5FI5kt2G7A0tYIcUygBh1sPs7plofUOqPB1a4HBIXJB621mau2oiAIj+ysU7gKUXfjn/D5BocmduNB+ZMiDGPxFrAp3PoD0nYNkkWh8r7gBZ1v/JZSXGE3bQDrCQCNSy6mgby+iFAMV8/PuZ1z77U+Xz3fkpbm6MYQXYp3cQooLGLUti7k1TFWrnawT0iEEDJ2iRcU9wLqn2g9UiWesEZtKwI/UmEI2T7nv5NbgV+CHguu6QU4WWzFpIgW+3LUnKCT/vCDY+ymzgycw9A9+HFSzARiPzgOaAuQYrFDpzhXV+ZeX31AxWlnzjDWqpfluygSNPtGul5gyNt2CEoJD1Yom0VN9fvRonYsMsimkFFx2AwyVpPcs+JfVBtpPbTcZscnzUdmiIvxv8Gcin6sNSibM6in/uUKFt3bVgW/XeMYa7MLGF53kvBSwi78poUDigA2n12SmghLR0AHxyEDIgZGOTbNI33GWu7ZsPBeUdGu55R8w='
+      Stimulsoft.Base.Localization.StiLocalization.addLocalizationFile('/reports/stimulsoft/Localization/zh-CHS.xml', true, 'zh-CHS')
+      Stimulsoft.Base.Localization.StiLocalization.setLocalizationFile('/reports/stimulsoft/Localization/zh-CHS.xml')
+
+      var options = new Stimulsoft.Designer.StiDesignerOptions()
+      options.appearance.fullScreenMode = true
+      options.allowChangeWindowTitle = false
+      options.toolbar.showSaveDialog = false
+
+      options.toolbar.showFileMenuSave = false
+      options.toolbar.showFileMenuAbout = false
+      options.toolbar.showFileMenuClose = false
+      options.toolbar.showFileMenuExit = false
+      options.toolbar.showFileMenuInfo = false
+      options.toolbar.showFileMenuHelp = false
+      options.toolbar.showFileMenuNew = false
+
+      options.appearance.showTooltips = false
+      options.appearance.showDialogsHelp = false
+
+      options.toolbar.showSetupToolboxButton = true
+      options.appearance.htmlRenderMode = Stimulsoft.Report.Export.StiHtmlExportMode.Table
+
+      let designer = new Stimulsoft.Designer.StiDesigner(
+        options,
+        'StiDesigner',
+        false
+      )
+
+      designer.onSaveReport = (e) => {
+        console.log('onSaveReport')
+        // let jsObject = this.jsObject
+
+        if (!e.report.isModified)
+          return
+        var jsonString = e.report.saveToJsonString()
+        // console.log(jsonString)
+        this.form.url = jsonString;
+
+        console.log('保存url')
+        console.log(jsonString)
+        console.log('保存url结束')
+
+      }
+
+      let report = new window.Stimulsoft.Report.StiReport();
+
+      report.styles.loadFile('static/Plugins/reports/css/Styles.sts')
+      report.applyStyles()
+
+
+      console.log("从 url 报表");
+      console.log(url)
+      console.log("结束");
+      if (url) {
+        report.load(url)
+      }
+
+      // 加载文件
+      // if (this.id) {
+      //   billsDetail(this.id).then(res => {
+      //     var data = res.data.data
+      //     data.pageOne = 'Page : 1 of 1'
+      //     // 处理超长数据
+      //     if (data.hshipperDetails) {
+      //       var consignerIndex2 = data.hshipperDetails.indexOf( '\n' )
+      //       for (let i = 0; i < 4; i++) {
+      //         consignerIndex2 = data.hshipperDetails.indexOf( '\n', consignerIndex2 + 1 );
+      //       }
+      //       if (consignerIndex2 != -1) {
+      //         var hshipperDetails = data.hshipperDetails.substring(consignerIndex2 + 2, data.hshipperDetails.length)
+      //         data.hshipperDetails = data.hshipperDetails.substring(0, consignerIndex2) + ' *'
+      //         data.commodityDescr += '\n*' + hshipperDetails
+      //       }
+      //     }
+      //
+      //     if (data.hconsigneeDetails) {
+      //       var consigneeIndex2 = data.hconsigneeDetails.indexOf( '\n' )
+      //       for (let i = 0; i < 3; i++) {
+      //         consigneeIndex2 = data.hconsigneeDetails.indexOf( '\n', consigneeIndex2 + 1 );
+      //       }
+      //       if (consigneeIndex2 != -1) {
+      //         var hconsigneeDetails = data.hconsigneeDetails.substring(consigneeIndex2 + 2, data.hconsigneeDetails.length)
+      //         data.hconsigneeDetails = data.hconsigneeDetails.substring(0, consigneeIndex2) + ' **'
+      //         data.commodityDescr += '\n**' + hconsigneeDetails
+      //       }
+      //     }
+      //
+      //     if (data.hnotifyDetails) {
+      //       var notifierIndex2 = data.hnotifyDetails.indexOf( '\n' )
+      //       for (let i = 0; i < 3; i++) {
+      //         notifierIndex2 = data.hnotifyDetails.indexOf( '\n', notifierIndex2 + 1 );
+      //       }
+      //       if (notifierIndex2 != -1) {
+      //         var hnotifyDetails = data.hnotifyDetails.substring(notifierIndex2 + 2, data.hnotifyDetails.length)
+      //         data.hnotifyDetails = data.hnotifyDetails.substring(0, notifierIndex2) + ' ***'
+      //         data.commodityDescr += '\n***' + hnotifyDetails
+      //       }
+      //     }
+      //
+      //     // 处理箱号
+      //     if (this.isPrintTheBoxNumber) {
+      //       data.commodityDescr += '\n.\n.\n'
+      //     }
+      //
+      //     // PLACE & DATE OF ISSUE
+      //     data.placeAndDateOfIssue = ''
+      //     if (data.issueAt) {
+      //       data.placeAndDateOfIssue += data.issueAt
+      //     }
+      //     if (data.issueDate) {
+      //       let date = new Date(data.issueDate.replace(/-/g,'/'));
+      //       let yyyy = date.getFullYear();
+      //       let mmmm = date.toDateString().split(" ")[1]
+      //       let dd = date.getDate()
+      //       data.placeAndDateOfIssue += ', ' + dd + '-' + mmmm + '-' + yyyy
+      //     }
+      //
+      //     // Total number of containers or packages received by the Carriers
+      //     if (data.preContainersList) {
+      //       let boxMap = new Map();
+      //       for (let boxQuantity of data.preContainersList) {
+      //         if (boxMap.get(boxQuantity.cntrTypeCode)) {
+      //           let v = boxMap.get(boxQuantity.cntrTypeCode)
+      //           boxMap.set(boxQuantity.cntrTypeCode, v + boxQuantity.quantity)
+      //         } else {
+      //           boxMap.set(boxQuantity.cntrTypeCode, boxQuantity.quantity)
+      //         }
+      //       }
+      //       let boxs = ''
+      //       boxMap.forEach(function (value, key, map) {
+      //         boxs += value + 'x' + key + ', '
+      //       })
+      //       boxs = boxs.substring(0, boxs.length - 2)
+      //
+      //       data.boxQuantity = boxs + ' CONTAINER(S) ONLY'
+      //     }
+      //
+      //     // Number of original B/Ls
+      //     if (data.numberOfObl) {
+      //       data.numberOfObl += ' (' + data.numberOfOblDigit + ')'
+      //     }
+      //
+      //     if (data.commodityDescr) {
+      //       var descriptionIndex2 = data.commodityDescr.indexOf( '\n' )
+      //       for (let i = 0; i < 19; i++) {
+      //         descriptionIndex2 = data.commodityDescr.indexOf( '\n', descriptionIndex2 + 1 );
+      //       }
+      //       if (descriptionIndex2 != -1) {
+      //         data.pageOne = 'Page : 1 of 2'
+      //         data.pageTwo = 'Page : 2 of 2'
+      //         var extraLongText = data.commodityDescr.substring(descriptionIndex2 + 2, data.commodityDescr.length)
+      //         data.commodityDescr = data.commodityDescr.substring(0, descriptionIndex2)
+      //         data.extraLongTips = '** TO BE CONTINUED ON ATTACHED LIST **'
+      //         data.extraLongText = extraLongText
+      //       }
+      //     }
+      //     var dataSet = new Stimulsoft.System.Data.DataSet(
+      //       'reportData'
+      //     )
+      //     dataSet.readJson(data)
+      //     report.regData('reportData', 'reportData', dataSet)
+      //     // 从模版和数据加载报表
+      //     // loadReport(report, '', {})
+      //
+      //     designer.report = report
+      //   })
+      // }
+
+      // let data = [
+      //   {
+      //     id: 2,
+      //     billNo: 'JOB NO',
+      //     billDate: 'DATE',
+      //     operatorName: 'OP',
+      //     bookingNo: 'bookingNo',
+      //     mblno: 'ob/l no',
+      //     carrierCnName: 'CARRIER',
+      //     polCnName: 'POL',
+      //     vesselCnName: 'vsl/voy',
+      //     voyageNo: 'vsl/voy',
+      //     podCnName: 'POD',
+      //     cyCnName: 'DEPOT',
+      //     etd: 'etd/eta',
+      //     eta: 'etd/eta',
+      //     mpaymode: 'freight / freight',
+      //     volume: '箱型箱量',
+      //     hblno: 'hb/l no',
+      //     srcType: 'analysis1',
+      //     srcCnName: 'analysis2',
+      //     corpCnName: 'analysis3',
+      //     list: [
+      //       {
+      //         id:1,
+      //         pid:2,
+      //         feeCnNameData: 'fee list1',
+      //         usd: 'usd',
+      //         rmb: 'rmb',
+      //         tr: '税',
+      //         corpCnName: 'customer',
+      //       },
+      //       {
+      //         id:2,
+      //         pid:2,
+      //         feeCnNameData: 'fee list2',
+      //         usd: 'usd',
+      //         rmb: 'rmb',
+      //         tr: '税',
+      //         corpCnName: 'customer',
+      //       },
+      //     ]
+      //
+      //   }, {
+      //       id:3,
+      //     billNo: 'JOB NO',
+      //     billDate: 'DATE',
+      //     operatorName: 'OP',
+      //     bookingNo: 'bookingNo',
+      //     mblno: 'ob/l no',
+      //     carrierCnName: 'CARRIER',
+      //     polCnName: 'POL',
+      //     vesselCnName: 'vsl/voy',
+      //     voyageNo: 'vsl/voy',
+      //     podCnName: 'POD',
+      //     cyCnName: 'DEPOT',
+      //     etd: 'etd/eta',
+      //     eta: 'etd/eta',
+      //     mpaymode: 'freight / freight',
+      //     volume: '箱型箱量',
+      //
+      //     hblno: 'hb/l no',
+      //     srcType: 'analysis1',
+      //     srcCnName: 'analysis2',
+      //     corpCnName: 'analysis3',
+      //     list: [
+      //       {
+      //         id:3,
+      //         pid:3,
+      //         feeCnNameData: 'fee list',
+      //         usd: 'usd',
+      //         rmb: 'rmb',
+      //         tr: '税',
+      //         corpCnName: 'customer',
+      //       },
+      //       {
+      //         id:4,
+      //         pid:3,
+      //         feeCnNameData: 'fee list',
+      //         usd: 'usd',
+      //         rmb: 'rmb',
+      //         tr: '税',
+      //         corpCnName: 'customer',
+      //       },
+      //     ]
+      //
+      //   }, {
+      //       id:4,
+      //     billNo: 'JOB NO',
+      //     billDate: 'DATE',
+      //     operatorName: 'OP',
+      //     bookingNo: 'bookingNo',
+      //     mblno: 'ob/l no',
+      //     carrierCnName: 'CARRIER',
+      //     polCnName: 'POL',
+      //     vesselCnName: 'vsl/voy',
+      //     voyageNo: 'vsl/voy',
+      //     podCnName: 'POD',
+      //     cyCnName: 'DEPOT',
+      //     etd: 'etd/eta',
+      //     eta: 'etd/eta',
+      //     mpaymode: 'freight / freight',
+      //     volume: '箱型箱量',
+      //
+      //     hblno: 'hb/l no',
+      //     srcType: 'analysis1',
+      //     srcCnName: 'analysis2',
+      //     corpCnName: 'analysis3',
+      //     list: [
+      //       {
+      //         id:10,
+      //         pid:4,
+      //         feeCnNameData: 'fee list',
+      //         usd: 'usd',
+      //         rmb: 'rmb',
+      //         tr: '税',
+      //         corpCnName: 'customer',
+      //       },
+      //       {
+      //         id:11,
+      //         pid:4,
+      //         feeCnNameData: 'fee list',
+      //         usd: 'usd',
+      //         rmb: 'rmb',
+      //         tr: '税',
+      //         corpCnName: 'customer',
+      //       },
+      //     ]
+      //   },
+      // ]
+      // 获取报表数据
+      const res = await reportsGetReportData({
+        billId: this.id,
+        reportCode: this.form.code,
+        groupCode: this.form.groupCode,
+        itemIds: this.itemIds,
+        type: this.businessValue
+      })
+      // 获取的数据赋值
+      console.log(res.data.data, 584)
+      if (!res.data.data.data) {
+        var data = res.data.data.data
+      } else {
+        var data = res.data.data.data
+        // var data = res.data.data.data.map((item,index)=>{
+        //     item.index = index
+        //     item.feeCenterList.forEach(ite=>{
+        //         ite.ppid = index
+        //     })
+        //     return item
+        // })
+      }
+
+
+      var dataSet = new Stimulsoft.System.Data.DataSet(
+        'reportData'
+      )
+
+      dataSet.readJson(data)
+      report.regData('reportData', 'reportData', dataSet)
+      // 从模版和数据加载报表
+      // loadReport(report, '', {})
+
+      designer.report = report
+
+      this.designer = designer
+
+      this.$refs.reportContainer.showContainer(
+        () => {
+          setTimeout(() => {
+            designer.renderHtml('reportContainer')
+            this.createDesignerButtons()
+          }, 50)
+        },
+        () => { },
+      )
+    },
+    // 打印报表获取数据
+    reportsGetReportDatafun(url, row) {
+      printingUpdate({ id: this.id })
+      let obj = {}
+      if (this.selecList.length || this.type) {
+        obj = {
+          billId: this.id,
+          reportCode: row.classifyCode,
+          groupCode: row.groupCode,
+          itemIds: this.itemIds,
+          type: this.businessValue
+        }
+      } else {
+        obj = {
+          billId: this.id,
+          reportCode: this.classifyCode,
+          groupCode: this.groupCode,
+          type: this.businessValue,
+          corpIds: row.id
+        }
+      }
+      reportsGetReportData(obj).then(res => {
+        if (this.selecList.length || this.type) {
+          this.handleReportPreview(url, res.data.data.data)
+        } else {
+          this.handleReportPreview(this.url, res.data.data.data)
+        }
+      })
+    },
+        testMail(e) {
+      console.info('eeeeeeeeeeeeeeeeeeee----', e)
+      this.$refs.mailComponentRef.dialogVisible = true
+      this.$refs.mailComponentRef.formData.attachments = e.fileName
+      this.$refs.mailComponentRef.formData.fileType = e.formatName
+      this.$refs.mailComponentRef.formData.fileContent = e.data
+    },
+    // 预览报表
+    handleReportPreview(url, row) {
+      Stimulsoft.Base.StiLicense.key = '6vJhGtLLLz2GNviWmUTrhSqnOItdDwjBylQzQcAOiHn0s4gy0Fr5YoUZ9V00Y0igCSFQzwEqYBh/N77k4f0fWXTHW5rqeBNLkaurJDenJ9o97TyqHs9HfvINK18Uwzsc/bG01Rq+x3H3Rf+g7AY92gvWmp7VA2Uxa30Q97f61siWz2dE5kdBVcCnSFzC6awE74JzDcJMj8OuxplqB1CYcpoPcOjKy1PiATlC3UsBaLEXsok1xxtRMQ283r282tkh8XQitsxtTczAJBxijuJNfziYhci2jResWXK51ygOOEbVAxmpflujkJ8oEVHkOA/CjX6bGx05pNZ6oSIu9H8deF94MyqIwcdeirCe60GbIQByQtLimfxbIZnO35X3fs/94av0ODfELqrQEpLrpU6FNeHttvlMc5UVrT4K+8lPbqR8Hq0PFWmFrbVIYSi7tAVFMMe2D1C59NWyLu3AkrD3No7YhLVh7LV0Tttr/8FrcZ8xirBPcMZCIGrRIesrHxOsZH2V8t/t0GXCnLLAWX+TNvdNXkB8cF2y9ZXf1enI064yE5dwMs2fQ0yOUG/xornE'
+      // Stimulsoft.Base.StiLicense.Key = '6vJhGtLLLz2GNviWmUTrhSqnOItdDwjBylQzQcAOiHkcgIvwL0jnpsDqRpWg5FI5kt2G7A0tYIcUygBh1sPs7plofUOqPB1a4HBIXJB621mau2oiAIj+ysU7gKUXfjn/D5BocmduNB+ZMiDGPxFrAp3PoD0nYNkkWh8r7gBZ1v/JZSXGE3bQDrCQCNSy6mgby+iFAMV8/PuZ1z77U+Xz3fkpbm6MYQXYp3cQooLGLUti7k1TFWrnawT0iEEDJ2iRcU9wLqn2g9UiWesEZtKwI/UmEI2T7nv5NbgV+CHguu6QU4WWzFpIgW+3LUnKCT/vCDY+ymzgycw9A9+HFSzARiPzgOaAuQYrFDpzhXV+ZeX31AxWlnzjDWqpfluygSNPtGul5gyNt2CEoJD1Yom0VN9fvRonYsMsimkFFx2AwyVpPcs+JfVBtpPbTcZscnzUdmiIvxv8Gcin6sNSibM6in/uUKFt3bVgW/XeMYa7MLGF53kvBSwi78poUDigA2n12SmghLR0AHxyEDIgZGOTbNI33GWu7ZsPBeUdGu55R8w='
+      Stimulsoft.Base.Localization.StiLocalization.addLocalizationFile('/reports/stimulsoft/Localization/zh-CHS.xml', true, 'zh-CHS')
+      Stimulsoft.Base.Localization.StiLocalization.setLocalizationFile('/reports/stimulsoft/Localization/zh-CHS.xml')
+
+      // 工具栏
+      var options = new Stimulsoft.Viewer.StiViewerOptions()
+      options.height = '100%'
+      options.appearance.scrollbarsMode = true // 滚动条模式
+      options.toolbar.showDesignButton = false // 显示设计按钮
+      options.toolbar.showAboutButton = false // 显示关于按钮
+      options.toolbar.showResourcesButton = false // 显示资源按钮
+      options.toolbar.showFullScreenButton = false // 显示全屏按钮
+      options.toolbar.showOpenButton = false // 显示打开按钮
+      options.appearance.showTooltips = false // 显示工具提示
+      options.appearance.showDialogsHelp = false // 显示对话框帮助
+      options.exports.showExportToDocument = false // 显示导出到文档
+      options.toolbar.showParametersButton = true // 显示参数按钮
+      options.appearance.bookmarksPrint = true // 书签打印
+      // options.toolbar.showPrintButton = false // 打印按钮是否显示   下面直接自定义控制打印弹窗是否开启
+      options.toolbar.showSendEmailButton = true // 显示发送邮件按钮
+      options.email.showEmailDialog = false
+      options.email.showExportDialog = false
+      // printDestination 参数:用于指定报表打印的目标位置,可以是打印机、PDF 文件或者直接打印到浏览器等。
+      // Stimulsoft.Viewer.StiPrintDestination.Direct:表示直接打印到打印机,即将报表内容直接发送至打印机进行打印。
+      // 通过设置不同的 printDestination 参数,你可以控制报表打印的行为,例如是直接打印到打印机,还是生成 PDF 文件,或者直接在浏览器中预览打印内容等。
+      options.toolbar.printDestination = Stimulsoft.Viewer.StiPrintDestination.Direct
+      // htmlRenderMode html渲染模式
+      options.appearance.htmlRenderMode = Stimulsoft.Report.Export.StiHtmlExportMode.Table
+      // 是创建一个 Stimulsoft 报表查看器的实例的代码
+      let viewer = new Stimulsoft.Viewer.StiViewer(options, 'StiViewer', false)
+      viewer.onEmailReport = this.testMail
+      // 报表
+      console.log("创建一个报表实例");
+      let report = new window.Stimulsoft.Report.StiReport();
+
+      // 加载文件
+      console.log("从url加载报表");
+      // report.loadFile("/reports/stimulsoft/demos/SimpleList.mrt");
+      report.load(url)
+
+
+      // 获取报表数据
+      var data = row
+      data.pageOne = 'Page : 1 of 1'
+      // 处理超长数据
+      if (data.hshipperDetails) {
+        var consignerIndex2 = data.hshipperDetails.indexOf('\n')
+        for (let i = 0; i < 4; i++) {
+          consignerIndex2 = data.hshipperDetails.indexOf('\n', consignerIndex2 + 1);
+        }
+        if (consignerIndex2 != -1) {
+          var hshipperDetails = data.hshipperDetails.substring(consignerIndex2 + 2, data.hshipperDetails.length)
+          data.hshipperDetails = data.hshipperDetails.substring(0, consignerIndex2) + ' *'
+          data.commodityDescr += '\n*' + hshipperDetails
+        }
+      }
+
+      if (data.hconsigneeDetails) {
+        var consigneeIndex2 = data.hconsigneeDetails.indexOf('\n')
+        for (let i = 0; i < 3; i++) {
+          consigneeIndex2 = data.hconsigneeDetails.indexOf('\n', consigneeIndex2 + 1);
+        }
+        if (consigneeIndex2 != -1) {
+          var hconsigneeDetails = data.hconsigneeDetails.substring(consigneeIndex2 + 2, data.hconsigneeDetails.length)
+          data.hconsigneeDetails = data.hconsigneeDetails.substring(0, consigneeIndex2) + ' **'
+          data.commodityDescr += '\n**' + hconsigneeDetails
+        }
+      }
+
+      if (data.hnotifyDetails) {
+        var notifierIndex2 = data.hnotifyDetails.indexOf('\n')
+        for (let i = 0; i < 3; i++) {
+          notifierIndex2 = data.hnotifyDetails.indexOf('\n', notifierIndex2 + 1);
+        }
+        if (notifierIndex2 != -1) {
+          var hnotifyDetails = data.hnotifyDetails.substring(notifierIndex2 + 2, data.hnotifyDetails.length)
+          data.hnotifyDetails = data.hnotifyDetails.substring(0, notifierIndex2) + ' ***'
+          data.commodityDescr += '\n***' + hnotifyDetails
+        }
+      }
+
+      // 处理箱号
+      if (this.isPrintTheBoxNumber) {
+        data.commodityDescr += '\n.\n.\n'
+      }
+
+      // PLACE & DATE OF ISSUE
+      data.placeAndDateOfIssue = ''
+      if (data.issueAt) {
+        data.placeAndDateOfIssue += data.issueAt
+      }
+      if (data.issueDate) {
+        let date = new Date(data.issueDate.replace(/-/g, '/'));
+        let yyyy = date.getFullYear();
+        let mmmm = date.toDateString().split(" ")[1]
+        let dd = date.getDate()
+        data.placeAndDateOfIssue += ', ' + dd + '-' + mmmm + '-' + yyyy
+      }
+
+      // Total number of containers or packages received by the Carriers
+      if (data.preContainersList) {
+        let boxMap = new Map();
+        for (let boxQuantity of data.preContainersList) {
+          if (boxMap.get(boxQuantity.cntrTypeCode)) {
+            let v = boxMap.get(boxQuantity.cntrTypeCode)
+            boxMap.set(boxQuantity.cntrTypeCode, v + boxQuantity.quantity)
+          } else {
+            boxMap.set(boxQuantity.cntrTypeCode, boxQuantity.quantity)
+          }
+        }
+        let boxs = ''
+        boxMap.forEach(function (value, key, map) {
+          boxs += value + 'x' + key + ', '
+        })
+        boxs = boxs.substring(0, boxs.length - 2)
+
+        data.boxQuantity = boxs + ' CONTAINER(S) ONLY'
+      }
+
+      // Number of original B/Ls
+      if (data.numberOfObl) {
+        data.numberOfObl += ' (' + data.numberOfOblDigit + ')'
+      }
+
+      if (data.commodityDescr) {
+        var descriptionIndex2 = data.commodityDescr.indexOf('\n')
+        for (let i = 0; i < 19; i++) {
+          descriptionIndex2 = data.commodityDescr.indexOf('\n', descriptionIndex2 + 1);
+        }
+        if (descriptionIndex2 != -1) {
+          data.pageOne = 'Page : 1 of 2'
+          data.pageTwo = 'Page : 2 of 2'
+          var extraLongText = data.commodityDescr.substring(descriptionIndex2 + 2, data.commodityDescr.length)
+          data.commodityDescr = data.commodityDescr.substring(0, descriptionIndex2)
+          data.extraLongTips = '** TO BE CONTINUED ON ATTACHED LIST **'
+          data.extraLongText = extraLongText
+        }
+      }
+
+      // console.log(data.hshipperDetails, 'hshipperDetails2')
+
+
+      // 创建一个 Stimulsoft 数据集(DataSet)的实例的代码
+      var dataSet = new Stimulsoft.System.Data.DataSet(
+        'reportData'
+      )
+
+      dataSet.readJson(data) // 用于将 JSON 格式的数据加载到数据集中。data 是包含报表数据的 JSON 对象。
+      // 这是一个方法调用,用于在报表中注册数据源。参数 'reportData' 是数据源的名称,
+      // 第二个 'reportData' 是数据源的别名,dataSet 则是之前创建的数据集实例
+      report.regData('reportData', 'reportData', dataSet)
+      // 从模版和数据加载报表
+      // loadReport(report, '', {})
+
+      // 这是将报表对象指定给报表查看器的属性。viewer 是报表查看器的实例,而 report 是之前创建的报表对象。
+      viewer.report = report;
+
+
+      this.$refs.reportContainer.showContainer(
+        () => {
+          setTimeout(() => {
+            viewer.renderHtml('reportContainer')
+            this.createViewerButtons(viewer)
+          }, 50)
+        },
+        () => {
+        },
+      )
+
+      console.log("加载成功完成!");
+    },
+
+    loadReport(report, content, data) {
+      var mimeString = content
+        .split(',')[0]
+        .split(':')[1]
+        .split(';')[0]
+      var byteString = atob(content.split(',')[1])
+
+      var ab = new ArrayBuffer(byteString.length)
+      var ia = new Uint8Array(ab)
+
+      for (var i = 0; i < byteString.length; i++) {
+        ia[i] = byteString.charCodeAt(i)
+      }
+
+      var blob = new Blob([ab])
+      JSZip.loadAsync(blob).then(function (unziped) {
+        unziped
+          .file('reportfile.json')
+          .async('string')
+          .then(res => {
+            report.load(res)
+
+            if (!!data) {
+              var dataSet = new Stimulsoft.System.Data.DataSet(
+                'reportData'
+              )
+              dataSet.readJson(data)
+              report.regData('reportData', 'reportData', dataSet)
+            }
+          })
+      })
+
+    },
+    createDesignerButtons(e) {
+      console.log(e, 936)
+      if (!!e) {
+        try {
+          this.designer.jsObject.options.menus.localizationMenu.addEventListener(
+            'click',
+            this.createDesignerButtons
+          )
+        } catch (error) {
+        }
+      }
+
+      let toolBarRow = this.designer.jsObject.options.toolBar.firstChild.tr[0]
+
+      let customButton = this.designer.jsObject.StatusPanelButton(
+        'exitButton',
+        '关闭',
+        'LoginControls.Window.CloseWhite.png',
+        '关闭',
+        null,
+        30,
+        60
+      )
+
+      customButton.image.style.width = customButton.image.style.height = '16px'
+
+      let buttonCell = document.createElement('td')
+
+      buttonCell.className = 'stiDesignerToolButtonCell'
+
+      buttonCell.appendChild(customButton)
+
+      toolBarRow.appendChild(buttonCell)
+
+      let that = this
+      customButton.action = function (e) {
+        let jsObject = this.jsObject
+
+        if (jsObject.options.reportIsModified) {
+          var messageForm = jsObject.MessageFormForSave()
+          messageForm.changeVisibleState(true)
+          messageForm.action = function (state) {
+            if (state) {
+              jsObject.SendCommandSaveReport()
+              setTimeout(() => {
+                jsObject.SendCommandCloseReport()
+                jsObject.designer.invokeExit()
+                if (that.$refs.reportContainer)
+                  that.$refs.reportContainer.hideContainer()
+              }, 250)
+            } else {
+              jsObject.SendCommandCloseReport()
+              jsObject.designer.invokeExit()
+              if (that.$refs.reportContainer)
+                that.$refs.reportContainer.hideContainer()
+            }
+          }
+        } else {
+          jsObject.SendCommandCloseReport()
+          jsObject.designer.invokeExit()
+          if (that.$refs.reportContainer)
+            that.$refs.reportContainer.hideContainer()
+        }
+      }
+    },
+    createViewerButtons(viewer) {
+      viewer.jsObject.collections.images['myClose.png'] =
+        'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABmJLR0QA/wD/AP+gvaeTAAAA0ElEQVQ4ja3TO05CQRQG4A8iOwAbtYWETndAaecK7NwCKmETtJZsSBNLobEz8ZFIJQ0UnOGSm3DnYviTybzO/895DQXGWGCVGQuMEqkRcwcfuMOLalziCaf4TIe9UG9nyMJmFRzNGoRK1BU4xxx9G7cfwostciGk+x8MqgySwDXe4tU53hVV+MNtTmAoX84JGv9NYgrHyR6DV8wUSW7hItZLm36ZVoVQxsFJLOMsPOrH/h7dQwR2cdxOTEn8DtUbPGc4V2H7Vb4Yqfedf/GYSGt8VUmxgyfuBAAAAABJRU5ErkJggg=='
+      const closeBtn = viewer.jsObject.SmallButton(
+        'closeBtn',
+        '关闭',
+        'myClose.png'
+      )
+      // 增加打印弹窗配置
+      const printBtn = viewer.jsObject.SmallButton(
+        'printBtn',
+        '打印报表',
+        'myClose.png'
+      )
+      // console.log(viewer.jsObject.print(),'1013')
+      // 获取 关闭按钮的dom元素位置
+      const toolbarTable = viewer.jsObject.controls.toolbar.firstChild.firstChild
+      const buttonsTable = toolbarTable.rows[0].lastChild.lastChild
+      const userButtonCell = buttonsTable.rows[0].insertCell(0)
+      // 获取打印按钮的位置
+      const buttonsTablePrint = toolbarTable.rows[0].childNodes[0].lastChild // 打印按钮
+      const userButtonPrint = buttonsTablePrint.rows[0].childNodes[0] // 打印按钮dom位置
+
+
+      userButtonPrint.addEventListener("click", (event) => {
+        console.log("打印点击");
+        // event.preventDefault()
+      });
+      userButtonPrint.addEventListener("mouseover", (event) => {
+        console.log("移入打印按钮");
+        console.log(event, 1035)
+
+      });
+
+      userButtonCell.className = 'stiJsViewerClearAllStyles'
+      userButtonCell.appendChild(closeBtn) // 添加关闭节点
+
+      // userButtonPrint.prepend(printBtn) // 在 printBtn 节点里最前面增加一个子级节点
+
+
+      let that = this
+      // 关闭按钮的监听点击
+      closeBtn.action = function () {
+        console.log(that.$refs.reportContainer, '1022')
+        if (that.$refs.reportContainer)
+          that.$refs.reportContainer.hideContainer()
+      }
+
+      // // // 打印按钮监听
+      // printBtn.action = (e)=>{
+      //     console.log('打印')
+      //     window.print()
+      // }
+
+    },
+
+    searchReset() {
+      this.query = {};
+      this.onLoad(this.page);
+    },
+    searchChange(params, done) {
+      this.query = params;
+      this.page.currentPage = 1;
+      this.onLoad(this.page, params);
+      done();
+    },
+    selectionChange(list) {
+      this.selectionList = list;
+    },
+    selectionClear() {
+      this.selectionList = [];
+      this.$refs.crud.toggleSelection();
+    },
+    currentChange(currentPage) {
+      this.page.currentPage = currentPage;
+    },
+    sizeChange(pageSize) {
+      this.page.pageSize = pageSize;
+    },
+    refreshChange() {
+      this.onLoad(this.page, this.query);
+    },
+    onLoad(page, params = {}) {
+      this.loading = true;
+      params.businessType = this.businessValue
+      params.classifyCode = this.classifyCode
+      params.groupCode = this.groupCode
+      if (this.selecList.length || this.type) {
+        getList(page.currentPage, page.pageSize, Object.assign(params, this.query)).then(res => {
+          this.page.total = res.data.data.total;
+          this.data = res.data.data.records;
+          this.selectionClear();
+        }).finally(() => {
+          this.loading = false;
+        })
+      } else {
+        getFeeCenterCorpIds({
+          billId: this.id,
+          dc: this.groupCode == '应收' ? 'D' : 'C',
+          type: this.businessValue,
+        }).then(res => {
+          this.data = res.data.data;
+          getList(page.currentPage, page.pageSize, Object.assign(params, this.query)).then(res => {
+            this.url = res.data.data.records.length ? res.data.data.records[0].url : null;
+          })
+          this.selectionClear();
+        }).finally(() => {
+          this.loading = false;
+        })
+      }
+    },
+    //自定义列保存
+    async saveColumnTwo(ref, option, optionBack, code) {
+      /**
+       * 已定义全局方法,直接使用,saveColumnData保存列数据方法,参数传值(表格名称,当前表格的option数据)
+       * 已定义全局方法,直接使用,getColumnName方法用来获取枚举值,参数根据自己定义的code值获取中文名
+       * 一定要执行异步操作,要等接口成功返回,才能执行下一行代码
+       */
+      const inSave = await this.saveColumnData(this.getColumnName(code), this[option]);
+      if (inSave) {
+        this.$message.success("保存成功");
+        //关闭窗口
+        this.$refs[ref].$refs.dialogColumn.columnBox = false;
+      }
+    },
+    //自定义列重置
+    async resetColumnTwo(ref, option, optionBack, code) {
+      this[option] = this[optionBack];
+      const inSave = await this.delColumnData(this.getColumnName(code), this[optionBack]);
+      if (inSave) {
+        this.$message.success("重置成功");
+        this.$refs[ref].$refs.dialogColumn.columnBox = false;
+      }
+    },
+    // 更改表格颜色
+    headerClassName(tab) {
+      //颜色间隔
+      let back = ""
+      if (tab.columnIndex >= 0 && tab.column.level === 1) {
+        if (tab.columnIndex % 2 === 0) {
+          back = "back-one"
+        } else if (tab.columnIndex % 2 === 1) {
+          back = "back-two"
+        }
+      }
+      return back;
+    },
+  }
+};
+</script>
+
+<style lang="scss" scoped>
+::v-deep#out-table .back-one {
+  background: #ecf5ff !important;
+}
+
+::v-deep#out-table .back-two {
+  background: #ecf5ff !important;
+}
+
+::v-deep .el-input-group__append {
+  padding: 0 0px !important;
+}
+
+/deep/ .el-tree-node__content>.el-tree-node__expand-icon {
+  visibility: hidden;
+}
+
+/deep/ .el-col-md-8 {
+  width: 24.33333%;
+}
+</style>

+ 5 - 0
src/components/feeModify/main.vue

@@ -185,6 +185,11 @@ export default {
             label: "备注",
             prop: "remarksUpdate",
             minRows: 2,
+          },
+          {
+            label: "修改原因",
+            prop: "updateReason",
+            minRows: 2,
           }
         ]
       },

+ 1 - 0
src/util/exchangeRate.js

@@ -65,6 +65,7 @@ export async function checkRate(curCode, date, dc, type, deptId) {
 export function getExchangeRate(curCode, dc, type) {
     for (let item of this.getCheckRate()) {
         if (item.code == curCode) {
+            console.log(item.code , curCode)
             if (type == 1 && dc == 'D') return item.exrateReceivable
             if (type == 1 && dc == 'C') return item.exratePayable
             if (type == 2 && dc == 'D') return item.exrateReceipts

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

@@ -670,7 +670,7 @@
                                     </span>
                                     <search-query :datalist="packingUnitData" style="margin-right: -10px;"
                                         :selectValue="assemblyForm.packingUnit" :filterable="true" :clearable="true"
-                                        :remote="true" :disabled="detailData.seeDisabled || generateBillsfalse"
+                                        :remote="true" :disabled="detailData.seeDisabled"
                                         :buttonIf="false" placeholder="请选择包装"
                                         :forParameter="{ key: 'id', label: 'cnName', value: 'cnName' }"
                                         @remoteMethod="remoteMethod($event, 'packingUnit')"

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

@@ -569,7 +569,7 @@
                                     </span>
                                     <search-query ref="packingUnit" :datalist="packingUnitData" style="margin-right: -10px;"
                                         :selectValue="assemblyForm.packingUnit" :filterable="true" :clearable="true"
-                                        :remote="true" :disabled="detailData.seeDisabled || generateBillsfalse"
+                                        :remote="true" :disabled="detailData.seeDisabled"
                                         :buttonIf="false" placeholder="请选择包装"
                                         :forParameter="{ key: 'id', label: 'cnName', value: 'cnName' }"
                                         @remoteMethod="remoteMethod($event, 'packingUnit')"

+ 10 - 5
src/views/iosBasicData/SeafreightExportF/bills/billsDetails.vue

@@ -121,7 +121,7 @@
                                                                 }} {{ item[0].label }}
                                                             </span>
                                                             <span v-else style="color: #1e9fff">{{ item[0].label
-                                                            }}</span>
+                                                                }}</span>
                                                         </span>
                                                         <span v-if="item[0].type == 'button'"></span>
                                                         <!--<el-button v-if="item[0].type == 'button'" :disabled="detailData.seeDisabled || item[0].disabled"-->
@@ -2030,10 +2030,10 @@ export default {
                     cancelButtonText: "取消",
                     type: "warning"
                 })
-                 return;
+                return;
             }
             // if (popupReminder(this.form, this.messageData)) {
-               
+
             // }
             if (this.form.billType == 'DD') {
                 if (this.form.feeCenterListC.length == 0 && this.form.feeCenterListD == 0) {
@@ -2506,10 +2506,12 @@ export default {
                 spinner: 'el-icon-loading',
                 background: 'rgba(255,255,255,0.7)'
             });
-            let res = await billsCopyBills({ id })
+            let types = typeof type == "string" ? type.split(",") : []
+            console.log(types.indexOf("复制配箱信息",1))
+            let res = await billsCopyBills({ id, containers: types.indexOf("复制配箱信息")!=-1 ? 1 : null })
 
             loading.close();
-            let types = typeof type == "string" ? type.split(",") : []
+
             // if (type == '复制费用' || type == '') {
             //     res.data.data.preContainersList = []
             // }
@@ -2524,6 +2526,9 @@ export default {
                 res.data.data.feeCenterListD = []
                 res.data.data.feeCenterListC = []
             }
+            if (types.indexOf("复制配箱信息") < 0) {
+                res.data.data.containersList = []
+            }
             res.data.data.billType = billType
             if (!this.roleName.includes('admin') && (this.roleName.includes('应收修改') || this.roleName.includes('应收查看')) && !(this.roleName.includes('应付修改') || this.roleName.includes('应付查看'))) {
                 res.data.data.feeCenterListC = []

+ 4 - 0
src/views/iosBasicData/SeafreightExportF/bills/index.vue

@@ -2473,6 +2473,10 @@ export default {
                                 {
                                     label: "复制箱型箱量",
                                     value: "复制箱型箱量"
+                                },
+                                {
+                                    label: "复制配箱信息",
+                                    value: "复制配箱信息"
                                 }
                             ],
                             dataType: "string",

+ 1 - 1
src/views/iosBasicData/businessCenter/customerLetter/detailsPage.vue

@@ -435,7 +435,7 @@ import { losbfeestemplateGetListTemplate } from "@/api/iosBasicData/bills";
 import { losbfeestemplateDetail } from "@/api/iosBasicData/losbfeestemplate";
 import dicSelect from "@/components/dicSelect/main";
 import checkSchedule from "@/components/checkH/checkSchedule.vue";
-import businessReports from "@/components/boxManagement/businessReports.vue";
+import businessReports from "@/components/boxManagement/businessReportsTS.vue";
 import reports from "@/components/boxManagement/reports.vue";
 import freightRate from "./components/freightRate.vue";
 import { deptGetDetailPol } from '@/api/iosBasicData/bills'

+ 8 - 9
src/views/iosBasicData/fininvoices/fininvoicesDetails.vue

@@ -543,8 +543,8 @@
                 </el-tab-pane>
                 <el-tab-pane label="文件中心">
                     <containerTitle title="上传附件"></containerTitle>
-                    <c-upload :data="form.fileList" :enumerationValue="76"
-                        deleteUrl="/api/blade-los/filescenter/remove" display :disabled="statusType"></c-upload>
+                    <c-upload :data="form.fileList" :enumerationValue="76" deleteUrl="/api/blade-los/filescenter/remove"
+                        display :disabled="statusType"></c-upload>
                 </el-tab-pane>
             </el-tabs>
         </div>
@@ -697,13 +697,8 @@ export default {
         this.saberUserInfo = JSON.parse(localStorage.getItem('saber-userInfo')).content
         if (!this.form.id) {
             this.form.invCurCode = this.getLocalCurrency()
-            bcurexrateList({ current: 1, size: 35, type: '月汇率', code: 'USD', exrateYear: getYearDate() }).then(res => {
-                for (let item of res.data.data.records) {
-                    if (item.exrateMonth == getMonthDate()) {
-                        this.$set(this.form, 'exrate', item.exratePayment)
-                    }
-                }
-            })
+
+            this.$set(this.form, 'exrate', this.getExchangeRate(this.getLocalCurrency(), this.form.dc, 2))
             // getRateList({ current: 1, size: 30 }).then(res => {
             //     for (let item of res.data.data.records) {
             //         if (item.code == "USD") {
@@ -1049,6 +1044,10 @@ export default {
                     }
                 }
             }
+            else if (name == 'invCurCode') {
+                this.$set(this.form, 'invCurCode', value)
+                this.$set(this.form, 'exrate', this.getExchangeRate(value, this.form.dc, 2))
+            }
             else {
                 this.$set(this.form, name, value)
             }

+ 6 - 15
src/views/iosBasicData/fininvoicesApplyfor/fininvoicesDetails.vue

@@ -677,7 +677,7 @@ export default {
             form: {
                 branchId: JSON.parse(localStorage.getItem('sysitemData')).deptId,
                 branchName: JSON.parse(localStorage.getItem('sysitemData')).deptName,
-                dc: null,
+                dc: 'D',
                 invCurCode: 'CNY',
                 isRp: 1,
                 invType: '全电发票',
@@ -765,20 +765,7 @@ export default {
         this.saberUserInfo = JSON.parse(localStorage.getItem('saber-userInfo')).content
         if (!this.form.id) {
             this.form.invCurCode = this.getLocalCurrency()
-            bcurexrateList({ current: 1, size: 35, type: '月汇率', code: 'USD', exrateYear: getYearDate() }).then(res => {
-                for (let item of res.data.data.records) {
-                    if (item.exrateMonth == getMonthDate()) {
-                        this.$set(this.form, 'exrate', item.exrateReceipts)
-                    }
-                }
-            })
-            // getRateList({ current: 1, size: 30 }).then(res => {
-            //     for (let item of res.data.data.records) {
-            //         if (item.code == "USD") {
-            //             this.$set(this.form, 'exrate', item.exrate)
-            //         }
-            //     }
-            // })
+            this.$set(this.form, 'exrate', this.getExchangeRate(this.getLocalCurrency(), this.form.dc, 2))
         }
         if (this.$route.query.mblno) {
             // console.log(111111)
@@ -1170,6 +1157,10 @@ export default {
                     }
                 }
             }
+            else if (name == 'invCurCode') {
+                this.$set(this.form, 'invCurCode', value)
+                this.$set(this.form, 'exrate', this.getExchangeRate(value, this.form.dc, 2))
+            }
             else {
                 this.$set(this.form, name, value)
             }

+ 5 - 7
src/views/iosBasicData/fininvoicesOutput/fininvoicesDetails.vue

@@ -752,13 +752,7 @@ export default {
         this.saberUserInfo = JSON.parse(localStorage.getItem('saber-userInfo')).content
         if (!this.form.id) {
             this.form.invCurCode = this.getLocalCurrency()
-            bcurexrateList({ current: 1, size: 35, type: '月汇率', code: 'USD', exrateYear: getYearDate() }).then(res => {
-                for (let item of res.data.data.records) {
-                    if (item.exrateMonth == getMonthDate()) {
-                        this.$set(this.form, 'exrate', item.exrateReceipts)
-                    }
-                }
-            })
+            this.$set(this.form, 'exrate', this.getExchangeRate(this.getLocalCurrency(), this.form.dc, 2))
             // getRateList({ current: 1, size: 30 }).then(res => {
             //     for (let item of res.data.data.records) {
             //         if (item.code == "USD") {
@@ -1108,6 +1102,10 @@ export default {
                     }
                 }
             }
+            else if (name == 'invCurCode') {
+                this.$set(this.form, 'invCurCode', value)
+                this.$set(this.form, 'exrate', this.getExchangeRate(value, this.form.dc, 2))
+            }
             else {
                 this.$set(this.form, name, value)
             }