Qukatie 2 месяцев назад
Родитель
Сommit
fb00faaff3
24 измененных файлов с 1025 добавлено и 232 удалено
  1. 16 0
      src/api/iosBasicData/fininvoices.js
  2. 12 1
      src/api/iosBasicData/finstlbills.js
  3. 7 8
      src/views/iosBasicData/ComputationCenter/index.vue
  4. 1 1
      src/views/iosBasicData/PaymentApplication/assembly/finstlbillsitems.vue
  5. 1 1
      src/views/iosBasicData/PaymentApplication/assembly/finstlbillsitems2.vue
  6. 1 0
      src/views/iosBasicData/cashier/indexC.vue
  7. 34 6
      src/views/iosBasicData/financialManagement/finstlbills/components/cashierItem.vue
  8. 295 0
      src/views/iosBasicData/financialManagement/finstlbills/components/feeInfo.vue
  9. 88 32
      src/views/iosBasicData/financialManagement/finstlbills/components/fininvoiceitemdetail.vue
  10. 139 37
      src/views/iosBasicData/financialManagement/finstlbills/components/pickedData.vue
  11. 42 14
      src/views/iosBasicData/financialManagement/finstlbills/components/queryData.vue
  12. 55 30
      src/views/iosBasicData/financialManagement/finstlbills/detailsPage.vue
  13. 4 4
      src/views/iosBasicData/financialManagement/finstlbills/index.vue
  14. 6 6
      src/views/iosBasicData/fininvoices/fininvoicesDetails.vue
  15. 8 8
      src/views/iosBasicData/fininvoices/index.vue
  16. 102 22
      src/views/iosBasicData/fininvoicesApplyfor/assembly/fininvoiceitemdetail.vue
  17. 8 7
      src/views/iosBasicData/fininvoicesApplyfor/fininvoicesDetails.vue
  18. 5 5
      src/views/iosBasicData/fininvoicesApplyfor/index.vue
  19. 189 38
      src/views/iosBasicData/fininvoicesOutput/fininvoicesDetails.vue
  20. 6 6
      src/views/iosBasicData/fininvoicesOutput/index.vue
  21. 2 2
      src/views/iosBasicData/finstlbills/assembly/fininvoiceitemdetail.vue
  22. 2 2
      src/views/iosBasicData/finstlbills/finstlbillsDetails.vue
  23. 1 1
      src/views/salesManagement/salesContract/detailsPage.vue
  24. 1 1
      src/views/statisticAnalysis/profit/config/mainList.json

+ 16 - 0
src/api/iosBasicData/fininvoices.js

@@ -156,4 +156,20 @@ export const updateParamService = (row) => {
     method: 'post',
     data: row
   })
+}
+// 开票明细-确认开票
+export const confirmInvoiceIssuance = (row) => {
+  return request({
+    url: '/api/blade-los/fininvoices/confirmInvoiceIssuance',
+    method: 'post',
+    data: row
+  })
+}
+// 开票明细-确认开票
+export const revokeInvoiceIssuance  = (row) => {
+  return request({
+    url: '/api/blade-los/fininvoices/revokeInvoiceIssuance ',
+    method: 'post',
+    data: row
+  })
 }

+ 12 - 1
src/api/iosBasicData/finstlbills.js

@@ -320,4 +320,15 @@ export const generateFinInvoices  = (data) => {
     method: 'get',
     params: data
   })
-}
+}
+export const getFeeList = (current, size, params) => {
+  return request({
+    url: '/api/blade-los/feecenter/list',
+    method: 'get',
+    params: {
+      ...params,
+      current,
+      size,
+    }
+  })
+}

+ 7 - 8
src/views/iosBasicData/ComputationCenter/index.vue

@@ -35,14 +35,7 @@
         @saveColumn="saveColumnTwo('crud', 'option', 'optionBack', 324)"
       >
         <template slot="menuLeft">
-          <el-button
-            v-if=" tabsValue == 'CHK'"
-            type="primary"
-            size="small"
-            plain
-            @click="chooseSettlement()"
-            >选择结算
-          </el-button>
+          <el-button v-if="tabsValue == 'CHK'" type="primary" size="small" plain @click="chooseSettlement()">选择结算 </el-button>
           <!-- <el-button v-if="tabsValue == '业务单据'" type="primary" size="small" plain @click="addfun()">添加单据 </el-button> -->
           <el-button v-if="tabsValue == '业务单据'" type="danger" size="small" plain @click="handleDelete()">一键删除 </el-button>
           <span style="font-size: 24px;font-weight: 600;">
@@ -187,6 +180,12 @@ export default {
         menuWidth: "100",
         column: [
           {
+            label: "单据类型",
+            prop: "operatingType",
+            width: 100,
+            overHidden: true
+          },
+          {
             label: "往来单位",
             prop: "corpCnName",
             search: true,

+ 1 - 1
src/views/iosBasicData/PaymentApplication/assembly/finstlbillsitems.vue

@@ -271,7 +271,7 @@ export default {
             overHidden: true
           },
           {
-            label: "客户名称",
+            label: "结算中心",
             prop: "corpCnName",
             width: 120,
             overHidden: true

+ 1 - 1
src/views/iosBasicData/PaymentApplication/assembly/finstlbillsitems2.vue

@@ -272,7 +272,7 @@ export default {
             overHidden: true
           },
           {
-            label: "客户名称",
+            label: "结算中心",
             prop: "corpCnName",
             width: 120,
             overHidden: true

+ 1 - 0
src/views/iosBasicData/cashier/indexC.vue

@@ -573,6 +573,7 @@ export default {
         ...Object.assign(params, this.query),
         businessType: "CHK",
         dc: "C",
+        operatingStatus:3,
         cashierStatus:this.query.cashierStatus?this.query.cashierStatus:1
       });
       const data = res.data.data;

+ 34 - 6
src/views/iosBasicData/financialManagement/finstlbills/components/cashierItem.vue

@@ -99,11 +99,11 @@
       <span slot="footer" class="dialog-footer">
         <el-button @click="dialogVisible = false" size="mini">取 消</el-button>
         <el-button v-if="form.cashierStatus == 0" size="mini" type="success" @click="allClick('申请出纳')" :disabled="disabled || data.length == 0"
-          >{{ form.dc == "D" ? "收费" : "付费" }}申请</el-button
+          >付费申请</el-button
         >
-        <el-button v-if="form.cashierStatus == 1" size="mini" type="danger" @click="allClick('撤销申请出纳')" :disabled="disabled"
+        <!-- <el-button v-if="form.cashierStatus == 1" size="mini" type="danger" @click="allClick('撤销申请出纳')" :disabled="disabled"
           >撤销{{ form.dc == "D" ? "收费" : "付费" }}申请</el-button
-        >
+        > -->
       </span>
     </el-dialog>
   </div>
@@ -113,6 +113,7 @@
 import dicSelect from "@/components/dicSelect/main";
 import { getListAllDetail, submit, remove, applyCashier, revokeCashier, submitList } from "@/api/iosBasicData/cashier.js";
 import { bcurrencyGetExrate } from "@/api/iosBasicData/rateManagement";
+import { settlementApprove } from "@/api/iosBasicData/finstlbills";
 export default {
   props: {
     disabled: {
@@ -430,19 +431,43 @@ export default {
             return this.$message.error("请保存数据");
           }
         }
+        let obj = {
+          ...this.form,
+          billNoFormat: "HYDZ",
+          businessTypeCode: "HYDZ",
+          businessType: "CHK",
+          url: "/iosBasicData/financialManagement/finstlbills/index",
+          pageLabel: "对账中心(J)"
+        };
         const loading = this.$loading({
           lock: true,
           text: "加载中",
           spinner: "el-icon-loading",
           background: "rgba(255,255,255,0.7)"
         });
-        applyCashier({ id: this.form.id })
+        settlementApprove(obj)
           .then(res => {
-            this.$emit("update");
+            this.$message.success("操作成功");
+            this.dialogVisible = false;
+            this.$emit("update", this.form.id);
           })
           .finally(() => {
             loading.close();
           });
+
+        // const loading = this.$loading({
+        //   lock: true,
+        //   text: "加载中",
+        //   spinner: "el-icon-loading",
+        //   background: "rgba(255,255,255,0.7)"
+        // });
+        // applyCashier({ id: this.form.id })
+        //   .then(res => {
+        //     this.$emit("update",this.form.id);
+        //   })
+        //   .finally(() => {
+        //     loading.close();
+        //   });
       }
       if (name == "撤销申请出纳") {
         for (let item of this.data) {
@@ -468,7 +493,7 @@ export default {
           });
           revokeCashier({ id: this.form.id })
             .then(res => {
-              this.$emit("update");
+              this.$emit("update", this.form.id);
             })
             .finally(() => {
               loading.close();
@@ -552,6 +577,9 @@ export default {
       this.data.push({ $cellEdit: true, srcId: this.form.id, dc: this.form.dc, taxRate: 0 });
     },
     openDialog(row, dataList, type) {
+      if (type == "view") {
+        this.disabled = true;
+      }
       this.dialogVisible = true;
       this.selectionList = [];
       this.form = row;

+ 295 - 0
src/views/iosBasicData/financialManagement/finstlbills/components/feeInfo.vue

@@ -0,0 +1,295 @@
+<template>
+  <div>
+    <el-dialog title="费用明细" :visible.sync="dialogVisible" append-to-body width="70%" :before-close="handleClose">
+      <avue-crud
+        v-if="dialogVisible"
+        :option="option"
+        :page.sync="page"
+        :table-loading="loading"
+        :data="data"
+        ref="crud"
+        id="out-table"
+        :header-cell-class-name="headerClassName"
+        @current-change="currentChange"
+        @size-change="sizeChange"
+        @on-load="onLoad"
+      >
+      </avue-crud>
+      <span slot="footer" class="dialog-footer">
+        <el-button @click="dialogVisible = false" size="mini">关 闭</el-button>
+      </span>
+    </el-dialog>
+  </div>
+</template>
+
+<script>
+import dicSelect from "@/components/dicSelect/main";
+import { getFeeList } from "@/api/iosBasicData/finstlbills.js";
+export default {
+  props: {
+    disabled: {
+      type: Boolean,
+      default: false
+    }
+  },
+  components: { dicSelect },
+  data() {
+    return {
+      page: {
+        pageSize: 10,
+        currentPage: 1,
+        total: 0
+      },
+      form: {},
+      row: {},
+      data: [],
+      dialogVisible: false,
+      loading: false,
+      option: {
+        height: 500,
+        calcHeight: 30,
+        border: true,
+        index: true,
+        addBtn: false,
+        viewBtn: false,
+        delBtn: false,
+        editBtn: false,
+        menuWidth: 60,
+        menu: false,
+        header: false,
+        align: "center",
+        column: [
+          {
+            label: "单据类型",
+            prop: "billType",
+            type: "select",
+            dicData: [
+              {
+                label: "直单",
+                value: "DD"
+              },
+              {
+                label: "主单",
+                value: "MM"
+              },
+              {
+                label: "分单",
+                value: "MH"
+              }
+            ],
+            overHidden: true
+          },
+          {
+            label: "单据编号",
+            prop: "billNo",
+            overHidden: true
+          },
+          {
+            label: "业务类型",
+            prop: "businessType",
+            type: "select",
+            dicData: [
+              {
+                label: "海运出口",
+                value: "SE"
+              },
+              {
+                label: "海运进口",
+                value: "SI"
+              }
+            ],
+            overHidden: true
+          },
+          {
+            label: "收付",
+            prop: "dc",
+            type: "select",
+            dicData: [
+              {
+                label: "收",
+                value: "D"
+              },
+              {
+                label: "付",
+                value: "C"
+              }
+            ],
+            overHidden: true
+          },
+          {
+            label: "费用名称",
+            prop: "feeCnName",
+            overHidden: true
+          },
+          {
+            label: "计量单位",
+            prop: "unitNo",
+            overHidden: true
+          },
+          {
+            label: "数量",
+            prop: "quantity",
+            overHidden: true
+          },
+          {
+            label: "汇率",
+            prop: "exrate",
+            overHidden: true
+          },
+          {
+            label: "单价",
+            prop: "price",
+            overHidden: true
+          },
+          {
+            label: "USD",
+            prop: "usdAmount",
+            overHidden: true
+          },
+          {
+            label: "RMB",
+            prop: "rmbAmount",
+            overHidden: true
+          },
+          {
+            label: "提单号",
+            prop: "mblno",
+            overHidden: true
+          },
+          {
+            label: "船名",
+            prop: "vesselCnName",
+            overHidden: true
+          },
+          {
+            label: "航次",
+            prop: "voyageNo",
+            overHidden: true
+          },
+          {
+            label: "起运港",
+            prop: "polCnName",
+            overHidden: true
+          },
+          {
+            label: "卸货港",
+            prop: "podCnName",
+            overHidden: true
+          },
+          {
+            label: "ETD",
+            prop: "etd",
+            overHidden: true
+          },
+          {
+            label: "ETA",
+            prop: "eta",
+            overHidden: true
+          },
+          {
+            label: "备注",
+            prop: "remarks",
+            overHidden: true
+          }
+        ]
+      }
+    };
+  },
+  async created() {
+    // this.option = await this.getColumnData(this.getColumnName(309.6), this.optionBack);
+  },
+  methods: {
+    currentChange(currentPage) {
+      this.page.currentPage = currentPage;
+    },
+    sizeChange(pageSize) {
+      this.page.pageSize = pageSize;
+    },
+    onLoad(page) {
+      let obj = {
+        accBillId: this.row.accBillId,
+        dc: this.row.dc
+      };
+      this.loading = true;
+      getFeeList(page.currentPage, page.pageSize, obj)
+        .then(res => {
+          res.data.data.records.forEach(item => {
+            if (item.curCode == "CNY") {
+              item.rmbAmount = item.amount;
+              item.usdAmount = "";
+            } else {
+              item.rmbAmount = "";
+              item.usdAmount = item.amount;
+            }
+          });
+
+          this.data = res.data.data.records;
+          this.page.total = res.data.data.total;
+        })
+        .finally(() => {
+          this.loading = false;
+        });
+    },
+    openDialog(row) {
+      this.data = [];
+      this.row = row;
+      this.dialogVisible = true;
+    },
+    //自定义列保存
+    async saveColumn(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;
+        this.searchReset();
+      }
+    },
+    //自定义列重置
+    async resetColumn(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;
+  text-align: center;
+  padding: 4px 0;
+}
+
+::v-deep #out-table .back-two {
+  background: #ecf5ff !important;
+  text-align: center;
+  padding: 4px 0;
+}
+::v-deep .el-dialog__body {
+  padding: 0 10px !important;
+}
+</style>

+ 88 - 32
src/views/iosBasicData/financialManagement/finstlbills/components/fininvoiceitemdetail.vue

@@ -14,26 +14,25 @@
       @saveColumn="saveColumn('crud', 'option', 'optionBack', 489)"
     >
       <template slot="menuLeft">
-        <el-button size="small" type="primary" :disabled="!form.id || disabled" @click="allClick('新增')">新增 </el-button>
-        <el-button type="danger" plain size="small" :disabled="disabled || selectionList.length == 0" @click="allClick('批量删除')"
+        <el-button size="small" type="text" :disabled="!form.id || disabled" @click="allClick('新增')" style="color:#409EFF">新增 </el-button>
+        <el-button type="text" size="small" :disabled="disabled || selectionList.length == 0" @click="allClick('批量删除')" style="color:#000"
           >批量删除</el-button
         >
-        <el-button :disabled="!form.id || disabled" size="small" type="success" @click="allClick('生成发票单')">生成发票单</el-button>
-        <el-button :disabled="!form.id || disabled" size="small" type="danger" @click="allClick('撤销发票单')">撤销发票单</el-button>
+        <el-button size="small" type="text" :disabled="!form.id || disabled" @click="allClick('提取明细')" style="color:#409EFF">提取明细 </el-button>
+        <!-- <el-button :disabled="!form.id || disabled" size="small" type="success" @click="allClick('生成发票单')">生成发票单</el-button>
+        <el-button :disabled="!form.id || disabled" size="small" type="danger" @click="allClick('撤销发票单')">撤销发票单</el-button> -->
       </template>
       <template slot="invoiceCompanyName" slot-scope="{ row }">
         <dic-select
           v-if="row.$cellEdit"
           v-model="row.invoiceCompanyName"
-          placeholder="开票单位"
+          placeholder="发票抬头"
           label="invoiceHeader"
           res="records"
-          :slotRight="true"
-          rightLabel="code"
           :url="'/blade-los/corpsinvoiceheader/list?current=1&size=20&pid=' + form.corpId"
           :filterable="true"
           :remote="true"
-          dataName="cnName"
+          dataName="invoiceHeader"
           @selectChange="rowDicChange('invoiceCompanyName', $event, row)"
         ></dic-select>
         <span v-else>{{ row.invoiceCompanyName }}</span>
@@ -45,7 +44,7 @@
           placeholder="币别"
           key="id"
           label="code"
-          :url="'/blade-los/bcurrency/getExrate?date=' + form.billDate + '00:00:00' + '&dc=' + form.dc"
+          :url="'/blade-los/bcurrency/getExrate?date=' + form.billDate + '&dc=' + form.dc"
           :filterable="true"
           @selectChange="rowDicChange('curCode', $event, row)"
         ></dic-select>
@@ -86,7 +85,7 @@
 
 <script>
 import dicSelect from "@/components/dicSelect/main";
-import { generateInvoice, revokeInvoice } from "@/api/iosBasicData/finstlbills";
+import { generateInvoice, revokeInvoice, generateFinInvoicesDetail } from "@/api/iosBasicData/finstlbills";
 import { fininvoiceitemdetailRemove, fininvoiceitemdetailSubmit } from "@/api/iosBasicData/fininvoices";
 export default {
   data() {
@@ -110,24 +109,7 @@ export default {
         selection: true,
         column: [
           {
-            label: "开票状态",
-            prop: "invoiceStatus",
-            type: "select",
-            dicData: [
-              {
-                label: "未开",
-                value: "0"
-              },
-              {
-                label: "已开",
-                value: "1"
-              }
-            ],
-            width: 80,
-            overHidden: true
-          },
-          {
-            label: "开票单位",
+            label: "发票抬头",
             prop: "invoiceCompanyName",
             width: 150,
             overHidden: true
@@ -139,7 +121,7 @@ export default {
             dicUrl: "/api/blade-system/dict-biz/dictionary?code=Invoice_information_los",
             props: {
               label: "dictValue",
-              value: "dictKey"
+              value: "dictValue"
             },
             cell: true,
             width: 100,
@@ -255,7 +237,7 @@ export default {
     rowCell(row, index) {
       if (row.$cellEdit == true) {
         if (!row.invoiceCompanyId) {
-          return this.$message.error("开票单位不能为空");
+          return this.$message.error("发票抬头不能为空");
         }
         if (!row.curCode) {
           return this.$message.error("币别不能为空");
@@ -366,7 +348,7 @@ export default {
             return this.$message.error("请保存开票明细");
           }
           if (!item.invoiceCompanyId) {
-            return this.$message.error("开票单位不能为空");
+            return this.$message.error("发票抬头不能为空");
           }
           if (!item.curCode) {
             return this.$message.error("币别不能为空");
@@ -446,6 +428,76 @@ export default {
             });
         });
       }
+      if (name == "提取明细") {
+        for (let item of this.form.finStlBillsItemsList) {
+          if (item.status == 0) {
+            if (item.currentCurCode == "CNY") {
+              item.currentAmount = item.currentAmountCNY;
+            } else {
+              item.currentAmount = item.currentAmountUSD;
+            }
+          }
+        }
+        this.$DialogForm.show({
+          title: "开票项目",
+          width: "400px",
+          menuPosition: "right",
+          option: {
+            submitText: "生成开票",
+            emptyText: "取消",
+            span: 24,
+            column: [
+              {
+                label: "开票项目",
+                prop: "serverName",
+                type: "select",
+                dicUrl: "/api/blade-system/dict-biz/dictionary?code=Invoice_information_los",
+                props: {
+                  label: "dictValue",
+                  value: "dictValue"
+                },
+                rules: [
+                  {
+                    required: true,
+                    message: "请选择 开票项目",
+                    trigger: "blur"
+                  }
+                ],
+                span: 24
+              }
+            ]
+          },
+          beforeClose: done => {
+            done();
+          },
+          callback: res => {
+            res.done();
+            let obj = {
+              ...this.form,
+              billNoFormat: "HYDZ",
+              businessTypeCode: "HYDZ",
+              businessType: "CHK",
+              serverName: res.data.serverName,
+              finStlBillsItemsList: this.form.finStlBillsItemsList
+            };
+            const loading = this.$loading({
+              lock: true,
+              text: "加载中",
+              spinner: "el-icon-loading",
+              background: "rgba(255,255,255,0.7)"
+            });
+            generateFinInvoicesDetail(obj)
+              .then(res => {
+                this.$message.success("操作成功");
+                this.$emit("update", this.form.id, "finstlbills");
+              })
+              .finally(() => {
+                loading.close();
+              });
+            res.close();
+          }
+        });
+      }
     },
     selectionChange(list) {
       this.selectionList = list;
@@ -482,4 +534,8 @@ export default {
 };
 </script>
 
-<style lang="scss" scoped></style>
+<style lang="scss" scoped>
+.el-button--text.is-disabled {
+  color: #c0c4cc !important;
+}
+</style>

+ 139 - 37
src/views/iosBasicData/financialManagement/finstlbills/components/pickedData.vue

@@ -10,34 +10,60 @@
       @size-change="sizeChange"
       @current-change="currentChange"
       @selection-change="selectionChange"
+      @row-dblclick="handleRowDBLClick"
       @resetColumn="resetColumn('crud', 'option', 'optionBack', 488)"
       @saveColumn="saveColumn('crud', 'option', 'optionBack', 488)"
     >
       <template slot="menuLeft">
-        <el-button type="info" plain size="small" :disabled="disabled || form.operatingStatus == 3 || form.status == 3" @click="allClick('一键编辑')"
+        <el-button
+          type="text"
+          size="small"
+          :disabled="disabled || form.operatingStatus == 3 || form.status == 3"
+          @click="allClick('一键编辑')"
+          style="color:#409EFF"
           >一键编辑</el-button
         >
         <el-button
-          type="danger"
-          plain
+          type="text"
           size="small"
           :disabled="disabled || form.status == 3 || selectionList.length == 0 || form.operatingStatus == 3"
           @click="allClick('批量删除')"
+          style="color:#000"
           >批量删除</el-button
         >
-        <el-button size="small" type="primary" :disabled="selectionList.length == 0 || form.status == 3 || disabled" @click="allClick('批量对账')"
+        <el-button
+          size="small"
+          type="text"
+          :disabled="selectionList.length == 0 || form.status == 3 || disabled"
+          @click="allClick('批量对账')"
+          style="color:#409EFF"
           >批量对账
         </el-button>
-        <el-button size="small" type="danger" :disabled="selectionList.length == 0 || form.status == 3 || disabled" @click="allClick('撤销对账')"
+        <el-button
+          size="small"
+          type="text"
+          :disabled="selectionList.length == 0 || form.status == 3 || disabled"
+          @click="allClick('撤销对账')"
+          style="color:#000"
           >撤销对账
         </el-button>
-        <el-button size="small" type="primary" :disabled="selectionList.length == 0 || form.status == 3 || disabled" @click="allClick('批量签收')"
+        <el-button
+          size="small"
+          type="text"
+          :disabled="selectionList.length == 0 || form.status == 3 || disabled"
+          @click="allClick('批量签收')"
+          style="color:#409EFF"
           >批量签收
         </el-button>
-        <el-button size="small" type="danger" :disabled="selectionList.length == 0 || form.status == 3 || disabled" @click="allClick('撤销签收')"
+        <el-button
+          size="small"
+          type="text"
+          :disabled="selectionList.length == 0 || form.status == 3 || disabled"
+          @click="allClick('撤销签收')"
+          style="color:#000"
           >撤销签收
         </el-button>
-        <el-button type="success" size="small" plain :disabled="selectionList.length == 0 || form.status == 3" @click="allClick('生成开票')"
+        <!-- <el-button type="success" size="small" plain :disabled="selectionList.length == 0 || form.status == 3" @click="allClick('生成开票')"
           >生成开票</el-button
         >
         <el-button
@@ -47,7 +73,7 @@
           :disabled="!form.id || selectionList.length == 0 || form.status == 3"
           @click="allClick('撤销开票')"
           >撤销开票</el-button
-        >
+        > -->
         <el-tag type="danger" style="margin-right: 2px;">应收(CNY):{{ amountDSubSum || 0 }}</el-tag>
         <el-tag type="danger" style="margin-right: 2px;">应收(USD):{{ amountDSubUsdSum || 0 }}</el-tag>
         <el-tag type="success" style="margin-right: 2px;">应付(CNY):{{ amountCSubSum || 0 }}</el-tag>
@@ -82,7 +108,7 @@
       <template slot="reconciliationAmount" slot-scope="{ row }">
         <el-popover trigger="click" v-if="Number(row.reconciliationAmount)">
           <avue-crud :data="rlaData" :option="rlaOption"></avue-crud>
-          <span style="color: #409EFF;cursor: pointer" slot="reference" @click="viewRLA(row)">
+          <span style="color: #409EFF;cursor: pointer" slot="reference" @click="viewRLA(row,'对账')">
             {{ row.reconciliationAmount }}
           </span>
         </el-popover>
@@ -91,13 +117,23 @@
       <template slot="reconciliationAmountUsd" slot-scope="{ row }">
         <el-popover trigger="click" v-if="Number(row.reconciliationAmountUsd)">
           <avue-crud :data="rlaData" :option="rlaOption"></avue-crud>
-          <span style="color: #409EFF;cursor: pointer" slot="reference" @click="viewRLA(row)">
+          <span style="color: #409EFF;cursor: pointer" slot="reference" @click="viewRLA(row,'对账')">
             {{ row.reconciliationAmountUsd }}
           </span>
         </el-popover>
         <span v-else>{{ row.reconciliationAmountUsd }}</span>
       </template>
+      <template slot="stlAmount" slot-scope="{ row }">
+        <el-popover trigger="click" v-if="Number(row.stlAmount)">
+          <avue-crud :data="rlaData" :option="rlaOption"></avue-crud>
+          <span style="color: #409EFF;cursor: pointer" slot="reference" @click="viewRLA(row,'结算中心')">
+            {{ row.stlAmount }}
+          </span>
+        </el-popover>
+        <span v-else>{{ row.stlAmount }}</span>
+      </template>
     </avue-crud>
+    <fee-info ref="feeInfo"></fee-info>
   </div>
 </template>
 
@@ -112,6 +148,7 @@ import {
   revokeFinInvoicesDetail
 } from "@/api/iosBasicData/finstlbills";
 import { getListAll } from "@/api/iosBasicData/finstlbills";
+import feeInfo from "./feeInfo.vue";
 export default {
   data() {
     return {
@@ -189,7 +226,13 @@ export default {
             overHidden: true
           },
           {
-            label: "MB/L NO",
+            label: "对账单位",
+            prop: "corpCnName",
+            width: 140,
+            overHidden: true
+          },
+          {
+            label: "主单号",
             prop: "mblno",
             width: 100,
             overHidden: true
@@ -267,6 +310,18 @@ export default {
             overHidden: true
           },
           {
+            label: "结算单号",
+            prop: "stlNo",
+            width: 80,
+            overHidden: true
+          },
+          {
+            label: "结算单金额",
+            prop: "stlAmount",
+            width: 80,
+            overHidden: true
+          },
+          {
             label: "销账日期",
             prop: "clearedDate",
             type: "date",
@@ -287,7 +342,7 @@ export default {
             overHidden: true
           },
           {
-            label: "HB/L NO",
+            label: "分单号",
             prop: "hblno",
             width: 80,
             overHidden: true
@@ -393,6 +448,7 @@ export default {
       selectionList: []
     };
   },
+  components: { feeInfo },
   props: {
     form: {
       type: Object,
@@ -416,12 +472,16 @@ export default {
     this.option = await this.getColumnData(this.getColumnName(488), this.optionBack);
   },
   methods: {
-    viewRLA(row) {
+    viewRLA(row, type) {
       this.rlaData = [];
-      getListAll({ billId: row.accBillId }).then(res => {
+      getListAll({ billId: row.accBillId, srcType: type }).then(res => {
         this.rlaData = res.data.data;
       });
     },
+    handleRowDBLClick(row, event) {
+      console.log(row, event);
+      this.$refs.feeInfo.openDialog(row);
+    },
     sizeChange(val) {
       this.page.currentPage = 1;
       this.page.pageSize = val;
@@ -476,7 +536,7 @@ export default {
     allClick(name) {
       if (name == "一键编辑") {
         for (let row of this.tableData) {
-          if (row.isChecked == 0&&row.status == 0) {
+          if (row.isChecked == 0 && row.status == 0) {
             this.$set(row, "$cellEdit", true);
           }
         }
@@ -711,27 +771,65 @@ export default {
             }
           }
         }
-        let obj = {
-          ...this.form,
-          billNoFormat: "HYDZ",
-          businessTypeCode: "HYDZ",
-          businessType: "CHK",
-          finStlBillsItemsList: this.selectionList
-        };
-        const loading = this.$loading({
-          lock: true,
-          text: "加载中",
-          spinner: "el-icon-loading",
-          background: "rgba(255,255,255,0.7)"
+        this.$DialogForm.show({
+          title: "开票项目",
+          width: "400px",
+          menuPosition: "right",
+          option: {
+            submitText: "生成开票",
+            emptyText: "取消",
+            span: 24,
+            column: [
+              {
+                label: "开票项目",
+                prop: "serverName",
+                type: "select",
+                dicUrl: "/api/blade-system/dict-biz/dictionary?code=Invoice_information_los",
+                props: {
+                  label: "dictValue",
+                  value: "dictValue"
+                },
+                rules: [
+                  {
+                    required: true,
+                    message: "请选择 开票项目",
+                    trigger: "blur"
+                  }
+                ],
+                span: 24
+              }
+            ]
+          },
+          beforeClose: done => {
+            done();
+          },
+          callback: res => {
+            res.done();
+            let obj = {
+              ...this.form,
+              billNoFormat: "HYDZ",
+              businessTypeCode: "HYDZ",
+              businessType: "CHK",
+              serverName: res.data.serverName,
+              finStlBillsItemsList: this.selectionList
+            };
+            const loading = this.$loading({
+              lock: true,
+              text: "加载中",
+              spinner: "el-icon-loading",
+              background: "rgba(255,255,255,0.7)"
+            });
+            generateFinInvoicesDetail(obj)
+              .then(res => {
+                this.$message.success("操作成功");
+                this.$emit("update", this.form.id, "finstlbills");
+              })
+              .finally(() => {
+                loading.close();
+              });
+            res.close();
+          }
         });
-        generateFinInvoicesDetail(obj)
-          .then(res => {
-            this.$message.success("操作成功");
-            this.$emit("update", this.form.id, "finstlbills");
-          })
-          .finally(() => {
-            loading.close();
-          });
       }
       if (name == "撤销开票") {
         if (this.selectionList.length === 0) {
@@ -828,4 +926,8 @@ export default {
 };
 </script>
 
-<style lang="scss" scoped></style>
+<style lang="scss" scoped>
+.el-button--text.is-disabled {
+  color: #c0c4cc !important;
+}
+</style>

+ 42 - 14
src/views/iosBasicData/financialManagement/finstlbills/components/queryData.vue

@@ -14,7 +14,7 @@
       @saveColumn="saveColumn('crud', 'option', 'optionBack', 487)"
     >
       <template slot="menuLeft">
-        <el-button size="small" type="success" :disabled="disabled" @click="allClick('确认选定行')">确认选定行</el-button>
+        <el-button size="small" type="text" :disabled="disabled" @click="allClick('确认选定行')" style="color:#409EFF">确认选定行</el-button>
         <el-tag type="danger" style="margin-right: 2px;">应收(CNY):{{ amountDSubSum || 0 }}</el-tag>
         <el-tag type="danger" style="margin-right: 2px;">应收(USD):{{ amountDSubUsdSum || 0 }}</el-tag>
         <el-tag type="success" style="margin-right: 2px;">应付(CNY):{{ amountCSubSum || 0 }}</el-tag>
@@ -45,7 +45,7 @@
       <template slot="reconciliationAmount" slot-scope="{ row }">
         <el-popover trigger="click" v-if="Number(row.reconciliationAmount)">
           <avue-crud :data="rlaData" :option="rlaOption"></avue-crud>
-          <span style="color: #409EFF;cursor: pointer" slot="reference" @click="viewRLA(row)">
+          <span style="color: #409EFF;cursor: pointer" slot="reference" @click="viewRLA(row, '对账')">
             {{ row.reconciliationAmount }}
           </span>
         </el-popover>
@@ -54,21 +54,27 @@
       <template slot="reconciliationAmountUsd" slot-scope="{ row }">
         <el-popover trigger="click" v-if="Number(row.reconciliationAmountUsd)">
           <avue-crud :data="rlaData" :option="rlaOption"></avue-crud>
-          <span style="color: #409EFF;cursor: pointer" slot="reference" @click="viewRLA(row)">
+          <span style="color: #409EFF;cursor: pointer" slot="reference" @click="viewRLA(row, '对账')">
             {{ row.reconciliationAmountUsd }}
           </span>
         </el-popover>
         <span v-else>{{ row.reconciliationAmountUsd }}</span>
       </template>
+      <template slot="stlAmount" slot-scope="{ row }">
+        <el-popover trigger="click" v-if="Number(row.stlAmount)">
+          <avue-crud :data="rlaData" :option="rlaOption"></avue-crud>
+          <span style="color: #409EFF;cursor: pointer" slot="reference" @click="viewRLA(row, '结算中心')">
+            {{ row.stlAmount }}
+          </span>
+        </el-popover>
+        <span v-else>{{ row.stlAmount }}</span>
+      </template>
     </avue-crud>
   </div>
 </template>
 
 <script>
-import {
-  finstlbillslistAccBillV1,
-  finstlbillsSubmit,
-} from "@/api/iosBasicData/finstlbills";
+import { finstlbillslistAccBillV1, finstlbillsSubmit } from "@/api/iosBasicData/finstlbills";
 import { feecenterSelectByAccNoList, getListAll } from "@/api/iosBasicData/finstlbills";
 export default {
   data() {
@@ -147,7 +153,13 @@ export default {
             overHidden: true
           },
           {
-            label: "MB/L NO",
+            label: "对账单位",
+            prop: "corpCnName",
+            width: 140,
+            overHidden: true
+          },
+          {
+            label: "主单号",
             prop: "mblno",
             width: 100,
             overHidden: true
@@ -225,6 +237,18 @@ export default {
             overHidden: true
           },
           {
+            label: "结算单号",
+            prop: "stlNo",
+            width: 80,
+            overHidden: true
+          },
+          {
+            label: "结算单金额",
+            prop: "stlAmount",
+            width: 80,
+            overHidden: true
+          },
+          {
             label: "销账日期",
             prop: "clearedDate",
             type: "date",
@@ -245,7 +269,7 @@ export default {
             overHidden: true
           },
           {
-            label: "HB/L NO",
+            label: "分单号",
             prop: "hblno",
             width: 80,
             overHidden: true
@@ -382,9 +406,9 @@ export default {
     this.option = await this.getColumnData(this.getColumnName(487), this.optionBack);
   },
   methods: {
-    viewRLA(row) {
+    viewRLA(row, type) {
       this.rlaData = [];
-      getListAll({ billId: row.accBillId }).then(res => {
+      getListAll({ billId: row.accBillId, srcType: type }).then(res => {
         this.rlaData = res.data.data;
       });
     },
@@ -494,8 +518,8 @@ export default {
         isCleared: this.form.isCleared, // 是否销账(0 未销账 3 部分销账 9 销账)
         accBillNo: this.form.accountNo, // 账单编号  ACCT NO
         billNo: this.form.businessNo, // 单据编号  JOB NO
-        mblno: this.form.mblno, // MB/L NO
-        hblno: this.form.hblno, // HB/L NO
+        mblno: this.form.mblno, // 主单号
+        hblno: this.form.hblno, // 分单号
         isChecked: this.form.isChecked, // 是否对账(0 未对账 1 已对账)
         queryAmount: this.form.queryAmount, // 查询金额
         businessType: this.form.businessTypes, // 业务类型
@@ -610,4 +634,8 @@ export default {
 };
 </script>
 
-<style lang="scss" scoped></style>
+<style lang="scss" scoped>
+.el-button--text.is-disabled {
+  color: #c0c4cc !important;
+}
+</style>

+ 55 - 30
src/views/iosBasicData/financialManagement/finstlbills/detailsPage.vue

@@ -7,7 +7,7 @@
         <el-button v-if="form.id && pageIds.length" type="text" @click="nextPage">下一票</el-button>
       </div>
       <div class="add-customer-btn">
-        <el-button v-if="form.id && form.dc == 'C'" size="small" type="success" @click="allClick('指示')">指示</el-button>
+        <el-button v-if="form.operatingType == '付费申请'" size="small" type="success" @click="allClick('查看指示')">查看指示</el-button>
         <el-button type="success" size="small" v-if="form.operatingType == '销账'" @click="allClick('预付款')">预付款</el-button>
         <el-button size="small" type="danger" plain :disabled="editButton" v-if="form.status == 3" @click="allClick('撤销完成')">撤销完成 </el-button>
         <el-button
@@ -143,7 +143,7 @@
           <picked-data ref="pickedData" :form="form" :tableData="form.finStlBillsItemsList" @update="update" :disabled="editButton"></picked-data>
         </el-tab-pane>
         <el-tab-pane label="开票明细" name="3">
-          <fininvoiceitemdetail :form="form" :data="form.finInvoiceItemDetailList" @update="update" :disabled="form.status == 3">
+          <fininvoiceitemdetail :form="form" :data="form.finInvoiceItemDetailList" @update="update" :disabled="form.operatingStatus!=0">
           </fininvoiceitemdetail
         ></el-tab-pane>
       </el-tabs>
@@ -157,8 +157,9 @@
           </avue-crud>
         </div>
       </el-dialog>
-      <cashier-item ref="cashier" @update="update"></cashier-item>
-      <advance-payment ref="advance" @apData="apData" :disabled="form.operatingStatus == 3"></advance-payment>
+      <cashier-item ref="cashier" @update="update" :disabled="form.operatingType == '付费申请'"></cashier-item>
+      <advance-payment ref="advance" @apData="apData" :disabled="form.operatingType == 3"></advance-payment>
+      <fee-info ref="feeInfo"></fee-info>
     </div>
   </div>
 </template>
@@ -177,7 +178,6 @@ import {
   finstlbillsDetail,
   finstlbillsRevokeReconciliation,
   finstlbillsSubmit,
-  settlementApprove,
   revokeSettlementApprove,
   confirmOffset,
   revokeOffset,
@@ -395,12 +395,12 @@ export default {
             disabled: false
           },
           {
-            label: "MB/L NO",
+            label: "主单号",
             prop: "mblno",
             disabled: false
           },
           {
-            label: "HB/L NO",
+            label: "分单号",
             prop: "hblno",
             disabled: false
           },
@@ -612,6 +612,14 @@ export default {
       if (this.form.finStlBillsItemsList.length == 0) {
         return this.$message.error("选定数据不能为空");
       }
+      for (let item of this.form.finStlBillsItemsList) {
+        if (item.isChecked == 0) {
+          return this.$message.error("选定数据存在未对账的数据,请维护");
+        }
+        if (item.isSignfor == 0) {
+          return this.$message.error("选定数据存在未签收的数据,请维护");
+        }
+      }
       let obj = {
         ...this.form,
         billNoFormat: "HYDZ",
@@ -621,20 +629,21 @@ export default {
         pageLabel: "对账中心(J)"
       };
       if (name == "付费申请") {
-        const loading = this.$loading({
-          lock: true,
-          text: "加载中",
-          spinner: "el-icon-loading",
-          background: "rgba(255,255,255,0.7)"
-        });
-        settlementApprove(obj)
-          .then(res => {
-            this.$message.success("操作成功");
-            this.getDetail(this.form.id);
-          })
-          .finally(() => {
-            loading.close();
-          });
+        this.$refs.cashier.openDialog(this.form, this.form.finStlBillsItemsList, "auto");
+        // const loading = this.$loading({
+        //   lock: true,
+        //   text: "加载中",
+        //   spinner: "el-icon-loading",
+        //   background: "rgba(255,255,255,0.7)"
+        // });
+        // settlementApprove(obj)
+        //   .then(res => {
+        //     this.$message.success("操作成功");
+        //     this.getDetail(this.form.id);
+        //   })
+        //   .finally(() => {
+        //     loading.close();
+        //   });
       }
       if (name == "收付相抵") {
         const loading = this.$loading({
@@ -656,6 +665,23 @@ export default {
         this.$refs.advance.openDialog(this.form);
       }
       if (name == "发票申请") {
+        if (this.form.finInvoiceItemDetailList.length == 0) {
+          return this.$message.error("开票明细不能为空");
+        }
+        for (let item of this.form.finInvoiceItemDetailList) {
+          if (!item.invoiceCompanyId) {
+            return this.$message.error("发票抬头不能为空");
+          }
+          if (!item.curCode) {
+            return this.$message.error("币别不能为空");
+          }
+          if (!Number(item.exrate)) {
+            return this.$message.error("汇率不能为空或0");
+          }
+          if (Number(item.price ? item.price : 0) <= 0) {
+            return this.$message.error("单价不能为非正数");
+          }
+        }
         const loading = this.$loading({
           lock: true,
           text: "加载中",
@@ -752,8 +778,8 @@ export default {
         this.$refs.form.resetForm();
         this.form = this.$options.data().form;
       }
-      if (name == "指示") {
-        this.$refs.cashier.openDialog(this.form, this.form.finStlBillsItemsList, "auto");
+      if (name == "查看指示") {
+        this.$refs.cashier.openDialog(this.form, this.form.finStlBillsItemsList, "view");
       }
       if (name == "确认完成") {
         if (this.form.finStlBillsItemsList.length == 0) {
@@ -902,8 +928,8 @@ export default {
         isCleared: this.form.isCleared, // 是否销账(0 未销账 3 部分销账 9 销账)
         accBillNo: this.form.accountNo, // 账单编号  ACCT NO
         billNo: this.form.businessNo, // 单据编号  JOB NO
-        mblno: this.form.mblno, // MB/L NO
-        hblno: this.form.hblno, // HB/L NO
+        mblno: this.form.mblno, // 主单号
+        hblno: this.form.hblno, // 分单号
         isChecked: this.form.isChecked, // 是否对账(0 未对账 1 已对账)
         queryAmount: this.form.queryAmount, // 查询金额
         businessType: this.form.businessTypes, // 业务类型
@@ -979,6 +1005,9 @@ export default {
           loading.close();
         });
     },
+    // application() {
+
+    // },
     update(id, type) {
       this.getDetail(id, type);
     },
@@ -1013,7 +1042,7 @@ export default {
       }
       for (let item of this.form.finInvoiceItemDetailList) {
         if (!item.invoiceCompanyId) {
-          return this.$message.error("开票单位不能为空");
+          return this.$message.error("发票抬头不能为空");
         }
         if (!item.curCode) {
           return this.$message.error("币别不能为空");
@@ -1095,10 +1124,6 @@ export default {
             //再次查询是为了避免已选定的数据不能再次出现查询结果里面
             this.$refs.queryData.search();
           }
-          //刷新指示
-          if (type == "updateCashier") {
-            this.$refs.cashier.openDialog(this.form);
-          }
         })
         .finally(() => {
           loading.close();

+ 4 - 4
src/views/iosBasicData/financialManagement/finstlbills/index.vue

@@ -107,14 +107,14 @@ export default {
             overHidden: true
           },
           {
-            label: "MB/L NO",
+            label: "主单号",
             prop: "mblno",
             search: true,
             searchOrder: 2,
             overHidden: true
           },
           {
-            label: "HB/L NO",
+            label: "分单号",
             prop: "hblno",
             search: true,
             searchOrder: 4,
@@ -292,7 +292,7 @@ export default {
             overHidden: true
           },
           {
-            label: "MB/L NO",
+            label: "主单号",
             prop: "mblno",
             width: 100,
             overHidden: true
@@ -413,7 +413,7 @@ export default {
             overHidden: true
           },
           {
-            label: "HB/L NO",
+            label: "分单号",
             prop: "hblno",
             width: 100,
             overHidden: true

+ 6 - 6
src/views/iosBasicData/fininvoices/fininvoicesDetails.vue

@@ -82,7 +82,7 @@
                     </el-form-item>
                   </el-col>
                   <el-col :span="12">
-                    <el-form-item label="开票单位" prop="invCorpCnName">
+                    <el-form-item label="发票抬头" prop="invCorpCnName">
                       <search-query
                         :datalist="invCorpData"
                         :selectValue="form.invCorpCnName"
@@ -91,7 +91,7 @@
                         :buttonIf="false"
                         :remote="true"
                         :filterable="true"
-                        placeholder="请选择开票单位"
+                        placeholder="请选择发票抬头"
                         :forParameter="{ key: 'id', label: 'invoiceHeader', value: 'id' }"
                         @corpChange="corpChange($event, 'invCorpCnName')"
                         @remoteMethod="invcorpsinvoiceheaderListfun"
@@ -864,7 +864,7 @@ export default {
       handleSelectionData: [], // 费用明细选择的数据
       invoicingCheckboxData: [], // 开票明细选择的数据
       corpData: [], // 结算单位数据
-      invCorpData: [], // 开票单位
+      invCorpData: [], // 发票抬头
       bankReceiptData: [], // 结算单位银行账号数据
       // 业务类型
       businessTypesData: [
@@ -1260,7 +1260,7 @@ export default {
                 this.$set(this.form, "bankReceiptBankName", res.data.data.records[0].accountBank);
               }
             });
-            // 带出开票单位数据
+            // 带出发票抬头数据
             corpsinvoiceheaderList(1, 20, { pid: this.form.corpId }).then(res => {
               if (res.data.data.records.length != 0) {
                 this.$set(this.form, "invCorpId", res.data.data.records[0].id);
@@ -1284,7 +1284,7 @@ export default {
           }
         }
       }
-      // 开票单位
+      // 发票抬头
       else if (name == "invCorpCnName") {
         this.$set(this.form, "invCorpAccountBankUsd", "");
         this.$set(this.form, "invCorpAccountNoUsd", "");
@@ -1745,7 +1745,7 @@ export default {
         this.bankReceiptData = res.data.data.records;
       });
     },
-    // 根据往来单位选择调用获取发票抬头数据 开票单位数据
+    // 根据往来单位选择调用获取发票抬头数据 发票抬头数据
     invcorpsinvoiceheaderListfun(cnName) {
       corpsinvoiceheaderList(1, 20, { pid: this.form.corpId, cnName }).then(res => {
         this.invCorpData = res.data.data.records;

+ 8 - 8
src/views/iosBasicData/fininvoices/index.vue

@@ -266,49 +266,49 @@ export default {
             overHidden: true,
           },
           // {
-          //   label: "客户开票单位名称",
+          //   label: "客户发票抬头名称",
           //   prop: "corpInvoiceHeader",
           //   width: 150,
           //   overHidden: true,
           // },
           {
-            label: "开票单位中文名称",
+            label: "发票抬头中文名称",
             prop: "invCorpCnName",
             width: 160,
             overHidden: true,
           },
           // {
-          //   label: "开票单位英文名称",
+          //   label: "发票抬头英文名称",
           //   prop: "invCorpEnName",
           //   width: 150,
           //   overHidden: true,
           // },
           {
-            label: "开票单位税号",
+            label: "发票抬头税号",
             prop: "invCorpTaxNo",
             width: 140,
             overHidden: true,
           },
           {
-            label: "开票单位CNY开户银行",
+            label: "发票抬头CNY开户银行",
             prop: "invCorpAccountBankCny",
             width: 160,
             overHidden: true,
           },
           {
-            label: "开票单位CNY银行账号",
+            label: "发票抬头CNY银行账号",
             prop: "invCorpAccountNoCny",
             width: 160,
             overHidden: true,
           },
           {
-            label: "开票单位USD开户银行",
+            label: "发票抬头USD开户银行",
             prop: "invCorpAccountBankUsd",
             width: 160,
             overHidden: true,
           },
           {
-            label: "开票单位USD银行账号",
+            label: "发票抬头USD银行账号",
             prop: "invCorpAccountNoUsd",
             width: 160,
             overHidden: true,

+ 102 - 22
src/views/iosBasicData/fininvoicesApplyfor/assembly/fininvoiceitemdetail.vue

@@ -18,22 +18,38 @@
           <span>{{ Number(scope.$index) + 1 }}</span>
         </template>
       </el-table-column>
-      <el-table-column prop="serverName" label="项目名称" width="140px">
+      <el-table-column prop="status" label="是否开票" width="70px">
+        <template slot-scope="{row}">
+          <span v-if="row.status==0">未开</span>
+          <span v-if="row.status==1">已开</span>
+        </template>
+      </el-table-column>
+      <el-table-column prop="invoiceCompanyName" label="发票抬头" width="140px">
         <template slot-scope="{ row }">
-          <search-query
+          <dic-select
             v-if="row.edit"
-            :datalist="serverData"
-            :selectValue="row.serverName"
-            :clearable="true"
-            :buttonIf="false"
+            v-model="row.invoiceCompanyName"
+            placeholder="发票抬头"
+            label="invoiceHeader"
+            res="records"
+            :url="'/blade-los/corpsinvoiceheader/list?current=1&size=20&pid=' + form.corpId"
             :filterable="true"
-            size="mini"
-            :forParameter="{ key: 'dictKey', label: 'dictValue', value: 'dictValue' }"
-            placeholder="请选择项目名称"
-            @corpChange="corpChange($event, 'serverName')"
-            @corpFocus="serverWorkDictsfun"
-          >
-          </search-query>
+            :remote="true"
+            dataName="invoiceHeader"
+            @selectChange="rowDicChange('invoiceCompanyName', $event, row)"
+          ></dic-select>
+          <span v-else>{{ row.invoiceCompanyName }}</span>
+        </template>
+      </el-table-column>
+      <el-table-column prop="serverName" label="项目名称" width="140px">
+        <template slot-scope="{ row }">
+          <dic-select
+            v-if="row.edit"
+            v-model="row.serverName"
+            placeholder="项目名称"
+            label="dictValue"
+            url="/blade-system/dict-biz/dictionary?code=Invoice_information_los"
+          ></dic-select>
           <span v-else>{{ row.serverName }}</span>
         </template>
       </el-table-column>
@@ -63,13 +79,36 @@
           <span v-else>{{ row.unit }}</span>
         </template>
       </el-table-column>
-      <el-table-column prop="number" label="数量" width="100px">
+      <el-table-column prop="curCode" label="币别" width="100px">
         <template slot-scope="{ row }">
-          <el-input v-if="row.edit" style="width: 100%;" v-model="row.number" size="mini" autocomplete="off" clearable placeholder="请输入数量">
-          </el-input>
-          <span v-else>{{ row.number }}</span>
+          <dic-select
+            v-if="row.edit"
+            v-model="row.curCode"
+            placeholder="币别"
+            key="id"
+            label="code"
+            :url="'/blade-los/bcurrency/getExrate?date=' + form.invoiceDate + ' 00:00:00' + '&dc=' + form.dc"
+            :filterable="true"
+            @selectChange="rowDicChange('curCode', $event, row)"
+          ></dic-select>
+          <span v-else>{{ row.curCode }}</span>
         </template>
       </el-table-column>
+      <el-table-column prop="exrate" label="汇率" width="100px">
+        <template slot-scope="{ row }">
+          <el-input-number
+            v-if="row.edit"
+            v-model="row.exrate"
+            size="small"
+            placeholder="请输入 汇率"
+            :precision="4"
+            :controls="false"
+            style="width:100%"
+          ></el-input-number>
+          <span v-else>{{ row.exrate }}</span>
+        </template>
+      </el-table-column>
+      <el-table-column prop="number" label="数量" width="100px"> </el-table-column>
       <el-table-column prop="price" label="单价(含税)">
         <template slot-scope="{ row }">
           <el-input
@@ -129,11 +168,29 @@
       </el-table-column>
       <el-table-column fixed="right" label="操作" width="100">
         <template slot-scope="scope">
-          <el-button v-if="scope.row.edit" :disabled="editSave || disabled" type="text" size="small" @click="savefun(scope.row, scope.$index)"
+          <el-button
+            v-if="scope.row.edit"
+            :disabled="editSave || scope.row.status == 1"
+            type="text"
+            size="small"
+            @click="savefun(scope.row, scope.$index)"
             >保存</el-button
           >
-          <el-button v-else type="text" :disabled="editSave || disabled" size="small" @click="editfun(scope.row, scope.$index)">编辑</el-button>
-          <el-button type="text" :disabled="editSave || disabled" size="small" @click="deletefun(scope.row, scope.$index)">删除</el-button>
+          <el-button
+            v-else
+            type="text"
+            :disabled="editSave || scope.row.status == 1 || scope.row.srcId"
+            size="small"
+            @click="editfun(scope.row, scope.$index)"
+            >编辑</el-button
+          >
+          <el-button
+            type="text"
+            :disabled="editSave || scope.row.status == 1 || scope.row.srcId"
+            size="small"
+            @click="deletefun(scope.row, scope.$index)"
+            >删除</el-button
+          >
         </template>
       </el-table-column>
     </el-table>
@@ -144,10 +201,16 @@
 import SearchQuery from "@/components/iosbasic-data/searchquery.vue";
 import { getWorkDicts } from "@/api/system/dictbiz";
 import { fininvoiceitemdetailSubmit } from "@/api/iosBasicData/fininvoices";
-
+import dicSelect from "@/components/dicSelect/main";
 export default {
-  components: { SearchQuery },
+  components: { SearchQuery, dicSelect },
   props: {
+    form: {
+      type: Object,
+      default: function() {
+        return {};
+      }
+    },
     tableData: {
       type: Array,
       default: []
@@ -172,6 +235,23 @@ export default {
     };
   },
   methods: {
+    rowDicChange(name, row, el) {
+      if (name == "invoiceCompanyName") {
+        if (row) {
+          el.invoiceCompanyId = row.id;
+        } else {
+          el.invoiceCompanyId = null;
+          el.invoiceCompanyName = null;
+        }
+      }
+      if (name == "curCode") {
+        if (row) {
+          el.exrate = row.exrate;
+        } else {
+          el.exrate = 0;
+        }
+      }
+    },
     calculate(row) {
       row.amount = Number(Number(row.number ? row.number : 0) * Number(row.price ? row.price : 0)).toFixed(2);
       // 税额 = 含税金额 × 税率 / (1 + 税率)

+ 8 - 7
src/views/iosBasicData/fininvoicesApplyfor/fininvoicesDetails.vue

@@ -102,7 +102,7 @@
                     </el-form-item>
                   </el-col>
                   <el-col :span="12">
-                    <el-form-item label="开票单位" prop="invCorpCnName">
+                    <el-form-item label="发票抬头" prop="invCorpCnName">
                       <search-query
                         :datalist="invCorpData"
                         :selectValue="form.invCorpCnName"
@@ -111,7 +111,7 @@
                         :buttonIf="false"
                         :remote="true"
                         :filterable="true"
-                        placeholder="请选择开票单位"
+                        placeholder="请选择发票抬头"
                         :forParameter="{
                           key: 'id',
                           label: 'invoiceHeader',
@@ -703,6 +703,7 @@
                 <el-button :disabled="statusType" size="small" type="danger" @click="invoicingBatchDelete">一键删除</el-button>
               </div>
               <fininvoiceitemdetail
+                :form="form"
                 :tableData="InvoicingList"
                 :handleSelectionData="invoicingCheckboxData"
                 @handleSelectionChange="invoicingCheckboxChange"
@@ -990,7 +991,7 @@ export default {
       handleSelectionData: [], // 费用明细选择的数据
       invoicingCheckboxData: [], // 开票明细选择的数据
       corpData: [], // 结算单位数据
-      invCorpData: [], // 开票单位
+      invCorpData: [], // 发票抬头
       bankReceiptData: [], // 结算单位银行账号数据
       // 业务类型
       businessTypesData: [
@@ -1478,7 +1479,7 @@ export default {
                 this.$set(this.form, "bankReceiptBankName", res.data.data.records[0].accountBank);
               }
             });
-            // 带出开票单位数据
+            // 带出发票抬头数据
             corpsinvoiceheaderList(1, 20, {
               pid: this.form.corpId
             }).then(res => {
@@ -1504,7 +1505,7 @@ export default {
           }
         }
       }
-      // 开票单位
+      // 发票抬头
       else if (name == "invCorpCnName") {
         this.$set(this.form, "invCorpAccountBankUsd", "");
         this.$set(this.form, "invCorpAccountNoUsd", "");
@@ -1714,7 +1715,7 @@ export default {
           this.$set(this.form, "bankReceiptBankName", res.data.data.records[0].accountBank);
         }
       });
-      // 带出开票单位数据
+      // 带出发票抬头数据
       corpsinvoiceheaderList(1, 20, { pid: row.id }).then(res => {
         if (res.data.data.records.length != 0) {
           this.$set(this.form, "invCorpId", res.data.data.records[0].id);
@@ -2033,7 +2034,7 @@ export default {
         this.bankReceiptData = res.data.data.records;
       });
     },
-    // 根据往来单位选择调用获取发票抬头数据 开票单位数据
+    // 根据往来单位选择调用获取发票抬头数据 发票抬头数据
     invcorpsinvoiceheaderListfun(cnName) {
       corpsinvoiceheaderList(1, 20, {
         pid: this.form.corpId,

+ 5 - 5
src/views/iosBasicData/fininvoicesApplyfor/index.vue

@@ -346,31 +346,31 @@ export default {
             overHidden: true
           },
           {
-            label: "开票单位税号",
+            label: "发票抬头税号",
             prop: "invCorpTaxNo",
             width: "140",
             overHidden: true
           },
           {
-            label: "开票单位CNY开户银行",
+            label: "发票抬头CNY开户银行",
             prop: "invCorpAccountBankCny",
             width: "160",
             overHidden: true
           },
           {
-            label: "开票单位CNY银行账号",
+            label: "发票抬头CNY银行账号",
             prop: "invCorpAccountNoCny",
             width: "160",
             overHidden: true
           },
           {
-            label: "开票单位USD开户银行",
+            label: "发票抬头USD开户银行",
             prop: "invCorpAccountBankUsd",
             width: "160",
             overHidden: true
           },
           {
-            label: "开票单位USD银行账号",
+            label: "发票抬头USD银行账号",
             prop: "invCorpAccountNoUsd",
             width: "160",
             overHidden: true

+ 189 - 38
src/views/iosBasicData/fininvoicesOutput/fininvoicesDetails.vue

@@ -83,7 +83,7 @@
                     </el-form-item>
                   </el-col>
                   <el-col :span="12">
-                    <el-form-item label="开票单位" prop="invCorpCnName">
+                    <el-form-item label="发票抬头" prop="invCorpCnName">
                       <search-query
                         :datalist="invCorpData"
                         :selectValue="form.invCorpCnName"
@@ -92,7 +92,7 @@
                         :buttonIf="false"
                         :remote="true"
                         :filterable="true"
-                        placeholder="请选择开票单位"
+                        placeholder="请选择发票抬头"
                         :forParameter="{
                           key: 'id',
                           label: 'invoiceHeader',
@@ -212,7 +212,7 @@
                         v-model="form.vesselVoyno"
                         size="small"
                         autocomplete="off"
-                        :disabled="editSave||form.srcType == '对账'"
+                        :disabled="editSave || form.srcType == '对账'"
                         clearable
                         placeholder="请输入船名/航次"
                       >
@@ -227,7 +227,7 @@
                         style="width: 100%;"
                         type="date"
                         size="small"
-                        :disabled="editSave||form.srcType == '对账'"
+                        :disabled="editSave || form.srcType == '对账'"
                         value-format="yyyy-MM-dd HH:mm:ss"
                         placeholder="请输入开航日期"
                       >
@@ -242,7 +242,7 @@
                         :filterable="true"
                         :clearable="true"
                         :remote="true"
-                        :disabled="editSave||form.srcType == '对账'"
+                        :disabled="editSave || form.srcType == '对账'"
                         :buttonIf="false"
                         placeholder="请选择装货港"
                         :forParameter="{
@@ -265,7 +265,7 @@
                         :filterable="true"
                         :clearable="true"
                         :remote="true"
-                        :disabled="editSave||form.srcType == '对账'"
+                        :disabled="editSave || form.srcType == '对账'"
                         :buttonIf="false"
                         placeholder="请选择卸货港"
                         :forParameter="{
@@ -288,7 +288,7 @@
                         :filterable="true"
                         :clearable="true"
                         :remote="true"
-                        :disabled="editSave||form.srcType == '对账'"
+                        :disabled="editSave || form.srcType == '对账'"
                         :buttonIf="false"
                         placeholder="请选择目的地"
                         :forParameter="{
@@ -310,7 +310,7 @@
                         v-model="form.containers"
                         size="small"
                         autocomplete="off"
-                        :disabled="editSave||form.srcType == '对账'"
+                        :disabled="editSave || form.srcType == '对账'"
                         clearable
                         placeholder="请输入箱型箱量"
                       >
@@ -373,7 +373,7 @@
                           :datalist="corpData"
                           :selectValue="form.corpCnName"
                           :clearable="true"
-                          :disabled="editSave||form.srcType == '对账'"
+                          :disabled="editSave || form.srcType == '对账'"
                           :buttonIf="false"
                           :remote="true"
                           :filterable="true"
@@ -439,7 +439,7 @@
                         style="width: 100%;"
                         type="date"
                         size="small"
-                        :disabled="editSave||form.srcType == '对账'"
+                        :disabled="editSave || form.srcType == '对账'"
                         value-format="yyyy-MM-dd"
                         placeholder="选择业务日期"
                       >
@@ -454,7 +454,7 @@
                         style="width: 100%;"
                         type="date"
                         size="small"
-                        :disabled="editSave||form.srcType == '对账'"
+                        :disabled="editSave || form.srcType == '对账'"
                         value-format="yyyy-MM-dd"
                         placeholder="选择业务日期"
                       >
@@ -464,7 +464,7 @@
                   <el-col :span="8">
                     <el-form-item label="发票汇率" prop="exrate">
                       <span slot="label">
-                        <span style="color: #1e9fff" @click="allCLick('发票汇率')">发票汇率</span>
+                        <span style="color: #1e9fff" @click="allClick('发票汇率')">发票汇率</span>
                       </span>
                       <el-input
                         style="width: 100%;"
@@ -485,7 +485,7 @@
                         v-model="form.businessNo"
                         size="small"
                         autocomplete="off"
-                        :disabled="editSave||form.srcType == '对账'"
+                        :disabled="editSave || form.srcType == '对账'"
                         clearable
                         placeholder="请输入业务编号"
                       >
@@ -521,7 +521,7 @@
                         v-model="form.mblno"
                         size="small"
                         autocomplete="off"
-                        :disabled="editSave||form.srcType == '对账'"
+                        :disabled="editSave || form.srcType == '对账'"
                         clearable
                         placeholder="请输入主单编号"
                       >
@@ -535,7 +535,7 @@
                         v-model="form.checkNo"
                         size="small"
                         autocomplete="off"
-                        :disabled="editSave||form.srcType == '对账'"
+                        :disabled="editSave || form.srcType == '对账'"
                         clearable
                         placeholder="请输入对账单号"
                       >
@@ -549,7 +549,7 @@
                         v-model="form.hblno"
                         size="small"
                         autocomplete="off"
-                        :disabled="editSave||form.srcType == '对账'"
+                        :disabled="editSave || form.srcType == '对账'"
                         clearable
                         placeholder="请输入分单编号"
                       >
@@ -563,7 +563,7 @@
                         v-model="form.applyNo"
                         size="small"
                         autocomplete="off"
-                        :disabled="editSave||form.srcType == '对账'"
+                        :disabled="editSave || form.srcType == '对账'"
                         clearable
                         placeholder="请输入申请单号"
                       >
@@ -577,7 +577,7 @@
                         v-model="form.bookingNo"
                         size="small"
                         autocomplete="off"
-                        :disabled="editSave||form.srcType == '对账'"
+                        :disabled="editSave || form.srcType == '对账'"
                         clearable
                         placeholder="请输入BOOK NO"
                       >
@@ -597,7 +597,7 @@
                         :filterable="true"
                         :multiple="true"
                         :collapseTags="true"
-                        :disabled="editSave||form.srcType == '对账'"
+                        :disabled="editSave || form.srcType == '对账'"
                         dataType="string"
                       ></dic-select>
                     </el-form-item>
@@ -623,7 +623,7 @@
                         :selectValue="form.curCode"
                         :filterable="true"
                         :clearable="true"
-                        :disabled="editSave||form.srcType == '对账'"
+                        :disabled="editSave || form.srcType == '对账'"
                         :remote="true"
                         :buttonIf="false"
                         placeholder="请输入选择币种"
@@ -650,7 +650,7 @@
                         :filterable="true"
                         :multiple="true"
                         :collapseTags="true"
-                        :disabled="editSave||form.srcType == '对账'"
+                        :disabled="editSave || form.srcType == '对账'"
                         dataType="string"
                       ></dic-select>
                     </el-form-item>
@@ -737,7 +737,7 @@
                     <el-button style="margin-left: 10px" :disabled="editSave" size="small" type="warning" @click="invoicingRevokefun"
                       >撤销开票明细</el-button
                     >
-                    <el-button size="small" :disabled="editSave||form.srcType == '对账'" type="danger" @click="batchDeletefun">一键删除</el-button>
+                    <el-button size="small" :disabled="editSave || form.srcType == '对账'" type="danger" @click="batchDeletefun">一键删除</el-button>
                     <span style="font-size: 18px;font-weight: 600;">
                       <span style="color: #67C23A;margin-right: 10px;"> CNY:¥{{ amountSubSum }}元 </span>
                       <span style="color: #E6A23C;"> USD:${{ amountSubUsdSum }}元 </span>
@@ -748,20 +748,33 @@
             </el-tab-pane>
             <el-tab-pane label="开票明细" name="3">
               <div style="margin-bottom: 10px;display: flex;">
-                <el-button size="small" :disabled="editSave || form.srcType == '对账'" type="danger" @click="invoicingBatchDelete"
-                  >一键删除</el-button
+                <el-button size="small" type="primary" :disabled="editSave || !form.id" @click="allClick('新增')">新增</el-button>
+                <el-button size="small" :disabled="editSave || !form.id" type="danger" @click="invoicingBatchDelete">一键删除</el-button>
+                <el-button
+                  type="success"
+                  size="small"
+                  :disabled="editSave || invoicingCheckboxData.length == 0 || !form.id"
+                  @click="allClick('确认开票')"
+                  >确认开票</el-button
+                >
+                <el-button
+                  type="danger"
+                  size="small"
+                  :disabled="editSave || invoicingCheckboxData.length == 0 || !form.id"
+                  @click="allClick('撤销开票')"
+                  >撤销开票</el-button
                 >
-                <span style="font-size: 18px;font-weight: 600;margin-left: 100px;">
+                <span style="font-size: 18px;font-weight: 600;margin-left: 20px;">
                   <span style="color: #67C23A;"> CNY:¥{{ amountSubSum }}元 </span>
                 </span>
               </div>
               <fininvoiceitemdetail
+                :form="form"
                 :tableData="InvoicingList"
                 :handleSelectionData="invoicingCheckboxData"
                 @handleSelectionChange="invoicingCheckboxChange"
                 @deletefun="invoiceDeletionfun"
                 @savefun="invoiceSavefun"
-                :disabled="form.srcType == '对账'"
               >
               </fininvoiceitemdetail>
             </el-tab-pane>
@@ -851,7 +864,9 @@ import {
   fininvoicesConfirmFinInvoices,
   fininvoicesRevokeFinInvoices,
   getParamService,
-  updateParamService
+  updateParamService,
+  confirmInvoiceIssuance,
+  revokeInvoiceIssuance
 } from "@/api/iosBasicData/fininvoices";
 import { generateFinInvoices } from "@/api/iosBasicData/finstlbills";
 import { getWorkDicts } from "@/api/system/dictbiz";
@@ -948,7 +963,7 @@ export default {
       handleSelectionData: [], // 费用明细选择的数据
       invoicingCheckboxData: [], // 开票明细选择的数据
       corpData: [], // 结算单位数据
-      invCorpData: [], // 开票单位
+      invCorpData: [], // 发票抬头
       bankReceiptData: [], // 结算单位银行账号数据
       // 业务类型
       businessTypesData: [
@@ -1068,7 +1083,17 @@ export default {
     }
   },
   methods: {
-    allCLick(name) {
+    allClick(name) {
+      if (name == "新增") {
+        this.InvoicingList.push({
+          pid: this.form.id,
+          number: 1,
+          price: 0,
+          amountRate: 0,
+          amountTax: 0,
+          edit: true
+        });
+      }
       if (name == "发票汇率") {
         this.$confirm("是否确认修改业务参数配置?", "提示", {
           confirmButtonText: "确定",
@@ -1082,11 +1107,107 @@ export default {
           updateParamService(obj);
         });
       }
-    },
-    allClick(name) {
       if (name == "指示") {
         this.$refs.cashier.openDialog(this.form, this.tableData, "auto");
       }
+      if (name == "确认开票") {
+        if (this.invoicingCheckboxData.length == 0) {
+          return this.$message.error("请选择开票明细");
+        }
+        for (let item of this.invoicingCheckboxData) {
+          if (!item.id) {
+            return this.$message.error("请保存开票明细");
+          }
+          if (!item.curCode) {
+            return this.$message.error("币别不能为空");
+          }
+          if (!Number(item.exrate)) {
+            return this.$message.error("汇率不能为空或0");
+          }
+          if (Number(item.price ? item.price : 0) <= 0) {
+            return this.$message.error("单价不能为非正数");
+          }
+          if (item.status == 1) {
+            return this.$message.error("请选择未开发票明细");
+          }
+        }
+        let obj = {
+          ...this.form,
+          type: "销项",
+          billNoFormat: "XXFP",
+          businessTypeCode: "XXFP",
+          finInvoiceItemDetailList: this.invoicingCheckboxData
+        };
+        this.$confirm("是否确认开票?", {
+          confirmButtonText: "确定",
+          cancelButtonText: "取消",
+          type: "warning"
+        }).then(() => {
+          const loading = this.$loading({
+            lock: true,
+            text: "加载中",
+            spinner: "el-icon-loading",
+            background: "rgba(255,255,255,0.7)"
+          });
+          confirmInvoiceIssuance(obj)
+            .then(res => {
+              this.$message.success("操作成功");
+              this.fininvoicesDetailfun(this.form.id, "finstlbills");
+            })
+            .finally(() => {
+              loading.close();
+            });
+        });
+      }
+      if (name == "撤销开票") {
+        if (this.invoicingCheckboxData.length == 0) {
+          return this.$message.error("请选择开票明细");
+        }
+        for (let item of this.invoicingCheckboxData) {
+          if (!item.id) {
+            return this.$message.error("请保存开票明细");
+          }
+          if (!item.curCode) {
+            return this.$message.error("币别不能为空");
+          }
+          if (!Number(item.exrate)) {
+            return this.$message.error("汇率不能为空或0");
+          }
+          if (Number(item.price ? item.price : 0) <= 0) {
+            return this.$message.error("单价不能为非正数");
+          }
+          if (item.status == 0) {
+            return this.$message.error("请选择已开发票明细");
+          }
+        }
+        let obj = {
+          ...this.form,
+          type: "销项",
+          billNoFormat: "XXFP",
+          businessTypeCode: "XXFP",
+          finInvoiceItemDetailList: this.invoicingCheckboxData
+        };
+        this.$confirm("是否撤销开票?", {
+          confirmButtonText: "确定",
+          cancelButtonText: "取消",
+          type: "warning"
+        }).then(() => {
+          const loading = this.$loading({
+            lock: true,
+            text: "加载中",
+            spinner: "el-icon-loading",
+            background: "rgba(255,255,255,0.7)"
+          });
+          revokeInvoiceIssuance(obj)
+            .then(res => {
+              this.$message.success("操作成功");
+              this.fininvoicesDetailfun(this.form.id, "finstlbills");
+            })
+            .finally(() => {
+              loading.close();
+            });
+        });
+      }
     },
     updateCashier() {
       this.fininvoicesDetailfun(this.form.id, "updateCashier");
@@ -1165,9 +1286,15 @@ export default {
     },
     // 开票明细编辑完成保存
     invoiceSavefun(row) {
-      row.amountRate = this.form.taxRate;
-      // 销售额/(1+税率)×税率
-      row.amountTax = ((row.amount / (1 + Number(row.amountRate) / 100)) * (Number(row.amountRate) / 100)).toFixed(2);
+      if (!row.curCode) {
+        return this.$message.error("币别不能为空");
+      }
+      if (!Number(row.exrate)) {
+        return this.$message.error("汇率不能为空或0");
+      }
+      if (Number(row.price ? row.price : 0) <= 0) {
+        return this.$message.error("单价不能为非正数");
+      }
       fininvoiceitemdetailSubmit(row).then(res => {
         this.$message.success("操作成功");
         this.fininvoicesDetailfun(this.form.id);
@@ -1356,6 +1483,11 @@ export default {
       if (this.invoicingCheckboxData.length == 0) {
         return this.$message.warning("请选择要删除的数据");
       }
+      for (let item of this.invoicingCheckboxData) {
+        if (item.srcId) {
+          return this.$message.warning("系统生成的开票明细不允许删除");
+        }
+      }
       this.$confirm("确定将选择数据删除?", {
         confirmButtonText: "确定",
         cancelButtonText: "取消",
@@ -1416,7 +1548,7 @@ export default {
                 this.$set(this.form, "bankReceiptBankName", res.data.data.records[0].accountBank);
               }
             });
-            // 带出开票单位数据
+            // 带出发票抬头数据
             corpsinvoiceheaderList(1, 20, {
               pid: this.form.corpId
             }).then(res => {
@@ -1442,7 +1574,7 @@ export default {
           }
         }
       }
-      // 开票单位
+      // 发票抬头
       else if (name == "invCorpCnName") {
         this.$set(this.form, "invCorpAccountBankUsd", "");
         this.$set(this.form, "invCorpAccountNoUsd", "");
@@ -1558,6 +1690,14 @@ export default {
       }
     },
     submit(type) {
+      for (let item of this.InvoicingList) {
+        if (!item.id) {
+          return this.$message.error("请保存开票木棍西");
+        }
+        if (item.status == 0) {
+          return this.$message.error("开票明细存在未开票的数据");
+        }
+      }
       this.$confirm("确定进行确认开票操作?", {
         confirmButtonText: "确定",
         cancelButtonText: "取消",
@@ -1588,6 +1728,17 @@ export default {
             }
           }
         }
+        for (let item of this.InvoicingList) {
+          if (!item.curCode) {
+            return this.$message.error("币别不能为空");
+          }
+          if (!Number(item.exrate)) {
+            return this.$message.error("汇率不能为空或0");
+          }
+          if (Number(item.price ? item.price : 0) <= 0) {
+            return this.$message.error("单价不能为非正数");
+          }
+        }
         this.form.type = "销项";
         this.form.billNoFormat = "XXFP";
         this.form.businessTypeCode = "XXFP";
@@ -1681,7 +1832,7 @@ export default {
           this.$set(this.form, "bankReceiptBankName", res.data.data.records[0].accountBank);
         }
       });
-      // 带出开票单位数据
+      // 带出发票抬头数据
       corpsinvoiceheaderList(1, 20, { pid: row.id }).then(res => {
         if (res.data.data.records.length != 0) {
           this.$set(this.form, "invCorpId", res.data.data.records[0].id);
@@ -2040,7 +2191,7 @@ export default {
         this.bankReceiptData = res.data.data.records;
       });
     },
-    // 根据往来单位选择调用获取发票抬头数据 开票单位数据
+    // 根据往来单位选择调用获取发票抬头数据 发票抬头数据
     invcorpsinvoiceheaderListfun(cnName) {
       corpsinvoiceheaderList(1, 20, {
         pid: this.form.corpId,

+ 6 - 6
src/views/iosBasicData/fininvoicesOutput/index.vue

@@ -583,37 +583,37 @@ export default {
             overHidden: true
           },
           // {
-          //     label: "开票单位英文名称",
+          //     label: "发票抬头英文名称",
           //     prop: "invCorpEnName",
           //     width: "150",
           //     overHidden: true,
           // },
           {
-            label: "开票单位税号",
+            label: "发票抬头税号",
             prop: "invCorpTaxNo",
             width: "140",
             overHidden: true
           },
           {
-            label: "开票单位CNY开户银行",
+            label: "发票抬头CNY开户银行",
             prop: "invCorpAccountBankCny",
             width: "160",
             overHidden: true
           },
           {
-            label: "开票单位CNY银行账号",
+            label: "发票抬头CNY银行账号",
             prop: "invCorpAccountNoCny",
             width: "160",
             overHidden: true
           },
           {
-            label: "开票单位USD开户银行",
+            label: "发票抬头USD开户银行",
             prop: "invCorpAccountBankUsd",
             width: "160",
             overHidden: true
           },
           {
-            label: "开票单位USD银行账号",
+            label: "发票抬头USD银行账号",
             prop: "invCorpAccountNoUsd",
             width: "160",
             overHidden: true

+ 2 - 2
src/views/iosBasicData/finstlbills/assembly/fininvoiceitemdetail.vue

@@ -24,12 +24,12 @@
           <span v-if="row.invoiceStatus==1">已开</span>
         </template>
       </el-table-column>
-      <el-table-column prop="invoiceCompanyName" label="开票单位" width="120px" align="center">
+      <el-table-column prop="invoiceCompanyName" label="发票抬头" width="120px" align="center">
         <template slot-scope="{ row }">
           <dic-select
             v-if="row.edit"
             v-model="row.invoiceCompanyName"
-            placeholder="开票单位"
+            placeholder="发票抬头"
             label="invoiceHeader"
             res="records"
             :slotRight="true"

+ 2 - 2
src/views/iosBasicData/finstlbills/finstlbillsDetails.vue

@@ -1199,7 +1199,7 @@ export default {
     // 开票明细编辑完成保存
     invoiceSavefun(row, index) {
       if (!row.invoiceCompanyId) {
-        return this.$message.error("开票单位不能为空");
+        return this.$message.error("发票抬头不能为空");
       }
       if (!row.curCode) {
         return this.$message.error("币别不能为空");
@@ -1401,7 +1401,7 @@ export default {
       });
       for (let row of this.InvoicingList) {
         if (!row.invoiceCompanyId) {
-          return this.$message.error("开票单位不能为空");
+          return this.$message.error("发票抬头不能为空");
         }
         if (!row.curCode) {
           return this.$message.error("币别不能为空");

+ 1 - 1
src/views/salesManagement/salesContract/detailsPage.vue

@@ -664,7 +664,7 @@ export default {
             disabled: true,
           },
           {
-            label: '开票单位',
+            label: '发票抬头',
             prop: 'vbrk',
           },
           {

+ 1 - 1
src/views/statisticAnalysis/profit/config/mainList.json

@@ -275,7 +275,7 @@
           "index": 18
         },
         {
-          "label": "开票单位",
+          "label": "发票抬头",
           "prop": "vbrk",
           "overHidden": true,
           "width": 120,