Browse Source

Merge commit '8d0872f3ccdb2a57c76ff65b19750ebdba24787f' into HEAD

gitadmin 2 years ago
parent
commit
4415957e42
100 changed files with 1304 additions and 515 deletions
  1. 40 38
      package-lock.json
  2. 1 1
      package.json
  3. BIN
      public/logo1.png
  4. BIN
      public/templ/库存导入模板.xlsx
  5. BIN
      public/templ/库存预警产品导入模板.xlsx
  6. BIN
      public/templ/散件产品导入模板.xlsx
  7. BIN
      public/templ/散件入库产品导入模板.xlsx
  8. BIN
      public/templ/货位导入模板.xlsx
  9. BIN
      public/templ/采购退货申请单产品明细模板.xlsx
  10. BIN
      public/templ/销售单产品明细导入模板.xlsx
  11. 1 1
      public/version.json
  12. 8 0
      src/api/allocLinkageOut.js
  13. 9 0
      src/api/allocLinkagePut.js
  14. 9 1
      src/api/allocWarehouse.js
  15. 27 0
      src/api/stockWarn.js
  16. 8 0
      src/api/storeCallOut.js
  17. 5 1
      src/components/Table/index.js
  18. 10 0
      src/components/index.less
  19. 30 4
      src/config/router.config.js
  20. 74 71
      src/core/directives/dragModal.js
  21. 4 3
      src/views/allocationManagement/chainTransferIn/detail.vue
  22. 4 3
      src/views/allocationManagement/chainTransferIn/edit.vue
  23. 28 4
      src/views/allocationManagement/chainTransferIn/list.vue
  24. 4 3
      src/views/allocationManagement/chainTransferOut/detail.vue
  25. 16 20
      src/views/allocationManagement/chainTransferOut/edit.vue
  26. 28 4
      src/views/allocationManagement/chainTransferOut/list.vue
  27. 3 2
      src/views/allocationManagement/storeTransferOut/detail.vue
  28. 15 19
      src/views/allocationManagement/storeTransferOut/edit.vue
  29. 28 4
      src/views/allocationManagement/storeTransferOut/list.vue
  30. 4 3
      src/views/allocationManagement/warehouseAllocation/detail.vue
  31. 10 16
      src/views/allocationManagement/warehouseAllocation/edit.vue
  32. 28 4
      src/views/allocationManagement/warehouseAllocation/list.vue
  33. 135 0
      src/views/basicData/systemSettings/index.vue
  34. 4 3
      src/views/bulkManagement/bulkImport/list.vue
  35. 6 5
      src/views/bulkManagement/bulkReturnGoods/detailModal.vue
  36. 8 13
      src/views/bulkManagement/bulkReturnGoods/edit.vue
  37. 6 12
      src/views/bulkManagement/bulkReturnGoods/grabEdit.vue
  38. 2 1
      src/views/bulkManagement/bulkReturnGoods/list.vue
  39. 3 2
      src/views/bulkManagement/bulkWarehousingOrder/chooseImportModal.vue
  40. 4 3
      src/views/bulkManagement/bulkWarehousingOrder/detail.vue
  41. 56 44
      src/views/bulkManagement/bulkWarehousingOrder/edit.vue
  42. 7 12
      src/views/bulkManagement/bulkWarehousingOrder/importGuideModal.vue
  43. 3 2
      src/views/bulkManagement/bulkWarehousingOrder/list.vue
  44. 1 0
      src/views/chainReportData/chainStockReport/list.vue
  45. 0 1
      src/views/common/custType.js
  46. 3 2
      src/views/common/outInDetialModal.vue
  47. 1 1
      src/views/common/productBrand.js
  48. 1 2
      src/views/common/shelfList.js
  49. 0 1
      src/views/common/supplier.js
  50. 11 2
      src/views/common/warehouse.js
  51. 8 7
      src/views/financialManagement/companyCollectionPayment/detail.vue
  52. 4 3
      src/views/financialManagement/companyCollectionPayment/list.vue
  53. 4 3
      src/views/financialManagement/companyReceivablePayable/chooseBillModal.vue
  54. 6 5
      src/views/financialManagement/companyReceivablePayable/collectionPayment.vue
  55. 5 4
      src/views/financialManagement/companyReceivablePayable/detail.vue
  56. 7 5
      src/views/financialManagement/companyReceivablePayable/list.vue
  57. 3 1
      src/views/financialManagement/expenseManagement/detailModal.vue
  58. 3 2
      src/views/financialManagement/expenseManagement/list.vue
  59. 3 1
      src/views/financialManagement/financialCollection/detailModal.vue
  60. 12 9
      src/views/financialManagement/financialCollection/list.vue
  61. 3 1
      src/views/financialManagement/financialPayment/detailModal.vue
  62. 3 1
      src/views/financialManagement/financialPayment/expenseDetail.vue
  63. 12 9
      src/views/financialManagement/financialPayment/list.vue
  64. 1 1
      src/views/financialManagement/fundAccountManagement/detail.vue
  65. 3 2
      src/views/financialManagement/fundAccountManagement/list.vue
  66. 2 1
      src/views/financialManagement/inventoryCheckAudit/list.vue
  67. 3 2
      src/views/financialManagement/ledgerRecord/list.vue
  68. 1 1
      src/views/financialManagement/settleModal/settleModal.vue
  69. 5 4
      src/views/financialManagement/warehousingAudit/detail.vue
  70. 2 1
      src/views/financialManagement/warehousingAudit/list.vue
  71. 1 1
      src/views/financialManagement/withdrawalManagement/cashOutModal.vue
  72. 1 1
      src/views/financialManagement/withdrawalManagement/list.vue
  73. 6 9
      src/views/inventoryManagement/inventoryChecking/detailModal.vue
  74. 2 1
      src/views/inventoryManagement/inventoryChecking/list.vue
  75. 1 1
      src/views/inventoryManagement/inventoryChecking/makeInventory.vue
  76. 1 1
      src/views/inventoryManagement/inventoryChecking/overall.vue
  77. 15 27
      src/views/inventoryManagement/inventoryChecking/selfDisk.vue
  78. 1 1
      src/views/inventoryManagement/inventoryImport/list.vue
  79. 6 5
      src/views/inventoryManagement/inventoryQuery/detailModal.vue
  80. 63 38
      src/views/inventoryManagement/inventoryQuery/list.vue
  81. 7 6
      src/views/inventoryManagement/inventoryQuery/warehouseDetail.vue
  82. 205 0
      src/views/inventoryManagement/inventoryWarning/chooseImportModal.vue
  83. 184 0
      src/views/inventoryManagement/inventoryWarning/importGuideModal.vue
  84. 14 2
      src/views/inventoryManagement/inventoryWarning/list.vue
  85. 10 9
      src/views/numsGoodsShelves/customerAnalysis/list.vue
  86. 4 4
      src/views/numsGoodsShelves/recallManagement/list.vue
  87. 3 4
      src/views/numsGoodsShelves/recallStockManagement/editStock.vue
  88. 1 1
      src/views/numsGoodsShelves/recallStockManagement/list.vue
  89. 3 2
      src/views/numsGoodsShelves/replenishmentManagement/replenishmentDetail.vue
  90. 2 3
      src/views/numsGoodsShelves/settlementManagement/unSettlementDetail.vue
  91. 4 3
      src/views/numsGoodsShelves/shelfOrder/detail.vue
  92. 3 2
      src/views/numsGoodsShelves/shelfOrder/list.vue
  93. 7 4
      src/views/numsGoodsShelves/shelfSet/chooseImportModal.vue
  94. 7 4
      src/views/numsGoodsShelves/shelfSet/chooseShelfImportModal.vue
  95. 1 1
      src/views/numsGoodsShelves/shelfSet/importHuoweiModal.vue
  96. 3 2
      src/views/numsGoodsShelves/shelfSet/set.vue
  97. 3 3
      src/views/numsGoodsShelves/vinAnalysis/vinList.vue
  98. 3 1
      src/views/numsGoodsShelves/withdrawalManagement/applyWithdrawal.vue
  99. 6 7
      src/views/numsGoodsShelves/withdrawalManagement/list.vue
  100. 2 1
      src/views/outboundOrderManagement/outboundOrder/list.vue

+ 40 - 38
package-lock.json

@@ -14,13 +14,13 @@
     },
     "@ant-design/icons": {
       "version": "2.1.1",
-      "resolved": "https://registry.npm.taobao.org/@ant-design/icons/download/@ant-design/icons-2.1.1.tgz",
-      "integrity": "sha1-e5wI3/1PXUHbZn2dvl4BB9C9mko="
+      "resolved": "https://registry.npmjs.org/@ant-design/icons/-/icons-2.1.1.tgz",
+      "integrity": "sha512-jCH+k2Vjlno4YWl6g535nHR09PwCEmTBKAG6VqF+rhkrSPRLfgpU2maagwbZPLjaHuU5Jd1DFQ2KJpQuI6uG8w=="
     },
     "@ant-design/icons-vue": {
       "version": "2.0.0",
-      "resolved": "https://registry.npm.taobao.org/@ant-design/icons-vue/download/@ant-design/icons-vue-2.0.0.tgz",
-      "integrity": "sha1-A1f1AQpATp80qHpLQbKgjfaR284=",
+      "resolved": "https://registry.npmjs.org/@ant-design/icons-vue/-/icons-vue-2.0.0.tgz",
+      "integrity": "sha512-2c0QQE5hL4N48k5NkPG5sdpMl9YnvyNhf0U7YkdZYDlLnspoRU7vIA0UK9eHBs6OpFLcJB6o8eJrIl2ajBskPg==",
       "requires": {
         "@ant-design/colors": "^3.1.0",
         "babel-runtime": "^6.26.0"
@@ -1202,9 +1202,9 @@
       },
       "dependencies": {
         "core-js": {
-          "version": "3.15.2",
-          "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.15.2.tgz",
-          "integrity": "sha512-tKs41J7NJVuaya8DxIOCnl8QuPHx5/ZVbFo1oKgVl1qHFBBrDctzQGtuLjPpRdNTWmKPH6oEvgN/MUID+l485Q=="
+          "version": "3.27.2",
+          "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.27.2.tgz",
+          "integrity": "sha512-9ashVQskuh5AZEZ1JdQWp1GqSoC1e1G87MzRqg2gIfVAQ7Qn9K+uFj8EcniUFA4P2NLZfV+TOlX1SzoKfo+s7w=="
         }
       }
     },
@@ -2486,9 +2486,9 @@
       "dev": true
     },
     "ant-design-vue": {
-      "version": "1.7.6",
-      "resolved": "https://registry.npmjs.org/ant-design-vue/-/ant-design-vue-1.7.6.tgz",
-      "integrity": "sha512-EOS6g/deT53xHxZDMOxedyBehXSNMGnxdOeQtDksmiRvCBrZs+yoFYoVOe9pmQ8EJ7XQLn8TMReiYbXi78kppA==",
+      "version": "1.7.8",
+      "resolved": "https://registry.npmjs.org/ant-design-vue/-/ant-design-vue-1.7.8.tgz",
+      "integrity": "sha512-F1hmiS9vwbyfuFvlamdW5l9bHKqRlj9wHaGDIE41NZMWXyWy8qL0UFa/+I0Wl8gQWZCqODW5pN6Yfoyn85At3A==",
       "requires": {
         "@ant-design/icons": "^2.1.1",
         "@ant-design/icons-vue": "^2.0.0",
@@ -3926,9 +3926,9 @@
       }
     },
     "classnames": {
-      "version": "2.3.1",
-      "resolved": "https://registry.npmjs.org/classnames/-/classnames-2.3.1.tgz",
-      "integrity": "sha512-OlQdbZ7gLfGarSqxesMesDa5uz7KFbID8Kpq/SxIoNGDqY8lSYs0D+hhtBXhcdB3rcbXArFr7vlHheLk1voeNA=="
+      "version": "2.3.2",
+      "resolved": "https://registry.npmjs.org/classnames/-/classnames-2.3.2.tgz",
+      "integrity": "sha512-CSbhY4cFEJRe6/GQzIk5qXZ4Jeg5pcsP7b5peFSDpffpe1cqjASH/n9UTjBwOp6XpMSTwQ8Za2K5V02ueA7Tmw=="
     },
     "clean-css": {
       "version": "4.2.1",
@@ -4307,7 +4307,7 @@
     "component-classes": {
       "version": "1.2.6",
       "resolved": "https://registry.npmjs.org/component-classes/-/component-classes-1.2.6.tgz",
-      "integrity": "sha1-xkI5TDYYpNiwuJGe/Mu9kw5c1pE=",
+      "integrity": "sha512-hPFGULxdwugu1QWW3SvVOCUHLzO34+a2J6Wqy0c5ASQkfi9/8nZcBB0ZohaEbXOQlCflMAEMmEWk7u7BVs4koA==",
       "requires": {
         "component-indexof": "0.0.3"
       }
@@ -4321,7 +4321,7 @@
     "component-indexof": {
       "version": "0.0.3",
       "resolved": "https://registry.npmjs.org/component-indexof/-/component-indexof-0.0.3.tgz",
-      "integrity": "sha1-EdCRMSI5648yyPJa6csAL/6NPCQ="
+      "integrity": "sha512-puDQKvx/64HZXb4hBwIcvQLaLgux8o1CbWl39s41hrIIZDl1lJiD5jc22gj3RBeGK0ovxALDYpIbyjqDUUl0rw=="
     },
     "compressible": {
       "version": "2.0.17",
@@ -5607,14 +5607,14 @@
       }
     },
     "dom-align": {
-      "version": "1.12.2",
-      "resolved": "https://registry.npmjs.org/dom-align/-/dom-align-1.12.2.tgz",
-      "integrity": "sha512-pHuazgqrsTFrGU2WLDdXxCFabkdQDx72ddkraZNih1KsMcN5qsRSTR9O4VJRlwTPCPb5COYg3LOfiMHHcPInHg=="
+      "version": "1.12.4",
+      "resolved": "https://registry.npmjs.org/dom-align/-/dom-align-1.12.4.tgz",
+      "integrity": "sha512-R8LUSEay/68zE5c8/3BDxiTEvgb4xZTF0RKmAHfiEVN3klfIpXfi2/QCoiWPccVQ0J/ZGdz9OjzL4uJEP/MRAw=="
     },
     "dom-closest": {
       "version": "0.2.0",
       "resolved": "https://registry.npmjs.org/dom-closest/-/dom-closest-0.2.0.tgz",
-      "integrity": "sha1-69n5HRvyLo1vR3h2u80+yQIWwM8=",
+      "integrity": "sha512-6neTn1BtJlTSt+XSISXpnOsF1uni1CHsP/tmzZMGWxasYFHsBOqrHPnzmneqEgKhpagnfnfSfbvRRW0xFsBHAA==",
       "requires": {
         "dom-matches": ">=1.0.1"
       }
@@ -5637,7 +5637,7 @@
     "dom-matches": {
       "version": "2.0.0",
       "resolved": "https://registry.npmjs.org/dom-matches/-/dom-matches-2.0.0.tgz",
-      "integrity": "sha1-0nKLQWqHUzmA6wibhI0lPPI6dYw="
+      "integrity": "sha512-2VI856xEDCLXi19W+4BechR5/oIS6bKCKqcf16GR8Pg7dGLJ/eBOWVbCmQx2ISvYH6wTNx5Ef7JTOw1dRGRx6A=="
     },
     "dom-scroll-into-view": {
       "version": "2.0.1",
@@ -8457,7 +8457,7 @@
     "intersperse": {
       "version": "1.0.0",
       "resolved": "https://registry.npmjs.org/intersperse/-/intersperse-1.0.0.tgz",
-      "integrity": "sha1-8lYfsc/vn1J3zDNHoiiGtDUaUYE="
+      "integrity": "sha512-LGcfug7OTeWkaQ8PEq8XbTy9Jl6uCNg8DrPnQUmwxSY8UETj1Y+LLmpdD0qHdEj6KVchuH3BE3ZzIXQ1t3oFUw=="
     },
     "invariant": {
       "version": "2.2.4",
@@ -8663,9 +8663,9 @@
       "integrity": "sha512-wW/SXnYJkTjs++tVK5b6kVITZpAZPtUrt9SF80vvxGiF/Oywal+COk1jlRkiVq15RFNEQKQY31TkV24/1T5cVg=="
     },
     "is-negative-zero": {
-      "version": "2.0.1",
-      "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.1.tgz",
-      "integrity": "sha512-2z6JzQvZRa9A2Y7xC6dQQm4FSTSTNWjKIYYTt4246eMTJmIo0Q+ZyOsU66X8lxK1AbB92dFeglPLrhwpeRKO6w=="
+      "version": "2.0.2",
+      "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.2.tgz",
+      "integrity": "sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA=="
     },
     "is-number": {
       "version": "3.0.0",
@@ -10643,7 +10643,7 @@
     "json2mq": {
       "version": "0.2.0",
       "resolved": "https://registry.npmjs.org/json2mq/-/json2mq-0.2.0.tgz",
-      "integrity": "sha1-tje9O6nqvhIsg+lyBIOusQ0skEo=",
+      "integrity": "sha512-SzoRg7ux5DWTII9J2qkrZrqV1gt+rTaoufMxEzXbS26Uid0NwaJd123HcoB80TgubEppxxIGdNxCx50fEoEWQA==",
       "requires": {
         "string-convert": "^0.2.0"
       }
@@ -11005,11 +11005,6 @@
       "integrity": "sha1-7dFMgk4sycHgsKG0K7UhBRakJDg=",
       "dev": true
     },
-    "lodash.toarray": {
-      "version": "4.4.0",
-      "resolved": "https://registry.npmjs.org/lodash.toarray/-/lodash.toarray-4.4.0.tgz",
-      "integrity": "sha1-JMS/zWsvuji/0FlNsRedjptlZWE="
-    },
     "lodash.transform": {
       "version": "4.6.0",
       "resolved": "https://registry.npmjs.org/lodash.transform/-/lodash.transform-4.6.0.tgz",
@@ -11628,9 +11623,9 @@
       }
     },
     "nanopop": {
-      "version": "2.1.0",
-      "resolved": "https://registry.npmjs.org/nanopop/-/nanopop-2.1.0.tgz",
-      "integrity": "sha512-jGTwpFRexSH+fxappnGQtN9dspgE2ipa1aOjtR24igG0pv6JCxImIAmrLRHX+zUF5+1wtsFVbKyfP51kIGAVNw=="
+      "version": "2.2.0",
+      "resolved": "https://registry.npmjs.org/nanopop/-/nanopop-2.2.0.tgz",
+      "integrity": "sha512-E9JaHcxh3ere8/BEZHAcnuD10RluTSPyTToBvoFWS9/7DcCx6gyKjbn7M7Bx7E1veCxCuY1iO6h4+gdAf1j73Q=="
     },
     "natural-compare": {
       "version": "1.4.0",
@@ -11676,11 +11671,18 @@
       }
     },
     "node-emoji": {
-      "version": "1.10.0",
-      "resolved": "https://registry.npm.taobao.org/node-emoji/download/node-emoji-1.10.0.tgz",
-      "integrity": "sha1-iIar0l2ce7YYAqZYUj0fjSqJsto=",
+      "version": "1.11.0",
+      "resolved": "https://registry.npmjs.org/node-emoji/-/node-emoji-1.11.0.tgz",
+      "integrity": "sha512-wo2DpQkQp7Sjm2A0cq+sN7EHKO6Sl0ctXeBdFZrL9T9+UywORbufTcTZxom8YqpLQt/FqNMUkOpkZrJVYSKD3A==",
       "requires": {
-        "lodash.toarray": "^4.4.0"
+        "lodash": "^4.17.21"
+      },
+      "dependencies": {
+        "lodash": {
+          "version": "4.17.21",
+          "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz",
+          "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg=="
+        }
       }
     },
     "node-fetch": {
@@ -15087,7 +15089,7 @@
     "string-convert": {
       "version": "0.2.1",
       "resolved": "https://registry.npmjs.org/string-convert/-/string-convert-0.2.1.tgz",
-      "integrity": "sha1-aYLMMEn7tM2F+LJFaLnZvznu/5c="
+      "integrity": "sha512-u/1tdPl4yQnPBjnVrmdLo9gtuLvELKsAoRapekWggdiQNvvvum+jYF329d84NAa660KQw7pB2n36KrIKVoXa3A=="
     },
     "string-length": {
       "version": "2.0.0",

+ 1 - 1
package.json

@@ -15,7 +15,7 @@
     "postinstall": "opencollective-postinstall"
   },
   "dependencies": {
-    "ant-design-vue": "^1.7.1",
+    "ant-design-vue": "^1.7.8",
     "axios": "^0.19.0",
     "core-js": "2.6.9",
     "echarts": "^4.9.0",

BIN
public/logo1.png


BIN
public/templ/库存导入模板.xlsx


BIN
public/templ/库存预警产品导入模板.xlsx


BIN
public/templ/散件产品导入模板.xlsx


BIN
public/templ/散件入库产品导入模板.xlsx


BIN
public/templ/货位导入模板.xlsx


BIN
public/templ/采购退货申请单产品明细模板.xlsx


BIN
public/templ/销售单产品明细导入模板.xlsx


+ 1 - 1
public/version.json

@@ -1,5 +1,5 @@
 {
   "message": "发现有新版本发布,确定更新系统?",
   "vendorJsVersion": "",
-  "version": 1675239990117
+  "version": 1675821179056
 }

+ 8 - 0
src/api/allocLinkageOut.js

@@ -11,6 +11,14 @@ export const allocLinkageOutList = (params) => {
     method: 'post'
   })
 }
+// 连锁调拨调出  统计
+export const allocLinkageOutQueryCount = (params) => {
+  return axios({
+    url: `/allocLinkageOut/queryCount`,
+    data: params,
+    method: 'post'
+  })
+}
 //  连锁调拨调出   保存
 export const allocLinkageOutSave = (params) => {
   return axios({

+ 9 - 0
src/api/allocLinkagePut.js

@@ -18,6 +18,15 @@ export const allocLinkagePutList = (params) => {
     method: 'post'
   })
 }
+
+// 连锁调拨调入  统计
+export const allocLinkagePutQueryCount = (params) => {
+  return axios({
+    url: `/allocLinkagePut/queryCount`,
+    data: params,
+    method: 'post'
+  })
+}
 //  连锁调拨调入  审核
 export const allocLinkagePutAudit = (params) => {
   return axios({

+ 9 - 1
src/api/allocWarehouse.js

@@ -11,6 +11,14 @@ export const allocWarehouseList = (params) => {
     method: 'post'
   })
 }
+// 仓库调拨  统计
+export const allocWarehouseQueryCount = (params) => {
+  return axios({
+    url: `/allocWarehouse/queryCount`,
+    data: params,
+    method: 'post'
+  })
+}
 // 仓库调拨  审核
 export const allocWarehouseAudit = params => {
   return axios({
@@ -112,4 +120,4 @@ export const allocWarehouseSubmit = params => {
     data: params,
     method: 'post'
   })
-}
+}

+ 27 - 0
src/api/stockWarn.js

@@ -28,3 +28,30 @@ export const stockWarnExport = (params) => {
     responseType: 'blob'
   })
 }
+
+
+// 导入产品-导出错误
+export const stockWarnExportError = (params) => {
+  return axios({
+    url: '/stockWarn/exportError',
+    data: params,
+    method: 'post',
+    responseType: 'blob'
+  })
+}
+// 导入产品解析
+export const stockWarnProductImport = (params) => {
+  return axios({
+    url: '/stockWarn/importStockWarn',
+    data: params,
+    method: 'post'
+  })
+}
+// 导入-批量导入保存
+export const stockWarnBatchImport = (params) => {
+  return axios({
+    url: '/stockWarn/updateBatchImport',
+    data: params,
+    method: 'post'
+  })
+}

+ 8 - 0
src/api/storeCallOut.js

@@ -11,6 +11,14 @@ export const storeCallOutList = (params) => {
     method: 'post'
   })
 }
+// 店内调出  统计
+export const storeCallOutQueryCount = (params) => {
+  return axios({
+    url: `/storeCallOut/queryCount`,
+    data: params,
+    method: 'post'
+  })
+}
 //  店内调出 新增
 export const storeCallOutSave = (params) => {
   return axios({

+ 5 - 1
src/components/Table/index.js

@@ -357,13 +357,17 @@ export default {
         // 自定义属性,也就是官方文档中的props,可通过条件来控制样式
         style: {
           //  设置行背景色
-          'background-color': record[this.rowKeyName] === this.leftAlignId ? '#fff1c5' : ''
+          'background-color': record[this.rowKeyName] == this.leftAlignId ? '#fff1c5' : ''
         },
         on: {
           // 鼠标单击行
           click: event => {
             // 记录当前点击的行标识
             this.leftAlignId = record[this.rowKeyName]
+          },
+          dblclick: (event) => {
+            event.stopPropagation()
+            this.$emit('dblclick', record, index)
           }
         }
       }

+ 10 - 0
src/components/index.less

@@ -328,6 +328,16 @@
     box-shadow: 0 0 20px #dcdee2;
   }
 }
+// 确认框居中
+.confirm-center{
+  .ant-modal-confirm-body > .anticon + .ant-modal-confirm-title + .ant-modal-confirm-content{
+    margin-left:0;
+  }
+  .ant-modal-confirm-btns{
+    float: none;
+    text-align: center;
+  }
+}
 // 页签样式
 .multi-tab-con{
   .ant-tabs-nav-container{

+ 30 - 4
src/config/router.config.js

@@ -17,7 +17,7 @@ export const asyncRouterMap = [
     children: [
       {
         path: '/home',
-        name: 'home',
+        name: 'homePage',
         redirect: '/home',
         component: PageView,
         meta: {
@@ -40,7 +40,7 @@ export const asyncRouterMap = [
             children: [
               {
                 path: '/home',
-                name: 'home',
+                name: 'homeIndex',
                 component: () => import(/* webpackChunkName: "home" */ '@/views/Home'),
                 meta: {
                   title: '首页',
@@ -1624,7 +1624,8 @@ export const asyncRouterMap = [
                 name: 'inventoryWarningList',
                 component: () => import(/* webpackChunkName: "inventoryManagement" */ '@/views/inventoryManagement/inventoryWarning/list.vue'),
                 meta: {
-                  title: '库存预警',
+                  title: '库存预警列表',
+                  hidden: true,
                   icon: 'alert',
                   permission: 'M_inventoryWarningList'
                 }
@@ -2834,7 +2835,7 @@ export const asyncRouterMap = [
           {
             path: '/productManagement/newProductList',
             redirect: '/newProduct/list/:onlineFalg',
-            name: 'newProductList',
+            name: 'newProduct',
             component: BlankLayout,
             meta: {
               title: '产品信息',
@@ -3207,6 +3208,31 @@ export const asyncRouterMap = [
               }
             ]
           }
+          // {
+          //   path: '/basicData/systemSettings',
+          //   redirect: '/basicData/systemSettings/index',
+          //   name: 'systemSettings',
+          //   component: BlankLayout,
+          //   meta: {
+          //     title: '系统参数',
+          //     icon: 'sound',
+          //     permission: 'M_systemSettingsList'
+          //   },
+          //   hideChildrenInMenu: true,
+          //   children: [
+          //     {
+          //       path: 'index',
+          //       name: 'systemSettingsList',
+          //       component: () => import(/* webpackChunkName: "basicData" */ '@/views/basicData/systemSettings/index.vue'),
+          //       meta: {
+          //         title: '系统参数',
+          //         icon: 'sound',
+          //         hidden: true,
+          //         permission: 'M_systemSettingsList'
+          //       }
+          //     }
+          //   ]
+          // }
         ]
       },
       // auth

+ 74 - 71
src/core/directives/dragModal.js

@@ -12,81 +12,84 @@ const dragModal = Vue.directive('drag', (el, binding, vnode, oldVnode) => {
   // inserted (el, binding, vnode, oldVnode) {
   Vue.nextTick(() => {
     const isThemeModal = el.classList.contains('grid-theme')
-    const dialogHeaderEl = isThemeModal ? el.querySelector('.ant-tabs-bar') : document.querySelector('.ant-modal-header')
-    const dragDom = isThemeModal ? el.querySelector('.ant-modal') : document.querySelector('.ant-modal')
-    // dialogHeaderEl.style.cursor = 'move';
-    dialogHeaderEl.style.cssText += ';cursor:move;'
-    // dragDom.style.cssText += ';top:0px;'
-    
-    // 获取原有属性 ie dom元素.currentStyle 火狐谷歌 window.getComputedStyle(dom元素, null);
-    const sty = (function () {
-      if (window.document.currentStyle) {
-        return (dom, attr) => dom.currentStyle[attr]
-      } else {
-        return (dom, attr) => getComputedStyle(dom, false)[attr]
-      }
-    })()
-
-    dialogHeaderEl.onmousedown = (e) => {
-      // 鼠标按下,计算当前元素距离可视区的距离
-      const disX = e.clientX - dialogHeaderEl.offsetLeft
-      const disY = e.clientY - dialogHeaderEl.offsetTop
-
-      const screenWidth = document.body.clientWidth // body当前宽度
-      const screenHeight = document.documentElement.clientHeight // 可见区域高度(应为body高度,可某些环境下无法获取)
-
-      const dragDomWidth = dragDom.offsetWidth // 对话框宽度
-      const dragDomheight = dragDom.offsetHeight // 对话框高度
-
-      const minDragDomLeft = dragDom.offsetLeft
-      const maxDragDomLeft = screenWidth - dragDom.offsetLeft - dragDomWidth - (isThemeModal ? 10 : 0)
-
-      const minDragDomTop = dragDom.offsetTop
-      const maxDragDomTop = screenHeight - dragDom.offsetTop - dragDomheight - (isThemeModal ? 10 : 0)
-
-      // 获取到的值带px 正则匹配替换
-      let styL = sty(dragDom, 'left')
-      let styT = sty(dragDom, 'top')
-
-      // 注意在ie中 第一次获取到的值为组件自带50% 移动之后赋值为px
-      if (styL.includes('%')) {
-        // eslint-disable-next-line no-useless-escape
-        styL = +document.body.clientWidth * (+styL.replace(/\%/g, '') / 100)
-        // eslint-disable-next-line no-useless-escape
-        styT = +document.body.clientHeight * (+styT.replace(/\%/g, '') / 100)
-      } else {
-        styL = +styL.replace(/\px/g, '')
-        styT = +styT.replace(/\px/g, '')
-      };
-
-      document.onmousemove = function (e) {
-        // 通过事件委托,计算移动的距离
-        let left = e.clientX - disX
-        let top = e.clientY - disY
-
-        // 边界处理
-        if (-(left) > minDragDomLeft) {
-          left = -(minDragDomLeft)
-        } else if (left > maxDragDomLeft) {
-          left = maxDragDomLeft
+    const dialogHeaderEl = isThemeModal ? el.querySelector('.ant-tabs-bar') : el.querySelector('.ant-modal-header')
+    const dragDom = isThemeModal ? el.querySelector('.ant-modal') : el.querySelector('.ant-modal')
+    if(dialogHeaderEl){
+      // dialogHeaderEl.style.cursor = 'move';
+      dialogHeaderEl.style.cssText += ';cursor:move;user-select:none;'
+      // dragDom.style.cssText += ';top:0px;'
+      dragDom.style.cssText += `;left:0px;top:0px;`
+      // 获取原有属性 ie dom元素.currentStyle 火狐谷歌 window.getComputedStyle(dom元素, null);
+      const sty = (function () {
+        if (window.document.currentStyle) {
+          return (dom, attr) => dom.currentStyle[attr]
+        } else {
+          return (dom, attr) => getComputedStyle(dom, false)[attr]
         }
-
-        if (-(top) > minDragDomTop) {
-          top = -(minDragDomTop)
-        } else if (top > maxDragDomTop) {
-          top = maxDragDomTop
+      })()
+      
+      dialogHeaderEl.onmousedown = (e) => {
+        // 鼠标按下,计算当前元素距离可视区的距离
+        const disX = e.clientX - dialogHeaderEl.offsetLeft
+        const disY = e.clientY - dialogHeaderEl.offsetTop
+      
+        const screenWidth = document.body.clientWidth // body当前宽度
+        const screenHeight = document.documentElement.clientHeight // 可见区域高度(应为body高度,可某些环境下无法获取)
+      
+        const dragDomWidth = dragDom.offsetWidth // 对话框宽度
+        const dragDomheight = dragDom.offsetHeight // 对话框高度
+      
+        const minDragDomLeft = dragDom.offsetLeft
+        const maxDragDomLeft = screenWidth - dragDom.offsetLeft - dragDomWidth - (isThemeModal ? 10 : 0)
+      
+        const minDragDomTop = dragDom.offsetTop
+        const maxDragDomTop = screenHeight - dragDom.offsetTop - dragDomheight - (isThemeModal ? 10 : 0)
+      
+        // 获取到的值带px 正则匹配替换
+        let styL = sty(dragDom, 'left')
+        let styT = sty(dragDom, 'top')
+        
+        // 注意在ie中 第一次获取到的值为组件自带50% 移动之后赋值为px
+        if (styL.includes('%')) {
+          // eslint-disable-next-line no-useless-escape
+          styL = +document.body.clientWidth * (+styL.replace(/\%/g, '') / 100)
+          // eslint-disable-next-line no-useless-escape
+          styT = +document.body.clientHeight * (+styT.replace(/\%/g, '') / 100)
+        } else {
+          styL = +styL.replace(/\px/g, '')
+          styT = +styT.replace(/\px/g, '')
+        };
+      
+        document.onmousemove = function (e) {
+          // 通过事件委托,计算移动的距离
+          let left = e.clientX - disX
+          let top = e.clientY - disY
+      
+          // 边界处理
+          if (-(left) > minDragDomLeft) {
+            left = -(minDragDomLeft)
+          } else if (left > maxDragDomLeft) {
+            left = maxDragDomLeft
+          }
+      
+          if (-(top) > minDragDomTop) {
+            top = -(minDragDomTop)
+          } else if (top > maxDragDomTop) {
+            top = maxDragDomTop
+          }
+          // 移动当前元素
+          dragDom.style.cssText += `;left:${left + styL}px;top:${top + styT}px;`
         }
-        // 移动当前元素
-        dragDom.style.cssText += `;left:${left + styL}px;top:${top + styT}px;`
-      }
-
-      document.onmouseup = function (e) {
-        document.onmousemove = null
-        document.onmouseup = null
-        dragDom.releaseCapture && dragDom.releaseCapture();
+      
+        document.onmouseup = function (e) {
+          document.onmousemove = null
+          document.onmouseup = null
+          dragDom.releaseCapture && dragDom.releaseCapture();
+        }
+         dragDom.setCapture && dragDom.setCapture();
       }
-       dragDom.setCapture && dragDom.setCapture();
     }
+    
   })
 })
 

+ 4 - 3
src/views/allocationManagement/chainTransferIn/detail.vue

@@ -38,7 +38,7 @@
             总款数 <strong>{{ (productTotal&&(productTotal.productTotalCategory || productTotal.productTotalCategory==0)) ? productTotal.productTotalCategory : '--' }}</strong> ,
             总数量 <strong>{{ (productTotal&&(productTotal.productTotalQty || productTotal.productTotalQty==0)) ? productTotal.productTotalQty : '--' }}</strong>
             <div style="display: inline-block;" v-if="$hasPermissions('M_ShowAllCost')">
-              ,总成本 <strong>{{ (productTotal&&(productTotal.productTotalCost || productTotal.productTotalCost==0)) ? '¥'+productTotal.productTotalCost : '--' }}</strong>
+              ,总成本  <strong>{{ (productTotal&&(productTotal.productTotalCost || productTotal.productTotalCost==0)) ? toThousands(productTotal.productTotalCost,2) : '--' }}</strong>
             </div>
           </div>
         </a-alert>
@@ -109,6 +109,7 @@ export default {
       return (this.basicInfoData && this.basicInfoData.state == 'WAIT_AUDIT' && this.$hasPermissions('B_allocLinkagePutEdit'))
     },
     columns () {
+      const _this = this
       const arr = [
         { title: '序号', dataIndex: 'no', width: '4%', align: 'center' },
         { title: '产品编码', dataIndex: 'productCode', width: '14%', align: 'center', customRender: function (text) { return text || '--' } },
@@ -122,8 +123,8 @@ export default {
         { title: '仓位', dataIndex: 'warehouseLocationName', width: '10%', align: 'center', customRender: function (text) { return text || '--' } }
       ]
       if (this.$hasPermissions('M_ShowAllCost')) {
-        arr.splice(4, 0, { title: '成本价', dataIndex: 'putCost', width: '9%', align: 'center', customRender: function (text) { return ((text || text == 0) ? text : '--') } })
-        arr.splice(7, 0, { title: '成本小计', dataIndex: 'costSubtotal', width: '9%', align: 'center', customRender: function (text) { return ((text || text == 0) ? text : '--') } })
+        arr.splice(4, 0, { title: '成本价', dataIndex: 'putCost', width: '9%', align: 'right', customRender: function (text) { return ((text || text == 0) ? _this.toThousands(text, 2) : '--') } })
+        arr.splice(7, 0, { title: '成本小计', dataIndex: 'costSubtotal', width: '9%', align: 'right', customRender: function (text) { return ((text || text == 0) ? _this.toThousands(text, 2) : '--') } })
       }
       return arr
     }

+ 4 - 3
src/views/allocationManagement/chainTransferIn/edit.vue

@@ -31,7 +31,7 @@
             总款数 <strong>{{ (basicInfoData&&(basicInfoData.productTotalCategory || basicInfoData.productTotalCategory==0)) ? basicInfoData.productTotalCategory : '--' }}</strong> ,
             总数量 <strong>{{ (basicInfoData&&(basicInfoData.productTotalQty || basicInfoData.productTotalQty==0)) ? basicInfoData.productTotalQty : '--' }}</strong>
             <div style="display: inline-block;" v-if="$hasPermissions('M_ShowAllCost')">
-              ,总成本 <strong>{{ (basicInfoData&&(basicInfoData.productTotalCost || basicInfoData.productTotalCost==0)) ? '¥'+basicInfoData.productTotalCost : '--' }}</strong>
+              ,总成本 <strong>{{ (basicInfoData&&(basicInfoData.productTotalCost || basicInfoData.productTotalCost==0)) ? toThousands(basicInfoData.productTotalCost,2) : '--' }}</strong>
             </div>
           </div>
         </a-alert>
@@ -177,6 +177,7 @@ export default {
   },
   computed: {
     columns () {
+      const _this = this
       const arr = [
         { title: '序号', dataIndex: 'no', width: '4%', align: 'center' },
         { title: '产品编码', dataIndex: 'productCode', width: '13%', align: 'center', customRender: function (text) { return text || '--' } },
@@ -189,8 +190,8 @@ export default {
         { title: '仓库仓位', scopedSlots: { customRender: 'warehouse' }, width: '16%', align: 'center' }
       ]
       if (this.$hasPermissions('M_ShowAllCost')) {
-        arr.splice(4, 0, { title: '成本价', dataIndex: 'putCost', width: '10%', align: 'center', customRender: function (text) { return ((text || text == 0) ? text : '--') } })
-        arr.splice(7, 0, { title: '成本小计', dataIndex: 'costSubtotal', width: '10%', align: 'center', customRender: function (text) { return ((text || text == 0) ? text : '--') } })
+        arr.splice(4, 0, { title: '成本价', dataIndex: 'putCost', width: '10%', align: 'right', customRender: function (text) { return ((text || text == 0) ? _this.toThousands(text, 2) : '--') } })
+        arr.splice(7, 0, { title: '成本小计', dataIndex: 'costSubtotal', width: '10%', align: 'right', customRender: function (text) { return ((text || text == 0) ? _this.toThousands(text, 2) : '--') } })
       }
       return arr
     }

+ 28 - 4
src/views/allocationManagement/chainTransferIn/list.vue

@@ -61,6 +61,16 @@
           </a-row>
         </a-form>
       </div>
+      <!-- 统计 -->
+      <a-alert type="info" style="margin-bottom:10px">
+        <div slot="message">
+          总款数: <strong>{{ countData&&(countData.productTotalCategory || countData.productTotalCategory==0) ? countData.productTotalCategory : '--' }}</strong> ,
+          总数量: <strong>{{ countData&&(countData.productTotalQty || countData.productTotalQty==0) ? countData.productTotalQty : '--' }}</strong>
+          <div style="display: inline-block;" v-if="$hasPermissions('M_ShowAllCost')">
+            ,总成本: <strong>{{ countData&&(countData.productTotalCost || countData.productTotalCost==0) ? toThousands(countData.productTotalCost,2) : '--' }}</strong>
+          </div>
+        </div>
+      </a-alert>
       <!-- 列表 -->
       <s-table
         class="sTable fixPagination"
@@ -125,7 +135,7 @@ import { commonMixin } from '@/utils/mixin'
 import { STable, VSelect } from '@/components'
 import { formatDecimal } from '@/libs/tools'
 import rangeDate from '@/views/common/rangeDate.vue'
-import { allocLinkagePutList, allocLinkagePutAudit } from '@/api/allocLinkagePut'
+import { allocLinkagePutList, allocLinkagePutAudit, allocLinkagePutQueryCount } from '@/api/allocLinkagePut'
 import getTenantList from '@/views/common/getTenantList.js'
 import stateIcon from '@/views/common/stateIcon'
 export default {
@@ -146,14 +156,17 @@ export default {
         settleState: undefined
       },
       disabled: false, //  查询、重置按钮是否可操作
+      countData: null, // 统计
       // 加载数据方法 必须为 Promise 对象
       loadData: parameter => {
         this.disabled = true
         this.spinning = true
-        return allocLinkagePutList(Object.assign(parameter, this.queryParam)).then(res => {
+        const params = Object.assign(parameter, this.queryParam)
+        return allocLinkagePutList(params).then(res => {
           let data
           if (res.status == 200) {
             data = res.data
+            this.getCount(params)
             const no = (data.pageNo - 1) * data.pageSize
 
             for (var i = 0; i < data.list.length; i++) {
@@ -166,11 +179,12 @@ export default {
           this.spinning = false
           return data
         })
-      },
+      }
     }
   },
   computed: {
     columns () {
+      const _this = this
       const arr = [
         { title: '序号', dataIndex: 'no', width: '4%', align: 'center' },
         { title: '创建时间', dataIndex: 'createDate', width: '11%', align: 'center', customRender: function (text) { return text || '--' } },
@@ -189,12 +203,22 @@ export default {
         { title: '操作', scopedSlots: { customRender: 'action' }, width: '8%', align: 'center' }
       ]
       if (this.$hasPermissions('M_ShowAllCost')) {
-        arr.splice(6, 0, { title: '总成本', dataIndex: 'productTotalCost', width: '6%', align: 'center', customRender: function (text) { return ((text || text == 0) ? text : '--') } })
+        arr.splice(6, 0, { title: '总成本', dataIndex: 'productTotalCost', width: '6%', align: 'right', customRender: function (text) { return ((text || text == 0) ? _this.toThousands(text, 2) : '--') } })
       }
       return arr
     }
   },
   methods: {
+    // 统计
+    getCount (params) {
+      allocLinkagePutQueryCount(params).then(res => {
+        if (res.status == 200) {
+          this.countData = res.data
+        } else {
+          this.countData = null
+        }
+      })
+    },
     //  时间  change
     dateChange (date) {
       this.queryParam.beginDate = date[0]

+ 4 - 3
src/views/allocationManagement/chainTransferOut/detail.vue

@@ -42,7 +42,7 @@
                 总款数 <strong>{{ (productTotal&&(productTotal.productTotalCategory || productTotal.productTotalCategory==0)) ? productTotal.productTotalCategory : '--' }}</strong> ,
                 总数量 <strong>{{ (productTotal&&(productTotal.productTotalQty || productTotal.productTotalQty==0)) ? productTotal.productTotalQty : '--' }}</strong>
                 <div style="display: inline-block;" v-if="$hasPermissions('M_ShowAllCost')">
-                  ,总成本 <strong>{{ (productTotal&&(productTotal.productTotalCost || productTotal.productTotalCost==0)) ? '¥'+productTotal.productTotalCost : '--' }}</strong>
+                  ,总成本 <strong>{{ (productTotal&&(productTotal.productTotalCost || productTotal.productTotalCost==0)) ? toThousands(productTotal.productTotalCost,2) : '--' }}</strong>
                 </div>
               </div>
             </a-alert>
@@ -115,6 +115,7 @@ export default {
       return ((this.basicInfoData && this.basicInfoData.state == 'WAIT_SUBMIT') || (this.basicInfoData && this.basicInfoData.state == 'WAIT_AUDIT')) && this.$hasPermissions('B_allocLinkageOutEdit')
     },
     columns () {
+      const _this = this
       const arr = [
         { title: '序号', dataIndex: 'no', width: '4%', align: 'center' },
         { title: '产品编码', dataIndex: 'dealerProductEntity.code', width: '20%', align: 'center', customRender: function (text) { return text || '--' } },
@@ -126,8 +127,8 @@ export default {
         // { title: '成本小计(¥)', dataIndex: 'costSubtotal', width: '9%', align: 'center', customRender: function (text) { return ((text || text == 0) ? text : '--') } }
       ]
       if (this.$hasPermissions('M_ShowAllCost')) {
-        arr.splice(4, 0, { title: '成本价', dataIndex: 'outCost', width: '9%', align: 'center', customRender: function (text) { return ((text || text == 0) ? text : '--') } })
-        arr.splice(7, 0, { title: '成本小计(¥)', dataIndex: 'costSubtotal', width: '9%', align: 'center', customRender: function (text) { return ((text || text == 0) ? text : '--') } })
+        arr.splice(4, 0, { title: '成本价', dataIndex: 'outCost', width: '9%', align: 'right', customRender: function (text) { return ((text || text == 0) ? _this.toThousands(text, 2) : '--') } })
+        arr.splice(7, 0, { title: '成本小计(¥)', dataIndex: 'costSubtotal', width: '9%', align: 'right', customRender: function (text) { return ((text || text == 0) ? _this.toThousands(text, 2) : '--') } })
       }
       return arr
     }

+ 16 - 20
src/views/allocationManagement/chainTransferOut/edit.vue

@@ -13,7 +13,7 @@
         </template>
       </a-page-header>
       <!-- 选择产品 -->
-      <a-card size="small" :bordered="false" class="chainTransferOutEdit-cont">
+      <div class="chainTransferOutEdit-cont">
         <a-collapse :activeKey="['1']">
           <a-collapse-panel key="1" header="选择产品">
             <!-- 筛选条件 -->
@@ -70,12 +70,13 @@
               class="sTable"
               ref="table"
               size="small"
-              :rowKey="(record) => record.stockSn+record.productSn+record.warehouseSn+record.warehouseLocationSn"
+              :rowKey="(record) => record.stockDetailSn"
+              rowKeyName="stockDetailSn"
               :columns="columns"
-              :customRow="handleClickRow"
+              @dblclick="handleClickRow"
               :data="loadData"
               :defaultLoadData="false"
-              :scroll="{ y: 300 }"
+              :scroll="{ y: 200 }"
               bordered>
               <!-- 调出数量 -->
               <template slot="outQty" slot-scope="text, record">
@@ -93,14 +94,14 @@
               </template>
               <!-- 操作 -->
               <template slot="action" slot-scope="text, record">
-                <a-button size="small" type="link" class="button-primary" @click.stop="handleAdd(record)" id="chainTransferOutEdit-add-btn">添加</a-button>
+                <a-button size="small" type="link" class="button-primary" @click="handleAdd(record)" id="chainTransferOutEdit-add-btn">添加</a-button>
               </template>
             </s-table>
           </a-collapse-panel>
         </a-collapse>
-      </a-card>
+      </div>
       <!-- 已选产品 -->
-      <a-card size="small" :bordered="false" class="chainTransferOutEdit-cont">
+      <div class="chainTransferOutEdit-cont">
         <a-collapse :activeKey="['1']">
           <a-collapse-panel key="1" header="已选产品">
             <!-- 总计 -->
@@ -109,7 +110,7 @@
                 总款数 <strong>{{ (productTotal&&(productTotal.productTotalCategory || productTotal.productTotalCategory==0)) ? productTotal.productTotalCategory : '--' }}</strong> ,
                 总数量 <strong>{{ (productTotal&&(productTotal.productTotalQty || productTotal.productTotalQty==0)) ? productTotal.productTotalQty : '--' }}</strong>
                 <div style="display: inline-block;" v-if="$hasPermissions('M_ShowAllCost')">
-                  ,总成本 <strong>{{ (productTotal&&(productTotal.productTotalCost || productTotal.productTotalCost==0)) ? '¥'+productTotal.productTotalCost : '--' }}</strong>
+                  ,总成本 <strong>{{ (productTotal&&(productTotal.productTotalCost || productTotal.productTotalCost==0)) ? toThousands(productTotal.productTotalCost,2) : '--' }}</strong>
                 </div>
               </div>
             </a-alert>
@@ -160,7 +161,7 @@
             </s-table>
           </a-collapse-panel>
         </a-collapse>
-      </a-card>
+      </div>
     </a-spin>
     <div class="affix-cont">
       <a-button
@@ -253,6 +254,7 @@ export default {
   },
   computed: {
     columns () {
+      const _this = this
       const arr = [
         { title: '序号', dataIndex: 'no', width: '4%', align: 'center' },
         { title: '产品编码', dataIndex: 'productCode', width: '13%', align: 'center', customRender: function (text) { return text || '--' } },
@@ -268,11 +270,12 @@ export default {
         { title: '操作', scopedSlots: { customRender: 'action' }, width: '8%', align: 'center' }
       ]
       if (this.$hasPermissions('M_ShowAllCost')) {
-        arr.splice(7, 0, { title: '成本价', dataIndex: 'putCost', width: '6%', align: 'center', customRender: function (text) { return ((text || text == 0) ? text : '--') } })
+        arr.splice(7, 0, { title: '成本价', dataIndex: 'putCost', width: '6%', align: 'right', customRender: function (text) { return ((text || text == 0) ? _this.toThousands(text, 2) : '--') } })
       }
       return arr
     },
     chooseColumns () {
+      const _this = this
       const arr = [
         { title: '序号', dataIndex: 'no', width: '4%', align: 'center' },
         { title: '产品编码', dataIndex: 'dealerProductEntity.code', width: '15%', align: 'center', customRender: function (text) { return text || '--' } },
@@ -288,8 +291,8 @@ export default {
         { title: '操作', scopedSlots: { customRender: 'action' }, width: '8%', align: 'center' }
       ]
       if (this.$hasPermissions('M_ShowAllCost')) {
-        arr.splice(8, 0, { title: '成本价', dataIndex: 'outCost', width: '6%', align: 'center', customRender: function (text) { return ((text || text == 0) ? text : '--') } })
-        arr.splice(10, 0, { title: '成本小计', dataIndex: 'costSubtotal', width: '6%', align: 'center', customRender: function (text) { return ((text || text == 0) ? text : '--') } })
+        arr.splice(8, 0, { title: '成本价', dataIndex: 'outCost', width: '6%', align: 'right', customRender: function (text) { return ((text || text == 0) ? _this.toThousands(text, 2) : '--') } })
+        arr.splice(10, 0, { title: '成本小计', dataIndex: 'costSubtotal', width: '6%', align: 'right', customRender: function (text) { return ((text || text == 0) ? _this.toThousands(text, 2) : '--') } })
       }
       return arr
     }
@@ -319,14 +322,7 @@ export default {
     },
     // 双击快速添加
     handleClickRow (record) {
-      return {
-        on: {
-          dblclick: (event) => {
-            event.stopPropagation()
-            this.handleAdd(record)
-          }
-        }
-      }
+      this.handleAdd(record)
     },
     // 基本信息
     getDetail () {

+ 28 - 4
src/views/allocationManagement/chainTransferOut/list.vue

@@ -75,6 +75,16 @@
       <div class="table-operator">
         <a-button id="chainTransferOutList-add" v-if="$hasPermissions('B_allocLinkageOutNew')" type="primary" class="button-error" @click="openModal=true">新增</a-button>
       </div>
+      <!-- 统计 -->
+      <a-alert type="info" style="margin-bottom:10px">
+        <div slot="message">
+          总款数: <strong>{{ countData&&(countData.productTotalCategory || countData.productTotalCategory==0) ? countData.productTotalCategory : '--' }}</strong> ,
+          总数量: <strong>{{ countData&&(countData.productTotalQty || countData.productTotalQty==0) ? countData.productTotalQty : '--' }}</strong>
+          <div style="display: inline-block;" v-if="$hasPermissions('M_ShowAllCost')">
+            ,总成本: <strong>{{ countData&&(countData.productTotalCost || countData.productTotalCost==0) ? toThousands(countData.productTotalCost,2) : '--' }}</strong>
+          </div>
+        </div>
+      </a-alert>
       <!-- 列表 -->
       <s-table
         class="sTable fixPagination"
@@ -151,7 +161,7 @@ import basicInfoModal from './basicInfoModal.vue'
 import stateIcon from '@/views/common/stateIcon'
 import getDate from '@/libs/getDate.js'
 import getTenantList from '@/views/common/getTenantList.js'
-import { allocLinkageOutList, allocLinkageAudit, allocLinkageOutDel, allocLinkageOutStock } from '@/api/allocLinkageOut'
+import { allocLinkageOutList, allocLinkageAudit, allocLinkageOutDel, allocLinkageOutStock, allocLinkageOutQueryCount } from '@/api/allocLinkageOut'
 export default {
   name: 'AllocLinkageOutList',
   components: { STable, VSelect, basicInfoModal, rangeDate, stateIcon, getTenantList },
@@ -184,10 +194,12 @@ export default {
       loadData: parameter => {
         this.disabled = true
         this.spinning = true
-        return allocLinkageOutList(Object.assign(parameter, this.queryParam)).then(res => {
+        const params = Object.assign(parameter, this.queryParam)
+        return allocLinkageOutList(params).then(res => {
           let data
           if (res.status == 200) {
             data = res.data
+            this.getCount(params)
             const no = (data.pageNo - 1) * data.pageSize
             for (var i = 0; i < data.list.length; i++) {
               data.list[i].no = no + i + 1
@@ -199,11 +211,13 @@ export default {
         })
       },
       openModal: false, //  新增编辑  弹框
-      itemId: '' //  当前品牌id
+      itemId: '', //  当前品牌id
+      countData: null // 统计
     }
   },
   computed: {
     columns () {
+      const _this = this
       const arr = [
         { title: '序号', dataIndex: 'no', width: '4%', align: 'center' },
         { title: '创建时间', dataIndex: 'createDate', width: '11%', align: 'center', customRender: function (text) { return text || '--' } },
@@ -222,12 +236,22 @@ export default {
         { title: '操作', scopedSlots: { customRender: 'action' }, width: '8%', align: 'center' }
       ]
       if (this.$hasPermissions('M_ShowAllCost')) {
-        arr.splice(6, 0, { title: '总成本', dataIndex: 'productTotalCost', width: '5%', align: 'center', customRender: function (text) { return ((text || text == 0) ? text : '--') } })
+        arr.splice(6, 0, { title: '总成本', dataIndex: 'productTotalCost', width: '5%', align: 'right', customRender: function (text) { return ((text || text == 0) ? _this.toThousands(text, 2) : '--') } })
       }
       return arr
     }
   },
   methods: {
+    // 统计
+    getCount (params) {
+      allocLinkageOutQueryCount(params).then(res => {
+        if (res.status == 200) {
+          this.countData = res.data
+        } else {
+          this.countData = null
+        }
+      })
+    },
     //  时间  change
     dateChange (date) {
       this.queryParam.beginDate = date[0]

+ 3 - 2
src/views/allocationManagement/storeTransferOut/detail.vue

@@ -40,7 +40,7 @@
             总款数 <strong>{{ (productTotal&&(productTotal.productTotalCategory || productTotal.productTotalCategory==0)) ? productTotal.productTotalCategory : '--' }}</strong> ,
             总数量 <strong>{{ (productTotal&&(productTotal.productTotalQty || productTotal.productTotalQty==0)) ? productTotal.productTotalQty : '--' }}</strong>
             <div style="display: inline-block;" v-if="$hasPermissions('M_ShowAllCost')">
-              ,总成本 <strong>{{ (productTotal&&(productTotal.productTotalCost || productTotal.productTotalCost==0)) ? '¥'+productTotal.productTotalCost : '--' }}</strong>
+              ,总成本 <strong>{{ (productTotal&&(productTotal.productTotalCost || productTotal.productTotalCost==0)) ? toThousands(productTotal.productTotalCost, 2) : '--' }}</strong>
             </div>
           </div>
         </a-alert>
@@ -126,6 +126,7 @@ export default {
       return ((this.basicInfoData && this.basicInfoData.state == 'WAIT_SUBMIT') || (this.basicInfoData && this.basicInfoData.state == 'WAIT_AUDIT')) && this.$hasPermissions('B_storeCallOutEdit')
     },
     columns () {
+      const _this = this
       const arr = [
         { title: '序号', dataIndex: 'no', width: '4%', align: 'center' },
         { title: '产品编码', dataIndex: 'productCode', width: '22%', align: 'center', customRender: function (text) { return text || '--' } },
@@ -139,7 +140,7 @@ export default {
         { title: '操作', scopedSlots: { customRender: 'action' }, width: '8%', align: 'center' }
       ]
       if (this.$hasPermissions('M_ShowAllCost')) {
-        arr.splice(6, 0, { slots: { title: 'costTitle' }, dataIndex: 'totalOutCost', width: '8%', align: 'center', customRender: function (text) { return ((text || text == 0) ? text : '--') } })
+        arr.splice(6, 0, { slots: { title: 'costTitle' }, dataIndex: 'totalOutCost', width: '8%', align: 'right', customRender: function (text) { return ((text || text == 0) ? _this.toThousands(text, 2) : '--') } })
       }
       return arr
     }

+ 15 - 19
src/views/allocationManagement/storeTransferOut/edit.vue

@@ -14,7 +14,7 @@
         </template>
       </a-page-header>
       <!-- 选择产品 -->
-      <a-card size="small" :bordered="false" class="storeTransferOutEdit-cont">
+      <div class="storeTransferOutEdit-cont">
         <a-collapse :activeKey="['1']">
           <a-collapse-panel key="1" header="选择产品">
             <!-- 筛选条件 -->
@@ -66,11 +66,12 @@
               class="sTable"
               ref="table"
               size="small"
-              :rowKey="(record) => record.stockSn+record.productSn+record.warehouseSn+record.warehouseLocationSn"
+              :rowKey="(record) => record.stockDetailSn"
+              rowKeyName="stockDetailSn"
               :columns="columns"
-              :customRow="handleClickRow"
+              @dblclick="handleClickRow"
               :data="loadData"
-              :scroll="{ y: 300 }"
+              :scroll="{ y: 200 }"
               :defaultLoadData="false"
               bordered>
               <div slot="costTitle">
@@ -103,16 +104,16 @@
                   v-if="record.currentQty"
                   type="link"
                   class="button-primary"
-                  @click.stop="handleAdd(record)"
+                  @click="handleAdd(record)"
                   id="storeTransferOutEdit-add-btn">添加</a-button>
                 <span v-else>--</span>
               </template>
             </s-table>
           </a-collapse-panel>
         </a-collapse>
-      </a-card>
+      </div>
       <!-- 已选产品 -->
-      <a-card size="small" :bordered="false" class="storeTransferOutEdit-cont">
+      <div class="storeTransferOutEdit-cont">
         <a-collapse :activeKey="['1']">
           <a-collapse-panel key="1" header="已选产品">
             <!-- 总计 -->
@@ -121,7 +122,7 @@
                 总款数 <strong>{{ (productTotal&&(productTotal.productTotalCategory || productTotal.productTotalCategory==0)) ? productTotal.productTotalCategory : '--' }}</strong> ,
                 总数量 <strong>{{ (productTotal&&(productTotal.productTotalQty || productTotal.productTotalQty==0)) ? productTotal.productTotalQty : '--' }}</strong>
                 <div style="display: inline-block;" v-if="$hasPermissions('M_ShowAllCost')">
-                  ,总成本 <strong>{{ (productTotal&&(productTotal.productTotalCost || productTotal.productTotalCost==0)) ? '¥'+productTotal.productTotalCost : '--' }}</strong>
+                  ,总成本 <strong>{{ (productTotal&&(productTotal.productTotalCost || productTotal.productTotalCost==0)) ? toThousands(productTotal.productTotalCost,2) : '--' }}</strong>
                 </div>
               </div>
             </a-alert>
@@ -195,7 +196,7 @@
         </a-collapse>
         <!-- 出入库明细 -->
         <outInDetialModal ref="outInDetialModal" outBizType="SHOP_CALL_OUT" :openModal="showOutInModal" @close="showOutInModal=false"></outInDetialModal>
-      </a-card>
+      </div>
     </a-spin>
     <div class="affix-cont">
       <a-button
@@ -292,6 +293,7 @@ export default {
   },
   computed: {
     columns () {
+      const _this = this
       const arr = [
         { title: '序号', dataIndex: 'no', width: '4%', align: 'center' },
         { title: '产品编码', dataIndex: 'productCode', width: '18%', align: 'center', customRender: function (text) { return text || '--' } },
@@ -305,11 +307,12 @@ export default {
         { title: '操作', scopedSlots: { customRender: 'action' }, width: '8%', align: 'center' }
       ]
       if (this.$hasPermissions('M_ShowAllCost')) {
-        arr.splice(7, 0, { slots: { title: 'costTitle' }, dataIndex: 'putCost', width: '8%', align: 'center', customRender: function (text) { return ((text || text == 0) ? text : '--') } })
+        arr.splice(7, 0, { slots: { title: 'costTitle' }, dataIndex: 'putCost', width: '8%', align: 'right', customRender: function (text) { return ((text || text == 0) ? _this.toThousands(text, 2) : '--') } })
       }
       return arr
     },
     chooseColumns () {
+      const _this = this
       const arr = [
         { title: '序号', dataIndex: 'no', width: '4%', align: 'center' },
         { title: '产品编码', dataIndex: 'productCode', width: '16%', align: 'center', customRender: function (text) { return text || '--' } },
@@ -323,7 +326,7 @@ export default {
         { title: '操作', scopedSlots: { customRender: 'action' }, width: '8%', align: 'center' }
       ]
       if (this.$hasPermissions('M_ShowAllCost')) {
-        arr.splice(7, 0, { slots: { title: 'costTitle' }, dataIndex: 'totalOutCost', width: '8%', align: 'center', customRender: function (text) { return ((text || text == 0) ? text : '--') } })
+        arr.splice(7, 0, { slots: { title: 'costTitle' }, dataIndex: 'totalOutCost', width: '8%', align: 'right', customRender: function (text) { return ((text || text == 0) ? _this.toThousands(text, 2) : '--') } })
       }
       return arr
     }
@@ -354,14 +357,7 @@ export default {
     },
     // 双击快速添加
     handleClickRow (record) {
-      return {
-        on: {
-          dblclick: (event) => {
-            event.stopPropagation()
-            this.handleAdd(record)
-          }
-        }
-      }
+      this.handleAdd(record)
     },
     // 已选产品  重置
     chooseResetSearchForm () {

+ 28 - 4
src/views/allocationManagement/storeTransferOut/list.vue

@@ -73,6 +73,16 @@
       <div class="table-operator">
         <a-button id="storeTransferOutList-add" v-if="$hasPermissions('B_storeTransferOutNews')" type="primary" class="button-error" @click="openModal=true">新增</a-button>
       </div>
+      <!-- 统计 -->
+      <a-alert type="info" style="margin-bottom:10px">
+        <div slot="message">
+          总款数: <strong>{{ countData&&(countData.productTotalCategory || countData.productTotalCategory==0) ? countData.productTotalCategory : '--' }}</strong> ,
+          总数量: <strong>{{ countData&&(countData.productTotalQty || countData.productTotalQty==0) ? countData.productTotalQty : '--' }}</strong>
+          <div style="display: inline-block;" v-if="$hasPermissions('M_ShowAllCost')">
+            ,总成本: <strong>{{ countData&&(countData.productTotalCost) ? toThousands(countData.productTotalCost,2) : '--' }}</strong>
+          </div>
+        </div>
+      </a-alert>
       <!-- 列表 -->
       <s-table
         class="sTable fixPagination"
@@ -148,7 +158,7 @@ import rangeDate from '@/views/common/rangeDate.vue'
 import getDate from '@/libs/getDate.js'
 import basicInfoModal from './basicInfoModal.vue'
 import stateIcon from '@/views/common/stateIcon'
-import { storeCallOutList, storeCallOutAudit, storeCallOutDel, storeCallOutOut } from '@/api/storeCallOut'
+import { storeCallOutList, storeCallOutAudit, storeCallOutDel, storeCallOutOut, storeCallOutQueryCount } from '@/api/storeCallOut'
 import { storeCallOutTypeAllList } from '@/api/storeCallOutType'
 export default {
   name: 'StoreCallOutList',
@@ -182,10 +192,12 @@ export default {
       loadData: parameter => {
         this.disabled = true
         this.spinning = true
-        return storeCallOutList(Object.assign(parameter, this.queryParam)).then(res => {
+        const params = Object.assign(parameter, this.queryParam)
+        return storeCallOutList(params).then(res => {
           let data
           if (res.status == 200) {
             data = res.data
+            this.getCount(params)
             const no = (data.pageNo - 1) * data.pageSize
             for (var i = 0; i < data.list.length; i++) {
               data.list[i].no = no + i + 1
@@ -198,11 +210,13 @@ export default {
       },
       storeCallOutTypeList: [], //  调拨类型
       openModal: false, //  新增编辑  弹框
-      itemId: '' //  当前品牌id
+      itemId: '', //  当前品牌id
+      countData: null // 统计
     }
   },
   computed: {
     columns () {
+      const _this = this
       const arr = [
         { title: '序号', dataIndex: 'no', width: '4%', align: 'center' },
         { title: '创建时间', dataIndex: 'createDate', width: '11%', align: 'center', customRender: function (text) { return text || '--' } },
@@ -221,12 +235,22 @@ export default {
         { title: '操作', scopedSlots: { customRender: 'action' }, width: '8%', align: 'center' }
       ]
       if (this.$hasPermissions('M_ShowAllCost')) {
-        arr.splice(7, 0, { title: '总成本', dataIndex: 'productTotalCost', width: '5%', align: 'center', customRender: function (text) { return ((text || text == 0) ? text : '--') } })
+        arr.splice(7, 0, { title: '总成本', dataIndex: 'productTotalCost', width: '5%', align: 'right', customRender: function (text) { return ((text || text == 0) ? _this.toThousands(text, 2) : '--') } })
       }
       return arr
     }
   },
   methods: {
+    // 统计
+    getCount (params) {
+      storeCallOutQueryCount(params).then(res => {
+        if (res.status == 200) {
+          this.countData = res.data
+        } else {
+          this.countData = null
+        }
+      })
+    },
     //  时间  change
     dateChange (date) {
       this.queryParam.beginDate = date[0]

+ 4 - 3
src/views/allocationManagement/warehouseAllocation/detail.vue

@@ -38,7 +38,7 @@
             总款数: <strong>{{ productTotal&&(productTotal.productTotalCategory || productTotal.productTotalCategory==0) ? productTotal.productTotalCategory : '--' }}</strong> ,
             总数量: <strong>{{ productTotal&&(productTotal.productTotalQty || productTotal.productTotalQty==0) ? productTotal.productTotalQty : '--' }}</strong>
             <div style="display: inline-block;" v-if="$hasPermissions('M_ShowAllCost')">
-              ,总成本: <strong>{{ productTotal&&(productTotal.productTotalCost || productTotal.productTotalCost==0) ? '¥'+productTotal.productTotalCost : '--' }}</strong>
+              ,总成本: <strong>{{ productTotal&&(productTotal.productTotalCost || productTotal.productTotalCost==0) ? toThousands(productTotal.productTotalCost,2) : '--' }}</strong>
             </div>
           </div>
         </a-alert>
@@ -62,7 +62,7 @@
           </template>
           <!-- 成本小计 -->
           <template slot="totalCost" slot-scope="text, record">
-            <span>{{ (record.allocationCost * record.allocationQty) || 0 }}</span>
+            <span>{{ toThousands(record.allocationCost * record.allocationQty,2) || '0.00' }}</span>
           </template>
         </s-table>
       </a-card>
@@ -113,6 +113,7 @@ export default {
   },
   computed: {
     columns () {
+      const _this = this
       const arr = [
         { title: '序号', dataIndex: 'no', width: '4%', align: 'center' },
         { title: '产品编码', dataIndex: 'productCode', width: '14%', align: 'center', customRender: function (text) { return text || '--' } },
@@ -126,7 +127,7 @@ export default {
         { title: '调入仓位', dataIndex: 'putWarehouseLocationName', width: '11%', align: 'center', customRender: function (text) { return text || '--' } }
       ]
       if (this.$hasPermissions('M_ShowAllCost')) {
-        arr.splice(7, 0, { title: '成本小计(¥)', dataIndex: 'totalAllocationCost', width: '8%', align: 'center', customRender: function (text) { return ((text || text == 0) ? text : '--') } })
+        arr.splice(7, 0, { title: '成本小计(¥)', dataIndex: 'totalAllocationCost', width: '8%', align: 'right', customRender: function (text) { return ((text || text == 0) ? _this.toThousands(text, 2) : '--') } })
       }
       return arr
     }

+ 10 - 16
src/views/allocationManagement/warehouseAllocation/edit.vue

@@ -10,7 +10,7 @@
         </template>
       </a-page-header>
       <!-- 选择产品 -->
-      <a-card size="small" :bordered="false" class="warehouseAllocationEdit-cont">
+      <div class="warehouseAllocationEdit-cont">
         <a-collapse :activeKey="['1']">
           <a-collapse-panel key="1" header="选择产品">
             <!-- 筛选条件 -->
@@ -67,12 +67,13 @@
               class="sTable"
               ref="table"
               size="small"
-              :rowKey="(record) => record.stockSn+record.productSn+record.warehouseSn+record.warehouseLocationSn"
+              :rowKey="(record) => record.stockDetailSn"
+              rowKeyName="stockDetailSn"
               :columns="columns"
-              :customRow="handleClickRow"
+              @dblclick="handleClickRow"
               :data="loadData"
               :defaultLoadData="false"
-              :scroll="{ y: 300 }"
+              :scroll="{ y: 200 }"
               bordered>
               <!-- 产品分类 -->
               <template slot="productType" slot-scope="text, record">
@@ -108,9 +109,9 @@
             </s-table>
           </a-collapse-panel>
         </a-collapse>
-      </a-card>
+      </div>
       <!-- 已选产品 -->
-      <a-card size="small" :bordered="false" class="warehouseAllocationEdit-cont">
+      <div class="warehouseAllocationEdit-cont">
         <a-collapse :activeKey="['1']">
           <a-collapse-panel key="1" header="已选产品">
             <!-- 总计 -->
@@ -118,7 +119,7 @@
               <div slot="message">
                 总款数 <strong>{{ (productTotal&&(productTotal.productTotalCategory || productTotal.productTotalCategory==0)) ? productTotal.productTotalCategory : '--' }}</strong> ,
                 总数量 <strong>{{ (productTotal&&(productTotal.productTotalQty || productTotal.productTotalQty==0)) ? productTotal.productTotalQty : '--' }}</strong>
-                <div style="display: inline-block;" v-if="$hasPermissions('M_ShowAllCost')">,总成本 <strong>{{ (productTotal&&(productTotal.productTotalCost || productTotal.productTotalCost==0)) ? '¥'+productTotal.productTotalCost : '--' }}</strong></div>
+                <div style="display: inline-block;" v-if="$hasPermissions('M_ShowAllCost')">,总成本 <strong>{{ (productTotal&&(productTotal.productTotalCost || productTotal.productTotalCost==0)) ? toThousands(productTotal.productTotalCost,2) : '--' }}</strong></div>
               </div>
             </a-alert>
             <!-- 筛选条件 -->
@@ -200,7 +201,7 @@
             </s-table>
           </a-collapse-panel>
         </a-collapse>
-      </a-card>
+      </div>
     </a-spin>
     <div class="affix-cont">
       <a-button
@@ -333,14 +334,7 @@ export default {
     },
     // 双击快速添加
     handleClickRow (record) {
-      return {
-        on: {
-          dblclick: (event) => {
-            event.stopPropagation()
-            this.handleAdd(record)
-          }
-        }
-      }
+      this.handleAdd(record)
     },
     // 已选产品  重置
     chooseResetSearchForm () {

+ 28 - 4
src/views/allocationManagement/warehouseAllocation/list.vue

@@ -51,6 +51,16 @@
       </div>
       <!-- 操作按钮 -->
       <div class="table-operator"><a-button id="warehouseAllocationList-add" v-if="$hasPermissions('B_warehouseAllocationNews')" type="primary" class="button-error" @click="openModal = true">新增</a-button></div>
+      <!-- 统计 -->
+      <a-alert type="info" style="margin-bottom:10px">
+        <div slot="message">
+          总款数: <strong>{{ countData&&(countData.productTotalCategory || countData.productTotalCategory==0) ? countData.productTotalCategory : '--' }}</strong> ,
+          总数量: <strong>{{ countData&&(countData.productTotalQty || countData.productTotalQty==0) ? countData.productTotalQty : '--' }}</strong>
+          <div style="display: inline-block;" v-if="$hasPermissions('M_ShowAllCost')">
+            ,总成本: <strong>{{ countData&&(countData.productTotalCost || countData.productTotalCost==0) ? toThousands(countData.productTotalCost,2) : '--' }}</strong>
+          </div>
+        </div>
+      </a-alert>
       <!-- 列表 -->
       <s-table
         class="sTable fixPagination"
@@ -112,7 +122,7 @@
 
 <script>
 import { commonMixin } from '@/utils/mixin'
-import { allocWarehouseList, allocWarehouseAudit, allocWarehouseDel } from '@/api/allocWarehouse'
+import { allocWarehouseList, allocWarehouseAudit, allocWarehouseDel, allocWarehouseQueryCount } from '@/api/allocWarehouse'
 import { warehouseAllList } from '@/api/warehouse.js'
 import { STable, VSelect } from '@/components'
 import basicInfoModal from './basicInfoModal.vue'
@@ -145,10 +155,12 @@ export default {
       loadData: parameter => {
         this.disabled = true
         this.spinning = true
-        return allocWarehouseList(Object.assign(parameter, this.queryParam)).then(res => {
+        const params = Object.assign(parameter, this.queryParam)
+        return allocWarehouseList(params).then(res => {
           let data
           if (res.status == 200) {
             data = res.data
+            this.getCount(params)
             const no = (data.pageNo - 1) * data.pageSize
             for (var i = 0; i < data.list.length; i++) {
               data.list[i].no = no + i + 1
@@ -159,11 +171,13 @@ export default {
           return data
         })
       },
-      openModal: false //  新增编辑  弹框
+      openModal: false, //  新增编辑  弹框
+      countData: null// 统计数据
     }
   },
   computed: {
     columns () {
+      const _this = this
       const arr = [
         { title: '序号', dataIndex: 'no', width: '4%', align: 'center' },
         { title: '创建时间', dataIndex: 'createDate', width: '11%', align: 'center', customRender: function (text) { return text || '--' } },
@@ -179,12 +193,22 @@ export default {
         { title: '操作', scopedSlots: { customRender: 'action' }, width: '8%', align: 'center' }
       ]
       if (this.$hasPermissions('M_ShowAllCost')) {
-        arr.splice(7, 0, { title: '总成本', dataIndex: 'productTotalCost', width: '6%', align: 'center', customRender: function (text) { return ((text || text == 0) ? text : '--') } })
+        arr.splice(7, 0, { title: '总成本', dataIndex: 'productTotalCost', width: '6%', align: 'right', customRender: function (text) { return ((text || text == 0) ? _this.toThousands(text, 2) : '--') } })
       }
       return arr
     }
   },
   methods: {
+    // 统计
+    getCount (params) {
+      allocWarehouseQueryCount(params).then(res => {
+        if (res.status == 200) {
+          this.countData = res.data
+        } else {
+          this.countData = null
+        }
+      })
+    },
     //  时间  change
     dateChange (date) {
       this.queryParam.beginDate = date[0]

+ 135 - 0
src/views/basicData/systemSettings/index.vue

@@ -0,0 +1,135 @@
+<template>
+  <a-card size="small" :bordered="false" class="systemSettingsList-wrap" :style="{height:conHeight+'px'}">
+    <a-spin :spinning="spinning" tip="Loading...">
+      <div ref="contentBox">
+        <a-row :gutter="16">
+          <a-col class="gutter-row" :span="12">
+            销售下单时,是否显示产品库存为0的产品信息
+          </a-col>
+          <a-col class="gutter-row" :span="12">
+            <a-radio-group v-model="qtyValue" @change="handleQty">
+              <a-radio :value="1">
+                显示
+              </a-radio>
+              <a-radio :value="2">
+                隐藏
+              </a-radio>
+            </a-radio-group>
+          </a-col>
+        </a-row>
+
+        <a-row :gutter="16">
+          <a-col class="gutter-row" :span="12">
+            销售下单时,是否显示废品仓的产品信息
+          </a-col>
+          <a-col class="gutter-row" :span="12">
+            <a-radio-group v-model="wasteInfoValue" @change="handleWasteInfo">
+              <a-radio :value="1">
+                显示
+              </a-radio>
+              <a-radio :value="2">
+                隐藏
+              </a-radio>
+            </a-radio-group>
+          </a-col>
+        </a-row>
+
+        <a-row :gutter="16">
+          <a-col class="gutter-row" :span="12">
+            库存预警,是否包含废品库数量
+          </a-col>
+          <a-col class="gutter-row" :span="12">
+            <a-radio-group v-model="wasteNumValue" @change="handleWasteNum">
+              <a-radio :value="1">
+                包含
+              </a-radio>
+              <a-radio :value="2">
+                不包含
+              </a-radio>
+            </a-radio-group>
+          </a-col>
+        </a-row>
+      </div>
+    </a-spin>
+  </a-card>
+</template>
+
+<script>
+import { commonMixin } from '@/utils/mixin'
+export default {
+  name: 'SystemSettingsList',
+  mixins: [commonMixin],
+  data () {
+    return {
+      spinning: false,
+      qtyValue: 1,
+      wasteInfoValue: 1,
+      wasteNumValue: 1,
+      conHeight: '100%'
+    }
+  },
+  methods: {
+    getData () {
+      this.spinning = true
+      noticeUserBizQuery().then(res => {
+        const data = res.data
+        if (res.status == 200) {
+          const no = 0
+          for (var i = 0; i < data.length; i++) {
+            data[i].no = no + i + 1
+            const key = ['tempOrderFlag', 'shelfReplenishFlag', 'shelfOrderFlag', 'shelfWarnFlag', 'allFlag']
+            const ret = []
+            key.map(item => {
+              if (data[i][item] == 1) {
+                ret.push(1)
+              }
+            })
+            data[i].allFlag = ret.length == 4 ? 1 : 0
+          }
+        }
+        this.loadData = data
+        this.spinning = false
+      })
+    },
+    pageInit () {
+      const _this = this
+      this.$nextTick(() => { // 页面渲染完成后的回调
+        _this.setTableH()
+      })
+    },
+    setTableH () {
+      this.conHeight = window.innerHeight - 110.5
+    },
+    handleQty () {},
+    handleWasteInfo () {},
+    handleWasteNum () {}
+  },
+  watch: {
+    '$store.state.app.winHeight' (newValue, oldValue) { //  窗口变更时,需同时更改表格高度
+      this.setTableH()
+    }
+  },
+  mounted () {
+    if (!this.$store.state.app.isNewTab) { // 页签刷新时调用
+      this.pageInit()
+      // this.getData()
+    }
+  },
+  activated () {
+    // 如果是新页签打开,则重置当前页面
+    if (this.$store.state.app.isNewTab) {
+      this.pageInit()
+      // this.getData()
+    }
+  }
+}
+</script>
+<style lang="less" scoped>
+  .systemSettingsList-wrap{
+    .ant-row{
+      padding:23px 10px;
+      border-bottom: 1px solid #e0e0e0;
+    }
+  }
+
+</style>

+ 4 - 3
src/views/bulkManagement/bulkImport/list.vue

@@ -87,6 +87,7 @@ export default {
   components: { STable, Upload, commonModal },
   mixins: [commonMixin],
   data () {
+    const _this = this
     return {
       openTipsModal: false,
       modalHtml: '',
@@ -108,8 +109,8 @@ export default {
         { title: '仓库', dataIndex: 'warehouseName', width: 100, align: 'center', customRender: function (text) { return text || '--' } },
         { title: '仓位', dataIndex: 'warehouseLocationName', width: 100, align: 'center', customRender: function (text) { return text || '--' } },
         { title: '入库数量', dataIndex: 'putQty', width: 80, align: 'center', customRender: function (text) { return ((text || text == 0) ? text : '--') } },
-        { title: '成本价', dataIndex: 'cost', width: 80, align: 'center', customRender: function (text) { return ((text || text == 0) ? text : '--') } },
-        { title: '售价', dataIndex: 'terminalPrice', width: 80, align: 'center', customRender: function (text) { return ((text || text == 0) ? text : '--') } },
+        { title: '成本价', dataIndex: 'cost', width: 80, align: 'right', customRender: function (text) { return ((text || text == 0) ? _this.toThousands(text, 2) : '--') } },
+        { title: '售价', dataIndex: 'terminalPrice', width: 80, align: 'right', customRender: function (text) { return ((text || text == 0) ? _this.toThousands(text, 2) : '--') } },
         { title: '错误原因', dataIndex: 'errorMsg', width: 150, align: 'center', customRender: function (text) { return text || '--' } }
       ],
       // 加载数据方法 必须为 Promise 对象
@@ -139,7 +140,7 @@ export default {
         savePathType: 'local'
       },
       uploadData: null,
-      filePath: 'https://jianguan-images.oss-cn-beijing.aliyuncs.com/template/ShangHuProductImports.xlsx'
+      filePath: location.protocol + '//' +location.host + '/templ/散件产品导入模板.xlsx'
     }
   },
   methods: {

+ 6 - 5
src/views/bulkManagement/bulkReturnGoods/detailModal.vue

@@ -30,7 +30,7 @@
           <div slot="message">
             总款数<strong>{{ (productTotal&&(productTotal.purchaseSize || productTotal.purchaseSize==0)) ? productTotal.purchaseSize : '--' }}</strong> ,
             总数量<strong>{{ (productTotal&&(productTotal.purchaseQty || productTotal.purchaseQty==0)) ? productTotal.purchaseQty : '--' }}</strong> ,
-            总金额<strong>{{ (productTotal&&(productTotal.purchaseCost || productTotal.purchaseCost==0)) ? '¥'+productTotal.purchaseCost : '--' }}</strong>
+            总金额<strong>{{ (productTotal&&(productTotal.purchaseCost || productTotal.purchaseCost==0)) ? toThousands(productTotal.purchaseCost,2) : '--' }}</strong>
           </div>
         </a-alert>
         <!-- 列表 -->
@@ -107,6 +107,7 @@ export default {
   computed: {
     columns () {
       let arr = []
+      const _this = this
       if (this.isGrab == '1' || this.basicInfoData && this.basicInfoData.isGrab == '1') { // 抓单
         arr = [
           { title: '序号', dataIndex: 'no', width: '4%', align: 'center' },
@@ -114,9 +115,9 @@ export default {
           { title: '产品编码', dataIndex: 'productCode', width: '22%', align: 'center', customRender: function (text) { return text || '--' } },
           { title: '产品名称', dataIndex: 'productName', width: '22%', align: 'center', customRender: function (text) { return text || '--' } },
           { title: '单位', dataIndex: 'productUnit', width: '6%', align: 'center', customRender: function (text) { return text || '--' } },
-          { title: '退货单价', dataIndex: 'purchaseCost', width: '8%', align: 'center', customRender: function (text) { return ((text || text == 0) ? text : '--') } },
+          { title: '退货单价', dataIndex: 'purchaseCost', width: '8%', align: 'right', customRender: function (text) { return ((text || text == 0) ? _this.toThousands(text, 2) : '--') } },
           { title: '退货数量', dataIndex: 'purchaseQty', width: '8%', align: 'center', customRender: function (text) { return ((text || text == 0) ? text : '--') } },
-          { title: '退货金额', dataIndex: 'purchaseAmount', width: '8%', align: 'center', customRender: function (text) { return ((text || text == 0) ? text : '--') } }
+          { title: '退货金额', dataIndex: 'purchaseAmount', width: '8%', align: 'right', customRender: function (text) { return ((text || text == 0) ? _this.toThousands(text, 2) : '--') } }
         ]
       } else { // 不抓单
         arr = [
@@ -126,9 +127,9 @@ export default {
           { title: '仓库', dataIndex: 'warehouseName', width: '15%', align: 'center', customRender: function (text) { return text || '--' } },
           { title: '仓位', dataIndex: 'warehouseLocationName', width: '15%', align: 'center', customRender: function (text) { return text || '--' } },
           { title: '单位', dataIndex: 'productUnit', width: '6%', align: 'center', customRender: function (text) { return text || '--' } },
-          { title: '退货单价', dataIndex: 'purchaseCost', width: '8%', align: 'center', customRender: function (text) { return ((text || text == 0) ? text : '--') } },
+          { title: '退货单价', dataIndex: 'purchaseCost', width: '8%', align: 'right', customRender: function (text) { return ((text || text == 0) ? _this.toThousands(text, 2) : '--') } },
           { title: '退货数量', dataIndex: 'purchaseQty', width: '8%', align: 'center', customRender: function (text) { return ((text || text == 0) ? text : '--') } },
-          { title: '退货金额', dataIndex: 'purchaseAmount', width: '8%', align: 'center', customRender: function (text) { return ((text || text == 0) ? text : '--') } }
+          { title: '退货金额', dataIndex: 'purchaseAmount', width: '8%', align: 'right', customRender: function (text) { return ((text || text == 0) ? _this.toThousands(text, 2) : '--') } }
         ]
       }
       return arr

+ 8 - 13
src/views/bulkManagement/bulkReturnGoods/edit.vue

@@ -53,9 +53,10 @@
           class="sTable"
           ref="table"
           size="small"
-          :rowKey="(record) => record.id"
+          :rowKey="(record) => record.stockDetailSn"
+          rowKeyName="stockDetailSn"
           :columns="columns"
-          :customRow="handleClickRow"
+          @dblclick="handleClickRow"
           :data="loadData"
           :defaultLoadData="false"
           :scroll="{ y:150 }"
@@ -95,7 +96,7 @@
               v-if="record.currentQty>0"
               type="link"
               class="button-primary"
-              @click.stop="handleAdd(record)"
+              @click="handleAdd(record)"
               id="bulkReturnGoodsEdit-add-btn">添加</a-button>
             <span v-else>--</span>
           </template>
@@ -108,7 +109,7 @@
           <div slot="message">
             总款数<strong>{{ (productTotal&&(productTotal.purchaseSize || productTotal.purchaseSize==0)) ? productTotal.purchaseSize : '--' }}</strong> ,
             总数量<strong>{{ (productTotal&&(productTotal.purchaseQty || productTotal.purchaseQty==0)) ? productTotal.purchaseQty : '--' }}</strong> ,
-            总金额<strong>{{ (productTotal&&(productTotal.purchaseCost || productTotal.purchaseCost==0)) ? '¥'+productTotal.purchaseCost : '--' }}</strong>
+            总金额<strong>{{ (productTotal&&(productTotal.purchaseCost || productTotal.purchaseCost==0)) ? toThousands(productTotal.purchaseCost,2) : '--' }}</strong>
           </div>
         </a-alert>
         <!-- 筛选条件 -->
@@ -214,6 +215,7 @@ export default {
   components: { STable, VSelect, Print },
   mixins: [commonMixin],
   data () {
+    const _this = this
     return {
       spinning: false,
       queryParam: {
@@ -264,7 +266,7 @@ export default {
         { title: '单位', dataIndex: 'productUnit', width: '6%', align: 'center', customRender: function (text) { return text || '--' } },
         { title: '退货单价', scopedSlots: { customRender: 'purchaseCost' }, width: '8%', align: 'center' },
         { title: '退货数量', scopedSlots: { customRender: 'purchaseQty' }, width: '8%', align: 'center' },
-        { title: '退货金额', dataIndex: 'purchaseAmount', width: '8%', align: 'center', customRender: function (text) { return ((text || text == 0) ? text : '--') } },
+        { title: '退货金额', dataIndex: 'purchaseAmount', width: '8%', align: 'right', customRender: function (text) { return ((text || text == 0) ? _this.toThousands(text, 2) : '--') } },
         { title: '操作', scopedSlots: { customRender: 'action' }, width: '8%', align: 'center' }
       ],
       // 加载数据方法 必须为 Promise 对象
@@ -439,14 +441,7 @@ export default {
     },
     // 双击快速添加
     handleClickRow (record) {
-      return {
-        on: {
-          dblclick: (event) => {
-            event.stopPropagation()
-            this.handleAdd(record)
-          }
-        }
-      }
+      this.handleAdd(record)
     },
     // 仓库
     getWarehouse () {

+ 6 - 12
src/views/bulkManagement/bulkReturnGoods/grabEdit.vue

@@ -46,7 +46,7 @@
           size="small"
           :rowKey="(record) => record.id"
           :columns="columns"
-          :customRow="handleClickRow"
+          @dblclick="handleClickRow"
           :defaultLoadData="false"
           :data="loadData"
           :scroll="{ y:150 }"
@@ -81,7 +81,7 @@
           </template>
           <!-- 操作 -->
           <template slot="action" slot-scope="text, record">
-            <a-button size="small" type="link" class="button-primary" @click.stop="handleAdd(record)" id="bulkReturnGoodsEdit-add-btn">添加</a-button>
+            <a-button size="small" type="link" class="button-primary" @click="handleAdd(record)" id="bulkReturnGoodsEdit-add-btn">添加</a-button>
           </template>
         </s-table>
       </a-card>
@@ -92,7 +92,7 @@
           <div slot="message">
             总款数<strong>{{ (productTotal&&(productTotal.purchaseSize || productTotal.purchaseSize==0)) ? productTotal.purchaseSize : '--' }}</strong> ,
             总数量<strong>{{ (productTotal&&(productTotal.purchaseQty || productTotal.purchaseQty==0)) ? productTotal.purchaseQty : '--' }}</strong> ,
-            总金额<strong>{{ (productTotal&&(productTotal.purchaseCost || productTotal.purchaseCost==0)) ? '¥'+productTotal.purchaseCost : '--' }}</strong>
+            总金额<strong>{{ (productTotal&&(productTotal.purchaseCost || productTotal.purchaseCost==0)) ? toThousands(productTotal.purchaseCost,2) : '--' }}</strong>
           </div>
         </a-alert>
         <!-- 筛选条件 -->
@@ -198,6 +198,7 @@ export default {
   components: { STable, VSelect, Print },
   mixins: [commonMixin],
   data () {
+    const _this = this
     return {
       spinning: false,
       queryParam: {
@@ -212,7 +213,7 @@ export default {
         { title: '散件入库单号', dataIndex: 'sparePartsPurchaseNo', width: '16%', align: 'center', customRender: function (text) { return text || '--' } },
         { title: '产品编码', dataIndex: 'productCode', width: '14%', align: 'center', customRender: function (text) { return text || '--' } },
         { title: '产品名称', dataIndex: 'productName', width: '16%', align: 'center', customRender: function (text) { return text || '--' } },
-        { title: '入库价格', dataIndex: 'putCost', width: '6%', align: 'center', customRender: function (text) { return ((text || text == 0) ? text : '--') } },
+        { title: '入库价格', dataIndex: 'putCost', width: '6%', align: 'right', customRender: function (text) { return ((text || text == 0) ? _this.toThousands(text, 2) : '--') } },
         { title: '入库数量', dataIndex: 'putQty', width: '6%', align: 'center', customRender: function (text) { return ((text || text == 0) ? text : '--') } },
         { title: '已退数量', dataIndex: 'returnQty', width: '6%', align: 'center', customRender: function (text) { return ((text || text == 0) ? text : '--') } },
         { title: '可退数量', dataIndex: 'refundableQty', width: '6%', align: 'center', customRender: function (text) { return ((text || text == 0) ? text : '--') } },
@@ -429,14 +430,7 @@ export default {
     },
     // 双击快速添加
     handleClickRow (record) {
-      return {
-        on: {
-          dblclick: (event) => {
-            event.stopPropagation()
-            this.handleAdd(record)
-          }
-        }
-      }
+      this.handleAdd(record)
     },
     // 仓库
     getWarehouse () {

+ 2 - 1
src/views/bulkManagement/bulkReturnGoods/list.vue

@@ -155,6 +155,7 @@ export default {
   components: { STable, VSelect, basicInfoModal, rangeDate, bulkReturnGoodsDetailModal, auditModal, stateIcon, supplier },
   mixins: [commonMixin],
   data () {
+    const _this = this
     return {
       spinning: false,
       advanced: true, // 高级搜索 展开/关闭
@@ -185,7 +186,7 @@ export default {
         { title: '供应商', dataIndex: 'supplierName', width: '13%', align: 'center', customRender: function (text) { return text || '--' }, ellipsis: true },
         { title: '产品款数', dataIndex: 'productTotalCategory', width: '6%', align: 'center', customRender: function (text) { return ((text || text == 0) ? text : '--') } },
         { title: '总数量', dataIndex: 'productTotalQty', width: '6%', align: 'center', customRender: function (text) { return ((text || text == 0) ? text : '--') } },
-        { title: '总金额', dataIndex: 'productTotalCost', width: '6%', align: 'center', customRender: function (text) { return ((text || text == 0) ? text : '--') } },
+        { title: '总金额', dataIndex: 'productTotalCost', width: '6%', align: 'right', customRender: function (text) { return ((text || text == 0) ? _this.toThousands(text, 2) : '--') } },
         { title: '是否抓单', dataIndex: 'isGrabDictValue', width: '6%', align: 'center', customRender: function (text) { return text || '--' } },
         { title: '业务状态', dataIndex: 'stateDictValue', width: '6%', align: 'center', customRender: function (text) { return text || '--' } },
         // { title: '财务状态', dataIndex: 'settleStateDictValue', width: '6%', align: 'center', customRender: function (text) { return text || '--' } },

+ 3 - 2
src/views/bulkManagement/bulkWarehousingOrder/chooseImportModal.vue

@@ -114,13 +114,14 @@ export default {
     }
   },
   data () {
+    const _this = this
     return {
       isShow: this.openModal, //  是否打开弹框
       nowColumns: [
         { title: '序号', dataIndex: 'no', width: '8%', align: 'center' },
         { title: '产品编码', dataIndex: 'productCode', width: '25%', align: 'center', customRender: function (text) { return text || '--' } },
         { title: '产品名称', dataIndex: 'productName', width: '25%', align: 'center', customRender: function (text) { return text || '--' } },
-        { title: '成本价', dataIndex: 'putCost', width: '14%', align: 'center', customRender: function (text) { return ((text || text == 0) ? text : '--') } },
+        { title: '成本价', dataIndex: 'putCost', width: '14%', align: 'right', customRender: function (text) { return ((text || text == 0) ? _this.toThousands(text, 2) : '--') } },
         { title: '数量', dataIndex: 'putQty', width: '14%', align: 'center', customRender: function (text) { return ((text || text == 0) ? text : '--') } },
         { title: '仓库', dataIndex: 'warehouseName', width: '14%', align: 'center', customRender: function (text) { return ((text || text == 0) ? text : '--') } },
         { title: '仓位', dataIndex: 'warehouseLocationName', width: '14%', align: 'center', customRender: function (text) { return ((text || text == 0) ? text : '--') } },
@@ -129,7 +130,7 @@ export default {
       nowUnColumns: [
         { title: '序号', dataIndex: 'no', width: '9%', align: 'center' },
         { title: '产品编码', dataIndex: 'productCode', width: '20%', align: 'center', customRender: function (text) { return text || '--' } },
-        { title: '成本价', dataIndex: 'putCost', width: '10%', align: 'center', customRender: function (text) { return ((text || text == 0) ? text : '--') } },
+        { title: '成本价', dataIndex: 'putCost', width: '10%', align: 'right', customRender: function (text) { return ((text || text == 0) ? _this.toThousands(text, 2) : '--') } },
         { title: '数量', dataIndex: 'putQty', width: '20%', align: 'center', customRender: function (text) { return ((text || text == 0) ? text : '--') } },
         { title: '仓库', dataIndex: 'warehouseName', width: '10%', align: 'center', customRender: function (text) { return ((text || text == 0) ? text : '--') } },
         { title: '仓位', dataIndex: 'warehouseLocationName', width: '10%', align: 'center', customRender: function (text) { return ((text || text == 0) ? text : '--') } },

+ 4 - 3
src/views/bulkManagement/bulkWarehousingOrder/detail.vue

@@ -57,7 +57,7 @@
               <div slot="message">
                 总款数 <strong>{{ (productTotal&&(productTotal.productTotalCategory || productTotal.productTotalCategory==0)) ? productTotal.productTotalCategory : '--' }}</strong> ,
                 总数量 <strong>{{ (productTotal&&(productTotal.productTotalQty || productTotal.productTotalQty==0)) ? productTotal.productTotalQty : '--' }}</strong> ,
-                总成本 <strong>{{ (productTotal&&(productTotal.productTotalCost || productTotal.productTotalCost==0)) ? '¥'+productTotal.productTotalCost : '--' }}</strong>
+                总成本 <strong>{{ (productTotal&&(productTotal.productTotalCost || productTotal.productTotalCost==0)) ? toThousands(productTotal.productTotalCost,2) : '--' }}</strong>
               </div>
             </a-alert>
             <!-- 列表 -->
@@ -113,6 +113,7 @@ export default {
     }
   },
   data () {
+    const _this = this
     return {
       spinning: false,
       // 表头
@@ -120,10 +121,10 @@ export default {
         { title: '序号', dataIndex: 'no', width: '4%', align: 'center' },
         { title: '产品编码', dataIndex: 'productCode', width: '20%', align: 'center', customRender: function (text) { return text || '--' } },
         { title: '产品名称', dataIndex: 'productName', width: '20%', align: 'left', customRender: function (text) { return text || '--' }, ellipsis: true },
-        { title: '采购单价', dataIndex: 'putCost', width: '7%', align: 'center', customRender: function (text) { return ((text || text == 0) ? text : '--') } },
+        { title: '采购单价', dataIndex: 'putCost', width: '7%', align: 'right', customRender: function (text) { return ((text || text == 0) ? _this.toThousands(text, 2) : '--') } },
         { title: '采购数量', dataIndex: 'putQty', width: '7%', align: 'center', customRender: function (text) { return ((text || text == 0) ? text : '--') } },
         { title: '单位', dataIndex: 'productUnit', width: '5%', align: 'center', customRender: function (text) { return text || '--' } },
-        { title: '采购金额', dataIndex: 'purchaseAmount', width: '7%', align: 'center', customRender: function (text) { return ((text || text == 0) ? text : '--') } },
+        { title: '采购金额', dataIndex: 'purchaseAmount', width: '7%', align: 'right', customRender: text => ((text || text == 0) ? this.toThousands(text) : '--') },
         { title: '仓库', dataIndex: 'warehouseName', width: '15%', align: 'center', customRender: function (text) { return text || '--' }, ellipsis: true },
         { title: '仓位', dataIndex: 'warehouseLocationName', width: '15%', align: 'center', customRender: function (text) { return text || '--' }, ellipsis: true }
       ],

+ 56 - 44
src/views/bulkManagement/bulkWarehousingOrder/edit.vue

@@ -6,30 +6,40 @@
         <!-- 自定义的二级文字标题 -->
         <template slot="subTitle">
           <a id="bulkWarehousingOrderEdit-back-btn" href="javascript:;" @click="handleBack"><a-icon type="left" /> 返回列表</a>
-          <p style=" display: inline-block;margin: 0 0 0 60px;color: #000;font-size: 16px;font-weight: 600;">单号:{{ (basicInfoData&&basicInfoData.sparePartsPurchaseNo) || '' }}</p>
+          <p style="display: inline-block;margin: 0 30px 0 60px;color: #000;font-size: 16px;font-weight: 600;">单号:{{ (basicInfoData&&basicInfoData.sparePartsPurchaseNo) || '' }}</p>
+          <a-button type="primary" ghost @click="isShowBisiceInfo=!isShowBisiceInfo">
+            基础信息
+            <a-icon :type="isShowBisiceInfo ? 'up' : 'down'"/>
+          </a-button>
         </template>
         <!-- 操作区,位于 title 行的行尾 -->
-        <template slot="extra" v-if="$hasPermissions('B_bulkWarehousingOrder_print')">
+        <template
+          slot="
+            extra"
+          v-if="$hasPermissions('B_bulkWarehousingOrder_print')">
           <Print :disabled="chooseLoadDataSource.length==0" :showExport="false" @handlePrint="handlePrint"></Print>
-        </template>
+          </p></template>
       </a-page-header>
       <!-- 基础信息 -->
-      <a-card size="small" :bordered="false" class="bulkWarehousingOrderEdit-cont">
+      <div v-show="isShowBisiceInfo" class="bulkWarehousingOrderEdit-cont">
         <a-collapse :activeKey="['1']">
-          <a-collapse-panel key="1">
-            <template slot="header">
-              基础信息
-            </template>
-            <a-descriptions :column="3">
-              <a-descriptions-item label="供应商">{{ (basicInfoData&&basicInfoData.supplierName) || '--' }}</a-descriptions-item>
-              <a-descriptions-item label="散件入库类型">{{ (basicInfoData&&basicInfoData.sparePartsTypeName) || '--' }}</a-descriptions-item>
-              <a-descriptions-item label="备注">{{ (basicInfoData&&basicInfoData.remarks) || '--' }}</a-descriptions-item>
-            </a-descriptions>
+          <a-collapse-panel key="1" header="基础信息" :disabled="true">
+            <a-row :gutter="16">
+              <a-col class="gutter-row" :span="8">
+                供应商:{{ (basicInfoData&&basicInfoData.supplierName) || '--' }}
+              </a-col>
+              <a-col class="gutter-row" :span="8">
+                散件入库类型:{{ (basicInfoData&&basicInfoData.sparePartsTypeName) || '--' }}
+              </a-col>
+              <a-col class="gutter-row" :span="8">
+                备注:{{ (basicInfoData&&basicInfoData.remarks) || '--' }}
+              </a-col>
+            </a-row>
           </a-collapse-panel>
         </a-collapse>
-      </a-card>
+      </div>
       <!-- 选择产品 -->
-      <a-card size="small" :bordered="false" class="bulkWarehousingOrderEdit-cont">
+      <div class="bulkWarehousingOrderEdit-cont">
         <a-collapse :activeKey="['1']">
           <a-collapse-panel key="1">
             <template slot="header">
@@ -40,35 +50,35 @@
               <!-- 搜索条件 -->
               <div class="table-page-search-wrapper">
                 <a-form layout="inline" @keyup.enter.native="$refs.table.refresh(true)">
-                  <a-row :gutter="15">
-                    <a-col :md="4" :sm="24">
+                  <a-row type="flex" :gutter="12" justify="start">
+                    <a-col flex="250px">
                       <a-form-model-item label="产品编码">
                         <a-input id="bulkWarehousingOrderEdit-code" ref="searchProductCode" v-model.trim="queryParam.code" allowClear placeholder="请输入产品编码"/>
                       </a-form-model-item>
                     </a-col>
-                    <a-col :md="4" :sm="24">
+                    <a-col flex="350px">
                       <a-form-model-item label="产品名称">
                         <a-input id="bulkWarehousingOrderEdit-name" v-model.trim="queryParam.name" allowClear placeholder="请输入产品名称"/>
                       </a-form-model-item>
                     </a-col>
-                    <a-col :md="4" :sm="24">
+                    <a-col flex="250px">
                       <a-form-model-item label="原厂编码">
                         <a-input id="bulkWarehousingOrderEdit-origCode" v-model.trim="queryParam.origCode" allowClear placeholder="请输入原厂编码"/>
                       </a-form-model-item>
                     </a-col>
-                    <a-col :md="4" :sm="24">
-                      <a-form-item label="产品分类">
-                        <ProductType id="productInfoList-productType" @change="changeProductType" v-model="productType"></ProductType>
-                      </a-form-item>
-                    </a-col>
                     <template v-if="advanced">
-                      <a-col :md="4" :sm="24">
+                      <a-col flex="250px">
+                        <a-form-item label="产品分类">
+                          <ProductType id="productInfoList-productType" @change="changeProductType" v-model="productType"></ProductType>
+                        </a-form-item>
+                      </a-col>
+                      <a-col flex="250px">
                         <a-form-item label="产品品牌">
                           <ProductBrand id="bulkWarehousingOrderEdit-productBrandSn" v-model="queryParam.productBrandSn"></ProductBrand>
                         </a-form-item>
                       </a-col>
                     </template>
-                    <a-col :md="4" :sm="24" style="margin-bottom: 10px;">
+                    <a-col flex="auto" style="margin-bottom: 10px;">
                       <a-button type="primary" @click="$refs.table.refresh(true)" :disabled="disabled" id="bulkWarehousingOrderEdit-refresh">查询</a-button>
                       <a-button style="margin-left: 8px" @click="resetSearchForm" :disabled="disabled" id="bulkWarehousingOrderEdit-reset">重置</a-button>
                       <a @click="advanced=!advanced" style="margin:0 30px 0 10px">
@@ -86,7 +96,7 @@
                 size="small"
                 :rowKey="(record) => record.id"
                 :columns="columns"
-                :customRow="handleClickRow"
+                @dblclick="handleClickRow"
                 :data="loadData"
                 :defaultLoadData="false"
                 :scroll="{ y: 150 }"
@@ -102,6 +112,7 @@
                       :min="0"
                       :max="999999"
                       placeholder="请输入"
+                      class="rightPrice"
                       style="width: 100%;" />
                   </div>
                 </template>
@@ -138,15 +149,15 @@
                 </template>
                 <!-- 操作 -->
                 <template slot="action" slot-scope="text, record">
-                  <a-button size="small" type="link" class="button-primary" @click.stop="handleAdd(record)" id="bulkWarehousingOrderEdit-add-btn">添加</a-button>
+                  <a-button size="small" type="link" class="button-primary" @click="handleAdd(record)" id="bulkWarehousingOrderEdit-add-btn">添加</a-button>
                 </template>
               </s-table>
             </div>
           </a-collapse-panel>
         </a-collapse>
-      </a-card>
+      </div>
       <!-- 已选产品 -->
-      <a-card size="small" :bordered="false" class="bulkWarehousingOrderEdit-cont">
+      <div class="bulkWarehousingOrderEdit-cont">
         <a-collapse :activeKey="['1']">
           <a-collapse-panel key="1">
             <template slot="header">
@@ -159,7 +170,7 @@
                 <div slot="message">
                   总款数 <strong>{{ (productTotal&&(productTotal.productTotalCategory || productTotal.productTotalCategory==0)) ? productTotal.productTotalCategory : '--' }}</strong> ,
                   总数量 <strong>{{ (productTotal&&(productTotal.productTotalQty || productTotal.productTotalQty==0)) ? productTotal.productTotalQty : '--' }}</strong> ,
-                  总成本 <strong>{{ (productTotal&&(productTotal.productTotalCost || productTotal.productTotalCost==0)) ? '¥'+productTotal.productTotalCost : '--' }}</strong>
+                  总成本 <strong>{{ (productTotal&&(productTotal.productTotalCost || productTotal.productTotalCost==0)) ? toThousands(productTotal.productTotalCost,2) : '--' }}</strong>
                 </div>
               </a-alert>
               <div class="table-page-search-wrapper">
@@ -217,6 +228,7 @@
                     :min="0"
                     :max="999999"
                     placeholder="请输入"
+                    class="rightPrice"
                     @blur="e => putCostBlur(e.target.value, record)"
                     style="width: 100%;" />
                 </template>
@@ -255,7 +267,7 @@
             </div>
           </a-collapse-panel>
         </a-collapse>
-      </a-card>
+      </div>
     </a-spin>
     <div class="affix-cont">
       <a-button
@@ -267,7 +279,6 @@
         @click="handleSubmit"
         style="padding: 0 60px;">提交</a-button>
     </div>
-    <!-- 导入弹框 -->
     <!-- 导入费用明细 -->
     <importGuideModal
       :openModal="openGuideModal"
@@ -315,6 +326,7 @@ import ProductType from '../../common/productType.js'
 import ProductBrand from '../../common/productBrand.js'
 import Print from '@/views/common/print.vue'
 import importGuideModal from './importGuideModal.vue'
+import { toThousands } from '@/libs/tools'
 import newProduct from '@/views/productManagement/productInfo/edit.vue'
 import { hdPrint } from '@/libs/JGPrint'
 export default {
@@ -323,6 +335,7 @@ export default {
   mixins: [commonMixin],
   data () {
     return {
+      isShowBisiceInfo: false,
       advanced: false,
       spinning: false,
       loading: false,
@@ -397,7 +410,7 @@ export default {
         { title: '单位', dataIndex: 'productUnit', width: '4%', align: 'center', customRender: function (text) { return text || '--' } },
         { title: '成本价', scopedSlots: { customRender: 'putCost' }, width: '7%', align: 'center' },
         { title: '数量', scopedSlots: { customRender: 'putQty' }, width: '7%', align: 'center' },
-        { title: '成本小计', dataIndex: 'costSubtotal', width: '7%', align: 'center', customRender: function (text) { return ((text || text == 0) ? text : '--') } },
+        { title: '成本小计', dataIndex: 'costSubtotal', width: '7%', align: 'right', customRender: function (text) { return ((text || text == 0) ? toThousands(text, 2) : '--') } },
         { title: '仓库仓位', scopedSlots: { customRender: 'warehouse' }, width: '13%', align: 'center' },
         { title: '操作', scopedSlots: { customRender: 'action' }, width: '8%', align: 'center' }
       ],
@@ -521,14 +534,7 @@ export default {
     },
     // 双击快速添加
     handleClickRow (record) {
-      return {
-        on: {
-          dblclick: (event) => {
-            event.stopPropagation()
-            this.handleAdd(record)
-          }
-        }
-      }
+      this.handleAdd(record)
     },
     // 基本信息
     getDetail () {
@@ -744,8 +750,8 @@ export default {
               item.warehouseLocationList.filter(subItem => {
                 if (subItem.defaultFlag == 1 && subItem.wasteFlag == 0) {
                   _this.defaultWarehouseCascade[1] = subItem.warehouseLocationSn
-                  _this.$refs.table.refresh(true)
-                  _this.$refs.chooseTable.refresh(true)
+                  // _this.$refs.table.refresh(true)
+                  // _this.$refs.chooseTable.refresh(true)
                 }
               })
             }
@@ -817,5 +823,11 @@ export default {
         margin-left: 10px;
       }
     }
+    .rightPrice.ant-input-number-sm input{
+      text-align: right;
+    }
+    .ant-collapse .ant-collapse-item-disabled > .ant-collapse-header{
+    color:#333;
+        }
   }
 </style>

+ 7 - 12
src/views/bulkManagement/bulkWarehousingOrder/importGuideModal.vue

@@ -17,8 +17,12 @@
           <ul>
             <li>1) 导入的Excel文件中必须包含名为“产品编码”、“成本价”、“数量”、“仓库”、“仓位”的列,且名称必须相同,其它列可自定义,不影响数据导入</li>
             <li>2) 如果导入的产品已经存在,则不会导入该行</li>
+            <li>
+              <a :href="filePath" style="margin: 5px 0 0;display: block;">
+                <a-icon type="download" style="padding-right: 5px;" />下载导入模板
+              </a>
+            </li>
           </ul>
-          <a-button type="link" icon="download" style="padding: 0 0 0 23px;" @click="handleExport">下载导入模板</a-button>
         </div>
         <div class="explain-item">
           <div class="explain-tit">
@@ -87,7 +91,8 @@ export default {
       uploadParams: {
         savePathType: 'local',
         sparePartsPurchaseSn: this.params.sparePartsPurchaseSn
-      }
+      },
+      filePath: location.protocol + '//' +location.host + '/templ/散件入库产品导入模板.xlsx'
     }
   },
   methods: {
@@ -125,16 +130,6 @@ export default {
       this.openImportModal = false
       this.isShow = false
     },
-    // 下载模板
-    handleExport () {
-      const link = document.createElement('a')
-      link.style.display = 'none'
-      link.href = 'https://jianguan-images.oss-cn-beijing.aliyuncs.com/template/散件入库产品导入模板.xlsx'
-      link.setAttribute('download', '散件入库产品导入模板' + '.xlsx')
-      document.body.appendChild(link)
-      link.click()
-      document.body.removeChild(link)
-    }
   },
   watch: {
     //  父页面传过来的弹框状态

+ 3 - 2
src/views/bulkManagement/bulkWarehousingOrder/list.vue

@@ -86,7 +86,7 @@
         <div slot="message">
           共 <strong>{{ dataTotalCount }}</strong> 条记录,
           总数量合计 <strong>{{ productTotal&&(productTotal.productTotalQty || productTotal.productTotalQty==0) ? productTotal.productTotalQty : '--' }}</strong> ,
-          总金额合计 <strong>{{ productTotal&&(productTotal.productTotalCost || productTotal.productTotalCost==0) ? '¥'+productTotal.productTotalCost : '--' }}</strong>
+          总金额合计 <strong>{{ productTotal&&(productTotal.productTotalCost || productTotal.productTotalCost==0) ?toThousands(productTotal.productTotalCost,2) : '--' }}</strong>
         </div>
       </a-alert>
       <!-- 列表 -->
@@ -165,6 +165,7 @@ export default {
   components: { STable, VSelect, basicInfoModal, rangeDate, stateIcon, supplier },
   mixins: [commonMixin],
   data () {
+    const _this = this
     return {
       spinning: false,
       advanced: true, // 高级搜索 展开/关闭
@@ -196,7 +197,7 @@ export default {
         { title: '供应商', dataIndex: 'supplierName', width: '23%', align: 'center', customRender: function (text) { return text || '--' }, ellipsis: true },
         { title: '产品款数', dataIndex: 'productTotalCategory', width: '5%', align: 'center', customRender: function (text) { return ((text || text == 0) ? text : '--') } },
         { title: '总数量', dataIndex: 'productTotalQty', width: '5%', align: 'center', customRender: function (text) { return ((text || text == 0) ? text : '--') } },
-        { title: '总金额', dataIndex: 'productTotalCost', width: '5%', align: 'center', customRender: function (text) { return ((text || text == 0) ? text : '--') } },
+        { title: '总金额', dataIndex: 'productTotalCost', width: '5%', align: 'right', customRender: function (text) { return ((text || text == 0) ? _this.toThousands(text, 2) : '--') } },
         { title: '业务状态', dataIndex: 'stateDictValue', width: '5%', align: 'center', customRender: function (text) { return text || '--' } },
         { title: '提交', scopedSlots: { customRender: 'submit' }, width: '2%', align: 'center' },
         { title: '入库', scopedSlots: { customRender: 'waitOut' }, width: '2%', align: 'center' },

+ 1 - 0
src/views/chainReportData/chainStockReport/list.vue

@@ -338,6 +338,7 @@ export default {
     handleExport () {
       const _this = this
       const params = JSON.parse(JSON.stringify(this.queryParam))
+      params.showCost = this.$hasPermissions('M_ShowAllCost') ? '1' : '0'
       if (params.tenantId) {
         this.exportLoading = true
         _this.spinning = true

+ 0 - 1
src/views/common/custType.js

@@ -17,7 +17,6 @@ const custType = {
   props: {
     value: {
       type: String,
-      default: ''
     },
     id: {
       type: String,

+ 3 - 2
src/views/common/outInDetialModal.vue

@@ -102,6 +102,7 @@ export default {
   },
   computed: {
     columns () {
+      const _this = this
       const arr = [
         { title: '序号', dataIndex: 'no', width: '4%', align: 'center' },
         { title: '库存批次', dataIndex: 'stockBatchNo', width: '20%', align: 'center', customRender: function (text) { return text || '--' } },
@@ -113,8 +114,8 @@ export default {
         // { title: '成本小计', dataIndex: 'totalCost', width: '10%', align: 'center', customRender: function (text) { return ((text || text == 0) ? text : '--') } }
       ]
       if (this.$hasPermissions('M_ShowAllCost')) {
-        arr.splice(5, 0, { title: '成本价', dataIndex: 'putCost', width: '10%', align: 'center', customRender: function (text) { return ((text || text == 0) ? text : '--') } })
-        arr.splice(7, 0, { title: '成本小计', dataIndex: 'totalCost', width: '10%', align: 'center', customRender: function (text) { return ((text || text == 0) ? text : '--') } })
+        arr.splice(5, 0, { title: '成本价', dataIndex: 'putCost', width: '10%', align: 'right', customRender: function (text) { return ((text || text == 0) ?  _this.toThousands(text) : '--') } })
+        arr.splice(7, 0, { title: '成本小计', dataIndex: 'totalCost', width: '10%', align: 'right', customRender: function (text) { return ((text || text == 0) ?  _this.toThousands(text) : '--') } })
       }
       return arr
     }

+ 1 - 1
src/views/common/productBrand.js

@@ -17,7 +17,7 @@ const ProductBrand = {
   props: {
     value: {
       type: String,
-      default: ''
+      default: undefined
     },
     id: {
       type: String,

+ 1 - 2
src/views/common/shelfList.js

@@ -19,8 +19,7 @@ const shelfSList = {
     `,
   props: {
     value: {
-      type: [String, Array],
-      default: ''
+      type: [String, Array, Object],
     },
     id: {
       type: String,

+ 0 - 1
src/views/common/supplier.js

@@ -18,7 +18,6 @@ const Employee = {
   props: {
     value: {
       type: String,
-      default: ''
     },
     id: {
       type: String,

+ 11 - 2
src/views/common/warehouse.js

@@ -3,6 +3,7 @@ const Warehouse = {
   template: `
         <a-cascader
           :size="size"
+          :changeOnSelect="changeOnSelect"
           @change="handleChange"
           :value="defaultVal"
           expand-trigger="hover"
@@ -31,6 +32,14 @@ const Warehouse = {
     size: {
       type: String,
       default: 'default'
+    },
+    changeOnSelect:{
+      type: Boolean,
+      default: false
+    },
+    showDefault:{
+      type: Boolean,
+      default: true
     }
   },
   data () {
@@ -80,7 +89,7 @@ const Warehouse = {
             }
           })
           this.warehouseCascadeData = res.data
-          if(this.defaultVal.length==0){
+          if(this.defaultVal&&this.defaultVal.length==0&&this.showDefault){
             this.handleChange(_this.defaultWarehouseCascade)
           }
         } else {
@@ -89,7 +98,7 @@ const Warehouse = {
       })
     },
     setDefaultVal(){
-      if(this.defaultVal.length==0){
+      if(this.defaultVal&&this.defaultVal.length==0&&this.showDefault){
         this.handleChange(this.defaultWarehouseCascade)
       }
     }

+ 8 - 7
src/views/financialManagement/companyCollectionPayment/detail.vue

@@ -16,9 +16,9 @@
               <a-descriptions-item label="单位名称">{{ (basicInfoData&&basicInfoData.settleClientName) || '--' }}</a-descriptions-item>
               <a-descriptions-item label="单位类型">{{ (basicInfoData&&basicInfoData.settleClientTypeDictValue) || '--' }}</a-descriptions-item>
               <a-descriptions-item label="结算类型">{{ (basicInfoData&&basicInfoData.settleTypeDictValue) || '--' }}</a-descriptions-item>
-              <a-descriptions-item label="应结算金额">{{ (basicInfoData&&(basicInfoData.settleAmount || basicInfoData.settleAmount==0)) ? basicInfoData.settleAmount : '--' }}</a-descriptions-item>
-              <a-descriptions-item label="折让金额">{{ (discountAmount || discountAmount==0) ? discountAmount : '--' }}</a-descriptions-item>
-              <a-descriptions-item label="实结算金额">{{ (basicInfoData&&(basicInfoData.realSettleAmount || basicInfoData.realSettleAmount==0)) ? basicInfoData.realSettleAmount : '--' }}</a-descriptions-item>
+              <a-descriptions-item label="应结算金额">{{ (basicInfoData&&(basicInfoData.settleAmount || basicInfoData.settleAmount==0)) ? toThousands(basicInfoData.settleAmount) : '--' }}</a-descriptions-item>
+              <a-descriptions-item label="折让金额">{{ (discountAmount || discountAmount==0) ? toThousands(discountAmount) : '--' }}</a-descriptions-item>
+              <a-descriptions-item label="实结算金额">{{ (basicInfoData&&(basicInfoData.realSettleAmount || basicInfoData.realSettleAmount==0)) ? toThousands(basicInfoData.realSettleAmount) : '--' }}</a-descriptions-item>
               <a-descriptions-item label="结算时间">{{ (basicInfoData&&basicInfoData.createDate) || '--' }}</a-descriptions-item>
               <a-descriptions-item label="操作人">{{ (basicInfoData&&basicInfoData.operateName) || '--' }}</a-descriptions-item>
               <a-descriptions-item label="结算方式">{{ (basicInfoData&&basicInfoData.settleStyleSnDictValue) || '--' }}</a-descriptions-item>
@@ -35,8 +35,8 @@
             <a-alert type="info" style="margin-bottom:10px">
               <div slot="message">
                 共 <strong>{{ total }}</strong> 条明细,
-                金额合计 <strong>{{ (basicInfoData&&(basicInfoData.totalSettleAmount || basicInfoData.totalSettleAmount==0)) ? '¥'+basicInfoData.totalSettleAmount : '--' }}</strong> ,
-                结算金额合计 <strong>{{ (basicInfoData&&(basicInfoData.realSettleAmount || basicInfoData.realSettleAmount==0)) ? '¥'+basicInfoData.realSettleAmount : '--' }}</strong>
+                金额合计 <strong>{{ (basicInfoData&&(basicInfoData.totalSettleAmount || basicInfoData.totalSettleAmount==0)) ? toThousands(basicInfoData.totalSettleAmount) : '--' }}</strong> ,
+                结算金额合计 <strong>{{ (basicInfoData&&(basicInfoData.realSettleAmount || basicInfoData.realSettleAmount==0)) ? toThousands(basicInfoData.realSettleAmount) : '--' }}</strong>
               </div>
             </a-alert>
             <!-- 列表 -->
@@ -66,6 +66,7 @@ export default {
   components: { STable, VSelect },
   mixins: [commonMixin],
   data () {
+    const _this = this
     return {
       spinning: false,
       // 表头
@@ -73,8 +74,8 @@ export default {
         { title: '序号', dataIndex: 'no', align: 'center', width: '10%' },
         { title: '单据号', dataIndex: 'bizNo', align: 'center', width: '25%', customRender: function (text) { return text || '--' } },
         { title: '类型', dataIndex: 'bizTypeDictValue', align: 'center', width: '25%', customRender: function (text) { return text || '--' } },
-        { title: '金额', dataIndex: 'totalAmount', align: 'center', width: '20%', customRender: function (text) { return ((text || text == 0) ? text : '--') } },
-        { title: '结算金额', dataIndex: 'settleAmount', align: 'center', width: '20%', customRender: function (text) { return ((text || text == 0) ? text : '--') } }
+        { title: '金额', dataIndex: 'totalAmount', align: 'right', width: '20%', customRender: function (text) { return ((text || text == 0) ? _this.toThousands(text) : '--') } },
+        { title: '结算金额', dataIndex: 'settleAmount', align: 'right', width: '20%', customRender: function (text) { return ((text || text == 0) ? _this.toThousands(text) : '--') } }
       ],
       // 加载数据方法 必须为 Promise 对象
       loadData: parameter => {

+ 4 - 3
src/views/financialManagement/companyCollectionPayment/list.vue

@@ -73,9 +73,9 @@
         <div slot="message">
           共 <strong>{{ total }}</strong> 条记录,
           其中收款单 <strong>{{ (productTotal&&(productTotal.receiptCount || productTotal.receiptCount==0)) ? productTotal.receiptCount : '--' }}</strong> 条,
-          收款金额合计 <strong>{{ (productTotal&&(productTotal.receiptAmount || productTotal.receiptAmount==0)) ? '¥'+productTotal.receiptAmount : '--' }}</strong> ,
+          收款金额合计 <strong>{{ (productTotal&&(productTotal.receiptAmount || productTotal.receiptAmount==0)) ? toThousands(productTotal.receiptAmount) : '--' }}</strong> ,
           付款单 <strong>{{ (productTotal&&(productTotal.payCount || productTotal.payCount==0)) ? productTotal.payCount : '--' }}</strong> 条,
-          付款金额合计 <strong>{{ (productTotal&&(productTotal.payAmount || productTotal.payAmount==0)) ? '¥'+productTotal.payAmount : '--' }}</strong>
+          付款金额合计 <strong>{{ (productTotal&&(productTotal.payAmount || productTotal.payAmount==0)) ? toThousands(productTotal.payAmount) : '--' }}</strong>
         </div>
       </a-alert>
       <!-- 列表 -->
@@ -109,6 +109,7 @@ export default {
   components: { STable, VSelect, rangeDate },
   mixins: [commonMixin],
   data () {
+    const _this = this
     return {
       spinning: false,
       advanced: true, //  高级搜索 展开/关闭
@@ -131,7 +132,7 @@ export default {
         { title: '单位类型', dataIndex: 'settleClientTypeDictValue', width: '8%', align: 'center', customRender: function (text) { return text || '--' } },
         { title: '结算类型', dataIndex: 'settleTypeDictValue', width: '8%', align: 'center', customRender: function (text) { return text || '--' } },
         { title: '结算单号', scopedSlots: { customRender: 'unitSettleNo' }, width: '17%', align: 'center' },
-        { title: '结算金额', dataIndex: 'realSettleAmount', width: '7%', align: 'center', customRender: function (text) { return ((text || text == 0) ? text : '--') } },
+        { title: '结算金额', dataIndex: 'realSettleAmount', width: '7%', align: 'right', customRender: function (text) { return ((text || text == 0) ? _this.toThousands(text) : '--') } },
         { title: '结算时间', dataIndex: 'createDate', width: '12%', align: 'center', customRender: function (text) { return text || '--' } },
         { title: '操作人', dataIndex: 'operateName', width: '14%', align: 'center', customRender: function (text) { return text || '--' }, ellipsis: true },
         { title: '结算方式', dataIndex: 'settleStyleSnDictValue', width: '12%', align: 'center', customRender: function (text) { return text || '--' } }

+ 4 - 3
src/views/financialManagement/companyReceivablePayable/chooseBillModal.vue

@@ -7,7 +7,7 @@
     title="全部单据"
     v-model="isShow"
     @cancel="isShow=false"
-    :width="960">
+    width="70%">
     <a-spin :spinning="spinning" tip="Loading...">
       <!-- 搜索条件 -->
       <div class="table-page-search-wrapper">
@@ -94,6 +94,7 @@ export default {
     }
   },
   data () {
+    const _this = this
     return {
       spinning: false,
       isShow: this.openModal, //  是否打开弹框
@@ -111,8 +112,8 @@ export default {
         { title: '单据号', dataIndex: 'bizNo', width: '28%', align: 'center', customRender: function (text) { return text || '--' } },
         { title: '单据类型', dataIndex: 'bizTypeDictValue', width: '18%', align: 'center', customRender: function (text) { return text || '--' } },
         { title: '审核时间', dataIndex: 'auditTime', width: '18%', align: 'center', customRender: function (text) { return text || '--' } },
-        { title: '金额', dataIndex: 'totalAmount', width: '15%', align: 'center', customRender: function (text) { return ((text || text == 0) ? text : '--') } },
-        { title: '余额', dataIndex: 'unsettleAmount', width: '15%', align: 'center', customRender: function (text) { return ((text || text == 0) ? text : '--') } }
+        { title: '金额', dataIndex: 'totalAmount', width: '15%', align: 'right', customRender: function (text) { return ((text || text == 0) ? _this.toThousands(text) : '--') } },
+        { title: '余额', dataIndex: 'unsettleAmount', width: '15%', align: 'right', customRender: function (text) { return ((text || text == 0) ? _this.toThousands(text) : '--') } }
       ],
       // 加载数据方法 必须为 Promise 对象
       loadData: parameter => {

+ 6 - 5
src/views/financialManagement/companyReceivablePayable/collectionPayment.vue

@@ -23,9 +23,9 @@
             <a-alert type="info" style="margin-bottom:10px">
               <div slot="message">
                 共 <strong>{{ chooseLoadData.length }}</strong>条明细 ,
-                金额合计<strong>{{ totalAmount }}</strong> ,
-                余额合计<strong>{{ totalBalance }}</strong> ,
-                本次结算金额合计<strong>{{ currentTotalBalance }}</strong>
+                金额合计<strong>{{ toThousands(totalAmount) }}</strong> ,
+                余额合计<strong>{{ toThousands(totalBalance) }}</strong> ,
+                本次结算金额合计<strong>{{ toThousands(currentTotalBalance) }}</strong>
               </div>
             </a-alert>
             <!-- 列表 -->
@@ -191,6 +191,7 @@ export default {
   data () {
     this.amountSettledChange = debounce(this.amountSettledChange, 800)
     this.amountSettledTotalChange = debounce(this.amountSettledTotalChange, 800)
+    const _this = this
     return {
       spinning: false,
       loading: false, //  表格加载中
@@ -204,8 +205,8 @@ export default {
         { title: '单据号', dataIndex: 'bizNo', width: '20%', align: 'center', customRender: function (text) { return text || '--' } },
         { title: '单据类型', dataIndex: 'bizTypeDictValue', width: '15%', align: 'center', customRender: function (text) { return text || '--' } },
         { title: '审核时间', dataIndex: 'auditTime', width: '15%', align: 'center', customRender: function (text) { return text || '--' } },
-        { title: '金额', dataIndex: 'totalAmount', width: '10%', align: 'center', customRender: function (text) { return ((text || text == 0) ? text : '--') } },
-        { title: '余额', dataIndex: 'unsettleAmount', width: '10%', align: 'center', customRender: function (text) { return ((text || text == 0) ? text : '--') } },
+        { title: '金额', dataIndex: 'totalAmount', width: '10%', align: 'right', customRender: function (text) { return ((text || text == 0) ? _this.toThousands(text) : '--') } },
+        { title: '余额', dataIndex: 'unsettleAmount', width: '10%', align: 'right', customRender: function (text) { return ((text || text == 0) ? _this.toThousands(text) : '--') } },
         { title: '本次结算金额', scopedSlots: { customRender: 'settleAmount' }, width: '15%', align: 'center' },
         { title: '操作', scopedSlots: { customRender: 'action' }, width: '10%', align: 'center' }
       ],

+ 5 - 4
src/views/financialManagement/companyReceivablePayable/detail.vue

@@ -43,8 +43,8 @@
         <a-alert type="info" style="margin-bottom:10px">
           <div slot="message">
             共 <strong>{{ total }}</strong> 条明细,
-            金额合计 <strong>{{ (productTotal&&(productTotal.totalAmount || productTotal.totalAmount==0)) ? '¥'+productTotal.totalAmount : '--' }}</strong> ,
-            余额合计 <strong>{{ (productTotal&&(productTotal.unsettleAmount || productTotal.unsettleAmount==0)) ? '¥'+productTotal.unsettleAmount : '--' }}</strong>
+            金额合计 <strong>{{ (productTotal&&(productTotal.totalAmount || productTotal.totalAmount==0)) ? toThousands(productTotal.totalAmount) : '--' }}</strong> ,
+            余额合计 <strong>{{ (productTotal&&(productTotal.unsettleAmount || productTotal.unsettleAmount==0)) ? toThousands(productTotal.unsettleAmount) : '--' }}</strong>
           </div>
         </a-alert>
         <!-- 列表 -->
@@ -82,6 +82,7 @@ export default {
   components: { STable, VSelect, rangeDate },
   mixins: [commonMixin],
   data () {
+    const _this = this
     return {
       spinning: false,
       disabled: false, //  查询、重置按钮是否可操作
@@ -98,8 +99,8 @@ export default {
         { title: '单据号', dataIndex: 'bizNo', width: '20%', align: 'center', customRender: function (text) { return text || '--' } },
         { title: '类型', dataIndex: 'bizTypeDictValue', width: '20%', align: 'center', customRender: function (text) { return text || '--' } },
         { title: '审核时间', dataIndex: 'auditTime', width: '20%', align: 'center', customRender: function (text) { return text || '--' } },
-        { title: '金额', dataIndex: 'totalAmount', width: '17%', align: 'center', customRender: function (text) { return ((text || text == 0) ? text : '--') } },
-        { title: '余额', dataIndex: 'unsettleAmount', width: '17%', align: 'center', customRender: function (text) { return ((text || text == 0) ? text : '--') } }
+        { title: '金额', dataIndex: 'totalAmount', width: '17%', align: 'right', customRender: function (text) { return ((text || text == 0) ? _this.toThousands(text) : '--') } },
+        { title: '余额', dataIndex: 'unsettleAmount', width: '17%', align: 'right', customRender: function (text) { return ((text || text == 0) ? _this.toThousands(text) : '--') } }
       ],
       // 加载数据方法 必须为 Promise 对象
       loadData: parameter => {

+ 7 - 5
src/views/financialManagement/companyReceivablePayable/list.vue

@@ -34,8 +34,8 @@
       <a-alert type="info" style="margin-bottom:10px">
         <div slot="message">
           共 <strong>{{ total }}</strong> 条记录,
-          应收金额合计 <strong>{{ (productTotal&&(productTotal.receipt || productTotal.receipt==0)) ? '¥'+productTotal.receipt : '--' }}</strong> ,
-          应付金额合计 <strong>¥{{ (productTotal&&productTotal.pay) ? Math.abs(productTotal.pay) : 0 }}</strong>
+          应收金额合计 <strong>{{ (productTotal&&(productTotal.receipt || productTotal.receipt==0)) ? toThousands(productTotal.receipt) : '--' }}</strong> ,
+          应付金额合计 <strong>{{ (productTotal&&productTotal.pay) ? toThousands(productTotal.pay) : 0 }}</strong>
         </div>
       </a-alert>
       <!-- 列表 -->
@@ -44,7 +44,8 @@
         ref="table"
         :style="{ height: tableHeight+84.5+'px' }"
         size="small"
-        :rowKey="(record) => record.id"
+        :rowKey="(record) => record.settleClientSn"
+        rowKeyName="settleClientSn"
         :columns="columns"
         :data="loadData"
         :scroll="{ y: tableHeight }"
@@ -82,6 +83,7 @@ export default {
   components: { STable, VSelect },
   mixins: [commonMixin],
   data () {
+    const _this = this
     return {
       spinning: false,
       disabled: false, //  查询、重置按钮是否可操作
@@ -96,8 +98,8 @@ export default {
         { title: '序号', dataIndex: 'no', width: '5%', align: 'center' },
         { title: '单位名称', dataIndex: 'settleClientName', width: '20%', align: 'center', customRender: function (text) { return text || '--' } },
         { title: '单位类型', dataIndex: 'settleClientTypeDictValue', width: '20%', align: 'center', customRender: function (text) { return text || '--' } },
-        { title: '应收金额', dataIndex: 'unSettleAmountReceipt', width: '20%', align: 'center', customRender: function (text) { return ((text || text == 0) ? text : '--') } },
-        { title: '应付金额', dataIndex: 'unSettleAmountPay', width: '20%', align: 'center', customRender: function (text) { return ((text || text == 0) ? text : '--') } },
+        { title: '应收金额', dataIndex: 'unSettleAmountReceipt', width: '20%', align: 'right', customRender: function (text) { return ((text || text == 0) ? _this.toThousands(text) : '--') } },
+        { title: '应付金额', dataIndex: 'unSettleAmountPay', width: '20%', align: 'right', customRender: function (text) { return ((text || text == 0) ? _this.toThousands(text) : '--') } },
         { title: '操作', scopedSlots: { customRender: 'action' }, width: '15%', align: 'center' }
       ],
       // 加载数据方法 必须为 Promise 对象

+ 3 - 1
src/views/financialManagement/expenseManagement/detailModal.vue

@@ -22,7 +22,7 @@
           </div>
           <span v-else>--</span>
         </a-descriptions-item>
-        <a-descriptions-item label="费用金额">¥{{ detailsData&&detailsData.settleAmount || '--' }}</a-descriptions-item>
+        <a-descriptions-item label="费用金额">{{ detailsData&&detailsData.settleAmount ? toThousands(detailsData.settleAmount) : '--' }}</a-descriptions-item>
         <a-descriptions-item label="单据状态">{{ detailsData&&detailsData.stateDictValue || '--' }}</a-descriptions-item>
         <a-descriptions-item label="备注">{{ detailsData&&detailsData.remark || '--' }}</a-descriptions-item>
       </a-descriptions>
@@ -32,9 +32,11 @@
 </template>
 
 <script>
+import { commonMixin } from '@/utils/mixin'
 import { findExpenseDetail } from '@/api/settleExpense'
 export default {
   name: 'ExpenseManagementDetailModal',
+  mixins: [commonMixin],
   props: {
     openModal: { //  弹框显示状态
       type: Boolean,

+ 3 - 2
src/views/financialManagement/expenseManagement/list.vue

@@ -63,7 +63,7 @@
       <a-alert type="info" style="margin-bottom:10px">
         <div slot="message">
           共 <strong>{{ totalData&&(totalData.count || totalData.count==0) ? totalData.count : '--' }}</strong> 条记录,
-          金额共计 <strong>{{ totalData&&(totalData.totalAmount || totalData.totalAmount==0) ? '¥'+totalData.totalAmount : '--' }}</strong>
+          金额共计 <strong>{{ totalData&&(totalData.totalAmount || totalData.totalAmount==0) ? toThousands(totalData.totalAmount) : '--' }}</strong>
         </div>
       </a-alert>
       <!-- 列表 -->
@@ -135,6 +135,7 @@ export default {
   components: { STable, VSelect, expenseManagementDetailModal, rangeDate, stateIcon },
   mixins: [commonMixin],
   data () {
+    const _this = this
     return {
       spinning: false,
       tableHeight: 0,
@@ -164,7 +165,7 @@ export default {
         { title: '费用单号', dataIndex: 'accountExpensesNo', width: '20%', align: 'center', scopedSlots: { customRender: 'accountExpensesNo' } },
         { title: '创建时间', dataIndex: 'createDate', width: '20%', align: 'center', customRender: function (text) { return text || '--' } },
         { title: '费用类型', scopedSlots: { customRender: 'expensesType' }, width: '20%', align: 'center' },
-        { title: '金额', dataIndex: 'settleAmount', width: '10%', align: 'center', customRender: function (text) { return ((text || text == 0) ? ('¥' + text) : '--') } },
+        { title: '金额', dataIndex: 'settleAmount', width: '10%', align: 'right', customRender: function (text) { return ((text || text == 0) ? _this.toThousands(text) : '--') } },
         // { title: '单据状态', dataIndex: 'stateDictValue', width: '10%', align: 'center', customRender: function (text) { return text || '--' } },
         { title: '审核', scopedSlots: { customRender: 'audit' }, width: '3%', align: 'center' },
         { title: '操作', scopedSlots: { customRender: 'action' }, width: '15%', align: 'center' }

+ 3 - 1
src/views/financialManagement/financialCollection/detailModal.vue

@@ -14,7 +14,7 @@
         <a-descriptions-item label="收款单号">{{ detailsData&&detailsData.settleNo || '--' }}</a-descriptions-item>
         <a-descriptions-item label="关联单号">{{ detailsData&&detailsData.bizNo || '--' }}</a-descriptions-item>
         <a-descriptions-item label="商户名称">{{ detailsData&&detailsData.settleClientName || '--' }}</a-descriptions-item>
-        <a-descriptions-item label="收款金额">{{ detailsData&&(detailsData.settledAmount || detailsData.settledAmount==0) ? '¥'+ detailsData.settledAmount : '--' }}</a-descriptions-item>
+        <a-descriptions-item label="收款金额">{{ detailsData&&(detailsData.settledAmount || detailsData.settledAmount==0) ? toThousands(detailsData.settledAmount) : '--' }}</a-descriptions-item>
         <a-descriptions-item label="收款类型">{{ detailsData&&detailsData.bizTypeDictValue || '--' }}</a-descriptions-item>
         <a-descriptions-item label="收款方式">{{ detailsData&&detailsData.settleStyleSnDictValue || '--' }}</a-descriptions-item>
         <a-descriptions-item label="收款时间">{{ detailsData&&detailsData.settleTime || '--' }}</a-descriptions-item>
@@ -26,9 +26,11 @@
 </template>
 
 <script>
+import { commonMixin } from '@/utils/mixin'
 import { findReceiptDetail } from '@/api/settleReceipt'
 export default {
   name: 'FinancialPaymentDetailModal',
+  mixins: [commonMixin],
   props: {
     openModal: { //  弹框显示状态
       type: Boolean,

+ 12 - 9
src/views/financialManagement/financialCollection/list.vue

@@ -70,18 +70,18 @@
           <strong>{{ totalData&&(totalData.count || totalData.count==0) ? totalData.count : '--' }}</strong>
           条记录,应收金额合计
-          <strong>{{ totalData&&(totalData.totalAmount || totalData.totalAmount==0) ? '¥'+totalData.totalAmount : '--' }}</strong>
+          <strong>{{ totalData&&(totalData.totalAmount || totalData.totalAmount==0) ? toThousands(totalData.totalAmount) : '--' }}</strong>
           ,其中已收金额
-          <strong>{{ totalData&&(totalData.settledAmount || totalData.settledAmount==0) ? '¥'+totalData.settledAmount : '--' }}</strong>
+          <strong>{{ totalData&&(totalData.settledAmount || totalData.settledAmount==0) ? toThousands(totalData.settledAmount) : '--' }}</strong>
           ,待收金额
-          <strong>{{ totalData&&(totalData.unsettleAmount || totalData.unsettleAmount==0) ? '¥'+totalData.unsettleAmount : '--' }}</strong>
+          <strong>{{ totalData&&(totalData.unsettleAmount || totalData.unsettleAmount==0) ? toThousands(totalData.unsettleAmount) : '--' }}</strong>
         </div>
       </a-alert>
       <div v-if="$hasPermissions('B_financialCollectionPl')" style="margin-bottom: 10px">
         <a-button type="primary" id="financialCollectionList-export" :loading="loading" @click="enableFundAccount ? handleSettleAcountPay(null,1) : handleCollection()">批量收款</a-button>
         <span style="margin-left: 8px" v-if="$hasPermissions('B_financialCollectionPl')">
           <template v-if="rowSelectionInfo&&rowSelectionInfo.selectedRowKeys.length>0">{{ `已选 ${rowSelectionInfo.selectedRowKeys.length} 项` }}</template>
-          <template v-if="selectTotalAmount">,合计{{ selectTotalAmount }}</template>
+          <template v-if="selectTotalAmount">,合计{{ toThousands(selectTotalAmount) }}</template>
         </span>
       </div>
       <!-- 列表 -->
@@ -179,6 +179,7 @@ export default {
   components: { STable, VSelect, detailModal, rangeDate, settleModal, pushOrderDetailModal, pushOrderOutSyncDetailModal, salesDetailModal, chainTransferOutDetailModal, bulkReturnGoodsDetailModal, storeTransferOutDetailModal },
   mixins: [commonMixin],
   data () {
+    const _this = this
     return {
       spinning: false,
       advanced: true, //  高级搜索 展开/关闭
@@ -218,9 +219,9 @@ export default {
         { title: '收款单号', dataIndex: 'settleNo', width: '16%', align: 'center', customRender: function (text) { return text || '--' } },
         { title: '关联单号', dataIndex: 'bizNo', scopedSlots: { customRender: 'bizNo' }, width: '16%', align: 'center' },
         { title: '商户名称', dataIndex: 'settleClientName', width: '15%', align: 'center', customRender: function (text) { return text || '--' } },
-        { title: '应收金额', dataIndex: 'totalAmount', width: '6%', align: 'center', customRender: function (text) { return ((text || text == 0) ? ('¥' + text) : '--') } },
-        { title: '已收金额', dataIndex: 'settledAmount', width: '6%', align: 'center', customRender: function (text) { return ((text || text == 0) ? ('¥' + text) : '--') } },
-        { title: '待收金额', dataIndex: 'unsettleAmount', width: '6%', align: 'center', customRender: function (text) { return ((text || text == 0) ? ('¥' + text) : '--') } },
+        { title: '应收金额', dataIndex: 'totalAmount', width: '6%', align: 'right', customRender: function (text) { return ((text || text == 0) ? _this.toThousands(text) : '--') } },
+        { title: '已收金额', dataIndex: 'settledAmount', width: '6%', align: 'right', customRender: function (text) { return ((text || text == 0) ? _this.toThousands(text) : '--') } },
+        { title: '待收金额', dataIndex: 'unsettleAmount', width: '6%', align: 'right', customRender: function (text) { return ((text || text == 0) ? _this.toThousands(text) : '--') } },
         { title: '收款类型', dataIndex: 'bizName', width: '6%', align: 'center', customRender: function (text) { return text || '--' } },
         { title: '收款方式', dataIndex: 'settleStyleSnDictValue', width: '6%', align: 'center', customRender: function (text) { return text || '--' } },
         // { title: '创建时间', dataIndex: 'createDate', width: '10%', align: 'center', customRender: function (text) { return text || '--' } },
@@ -373,9 +374,10 @@ export default {
       const _this = this
       this.$confirm({
         title: '提示',
-        content: '确认收款吗?',
+        content: <div style="text-align:center"><p style="margin-top:20px;">{row.settleClientName}</p><p>收款单号:{row.settleNo},合计{ this.toThousands(row.unsettleAmount) }</p><p>确认收款吗?</p></div>,
         centered: true,
         closable: true,
+        class: 'confirm-center',
         onOk () {
           _this.settleAcountPay(null, { type: 0, row: row })
         }
@@ -396,9 +398,10 @@ export default {
       const _this = this
       this.$confirm({
         title: '提示',
-        content: <div><p style="margin-top:20px;">合计金额{ this.selectTotalAmount } </p><p>确认批量收款吗?</p></div>,
+        content: <div style="text-align:center"><p style="margin-top:20px;">共计{this.rowSelectionInfo.selectedRowKeys.length}单,合计金额{ this.toThousands(this.selectTotalAmount) } </p><p>确认批量收款吗?</p></div>,
         centered: true,
         closable: true,
+        class: 'confirm-center',
         onOk () {
           _this.settleAcountPay(null, { type: 1, row: null })
         }

+ 3 - 1
src/views/financialManagement/financialPayment/detailModal.vue

@@ -14,7 +14,7 @@
         <a-descriptions-item label="付款单号">{{ detailsData&&detailsData.settleNo || '--' }}</a-descriptions-item>
         <a-descriptions-item label="发货单号">{{ detailsData&&detailsData.bizNo || '--' }}</a-descriptions-item>
         <a-descriptions-item label="商户名称">{{ detailsData&&detailsData.settleClientName || '--' }}</a-descriptions-item>
-        <a-descriptions-item label="付款金额">{{ detailsData&&(detailsData.settledAmount || detailsData.settledAmount==0) ? '¥'+detailsData.settledAmount : '--' }}</a-descriptions-item>
+        <a-descriptions-item label="付款金额">{{ detailsData&&(detailsData.settledAmount || detailsData.settledAmount==0) ? toThousands(detailsData.settledAmount) : '--' }}</a-descriptions-item>
         <a-descriptions-item label="单据类型">{{ detailsData&&detailsData.bizTypeDictValue || '--' }}</a-descriptions-item>
         <a-descriptions-item label="付款方式">{{ detailsData&&detailsData.settleStyleName || '--' }}</a-descriptions-item>
         <a-descriptions-item label="付款时间">{{ detailsData&&detailsData.settleTime || '--' }}</a-descriptions-item>
@@ -26,9 +26,11 @@
 </template>
 
 <script>
+import { commonMixin } from '@/utils/mixin'
 import { findPayDetail } from '@/api/settlePay.js'
 export default {
   name: 'FinancialPaymentDetailModal',
+  mixins: [commonMixin],
   props: {
     openModal: { //  弹框显示状态
       type: Boolean,

+ 3 - 1
src/views/financialManagement/financialPayment/expenseDetail.vue

@@ -13,7 +13,7 @@
         </div>
         <span v-else>--</span>
       </a-descriptions-item>
-      <a-descriptions-item label="费用金额">¥{{ detailsData&&detailsData.settleAmount || '--' }}</a-descriptions-item>
+      <a-descriptions-item label="费用金额">{{ detailsData&&detailsData.settleAmount ? toThousands(detailsData.settleAmount) : '--' }}</a-descriptions-item>
       <a-descriptions-item label="单据状态">{{ detailsData&&detailsData.stateDictValue || '--' }}</a-descriptions-item>
       <a-descriptions-item label="备注">{{ detailsData&&detailsData.remark || '--' }}</a-descriptions-item>
     </a-descriptions>
@@ -21,9 +21,11 @@
 </template>
 
 <script>
+import { commonMixin } from '@/utils/mixin'
 import { findExpenseDetailBySn } from '@/api/settleExpense'
 export default {
   name: 'ExpenseManagementDetail',
+  mixins: [commonMixin],
   props: {
     outBizSn: {
       type: [Number, String],

+ 12 - 9
src/views/financialManagement/financialPayment/list.vue

@@ -69,18 +69,18 @@
           <strong>{{ totalData&&(totalData.count || totalData.count==0) ? totalData.count : '--' }}</strong>
           条记录,应付金额合计
-          <strong>{{ totalData&&(totalData.totalAmount || totalData.totalAmount==0) ? '¥'+totalData.totalAmount : '--' }}</strong>
+          <strong>{{ totalData&&(totalData.totalAmount || totalData.totalAmount==0) ? toThousands(totalData.totalAmount) : '--' }}</strong>
           ,其中已付金额
-          <strong>{{ totalData&&(totalData.settledAmount || totalData.settledAmount==0) ? '¥'+totalData.settledAmount : '--' }}</strong>
+          <strong>{{ totalData&&(totalData.settledAmount || totalData.settledAmount==0) ? toThousands(totalData.settledAmount) : '--' }}</strong>
           ,待付金额
-          <strong>{{ totalData&&(totalData.unsettleAmount || totalData.unsettleAmount==0) ? '¥'+totalData.unsettleAmount : '--' }}</strong>
+          <strong>{{ totalData&&(totalData.unsettleAmount || totalData.unsettleAmount==0) ? toThousands(totalData.unsettleAmount) : '--' }}</strong>
         </div>
       </a-alert>
       <div v-if="$hasPermissions('B_financialPaymentPl')" style="margin-bottom: 10px">
         <a-button type="primary" id="finacialPay-export" :loading="loading" @click="enableFundAccount ? handleSettleAcountPay(null,1) : handlePayment()">批量付款</a-button>
         <span style="margin-left: 8px" v-if="$hasPermissions('B_financialPaymentPl')">
           <template v-if="rowSelectionInfo&&rowSelectionInfo.selectedRowKeys.length>0">{{ `已选 ${rowSelectionInfo.selectedRowKeys.length} 项` }}</template>
-          <template v-if="selectTotalAmount">,合计¥{{ selectTotalAmount }}</template>
+          <template v-if="selectTotalAmount">,合计 {{ toThousands(selectTotalAmount) }}</template>
         </span>
       </div>
       <!-- 列表 -->
@@ -176,6 +176,7 @@ export default {
   components: { STable, VSelect, detailModal, rangeDate, settleModal, salesReturnDetail, chainTransInDetail, bulkWareDetail, expenseDetail, purchasDetail, stockOrderDetail },
   mixins: [commonMixin],
   data () {
+    const _this = this
     return {
       spinning: false,
       advanced: true, //  高级搜索 展开/关闭
@@ -214,9 +215,9 @@ export default {
         { title: '付款单号', dataIndex: 'settleNo', width: '14%', align: 'center', customRender: function (text) { return text || '--' } },
         { title: '关联单号', dataIndex: 'bizNo', scopedSlots: { customRender: 'bizNo' }, width: '14%', align: 'center' },
         { title: '商户名称', dataIndex: 'settleClientName', width: '10%', align: 'center', customRender: function (text) { return text || '--' } },
-        { title: '应付金额', dataIndex: 'totalAmount', width: '6%', align: 'center', customRender: function (text) { return ((text || text == 0) ? ('¥' + text) : '--') } },
-        { title: '已付金额', dataIndex: 'settledAmount', width: '6%', align: 'center', customRender: function (text) { return ((text || text == 0) ? ('¥' + text) : '--') } },
-        { title: '待付金额', dataIndex: 'unsettleAmount', width: '6%', align: 'center', customRender: function (text) { return ((text || text == 0) ? ('¥' + text) : '--') } },
+        { title: '应付金额', dataIndex: 'totalAmount', width: '6%', align: 'right', customRender: function (text) { return ((text || text == 0) ? _this.toThousands(text) : '--') } },
+        { title: '已付金额', dataIndex: 'settledAmount', width: '6%', align: 'right', customRender: function (text) { return ((text || text == 0) ? _this.toThousands(text) : '--') } },
+        { title: '待付金额', dataIndex: 'unsettleAmount', width: '6%', align: 'right', customRender: function (text) { return ((text || text == 0) ? _this.toThousands(text) : '--') } },
         { title: '单据类型', dataIndex: 'bizName', width: '7%', align: 'center', customRender: function (text) { return text || '--' } },
         { title: '付款方式', dataIndex: 'settleStyleName', width: '6%', align: 'center', customRender: function (text) { return text || '--' } },
         // { title: '创建时间', dataIndex: 'createDate', width: '10%', align: 'center', customRender: function (text) { return text || '--' } },
@@ -376,9 +377,10 @@ export default {
       const _this = this
       this.$confirm({
         title: '提示',
-        content: '确认付款吗?',
+        content: <div style="text-align:center"><p style="margin-top:20px;">{row.settleClientName}</p><p>付款单号:{row.settleNo},合计{ this.toThousands(row.unsettleAmount) }</p><p>确认付款吗?</p></div>,
         centered: true,
         closable: true,
+        class: 'confirm-center',
         onOk () {
           _this.settleAcountPay(null, { type: 0, row: row })
         }
@@ -399,9 +401,10 @@ export default {
       const _this = this
       this.$confirm({
         title: '提示',
-        content: <div><p style="margin-top:20px;">合计金额{ this.selectTotalAmount } </p><p>确认批量付款吗?</p></div>,
+        content: <div style="text-align:center"><p style="margin-top:20px;">共计{this.rowSelectionInfo.selectedRowKeys.length}单,合计金额{ _this.toThousands(this.selectTotalAmount) } </p><p>确认批量付款吗?</p></div>,
         centered: true,
         closable: true,
+        class: 'confirm-center',
         onOk () {
           _this.settleAcountPay(null, { type: 1, row: null })
         }

+ 1 - 1
src/views/financialManagement/fundAccountManagement/detail.vue

@@ -69,7 +69,7 @@
           bordered>
           <!-- 结算金额 -->
           <template slot="settleAmount" slot-scope="text, record">
-            <span :style="{color:text<0?'red':''}">{{ ((text || text == 0) ? (text) : '--') }}</span>
+            <span :style="{color:text<0?'red':''}">{{ ((text || text == 0) ? toThousands(text) : '--') }}</span>
           </template>
         </s-table>
       </a-card>

+ 3 - 2
src/views/financialManagement/fundAccountManagement/list.vue

@@ -98,6 +98,7 @@ export default {
   components: { STable, VSelect, addModal, rangeDate },
   mixins: [commonMixin],
   data () {
+    const _this = this
     return {
       spinning: false,
       tableHeight: 0,
@@ -112,8 +113,8 @@ export default {
         { title: '账户类型', dataIndex: 'settleStyleName', width: '20%', align: 'center', customRender: function (text) { return text || '--' } },
         { title: '账户名称', dataIndex: 'accountName', width: '20%', align: 'center', customRender: function (text) { return text || '--' } },
         { title: '账户号码', dataIndex: 'accountNo', width: '20%', align: 'center', customRender: function (text) { return text || '--' } },
-        { title: '收入金额', dataIndex: 'totalIncomeAmount', width: '10%', align: 'center', customRender: function (text) { return ((text || text == 0) ? (text) : '--') } },
-        { title: '支出金额', dataIndex: 'totalExpendAmount', width: '10%', align: 'center', customRender: function (text) { return ((text || text == 0) ? (text) : '--') } },
+        { title: '收入金额', dataIndex: 'totalIncomeAmount', width: '10%', align: 'right', customRender: function (text) { return ((text || text == 0) ? _this.toThousands(text) : '--') } },
+        { title: '支出金额', dataIndex: 'totalExpendAmount', width: '10%', align: 'right', customRender: function (text) { return ((text || text == 0) ? _this.toThousands(text) : '--') } },
         { title: '状态', dataIndex: 'stateDictValue', width: '10%', align: 'center', customRender: function (text) { return text || '--' } },
         { title: '操作', scopedSlots: { customRender: 'action' }, width: '15%', align: 'center' }
       ],

+ 2 - 1
src/views/financialManagement/inventoryCheckAudit/list.vue

@@ -126,6 +126,7 @@ export default {
   },
   computed: {
     columns () {
+      const _this = this
       const arr = [
         { title: '序号', dataIndex: 'no', width: '4%', align: 'center' },
         { title: '盘点单号', scopedSlots: { customRender: 'checkWarehouseNo' }, width: '15%', align: 'center' },
@@ -141,7 +142,7 @@ export default {
         { title: '操作', scopedSlots: { customRender: 'action' }, width: '10%', align: 'center' }
       ]
       if (this.$hasPermissions('M_ShowAllCost')) {
-        arr.splice(4, 0, { title: '总成本', dataIndex: 'totalStockCost', width: '7%', align: 'center', customRender: function (text) { return ((text || text == 0) ? text : '--') } })
+        arr.splice(4, 0, { title: '总成本', dataIndex: 'totalStockCost', width: '7%', align: 'right', customRender: function (text) { return ((text || text == 0) ? _this.toThousands(text) : '--') } })
       }
       return arr
     }

+ 3 - 2
src/views/financialManagement/ledgerRecord/list.vue

@@ -43,7 +43,7 @@
     <a-alert type="info" style="margin-bottom:10px">
       <div slot="message">
         总计:<strong>{{ total }}</strong>条 ,
-        分账金额:<strong>{{ (totalAmount || totalAmount == 0) ? totalAmount+'元' : '--' }}</strong>
+        分账金额:<strong>{{ (totalAmount || totalAmount == 0) ? toThousands(totalAmount) : '--' }}</strong>
       </div>
     </a-alert>
     <!-- 列表 -->
@@ -74,6 +74,7 @@ export default {
   components: { STable, VSelect, rangeDate, custSatelliteList },
   mixins: [commonMixin],
   data () {
+    const _this = this
     return {
       advanced: true, //  高级搜索 展开/关闭
       disabled: false, //  查询、重置按钮是否可操作
@@ -103,7 +104,7 @@ export default {
         { title: '产品名称', dataIndex: 'dealerProduct.name', align: 'center', customRender: function (text) { return text || '--' }, ellipsis: true },
         { title: '产品编码', dataIndex: 'dealerProduct.code', width: 220, align: 'center', customRender: function (text) { return text || '--' } },
         { title: '数量', dataIndex: 'productQty', width: 100, align: 'center', customRender: function (text) { return ((text || text == 0) ? text : '--') } },
-        { title: '分账金额(¥)', dataIndex: 'separateAmount', width: 120, align: 'center', customRender: function (text) { return ((text || text == 0) ? text : '--') } },
+        { title: '分账金额', dataIndex: 'separateAmount', width: 120, align: 'right', customRender: function (text) { return ((text || text == 0) ? _this.toThousands(text) : '--') } },
         { title: '分账状态', dataIndex: 'stateDictValue', width: 150, align: 'center', customRender: function (text) { return text || '--' } },
         { title: '备注', dataIndex: 'remark', align: 'center', customRender: function (text) { return text || '--' }, ellipsis: true }
       ],

+ 1 - 1
src/views/financialManagement/settleModal/settleModal.vue

@@ -23,7 +23,7 @@
         </a-form-model-item>
         <a-form-model-item style="margin-bottom: 10px;" :label="title+'金额'" v-if="baseData">
           <span class="ant-form-text">
-            {{ baseData.totalAmount }}
+            {{ toThousands(baseData.totalAmount) }}
           </span>
         </a-form-model-item>
         <a-form-model-item label="结算方式" prop="settleStyleSn">

+ 5 - 4
src/views/financialManagement/warehousingAudit/detail.vue

@@ -24,10 +24,10 @@
             <a-descriptions :column="4" size="small">
               <a-descriptions-item label="采购总款数">{{ basicInfoData&&(basicInfoData.totalCategory || basicInfoData.totalCategory==0) ? basicInfoData.totalCategory : '--' }}</a-descriptions-item>
               <a-descriptions-item label="采购总数量">{{ basicInfoData&&(basicInfoData.totalQty || basicInfoData.totalQty==0) ? basicInfoData.totalQty : '--' }}</a-descriptions-item>
-              <a-descriptions-item label="采购总成本" v-if="$hasPermissions('M_ShowAllCost')">{{ basicInfoData&&(basicInfoData.totalAmount || basicInfoData.totalAmount==0) ? '¥'+basicInfoData.totalAmount : '--' }}</a-descriptions-item>
+              <a-descriptions-item label="采购总成本" v-if="$hasPermissions('M_ShowAllCost')">{{ basicInfoData&&(basicInfoData.totalAmount || basicInfoData.totalAmount==0) ? toThousands(basicInfoData.totalAmount) : '--' }}</a-descriptions-item>
               <a-descriptions-item label="入库总款数">{{ basicInfoData&&(basicInfoData.totalPutCategory || basicInfoData.totalPutCategory==0) ? basicInfoData.totalPutCategory : '--' }}</a-descriptions-item>
               <a-descriptions-item label="入库总数量">{{ basicInfoData&&(basicInfoData.totalPutQty || basicInfoData.totalPutQty==0) ? basicInfoData.totalPutQty : '--' }}</a-descriptions-item>
-              <a-descriptions-item label="入库总成本" v-if="$hasPermissions('M_ShowAllCost')">{{ basicInfoData&&(basicInfoData.totalPutAmount || basicInfoData.totalPutAmount==0) ? '¥'+basicInfoData.totalPutAmount : '--' }}</a-descriptions-item>
+              <a-descriptions-item label="入库总成本" v-if="$hasPermissions('M_ShowAllCost')">{{ basicInfoData&&(basicInfoData.totalPutAmount || basicInfoData.totalPutAmount==0) ? toThousands(basicInfoData.totalPutAmount) : '--' }}</a-descriptions-item>
             </a-descriptions>
           </a-collapse-panel>
         </a-collapse>
@@ -93,6 +93,7 @@ export default {
   },
   computed: {
     columns () {
+      const _this = this
       const arr = [
         { title: '序号', dataIndex: 'no', width: '4%', align: 'center' },
         { title: '产品编码', dataIndex: 'dealerProductEntity.code', width: '15%', align: 'center', customRender: function (text) { return text || '--' } },
@@ -107,8 +108,8 @@ export default {
         { title: '仓位', dataIndex: 'warehouseLocationEntity.name', width: '9%', align: 'center', customRender: function (text) { return text || '--' }, ellipsis: true }
       ]
       if (this.$hasPermissions('M_ShowAllCost')) {
-        arr.splice(6, 0, { title: '成本价', dataIndex: 'discountedPrice', width: '7%', align: 'center', customRender: function (text) { return ((text || text == 0) ? text : '--') } })
-        arr.splice(8, 0, { title: '入库小计', dataIndex: 'discountedAmount', width: '7%', align: 'center', customRender: function (text) { return ((text || text == 0) ? text : '--') } })
+        arr.splice(6, 0, { title: '成本价', dataIndex: 'discountedPrice', width: '7%', align: 'right', customRender: function (text) { return ((text || text == 0) ? _this.toThousands(text) : '--') } })
+        arr.splice(8, 0, { title: '入库小计', dataIndex: 'discountedAmount', width: '7%', align: 'right', customRender: function (text) { return ((text || text == 0) ? _this.toThousands(text) : '--') } })
       }
       return arr
     }

+ 2 - 1
src/views/financialManagement/warehousingAudit/list.vue

@@ -160,6 +160,7 @@ export default {
   },
   computed: {
     columns () {
+      const _this = this
       const arr = [
         { title: '序号', dataIndex: 'no', width: '4%', align: 'center' },
         { title: '采购单号', dataIndex: 'purchaseBillNo', width: '15%', align: 'center', customRender: function (text) { return text || '--' } },
@@ -174,7 +175,7 @@ export default {
         { title: '操作', scopedSlots: { customRender: 'action' }, width: '10%', align: 'center' }
       ]
       if (this.$hasPermissions('M_ShowAllCost')) {
-        arr.splice(5, 0, { title: '入库总成本', dataIndex: 'totalPutAmount', width: '8%', align: 'center', customRender: function (text) { return ((text || text == 0) ? text : '--') } })
+        arr.splice(5, 0, { title: '入库总成本', dataIndex: 'totalPutAmount', width: '8%', align: 'right', customRender: function (text) { return ((text || text == 0) ? _this.toThousands(text) : '--') } })
       }
       return arr
     }

+ 1 - 1
src/views/financialManagement/withdrawalManagement/cashOutModal.vue

@@ -30,7 +30,7 @@
               style="width: 100%;" />
           </a-form-model-item>
           <a-form-model-item label="实际扣除金额" prop="brandName">
-            <strong>{{ deductionAmount }}</strong>元(申请提现金额+提现手续费)
+            <strong>{{ toThousands(deductionAmount) }}</strong>元(申请提现金额+提现手续费)
           </a-form-model-item>
           <a-form-model-item label="提现账户" prop="brandName">
             <div>{{ nowData&&nowData.bankName || '--' }}({{ nowData&&nowData.accountName || '--' }})</div>

+ 1 - 1
src/views/financialManagement/withdrawalManagement/list.vue

@@ -22,7 +22,7 @@
       <!-- 操作按钮 -->
       <div class="table-operator">
         <a-button v-if="$hasPermissions('B_withdrawalManagement_cashOut')" id="withdrawalManagementList-tx" type="primary" class="button-warning" @click="handleCashOut">申请提现</a-button>
-        <div style="display: inline-block;margin-left: 80px;">可提现余额: <strong>{{ accountInfo&&(accountInfo.balance || accountInfo.balance==0) ? '¥'+accountInfo.balance : '--' }}</strong> 元</div>
+        <div style="display: inline-block;margin-left: 80px;">可提现余额: <strong>{{ accountInfo&&(accountInfo.balance || accountInfo.balance==0) ? toThousands(accountInfo.balance) : '--' }}</strong> 元</div>
       </div>
       <!-- 列表 -->
       <s-table

+ 6 - 9
src/views/inventoryManagement/inventoryChecking/detailModal.vue

@@ -59,16 +59,16 @@
                   总款数: <strong>{{ productTotal&&(productTotal.totalCategory || productTotal.totalCategory==0) ? productTotal.totalCategory : '--' }}</strong> ,
                   总数量: <strong>{{ productTotal&&(productTotal.stockQty || productTotal.stockQty==0) ? productTotal.stockQty : '--' }}</strong> ,
                   <div style="display: inline-block;" v-if="$hasPermissions('M_ShowAllCost')">
-                    总成本: <strong>{{ productTotal&&(productTotal.checkCost || productTotal.checkCost==0) ? '¥'+productTotal.checkCost : '--' }}</strong>
+                    总成本: <strong>{{ productTotal&&(productTotal.checkCost || productTotal.checkCost==0) ? toThousands(productTotal.checkCost) : '--' }}</strong>
                   </div>
                 </div>
                 <div>
                   盘盈总数量: <strong>{{ productTotal&&(productTotal.checkProfitQty || productTotal.checkProfitQty==0) ? productTotal.checkProfitQty : '--' }}</strong>,
-                  <span v-if="basicInfoData&&basicInfoData.state=='FINISH'">盘盈总成本: <strong>{{ productTotal&&(productTotal.checkProfitCost || productTotal.checkProfitCost==0) ? productTotal.checkProfitCost : '--' }}</strong>,</span>
+                  <span v-if="basicInfoData&&basicInfoData.state=='FINISH'">盘盈总成本: <strong>{{ productTotal&&(productTotal.checkProfitCost || productTotal.checkProfitCost==0) ? toThousands(productTotal.checkProfitCost) : '--' }}</strong>,</span>
                   盘亏总数量: <strong>{{ productTotal&&(productTotal.checkLossQty || productTotal.checkLossQty==0) ? productTotal.checkLossQty : '--' }}</strong>,
-                  <span v-if="basicInfoData&&basicInfoData.state=='FINISH'">盘亏总成本: <strong>{{ productTotal&&(productTotal.checkLossCost || productTotal.checkLossCost==0) ? productTotal.checkLossCost : '--' }}</strong>,</span>
+                  <span v-if="basicInfoData&&basicInfoData.state=='FINISH'">盘亏总成本: <strong>{{ productTotal&&(productTotal.checkLossCost || productTotal.checkLossCost==0) ? toThousands(productTotal.checkLossCost) : '--' }}</strong>,</span>
                   盈亏总数量: <strong>{{ productTotal&&(productTotal.totalCheckProfitLossQty || productTotal.totalCheckProfitLossQty==0) ? productTotal.totalCheckProfitLossQty : '--' }}</strong>,
-                  <span v-if="basicInfoData&&basicInfoData.state=='FINISH'">盈亏总成本: <strong>{{ productTotal&&(productTotal.totalCheckProfitLossCost || productTotal.totalCheckProfitLossCost==0) ? productTotal.totalCheckProfitLossCost : '--' }}</strong>,</span>
+                  <span v-if="basicInfoData&&basicInfoData.state=='FINISH'">盈亏总成本: <strong>{{ productTotal&&(productTotal.totalCheckProfitLossCost || productTotal.totalCheckProfitLossCost==0) ? toThousands(productTotal.totalCheckProfitLossCost) : '--' }}</strong>,</span>
                 </div>
               </div>
               <div>
@@ -107,7 +107,7 @@
                     </a-form-item>
                   </a-col>
                 </template>
-                <a-col :md="5" :sm="24" style="margin-bottom: 10px;">
+                <a-col :md="6" :sm="24" style="margin-bottom: 10px;">
                   <a-button type="primary" @click="$refs.table.refresh(true)" :disabled="disabled" id="inventoryCheckMakeInventoryList-refresh">查询</a-button>
                   <a-button style="margin-left: 5px" @click="resetSearchForm" :disabled="disabled" id="inventoryCheckMakeInventoryList-reset">重置</a-button>
                   <a @click="advanced=!advanced" style="margin-left: 5px" v-if="basicInfoData&&basicInfoData.warehouseFlag=='1'">
@@ -143,7 +143,7 @@
           </template>
           <!-- 盈亏成本 -->
           <template slot="checkProfitLossCost" slot-scope="text, record">
-            <span :style="{ color: record.checkProfitLossCost>0?'red':record.checkProfitLossCost<0?'green':'', fontWeight: record.checkProfitLossCost!=0?'bold':'' }">{{ (record.checkProfitLossCost || record.checkProfitLossCost==0) ? '¥'+formatDecimal(Math.abs(record.checkProfitLossCost), 2) : '--' }}</span>
+            <span :style="{ color: record.checkProfitLossCost>0?'red':record.checkProfitLossCost<0?'green':'', fontWeight: record.checkProfitLossCost!=0?'bold':'' }">{{ (record.checkProfitLossCost || record.checkProfitLossCost==0) ? toThousands(record.checkProfitLossCost) : '--' }}</span>
           </template>
         </s-table>
       </a-card>
@@ -164,7 +164,6 @@ import { STable } from '@/components'
 import printModal from './printModal.vue'
 import exportModal from './exportModal.vue'
 import ProductType from '@/views/common/productType.js'
-import { formatDecimal } from '@/libs/tools'
 import { checkWarehouseDetailList, checkWarehouseDetail, checkWarehouseDetailCount, checkWarehouseDetailExport, checkWarehouseDetailPrint, checkWarehouseWarehouse } from '@/api/checkWarehouse'
 export default {
   name: 'InventoryCheckingDetailModal',
@@ -254,8 +253,6 @@ export default {
     }
   },
   methods: {
-    // 保留两位小数(不四舍五入)
-    formatDecimal,
     // 详情
     getDetail () {
       checkWarehouseDetail({ sn: this.itemSn }).then(res => {

+ 2 - 1
src/views/inventoryManagement/inventoryChecking/list.vue

@@ -180,6 +180,7 @@ export default {
   },
   computed: {
     columns () {
+      const _this = this
       const arr = [
         { title: '序号', dataIndex: 'no', width: '4%', align: 'center' },
         { title: '盘点单号', scopedSlots: { customRender: 'checkWarehouseNo' }, width: '12%', align: 'center' },
@@ -196,7 +197,7 @@ export default {
         { title: '操作', scopedSlots: { customRender: 'action' }, width: '10%', align: 'center' }
       ]
       if (this.$hasPermissions('M_ShowAllCost')) {
-        arr.splice(4, 0, { title: '总成本', dataIndex: 'totalStockCost', width: '10%', align: 'center', customRender: function (text) { return ((text || text == 0) ? text : '--') } })
+        arr.splice(4, 0, { title: '总成本', dataIndex: 'totalStockCost', width: '10%', align: 'right', customRender: function (text) { return ((text || text == 0) ? _this.toThousands(text) : '--') } })
       }
       return arr
     }

+ 1 - 1
src/views/inventoryManagement/inventoryChecking/makeInventory.vue

@@ -57,7 +57,7 @@
                 总款数: <strong>{{ productTotal&&(productTotal.totalCategory || productTotal.totalCategory==0) ? productTotal.totalCategory : '--' }}</strong> ,
                 总数量: <strong>{{ productTotal&&(productTotal.stockQty || productTotal.stockQty==0) ? productTotal.stockQty : '--' }}</strong> ,
                 <div style="display: inline-block;" v-if="$hasPermissions('M_ShowAllCost')">
-                  总成本: <strong>{{ productTotal&&(productTotal.checkCost || productTotal.checkCost==0) ? '¥'+productTotal.checkCost : '--' }}</strong> ,
+                  总成本: <strong>{{ productTotal&&(productTotal.checkCost || productTotal.checkCost==0) ? toThousands(productTotal.checkCost) : '--' }}</strong> ,
                 </div>
                 盘盈数量: <strong>{{ productTotal&&(productTotal.checkProfitQty || productTotal.checkProfitQty==0) ? productTotal.checkProfitQty : '--' }}</strong> ,
                 盘亏数量: <strong>{{ productTotal&&(productTotal.checkLossQty || productTotal.checkLossQty==0) ? productTotal.checkLossQty : '--' }}</strong>

+ 1 - 1
src/views/inventoryManagement/inventoryChecking/overall.vue

@@ -29,7 +29,7 @@
             总款数: <strong>{{ productTotal&&(productTotal.totalCategory || productTotal.totalCategory==0) ? productTotal.totalCategory : '--' }}</strong> ,
             总数量: <strong>{{ productTotal&&(productTotal.stockQty || productTotal.stockQty==0) ? productTotal.stockQty : '--' }}</strong>
             <div style="display: inline-block;" v-if="$hasPermissions('M_ShowAllCost')">
-              ,总成本: <strong>{{ productTotal&&(productTotal.checkCost || productTotal.checkCost==0) ? '¥'+productTotal.checkCost : '--' }}</strong>。
+              ,总成本: <strong>{{ productTotal&&(productTotal.checkCost || productTotal.checkCost==0) ? toThousands(productTotal.checkCost) : '--' }}</strong>。
             </div>
           </div>
         </a-alert>

+ 15 - 27
src/views/inventoryManagement/inventoryChecking/selfDisk.vue

@@ -11,7 +11,7 @@
       </a-page-header>
       <!-- 基础信息 -->
       <a-card size="small" :bordered="false" class="inventoryCheckSelfDiskList-cont">
-        <a-collapse defaultActiveKey="1">
+        <a-collapse>
           <a-collapse-panel key="1" header="基础信息">
             <a-descriptions :column="3">
               <a-descriptions-item label="盘点类型">{{ (basicInfoData&&basicInfoData.checkTypeDictValue) || '--' }}</a-descriptions-item>
@@ -58,20 +58,15 @@
                       </a-select>
                     </a-form-item>
                   </a-col>
-                  <a-col :md="3" :sm="12">
-                    <a-form-item label="">
-                      <a-checkbox @change="onlySeeStock" :checked="showChecked">只查看有库存</a-checkbox>
-                    </a-form-item>
-                  </a-col>
-                  <a-col :md="4" :sm="16" style="margin-bottom: 10px;">
+                  <a-col :md="8" :sm="16" style="margin-bottom: 10px;">
+                    <a-checkbox @change="onlySeeStock" :checked="showChecked">只查看有库存</a-checkbox>
                     <a-button type="primary" @click="searchForm" :disabled="disabled" id="inventoryCheckSelfDiskList-refresh">查询</a-button>
                     <a-button style="margin-left: 5px" @click="resetSearchForm" :disabled="disabled" id="inventoryCheckSelfDiskList-reset">重置</a-button>
                   </a-col>
                 </a-row>
               </a-form>
             </a-col>
-            <a-col :md="19"></a-col>
-            <a-col :md="5" :sm="20" style="margin-bottom: 10px;text-align: right;">
+            <a-col :md="24" :sm="20" style="margin-bottom: 10px;text-align: left;">
               <a-button size="small" type="primary" class="button-info" @click.stop="handleBatchAdd('batch')" id="chainTransferOutEdit-del-all-btn">批量添加</a-button>
               <a-button
                 size="small"
@@ -93,7 +88,7 @@
           :row-selection="{ columnWidth: 40 }"
           @rowSelection="rowSelectionFun"
           :columns="columns"
-          :customRow="handleClickRow"
+          @dblclick="handleClickRow"
           :data="loadData"
           :scroll="{ y: 150 }"
           :defaultLoadData="false"
@@ -110,7 +105,7 @@
               type="link"
               class="button-primary"
               :disabled="spinning"
-              @click.stop="handleAdd(record)"
+              @click="handleAdd(record)"
               id="inventoryCheckSelfDiskList-add-btn">添加</a-button>
           </template>
         </s-table>
@@ -122,34 +117,34 @@
             <a-col :md="24" :sm="24">
               <a-form layout="inline" @keyup.enter.native="$refs.chooseTable.refresh(true)">
                 <a-row :gutter="15">
-                  <a-col :md="5" :sm="20">
+                  <a-col :md="4" :sm="20">
                     <a-form-item label="产品编码" prop="productCode">
                       <a-input id="inventoryCheckSelfDiskList-productCode" v-model.trim="chooseQueryParam.productCode" placeholder="请输入" allowClear />
                     </a-form-item>
                   </a-col>
-                  <a-col :md="5" :sm="20">
+                  <a-col :md="4" :sm="20">
                     <a-form-item label="产品名称" prop="productName">
                       <a-input id="inventoryCheckSelfDiskList-productName" v-model.trim="chooseQueryParam.productName" placeholder="请输入" allowClear />
                     </a-form-item>
                   </a-col>
-                  <a-col :md="5" :sm="20">
+                  <a-col :md="4" :sm="20">
                     <a-form-item label="产品品牌">
                       <ProductBrand id="inventoryCheckSelfDiskList-productBrand" sysFlag="" v-model="chooseQueryParam.brandSn"></ProductBrand>
                     </a-form-item>
                   </a-col>
-                  <a-col :md="5" :sm="20">
+                  <a-col :md="4" :sm="20">
                     <a-form-item label="产品分类">
                       <ProductType id="inventoryCheckSelfDiskList-productType" @change="changeChooseProductType" v-model="chooseProductType"></ProductType>
                     </a-form-item>
                   </a-col>
-                  <a-col :md="5" :sm="20" v-if="basicInfoData&&basicInfoData.warehouseFlag=='1'">
+                  <a-col :md="4" :sm="20" v-if="basicInfoData&&basicInfoData.warehouseFlag=='1'">
                     <a-form-item label="仓库">
                       <a-select id="inventoryCheckSelfDiskList-warehouseSn" allowClear placeholder="请选择仓库" v-model="chooseQueryParam.warehouseSn" >
                         <a-select-option v-for="item in warehouseList" :key="item.warehouseSn" :value="item.warehouseSn">{{ item.name }}</a-select-option>
                       </a-select>
                     </a-form-item>
                   </a-col>
-                  <a-col :md="4" :sm="16" style="margin-bottom: 10px;text-align: center;">
+                  <a-col :md="4" :sm="16" style="margin-bottom: 10px;">
                     <a-button type="primary" @click="$refs.chooseTable.refresh(true)" :disabled="chooseDisabled" id="inventoryCheckSelfDiskList-refresh">查询</a-button>
                     <a-button style="margin-left: 5px" @click="chooseResetSearchForm" :disabled="chooseDisabled" id="inventoryCheckSelfDiskList-reset">重置</a-button>
                     <!-- <a @click="chooseAdvanced=!chooseAdvanced" style="margin-left: 5px">
@@ -164,19 +159,19 @@
         </div>
         <a-row>
           <a-col :md="20" :sm="16">
+            <a-button size="small" type="primary" class="button-error" @click.stop="handleDel('', 'batch')" id="chainTransferOutEdit-del-all-btn">批量删除</a-button>
             <!-- 总计 -->
             <a-alert type="info" style="margin-bottom:10px;display: inline-block;">
               <div slot="message">
                 总款数: <strong>{{ productTotal&&(productTotal.totalCategory || productTotal.totalCategory==0) ? productTotal.totalCategory : '--' }}</strong> ,
                 总数量: <strong>{{ productTotal&&(productTotal.stockQty || productTotal.stockQty==0) ? productTotal.stockQty : '--' }}</strong> ,
                 <div style="display: inline-block;" v-if="$hasPermissions('M_ShowAllCost')">
-                  总成本: <strong>{{ productTotal&&(productTotal.checkCost || productTotal.checkCost==0) ? '¥'+productTotal.checkCost : '--' }}</strong>。
+                  总成本: <strong>{{ productTotal&&(productTotal.checkCost || productTotal.checkCost==0) ? toThousands(productTotal.checkCost) : '--' }}</strong>。
                 </div>
               </div>
             </a-alert>
           </a-col>
           <a-col :md="4" :sm="8" style="text-align: right;">
-            <a-button size="small" type="primary" class="button-error" @click.stop="handleDel('', 'batch')" id="chainTransferOutEdit-del-all-btn">批量删除</a-button>
             <a-button
               size="small"
               type="primary"
@@ -567,14 +562,7 @@ export default {
     },
     // 双击快速添加
     handleClickRow (record) {
-      return {
-        on: {
-          dblclick: (event) => {
-            event.stopPropagation()
-            this.handleAdd(record)
-          }
-        }
-      }
+      this.handleAdd(record)
     },
     // 只查看有库存
     onlySeeStock (e) {

+ 1 - 1
src/views/inventoryManagement/inventoryImport/list.vue

@@ -125,7 +125,7 @@ export default {
         savePathType: 'local'
       },
       uploadData: null,
-      filePath: 'https://jianguan-images.oss-cn-beijing.aliyuncs.com/template/StockImports.xlsx'
+      filePath: location.protocol + '//' +location.host + '/templ/库存导入模板.xlsx'
     }
   },
   computed: {

+ 6 - 5
src/views/inventoryManagement/inventoryQuery/detailModal.vue

@@ -12,13 +12,13 @@
       <!-- 合计 -->
       <a-alert type="info" style="margin-bottom:10px">
         <div class="ftext" slot="message">
-          可用库存总数量(个):<strong>{{ currentStock&&(currentStock.currentStockQty || currentStock.currentStockQty==0) ? currentStock.currentStockQty : '--' }}</strong>;
+          可用库存总数量:<strong>{{ currentStock&&(currentStock.currentStockQty || currentStock.currentStockQty==0) ? currentStock.currentStockQty : '--' }}</strong>;
           <div style="display: inline-block;" v-if="$hasPermissions('M_ShowAllCost')">
-            可用库存总成本(¥):<strong>{{ currentStock&&(currentStock.currentStockCost || currentStock.currentStockCost==0) ? currentStock.currentStockCost : '--' }}</strong>;
+            可用库存总成本:<strong>{{ currentStock&&(currentStock.currentStockCost || currentStock.currentStockCost==0) ? toThousands(currentStock.currentStockCost) : '--' }}</strong>;
           </div>
-          冻结库存总数量(个):<strong>{{ currentStock&&(currentStock.freezeQty || currentStock.freezeQty==0) ? currentStock.freezeQty : '--' }}</strong>;
+          冻结库存总数量:<strong>{{ currentStock&&(currentStock.freezeQty || currentStock.freezeQty==0) ? currentStock.freezeQty : '--' }}</strong>;
           <div style="display: inline-block;" v-if="$hasPermissions('M_ShowAllCost')">
-            冻结库存总成本(¥):<strong>{{ currentStock&&(currentStock.freezeCost || currentStock.freezeCost==0) ? currentStock.freezeCost : '--' }}</strong>。
+            冻结库存总成本:<strong>{{ currentStock&&(currentStock.freezeCost || currentStock.freezeCost==0) ? toThousands(currentStock.freezeCost) : '--' }}</strong>。
           </div>
         </div>
       </a-alert>
@@ -66,6 +66,7 @@ export default {
       return '库存详情'
     },
     columns () {
+      const _this = this
       const arr = [
         { title: '序号', dataIndex: 'no', width: '4%', align: 'center' },
         { title: '产品编码', dataIndex: 'productCode', width: '17%', align: 'center', customRender: function (text) { return text || '--' } },
@@ -80,7 +81,7 @@ export default {
         // { title: '成本单价', dataIndex: 'putCost', width: '7%', align: 'center', customRender: function (text) { return ((text || text == 0) ? text : '--') } }
       ]
       if (this.$hasPermissions('M_ShowAllCost')) {
-        arr.splice(10, 0, { title: '成本单价', dataIndex: 'putCost', width: '7%', align: 'center', customRender: function (text) { return ((text || text == 0) ? text : '--') } })
+        arr.splice(10, 0, { title: '成本单价', dataIndex: 'putCost', width: '7%', align: 'right', customRender: function (text) { return ((text || text == 0) ? _this.toThousands(text) : '--') } })
       }
       return arr
     }

+ 63 - 38
src/views/inventoryManagement/inventoryQuery/list.vue

@@ -15,22 +15,27 @@
                 <a-input id="inventoryQueryList-productOrigCode" v-model.trim="queryParam.productOrigCode" allowClear placeholder="请输入原厂编码"/>
               </a-form-item>
             </a-col>
+            <a-col :md="6" :sm="24">
+              <a-form-item label="产品名称">
+                <a-input id="inventoryQueryList-productName" v-model.trim="queryParam.productName" allowClear placeholder="请输入产品名称"/>
+              </a-form-item>
+            </a-col>
+            <a-col :md="6" :sm="24">
+              <a-form-model-item label="产品品牌">
+                <ProductBrand id="inventoryQueryList-productBrandSn" placeholder="请选择产品品牌" v-model="queryParam.productBrandSn"></ProductBrand>
+              </a-form-model-item>
+            </a-col>
+            <a-col :md="6" :sm="24">
+              <a-form-model-item label="产品分类">
+                <ProductType id="inventoryQueryList-productType" placeholder="请选择产品分类" :isDealer="true" @change="changeType" v-model="productTypeSn"></ProductType>
+              </a-form-model-item>
+            </a-col>
+            <a-col :md="6" :sm="24">
+              <a-form-model-item label="仓库仓位">
+                <Warehouse id="inventoryQueryList-warehouse" :showDefault="false" :changeOnSelect="true" ref="warehouse" v-model="queryParam.warehouse"></Warehouse>
+              </a-form-model-item>
+            </a-col>
             <template v-if="advanced">
-              <a-col :md="6" :sm="24">
-                <a-form-item label="产品名称">
-                  <a-input id="inventoryQueryList-productName" v-model.trim="queryParam.productName" allowClear placeholder="请输入产品名称"/>
-                </a-form-item>
-              </a-col>
-              <a-col :md="6" :sm="24">
-                <a-form-model-item label="产品品牌">
-                  <ProductBrand id="inventoryQueryList-productBrandSn" placeholder="请选择产品品牌" v-model="queryParam.productBrandSn"></ProductBrand>
-                </a-form-model-item>
-              </a-col>
-              <a-col :md="4" :sm="24">
-                <a-form-model-item label="产品分类">
-                  <ProductType id="inventoryQueryList-productType" placeholder="请选择产品分类" :isDealer="true" @change="changeType" v-model="productTypeSn"></ProductType>
-                </a-form-model-item>
-              </a-col>
               <a-col :md="6" :sm="24">
                 <a-form-model-item label="滞销天数">
                   <a-input-group>
@@ -60,7 +65,7 @@
                   </a-input-group>
                 </a-form-model-item>
               </a-col>
-              <a-col :md="4" :sm="24">
+              <a-col :md="6" :sm="24">
                 <a-form-item label="产品来源">
                   <a-select
                     allowClear
@@ -77,23 +82,25 @@
                 </a-form-item>
               </a-col>
             </template>
-            <a-col :md="10" :sm="24">
-              <a-checkbox v-model="queryParam.zeroQtyFlag" id="inventoryQueryList-zeroQtyFlag">只查看有库存</a-checkbox>
-              <a-checkbox v-model="queryParam.enableFlag" :checked="queryParam.enableFlag" id="inventoryQueryList-enableFlag">包括禁用产品</a-checkbox>
-              <a-button type="primary" @click="$refs.table.refresh(true)" :disabled="disabled" id="inventoryQueryList-refresh">查询</a-button>
-              <a-button style="margin-left: 5px" @click="resetSearchForm" :disabled="disabled" id="inventoryQueryList-reset">重置</a-button>
-              <a-button
-                type="primary"
-                v-if="$hasPermissions('B_inventoryInventoryQueryExport')"
-                class="button-warning"
-                @click="handleExport"
-                :disabled="disabled"
-                :loading="exportLoading"
-                id="inventoryQueryList-export">导出</a-button>
-              <a @click="advanced=!advanced" style="margin-left: 5px">
-                {{ advanced ? '收起' : '展开' }}
-                <a-icon :type="advanced ? 'up' : 'down'"/>
-              </a>
+            <a-col :md="12" :sm="24">
+              <div style="margin-bottom: 10px;">
+                <a-checkbox v-model="queryParam.zeroQtyFlag" id="inventoryQueryList-zeroQtyFlag">只查看有库存</a-checkbox>
+                <a-checkbox v-model="queryParam.enableFlag" :checked="queryParam.enableFlag" id="inventoryQueryList-enableFlag">包括禁用产品</a-checkbox>
+                <a-button type="primary" @click="$refs.table.refresh(true)" :disabled="disabled" id="inventoryQueryList-refresh">查询</a-button>
+                <a-button style="margin-left: 5px" @click="resetSearchForm" :disabled="disabled" id="inventoryQueryList-reset">重置</a-button>
+                <a-button
+                  type="primary"
+                  v-if="$hasPermissions('B_inventoryInventoryQueryExport')"
+                  class="button-warning"
+                  @click="handleExport"
+                  :disabled="disabled"
+                  :loading="exportLoading"
+                  id="inventoryQueryList-export">导出</a-button>
+                <a @click="advanced=!advanced" style="margin-left: 5px">
+                  {{ advanced ? '收起' : '展开' }}
+                  <a-icon :type="advanced ? 'up' : 'down'"/>
+                </a>
+              </div>
             </a-col>
           </a-row>
         </a-form>
@@ -101,9 +108,9 @@
       <!-- 合计 -->
       <a-alert type="info" style="margin-bottom:10px">
         <div class="ftext" slot="message">
-          可用库存总数量(个):<strong>{{ currentStock&&(currentStock.totalCurrentStockQty || currentStock.totalCurrentStockQty==0) ? currentStock.totalCurrentStockQty : '--' }}</strong>;
+          可用库存总数量:<strong>{{ currentStock&&(currentStock.totalCurrentStockQty || currentStock.totalCurrentStockQty==0) ? currentStock.totalCurrentStockQty : '--' }}</strong>;
           <div style="display: inline-block;" v-if="$hasPermissions('M_ShowAllCost')">
-            可用库存总成本(¥):<strong>{{ currentStock&&(currentStock.totalCurrentStockCost || currentStock.totalCurrentStockCost==0) ? currentStock.totalCurrentStockCost : '--' }}</strong>。
+            可用库存总成本:<strong>{{ currentStock&&(currentStock.totalCurrentStockCost || currentStock.totalCurrentStockCost==0) ? toThousands(currentStock.totalCurrentStockCost) : '--' }}</strong>。
           </div>
         </div>
       </a-alert>
@@ -151,7 +158,7 @@
       </s-table>
     </a-spin>
     <!-- 库存详情 -->
-    <inventory-query-detail-modal :openModal="openModal" :nowData="nowData" @close="closeModal" />
+    <inventory-query-detail-modal v-drag :openModal="openModal" :nowData="nowData" @close="closeModal" />
   </a-card>
 </template>
 
@@ -160,12 +167,13 @@ import { commonMixin } from '@/utils/mixin'
 import { stockList, stockCount, stockExport } from '@/api/stock'
 import ProductType from '../../common/productType.js'
 import ProductBrand from '../../common/productBrand.js'
+import Warehouse from '@/views/common/warehouse.js'
 import { STable, VSelect } from '@/components'
 import inventoryQueryDetailModal from './detailModal.vue'
 import { downloadExcel } from '@/libs/JGPrint.js'
 export default {
   name: 'InventoryQueryList',
-  components: { STable, VSelect, inventoryQueryDetailModal, ProductType, ProductBrand },
+  components: { STable, VSelect, inventoryQueryDetailModal, ProductType, ProductBrand, Warehouse },
   mixins: [commonMixin],
   data () {
     return {
@@ -180,6 +188,9 @@ export default {
         productTypeSn1: '', //  产品分类1
         productTypeSn2: '', //  产品分类2
         productTypeSn3: '', //  产品分类3
+        warehouse: [],
+        warehouseSn: '',
+        warehouseLocationSn:'',
         zeroQtyFlag: false, //  库存情况
         enableFlag: true, // 显示禁用产品
         minUnsalableDays: undefined, // 滞销天数最小值
@@ -219,6 +230,11 @@ export default {
           params.product = {
             sysFlag: params.productSysFlag || undefined
           }
+          
+          // 仓库仓位
+          params.warehouseSn = params.warehouse[0]
+          params.warehouseLocationSn = params.warehouse[1]
+          
           return stockList(params).then(res => {
             let data
             if (res.status == 200) {
@@ -253,6 +269,7 @@ export default {
   },
   computed: {
     columns () {
+      const _this = this
       const arr = [
         { title: '序号', dataIndex: 'no', width: '4%', align: 'center' },
         { title: '产品编码', dataIndex: 'productCode', width: '16%', align: 'center', customRender: function (text) { return text || '--' } },
@@ -266,7 +283,7 @@ export default {
         { title: '操作', scopedSlots: { customRender: 'action' }, width: '10%', align: 'center' }
       ]
       if (this.$hasPermissions('M_ShowAllCost')) {
-        arr.splice(7, 0, { title: '可用库存成本(¥)', dataIndex: 'currentStockCost', width: '8%', align: 'center', sorter: true, customRender: function (text) { return ((text || text == 0) ? text : '--') } })
+        arr.splice(7, 0, { title: '可用库存成本(¥)', dataIndex: 'currentStockCost', width: '8%', align: 'right', sorter: true, customRender: function (text) { return ((text || text == 0) ? _this.toThousands(text) : '--') } })
       }
       return arr
     }
@@ -331,6 +348,10 @@ export default {
       this.queryParam.brandName = undefined
       this.queryParam.productTypeName = undefined
       this.queryParam.zeroQtyFlag = false
+      this.queryParam.warehouse = []
+      this.queryParam.warehouseSn =  ''
+      this.queryParam.warehouseLocationSn = ''
+      this.$refs.warehouse.setDefaultVal()
       this.productTypeSn = []
       this.queryParam.minUnsalableDays = undefined // 滞销天数最小值
       this.queryParam.maxUnsalableDays = undefined // 滞销天数最大值
@@ -368,6 +389,10 @@ export default {
       params.zeroQtyFlag = params.zeroQtyFlag ? '0' : ''
       params.enableFlag = params.enableFlag ? '' : '1'
       params.showCost = this.$hasPermissions('M_ShowAllCost') ? 1 : 0
+      // 仓库仓位
+      params.warehouseSn = params.warehouse[0]
+      params.warehouseLocationSn = params.warehouse[1]
+      
       this.exportLoading = true
       _this.spinning = true
       stockExport(params).then(res => {

+ 7 - 6
src/views/inventoryManagement/inventoryQuery/warehouseDetail.vue

@@ -83,13 +83,13 @@
         <!-- 合计 -->
         <a-alert type="info" style="margin-bottom:10px">
           <div class="ftext" slot="message">
-            当前库存总数量(个):<strong>{{ (productTotal&&(productTotal.currentStockQty || productTotal.currentStockQty==0)) ? productTotal.currentStockQty : '--' }}</strong>;
+            当前库存总数量:<strong>{{ (productTotal&&(productTotal.currentStockQty || productTotal.currentStockQty==0)) ? productTotal.currentStockQty : '--' }}</strong>;
             <div style="display: inline-block;" v-if="$hasPermissions('M_ShowAllCost')">
-              当前库存总成本(¥):<strong>{{ (productTotal&&(productTotal.currentStockCost || productTotal.currentStockCost==0)) ? productTotal.currentStockCost : '--' }}</strong>;
+              当前库存总成本:<strong>{{ (productTotal&&(productTotal.currentStockCost || productTotal.currentStockCost==0)) ? toThousands(productTotal.currentStockCost) : '--' }}</strong>;
             </div>
-            冻结库存总数量(个):<strong>{{ productTotal&&(productTotal.freezeQty || productTotal.freezeQty==0) ? productTotal.freezeQty : '--' }}</strong>;
+            冻结库存总数量:<strong>{{ productTotal&&(productTotal.freezeQty || productTotal.freezeQty==0) ? productTotal.freezeQty : '--' }}</strong>;
             <div style="display: inline-block;" v-if="$hasPermissions('M_ShowAllCost')">
-              冻结库存总成本(¥):<strong>{{ productTotal&&(productTotal.freezeCost || productTotal.freezeCost==0) ? productTotal.freezeCost : '--' }}</strong>。
+              冻结库存总成本:<strong>{{ productTotal&&(productTotal.freezeCost || productTotal.freezeCost==0) ? toThousands(productTotal.freezeCost) : '--' }}</strong>。
             </div>
           </div>
         </a-alert>
@@ -176,6 +176,7 @@ export default {
   },
   computed: {
     columns () {
+      const _this = this
       const arr = [
         { title: '序号', dataIndex: 'no', width: '4%', align: 'center' },
         { title: '产品编码', dataIndex: 'product.code', width: '12%', align: 'center', customRender: function (text) { return text || '--' } },
@@ -190,11 +191,11 @@ export default {
         { title: '仓位', dataIndex: 'warehouseLocationName', width: '9%', align: 'center', ellipsis: true, customRender: function (text) { return text || '--' } },
         { title: '数量', scopedSlots: { customRender: 'qty' }, width: '5%', align: 'center' },
         // { title: '总成本', dataIndex: 'totalCost', width: '5%', align: 'center', customRender: function (text) { return ((text || text == 0) ? text : '--') } },
-        { title: '总售价', dataIndex: 'totalPrice', width: '5%', align: 'center', customRender: function (text) { return ((text || text == 0) ? text : '--') } },
+        { title: '总售价', dataIndex: 'totalPrice', width: '5%', align: 'right', customRender: function (text) { return ((text || text == 0) ? _this.toThousands(text) : '--') } },
         { title: '出入库状态', dataIndex: 'stateDictValue', width: '6%', align: 'center', customRender: function (text) { return text || '--' } }
       ]
       if (this.$hasPermissions('M_ShowAllCost')) {
-        arr.splice(12, 0, { title: '总成本', dataIndex: 'totalCost', width: '5%', align: 'center', customRender: function (text) { return ((text || text == 0) ? text : '--') } })
+        arr.splice(12, 0, { title: '总成本', dataIndex: 'totalCost', width: '5%', align: 'right', customRender: function (text) { return ((text || text == 0) ? _this.toThousands(text) : '--') } })
       }
       return arr
     }

+ 205 - 0
src/views/inventoryManagement/inventoryWarning/chooseImportModal.vue

@@ -0,0 +1,205 @@
+<template>
+  <a-modal
+    centered
+    class="chooseImport-modal"
+    :footer="null"
+    :maskClosable="false"
+    title="确认导入"
+    v-model="isShow"
+    @cancel="isShow=false"
+    :width="900">
+    <div class="chooseImport-con">
+      <!-- 可导入数据 -->
+      <p class="">可导入数据{{ loadData.length }}条</p>
+      <a-table
+        class="sTable"
+        ref="table"
+        size="small"
+        :rowKey="(record) => record.shelfSn"
+        :columns="nowColumns"
+        :dataSource="loadData"
+        :loading="loading"
+        :scroll="{ y: 200 }"
+        :pagination="false"
+        bordered>
+      </a-table>
+      <a-divider />
+      <!-- 不可导入数据 -->
+      <p class="red">不可导入数据{{ unLoadData.length }}条</p>
+      <a-table
+        class="sTable unTable"
+        ref="unTable"
+        size="small"
+        :rowKey="(record) => record.errorDesc"
+        :columns="nowUnColumns"
+        :dataSource="unLoadData"
+        :loading="loading"
+        :scroll="{ y: 200 }"
+        :pagination="false"
+        bordered>
+        <template slot="errorMsg" slot-scope="text,record">
+          <a-popover placement="topRight">
+            <template slot="content">
+              <p v-for="d in record.importErrorMsgSet" v-if="d">{{ d }};</p>
+            </template>
+            <a-button type="link">
+              查看
+            </a-button>
+          </a-popover>
+        </template>
+      </a-table>
+      <!-- 按钮 -->
+      <div class="btn-con">
+        <a-button
+          type="primary"
+          id="chooseImport-submit"
+          size="large"
+          :class="loadData.length==0?'button-grey':'button-primary'"
+          @click="handleSubmit"
+          style="padding: 0 40px;">确认导入</a-button>
+        <a-button
+          id="chooseImport-cancel"
+          size="large"
+          class="button-cancel"
+          @click="isShow=false"
+          style="padding: 0 40px;margin-left: 15px;">取消</a-button>
+        <a-button
+          type="primary"
+          id="chooseImport-error"
+          size="large"
+          class="button-error"
+          @click="handleError"
+          style="padding: 0 40px;margin-left: 15px;">导出错误项</a-button>
+      </div>
+    </div>
+  </a-modal>
+</template>
+
+<script>
+import { stockWarnProductImport, stockWarnExportError, stockWarnBatchImport } from '@/api/stockWarn'
+import { hdExportExcel } from '@/libs/exportExcel'
+export default {
+  name: 'ChooseImportModal',
+  props: {
+    openModal: { //  弹框显示状态
+      type: Boolean,
+      default: false
+    },
+    paramsData: {
+      type: Object,
+      default: () => {
+        return {}
+      }
+    }
+  },
+  data () {
+    const _this = this
+    return {
+      isShow: this.openModal, //  是否打开弹框
+      nowColumns: [ //  可导入
+        { title: '序号', dataIndex: 'no', width: '6%', align: 'center' },
+        { title: '产品编码', dataIndex: 'productCode', width: '17%', align: 'center', customRender: function (text) { return text || '--' } },
+        { title: '产品名称', dataIndex: 'productName', width: '26%', align: 'left', customRender: function (text) { return text || '--' }, ellipsis: true },
+        { title: '在途数(个)', dataIndex: 'inTransit', width: '10%', align: 'center', customRender: function (text) { return ((text || text == 0) ? text : '--') } },
+        { title: '最大库存数(个)', dataIndex: 'upperLimit', width: '10%', align: 'center', customRender: function (text) { return ((text || text == 0) ? text : '--') } },
+        { title: '最小库存数(个)', dataIndex: 'lowerLimit', width: '10%', align: 'center', customRender: function (text) { return ((text || text == 0) ? text : '--') } }
+      ],
+      nowUnColumns: [ //  不可导入
+        { title: '序号', dataIndex: 'no', width: '6%', align: 'center' },
+        { title: '产品编码', dataIndex: 'productCode', width: '13%', align: 'center', customRender: function (text) { return text || '--' } },
+        { title: '在途数(个)', dataIndex: 'inTransit', width: '8%', align: 'center', customRender: function (text) { return ((text || text == 0) ? text : '--') } },
+        { title: '最大库存数(个)', dataIndex: 'upperLimit', width: '8%', align: 'center', customRender: function (text) { return ((text || text == 0) ? text : '--') } },
+        { title: '最小库存数(个)', dataIndex: 'lowerLimit', width: '8%', align: 'center', customRender: function (text) { return ((text || text == 0) ? text : '--') } },
+        { title: '错误原因', scopedSlots: { customRender: 'errorMsg' }, width: '10%', align: 'center' }
+      ],
+      loadData: [],
+      unLoadData: [],
+      loading: false
+    }
+  },
+  methods: {
+    getData () {
+      const _this = this
+      this.loading = true
+      stockWarnProductImport(this.paramsData).then(res => {
+        this.loading = false
+        if (res.status == 200) {
+          if (res.data.rightList && res.data.rightList.length > 0) {
+            res.data.rightList.map((item, index) => {
+              item.no = index + 1
+            })
+          }
+          if (res.data.errorList && res.data.errorList.length > 0) {
+            res.data.errorList.map((item, index) => {
+              item.no = index + 1
+              item.importErrorMsgSet = item.errorMsg ? item.errorMsg.split(';') : []
+            })
+          }
+          _this.loadData = res.data.rightList || []
+          _this.unLoadData = res.data.errorList || []
+        }
+      })
+    },
+    // 确认导入
+    handleSubmit () {
+      if (this.loadData.length == 0) {
+        this.$message.warning('暂无可导入产品!')
+      } else {
+        this.spinning = true
+        stockWarnBatchImport(this.loadData).then(res => {
+          if(res.status == 200){
+            this.$emit('ok', this.loadData)
+            this.isShow = false
+          }
+          this.spinning = false
+        })
+      }
+    },
+    // 导出错误项
+    handleError () {
+      const _this = this
+      if (_this.unLoadData.length < 1) {
+        _this.$message.info('暂无可导出错误项~')
+        return
+      }
+      _this.spinning = true
+      hdExportExcel(stockWarnExportError, _this.unLoadData, '库存预警产品导入错误项', function () {
+        _this.spinning = false
+      })
+    }
+  },
+  watch: {
+    //  父页面传过来的弹框状态
+    openModal (newValue, oldValue) {
+      this.isShow = newValue
+    },
+    //  重定义的弹框状态
+    isShow (newValue, oldValue) {
+      if (!newValue) {
+        this.$emit('close')
+        this.loadData = []
+        this.unLoadData = []
+      } else {
+        this.getData()
+      }
+    }
+  }
+}
+</script>
+
+<style lang="less" scoped>
+  .chooseImport-modal{
+    .chooseImport-con{
+      .red{
+        color: #f30;
+      }
+      .btn-con{
+        text-align: center;
+        margin: 30px 0 20px;
+        .button-cancel,.button-error{
+          font-size: 12px;
+        }
+      }
+    }
+  }
+</style>

+ 184 - 0
src/views/inventoryManagement/inventoryWarning/importGuideModal.vue

@@ -0,0 +1,184 @@
+<template>
+  <a-modal
+    centered
+    class="importGuide-modal"
+    :footer="null"
+    :maskClosable="false"
+    title="导入产品"
+    v-model="isShow"
+    @cancel="isShow=false"
+    :width="750">
+    <div class="importGuide-con">
+      <div class="explain-con">
+        <div class="explain-item">
+          <div class="explain-tit">
+            <span>1</span>准备导入
+          </div>
+          <ul>
+            <li>1)导入的Excel文件中必须包含名称为“产品编码”、"在途数(个)”、“最大库存数(个)”、“最小库存数(个)”的列,且名称必须相同,其他列可自定义,不影响数据导入</li>
+            <li><a :href="templUrl"><a-icon type="download" />下载导入模板</a></li>
+          </ul>
+        </div>
+        <div class="explain-item">
+          <div class="explain-tit">
+            <span>2</span>上传数据文件
+          </div>
+          <p>目前支持的文件类型*.xls,*.xlsx.</p>
+          <div style="overflow: hidden;padding-left: 23px;">
+            <Upload
+              id="importGuide-attachList"
+              ref="importUpload"
+              :maxNums="1"
+              fileType="application/vnd.openxmlformats-officedocument.spreadsheetml.sheet,application/vnd.ms-excel"
+              uploadType="import"
+              :action="attachAction"
+              :uploadParams="uploadParams"
+              upText="添加文件"
+              @change="changeImport"></Upload>
+          </div>
+        </div>
+      </div>
+      <!-- 按钮 -->
+      <div class="btn-con">
+        <a-button
+          type="primary"
+          id="importGuide-nextStep"
+          size="large"
+          class="button-primary"
+          @click="handlerNextStep"
+          style="padding: 0 60px;">下一步</a-button>
+        <a-button
+          id="importGuide-cancel"
+          size="large"
+          class="button-cancel"
+          @click="isShow=false"
+          style="padding: 0 60px;margin-left: 15px;">取消</a-button>
+      </div>
+    </div>
+    <!-- 导入 -->
+    <chooseImportModal :openModal="openImportModal" :paramsData="paramsData" @close="handleClose" @ok="hanldeOk" />
+  </a-modal>
+</template>
+
+<script>
+import ChooseImportModal from './chooseImportModal.vue'
+import { Upload } from '@/components'
+export default {
+  name: 'ImportGuideModal',
+  components: { ChooseImportModal, Upload },
+  props: {
+    openModal: { //  弹框显示状态
+      type: Boolean,
+      default: false
+    },
+    params: {
+      type: Object,
+      default: null
+    }
+  },
+  data () {
+    return {
+      isShow: this.openModal, //  是否打开弹框
+      openImportModal: false, //  导入
+      attachAction: process.env.VUE_APP_API_BASE_URL + '/upload',
+      paramsData: null,
+      uploadParams: {
+        savePathType: 'local'
+      },
+      templUrl: location.protocol + '//' +location.host + '/templ/库存预警产品导入模板.xlsx'
+    }
+  },
+  methods: {
+    // 下一步
+    handlerNextStep () {
+      if (this.paramsData) {
+        this.openImportModal = true
+      } else {
+        this.$message.warning('添加文件后再进行下一步操作!')
+      }
+    },
+    // 上传文件  change
+    changeImport (file) {
+      if (file) {
+        this.paramsData = {
+          path: file
+        }
+      }
+    },
+    // 导入
+    hanldeOk (obj) {
+      if (obj && obj.length > 0) {
+        this.$emit('ok', obj)
+        this.isShow = false
+      }
+    },
+    // 关闭
+    handleClose () {
+      this.openImportModal = false
+      this.isShow = false
+    },
+  },
+  watch: {
+    //  父页面传过来的弹框状态
+    openModal (newValue, oldValue) {
+      this.isShow = newValue
+    },
+    //  重定义的弹框状态
+    isShow (newValue, oldValue) {
+      if (!newValue) {
+        this.$emit('close')
+        this.paramsData = null
+        this.$refs.importUpload.setFileList('')
+      }
+    }
+  }
+}
+</script>
+
+<style lang="less" scoped>
+  .importGuide-modal{
+    .importGuide-con{
+      .explain-con{
+        .explain-item{
+          margin-bottom: 10px;
+          .explain-tit{
+            font-weight: bold;
+            span{
+              display: inline-block;
+              width: 18px;
+              height: 18px;
+              line-height: 16px;
+              text-align: center;
+              margin-right: 5px;
+              border-radius: 50%;
+              border: 1px solid rgba(0, 0, 0, 0.3);
+            }
+          }
+          p{
+            margin: 8px 0;
+            padding-left: 23px;
+          }
+          ul{
+            list-style: none;
+            padding: 0;
+            padding-left: 23px;
+            margin: 0;
+            li{
+              line-height: 26px;
+            }
+          }
+        }
+        #importGuide-attachList{
+          width: 100%;
+        }
+      }
+      .btn-con{
+        margin: 10px 0 20px;
+        text-align: center;
+        .button-cancel{
+          font-size: 12px;
+        }
+      }
+    }
+  }
+</style>

+ 14 - 2
src/views/inventoryManagement/inventoryWarning/list.vue

@@ -66,6 +66,13 @@
       <!-- 操作按钮 -->
       <div class="table-operator">
         <a-button type="primary" v-if="$hasPermissions('B_inventoryWarningBatchSave')" id="inventoryWarningList-update" @click="handleupdate">批量更新</a-button>
+        <a-button
+          type="primary"
+          style="margin-left: 5px"
+          class="button-warning"
+          @click="openGuideModal=true"
+          v-if="$hasPermissions('B_inventoryWarningProductImport')"
+          id="inventoryWarningList-import-btn">导入产品</a-button>
         <span style="margin-left: 5px" v-if="$hasPermissions('B_inventoryWarningBatchSave')">
           <template v-if="rowSelectionInfo&&rowSelectionInfo.selectedRowKeys.length>0">{{ `已选 ${rowSelectionInfo.selectedRowKeys.length} 项` }}</template>
         </span>
@@ -157,6 +164,9 @@
         </template>
       </s-table>
     </a-spin>
+    
+    <!-- 导入产品 -->
+    <importGuideModal :openModal="openGuideModal" @close="openGuideModal=false" @ok="resetSearchForm" />
   </a-card>
 </template>
 
@@ -167,13 +177,15 @@ import { stockWarnList, stockWarnSaveBatch, stockWarnExport } from '@/api/stockW
 import { downloadExcel } from '@/libs/JGPrint.js'
 import ProductType from '../../common/productType.js'
 import ProductBrand from '../../common/productBrand.js'
+import importGuideModal from './importGuideModal.vue'
 export default {
-  name: 'InventoryWarning',
-  components: { STable, VSelect, ProductType, ProductBrand },
+  name: 'InventoryWarningList',
+  components: { STable, VSelect, ProductType, ProductBrand, importGuideModal },
   mixins: [commonMixin],
   data () {
     return {
       spinning: false,
+      openGuideModal: false,
       advanced: true, // 高级搜索 展开/关闭
       tableHeight: 0,
       queryParam: { //  查询条件

+ 10 - 9
src/views/numsGoodsShelves/customerAnalysis/list.vue

@@ -10,7 +10,7 @@
                   <shelfSList v-model="queryParam.shelfSn"></shelfSList>
                 </a-form-model-item>
               </a-col>
-              <a-col :md="6" :sm="24">
+              <a-col :md="8" :sm="24">
                 <a-form-item label="下单时间">
                   <rangeDate ref="orderDate" :value="orderTime" @change="orderDateChange" />
                 </a-form-item>
@@ -89,15 +89,15 @@
               <div>
                 货架数量:<strong>{{ statisticsObj.shelfCount }}</strong>;
                 铺货数量合计:<strong>{{ statisticsObj.totalShelfMaxQty }}</strong>;
-                铺货金额合计:<strong>{{ statisticsObj.totalShelfMaxCost }}</strong>;
+                铺货金额合计:<strong>{{ statisticsObj&&(statisticsObj.totalShelfMaxCost||statisticsObj.totalShelfMaxCost==0)?toThousands(statisticsObj.totalShelfMaxCost,2):'--' }}</strong>;
                 货架取货数量合计:<strong>{{ statisticsObj.totalOrderQty }}</strong>;
-                货架取货金额合计:<strong>{{ statisticsObj.totalOrderAmount }}</strong>;
+                货架取货金额合计:<strong>{{ statisticsObj&&(statisticsObj.totalOrderAmount||statisticsObj.totalOrderAmount==0)?toThousands(statisticsObj.totalOrderAmount,2):'--'  }}</strong>;
               </div>
               <div>
                 急送数量合计:<strong>{{ statisticsObj.tempOrderQty }}</strong>;
-                急送金额合计:<strong>{{ statisticsObj.tempOrderAmount }}</strong>;
+                急送金额合计:<strong>{{ statisticsObj&&(statisticsObj.tempOrderAmount||statisticsObj.tempOrderAmount==0)?toThousands(statisticsObj.tempOrderAmount,2):'--' }}</strong>;
                 销售数量合计:<strong>{{ statisticsObj.saleOrderQty }}</strong>;
-                销售金额合计:<strong>{{ statisticsObj.saleOrderAmount }}</strong>;
+                销售金额合计:<strong>{{ statisticsObj&&(statisticsObj.saleOrderAmount||statisticsObj.saleOrderAmount==0)?toThousands(statisticsObj.saleOrderAmount,2) :'--' }}</strong>;
               </div>
             </div>
           </a-alert>
@@ -140,6 +140,7 @@ export default {
   components: { STable, VSelect, rangeDate, shelfSList },
   data () {
     return {
+      toThousands,
       spinning: false,
       // advanced: false,
       tableHeight: 0,
@@ -168,28 +169,28 @@ export default {
           slots: { title: 'customTitle' },
           children: [
             { title: '铺货数量', dataIndex: 'totalShelfMaxQty', width: '8%', align: 'center', customRender: function (text) { return (text || text == 0) ? text : '--' } },
-            { title: '铺货金额', dataIndex: 'totalShelfMaxCost', width: '8%', align: 'center', customRender: function (text) { return (text || text == 0) ? text : '--' } }
+            { title: '铺货金额', dataIndex: 'totalShelfMaxCost', width: '8%', align: 'right', customRender: function (text) { return (text || text == 0) ? toThousands(text,2) : '--' } }
           ]
         },
         {
           title: '货架订单',
           children: [
             { title: '取货数量', dataIndex: 'totalOrderQty', width: '8%', align: 'center', customRender: function (text) { return (text || text == 0) ? text : '--' } },
-            { title: '取货金额', dataIndex: 'totalOrderAmount', width: '8%', align: 'center', customRender: function (text) { return (text || text == 0) ? text : '--' } }
+            { title: '取货金额', dataIndex: 'totalOrderAmount', width: '8%', align: 'right', customRender: function (text) { return (text || text == 0) ? toThousands(text,2) : '--' } }
           ]
         },
         {
           title: '急送订单',
           children: [
             { title: '急送数量', dataIndex: 'tempOrderQty', width: '8%', align: 'center', customRender: function (text) { return (text || text == 0) ? text : '--' } },
-            { title: '急送金额', dataIndex: 'tempOrderAmount', width: '8%', align: 'center', customRender: function (text) { return (text || text == 0) ? text : '--' } }
+            { title: '急送金额', dataIndex: 'tempOrderAmount', width: '8%', align: 'right', customRender: function (text) { return (text || text == 0) ? toThousands(text,2) : '--' } }
           ]
         },
         {
           title: '销售单',
           children: [
             { title: '销售数量', dataIndex: 'saleOrderQty', width: '8%', align: 'center', customRender: function (text) { return (text || text == 0) ? text : '--' } },
-            { title: '销售金额', dataIndex: 'saleOrderAmount', width: '8%', align: 'center', customRender: function (text) { return (text || text == 0) ? text : '--' } }
+            { title: '销售金额', dataIndex: 'saleOrderAmount', width: '8%', align: 'right', customRender: function (text) { return (text || text == 0) ? toThousands(text,2) : '--' } }
           ]
         }
       ],

+ 4 - 4
src/views/numsGoodsShelves/recallManagement/list.vue

@@ -159,16 +159,16 @@ export default {
         { title: '调回单号', scopedSlots: { customRender: 'recallBillNo' }, width: '20%', align: 'center' },
         { title: '货架名称', dataIndex: 'shelfInfo.shelfName', width: '25%', align: 'left', customRender: function (text) { return text || '--' }, ellipsis: true },
         { title: '状态', dataIndex: 'billStateDictValue', width: '7%', align: 'center', customRender: function (text) { return text || '--' } },
-        { title: '调回总量', dataIndex: 'totalQty', width: '9%', align: 'center', customRender: function (text) { return (text || text == 0) ? toThousands(text) : '--' } },
-        { title: '实退总量', dataIndex: 'totalConfirmQty', width: '9%', align: 'center', customRender: function (text) { return (text || text == 0) ? toThousands(text) : '--' } },
+        { title: '调回总量', dataIndex: 'totalQty', width: '9%', align: 'center', customRender: function (text) { return (text || text == 0) ? text : '--' } },
+        { title: '实退总量', dataIndex: 'totalConfirmQty', width: '9%', align: 'center', customRender: function (text) { return (text || text == 0) ? text : '--' } },
         { title: '操作', width: '10%', align: 'left', scopedSlots: { customRender: 'action' } }
       ],
       innerColumns: [
         { title: '序号', dataIndex: 'no', width: '5%', align: 'center' },
         { title: '产品编码', dataIndex: 'product.code', width: '20%', align: 'center', customRender: function (text) { return text || '--' } },
         { title: '产品名称', dataIndex: 'product.name', width: '30%', align: 'left', customRender: function (text) { return text || '--' }, ellipsis: true },
-        { title: '调回数量', dataIndex: 'qty', width: '15%', align: 'center', customRender: function (text) { return (text || text == 0) ? toThousands(text) : '--' } },
-        { title: '实退数量', dataIndex: 'confirmQty', width: '15%', align: 'center', customRender: function (text) { return (text || text == 0) ? toThousands(text) : '--' } },
+        { title: '调回数量', dataIndex: 'qty', width: '15%', align: 'center', customRender: function (text) { return (text || text == 0) ? text : '--' } },
+        { title: '实退数量', dataIndex: 'confirmQty', width: '15%', align: 'center', customRender: function (text) { return (text || text == 0) ? text : '--' } },
         { title: '单位', dataIndex: 'product.unit', width: '15%', align: 'center', customRender: function (text) { return text || '--' } }
       ],
       innerData: [],

+ 3 - 4
src/views/numsGoodsShelves/recallStockManagement/editStock.vue

@@ -11,8 +11,7 @@
       <a-card :bordered="false" size="small" class="goodsAllocationSet-baseInfo">
         <a-alert type="info" style="margin:10px 0">
           <div slot="message" >
-            入库总数量<strong>{{ pageInfo &&pageInfo.productTotalQty?pageInfo.productTotalQty:'--' }}</strong>,
-            入库总成本¥<strong>{{ pageInfo &&pageInfo.productTotalCost?pageInfo.productTotalCost:0 }}</strong>
+            入库总成本<strong>{{ pageInfo &&(pageInfo.productTotalCost || pageInfo.productTotalCost == 0) ? toThousands(pageInfo.productTotalCost):'--' }}</strong>
           </div>
         </a-alert>
         <s-table
@@ -88,11 +87,11 @@ export default {
       columns: [
         { title: '序号', dataIndex: 'no', width: '5%', align: 'center' },
         { title: '产品编码', dataIndex: 'productCode', width: '15%', align: 'center', customRender: function (text) { return text || '--' } },
-        { title: '产品名称', dataIndex: 'productName', width: '20%', align: 'left', customRender: function (text) { return text || '--' } },
+        { title: '产品名称', dataIndex: 'productName', width: '32%', align: 'left', customRender: function (text) { return text || '--' } },
         { title: '入库数量', dataIndex: 'putQty', width: '7.5%', align: 'center', customRender: function (text) { return text || '--' } },
         { title: '单位', dataIndex: 'productUnit', width: '5%', align: 'center', customRender: function (text) { return text || '--' } },
         { title: '入库单价', scopedSlots: { customRender: 'putCost' }, width: '7.5%', align: 'center' },
-        { title: '入库成本', dataIndex: 'putTotalCost', width: '25%', align: 'center', customRender: function (text) { return (text || text == 0) ? text : '--' } },
+        { title: '入库成本', dataIndex: 'putTotalCost', width: '12%', align: 'right', customRender: text => ((text || text == 0) ? this.toThousands(text) : '--') },
         { title: '操作', width: '15%', align: 'left', scopedSlots: { customRender: 'action' } }
       ],
       warehouseCascadeData: [], //  仓库仓位

+ 1 - 1
src/views/numsGoodsShelves/recallStockManagement/list.vue

@@ -103,7 +103,7 @@ export default {
         { title: '调回单号', dataIndex: 'putBizNo', width: '15%', align: 'left', customRender: function (text) { return text || '--' } },
         { title: '货架名称', dataIndex: 'providerName', width: '25%', align: 'left', customRender: function (text) { return text || '--' }, ellipsis: true },
         { title: '入库总数量', dataIndex: 'productTotalQty', width: '10%', align: 'center', customRender: function (text) { return (text || text == 0) ? text : '--' } },
-        { title: '入库总成本', dataIndex: 'productTotalCost', width: '10%', align: 'center', customRender: function (text) { return (text || text == 0) ? text : '--' } },
+        { title: '入库总成本', dataIndex: 'productTotalCost', width: '10%', align: 'right', customRender: text => ((text || text == 0) ? this.toThousands(text) : '--') },
         { title: '状态', dataIndex: 'stateDictValue', width: '10%', align: 'center', customRender: function (text) { return text || '--' } },
         { title: '入库时间', dataIndex: 'auditTime', width: '15%', align: 'center', customRender: function (text) { return text || '--' } },
         { title: '操作', scopedSlots: { customRender: 'action' }, width: '10%', align: 'left' }

+ 3 - 2
src/views/numsGoodsShelves/replenishmentManagement/replenishmentDetail.vue

@@ -23,7 +23,7 @@
           <div slot="message">
             总款数:<strong>{{ detailData&&(detailData.totalCategory || detailData.totalCategory==0) ? detailData.totalCategory : '--' }}</strong>;
             总数量:<strong>{{ detailData&&(detailData.totalQty || detailData.totalQty==0) ? detailData.totalQty : '--' }}</strong>;
-            总成本:<strong>{{ detailData&&(detailData.totalCost || detailData.totalCost==0) ? detailData.totalCost : '--' }}</strong>;
+            总成本:<strong>{{ detailData&&(detailData.totalCost || detailData.totalCost==0) ? toThousands(detailData.totalCost,2) : '--' }}</strong>;
           </div>
         </a-alert>
         <!-- 列表 -->
@@ -58,6 +58,7 @@ export default {
     }
   },
   data () {
+    const _this = this
     return {
       showPage: false,
       spinning: false,
@@ -70,7 +71,7 @@ export default {
         { title: '补货实发数量', dataIndex: 'confirmQty', width: '12%', align: 'center', customRender: function (text) { return ((text || text == 0) ? text : '--') } },
         { title: '单位', dataIndex: 'product.unit', width: '6%', align: 'center', customRender: function (text) { return text || '--' } },
         // { title: '成本价', dataIndex: 'product.unit', width: '15%', align: 'center', customRender: function (text) { return text || '--' } },
-        { title: '成本小计', dataIndex: 'totalCost', width: '15%', align: 'center', customRender: function (text) { return text || '--' } },
+        { title: '成本小计', dataIndex: 'totalCost', width: '15%', align: 'center', customRender: function (text) { return (text || text == 0) ? _this.toThousands(text, 2) : '--' } },
         { title: '是否急件', dataIndex: 'oosFlag', width: '15%', align: 'center', customRender: function (text) { return text == 1 ? '是' : '否' } }
       ],
       // 加载数据方法 必须为 Promise 对象

+ 2 - 3
src/views/numsGoodsShelves/settlementManagement/unSettlementDetail.vue

@@ -121,8 +121,7 @@ export default {
         outEndDate: '',
         orderBillNo: ''
       },
-      // 表头
-      columns: [
+      columns: [// 表头
         { title: '序号', dataIndex: 'no', width: '5%', align: 'center' },
         { title: '下单时间', dataIndex: 'orderDate', width: '10%', align: 'center', customRender: function (text) { return text || '--' } },
         { title: '取货时间', dataIndex: 'outDate', width: '10%', align: 'center', customRender: function (text) { return text || '--' } },
@@ -131,7 +130,7 @@ export default {
         { title: '产品编码', width: '10%', dataIndex: 'productCode', align: 'center', customRender: function (text) { return text || '--' } },
         { title: '产品名称', width: '15%', dataIndex: 'productName', align: 'left', customRender: function (text) { return text || '--' }, ellipsis: true },
         { title: '结算价', width: '10%', dataIndex: 'settlePrice', align: 'right', customRender: function (text) { return toThousands(text, 2) || '--' } },
-        { title: '下单数量', width: '8%', dataIndex: 'totalQty', align: 'center', customRender: function (text) { return toThousands(text) || '--' } },
+        { title: '下单数量', width: '8%', dataIndex: 'totalQty', align: 'center', customRender: function (text) { return text || '--' } },
         { title: '合计金额', width: '10%', dataIndex: 'settleAmount', align: 'right', customRender: function (text) { return toThousands(text, 2) || '--' } }
       ],
       // 加载数据方法 必须为 Promise 对象

+ 4 - 3
src/views/numsGoodsShelves/shelfOrder/detail.vue

@@ -29,7 +29,7 @@
             <div>
               总款数:<strong>{{ countDetail&&(countDetail.productCategory || countDetail.productCategory==0) ? countDetail.productCategory : '--' }}</strong>;
               总数量:<strong>{{ countDetail&&(countDetail.totalQty || countDetail.totalQty==0) ? countDetail.totalQty : '--' }}</strong>;
-              总结算金额:<strong>{{ countDetail&&(countDetail.settleAmount || countDetail.settleAmount==0) ? countDetail.settleAmount : '--' }}</strong>;
+              总结算金额:<strong>{{ countDetail&&(countDetail.settleAmount || countDetail.settleAmount==0) ? toThousands(countDetail.settleAmount,2) : '--' }}</strong>;
             </div>
           </div>
         </a-alert>
@@ -75,14 +75,15 @@ export default {
   },
   computed: {
     columns () {
+      let _this=this
       const arr = [
         { title: '序号', dataIndex: 'no', width: '5%', align: 'center' },
         { title: '货位号', dataIndex: 'shelfPlaceCode', width: '10%', align: 'center', customRender: function (text) { return text || '--' } },
         { title: '产品编码', dataIndex: 'productCode', width: '15%', scopedSlots: { customRender: 'productCode' }, align: 'center' },
         { title: '产品名称', dataIndex: 'productName', width: '40%', align: 'center', customRender: function (text) { return text || '--' } },
-        { title: '结算价', dataIndex: 'settlePrice', width: '10%', align: 'center', customRender: function (text) { return ((text || text == 0) ? text : '--') } },
+        { title: '结算价', dataIndex: 'settlePrice', width: '10%', align: 'right', customRender: function (text) { return ((text || text == 0) ? _this.toThousands(text,2) : '--') } },
         { title: '下单数量', dataIndex: 'totalQty', width: '10%', align: 'center', customRender: function (text) { return ((text || text == 0) ? text : '--') } },
-        { title: '结算金额小计', dataIndex: 'settleAmount', width: '10%', align: 'center', customRender: function (text) { return ((text || text == 0) ? text : '--') } }
+        { title: '结算金额小计', dataIndex: 'settleAmount', width: '10%', align: 'right', customRender: function (text) { return ((text || text == 0) ?  _this.toThousands(text,2) : '--') } }
       ]
       return arr
     }

+ 3 - 2
src/views/numsGoodsShelves/shelfOrder/list.vue

@@ -40,7 +40,7 @@
       </div>
       <!-- 提示 -->
       <a-alert type="info" style="margin-bottom: 10px" v-if="countData">
-        <div slot="message">总款数:{{ countData.productCategory }};总数量:{{ countData.totalQty }};总结算金额:{{ countData.settleAmount }};</div>
+        <div slot="message">总款数:{{ countData.productCategory }};总数量:{{ countData.totalQty }};总结算金额:{{ countData&&(countData.settleAmount||countData.settleAmount==0)?toThousands(countData.settleAmount,2):'--' }};</div>
       </a-alert>
       <!-- 列表 -->
       <s-table
@@ -76,6 +76,7 @@ export default {
   components: { STable, VSelect, shelfSList, rangeDate },
   mixins: [commonMixin],
   data () {
+    const _this = this
     return {
       spinning: false,
       tableHeight: 0,
@@ -94,7 +95,7 @@ export default {
         { title: '货架名称', dataIndex: 'shelfName', width: '34%', align: 'left', customRender: function (text) { return text || '--' }, ellipsis: true },
         { title: '总款数', dataIndex: 'productCategory', align: 'center', width: '8%', customRender: function (text) { return ((text || text == 0) ? text : '--') } },
         { title: '总数量', dataIndex: 'totalQty', align: 'center', width: '8%', customRender: function (text) { return ((text || text == 0) ? text : '--') } },
-        { title: '总结算金额', dataIndex: 'settleAmount', align: 'center', width: '8%', customRender: function (text) { return ((text || text == 0) ? text : '--') } },
+        { title: '总结算金额', dataIndex: 'settleAmount', align: 'right', width: '8%', customRender: function (text) { return ((text || text == 0) ? _this.toThousands(text, 2) : '--') } },
         { title: '下单时间', dataIndex: 'createDate', width: '10%', align: 'center', customRender: function (text) { return text || '--' } },
         { title: '订单状态', dataIndex: 'billStateDictValue', width: '10%', align: 'center', customRender: function (text) { return text || '--' } }
       ],

+ 7 - 4
src/views/numsGoodsShelves/shelfSet/chooseImportModal.vue

@@ -60,6 +60,7 @@
 
 <script>
 import { shelfProductParseProducts } from '@/api/shelf'
+import { toThousands } from '@/libs/tools.js'
 export default {
   name: 'ChooseImportModal',
   props: {
@@ -75,15 +76,17 @@ export default {
     }
   },
   data () {
+    const _this = this
     return {
+      toThousands,
       isShow: this.openModal, //  是否打开弹框
       nowColumns: [ //  可导入
         { title: '序号', dataIndex: 'no', width: '6%', align: 'center' },
         { title: '货位号', dataIndex: 'shelfPlaceCode', width: '19%', align: 'center', customRender: function (text) { return text || '--' } },
         { title: '绑定产品编码', dataIndex: 'productCode', width: '17%', align: 'center', customRender: function (text) { return text || '--' } },
         { title: '绑定产品名称', dataIndex: 'productName', width: '26%', align: 'left', customRender: function (text) { return text || '--' }, ellipsis: true },
-        { title: '销售价', dataIndex: 'price', width: '10%', align: 'center', customRender: function (text) { return ((text || text == 0) ? text : '--') } },
-        { title: '结算价', dataIndex: 'cost', width: '10%', align: 'center', customRender: function (text) { return ((text || text == 0) ? text : '--') } },
+        { title: '销售价', dataIndex: 'price', width: '10%', align: 'right', customRender: function (text) { return ((text || text == 0) ? _this.toThousands(text, 2) : '--') } },
+        { title: '结算价', dataIndex: 'cost', width: '10%', align: 'right', customRender: function (text) { return ((text || text == 0) ? _this.toThousands(text, 2) : '--') } },
         { title: '最大库容', dataIndex: 'maxQty', width: '10%', align: 'center', customRender: function (text) { return ((text || text == 0) ? text : '--') } }
       ],
       nowUnColumns: [ //  不可导入
@@ -91,8 +94,8 @@ export default {
         { title: '货位号', dataIndex: 'shelfPlaceCode', width: '18%', align: 'center', customRender: function (text) { return text || '--' } },
         { title: '绑定产品编码', dataIndex: 'productCode', width: '13%', align: 'center', customRender: function (text) { return text || '--' } },
         { title: '绑定产品名称', dataIndex: 'productName', width: '20%', align: 'left', customRender: function (text) { return text || '--' }, ellipsis: true },
-        { title: '销售价', dataIndex: 'price', width: '8%', align: 'center', customRender: function (text) { return ((text || text == 0) ? text : '--') } },
-        { title: '结算价', dataIndex: 'cost', width: '8%', align: 'center', customRender: function (text) { return ((text || text == 0) ? text : '--') } },
+        { title: '销售价', dataIndex: 'price', width: '8%', align: 'right', customRender: function (text) { return ((text || text == 0) ? _this.toThousands(text, 2) : '--') } },
+        { title: '结算价', dataIndex: 'cost', width: '8%', align: 'right', customRender: function (text) { return ((text || text == 0) ? _this.toThousands(text, 2) : '--') } },
         { title: '最大库容', dataIndex: 'maxQty', width: '8%', align: 'center', customRender: function (text) { return ((text || text == 0) ? text : '--') } },
         { title: '错误原因', dataIndex: 'remarks', width: '17%', align: 'left', customRender: function (text) { return text || '--' }, ellipsis: true }
       ],

+ 7 - 4
src/views/numsGoodsShelves/shelfSet/chooseShelfImportModal.vue

@@ -71,6 +71,7 @@
 <script>
 import { hdExportExcel } from '@/libs/exportExcel'
 import { shelfPlaceReadExcel, shelfSaveBatchExcel, shelfPlaceFailExcel } from '@/api/shelf'
+import { toThousands } from '@/libs/tools.js'
 export default {
   name: 'ChooseImportModal',
   props: {
@@ -86,15 +87,17 @@ export default {
     }
   },
   data () {
+    const _this = this
     return {
+      toThousands,
       isShow: this.openModal, //  是否打开弹框
       nowColumns: [
         { title: '序号', dataIndex: 'no', width: '8%', align: 'center' },
         { title: '货位号', dataIndex: 'shelfPlaceCode', width: '8%', align: 'center', customRender: function (text) { return text || '--' } },
         { title: '产品编码', dataIndex: 'productCode', width: '15%', align: 'center', customRender: function (text) { return text || '--' } },
         { title: '产品名称', dataIndex: 'productName', width: '45%', align: 'center', customRender: function (text) { return text || '--' } },
-        { title: '销售价', dataIndex: 'price', width: '8%', align: 'center', customRender: function (text) { return ((text || text == 0) ? text : '--') } },
-        { title: '结算价', dataIndex: 'cost', width: '8%', align: 'center', customRender: function (text) { return ((text || text == 0) ? text : '--') } },
+        { title: '销售价', dataIndex: 'price', width: '8%', align: 'right', customRender: function (text) { return ((text || text == 0) ? _this.toThousands(text, 2) : '--') } },
+        { title: '结算价', dataIndex: 'cost', width: '8%', align: 'right', customRender: function (text) { return ((text || text == 0) ? _this.toThousands(text, 2) : '--') } },
         { title: '最大库容', dataIndex: 'maxQty', width: '8%', align: 'center', customRender: function (text) { return ((text || text == 0) ? text : '--') } }
       ],
       loadData: [],
@@ -103,8 +106,8 @@ export default {
         { title: '货位号', dataIndex: 'shelfPlaceCode', width: '8%', align: 'center', customRender: function (text) { return text || '--' } },
         { title: '产品编码', dataIndex: 'productCode', width: '15%', align: 'center', customRender: function (text) { return text || '--' } },
         { title: '产品名称', dataIndex: 'productName', width: '30%', align: 'center', customRender: function (text) { return text || '--' } },
-        { title: '销售价', dataIndex: 'price', width: '8%', align: 'center', customRender: function (text) { return ((text || text == 0) ? text : '--') } },
-        { title: '结算价', dataIndex: 'cost', width: '8%', align: 'center', customRender: function (text) { return ((text || text == 0) ? text : '--') } },
+        { title: '销售价', dataIndex: 'price', width: '8%', align: 'right', customRender: function (text) { return ((text || text == 0) ? _this.toThousands(text, 2) : '--') } },
+        { title: '结算价', dataIndex: 'cost', width: '8%', align: 'right', customRender: function (text) { return ((text || text == 0) ? _this.toThousands(text, 2) : '--') } },
         { title: '最大库容', dataIndex: 'maxQty', width: '8%', align: 'center', customRender: function (text) { return ((text || text == 0) ? text : '--') } },
         { title: '错误原因', dataIndex: 'remarks', width: '15%', align: 'center', customRender: function (text) { return text || '--' } }
       ],

+ 1 - 1
src/views/numsGoodsShelves/shelfSet/importHuoweiModal.vue

@@ -92,7 +92,7 @@ export default {
     return {
       isShow: this.openModal, //  是否打开弹框
       openImportModal: false, //  导入
-      filePath: 'https://jianguan-images.oss-cn-beijing.aliyuncs.com/template/importProductToShelfTpl.xlsx', // 文件地址
+      filePath: location.protocol + '//' +location.host + '/templ/货位导入模板.xlsx',
       attachAction: process.env.VUE_APP_API_BASE_URL + '/upload',
       paramsData: null,
       uploadParams: {

+ 3 - 2
src/views/numsGoodsShelves/shelfSet/set.vue

@@ -162,6 +162,7 @@ export default {
   components: { STable, VSelect, commonModal, bindProductModal, addHwModal, ImportGuideModal, basicInfoModal, importHuoweiModal },
   mixins: [commonMixin],
   data () {
+    const _this = this
     return {
       spinning: false,
       disabled: false, //  查询、重置按钮是否可操作
@@ -176,8 +177,8 @@ export default {
         { title: '货位号', dataIndex: 'shelfPlaceCode', width: '15%', align: 'center', customRender: function (text) { return text || '--' } },
         { title: '绑定产品编码', dataIndex: 'shelfProductApiEntity.productCode', width: '16%', align: 'center', customRender: function (text) { return text || '--' } },
         { title: '绑定产品名称', dataIndex: 'shelfProductApiEntity.productName', width: '23%', align: 'left', customRender: function (text) { return text || '--' }, ellipsis: true },
-        { title: '销售价', dataIndex: 'shelfProductApiEntity.price', width: '9%', align: 'center', customRender: function (text) { return ((text || text == 0) ? text : '--') } },
-        { title: '结算价', dataIndex: 'shelfProductApiEntity.cost', width: '9%', align: 'center', customRender: function (text) { return ((text || text == 0) ? text : '--') } },
+        { title: '销售价', dataIndex: 'shelfProductApiEntity.price', width: '9%', align: 'right', customRender: function (text) { return ((text || text == 0) ? _this.toThousands(text, 2) : '--') } },
+        { title: '结算价', dataIndex: 'shelfProductApiEntity.cost', width: '9%', align: 'right', customRender: function (text) { return ((text || text == 0) ? _this.toThousands(text, 2) : '--') } },
         { title: '最大库容', dataIndex: 'shelfProductApiEntity.maxQty', width: '9%', align: 'center', customRender: function (text) { return ((text || text == 0) ? text : '--') } },
         { title: '当前库存', dataIndex: 'shelfProductApiEntity.qty', width: '9%', align: 'center', customRender: function (text) { return ((text || text == 0) ? text : '--') } },
         { title: '操作', scopedSlots: { customRender: 'action' }, width: '15%', align: 'center' }

+ 3 - 3
src/views/numsGoodsShelves/vinAnalysis/vinList.vue

@@ -24,17 +24,17 @@
             </a-form-model-item>
           </a-col>
           <template v-if="advanced">
-            <a-col :md="4" :sm="24">
+            <a-col :md="6" :sm="24">
               <a-form-model-item label="VIN">
                 <a-input id="vinAnaly-VIN" v-model.trim="queryParam.vinCode" allowClear placeholder="请输入VIN"/>
               </a-form-model-item>
             </a-col>
-            <a-col :md="4" :sm="24">
+            <a-col :md="6" :sm="24">
               <a-form-model-item label="车辆品牌">
                 <a-input id="vinAnaly-salesBillNo" v-model.trim="queryParam.brandName" allowClear placeholder="请输入车辆品牌"/>
               </a-form-model-item>
             </a-col>
-            <a-col :md="4" :sm="24">
+            <a-col :md="6" :sm="24">
               <a-form-model-item label="车型">
                 <a-input id="vinAnaly-salesManName" v-model.trim="queryParam.modelInfo" allowClear placeholder="请输入车型"/>
               </a-form-model-item>

+ 3 - 1
src/views/numsGoodsShelves/withdrawalManagement/applyWithdrawal.vue

@@ -29,7 +29,7 @@
             allowClear />
         </a-form-model-item>
         <a-form-model-item label="实际扣除金额">
-          <span>{{ serviceCharge }}元 </span><span style="color: #999;">(申请提现金额+提现手续费)</span>
+          <span>{{ (serviceCharge||serviceCharge==0)?toThousands(serviceCharge,2):'--' }}元 </span><span style="color: #999;">(申请提现金额+提现手续费)</span>
         </a-form-model-item>
         <a-form-model-item label="提现账户">
           <span style="display: block;" v-if="pageInfo">{{ pageInfo.merchantBankAccountEntity?pageInfo.merchantBankAccountEntity.bankAccount:'' }}{{ ' ( '+ pageInfo.dealerName +' ) ' }}</span>
@@ -45,8 +45,10 @@
 </template>
 
 <script>
+import { commonMixin } from '@/utils/mixin'
 import { saveMerchantCashOut, merchantCashOutDetail } from '@/api/merchant'
 export default {
+  mixins: [commonMixin],
   props: {
     isOpenModal: {
       type: Boolean,

+ 6 - 7
src/views/numsGoodsShelves/withdrawalManagement/list.vue

@@ -20,7 +20,7 @@
       <div style="margin:10px 0">
         <div style="display: flex;align-items: center;padding: 2px 0;">
           <div style="display: flex;align-items: center;">
-            可提现金额:<span>{{ pageInfo &&pageInfo.activeAmount?toThousands(pageInfo.activeAmount,2):'--' }}</span>
+            可提现金额:<span>{{ pageInfo&&pageInfo.activeAmount?toThousands(pageInfo.activeAmount):'--' }}</span>
             <a-button size="small" type="primary" class="button-primary" @click="handleTX">申请提现</a-button>
             <span>(提示:① 提现手续费为0.5元/笔;② 资金到账周期为工作日+1天)</span>
           </div>
@@ -51,13 +51,12 @@ import { STable } from '@/components'
 import applyWithdrawal from './applyWithdrawal.vue'
 import rangeDate from '@/views/common/rangeDate.vue'
 import { queryMerchantCashOutPage, merchantCashOutDetail } from '@/api/merchant'
-import { toThousands } from '@/libs/tools.js'
 export default {
   mixins: [commonMixin],
   components: { STable, applyWithdrawal, rangeDate },
   data () {
+    const _this = this
     return {
-      toThousands,
       spinning: false,
       disabled: false,
       tableHeight: 0,
@@ -73,9 +72,9 @@ export default {
         { title: '序号', dataIndex: 'no', width: '5%', align: 'center' },
         { title: '提现单号', dataIndex: 'cashOutNo', width: '15%', align: 'center', customRender: function (text) { return text || '--' } },
         { title: '提现时间', dataIndex: 'cashOutDate', width: '10%', align: 'center', customRender: function (text) { return text || '--' } },
-        { title: '申请提现金额', dataIndex: 'amount', width: '10%', align: 'right', customRender: function (text) { return toThousands(text, 2) || '--' } },
-        { title: '开户名', dataIndex: 'bankAccount', width: '15%', align: 'center', customRender: function (text) { return text || '--' },ellipsis: true },
-        { title: '银行卡号', dataIndex: 'bankCard', width: '20%', align: 'center', customRender: function (text) { return text || '--' },ellipsis: true },
+        { title: '申请提现金额', dataIndex: 'amount', width: '10%', align: 'right', customRender: function (text) {  return ((text || text == 0) ? _this.toThousands(text, 2) : '--') } },
+        { title: '开户名', dataIndex: 'bankAccount', width: '15%', align: 'center', customRender: function (text) { return text || '--' }, ellipsis: true },
+        { title: '银行卡号', dataIndex: 'bankCard', width: '20%', align: 'center', customRender: function (text) { return text || '--' }, ellipsis: true },
         { title: '提现人', dataIndex: 'operName', width: '10%', align: 'center', customRender: function (text) { return text || '--' } },
         { title: '状态', dataIndex: 'stateDictValue', width: '5%', align: 'center', customRender: function (text) { return text || '--' } },
         { title: '备注', dataIndex: 'remarks', width: '10%', align: 'center', customRender: function (text) { return text || '--' } }
@@ -121,7 +120,7 @@ export default {
         }
       })
     },
-    getRefresh(){
+    getRefresh () {
       this.getPageInfo()
       this.$refs.table.refresh(true)
     },

+ 2 - 1
src/views/outboundOrderManagement/outboundOrder/list.vue

@@ -138,6 +138,7 @@ export default {
   components: { STable, VSelect, rangeDate, pushOrderDetailModal, salesDetailModal, urgentDetailModal, storeTransferOutDetailModal, chainTransferOutDetailModal, warehouseAllocationDetailModal, replenishmentDetailModal, stateIcon },
   mixins: [commonMixin],
   data () {
+    const _this = this
     return {
       spinning: false,
       advanced: true, // 高级搜索 展开/关闭
@@ -161,7 +162,7 @@ export default {
         { title: '单位名称', dataIndex: 'demanderName', width: '20%', align: 'center', customRender: function (text) { return text || '--' } },
         { title: '总款数', dataIndex: 'productTotalCategory', width: '6%', align: 'center', customRender: function (text) { return ((text || text == 0) ? text : '--') } },
         { title: '总数量', dataIndex: 'productTotalQty', width: '6%', align: 'center', customRender: function (text) { return ((text || text == 0) ? text : '--') } },
-        { title: '总售价', dataIndex: 'productTotalPrice', width: '6%', align: 'center', customRender: function (text) { return ((text || text == 0) ? text : '--') } },
+        { title: '总售价', dataIndex: 'productTotalPrice', width: '6%', align: 'right', customRender: function (text) { return ((text || text == 0) ? _this.toThousands(text) : '--') } },
         { title: '审核时间', dataIndex: 'auditTime', width: '11%', align: 'center', customRender: function (text) { return text || '--' }, sorter: true },
         { title: '出库时间', dataIndex: 'outTime', width: '11%', align: 'center', customRender: function (text) { return text || '--' } },
         { title: '出库', scopedSlots: { customRender: 'state' }, width: '3%', align: 'center' },

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