浏览代码

Merge branch 'develop_yh66' of jianguan-web/qpls-md-html into pre-release

李磊 1 天之前
父节点
当前提交
e64be4cec0

+ 1 - 1
public/version.json

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

+ 24 - 0
src/api/settle.js

@@ -28,6 +28,30 @@ export const settleUnitList = (params) => {
     }
   })
 }
+//  单位收付款记录  导出
+export const settleUnitListExport = params => {
+  return axios.request({
+    url: `/settle/unit/export`,
+    data: params,
+    method: 'post',
+    responseType: 'blob',
+    headers: {
+      'module': encodeURIComponent('单位收付款记录导出')
+    }
+  })
+}
+//  单位应收应付管理列表  导出
+export const exportClientUnSettle = params => {
+  return axios.request({
+    url: `/settle/unit/exportClientUnSettle`,
+    data: params,
+    method: 'post',
+    responseType: 'blob',
+    headers: {
+      'module': encodeURIComponent('单位应收应付管理列表导出')
+    }
+  })
+}
 //  单位收付款 提交收付款
 export const settleUnitSave = (params) => {
   return axios({

+ 13 - 0
src/api/settlePay.js

@@ -87,3 +87,16 @@ export const delPay = (params) => {
     }
   })
 }
+
+// 导出
+export const settlePayExport = (params) => {
+  return axios({
+    url: `settle/pay/export`,
+    data: params,
+    method: 'post',
+    responseType: 'blob',
+    headers: {
+      'module': encodeURIComponent('财务付款导出')
+    }
+  })
+}

+ 13 - 0
src/api/settleReceipt.js

@@ -87,3 +87,16 @@ export const delReceipt = (params) => {
     }
   })
 }
+
+// 财务收款款导出
+export const exportReceipt = (params) => {
+  return axios({
+    url: `settle/receipt/export`,
+    data: params,
+    method: 'post',
+    responseType: 'blob',
+    headers: {
+      'module': encodeURIComponent('财务收款款导出')
+    }
+  })
+}

+ 40 - 15
src/views/financialManagement/companyCollectionPayment/list.vue

@@ -10,11 +10,6 @@
                 <rangeDate id="companyCollectionPaymentList-rangeDate" ref="rangeDate" @change="dateChange" />
               </a-form-item>
             </a-col>
-            <a-col :md="6" :sm="24">
-              <a-form-item label="客户名称">
-                <a-input id="companyCollectionPaymentList-settleClientName" v-model.trim="queryParam.settleClientNameCurrent" allowClear placeholder="请输入客户名称"/>
-              </a-form-item>
-            </a-col>
             <a-col :md="6" :sm="24">
               <a-form-item label="单位类型">
                 <v-select
@@ -26,6 +21,11 @@
                   allowClear></v-select>
               </a-form-item>
             </a-col>
+            <a-col :md="6" :sm="24">
+              <a-form-item label="客户名称">
+                <a-input id="companyCollectionPaymentList-settleClientName" v-model.trim="queryParam.settleClientNameCurrent" allowClear placeholder="请输入客户名称"/>
+              </a-form-item>
+            </a-col>
             <template v-if="advanced">
               <a-col :md="6" :sm="24">
                 <a-form-item label="结算类型">
@@ -60,6 +60,14 @@
               <span class="table-page-search-submitButtons">
                 <a-button type="primary" @click="$refs.table.refresh(true)" :disabled="disabled" id="companyCollectionPaymentList-refresh">查询</a-button>
                 <a-button style="margin-left: 8px" @click="resetSearchForm()" :disabled="disabled" id="companyCollectionPaymentList-reset">重置</a-button>
+                <a-button
+                  type="primary"
+                  v-if="$hasPermissions('B_cpayUnitExport')"
+                  class="button-warning"
+                  @click="handleExport"
+                  :disabled="disabled"
+                  :loading="exportLoading"
+                  id="companyCollectionPaymentList-export">导出</a-button>
                 <a @click="advanced=!advanced" style="margin-left: 8px" id="companyCollectionPaymentList-advanced">
                   {{ advanced ? '收起' : '展开' }}
                   <a-icon :type="advanced ? 'up' : 'down'"/>
@@ -109,7 +117,8 @@
 import { commonMixin } from '@/utils/mixin'
 import { STable, VSelect } from '@/components'
 import rangeDate from '@/views/common/rangeDate.vue'
-import { settleUnitList, settleUnitQuerySum } from '@/api/settle'
+import { downloadExcel } from '@/libs/JGPrint.js'
+import { settleUnitList, settleUnitQuerySum, settleUnitListExport } from '@/api/settle'
 export default {
   name: 'CompanyCollectionPaymentList',
   components: { STable, VSelect, rangeDate },
@@ -120,6 +129,7 @@ export default {
       spinning: false,
       advanced: true, //  高级搜索 展开/关闭
       disabled: false, //  查询、重置按钮是否可操作
+      exportLoading: false,
       tableHeight: 0,
       // 查询参数
       queryParam: {
@@ -133,15 +143,18 @@ export default {
       },
       // 表头
       columns: [
-        { title: '序号', dataIndex: 'no', width: '5%', align: 'center' },
-        { title: '客户名称', width: '17%', align: 'center', scopedSlots: { customRender: 'customerName' }, ellipsis: true },
-        { 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: '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 || '--' } }
+        { title: '序号', dataIndex: 'no', width: '4%', align: 'center' },
+        { title: '客户名称', width: '16%', align: 'center', scopedSlots: { customRender: 'customerName' }, ellipsis: true },
+        { title: '单位类型', dataIndex: 'settleClientTypeDictValue', width: '6%', align: 'center', customRender: function (text) { return text || '--' } },
+        { title: '结算类型', dataIndex: 'settleTypeDictValue', width: '6%', align: 'center', customRender: function (text) { return text || '--' } },
+        { title: '结算方式', dataIndex: 'settleStyleSnDictValue', width: '6%', align: 'center', customRender: function (text) { return text || '--' } },
+        { title: '结算单号', scopedSlots: { customRender: 'unitSettleNo' }, width: '11%', align: 'center' },
+        { title: '应收金额', dataIndex: 'settlePayAmount', width: '6%', align: 'right', customRender: function (text) { return ((text || text == 0) ? _this.toThousands(text) : '--') } },
+        { title: '应付金额', dataIndex: 'settleReceiptAmount', width: '6%', align: 'right', customRender: function (text) { return ((text || text == 0) ? _this.toThousands(text) : '--') } },
+        { title: '折让金额', dataIndex: 'discountAmount', width: '6%', align: 'right', customRender: function (text) { return ((text || text == 0) ? _this.toThousands(text) : '--') } },
+        { title: '结算金额', dataIndex: 'realSettleAmount', width: '6%', align: 'right', customRender: function (text) { return ((text || text == 0) ? _this.toThousands(text) : '--') } },
+        { title: '结算时间', dataIndex: 'createDate', width: '11%', align: 'center', customRender: function (text) { return text || '--' } },
+        { title: '操作人', dataIndex: 'operateName', width: '16%', align: 'center', customRender: function (text) { return text || '--' }, ellipsis: true }
       ],
       // 加载数据方法 必须为 Promise 对象
       loadData: parameter => {
@@ -179,6 +192,18 @@ export default {
         this.$router.push({ path: `/financialManagement/companyCollectionPayment/detail/${row.id}/${row.unitSettleSn}` })
       }
     },
+    //  导出
+    handleExport () {
+      const _this = this
+      const params = this.queryParam
+      this.exportLoading = true
+      _this.spinning = true
+      settleUnitListExport(params).then(res => {
+        this.exportLoading = false
+        _this.spinning = false
+        downloadExcel(res, '单位收付款记录')
+      })
+    },
     // 合计
     getTotal (param) {
       settleUnitQuerySum(param).then(res => {

+ 23 - 1
src/views/financialManagement/companyReceivablePayable/list.vue

@@ -25,6 +25,14 @@
               <span class="table-page-search-submitButtons">
                 <a-button type="primary" @click="$refs.table.refresh(true)" :disabled="disabled" id="companyReceivablePayableList-refresh">查询</a-button>
                 <a-button style="margin-left: 8px" @click="resetSearchForm()" :disabled="disabled" id="companyReceivablePayableList-reset">重置</a-button>
+                <a-button
+                  type="primary"
+                  v-if="$hasPermissions('B_collectionPaymentExoprt')"
+                  class="button-warning"
+                  @click="handleExport"
+                  :disabled="disabled"
+                  :loading="exportLoading"
+                  id="companyReceivablePayableList-export">导出</a-button>
               </span>
             </a-col>
           </a-row>
@@ -82,7 +90,8 @@
 <script>
 import { commonMixin } from '@/utils/mixin'
 import { STable, VSelect } from '@/components'
-import { settleUnitClientList, settleInfoQuerySum } from '@/api/settle'
+import { downloadExcel } from '@/libs/JGPrint.js'
+import { settleUnitClientList, settleInfoQuerySum, exportClientUnSettle } from '@/api/settle'
 export default {
   name: 'CollectionPaymentList',
   components: { STable, VSelect },
@@ -91,6 +100,7 @@ export default {
     const _this = this
     return {
       spinning: false,
+      exportLoading: false,
       disabled: false, //  查询、重置按钮是否可操作
       tableHeight: 0,
       // 查询参数
@@ -134,6 +144,18 @@ export default {
     }
   },
   methods: {
+    //  导出
+    handleExport () {
+      const _this = this
+      const params = this.queryParam
+      this.exportLoading = true
+      _this.spinning = true
+      exportClientUnSettle(params).then(res => {
+        this.exportLoading = false
+        _this.spinning = false
+        downloadExcel(res, '单位收付款客户')
+      })
+    },
     //  详情
     handleDetail (row) {
       if (row.settleClientType == 'CUSTOMER') {

+ 23 - 1
src/views/financialManagement/companyReceivablePayableNew/list.vue

@@ -25,6 +25,14 @@
               <span class="table-page-search-submitButtons">
                 <a-button type="primary" @click="$refs.table.refresh(true)" :disabled="disabled" id="crpnList-refresh">查询</a-button>
                 <a-button style="margin-left: 8px" @click="resetSearchForm()" :disabled="disabled" id="crpnList-reset">重置</a-button>
+                <a-button
+                  type="primary"
+                  v-if="$hasPermissions('B_collectionPaymentExoprt')"
+                  class="button-warning"
+                  @click="handleExport"
+                  :disabled="disabled"
+                  :loading="exportLoading"
+                  id="companyCollectionPaymentList-export">导出</a-button>
               </span>
             </a-col>
           </a-row>
@@ -85,8 +93,9 @@
 
 <script>
 import { commonMixin } from '@/utils/mixin'
+import { downloadExcel } from '@/libs/JGPrint.js'
 import { STable, VSelect } from '@/components'
-import { settleUnitClientList, settleInfoQuerySum } from '@/api/settle'
+import { settleUnitClientList, settleInfoQuerySum, exportClientUnSettle } from '@/api/settle'
 export default {
   name: 'CollectionPaymentList',
   components: { STable, VSelect },
@@ -97,6 +106,7 @@ export default {
       spinning: false,
       disabled: false, //  查询、重置按钮是否可操作
       tableHeight: 0, // 表格高度
+      exportLoading: false,
       // 查询参数
       queryParam: {
         settleClientNameCurrent: '', // 客户名称
@@ -138,6 +148,18 @@ export default {
     }
   },
   methods: {
+    //  导出
+    handleExport () {
+      const _this = this
+      const params = this.queryParam
+      this.exportLoading = true
+      _this.spinning = true
+      exportClientUnSettle(params).then(res => {
+        this.exportLoading = false
+        _this.spinning = false
+        downloadExcel(res, '单位收付款客户')
+      })
+    },
     //  详情
     handleDetail (row) {
       const clientName = row.settleClientType == 'CUSTOMER' ? row.settleClientNameCurrent : row.settleClientName

+ 34 - 1
src/views/financialManagement/financialCollection/list.vue

@@ -17,6 +17,17 @@
             <a-col :md="6" :sm="24">
               <a-form-item label="关联单号"><a-input id="financialCollectionList-bizNo" v-model.trim="queryParam.bizNo" allowClear placeholder="请输入关联单号" /></a-form-item>
             </a-col>
+            <a-col :md="6" :sm="24">
+              <a-form-item label="商户类型">
+                <v-select
+                  v-model="queryParam.settleClientType "
+                  ref="settleClientType "
+                  id="financialCollectionList-settleClientType "
+                  code="SETTLE_CLIENT_TYPE"
+                  placeholder="请选择商户类型"
+                  allowClear></v-select>
+              </a-form-item>
+            </a-col>
             <a-col :md="6" :sm="24">
               <a-form-item label="商户名称">
                 <a-input id="financialCollectionList-settleClientName" v-model.trim="queryParam.settleClientNameCurrent" allowClear placeholder="请输入商户名称" />
@@ -56,6 +67,14 @@
               <span class="table-page-search-submitButtons">
                 <a-button type="primary" @click="searchForm()" :disabled="disabled" id="financialCollectionList-refresh">查询</a-button>
                 <a-button style="margin-left: 5px" @click="resetSearchForm()" :disabled="disabled" id="financialCollectionList-reset">重置</a-button>
+                <a-button
+                  type="primary"
+                  v-if="$hasPermissions('B_financialCollectionExport')"
+                  class="button-warning"
+                  @click="handleExport"
+                  :disabled="disabled"
+                  :loading="exportLoading"
+                  id="financialCollectionList-export">导出</a-button>
                 <a @click="advanced = !advanced" style="margin-left: 5px" id="financialCollectionList-advanced">
                   {{ advanced ? '收起' : '展开' }}
                   <a-icon :type="advanced ? 'up' : 'down'" />
@@ -178,6 +197,7 @@ import { STable, VSelect } from '@/components'
 import detailModal from './detailModal.vue'
 import settleModal from '../settleModal/settleModal.vue'
 import rangeDate from '@/views/common/rangeDate.vue'
+import { downloadExcel } from '@/libs/JGPrint.js'
 import salesDetailModal from '@/views/salesManagement/salesQuery/detail.vue'
 // 同步采购退货单详情
 import pushOrderDetailModal from '@/views/purchasingManagement/purchaseReturn/detail.vue'
@@ -186,7 +206,7 @@ import pushOrderOutSyncDetailModal from '@/views/purchasingManagement/purchaseRe
 import chainTransferOutDetailModal from '@/views/allocationManagement/chainTransferOut/detail.vue'
 import storeTransferOutDetailModal from '@/views/allocationManagement/storeTransferOut/detail.vue'
 import bulkReturnGoodsDetailModal from '@/views/bulkManagement/bulkReturnGoods/detailModal.vue'
-import { settleReceiptQuery, queryByTypeSum, settleReceiptMoney, settleReceiptQuerySum } from '@/api/settleReceipt'
+import { settleReceiptQuery, queryByTypeSum, settleReceiptMoney, settleReceiptQuerySum, exportReceipt } from '@/api/settleReceipt'
 export default {
   name: 'FinancialCollectionList',
   components: { STable, VSelect, detailModal, rangeDate, settleModal, pushOrderDetailModal, pushOrderOutSyncDetailModal, salesDetailModal, chainTransferOutDetailModal, bulkReturnGoodsDetailModal, storeTransferOutDetailModal },
@@ -198,6 +218,7 @@ export default {
       advanced: true, //  高级搜索 展开/关闭
       disabled: false, //  查询、重置按钮是否可操作
       openModal: false, // 单据详情弹框
+      exportLoading: false,
       openDetailModal: false, // 打开关联单号详情弹框
       openSettleModal: false, // 打开收款弹框
       openBulkReturnDetailModal: false, // 散件退货弹框
@@ -288,6 +309,18 @@ export default {
     }
   },
   methods: {
+    //  导出
+    handleExport () {
+      const _this = this
+      const params = this.queryParam
+      this.exportLoading = true
+      _this.spinning = true
+      exportReceipt(params).then(res => {
+        this.exportLoading = false
+        _this.spinning = false
+        downloadExcel(res, '财务收款信息')
+      })
+    },
     // 计算实收金额
     setReceivedPrice () {
       const numInfo = (this.totalData.settledAmount * 100 - this.totalData.refundingAmount * 100 - this.totalData.refundedAmount * 100) / 100

+ 36 - 2
src/views/financialManagement/financialPayment/list.vue

@@ -17,6 +17,17 @@
             <a-col :md="6" :sm="24">
               <a-form-item label="关联单号"><a-input id="finacialPay-bizNo" v-model.trim="queryParam.bizNo" allowClear placeholder="请输入关联单号" /></a-form-item>
             </a-col>
+            <a-col :md="6" :sm="24">
+              <a-form-item label="商户类型">
+                <v-select
+                  v-model="queryParam.settleClientType "
+                  ref="settleClientType "
+                  id="finacialPay-settleClientType "
+                  code="SETTLE_CLIENT_TYPE"
+                  placeholder="请选择商户类型"
+                  allowClear></v-select>
+              </a-form-item>
+            </a-col>
             <a-col :md="6" :sm="24">
               <a-form-item label="商户名称">
                 <a-input id="finacialPay-settleClientName" v-model.trim="queryParam.settleClientNameCurrent" allowClear placeholder="请输入商户名称" />
@@ -55,6 +66,14 @@
               <span class="table-page-search-submitButtons">
                 <a-button type="primary" @click="searchForm()" :disabled="disabled" id="finacialPay-refresh">查询</a-button>
                 <a-button style="margin-left: 5px" @click="resetSearchForm()" :disabled="disabled" id="finacialPay-reset">重置</a-button>
+                <a-button
+                  type="primary"
+                  v-if="$hasPermissions('B_financialPaymentExport')"
+                  class="button-warning"
+                  @click="handleExport"
+                  :disabled="disabled"
+                  :loading="exportLoading"
+                  id="finacialPay-export">导出</a-button>
                 <a @click="advanced = !advanced" style="margin-left: 5px" id="finacialPay-advanced">
                   {{ advanced ? '收起' : '展开' }}
                   <a-icon :type="advanced ? 'up' : 'down'" />
@@ -177,8 +196,9 @@ import salesReturnDetail from '@/views/salesManagement/salesReturn/detail'
 import chainTransInDetail from '@/views/allocationManagement/chainTransferIn/detail'
 import bulkWareDetail from '@/views/bulkManagement/bulkWarehousingOrder/detail'
 import expenseDetail from './expenseDetail'
+import { downloadExcel } from '@/libs/JGPrint.js'
 // 接口
-import { settlePayQuery, queryByTypeSum, settlePayMoney, settlePayQuerySum } from '@/api/settlePay.js'
+import { settlePayQuery, queryByTypeSum, settlePayMoney, settlePayQuerySum, settlePayExport } from '@/api/settlePay.js'
 export default {
   name: 'FinancialPaymentList',
   components: { STable, VSelect, detailModal, rangeDate, settleModal, salesReturnDetail, chainTransInDetail, bulkWareDetail, expenseDetail, purchasDetail, stockOrderDetail },
@@ -190,6 +210,7 @@ export default {
       advanced: true, //  高级搜索 展开/关闭
       disabled: false, //  查询、重置按钮是否可操作
       openModal: false, // 详情弹框
+      exportLoading: false,
       openSettleModal: false, // 打开付款弹框
       enableFundAccount: false, // 是否开启资金账户管理
       tableHeight: 0, // 表格高度
@@ -208,7 +229,8 @@ export default {
         auditBeginDate: '', // 审核开始时间
         auditEndDate: '', // 审核结束时间
         settleBeginDate: '', // 结算开始时间
-        settleEndDate: ''// 结算结束时间
+        settleEndDate: '', // 结算结束时间
+        settleClientType: undefined // 客户类型
       },
       // 总计
       totalData: {
@@ -273,6 +295,18 @@ export default {
   },
   methods: {
     ...mapActions(['GetSettleAccountState']),
+    //  导出
+    handleExport () {
+      const _this = this
+      const params = this.queryParam
+      this.exportLoading = true
+      _this.spinning = true
+      settlePayExport(params).then(res => {
+        this.exportLoading = false
+        _this.spinning = false
+        downloadExcel(res, '财务付款信息')
+      })
+    },
     // 查看关联单号
     handleDetail (row) {
       this.orderSn = row.bizSn

+ 9 - 7
src/views/inventoryManagement/inventoryQuery/list.vue

@@ -109,10 +109,11 @@
       <!-- 合计 -->
       <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) ? toThousands(currentStock.totalCurrentStockCost) : '--' }}</strong>
+            可用库存总成本:<strong>{{ currentStock&&(currentStock.totalCurrentStockCost || currentStock.totalCurrentStockCost==0) ? toThousands(currentStock.totalCurrentStockCost) : '--' }}</strong>
           </div>
+          冻结总库存:<strong>{{ currentStock&&(currentStock.totalFreezeQty || currentStock.totalFreezeQty==0) ? currentStock.totalFreezeQty : '--' }}个</strong>;
         </div>
       </a-alert>
       <!-- 列表 -->
@@ -281,19 +282,20 @@ export default {
       const _this = this
       const arr = [
         { title: '序号', dataIndex: 'no', width: '4%', align: 'center' },
-        { title: '产品编码', dataIndex: 'productCode', width: '16%', align: 'center', customRender: function (text) { return text || '--' } },
-        { title: '产品名称', dataIndex: 'productName', width: '16%', align: 'left', ellipsis: true, customRender: function (text) { return text || '--' } },
-        { title: '原厂编码', dataIndex: 'productOrigCode', width: '10%', align: 'center', customRender: function (text) { return text || '--' } },
+        { title: '产品编码', dataIndex: 'productCode', width: '10%', align: 'center', customRender: function (text) { return text || '--' } },
+        { title: '产品名称', dataIndex: 'productName', width: '15%', align: 'left', ellipsis: true, customRender: function (text) { return text || '--' } },
+        { title: '原厂编码', dataIndex: 'productOrigCode', width: '12%', align: 'center', customRender: function (text) { return text || '--' } },
         { title: '产品品牌', dataIndex: 'brandName', width: '8%', align: 'center', customRender: function (text) { return text || '--' } },
         { title: '产品分类', scopedSlots: { customRender: 'productTypeName' }, width: '13%', align: 'center' },
-        { title: '可用库存数量(个)', dataIndex: 'currentStockQty', width: '8%', align: 'center', sorter: true, customRender: function (text) { return ((text || text == 0) ? text : '--') } },
+        { title: '可用库存(个)', dataIndex: 'currentStockQty', width: '8%', align: 'center', sorter: true, customRender: function (text) { return ((text || text == 0) ? text : '--') } },
         // { title: '可用库存成本(¥)', dataIndex: 'currentStockCost', width: '8%', align: 'center', sorter: true, customRender: function (text) { return ((text || text == 0) ? text : '--') } },
+        { title: '冻结库存(个)', dataIndex: 'freezeQty', width: '8%', align: 'center', sorter: true, customRender: function (text) { return ((text || text == 0) ? text : '--') } },
         { title: <div><a-tooltip placement='top' title='1:产品距离最近一次销售的时间,30天算一个月 2:采购退货,调拨等不算销售,不用来计算滞销天数'><a-icon type="question-circle" /></a-tooltip>&nbsp;滞销天数</div>, width: '10%', align: 'center', dataIndex: 'unsalableDays', scopedSlots: { customRender: 'unsalableDays' }, sorter: true },
         { title: <div><a-tooltip placement='top' title='注意:购物车仅限添加箭冠已上线产品。'><a-icon type="question-circle" /></a-tooltip>&nbsp;操作</div>, scopedSlots: { customRender: 'action' }, width: '16%', align: 'center' }
       ]
       // 成本权限
       if (this.$hasPermissions('M_ShowAllCost')) {
-        arr.splice(7, 0, { title: '可用库存成本(¥)', dataIndex: 'currentStockCost', width: '8%', align: 'right', sorter: true, customRender: function (text) { return ((text || text == 0) ? _this.toThousands(text) : '--') } })
+        arr.splice(7, 0, { title: '可用库存成本(¥)', dataIndex: 'currentStockCost', width: '10%', align: 'right', sorter: true, customRender: function (text) { return ((text || text == 0) ? _this.toThousands(text) : '--') } })
       }
       return arr
     }

+ 6 - 6
src/views/inventoryManagement/inventoryQuery/setPurchaseQty.vue

@@ -17,11 +17,11 @@
         :label-col="formItemLayout.labelCol"
         :wrapper-col="formItemLayout.wrapperCol"
       >
-        <a-form-model-item label="产品名称:">
-          {{ dateilData&&dateilData.productName }}
+        <a-form-model-item label="产品名称:" style="margin-bottom: 10px;">
+          {{ dateilData&&dateilData.productName||dateilData.name }}
         </a-form-model-item>
-        <a-form-model-item label="产品编码">
-          {{ dateilData&&dateilData.productCode }}
+        <a-form-model-item label="产品编码" style="margin-bottom: 10px;">
+          {{ dateilData&&dateilData.productCode||dateilData.code }}
         </a-form-model-item>
         <a-form-model-item label="采购数量" prop="qty">
           <a-input-number
@@ -81,8 +81,8 @@ export default {
     setData (row) {
       this.dateilData = row
       this.form.productSn = row.productSn
-      this.form.productCode = row.productCode
-      this.form.sysFlag = row.dealerProduct.sysFlag
+      this.form.productCode = row.productCode || row.code
+      this.form.sysFlag = row.dealerProduct ? row.dealerProduct.sysFlag : row.sysFlag
       this.form.qty = 1
     },
     //  保存

+ 5 - 3
src/views/inventoryManagement/inventoryQuery/warehouseDetail.vue

@@ -88,11 +88,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.stockQty || productTotal.stockQty==0)) ? productTotal.stockQty : '--' }}个</strong>;
+            总出数量:<strong>{{ (productTotal&&(productTotal.totalOutQty || productTotal.totalOutQty==0)) ? productTotal.totalOutQty : '--' }}个</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)) ? toThousands(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) ? toThousands(productTotal.freezeCost) : '--' }}</strong>。
             </div>

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

@@ -491,8 +491,9 @@ export default {
     // 打印贴签
     handlePrintSticker (row) {
       const nowData = this.basicInfoData
-      const list = []
-      list.push(row)
+      row.productCode = row.shelfProductApiEntity.productCode
+      row.productSn = row.shelfProductApiEntity.productSn
+      const list = [row]
       // 打开预览弹框
       this.showPrintView = true
       this.$refs.printView.setData(nowData, list)

+ 37 - 7
src/views/salesManagement/productPricing/list.vue

@@ -92,10 +92,20 @@
           class="button-primary"
           @click="handleDetail(record)"
         >销售记录</a-button>
+        <a-button
+          v-if="record.sysFlag==1&&record.onlineFalg==1&&$hasPermissions('M_shoppingCart')"
+          :id="'productPricingList-cart-'+record.id"
+          size="small"
+          type="link"
+          class="button-error"
+          @click="addShopCar(record)"
+        >加入购物车</a-button>
       </template>
     </s-table>
     <!-- 销售记录 -->
     <product-salesRecord-modal ref="salseRecord" :openModal="openModal" @close="openModal = false" />
+    <!-- 设置采购数量 -->
+    <set-purchase-qty ref="setPurchaseQty" :openModal="openPurchaseModal" @close="openPurchaseModal=false" v-drag></set-purchase-qty>
   </a-card>
 </template>
 
@@ -106,9 +116,11 @@ import ProductType from '../../common/productType.js'
 import ProductBrand from '../../common/productBrand.js'
 import productSalesRecordModal from './productSalesRecordModal.vue'
 import { dealerProductPriceList } from '@/api/dealerProduct'
+import { purchaseCartExistProduct } from '@/api/purchaseCart'
+import setPurchaseQty from '@/views/inventoryManagement/inventoryQuery/setPurchaseQty.vue'
 export default {
   name: 'DealerProductPriceList',
-  components: { STable, VSelect, ProductType, ProductBrand, productSalesRecordModal },
+  components: { STable, VSelect, ProductType, ProductBrand, productSalesRecordModal, setPurchaseQty },
   mixins: [commonMixin],
   data () {
     return {
@@ -126,6 +138,7 @@ export default {
         onlineFalg: undefined, // 上下架状态
         putStockFlag: true // 是否包含未入库产品
       },
+      openPurchaseModal: false, // 设置采购数量弹框
       productType: [], // 产品分类默认值
       disabled: false, //  查询、重置按钮是否可操作
       // 加载数据方法 必须为 Promise 对象
@@ -160,13 +173,13 @@ export default {
       const arr = [
         { title: '序号', dataIndex: 'no', width: '4%', align: 'center' },
         { title: '产品编码', dataIndex: 'code', width: '15%', align: 'center', customRender: function (text) { return text || '--' }, sorter: true },
-        { title: '产品名称', dataIndex: 'name', width: '25%', align: 'left', customRender: function (text) { return text || '--' }, ellipsis: true },
-        { title: '原厂编码', dataIndex: 'origCode', width: '11%', align: 'center', customRender: function (text) { return text || '--' } },
-        { title: '品牌', dataIndex: 'productBrandName', width: '11%', align: 'center', customRender: function (text) { return text || '--' }, sorter: true },
+        { title: '产品名称', dataIndex: 'name', width: '23%', align: 'left', customRender: function (text) { return text || '--' }, ellipsis: true },
+        { title: '原厂编码', dataIndex: 'origCode', width: '10%', align: 'center', customRender: function (text) { return text || '--' } },
+        { title: '品牌', dataIndex: 'productBrandName', width: '10%', align: 'center', customRender: function (text) { return text || '--' }, sorter: true },
         { title: '库存数量', dataIndex: 'stockQty', width: '6%', align: 'center', customRender: function (text) { return ((text || text == 0) ? text : '--') } },
-        { title: '车主价/自定义车主价', scopedSlots: { customRender: 'carOwners' }, width: '12%', align: 'right' },
+        { title: '车主价/自定义车主价', scopedSlots: { customRender: 'carOwners' }, width: '10%', align: 'right' },
         { title: '产品状态', dataIndex: 'onlineFalgDictValue', width: '6%', align: 'center', customRender: function (text) { return text || '--' }, ellipsis: true },
-        { title: '操作', scopedSlots: { customRender: 'action' }, width: '6%', align: 'center' }
+        { title: '操作', scopedSlots: { customRender: 'action' }, width: '14%', align: 'center' }
       ]
       // 参考成本价
       if (this.isCostPrice) {
@@ -191,7 +204,7 @@ export default {
       }
       // 终端价
       if (this.isTerminalPrice) {
-        arr.splice(arr.length - 2, 0, { title: '终端价/自定义终端价', scopedSlots: { customRender: 'terminal' }, width: '12%', align: 'right' })
+        arr.splice(arr.length - 2, 0, { title: '终端价/自定义终端价', scopedSlots: { customRender: 'terminal' }, width: '10%', align: 'right' })
       }
       return arr
     }
@@ -222,6 +235,23 @@ export default {
       this.openModal = true
       this.$refs.salseRecord.getDetail(row)
     },
+    // 加入购物车
+    addShopCar (row) {
+      this.spinning = true
+      purchaseCartExistProduct({
+        productSn: row.productSn
+      }).then(res => {
+        if (res.status == 200) {
+          if (res.data) {
+            this.$message.info('此产品已添加到购物车!')
+          } else {
+            this.$refs.setPurchaseQty.setData(row)
+            this.openPurchaseModal = true
+          }
+        }
+        this.spinning = false
+      })
+    },
     // 初始化页面
     pageInit () {
       const _this = this

+ 48 - 21
src/views/salesManagement/salesReturn/list.vue

@@ -58,13 +58,20 @@
         </a-form>
       </div>
       <!-- 操作按钮 -->
-      <div class="table-operator">
+      <div class="table-operator" style="display:flex;align-items: center;justify-content: space-between;">
         <a-button id="salesManagementList-add" type="primary" class="button-error" v-if="$hasPermissions('B_salesReturnNew')" @click="openModal = true">新增</a-button>
+        <div>
+          <hideCellMenus placeholder="显示" :defHiddenKes="colsArr" v-model="showCell"></hideCellMenus>
+        </div>
       </div>
       <!-- alert -->
       <a-alert type="info" style="margin-bottom: 10px;">
         <div slot="message">
           退货总金额:<strong>{{ countData&&(countData.totalAmount || countData.totalAmount==0) ? toThousands(countData.totalAmount ): '--' }}</strong>;
+          <span v-if="showDiscount">
+            折扣总金额:<strong>{{ countData&&(countData.discountAmount || countData.discountAmount==0) ? toThousands(countData.discountAmount ): '--' }}</strong>;
+            折后总金额:<strong>{{ countData&&(countData.discountedAmount || countData.discountedAmount==0) ? toThousands(countData.discountedAmount ): '--' }}</strong>;
+          </span>
           总单数:<strong>{{ countData&&(countData.totalBillNumber || countData.totalBillNumber==0) ? countData.totalBillNumber : '--' }}</strong>;
           总款数:<strong>{{ countData&&(countData.totalCategory || countData.totalCategory==0) ? countData.totalCategory : '--' }}</strong>;
           总数量:<strong>{{ countData&&(countData.totalQty || countData.totalQty==0) ? countData.totalQty : '--' }}</strong>;
@@ -137,6 +144,7 @@ import rangeDate from '@/views/common/rangeDate.vue'
 import chooseCustomModal from './chooseCustomModal.vue'
 import stateIcon from '@/views/common/stateIcon'
 import custList from '@/views/common/custList.vue'
+import hideCellMenus from '@/views/common/hideCellMenus'
 import { salesReturnList, salesReturnCount, salesReturnAudit, salesReturnDel } from '@/api/salesReturn'
 export default {
   name: 'SalesReturnList',
@@ -146,7 +154,8 @@ export default {
     chooseCustomModal,
     rangeDate,
     custList,
-    stateIcon
+    stateIcon,
+    hideCellMenus
   },
   mixins: [commonMixin],
   data () {
@@ -174,24 +183,6 @@ export default {
         buyerRelationType: undefined // 客户关系
       },
       countData: null, // 统计数据
-      // 表头
-      columns: [
-        { title: '序号', dataIndex: 'no', width: '4%', align: 'center' },
-        { title: '创建时间', dataIndex: 'createDate', width: '10%', align: 'center', customRender: function (text) { return text || '--' } },
-        { title: '销售退货单号', scopedSlots: { customRender: 'salesReturnNo' }, width: '15%', align: 'center' },
-        { title: '客户名称', dataIndex: 'buyerNameCurrent', width: '15%', align: 'center', customRender: function (text) { return text || '--' }, ellipsis: true },
-        { title: '客户关系', dataIndex: 'buyerRelationTypeDictValue', align: 'center', width: '9%', customRender: function (text) { return text || '--' } },
-        { title: '退款总金额', dataIndex: 'totalAmount', width: '7%', align: 'right', customRender: function (text) { return ((text || text == 0) ? _this.toThousands(text) : '--') } },
-        { title: '总款数', dataIndex: 'totalCategory', width: '5%', align: 'center', customRender: function (text) { return ((text || text == 0) ? text : '--') } },
-        { title: '总数量', dataIndex: 'totalQty', width: '5%', align: 'center', customRender: function (text) { return ((text || text == 0) ? text : '--') } },
-        { title: '是否抓单', dataIndex: 'grabFlag', width: '6%', align: 'center', customRender: function (text) { return ['否', '是'][text] } },
-        { title: '审核时间', dataIndex: 'auditTime', width: '10%', align: 'center', customRender: function (text) { return text || '--' } },
-        { title: '业务状态', dataIndex: 'stateDictValue', width: '6%', align: 'center', customRender: function (text) { return text || '--' } },
-        { title: '审核', scopedSlots: { customRender: 'audit' }, width: '3%', align: 'center' },
-        { title: '付款', scopedSlots: { customRender: 'financial' }, width: '3%', align: 'center' },
-        // { title: '财务状态', dataIndex: 'settleStateDictValue', width: '6%', align: 'center', customRender: function (text) { return text || '--' } },
-        { title: '操作', scopedSlots: { customRender: 'action' }, width: '11%', align: 'center' }
-      ],
       // 加载数据方法 必须为 Promise 对象
       loadData: parameter => {
         this.disabled = true
@@ -211,7 +202,43 @@ export default {
           this.spinning = false
           return data
         })
-      }
+      },
+      colsArr: [// 需要显示的列
+        {
+          title: '折后金额',
+          key: 'discount',
+          disabled: false,
+          checked: false
+        }
+      ],
+      showCell: [] // 已选要显示的列
+    }
+  },
+  computed: {
+    columns () {
+      const _this = this
+      const arr = [
+        { title: '序号', dataIndex: 'no', width: '4%', align: 'center' },
+        { title: '创建时间', dataIndex: 'createDate', width: '10%', align: 'center', customRender: function (text) { return text || '--' } },
+        { title: '销售退货单号', scopedSlots: { customRender: 'salesReturnNo' }, width: '15%', align: 'center' },
+        { title: '客户名称', dataIndex: 'buyerNameCurrent', width: '15%', align: 'center', customRender: function (text) { return text || '--' }, ellipsis: true },
+        { title: '客户关系', dataIndex: 'buyerRelationTypeDictValue', align: 'center', width: '9%', customRender: function (text) { return text || '--' } },
+        { title: '退款总金额', dataIndex: 'totalAmount', width: '7%', align: 'right', customRender: function (text) { return ((text || text == 0) ? _this.toThousands(text) : '--') } },
+        { title: '折扣金额', cell: 'discount', dataIndex: 'discountAmount', width: '6%', align: 'right', customRender: function (text) { return ((text || text == 0) ? _this.toThousands(text) : '--') } },
+        { title: '折后金额', cell: 'discount', dataIndex: 'discountedAmount', width: '6%', align: 'right', customRender: function (text) { return ((text || text == 0) ? _this.toThousands(text) : '--') } },
+        { title: '总款数', dataIndex: 'totalCategory', width: '5%', align: 'center', customRender: function (text) { return ((text || text == 0) ? text : '--') } },
+        { title: '总数量', dataIndex: 'totalQty', width: '5%', align: 'center', customRender: function (text) { return ((text || text == 0) ? text : '--') } },
+        { title: '是否抓单', dataIndex: 'grabFlag', width: '6%', align: 'center', customRender: function (text) { return ['否', '是'][text] } },
+        { title: '审核时间', dataIndex: 'auditTime', width: '10%', align: 'center', customRender: function (text) { return text || '--' } },
+        { title: '业务状态', dataIndex: 'stateDictValue', width: '6%', align: 'center', customRender: function (text) { return text || '--' } },
+        { title: '审核', scopedSlots: { customRender: 'audit' }, width: '3%', align: 'center' },
+        { title: '付款', scopedSlots: { customRender: 'financial' }, width: '3%', align: 'center' },
+        { title: '操作', scopedSlots: { customRender: 'action' }, width: '11%', align: 'center' }
+      ]
+      return arr.filter(item => !_this.showCell.includes(item.cell))
+    },
+    showDiscount () {
+      return !this.showCell.includes('discount')
     }
   },
   methods: {

+ 2 - 2
vue.config.js

@@ -209,8 +209,8 @@ const vueConfig = {
     // If you want to turn on the proxy, please remove the mockjs /src/main.jsL11
     proxy: {
       '/api': {
-        target: 'http://192.168.2.10/qpls-md',
-        // target: 'https://p.iscm.360arrow.com/qpls-md',
+        // target: 'http://192.168.2.10/qpls-md',
+        target: 'https://p.iscm.360arrow.com/qpls-md',
         // ws: false,
         ws: true,
         changeOrigin: true,