Browse Source

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

qinbai 4 years ago
parent
commit
251a2ef90f
29 changed files with 694 additions and 369 deletions
  1. 3 2
      src/styles/variables.scss
  2. 13 5
      src/util/calculate.js
  3. 5 0
      src/views/basicData/productInformation/detailsPageEdit.vue
  4. 6 1
      src/views/businessManagement/inventoryAccount/index.vue
  5. 38 25
      src/views/businessManagement/purchaseOrder/detailsPageEdit.vue
  6. 5 2
      src/views/businessManagement/salesOrder/configuration/commodity.json
  7. 188 72
      src/views/businessManagement/salesOrder/detailsPageEdit.vue
  8. 3 3
      src/views/exportTrade/customerInquiry/config/mainList.json
  9. 37 41
      src/views/exportTrade/customerInquiry/detailsPage.vue
  10. 0 8
      src/views/exportTrade/customerInquiry/index.vue
  11. 3 10
      src/views/exportTrade/invoice/detailsPage.vue
  12. 0 7
      src/views/exportTrade/invoice/index.vue
  13. 3 10
      src/views/exportTrade/purchaseContract/detailsPage.vue
  14. 0 7
      src/views/exportTrade/purchaseContract/index.vue
  15. 15 53
      src/views/exportTrade/purchaseInquiry/detailsPage.vue
  16. 0 7
      src/views/exportTrade/purchaseInquiry/index.vue
  17. 3 10
      src/views/exportTrade/receipt/detailsPage.vue
  18. 0 7
      src/views/exportTrade/receipt/index.vue
  19. 2 2
      src/views/exportTrade/salesContract/config/mainList.json
  20. 36 33
      src/views/exportTrade/salesContract/detailsPage.vue
  21. 0 7
      src/views/exportTrade/salesContract/index.vue
  22. 1 9
      src/views/exportTrade/shippingInquiry/detailsPage.vue
  23. 0 7
      src/views/exportTrade/shippingInquiry/index.vue
  24. 53 0
      src/views/maintenance/integral/config/mainList.json
  25. 76 0
      src/views/maintenance/integral/index.vue
  26. 53 0
      src/views/maintenance/overpayment/config/mainList.json
  27. 76 0
      src/views/maintenance/overpayment/index.vue
  28. 18 25
      src/views/maintenance/priceLibrary/config/mainList.json
  29. 57 16
      src/views/maintenance/priceLibrary/index.vue

+ 3 - 2
src/styles/variables.scss

@@ -69,6 +69,7 @@ p{
 .el-dialog__footer {
   padding: 10px 20px 10px !important;
 }
-.avue-crud th {
-  font-size: 14px;
+.el-form-item__label {
+  font-size: 12px !important;
+  // font-weight: 600;
 }

+ 13 - 5
src/util/calculate.js

@@ -33,18 +33,26 @@ export function amountCal(num, num2, num3, num4, num5) {
   const insurance = Number(num4 ? num4 : 0)
   //折扣
   const discount = Number(num5 || num5 === 0 ? num5 : 10)
-  
+
   const sum = _.multiply(_.add(_.multiply(sell, quantity), _.add(freight, insurance)), _.divide(discount, 10))
   return Number(sum).toFixed(2)
 }
 //保险、运费转换汇率
-export function transformCal(num, num2,num3) {
+export function transformCal(num, num2, num3) {
   //采购价格
   const cost = Number(num ? num : 0)
   //旧汇率
-  const oldExchangeRate=Number(Number(num2) ? num2 : 1)
+  const oldExchangeRate = Number(Number(num2) ? num2 : 1)
   //汇率
   const exchangeRate = Number(Number(num3) ? num3 : 1)
-  const sum =_.divide(_.multiply(cost,oldExchangeRate),exchangeRate) 
+  const sum = _.divide(_.multiply(cost, oldExchangeRate), exchangeRate)
   return Number(sum).toFixed(2)
-}
+}
+// 采购报价=单价 / (1+税率/100) *(1+FOB系数/100)
+export function purchaseCal(num, num2, num3) {
+  const price = Number(num ? num : 0)
+  const taxRate = Number(num2 ? num2 : 0)
+  const fob = Number(num3 ? num3 : 0)
+  const sum = _.multiply(_.divide(price, _.add(1, _.divide(taxRate, 100))), _.add(1, _.divide(fob, 100)))
+  return Number(sum).toFixed(2)
+}

+ 5 - 0
src/views/basicData/productInformation/detailsPageEdit.vue

@@ -274,6 +274,11 @@ export default {
             span: 8
           },
           {
+            label: "积分倍数",
+            prop: "a",
+            span: 8
+          },
+          {
             label: "备注",
             prop: "remarks",
             type: "textarea",

+ 6 - 1
src/views/businessManagement/inventoryAccount/index.vue

@@ -121,10 +121,15 @@ export default {
       });
     },
     uploadAfter(res, done, loading, column) {
+      console.log(res)
       window.console.log(column);
       this.excelBox = false;
       this.page.currentPage = 1;
-      this.$message.warning(res)
+      if (res) {
+        this.$message.warning(res)
+      } else {
+        this.$message.success('导入成功')
+      }
       this.onLoad(this.page);
       loading()
       done();

+ 38 - 25
src/views/businessManagement/purchaseOrder/detailsPageEdit.vue

@@ -13,32 +13,45 @@
           size="small"
           @click="detailData.seeDisabled = false"
           type="primary"
+          style="margin-right: 8px"
         >编辑</el-button>
-        <el-button type="primary"
-                   size="small"
-                   :disabled="true"
-                   @click.stop="">请核
-        </el-button>
-        <el-button
-          size="small"
-          class="el-button--small-yh"
-          :disabled="detailData.seeDisabled || !form.id"
-          type="warning"
-          @click="applyPayment('申请')"
-        >
-          申请货款
-        </el-button>
-        <el-button type="info"
-                   size="small"
-                   @click="openApplicationDialog"
-                   :disabled="!form.id"
-        >查看申请记录
-        </el-button>
-        <el-button type="warning"
-                   size="small"
-                   class="el-button--small-yh "
-                   @click.stop="applyPayment('收费')">退款
-        </el-button>
+        <el-dropdown style="margin-right: 8px;">
+          <el-button
+            type="primary"
+            size="small"
+          >
+            审核处理<i class="el-icon-arrow-down el-icon--right"></i>
+          </el-button>
+          <el-dropdown-menu slot="dropdown">
+            <el-dropdown-item :disabled="true">请核</el-dropdown-item>
+          </el-dropdown-menu>
+        </el-dropdown>
+        <el-dropdown style="margin-right: 8px;">
+          <el-button
+            type="warning"
+            size="small"
+          >
+            账单处理<i class="el-icon-arrow-down el-icon--right"></i>
+          </el-button>
+          <el-dropdown-menu slot="dropdown">
+            <el-dropdown-item
+              :disabled="detailData.seeDisabled || !form.id"
+              @click="applyPayment('申请')"
+            >
+              申请货款
+            </el-dropdown-item>
+            <el-dropdown-item
+               @click="openApplicationDialog"
+               :disabled="!form.id"
+            >查看申请记录
+            </el-dropdown-item>
+            <el-dropdown-item
+               @click.stop="applyPayment('收费')"
+               :disabled="!this.form.id"
+            >退款
+            </el-dropdown-item>
+          </el-dropdown-menu>
+        </el-dropdown>
         <el-button
           size="small"
           class="el-button--small-yh"

+ 5 - 2
src/views/businessManagement/salesOrder/configuration/commodity.json

@@ -6,14 +6,17 @@
   "addBtn": false,
   "searchShow": true,
   "searchShowBtn": false,
-  "menu": false,
+  "menu": true,
+  "viewBtn": false,
+  "editBtn": false,
+  "delBtn": false,
+  "menuWidth": 80,
   "searchSpan": 8,
   "searchMenuSpan": 8,
   "searchMenuPosition": "right",
   "border": true,
   "index": true,
   "selection": true,
-  "viewBtn": true,
   "dialogClickModal": false,
   "column": [
     {

+ 188 - 72
src/views/businessManagement/salesOrder/detailsPageEdit.vue

@@ -13,40 +13,55 @@
           size="small"
           @click="detailData.seeDisabled = false"
           type="primary"
+          style="margin-right: 8px"
         >编辑</el-button>
-        <el-button type="primary"
-                   size="small"
-                   :disabled="true"
-                   @click.stop="">请核
-        </el-button>
-        <el-button
-          class="el-button--small-yh"
-          type="warning"
-          :disabled="detailData.seeDisabled"
-          size="small"
-          @click="applySettlement('收费')"
-        >生成账单</el-button>
-        <el-button
-          class="el-button--small-yh"
-          type="warning"
-          :disabled="detailData.seeDisabled"
-          size="small"
-          @click="applySettlement('申请')"
-        >退款</el-button>
-        <el-button
-          class="el-button--small-yh"
-          type="primary"
-          :disabled="detailData.seeDisabled"
-          size="small"
-          @click="saveSell"
-        >生成采购单</el-button>
-        <el-button
-          class="el-button--small-yh"
-          type="success" @click="copyOrder"
-          size="small"
-          :disabled="detailData.seeDisabled || !this.form.id">
-          复制新单
-        </el-button>
+        <el-dropdown style="margin-right: 8px;">
+          <el-button
+            type="primary"
+            size="small"
+          >
+            审核处理<i class="el-icon-arrow-down el-icon--right"></i>
+          </el-button>
+          <el-dropdown-menu slot="dropdown">
+            <el-dropdown-item :disabled="true">请核</el-dropdown-item>
+          </el-dropdown-menu>
+        </el-dropdown>
+        <el-dropdown style="margin-right: 8px;">
+          <el-button
+            type="warning"
+            size="small"
+          >
+            账单处理<i class="el-icon-arrow-down el-icon--right"></i>
+          </el-button>
+          <el-dropdown-menu slot="dropdown">
+            <el-dropdown-item
+              :disabled="detailData.seeDisabled"
+              @click="applySettlement('收费')">生成账单
+            </el-dropdown-item>
+            <el-dropdown-item
+              :disabled="detailData.seeDisabled"
+              @click="applySettlement('申请')"
+            >退款</el-dropdown-item>
+          </el-dropdown-menu>
+        </el-dropdown>
+        <el-dropdown style="margin-right: 8px;">
+          <el-button
+            type="success"
+            size="small"
+          >
+            业务处理<i class="el-icon-arrow-down el-icon--right"></i>
+          </el-button>
+          <el-dropdown-menu slot="dropdown">
+            <el-dropdown-item
+              :disabled="detailData.seeDisabled"
+              @click="saveSell">生成采购单
+            </el-dropdown-item>
+            <el-dropdown-item
+              :disabled="detailData.seeDisabled || !this.form.id"
+              @click="copyOrder"
+            >复制新单</el-dropdown-item>
+          </el-dropdown-menu>
+        </el-dropdown>
         <el-button
           class="el-button--small-yh"
           type="primary"
@@ -468,13 +483,39 @@
           <basic-container>
             <avue-crud :option="optionTwo"
                        :table-loading="loading"
-                       :data="data"
+                       :data="goodsListShow"
                        ref="crud"
                        @refresh-change="refreshChange"
                        @selection-change="selectionChange"
                        @search-change="goodsSearch"
                        :page.sync="page"
-                       @on-load="onLoad"></avue-crud>
+                       @on-load="onLoad">
+              <template slot="menuLeft" slot-scope="{size}">
+                <el-tabs v-model="activeName" @tab-click="tabHandle">
+                  <el-tab-pane label="查询结果" name="searchList"></el-tab-pane>
+                  <el-tab-pane label="已选定数据" name="importStaging"></el-tab-pane>
+                </el-tabs>
+              </template>
+              <template slot-scope="scope" slot="menu">
+                <el-button
+                  type="text"
+                  icon="el-icon-edit"
+                  size="small"
+                  @click.stop="importStagList(scope.row,scope.index)"
+                  v-if="activeName=='searchList'"
+                  :disabled="goodsListSave.findIndex(item => item.id == scope.row.id) !== -1"
+                >选择
+                </el-button>
+                <el-button
+                  type="text"
+                  icon="el-icon-delete"
+                  size="small"
+                  @click.stop="removeStagList(scope.row,scope.index)"
+                  v-else
+                >移除
+                </el-button>
+              </template>
+            </avue-crud>
           </basic-container>
         </el-col>
       </el-row>
@@ -722,6 +763,11 @@ export default {
         currentPage: 1,
         total: 0
       },
+      pageList: {
+        pageSize: 10,
+        currentPage: 1,
+        total: 0
+      },
       pagePolicy: {
         pageSize: 10,
         currentPage: 1,
@@ -1267,6 +1313,13 @@ export default {
       goodsLoading: false,
       baseURL: '/api/blade-purchase-sales/orderitems/importPrice',
       headers: { "Blade-Auth": 'Bearer ' + getToken()},
+      activeName: 'searchList',
+      // 商品列表数据合计
+      goodsListShow: [],
+      // 商品列表暂存
+      goodsListSave: [],
+      goodsListTotal: 0,
+      goodsListSaveTotal: 0,
     }
   },
   mounted() {
@@ -1793,61 +1846,110 @@ export default {
     },
     //确认导入触发
     importGoods() {
-      // this.contactsData = this.contactsData.concat(this.tableData)
-      if (this.tableData.length > 0) {
-        for (let item in this.tableData) {
-          // this.$set(this.tableData[item], 'storageQuantity', 0)
+      if (this.goodsListSave.length > 0) {
+        for (let item in this.goodsListSave) {
           selectGoodsNum({
-            goodsId: this.tableData[item].id,
-            itemType: this.tableData[item].typeno
+            goodsId: this.goodsListSave[item].id,
+            itemType: this.goodsListSave[item].typeno
           }).then(res => {
-            this.tableData[item].priceCategory = this.tableData[item].goodsTypeName
-            this.tableData[item].storageQuantity =  res.data.data
-            delete this.tableData[item].goodsTypeName
-            this.tableData[item].itemId = this.tableData[item].id
-            this.$set(this.tableData[item], 'itemType', this.tableData[item].typeno)
-            this.$set(this.tableData[item], 'orderQuantity', 0)
-            this.$set(this.tableData[item], 'actualQuantity', 0)
-            this.$set(this.tableData[item], 'purchaseAmount', '0')
-            this.$set(this.tableData[item], 'invoiceWeight', this.tableData[item].cartonWeight)
-            getMarketPrice({code: this.tableData[item].code}).then(res => {
+            this.goodsListSave[item].priceCategory = this.goodsListSave[item].goodsTypeName
+            this.goodsListSave[item].storageQuantity =  res.data.data
+            delete this.goodsListSave[item].goodsTypeName
+            this.goodsListSave[item].itemId = this.goodsListSave[item].id
+            this.$set(this.goodsListSave[item], 'itemType', this.goodsListSave[item].typeno)
+            this.$set(this.goodsListSave[item], 'orderQuantity', 0)
+            this.$set(this.goodsListSave[item], 'actualQuantity', 0)
+            this.$set(this.goodsListSave[item], 'purchaseAmount', '0')
+            this.$set(this.goodsListSave[item], 'invoiceWeight', this.goodsListSave[item].cartonWeight)
+            getMarketPrice({code: this.goodsListSave[item].code}).then(res => {
               if (res.data.data.length > 0) {
-                this.$set(this.tableData[item], 'price', res.data.data[0].salesPrice)
+                this.$set(this.goodsListSave[item], 'price', res.data.data[0].salesPrice)
               } else {
-                this.$set(this.tableData[item], 'price', '0')
+                this.$set(this.goodsListSave[item], 'price', '0')
               }
             })
-            getPurchasePrice({code: this.tableData[item].code}).then(res => {
+            getPurchasePrice({code: this.goodsListSave[item].code}).then(res => {
               if (res.data.data.length > 0) {
-                this.$set(this.tableData[item], 'purchaseAmount', res.data.data[0].purchasePrice)
+                this.$set(this.goodsListSave[item], 'purchaseAmount', res.data.data[0].purchasePrice)
               } else {
-                this.$set(this.tableData[item], 'purchaseAmount', '0')
+                this.$set(this.goodsListSave[item], 'purchaseAmount', '0')
               }
             })
-            this.tableData[item].amount = 0
-            this.tableData[item].sort = this.maxGoodsNum + 1
+            this.goodsListSave[item].amount = 0
+            this.goodsListSave[item].sort = this.maxGoodsNum + 1
             if (this.form.packageRemarks) {
-              this.tableData[item].packageRemarks = this.form.packageRemarks
+              this.goodsListSave[item].packageRemarks = this.form.packageRemarks
             }
-            delete this.tableData[item].id
-            delete this.tableData[item].pid
-            delete this.tableData[item].isDeleted
-            delete this.tableData[item].status
-            delete this.tableData[item].tenantId
-            delete this.tableData[item].updateTime
-            delete this.tableData[item].updateUser
-            delete this.tableData[item].updateUserName
+            delete this.goodsListSave[item].id
+            delete this.goodsListSave[item].pid
+            delete this.goodsListSave[item].isDeleted
+            delete this.goodsListSave[item].status
+            delete this.goodsListSave[item].tenantId
+            delete this.goodsListSave[item].updateTime
+            delete this.goodsListSave[item].updateUser
+            delete this.goodsListSave[item].updateUserName
             this.maxGoodsNum++
-            this.$refs.crudContact.rowCellAdd(this.tableData[item]);
-            this.$refs.crudContact.rowCell(this.tableData[item], this.contactsData.length - 1)
+            this.$refs.crudContact.rowCellAdd(this.goodsListSave[item]);
+            this.$refs.crudContact.rowCell(this.goodsListSave[item], this.contactsData.length - 1)
           })
         }
         this.dialogVisible = false
+      } else {
+        if (this.tableData.length > 0) {
+          for (let item in this.tableData) {
+            selectGoodsNum({
+              goodsId: this.tableData[item].id,
+              itemType: this.tableData[item].typeno
+            }).then(res => {
+              this.tableData[item].priceCategory = this.tableData[item].goodsTypeName
+              this.tableData[item].storageQuantity =  res.data.data
+              delete this.tableData[item].goodsTypeName
+              this.tableData[item].itemId = this.tableData[item].id
+              this.$set(this.tableData[item], 'itemType', this.tableData[item].typeno)
+              this.$set(this.tableData[item], 'orderQuantity', 0)
+              this.$set(this.tableData[item], 'actualQuantity', 0)
+              this.$set(this.tableData[item], 'purchaseAmount', '0')
+              this.$set(this.tableData[item], 'invoiceWeight', this.tableData[item].cartonWeight)
+              getMarketPrice({code: this.tableData[item].code}).then(res => {
+                if (res.data.data.length > 0) {
+                  this.$set(this.tableData[item], 'price', res.data.data[0].salesPrice)
+                } else {
+                  this.$set(this.tableData[item], 'price', '0')
+                }
+              })
+              getPurchasePrice({code: this.tableData[item].code}).then(res => {
+                if (res.data.data.length > 0) {
+                  this.$set(this.tableData[item], 'purchaseAmount', res.data.data[0].purchasePrice)
+                } else {
+                  this.$set(this.tableData[item], 'purchaseAmount', '0')
+                }
+              })
+              this.tableData[item].amount = 0
+              this.tableData[item].sort = this.maxGoodsNum + 1
+              if (this.form.packageRemarks) {
+                this.tableData[item].packageRemarks = this.form.packageRemarks
+              }
+              delete this.tableData[item].id
+              delete this.tableData[item].pid
+              delete this.tableData[item].isDeleted
+              delete this.tableData[item].status
+              delete this.tableData[item].tenantId
+              delete this.tableData[item].updateTime
+              delete this.tableData[item].updateUser
+              delete this.tableData[item].updateUserName
+              this.maxGoodsNum++
+              this.$refs.crudContact.rowCellAdd(this.tableData[item]);
+              this.$refs.crudContact.rowCell(this.tableData[item], this.contactsData.length - 1)
+            })
+          }
+          this.dialogVisible = false
+        }
       }
     },
     closeGoods() {
       this.treeDataGoods = [];
       this.treeDeptId = "";
+      this.activeName = "searchList";
     },
     closeFees() {
       this.treeDeptIdCost = "";
@@ -2087,10 +2189,11 @@ export default {
       console.log(params)
       this.loading = true;
       getList(page.currentPage, page.pageSize, Object.assign(params, this.query), this.treeDeptId).then(res => {
-        console.log(res)
         const data = res.data.data;
         this.page.total = data.total;
+        this.pageList.total = data.total
         this.data = data.records;
+        this.goodsListShow = data.records;
         this.loading = false;
       });
     },
@@ -2423,8 +2526,21 @@ export default {
       }
       return sums;
     },
-    getCorpData(row) {
-      console.log(row)
+    // 标签页切换
+    tabHandle(data) {
+      if (data.name == 'searchList') {
+        this.goodsListShow = this.data;
+        this.page.total = this.pageList.total
+      } else if (data.name == 'importStaging') {
+        this.goodsListShow = this.goodsListSave;
+        this.page.total = 0
+      }
+    },
+    removeStagList(row, index) {
+      this.goodsListSave.splice(index, 1)
+    },
+    importStagList(row, index) {
+      this.goodsListSave.push(row);
     },
   }
 }

+ 3 - 3
src/views/exportTrade/customerInquiry/config/mainList.json

@@ -24,7 +24,7 @@
       "searchSpan": 8
     },
     {
-      "label": "订单日期",
+      "label": "报价日期",
       "prop": "businesDate",
       "search": true,
       "index": 2,
@@ -127,14 +127,14 @@
       "overHidden": true
     },
     {
-      "label": "毛利",
+      "label": "产品毛利",
       "prop": "grossProfit",
       "index": 13,
       "minWidth": 80,
       "overHidden": true
     },
     {
-      "label": "利率",
+      "label": "产品利率",
       "prop": "grossProfitRate",
       "index": 14,
       "minWidth": 80,

+ 37 - 41
src/views/exportTrade/customerInquiry/detailsPage.vue

@@ -118,8 +118,7 @@
             <el-input
               size="small"
               v-model="form.exchangeRate"
-              oninput='this.value=this.value.replace(/[^(\d.)]/g,"").replace(/^(\d+)\.(\d\d\d\d).*$/,
-            "$1.$2")'
+              oninput="value=value.replace(/[^0-9.]/g,'').replace(/^(\-)*(\d+)\.(\d\d).*$/,'$1$2.$3')"
               placeholder="请输入 汇率"
               :disabled="detailData.status == 1"
               @change="exchangeRateChange"
@@ -129,8 +128,7 @@
             <el-input
               size="small"
               v-model="form.boxNumber"
-              oninput='this.value=this.value.replace(/[^(\d.)]/g,"").replace(/^(\d+)\.(\d\d).*$/,
-            "$1.$2")'
+              oninput="value=value.replace(/[^0-9.]/g,'').replace(/^(\-)*(\d+)\.(\d\d).*$/,'$1$2.$3')"
               placeholder="请输入 起订量"
               :disabled="detailData.status == 1"
             />
@@ -139,8 +137,7 @@
             <el-input
               size="small"
               v-model="form.minOrder"
-              oninput='this.value=this.value.replace(/[^(\d.)]/g,"").replace(/^(\d+)\.(\d\d).*$/,
-            "$1.$2")'
+              oninput="value=value.replace(/[^0-9.]/g,'').replace(/^(\-)*(\d+)\.(\d\d).*$/,'$1$2.$3')"
               placeholder="请输入 起订量"
               :disabled="detailData.status == 1"
             />
@@ -149,8 +146,7 @@
             <el-input
               size="small"
               v-model="form.predictOceanFreight"
-              oninput='this.value=this.value.replace(/[^(\d.)]/g,"").replace(/^(\d+)\.(\d\d).*$/,
-            "$1.$2")'
+              oninput="value=value.replace(/[^0-9.]/g,'').replace(/^(\-)*(\d+)\.(\d\d).*$/,'$1$2.$3')"
               placeholder="请输入 预计海运费"
               :disabled="detailData.status == 1"
             />
@@ -159,8 +155,7 @@
             <el-input
               size="small"
               v-model="form.referenceOceanFreight"
-              oninput='this.value=this.value.replace(/[^(\d.)]/g,"").replace(/^(\d+)\.(\d\d).*$/,
-            "$1.$2")'
+              oninput="value=value.replace(/[^0-9.]/g,'').replace(/^(\-)*(\d+)\.(\d\d).*$/,'$1$2.$3')"
               placeholder="请输入 参考海运费"
               :disabled="detailData.status == 1"
             />
@@ -169,8 +164,7 @@
             <el-input
               size="small"
               v-model="form.oceanFreight"
-              oninput='this.value=this.value.replace(/[^(\d.)]/g,"").replace(/^(\d+)\.(\d\d).*$/,
-            "$1.$2")'
+              oninput="value=value.replace(/[^0-9.]/g,'').replace(/^(\-)*(\d+)\.(\d\d).*$/,'$1$2.$3')"
               placeholder="请输入 实际海运费"
               :disabled="detailData.status == 1"
             />
@@ -342,7 +336,7 @@
               size="small"
               placeholder="请输入"
               @change="purchaseAmountChange(row)"
-              oninput='this.value=this.value.replace(/[^(\d.)]/g,"").replace(/^(\d+)\.(\d\d).*$/, "$1.$2")'
+              oninput="value=value.replace(/[^0-9.]/g,'').replace(/^(\-)*(\d+)\.(\d\d).*$/,'$1$2.$3')"
             ></el-input>
             <span v-else>{{ row.purchaseAmount | micrometerFormat }}</span>
           </template>
@@ -351,7 +345,7 @@
               v-if="row.$cellEdit"
               v-model="row.price"
               size="small"
-              oninput='this.value=this.value.replace(/[^(\d.)]/g,"").replace(/^(\d+)\.(\d\d).*$/, "$1.$2")'
+              oninput="value=value.replace(/[^0-9.]/g,'').replace(/^(\-)*(\d+)\.(\d\d).*$/,'$1$2.$3')"
               @change="priceChange(row)"
             ></el-input>
             <span v-else>{{ row.price | micrometerFormat }}</span>
@@ -364,7 +358,7 @@
               v-if="row.$cellEdit"
               v-model="row.orderQuantity"
               size="small"
-              oninput='this.value=this.value.replace(/[^(\d.)]/g,"").replace(/^(\d+)\.(\d\d).*$/, "$1.$2")'
+              oninput='this.value=this.value.replace(/[^(\d)]/g,"")'
               @change="priceChange(row)"
             ></el-input>
             <span v-else>{{ row.orderQuantity }}</span>
@@ -374,7 +368,7 @@
               v-if="row.$cellEdit"
               v-model="row.discount"
               size="small"
-              oninput='this.value=this.value.replace(/[^(\d.)]/g,"").replace(/^(\d+)\.(\d\d).*$/, "$1.$2")'
+              oninput="value=value.replace(/[^0-9.]/g,'').replace(/^(\-)*(\d+)\.(\d\d).*$/,'$1$2.$3')"
               @change="discountChange(row)"
             ></el-input>
             <span v-else>{{ row.discount | isDiscount }}</span>
@@ -384,7 +378,7 @@
               v-if="row.$cellEdit"
               v-model="row.insurance"
               size="small"
-              oninput='this.value=this.value.replace(/[^(\d.)]/g,"").replace(/^(\d+)\.(\d\d).*$/, "$1.$2")'
+              oninput="value=value.replace(/[^0-9.]/g,'').replace(/^(\-)*(\d+)\.(\d\d).*$/,'$1$2.$3')"
               @change="priceChange(row)"
             ></el-input>
             <span v-else>{{ row.insurance | micrometerFormat }}</span>
@@ -394,7 +388,7 @@
               v-if="row.$cellEdit"
               v-model="row.freight"
               size="small"
-              oninput='this.value=this.value.replace(/[^(\d.)]/g,"").replace(/^(\d+)\.(\d\d).*$/, "$1.$2")'
+              oninput="value=value.replace(/[^0-9.]/g,'').replace(/^(\-)*(\d+)\.(\d\d).*$/,'$1$2.$3')"
               @change="priceChange(row)"
             ></el-input>
             <span v-else>{{ row.freight | micrometerFormat }}</span>
@@ -404,7 +398,7 @@
               v-if="row.$cellEdit"
               v-model="row.taxRate"
               size="small"
-              oninput='this.value=this.value.replace(/[^(\d.)]/g,"").replace(/^(\d+)\.(\d\d).*$/, "$1.$2")'
+              oninput="value=value.replace(/[^0-9.]/g,'').replace(/^(\-)*(\d+)\.(\d\d).*$/,'$1$2.$3')"
               @change="taxRateChange(row)"
             ></el-input>
             <span v-else>{{ row.taxRate | isPercentage }}</span>
@@ -530,19 +524,11 @@ export default {
       oldExchange: 1,
       treeStyle: "height:" + (window.innerHeight - 315) + "px",
       itemtypeList: [],
-      configuration: {
-        multipleChoices: false,
-        multiple: false,
-        collapseTags: false,
-        placeholder: "请点击右边按钮选择",
-        dicData: []
-      },
       switchDialog: false,
       form: {
         orderStatus: "录入",
         businesDate: dateFormat(new Date(), "yyyy-MM-dd") + " 00:00:00",
-        currency: "CNY",
-        exchangeRate: "1"
+        currency: "USD"
       },
       disabled: false,
       dialogVisible: false,
@@ -665,7 +651,7 @@ export default {
             span: 16
           },
           {
-            label: "订单日期",
+            label: "报价日期",
             prop: "businesDate",
             span: 8,
             type: "date",
@@ -747,20 +733,25 @@ export default {
             span: 8
           },
           {
-            label: "毛利",
+            label: "产品毛利",
             prop: "grossProfit",
             span: 8,
             disabled: true
           },
           {
-            label: "利率",
+            label: "产品利率",
             prop: "grossProfitRate",
             span: 8,
-            row: true,
             append: "%",
             disabled: true
           },
           {
+            label: "单票毛利",
+            prop: "singleTicketMargin",
+            span: 8,
+            disabled: true
+          },
+          {
             label: "备注",
             prop: "orderRemark",
             type: "textarea",
@@ -822,8 +813,7 @@ export default {
       oldform: {
         orderStatus: "录入",
         businesDate: dateFormat(new Date(), "yyyy-MM-dd") + " 00:00:00",
-        currency: "CNY",
-        exchangeRate: "1"
+        currency: "USD"
       },
       olddata: [],
       oldorderFeesList: [],
@@ -883,6 +873,14 @@ export default {
     });
     this.getWorkDicts("currency").then(res => {
       this.currencyList = res.data.data;
+      if (!this.detailData.id) {
+        this.currencyList.forEach(e => {
+          if (e.dictValue == "USD") {
+            this.form.exchangeRate = e.remark;
+            this.oldform.exchangeRate = e.remark;
+          }
+        });
+      }
     });
     getPorts().then(res => {
       this.findObject(this.option.column, "portOfLoad").dicData = res.data;
@@ -1083,13 +1081,11 @@ export default {
       );
     },
     currencyChange(row) {
-      if (row == "CNY") {
-        this.form.exchangeRate = 1;
-      } else if (row == "USD") {
-        this.form.exchangeRate = 6.3843;
-      } else {
-        this.form.exchangeRate = 1;
-      }
+      this.currencyList.forEach(e => {
+        if (e.dictValue == row) {
+          this.form.exchangeRate = e.remark;
+        }
+      });
       if (this.data.length > 0) {
         this.data.forEach(e => {
           e.freight = transformCal(

+ 0 - 8
src/views/exportTrade/customerInquiry/index.vue

@@ -124,14 +124,6 @@ export default {
   name: "customerInformation",
   data() {
     return {
-      configuration: {
-        multipleChoices: false,
-        multiple: false,
-        collapseTags: false,
-        placeholder: "请点击右边按钮选择",
-        dicData: [],
-        clearable: true
-      },
       search: {
         businesDate: defaultDate()
       },

+ 3 - 10
src/views/exportTrade/invoice/detailsPage.vue

@@ -133,7 +133,7 @@
               v-if="row.$cellEdit"
               size="mini"
               v-model="row.taxRate"
-              oninput='this.value=this.value.replace(/[^(\d.)]/g,"").replace(/^(\d+)\.(\d\d).*$/, "$1.$2")'
+              oninput="value=value.replace(/[^0-9.]/g,'').replace(/^(\-)*(\d+)\.(\d\d).*$/,'$1$2.$3')"
               @change="taxRateChange(row)"
               placeholder="请输入"
             />
@@ -161,7 +161,7 @@
               v-if="row.$cellEdit"
               v-model="row.price"
               size="small"
-              oninput='this.value=this.value.replace(/[^(\d.)]/g,"").replace(/^(\d+)\.(\d\d).*$/, "$1.$2")'
+              oninput="value=value.replace(/[^0-9.]/g,'').replace(/^(\-)*(\d+)\.(\d\d).*$/,'$1$2.$3')"
               @change="priceChange(row)"
             ></el-input>
             <span v-else>{{ row.price }}</span>
@@ -171,7 +171,7 @@
               v-if="row.$cellEdit"
               v-model="row.actualQuantity"
               size="small"
-              oninput='this.value=this.value.replace(/[^(\d.)]/g,"").replace(/^(\d+)\.(\d\d).*$/, "$1.$2")'
+              oninput='this.value=this.value.replace(/[^(\d)]/g,"")'
               @change="quantityChange(row)"
             ></el-input>
             <span v-else>{{ row.actualQuantity }}</span>
@@ -276,13 +276,6 @@ export default {
   name: "detailsPageEdit",
   data() {
     return {
-      configuration: {
-        multipleChoices: false,
-        multiple: false,
-        collapseTags: false,
-        placeholder: "请点击右边按钮选择",
-        dicData: []
-      },
       configuration2: {
         multipleChoices: false,
         multiple: false,

+ 0 - 7
src/views/exportTrade/invoice/index.vue

@@ -111,13 +111,6 @@ export default {
   name: "customerInformation",
   data() {
     return {
-      configuration: {
-        multipleChoices: false,
-        multiple: false,
-        collapseTags: false,
-        placeholder: "请点击右边按钮选择",
-        dicData: []
-      },
       configuration2: {
         multipleChoices: false,
         multiple: false,

+ 3 - 10
src/views/exportTrade/purchaseContract/detailsPage.vue

@@ -45,7 +45,7 @@
             <el-input
               size="mini"
               v-model="form.exchangeRate"
-              oninput='this.value=this.value.replace(/[^(\d.)]/g,"").replace(/^(\d+)\.(\d\d).*$/, "$1.$2")'
+              oninput="value=value.replace(/[^0-9.]/g,'').replace(/^(\-)*(\d+)\.(\d\d).*$/,'$1$2.$3')"
               @change="rateChange"
               placeholder="请输入 汇率"
               :disabled="detailData.status == 1"
@@ -81,7 +81,7 @@
                 v-if="row.$cellEdit"
                 v-model="row.price"
                 size="small"
-                oninput='this.value=this.value.replace(/[^(\d.)]/g,"").replace(/^(\d+)\.(\d\d).*$/, "$1.$2")'
+                oninput="value=value.replace(/[^0-9.]/g,'').replace(/^(\-)*(\d+)\.(\d\d).*$/,'$1$2.$3')"
                 @change="priceChange(row)"
               ></el-input>
               <span v-else>{{ row.price }}</span>
@@ -91,7 +91,7 @@
                 v-if="row.$cellEdit"
                 v-model="row.orderQuantity"
                 size="small"
-                oninput='this.value=this.value.replace(/[^(\d.)]/g,"").replace(/^(\d+)\.(\d\d).*$/, "$1.$2")'
+                oninput='this.value=this.value.replace(/[^(\d)]/g,"")'
                 @change="quantityChange(row)"
               ></el-input>
               <span v-else>{{ row.orderQuantity }}</span>
@@ -312,13 +312,6 @@ export default {
       }
     };
     return {
-      configuration: {
-        multipleChoices: false,
-        multiple: false,
-        collapseTags: false,
-        placeholder: "请点击右边按钮选择",
-        dicData: []
-      },
       switchDialog: false,
       form: {
         orderStatus: "录入"

+ 0 - 7
src/views/exportTrade/purchaseContract/index.vue

@@ -116,13 +116,6 @@ export default {
   name: "customerInformation",
   data() {
     return {
-      configuration: {
-        multipleChoices: false,
-        multiple: false,
-        collapseTags: false,
-        placeholder: "请点击右边按钮选择",
-        dicData: []
-      },
       search: {
         businesDate: defaultDate()
       },

+ 15 - 53
src/views/exportTrade/purchaseInquiry/detailsPage.vue

@@ -91,7 +91,7 @@
               v-if="row.$cellEdit"
               v-model="row.price"
               size="small"
-              oninput='this.value=this.value.replace(/[^(\d.)]/g,"").replace(/^(\d+)\.(\d\d).*$/, "$1.$2")'
+              oninput="value=value.replace(/[^0-9.]/g,'').replace(/^(\-)*(\d+)\.(\d\d).*$/,'$1$2.$3')"
               @change="priceChange(row)"
             ></el-input>
             <span v-else>{{ row.price }}</span>
@@ -101,7 +101,7 @@
               v-if="row.$cellEdit"
               v-model="row.taxRate"
               size="small"
-              oninput='this.value=this.value.replace(/[^(\d.)]/g,"").replace(/^(\d+)\.(\d\d).*$/, "$1.$2")'
+              oninput="value=value.replace(/[^0-9.]/g,'').replace(/^(\-)*(\d+)\.(\d\d).*$/,'$1$2.$3')"
               @change="priceChange(row)"
             ></el-input>
             <span v-else>{{ row.taxRate ? row.taxRate : 0 }}%</span>
@@ -111,7 +111,7 @@
               v-if="row.$cellEdit"
               v-model="row.coefficient"
               size="small"
-              oninput='this.value=this.value.replace(/[^(\d.)]/g,"").replace(/^(\d+)\.(\d\d).*$/, "$1.$2")'
+              oninput="value=value.replace(/[^0-9.]/g,'').replace(/^(\-)*(\d+)\.(\d\d).*$/,'$1$2.$3')"
               @change="priceChange(row)"
             ></el-input>
             <span v-else>{{ row.coefficient ? row.coefficient : 0 }}%</span>
@@ -121,7 +121,7 @@
               v-if="row.$cellEdit"
               v-model="row.orderQuantity"
               size="small"
-              oninput='this.value=this.value.replace(/[^(\d.)]/g,"").replace(/^(\d+)\.(\d\d).*$/, "$1.$2")'
+              oninput='this.value=this.value.replace(/[^(\d)]/g,"")'
               @change="quantityChange(row)"
             ></el-input>
             <span v-else>{{ row.orderQuantity }}</span>
@@ -283,18 +283,18 @@ import customerDialog from "@/components/customer-dialog/main";
 import reportDialog from "@/components/report-dialog/main";
 import { micrometerFormat } from "@/util/validate";
 import { contrastObj, contrastList } from "@/util/contrastData";
+import {
+  productCal,
+  sellingCal,
+  amountCal,
+  transformCal,
+  purchaseCal
+} from "@/util/calculate";
 import _ from "lodash";
 export default {
   name: "detailsPageEdit",
   data() {
     return {
-      configuration: {
-        multipleChoices: false,
-        multiple: false,
-        collapseTags: false,
-        placeholder: "请点击右边按钮选择",
-        dicData: []
-      },
       switchDialog: false,
       form: {
         orderStatus: "录入",
@@ -547,47 +547,9 @@ export default {
       });
     },
     priceChange(row) {
-      row.purchaseAmount = Number(
-        _.divide(
-          Number(row.price ? row.price : 0),
-          _.multiply(
-            _.add(1, _.divide(Number(row.taxRate ? row.taxRate : 0), 100)),
-            _.add(
-              1,
-              _.divide(Number(row.coefficient ? row.coefficient : 0), 100)
-            )
-          )
-        )
-      ).toFixed(2);
+      row.purchaseAmount = purchaseCal(row.price, row.taxRate, row.coefficient);
       row.amount = Number(
-        _.multiply(
-          _.divide(
-            Number(row.price ? row.price : 0),
-            _.multiply(
-              _.add(1, _.divide(Number(row.taxRate ? row.taxRate : 0), 100)),
-              _.add(
-                1,
-                _.divide(Number(row.coefficient ? row.coefficient : 0), 100)
-              )
-            )
-          ),
-          row.orderQuantity
-        )
-      ).toFixed(2);
-      row.greenback = Number(
-        _.divide(
-          _.divide(
-            Number(row.price ? row.price : 0),
-            _.multiply(
-              _.add(1, _.divide(Number(row.taxRate ? row.taxRate : 0), 100)),
-              _.add(
-                1,
-                _.divide(Number(row.coefficient ? row.coefficient : 0), 100)
-              )
-            )
-          ),
-          6.3843
-        )
+        _.multiply(Number(row.purchaseAmount), row.orderQuantity)
       ).toFixed(2);
     },
     quantityChange(row) {
@@ -756,12 +718,12 @@ export default {
                   "第" + (Number(i) + 1) + "行的单价不能为空或不能为0"
                 );
               }
-              if (this.data[i].taxRate=="") {
+              if (this.data[i].taxRate == "") {
                 return this.$message.error(
                   "第" + (Number(i) + 1) + "行的税率不能为空"
                 );
               }
-              if (this.data[i].coefficient=="") {
+              if (this.data[i].coefficient == "") {
                 return this.$message.error(
                   "第" + (Number(i) + 1) + "行的FOB系数不能为空"
                 );

+ 0 - 7
src/views/exportTrade/purchaseInquiry/index.vue

@@ -111,13 +111,6 @@ export default {
   name: "customerInformation",
   data() {
     return {
-      configuration: {
-        multipleChoices: false,
-        multiple: false,
-        collapseTags: false,
-        placeholder: "请点击右边按钮选择",
-        dicData: []
-      },
       search: {
         businesDate: defaultDate()
       },

+ 3 - 10
src/views/exportTrade/receipt/detailsPage.vue

@@ -98,7 +98,7 @@
               v-if="row.$cellEdit"
               size="mini"
               v-model="row.taxRate"
-              oninput='this.value=this.value.replace(/[^(\d.)]/g,"").replace(/^(\d+)\.(\d\d).*$/, "$1.$2")'
+              oninput="value=value.replace(/[^0-9.]/g,'').replace(/^(\-)*(\d+)\.(\d\d).*$/,'$1$2.$3')"
               @change="taxRateChange(row)"
               placeholder="请输入"
             />
@@ -146,7 +146,7 @@
               v-if="row.$cellEdit"
               v-model="row.price"
               size="small"
-              oninput='this.value=this.value.replace(/[^(\d.)]/g,"").replace(/^(\d+)\.(\d\d).*$/, "$1.$2")'
+              oninput="value=value.replace(/[^0-9.]/g,'').replace(/^(\-)*(\d+)\.(\d\d).*$/,'$1$2.$3')"
               @change="priceChange(row)"
             ></el-input>
             <span v-else>{{ row.price }}</span>
@@ -156,7 +156,7 @@
               v-if="row.$cellEdit"
               v-model="row.actualQuantity"
               size="small"
-              oninput='this.value=this.value.replace(/[^(\d.)]/g,"").replace(/^(\d+)\.(\d\d).*$/, "$1.$2")'
+              oninput='this.value=this.value.replace(/[^(\d)]/g,"")'
               @change="quantityChange(row)"
             ></el-input>
             <span v-else>{{ row.actualQuantity }}</span>
@@ -289,13 +289,6 @@ export default {
       }
     };
     return {
-      configuration: {
-        multipleChoices: false,
-        multiple: false,
-        collapseTags: false,
-        placeholder: "请点击右边按钮选择",
-        dicData: []
-      },
       configuration2: {
         multipleChoices: false,
         multiple: false,

+ 0 - 7
src/views/exportTrade/receipt/index.vue

@@ -98,13 +98,6 @@ export default {
   name: "customerInformation",
   data() {
     return {
-      configuration: {
-        multipleChoices: false,
-        multiple: false,
-        collapseTags: false,
-        placeholder: "请点击右边按钮选择",
-        dicData: []
-      },
       search: {
         businessDate: defaultDate()
       },

+ 2 - 2
src/views/exportTrade/salesContract/config/mainList.json

@@ -172,14 +172,14 @@
       "overHidden": true
     },
     {
-      "label": "毛利",
+      "label": "产品毛利",
       "prop": "grossProfit",
       "index": 13,
       "minWidth": 80,
       "overHidden": true
     },
     {
-      "label": "利率",
+      "label": "产品利率",
       "prop": "grossProfitRate",
       "index": 14,
       "minWidth": 80,

+ 36 - 33
src/views/exportTrade/salesContract/detailsPage.vue

@@ -118,8 +118,7 @@
             <el-input
               size="small"
               v-model="form.exchangeRate"
-              oninput='this.value=this.value.replace(/[^(\d.)]/g,"").replace(/^(\d+)\.(\d\d\d\d).*$/,
-            "$1.$2")'
+              oninput="value=value.replace(/[^0-9.]/g,'').replace(/^(\-)*(\d+)\.(\d\d).*$/,'$1$2.$3')"
               placeholder="请输入 汇率"
               :disabled="detailData.status == 1"
               @change="exchangeRateChange"
@@ -129,8 +128,7 @@
             <el-input
               size="mini"
               v-model="form.boxNumber"
-              oninput='this.value=this.value.replace(/[^(\d.)]/g,"").replace(/^(\d+)\.(\d\d).*$/,
-            "$1.$2")'
+              oninput="value=value.replace(/[^0-9.]/g,'').replace(/^(\-)*(\d+)\.(\d\d).*$/,'$1$2.$3')"
               placeholder="请输入 起订量"
               :disabled="detailData.status == 1"
             />
@@ -139,8 +137,7 @@
             <el-input
               size="mini"
               v-model="form.minOrder"
-              oninput='this.value=this.value.replace(/[^(\d.)]/g,"").replace(/^(\d+)\.(\d\d).*$/,
-            "$1.$2")'
+              oninput="value=value.replace(/[^0-9.]/g,'').replace(/^(\-)*(\d+)\.(\d\d).*$/,'$1$2.$3')"
               placeholder="请输入 起订量"
               :disabled="detailData.status == 1"
             />
@@ -149,8 +146,7 @@
             <el-input
               size="mini"
               v-model="form.predictOceanFreight"
-              oninput='this.value=this.value.replace(/[^(\d.)]/g,"").replace(/^(\d+)\.(\d\d).*$/,
-            "$1.$2")'
+              oninput="value=value.replace(/[^0-9.]/g,'').replace(/^(\-)*(\d+)\.(\d\d).*$/,'$1$2.$3')"
               placeholder="请输入 预计海运费"
               :disabled="detailData.status == 1"
             />
@@ -159,8 +155,7 @@
             <el-input
               size="mini"
               v-model="form.referenceOceanFreight"
-              oninput='this.value=this.value.replace(/[^(\d.)]/g,"").replace(/^(\d+)\.(\d\d).*$/,
-            "$1.$2")'
+              oninput="value=value.replace(/[^0-9.]/g,'').replace(/^(\-)*(\d+)\.(\d\d).*$/,'$1$2.$3')"
               placeholder="请输入 参考海运费"
               :disabled="detailData.status == 1"
             />
@@ -169,8 +164,7 @@
             <el-input
               size="mini"
               v-model="form.oceanFreight"
-              oninput='this.value=this.value.replace(/[^(\d.)]/g,"").replace(/^(\d+)\.(\d\d).*$/,
-            "$1.$2")'
+              oninput="value=value.replace(/[^0-9.]/g,'').replace(/^(\-)*(\d+)\.(\d\d).*$/,'$1$2.$3')"
               placeholder="请输入 实际海运费"
               :disabled="detailData.status == 1"
             />
@@ -295,7 +289,7 @@
                 size="small"
                 placeholder="请输入"
                 @change="purchaseAmountChange(row)"
-                oninput='this.value=this.value.replace(/[^(\d.)]/g,"").replace(/^(\d+)\.(\d\d).*$/, "$1.$2")'
+                oninput="value=value.replace(/[^0-9.]/g,'').replace(/^(\-)*(\d+)\.(\d\d).*$/,'$1$2.$3')"
               ></el-input>
               <span v-else>{{ row.purchaseAmount | micrometerFormat }}</span>
             </template>
@@ -304,7 +298,7 @@
                 v-if="row.$cellEdit"
                 v-model="row.price"
                 size="small"
-                oninput='this.value=this.value.replace(/[^(\d.)]/g,"").replace(/^(\d+)\.(\d\d).*$/, "$1.$2")'
+                oninput="value=value.replace(/[^0-9.]/g,'').replace(/^(\-)*(\d+)\.(\d\d).*$/,'$1$2.$3')"
                 @change="priceChange(row)"
               ></el-input>
               <span v-else>{{ row.price | micrometerFormat }}</span>
@@ -317,7 +311,7 @@
                 v-if="row.$cellEdit"
                 v-model="row.orderQuantity"
                 size="small"
-                oninput='this.value=this.value.replace(/[^(\d.)]/g,"").replace(/^(\d+)\.(\d\d).*$/, "$1.$2")'
+                oninput='this.value=this.value.replace(/[^(\d)]/g,"")'
                 @change="priceChange(row)"
               ></el-input>
               <span v-else>{{ row.orderQuantity }}</span>
@@ -327,7 +321,7 @@
                 v-if="row.$cellEdit"
                 v-model="row.discount"
                 size="small"
-                oninput='this.value=this.value.replace(/[^(\d.)]/g,"").replace(/^(\d+)\.(\d\d).*$/, "$1.$2")'
+                oninput="value=value.replace(/[^0-9.]/g,'').replace(/^(\-)*(\d+)\.(\d\d).*$/,'$1$2.$3')"
                 @change="discountChange(row)"
               ></el-input>
               <span v-else>{{ row.discount | isDiscount }}</span>
@@ -337,7 +331,7 @@
                 v-if="row.$cellEdit"
                 v-model="row.insurance"
                 size="small"
-                oninput='this.value=this.value.replace(/[^(\d.)]/g,"").replace(/^(\d+)\.(\d\d).*$/, "$1.$2")'
+                oninput="value=value.replace(/[^0-9.]/g,'').replace(/^(\-)*(\d+)\.(\d\d).*$/,'$1$2.$3')"
                 @change="priceChange(row)"
               ></el-input>
               <span v-else>{{ row.insurance | micrometerFormat }}</span>
@@ -347,7 +341,7 @@
                 v-if="row.$cellEdit"
                 v-model="row.freight"
                 size="small"
-                oninput='this.value=this.value.replace(/[^(\d.)]/g,"").replace(/^(\d+)\.(\d\d).*$/, "$1.$2")'
+                oninput="value=value.replace(/[^0-9.]/g,'').replace(/^(\-)*(\d+)\.(\d\d).*$/,'$1$2.$3')"
                 @change="priceChange(row)"
               ></el-input>
               <span v-else>{{ row.freight | micrometerFormat }}</span>
@@ -357,7 +351,7 @@
                 v-if="row.$cellEdit"
                 v-model="row.taxRate"
                 size="small"
-                oninput='this.value=this.value.replace(/[^(\d.)]/g,"").replace(/^(\d+)\.(\d\d).*$/, "$1.$2")'
+                oninput="value=value.replace(/[^0-9.]/g,'').replace(/^(\-)*(\d+)\.(\d\d).*$/,'$1$2.$3')"
                 @change="taxRateChange(row)"
               ></el-input>
               <span v-else>{{ row.taxRate | isPercentage }}</span>
@@ -583,8 +577,7 @@ export default {
       form: {
         orderStatus: "录入",
         businesDate: dateFormat(new Date(), "yyyy-MM-dd") + " 00:00:00",
-        currency: "CNY",
-        exchangeRate: "1"
+        currency: "USD"
       },
       disabled: false,
       dialogVisible: false,
@@ -790,20 +783,25 @@ export default {
             span: 8
           },
           {
-            label: "毛利",
+            label: "产品毛利",
             prop: "grossProfit",
             span: 8,
             disabled: true
           },
           {
-            label: "利率",
+            label: "产品利率",
             prop: "grossProfitRate",
             span: 8,
-            row: true,
             append: "%",
             disabled: true
           },
           {
+            label: "单票毛利",
+            prop: "singleTicketMargin",
+            span: 8,
+            disabled: true
+          },
+          {
             label: "备注",
             prop: "orderRemark",
             type: "textarea",
@@ -914,8 +912,7 @@ export default {
       oldform: {
         orderStatus: "录入",
         businesDate: dateFormat(new Date(), "yyyy-MM-dd") + " 00:00:00",
-        currency: "CNY",
-        exchangeRate: "1"
+        currency: "USD"
       },
       olddata: [],
       oldorderFeesList: [],
@@ -983,6 +980,14 @@ export default {
     });
     this.getWorkDicts("currency").then(res => {
       this.currencyList = res.data.data;
+      if (!this.detailData.id) {
+        this.currencyList.forEach(e => {
+          if (e.dictValue == "USD") {
+            this.form.exchangeRate = e.remark;
+            this.oldform.exchangeRate = e.remark;
+          }
+        });
+      }
     });
     getGoods(1, 500).then(res => {
       this.goodsoptions = res.data.data.records;
@@ -1183,13 +1188,11 @@ export default {
       }
     },
     currencyChange(row) {
-      if (row == "CNY") {
-        this.form.exchangeRate = 1;
-      } else if (row == "USD") {
-        this.form.exchangeRate = 6.3843;
-      } else {
-        this.form.exchangeRate = 1;
-      }
+      this.currencyList.forEach(e => {
+        if (e.dictValue == row) {
+          this.form.exchangeRate = e.remark;
+        }
+      });
       if (this.data.length > 0) {
         this.data.forEach(e => {
           e.freight = transformCal(

+ 0 - 7
src/views/exportTrade/salesContract/index.vue

@@ -120,13 +120,6 @@ export default {
   name: "customerInformation",
   data() {
     return {
-      configuration: {
-        multipleChoices: false,
-        multiple: false,
-        collapseTags: false,
-        placeholder: "请点击右边按钮选择",
-        dicData: []
-      },
       search: {
         businesDate: defaultDate()
       },

+ 1 - 9
src/views/exportTrade/shippingInquiry/detailsPage.vue

@@ -101,8 +101,7 @@
             <el-input
               size="small"
               v-model="row.oceanFreight"
-              oninput='this.value=this.value.replace(/[^(\d.)]/g,"").replace(/^(\d+)\.(\d\d).*$/,
-            "$1.$2")'
+              oninput="value=value.replace(/[^0-9.]/g,'').replace(/^(\-)*(\d+)\.(\d\d).*$/,'$1$2.$3')"
               placeholder="请输入"
               :disabled="detailData.status == 1"
               v-if="row.$cellEdit"
@@ -222,13 +221,6 @@ export default {
   name: "detailsPageEdit",
   data() {
     return {
-      configuration: {
-        multipleChoices: false,
-        multiple: false,
-        collapseTags: false,
-        placeholder: "请点击右边按钮选择",
-        dicData: []
-      },
       switchDialog: false,
       form: {},
       disabled: false,

+ 0 - 7
src/views/exportTrade/shippingInquiry/index.vue

@@ -91,13 +91,6 @@ export default {
   name: "customerInformation",
   data() {
     return {
-      configuration: {
-        multipleChoices: false,
-        multiple: false,
-        collapseTags: false,
-        placeholder: "请点击右边按钮选择",
-        dicData: []
-      },
       search: {},
       option: {},
       parentId: 0,

+ 53 - 0
src/views/maintenance/integral/config/mainList.json

@@ -0,0 +1,53 @@
+{
+  "searchShow": true,
+  "searchMenuSpan": 8,
+  "border": true,
+  "index": true,
+  "viewBtn": false,
+  "editBtn": false,
+  "delBtn": false,
+  "addBtn": false,
+  "align": "center",
+  "menuWidth": "120",
+  "menu": false,
+  "showSummary": true,
+  "searchIcon": true,
+  "searchIndex": 2,
+  "selection": true,
+  "tip":false,
+  "column": [
+    {
+      "label": "客户",
+      "prop": "corpId",
+      "search": true,
+      "index": 1,
+      "minWidth": 80,
+      "overHidden": true,
+      "searchSpan": 8
+    },{
+      "label": "积分",
+      "prop": "a",
+      "search": false,
+      "index": 2,
+      "minWidth": 80,
+      "overHidden": true,
+      "searchSpan": 8
+    },{
+      "label": "兑换",
+      "prop": "b",
+      "search": false,
+      "index": 3,
+      "minWidth": 80,
+      "overHidden": true,
+      "searchSpan": 8
+    },{
+      "label": "积分余额",
+      "prop": "c",
+      "search": false,
+      "index": 4,
+      "minWidth": 80,
+      "overHidden": true,
+      "searchSpan": 8
+    }
+  ]
+}

+ 76 - 0
src/views/maintenance/integral/index.vue

@@ -0,0 +1,76 @@
+<template>
+  <div>
+    <basic-container>
+      <avue-crud
+        :option="option"
+        :data="dataList"
+        ref="crud"
+        v-model="form"
+        :page.sync="page"
+        :search.sync="search"
+        @search-change="searchChange"
+        @current-change="currentChange"
+        @size-change="sizeChange"
+        @refresh-change="refreshChange"
+        @on-load="onLoad"
+        :table-loading="loading"
+        @saveColumn="saveColumn"
+      ></avue-crud>
+    </basic-container>
+  </div>
+</template>
+
+<script>
+import option from './config/mainList.json'
+
+export default {
+  name: "index",
+  data() {
+    return {
+      option: {},
+      dataList: [],
+      form: {},
+      page: {
+        pageSize: 10,
+        pagerCount: 5,
+        total: 0,
+      },
+      search: {},
+      loading: false,
+    }
+  },
+  created() {
+    this.option = option
+    let i = 0;
+    this.option.column.forEach(item => {
+      if (item.search) i++
+    })
+    if (i % 3 !== 0){
+      const num = 3 - Number(i % 3)
+      this.option.searchMenuSpan = num * 8;
+      this.option.searchMenuPosition = "right";
+    }
+  },
+  methods: {
+    searchChange(params, done) {
+      done();
+    },
+    currentChange(val) {
+      this.page.currentPage = val;
+    },
+    sizeChange(val) {
+      this.page.currentPage = 1;
+      this.page.pageSize = val;
+    },
+    refreshChange() {
+      this.onLoad(this.page, this.search);
+    },
+    onLoad(page, params) {},
+    async saveColumn() {},
+  },
+}
+</script>
+
+<style scoped>
+
+</style>

+ 53 - 0
src/views/maintenance/overpayment/config/mainList.json

@@ -0,0 +1,53 @@
+{
+  "searchShow": true,
+  "searchMenuSpan": 8,
+  "border": true,
+  "index": true,
+  "viewBtn": false,
+  "editBtn": false,
+  "delBtn": false,
+  "addBtn": false,
+  "align": "center",
+  "menuWidth": "120",
+  "menu": false,
+  "showSummary": true,
+  "searchIcon": true,
+  "searchIndex": 2,
+  "selection": true,
+  "tip":false,
+  "column": [
+    {
+      "label": "客户",
+      "prop": "corpId",
+      "search": true,
+      "index": 1,
+      "minWidth": 80,
+      "overHidden": true,
+      "searchSpan": 8
+    },{
+      "label": "增加",
+      "prop": "a",
+      "search": false,
+      "index": 2,
+      "minWidth": 80,
+      "overHidden": true,
+      "searchSpan": 8
+    },{
+      "label": "使用",
+      "prop": "b",
+      "search": false,
+      "index": 3,
+      "minWidth": 80,
+      "overHidden": true,
+      "searchSpan": 8
+    },{
+      "label": "余额",
+      "prop": "c",
+      "search": false,
+      "index": 4,
+      "minWidth": 80,
+      "overHidden": true,
+      "searchSpan": 8
+    }
+  ]
+}

+ 76 - 0
src/views/maintenance/overpayment/index.vue

@@ -0,0 +1,76 @@
+<template>
+  <div>
+    <basic-container>
+      <avue-crud
+        :option="option"
+        :data="dataList"
+        ref="crud"
+        v-model="form"
+        :page.sync="page"
+        :search.sync="search"
+        @search-change="searchChange"
+        @current-change="currentChange"
+        @size-change="sizeChange"
+        @refresh-change="refreshChange"
+        @on-load="onLoad"
+        :table-loading="loading"
+        @saveColumn="saveColumn"
+      ></avue-crud>
+    </basic-container>
+  </div>
+</template>
+
+<script>
+import option from './config/mainList.json';
+
+export default {
+  name: "index",
+  data() {
+    return {
+      option: {},
+      dataList: [],
+      form: {},
+      page: {
+        pageSize: 10,
+        pagerCount: 5,
+        total: 0,
+      },
+      search: {},
+      loading: false,
+    }
+  },
+  created() {
+    this.option = option
+    let i = 0;
+    this.option.column.forEach(item => {
+      if (item.search) i++
+    })
+    if (i % 3 !== 0){
+      const num = 3 - Number(i % 3)
+      this.option.searchMenuSpan = num * 8;
+      this.option.searchMenuPosition = "right";
+    }
+  },
+  methods: {
+    searchChange(params, done) {
+      done();
+    },
+    currentChange(val) {
+      this.page.currentPage = val;
+    },
+    sizeChange(val) {
+      this.page.currentPage = 1;
+      this.page.pageSize = val;
+    },
+    refreshChange() {
+      this.onLoad(this.page, this.search);
+    },
+    onLoad(page, params) {},
+    async saveColumn() {},
+  },
+}
+</script>
+
+<style scoped>
+
+</style>

+ 18 - 25
src/views/maintenance/priceLibrary/config/mainList.json

@@ -80,15 +80,15 @@
       }
     },
     {
-      "label": "最新价格",
-      "prop": "price",
+      "label": "税率",
+      "prop": "taxRate",
       "index": 9,
       "width": 100,
       "overHidden": true
     },
     {
-      "label": "美元价格",
-      "prop": "greenback",
+      "label": "最新价格",
+      "prop": "price",
       "index": 10,
       "width": 100,
       "overHidden": true
@@ -101,18 +101,11 @@
       "overHidden": true
     },
     {
-      "label": "税率",
-      "prop": "taxRate",
-      "index": 12,
-      "width": 100,
-      "overHidden": true
-    },
-    {
       "label": "商品类别",
       "prop": "goodsTypeName",
       "search": true,
       "searchSpan": 8,
-      "index": 13,
+      "index": 12,
       "width": 100,
       "type": "select",
       "filterable": true,
@@ -126,84 +119,84 @@
     {
       "label": "是否重点推荐",
       "prop": "priorityReferrer",
-      "index": 14,
-      "width": 100,
+      "index": 13,
+      "width": 120,
       "overHidden": true
     },
     {
       "label": "推荐理由",
       "prop": "referrerReason",
-      "index": 15,
+      "index": 14,
       "width": 100,
       "overHidden": true
     },
     {
       "label": "历史价格1",
       "prop": "priceOne",
-      "index": 16,
+      "index": 15,
       "width": 100,
       "overHidden": true
     },
     {
       "label": "历史日期1",
       "prop": "priceOneTime",
-      "index": 17,
+      "index": 16,
       "width": 100,
       "overHidden": true
     },
     {
       "label": "历史价格2",
       "prop": "priceTwo",
-      "index": 18,
+      "index": 17,
       "width": 100,
       "overHidden": true
     },
     {
       "label": "历史日期2",
       "prop": "priceTwoTime",
-      "index": 19,
+      "index": 18,
       "width": 100,
       "overHidden": true
     },
     {
       "label": "历史价格3",
       "prop": "priceThree",
-      "index": 20,
+      "index": 19,
       "width": 100,
       "overHidden": true
     },
     {
       "label": "历史日期3",
       "prop": "priceThreeTime",
-      "index": 21,
+      "index": 20,
       "width": 100,
       "overHidden": true
     },
     {
       "label": "备注",
       "prop": "remarks",
-      "index": 22,
+      "index": 21,
       "width": 100,
       "overHidden": true
     },
     {
       "label": "有效期开始",
       "prop": "startTime",
-      "index": 23,
+      "index": 22,
       "width": 100,
       "overHidden": true
     },
     {
       "label": "有效期结束",
       "prop": "endTime",
-      "index": 24,
+      "index": 23,
       "width": 100,
       "overHidden": true
     },
     {
       "label": "有效日期",
       "prop": "dateValidity",
-      "index": 25,
+      "index": 24,
       "width": 100,
       "search": true,
       "searchSpan": 8,

+ 57 - 16
src/views/maintenance/priceLibrary/index.vue

@@ -67,25 +67,52 @@
           >
           </el-date-picker>
         </template>
-        <template slot-scope="scope" slot="corpId">
-          {{ scope.row.corpName }}
+        <template slot-scope="{ row }" slot="corpId">
+          {{ row.corpName }}
         </template>
-        <template slot-scope="scope" slot="grossProfitRate">
-          {{ scope.row.grossProfitRate ? scope.row.grossProfitRate : 0 }}%
+        <template slot-scope="{ row }" slot="grossProfitRate">
+          {{ row.grossProfitRate ? scope.row.grossProfitRate : 0 }}%
         </template>
-        <template slot-scope="scope" slot="status">
-          {{ scope.row.status | orderStateFormat }}
+        <template slot-scope="{ row }" slot="status">
+          {{ row.status | orderStateFormat }}
         </template>
-        <template slot-scope="scope" slot="taxRate">
-          {{ scope.row.taxRate | taxRateFormat }}
+        <template slot-scope="{ row }" slot="coefficient">
+          <el-input
+            v-if="row.$cellEdit"
+            v-model="row.coefficient"
+            size="small"
+            oninput="value=value.replace(/[^0-9.]/g,'').replace(/^(\-)*(\d+)\.(\d\d).*$/,'$1$2.$3')"
+            @change="priceChange(row)"
+          ></el-input>
+          <span v-else>{{ row.coefficient }}</span>
+        </template>
+        <template slot-scope="{ row }" slot="price">
+          <el-input
+            v-if="row.$cellEdit"
+            v-model="row.price"
+            size="small"
+            oninput="value=value.replace(/[^0-9.]/g,'').replace(/^(\-)*(\d+)\.(\d\d).*$/,'$1$2.$3')"
+            @change="priceChange(row)"
+          ></el-input>
+          <span v-else>{{ row.price }}</span>
+        </template>
+        <template slot-scope="{ row }" slot="taxRate">
+          <el-input
+            v-if="row.$cellEdit"
+            v-model="row.taxRate"
+            size="small"
+            oninput="value=value.replace(/[^0-9.]/g,'').replace(/^(\-)*(\d+)\.(\d\d).*$/,'$1$2.$3')"
+            @change="priceChange(row)"
+          ></el-input>
+          <span v-else>{{ row.taxRate | taxRateFormat }}</span>
         </template>
-        <template slot-scope="scope" slot="menu">
+        <template slot-scope="{ row, index }" slot="menu">
           <el-button
             type="text"
             icon="el-icon-edit"
             size="small"
-            @click.stop="editOpen(scope.row, 2)"
-            >修改
+            @click.stop="editOpen(row, index)"
+            >{{ row.$cellEdit ? "保存" : "修改" }}
           </el-button>
           <el-button
             type="text"
@@ -116,11 +143,16 @@
 <script>
 import option from "./config/mainList.json";
 import { getToken } from "@/util/auth";
-import { getList, remove, getGoodstype } from "@/api/maintenance/priceLibrary";
-import { defaultDate } from "@/util/date";
+import {
+  getList,
+  remove,
+  getGoodstype,
+  submit
+} from "@/api/maintenance/priceLibrary";
 import { micrometerFormat } from "@/util/validate";
 import { orderStateFormat } from "@/enums/order-stauts";
 import { taxRateFormat } from "@/enums/tax-rate";
+import { purchaseCal } from "@/util/calculate";
 import _ from "lodash";
 export default {
   name: "customerInformation",
@@ -205,6 +237,9 @@ export default {
     cellStyle() {
       return "padding:0;height:40px;";
     },
+    priceChange(row) {
+      row.purchaseAmount = purchaseCal(row.price, row.taxRate, row.coefficient);
+    },
     uploadAfter(res, done, loading, column) {
       if (res != "导入成功") {
         this.$message.error(res);
@@ -246,9 +281,15 @@ export default {
         });
       });
     },
-    editOpen(row, status) {
-      this.$message.warning("暂不支持修改");
-      console.log(row, status);
+    editOpen(row, index) {
+      if (row.$cellEdit == true) {
+        submit({ ...row, tradeType: "CK" }).then(res => {
+          console.log(res)
+          this.$set(row, "$cellEdit", false);
+        });
+      } else {
+        this.$set(row, "$cellEdit", true);
+      }
     },
     //点击搜索按钮触发
     searchChange(params, done) {