# Conflicts: # src/views/reportData/tireSalesReport/detailList.vue
@@ -1,4 +1,4 @@
{
- "version": "2.2.422",
+ "version": "2.2.466",
"message": "发现有新版本发布,确定更新系统?"
}
@@ -169,6 +169,17 @@ export const expenseAcctDetailSave = (params) => {
})
+// 批量保存费用明细
+export const updateBatchExpenseAcctDetail = (params) => {
+ return axios({
+ url: `/expenseAcctDetail/updateDetailByAccount`,
+ data: params,
+ method: 'post',
+ headers:{
+ 'module': encodeURIComponent('批量修改记账名称')
+ }
+ })
+}
// 费用类型
export const expenseTypeList = (params) => {
return axios({
@@ -1,6 +1,6 @@
import { axios } from '@/utils/request'
-// 优惠活动 列表 有分页
+// 修理厂促销 列表 有分页
export const promoActiveList = (params) => {
const url = `/promoActive/queryPage/${params.pageNo}/${params.pageSize}`
delete params.pageNo
@@ -9,60 +9,146 @@ export const promoActiveList = (params) => {
url: url,
data: params,
method: 'post',
- headers:{
- 'module': encodeURIComponent('列表查询')
+ headers: {
+ 'module': encodeURIComponent('列表查询')
-// 优惠活动 保存
-export const promoActiveSave = (params) => {
+// 修理厂促销 新增
+export const promoActiveCreate = (params) => {
- url: '/promoActive/save',
+ url: '/promoActive/create',
- 'module': encodeURIComponent('新增')
+ 'module': encodeURIComponent('新增')
-// 优惠活动 删除
+
+// 修理厂促销 详情
+export const promoActiveDetail = (params) => {
+ const url = `/promoActive/findBySn/${params.sn}`
+ url: url,
+ method: 'get'
+// 修理厂促销 编辑
+export const promoActiveUpdate = (params) => {
+ url: '/promoActive/update',
+ 'module': encodeURIComponent('编辑')
+// 修理厂促销 删除
export const promoActiveDel = (params) => {
const url = `/promoActive/delete/${params.sn}`
method: 'get',
- 'module': encodeURIComponent('删除')
+ 'module': encodeURIComponent('删除')
-// 优惠活动 详情
-export const promoActiveDetail = (params) => {
- const url = `/promoActive/findBySn/${params.sn}`
+// 修理厂促销 促销发布
+export const promoActivePublish = (params) => {
- url: url,
- method: 'get'
+ url: '/promoActive/updatePublish',
+ 'module': encodeURIComponent('促销发布')
-// 优惠活动 启禁用
-export const promoActiveEnable = (params) => {
- const url = `/promoActive/enable/${params.sn}/${params.flag}`
+// 修理厂促销 选择产品列表
+export const queryWaitingProductPage = (params) => {
+ const url = `/promoRuleProduct/queryWaitingProductPage/${params.pageNo}/${params.pageSize}`
+ delete params.pageNo
+ delete params.pageSize
- method: 'get',
- 'module': encodeURIComponent('启用禁用')
+// 修理厂促销 保存产品范围
+export const saveBatchEntity = (params) => {
+ url: '/promoRuleProductRange/saveBatchEntity',
+ 'module': encodeURIComponent('保存产品范围')
+// 批量创建产品
+export const promoCreateBatch = (params) => {
+ url: '/promoRuleProduct/createBatch',
+ 'module': encodeURIComponent('批量创建产品')
-export const promoActiveDetailD = (params) => {
- const url = `/promoActive/findDetailBySn/${params.sn}`
+export const promoUpdateBatch = (params) => {
+ url: '/promoRuleProduct/updateBatch',
+// 获取已选产品列表数据 有分页
+export const promoRuleProductList = (params) => {
+ const url = `/promoRuleProduct/queryPage/${params.pageNo}/${params.pageSize}`
- 'module': encodeURIComponent('优惠活动明细')
+// 批量删除
+export const deleteBatch = (params) => {
+ url: '/promoRuleProduct/deleteBatch',
+ 'module': encodeURIComponent('批量删除')
+// 删除产品范围 数据变化 promoActiveSn productTypeSnList
+export const deleteByProductType = (params) => {
+ url: '/promoRuleProduct/deleteByProductType',
@@ -155,9 +155,9 @@ export const promotionDateModify = (params) => {
// 中止
export const promotionIsOver = (params) => {
- url: `/promotion/isOver/${params.sn}`,
- data: {},
+ url: '/promotion/isOver',
headers: {
'module': encodeURIComponent('终止')
@@ -0,0 +1,202 @@
+import { axios } from '@/utils/request'
+// 采购入库 列表 分页
+export const purchaseList = (params) => {
+ const url = `/purchase/queryPage/${params.pageNo}/${params.pageSize}`
+// 采购入库 列表合计
+export const purchasePageCount = (params) => {
+ url: '/purchase/queryPageCount',
+ 'module': encodeURIComponent('列表合计')
+// 采购入库 列表 取消
+export const purchaseCancel = (params) => {
+ const url = `/purchase/cancel/${params.sn}`
+ 'module': encodeURIComponent('取消')
+// 采购入库 明细列表 分页
+export const purchaseDetailPageList = (params) => {
+ const url = `/purchase/queryDetailPage/${params.pageNo}/${params.pageSize}`
+// 采购入库 明细列表 基础信息
+export const queryDetailCount = (params) => {
+ const url = `/purchase/queryBySn/${params.sn}`
+ 'module': encodeURIComponent('基础信息')
+// 采购入库 明细列表 统计信息
+export const purchaseDetailPageCount = (params) => {
+ url: `/purchase/queryDetailPageCount`,
+ method: 'post'
+// 新增/编辑 采购入库详情
+export const savePurchaseDetail = (params) => {
+ url: '/purchase/saveDetail',
+ 'module': encodeURIComponent('新增/编辑')
+// 编辑基础信息
+export const detailBaseSave = (params) => {
+ url: '/purchase/setSupplierInfo',
+ 'module': encodeURIComponent('基础信息编辑')
+// 采购入库提交
+export const purchaseSubmit = (params) => {
+ url: `/purchase/submit/${params.sn}`,
+ 'module': encodeURIComponent('提交')
+// 采购入库 明细详情
+export const getDetailData = (params) => {
+ const url = `/purchase/queryDetailBySn/${params.sn}`
+ 'module': encodeURIComponent('明细详情')
+// 采购入库 编辑页面 删除 sparePartsDetailSn
+export const purchaseDetailDel = (params) => {
+ const url = `/purchase/deleteDetail/${params.sn}`
+// 采购入库 解析导入的文件
+export const purchaseImportData = (params) => {
+ url: '/purchase/detail/parseProducts',
+ 'module': encodeURIComponent('导入和不可导入列表')
+// 采购入库 导出错误项
+export const exportPurchaseData = params => {
+ const url = `/purchase/detail/downloadFailExcel`
+ return axios.request({
+ responseType: 'blob',
+ 'module': encodeURIComponent('导出错误项')
+// 采购入库 确定要导入的数据
+export const purchaseImportBatchInsert = (params) => {
+ url: 'purchase/detail/batchInsert',
+ 'module': encodeURIComponent('确定导入')
+// 采购入库 审核
+export const purchaseAudit = (params) => {
+ url: '/purchase/audit',
+ 'module': encodeURIComponent('审核')
+// 采购入库 上传凭证
+export const saveAttachment = (params) => {
+ url: '/purchase/saveAttachment',
+ 'module': encodeURIComponent('上传凭证')
+// 采购入库 轮胎唯一码
+export const traceCodeQueryList = (params) => {
+ url: '/traceCode/queryList',
+ 'module': encodeURIComponent('查看唯一码')
@@ -2,143 +2,168 @@ import { axios } from '@/utils/request'
// 销售 统计查询
export const salesCount = (params) => {
- return axios({
- url: `/sales/queryCount`,
- data: params,
- method: 'post'
- })
- }
+ url: `/sales/queryCount`,
// 销售 列表 有分页
export const salesList = (params) => {
- const url = `/sales/queryPage/${params.pageNo}/${params.pageSize}`
- delete params.pageNo
- delete params.pageSize
- method: 'post',
+ const url = `/sales/queryPage/${params.pageNo}/${params.pageSize}`
+// 第三方库存
+export const getThirdStockQty = (params) => {
+ url: `/sunFulcess/getStockQty`,
+// 是否已转采购单
+export const getCreatePurchaseFlag = (params) => {
+ url: `/sales/getCreatePurchaseFlag`,
+// 转采购单
+export const allCreatePurchase = (params) => {
+ url: `/sales/allCreatePurchase`,
// 销售 待转费用单列表 有分页
export const salesConvertExpenseList = (params) => {
- const url = `/salesPromo/queryBatchConvertExpenseAccountPage/${params.pageNo}/${params.pageSize}`
- 'module': encodeURIComponent('待转费用报销单列表')
+ const url = `/salesPromo/queryBatchConvertExpenseAccountPage/${params.pageNo}/${params.pageSize}`
+ 'module': encodeURIComponent('待转费用报销单列表')
// 销售 新增
export const salesSave = (params) => {
- url: '/sales/insert',
- 'module': encodeURIComponent('新增销售单')
+ url: '/sales/insert',
+ 'module': encodeURIComponent('新增销售单')
// 销售 编辑
export const salesModify = (params) => {
- url: '/sales/modifyWarehouse',
- 'module': encodeURIComponent('修改仓库')
+ url: '/sales/modifyWarehouse',
+ 'module': encodeURIComponent('修改仓库')
// 销售 详情bysn
export const salesDetailBySn = (params) => {
- url: `/sales/findBySn/${params.salesBillSn}`,
+ url: `/sales/findBySn/${params.salesBillSn}`,
// 查询客户名称
export const salesDetailByNo = (params) => {
- url: `/sales/findBySaleBillNo/${params.salesBillNo}`,
- 'module': encodeURIComponent('查询客户信息')
+ url: `/sales/findBySaleBillNo/${params.salesBillNo}`,
+ method: 'get',
+ 'module': encodeURIComponent('查询客户信息')
// 销售 删除
export const salesDel = (params) => {
- url: `/sales/delete/${params.salesBillSn}`,
+ url: `/sales/delete/${params.salesBillSn}`,
// 销售 取消
export const salesCancle = (params) => {
- url: `/sales/cancle/${params.salesBillSn}`,
- 'module': encodeURIComponent('取消')
+ url: `/sales/cancle/${params.salesBillSn}`,
// 根据销售单sn查询参加的活动
export const salesPromoQueryList = (params) => {
- url: `/salesPromo/queryExtList`,
+ url: `/salesPromo/queryExtList`,
// 更换促销,可更换活动列表
export const salesPromoMatchProduct = (params) => {
- url: `/salesPromo/queryMatchProduct`,
+ url: `/salesPromo/queryMatchProduct`,
// 判断是否有新的活动
export const salesQueryUnPartPromo = (params) => {
- url: `/salesPromo/queryUnPartPromo/${params.salesBillSn}`,
+ url: `/salesPromo/queryUnPartPromo/${params.salesBillSn}`,
// 活动优惠明细接口
export const salesPromoQueryCount = (params) => {
- url: `/salesPromo/queryCount`,
+ url: `/salesPromo/queryCount`,
// 提交时活动规则校验
export const salesPromoValidaSubmit = (params) => {
- url: `/salesPromo/validationSubmit/${params.salesBillSn}`,
- 'module': encodeURIComponent('提交前活动规则校验')
+ url: `/salesPromo/validationSubmit/${params.salesBillSn}`,
+ 'module': encodeURIComponent('提交前活动规则校验')
@@ -148,7 +173,7 @@ export const salesWriteAuditPass = (params) => {
url: '/sales/auditPass',
'module': encodeURIComponent('审核通过')
@@ -159,7 +184,7 @@ export const salesWriteAuditReject = (params) => {
url: '/sales/auditReject',
'module': encodeURIComponent('审核驳回')
@@ -170,7 +195,7 @@ export const salesWriteAuditPush = (params) => {
url: '/sales/auditPush',
'module': encodeURIComponent('一键审核')
@@ -181,7 +206,7 @@ export const salesWriteSubmit = (params) => {
url: '/sales/submit',
'module': encodeURIComponent('提交')
@@ -195,13 +220,30 @@ export const submitCheck = (params) => {
data: params
+// 改单弹窗价格列表
+export const changeBillCheck = (params) => {
+ url: '/sales/changeBillCheck',
+ data: params
+// 更新改单数据
+export const changeBillCheckUpdatePrice = (params) => {
+ url: '/sales/changeBillCheckUpdatePrice',
// 当前价格 提交
export const updateBatch = (params) => {
url: '/sales/detail/updateBatch',
'module': encodeURIComponent('价格批量更新')
@@ -214,7 +256,7 @@ export const salesDetailAllList = (params) => {
'module': encodeURIComponent('销售单明细列表查询')
@@ -237,27 +279,47 @@ export const queryBatchCreateBySalesBillSn = (params) => {
method: 'post'
-
+// 批量查询合并后的报销单
+export const queryBatchCreateBySalesPromoSnListGroupType = (params) => {
+ url: `/expenseAccount/queryBatchCreateBySalesPromoSnListGroupType`,
+ 'module': encodeURIComponent('销售单合并后转费用报销单')
+// 保存合并选项
+export const expenseAccountSaveGroupType = (params) => {
+ url: `/expenseAccount/saveCreateGroupType`,
+ 'module': encodeURIComponent('销售单转费用报销单,确定合并')
// 保存费用报销单
export const expenseAccountSave = (params) => {
url: `/expenseAccount/saveCreate`,
'module': encodeURIComponent('转费用报销单')
// 销售 打印
export const salesPrint = (params) => {
url: '/sales/print',
'module': encodeURIComponent('销售打印')
@@ -268,7 +330,7 @@ export const salesPrintPreview = (params) => {
url: '/sales/printPreview',
'module': encodeURIComponent('销售打印预览')
@@ -283,14 +345,14 @@ export const salesDetailProductType = (params) => {
// 销售 详情 打印
export const salesDetailPrint = params => {
const url = `/sales/print/${params.priceType}`
- const id = params.priceType.indexOf('_TYPE')>=0 ? '销售分类打印' : '销售打印'
+ const id = params.priceType.indexOf('_TYPE') >= 0 ? '销售分类打印' : '销售打印'
delete params.priceType
return axios.request({
responseType: 'blob',
'module': encodeURIComponent(id)
@@ -304,7 +366,7 @@ export const salesDetailExcel = params => {
'module': encodeURIComponent('导出Excel')
@@ -317,13 +379,12 @@ export const salesDetailTypeExcel = params => {
'module': encodeURIComponent('销售分类导出')
// 仓库销售单
// 按仓库查询销售单 列表 有分页
export const queryPageForWarehouse = (params) => {
@@ -334,7 +395,7 @@ export const queryPageForWarehouse = (params) => {
'module': encodeURIComponent('列表查询')
@@ -356,7 +417,7 @@ export const queryPageForWarehouseDetail = (params) => {
'module': encodeURIComponent('明细列表查询')
@@ -378,7 +439,7 @@ export const exportForWarehouse = params => {
'module': encodeURIComponent('导出')
@@ -392,8 +453,8 @@ export const salesOverviewQueryPage = (params) => {
-}
@@ -9,7 +9,7 @@ export const sparePartsList = (params) => {
@@ -21,7 +21,7 @@ export const sparePartsDetailExport = (params) => {
'module': encodeURIComponent('导出明细')
@@ -32,7 +32,7 @@ export const sparePartsAudit = (params) => {
url: `/spareParts/audit/${params.sn}`,
'module': encodeURIComponent('审核')
@@ -43,7 +43,7 @@ export const sparePartsBatchAudit = (params) => {
url: `/spareParts/batchAudit`,
'module': encodeURIComponent('批量审核')
@@ -54,7 +54,7 @@ export const sparePartsAuditVerify = (params) => {
url: `/spareParts/auditVerify`,
'module': encodeURIComponent('审核校验')
@@ -66,7 +66,7 @@ export const sparePartsAuditFail = (params) => {
'module': encodeURIComponent('导出审核错误项')
@@ -78,7 +78,7 @@ export const sparePartsDelete = (params) => {
url: `/spareParts/delete/${params.sn}`,
'module': encodeURIComponent('删除')
@@ -90,7 +90,7 @@ export const sparePartsDeleteDetail = (params) => {
url: `/spareParts/deleteDetail/${params.sn}`,
@@ -105,7 +105,7 @@ export const sparePartsDetailList = (params) => {
@@ -119,6 +119,17 @@ export const sparePartsPageCount = (params) => {
+// 散件入库 明细列表 基础信息
+ const url = `/spareParts/queryBySn/${params.sn}`
// 新增散件入库单
export const sparePartsSave = (params) => {
@@ -126,8 +137,8 @@ export const sparePartsSave = (params) => {
url: `/spareParts/save`,
- 'module': encodeURIComponent(params.id?'编辑':'新增')
+ 'module': encodeURIComponent(params.id ? '编辑' : '新增')
@@ -138,8 +149,8 @@ export const sparePartsSaveDetail = (params) => {
url: `/spareParts/saveDetail`,
- 'module': encodeURIComponent(params.id?'编辑':'新增产品')
+ 'module': encodeURIComponent(params.id ? '编辑' : '新增产品')
@@ -173,7 +184,7 @@ export const sparePartsDetailBatchInsert = params => {
url: '/spareParts/detail/batchInsert',
'module': encodeURIComponent('导入')
@@ -186,7 +197,7 @@ export const sparePartsDetailFailExcel = (params) => {
data: params.list,
'module': encodeURIComponent('导出错误项')
@@ -201,7 +212,7 @@ export const queryDetailStockPage = (params) => {
@@ -28,7 +28,7 @@ export default {
},
isEnable: { // 是否只获取已启用的数据
type: Boolean,
- default: false
+ default: true
notIn: {
type: Array,
@@ -179,10 +179,12 @@ export default {
this.previewVisible = true
} else {
- const src = file.response.data
- if (!Array.isArray(src)) {
- this.previewImage = file.url || file.thumbUrl
- this.previewVisible = true
+ if (file.response && file.response.status && file.response.status == 200) {
+ var src = file.response.data
+ if (Array.isArray(src)) {
+ src = file.response.data[0].filePath
+ window.location.href = src.replace('http:', 'https:')
@@ -51,7 +51,7 @@
.ant-btn-primary.button-primary[disabled],.ant-btn-primary.button-info[disabled],.ant-btn-primary.button-warning[disabled],.ant-btn-primary.button-geekblue[disabled],.ant-btn-primary.button-purple[disabled]{
- color: rgba(255, 255, 255, 0.5);
+ color: rgba(255, 255, 255, 0.6);
.ant-btn-primary.button-success {
background-color: #11b116;
@@ -278,11 +278,12 @@
user-select: auto !important;
- input:disabled{
- opacity: 1!important;
- color: #fff!important;
- -webkit-text-fill-color: #fff!important;
+ // input:disabled{
+ // opacity: 1!important;
+ // color: #fff!important;
+ // -webkit-text-fill-color: #fff!important;
+ // }
.ant-table-row{
td{
> div:not(.ant-table-row-expand-icon):empty::after{
@@ -343,11 +344,12 @@
.ant-alert-message, .ant-card-head{
color: #000000!important;
-.ant-select-disabled .ant-select-selection,.ant-cascader-picker-disabled{
- color: #999!important;
+.ant-input-disabled, .ant-input-number-disabled, .ant-input-number input[readonly], .ant-input[disabled], .ant-select-disabled .ant-select-selection,.ant-cascader-picker-disabled{
+ background-color: #f8f8f8 !important;
+ color: #333 !important;
+ cursor: not-allowed;
//头部样式
.header-bar{
margin:6px auto;
@@ -1,13 +1,16 @@
+// The prefix to use on all css classes from ant-pro.
+@ant-pro-prefix: ant-pro;
@font-size-base: 12px;
@table-row-hover-bg: color(~`colorPalette('@{primary-color}', 0.5) `);
@text-color: fade(@black, 100%);
-@disabled-bg: #fafafa;
+@disabled-bg: #DEDEDE;
@modal-body-padding: 15px;
@menu-item-height: 30px;
@collapse-header-padding: 6px 8px;
@table-padding-vertical: 5px;
@table-padding-horizontal: 5px;
-@input-disabled-bg: #fdfdfd;
+@border-color-base: #dedede;
+@border-color-split: #dedede;
// vue-easytable new style
@ve-default-font-size: 12px;
@@ -862,6 +862,42 @@ export const asyncRouterMap = [
permission: 'M_purchasingManagement'
children: [
+ {
+ path: '/purchasingManagement/purchaseReceipt',
+ redirect: '/purchasingManagement/purchaseReceipt/list',
+ name: 'purchaseReceipt',
+ component: BlankLayout,
+ meta: {
+ title: '采购入库',
+ icon: 'gold',
+ permission: 'M_purchaseReceipt'
+ },
+ hideChildrenInMenu: true,
+ children: [
+ path: 'list',
+ name: 'purchaseReceiptList',
+ component: () => import(/* webpackChunkName: "purchasingManagement" */ '@/views/purchasingManagement/purchaseReceipt/list.vue'),
+ title: '采购入库列表',
+ hidden: true,
+ permission: 'M_purchaseReceiptList'
+ path: 'edit',
+ name: 'purchaseReceiptEdit',
+ component: () => import(/* webpackChunkName: "purchasingManagement" */ '@/views/purchasingManagement/purchaseReceipt/edit.vue'),
+ title: '编辑采购入库单',
+ hidden: true
+ // permission: 'B_purchaseReceiptEdit'
+ ]
path: '/purchasingManagement/bulkWarehousingOrder',
redirect: '/purchasingManagement/bulkWarehousingOrder/list',
@@ -3454,6 +3490,28 @@ export const asyncRouterMap = [
hidden: true,
permission: 'M_promotionManagementList'
+ path: 'add/:sn/:pageType',
+ name: 'promotionManagementAdd',
+ component: () => import(/* webpackChunkName: "promotionRulesManagement" */ '@/views/promotionRulesManagement/promotionManagement/edit.vue'),
+ title: '新增修理厂促销',
+ icon: 'file-ppt',
+ permission: 'B_promotionManagementAdd'
+ path: 'edit/:sn/:pageType',
+ name: 'promotionManagementEdit',
+ title: '编辑修理厂促销',
+ permission: 'B_promotionManagementEdit'
]
@@ -36,7 +36,7 @@ const app = {
employeeList: [], // 申请人列表
defectiveReturnReason: [], // 不良品申请退货列表
goodReturnReason: [], // 良品申请退货列表
- bookReason:[], // 收款事由
+ bookReason: [], // 收款事由
tempBillOfData: null, // 临时存储收货单数据
authMenusList: [], // 权限菜单数据
priceAuthOptions: [], // 价格权限选项
@@ -48,11 +48,11 @@ const app = {
warehouseAuthList: null, // 有权限的仓库列表
warehouseAllList: null, // 无权限所有仓库列表
defWarehouse: null, // 默认仓库
- isWarehouse: false,// 仓库管理权限
- isShowCustomerSearch:false ,//客服查询权限
+ isWarehouse: false, // 仓库管理权限
+ isShowCustomerSearch: false, // 客服查询权限
interFaceList: [
// 销售单,下推
- {
a: 'sales/findBySn',
b: [
'sales/submit',
@@ -78,7 +78,7 @@ const app = {
'sales/detail/pushOfBatch',
'dispatch/detail/deleteBatch',
'dispatch/detail/updateQty'
- ],
+ ],
timeStr: ''
// 销售退货
@@ -109,18 +109,19 @@ const app = {
'salesReturn/detail/insertByReceive',
'salesReturn/detail/insertByCustomerService',
'salesReturn/detail/updateAllReason'
// 散件入库
- a: 'spareParts/queryDetailPageCount',
+ a: 'spareParts/queryBySn',
'spareParts/saveDetail',
'spareParts/deleteDetail',
'spareParts/detail/parseProducts',
- 'spareParts/detail/batchInsert'
+ 'spareParts/detail/batchInsert',
+ 'spareParts/queryDetailPageCount'
// 采购退货
@@ -131,11 +132,23 @@ const app = {
'sparePartsReturn/detail/delete',
'sparePartsReturn/detail/save',
'sparePartsReturn/detail/saveBatch'
+ timeStr: ''
+ // 采购入库
+ a: 'purchase/queryBySn',
+ b: [
+ 'purchase/saveDetail',
+ 'purchase/deleteDetail',
+ 'purchase/detail/batchInsert',
+ 'purchase/setSupplierInfo',
+ 'purchase/submit'
// 调拨
a: 'allocateBill/findBySn',
'allocateBill/submit',
@@ -147,10 +160,10 @@ const app = {
'allocateBill/detail/parseProducts',
'allocateBill/detail/batchInsert',
''
- //调拨退货
+ // 调拨退货
a: 'allocateReturn/queryBySn',
@@ -161,7 +174,7 @@ const app = {
'allocReturnDetail/insert',
'allocReturnDetail/insertBatch',
'allocReturnDetail/update'
// 发货单
@@ -171,7 +184,7 @@ const app = {
'sendBill/update',
'sendBill/updateIssueRemark',
'sendBill/updateTransportInfo'
// 提货单
@@ -242,7 +255,7 @@ const app = {
SET_employeeList: (state, val) => {
state.employeeList = val
- SET_returnReason:(state, obj) => {
+ SET_returnReason: (state, obj) => {
state[obj.key] = obj.val
SET_showPdfPrint: (state, val) => {
@@ -304,18 +317,18 @@ const app = {
- getLookUpDataByCode({ commit }, params) {
- getLookUpData({
- pageNo: 1,
- pageSize: 1000,
- lookupCode: params.code,
- isEnable: params.isEnable
- }).then(res => {
- if (res.status == 200) {
- commit('SET_returnReason', {key: params.key, val: res.data.list})
- },
+ getLookUpDataByCode ({ commit }, params) {
+ getLookUpData({
+ pageNo: 1,
+ pageSize: 1000,
+ lookupCode: params.code,
+ isEnable: params.isEnable
+ }).then(res => {
+ if (res.status == 200) {
+ commit('SET_returnReason', { key: params.key, val: res.data.list })
@@ -16,6 +16,7 @@
</template>
<script>
+// 组件
import detail from '@/views/allocationManagement/transferReturn/detail'
export default {
name: 'AllocateReturnDetailModal',
@@ -35,8 +36,6 @@ export default {
isShow: this.openModal // 是否打开弹框
- methods: {
watch: {
// 父页面传过来的弹框状态
openModal (newValue, oldValue) {
@@ -47,7 +46,7 @@ export default {
if (!newValue) {
this.$emit('close')
this.$store.state.app.curActionPermission = ''
- }else{
+ } else {
this.$store.state.app.curActionPermission = 'M_allocateReturnConfirmationDetail'
@@ -3,50 +3,72 @@
<a-card size="small" :bordered="false" class="searchBoxNormal">
<!-- 搜索条件 -->
<div ref="tableSearch" class="table-page-search-wrapper" >
- <a-form layout="inline" @keyup.enter.native="$refs.table.refresh(true)">
+ <a-form layout="inline" id="transferReturnConfirmation-form" @keyup.enter.native="$refs.table.refresh(true)">
<a-row :gutter="15">
<a-col :md="6" :sm="24">
<a-form-item label="创建时间">
- <rangeDate ref="rangeDate" @change="dateChange" />
+ <rangeDate id="transferReturnConfirmation-rangeDate" ref="rangeDate" @change="dateChange" />
</a-form-item>
</a-col>
<a-form-item label="调拨退货单号">
- <a-input id="transferReturnConfirmation-allocateReturnNo" v-model.trim="queryParam.allocateReturnNo"
- allowClear placeholder="请输入调拨退货单号" />
+ <a-input
+ id="transferReturnConfirmation-allocateReturnNo"
+ v-model.trim="queryParam.allocateReturnNo"
+ allowClear
+ placeholder="请输入调拨退货单号" />
<a-form-item label="客户名称" :label-col="{ span:7 }" :wrapper-col="{ span:17}">
- <a-input id="transferReturnConfirmation-targetName" v-model.trim="queryParam.targetName" allowClear
+ id="transferReturnConfirmation-targetName"
+ v-model.trim="queryParam.targetName"
placeholder="请输入客户名称" />
<template v-if="advanced">
<a-form-item label="是否抓单">
- <v-select v-model="queryParam.grabFlag" ref="grabFlag" id="transferReturnConfirmation-grabFlag"
- code="FLAG" placeholder="请选择" allowClear></v-select>
+ <v-select
+ v-model="queryParam.grabFlag"
+ ref="grabFlag"
+ id="transferReturnConfirmation-grabFlag"
+ code="FLAG"
+ placeholder="请选择"
+ allowClear></v-select>
<a-form-item label="状态">
- <v-select v-model="queryParam.state" ref="state" id="transferReturnConfirmation-state"
- code="ALLOCATE_RETURN_STATE_CONFIRM" placeholder="请选择状态" allowClear></v-select>
+ v-model="queryParam.state"
+ ref="state"
+ id="transferReturnConfirmation-state"
+ code="ALLOCATE_RETURN_STATE_CONFIRM"
+ placeholder="请选择状态"
<a-form-model-item label="仓库">
- <chooseWarehouse ref="warehouse" v-model="queryParam.warehouseSn"></chooseWarehouse>
+ <chooseWarehouse ref="warehouse" id="transferReturnConfirmation-warehouse" v-model="queryParam.warehouseSn"></chooseWarehouse>
</a-form-model-item>
<a-col :md="6" :sm="24" style="margin-bottom: 10px;">
- <a-button type="primary" @click="$refs.table.refresh(true)" :disabled="disabled"
+ <a-button
+ type="primary"
+ @click="$refs.table.refresh(true)"
+ :disabled="disabled"
id="transferReturnConfirmation-refresh">查询</a-button>
- <a-button style="margin-left: 5px" @click="resetSearchForm" :disabled="disabled"
+ style="margin-left: 5px"
+ @click="resetSearchForm"
id="transferReturnConfirmation-reset">重置</a-button>
- <a @click="advanced=!advanced" style="margin-left: 5px">
+ <a @click="advanced=!advanced" style="margin-left: 5px" id="transferReturnConfirmation-advanced">
{{ advanced ? '收起' : '展开' }}
<a-icon :type="advanced ? 'up' : 'down'" />
</a>
@@ -58,28 +80,36 @@
<a-card size="small" :bordered="false">
<a-spin :spinning="spinning" tip="Loading...">
<!-- 列表 -->
- <s-table
- class="sTable fixPagination"
- ref="table"
- :style="{ height: tableHeight+70+'px' }"
- size="small"
- :rowKey="(record) => record.id"
- :columns="columns"
- :pageSize="30"
- :data="loadData" :scroll="{ y: tableHeight }"
- :defaultLoadData="false" bordered>
+ <s-table
+ class="sTable fixPagination"
+ ref="table"
+ :style="{ height: tableHeight+70+'px' }"
+ size="small"
+ :rowKey="(record) => record.id"
+ :columns="columns"
+ :pageSize="30"
+ :data="loadData"
+ :scroll="{ y: tableHeight }"
+ :defaultLoadData="false"
+ bordered>
<!-- 销退单号 -->
<template slot="allocateReturnNo" slot-scope="text, record">
- <span v-if="$hasPermissions('M_allocateReturnConfirmationDetail')" class="link-bule"
+ <span
+ v-if="$hasPermissions('M_allocateReturnConfirmationDetail')"
+ class="link-bule"
+ :id="'transferReturnConfirmation-allocateReturnNo-'+record.id"
@click="handleDetail(record)">{{ record.allocateReturnNo }}</span>
<span v-else>{{ record.allocateReturnNo }}</span>
<!-- 操作 -->
<template slot="action" slot-scope="text, record">
- <a-button size="small" type="link"
+ type="link"
v-if="record.state=='WAIT_FINANCIAL_AUDIT' && $hasPermissions('B_allocateReturnConfirmationAudit')"
- class="button-warning" @click="handleAudit(record)"
- id="transferReturnConfirmation-audit-btn">退货确认</a-button>
+ class="button-warning"
+ @click="handleAudit(record)"
+ :id="'transferReturnConfirmation-submit-'+record.id">退货确认</a-button>
<span v-else>--</span>
</s-table>
@@ -91,304 +121,302 @@
- import {
- commonMixin
- } from '@/utils/mixin'
- import rangeDate from '@/views/common/rangeDate.vue'
- STable,
- VSelect
- } from '@/components'
- import AllocateReturnDetailModal from './detailModal.vue'
- import chooseWarehouse from '@/views/common/chooseWarehouse'
- allocateReturnQueryConfirmPage,
- allocateReturnFinanceAudit
- } from '@/api/allocateReturn'
- export default {
- name: 'AllocateReturnConfirmationList',
- mixins: [commonMixin],
- components: {
- VSelect,
- AllocateReturnDetailModal,
- rangeDate,
- chooseWarehouse
- data() {
- return {
- spinning: false,
- tableHeight: 0,
- queryParam: { // 查询条件
- beginDate: '',
- endDate: '',
- allocateReturnNo: '', // 单号
- targetName: '',
- grabFlag: undefined,
- state: undefined, // 状态
- warehouseSn: undefined
- disabled: false, // 查询、重置按钮是否可操作
- advanced: true,
- // 加载数据方法 必须为 Promise 对象
- loadData: parameter => {
- this.disabled = true
- this.spinning = true
- return allocateReturnQueryConfirmPage(Object.assign(parameter, this.queryParam)).then(res => {
- let data
- data = res.data
- const no = (data.pageNo - 1) * data.pageSize
- for (var i = 0; i < data.list.length; i++) {
- data.list[i].no = no + i + 1
- this.disabled = false
- this.spinning = false
- return data
- openModal: false,
- itemSn: ''
- // 根据权限显示列表字段
- computed: {
- columns() {
- const arr = [{
- title: '序号',
- dataIndex: 'no',
- width: '4%',
- align: 'center'
- title: '创建时间',
- dataIndex: 'createDate',
- width: '11%',
- align: 'center',
- customRender: function(text) {
- return text || '--'
- title: '退货单号',
- scopedSlots: {
- customRender: 'allocateReturnNo'
- width: '16%',
- title: '调拨退货客户',
- dataIndex: 'targetName',
- width: '15%',
- ellipsis: true
- title: '仓库',
- dataIndex: 'warehouseName',
- title: '是否抓单',
- dataIndex: 'grabFlagDictValue',
- width: '7%',
- title: '退货总数量',
- dataIndex: 'totalQty',
- return ((text || text == 0) ? text : '--')
- title: '坏件数量',
- dataIndex: 'totalBadQty',
- title: '返库数量',
- dataIndex: 'totalBackStockQty',
- // { title: '退货总金额', dataIndex: 'totalPrice', width: '7%', align: 'right', customRender: text => ((text || text == 0) ? this.toThousands(text) : '--') },
- title: '确认时间',
- dataIndex: 'financeAuditTime',
- title: '状态',
- dataIndex: 'stateDictValue',
- width: '6%',
+import { commonMixin } from '@/utils/mixin'
+import rangeDate from '@/views/common/rangeDate.vue'
+import { STable, VSelect } from '@/components'
+import AllocateReturnDetailModal from './detailModal.vue'
+import chooseWarehouse from '@/views/common/chooseWarehouse'
+// 接口
+import { allocateReturnQueryConfirmPage, allocateReturnFinanceAudit } from '@/api/allocateReturn'
+export default {
+ name: 'AllocateReturnConfirmationList',
+ mixins: [commonMixin],
+ components: { STable, VSelect, AllocateReturnDetailModal, rangeDate, chooseWarehouse },
+ data () {
+ return {
+ spinning: false,
+ tableHeight: 0, // 表格高度
+ // 查询条件
+ queryParam: {
+ beginDate: '', // 创建开始时间
+ endDate: '', // 创建结束时间
+ allocateReturnNo: '', // 单号
+ targetName: '', // 调拨退货客户
+ grabFlag: undefined, // 是否抓单
+ state: undefined, // 状态
+ warehouseSn: undefined// 出库仓库
+ disabled: false, // 查询、重置按钮是否可操作
+ advanced: true, // 展开关闭
+ // 加载数据方法 必须为 Promise 对象
+ loadData: parameter => {
+ this.disabled = true
+ this.spinning = true
+ // 获取列表数据 有分页
+ return allocateReturnQueryConfirmPage(Object.assign(parameter, this.queryParam)).then(res => {
+ let data
+ data = res.data
+ // 计算表格序号
+ const no = (data.pageNo - 1) * data.pageSize
+ for (var i = 0; i < data.list.length; i++) {
+ data.list[i].no = no + i + 1
- title: '操作',
- customRender: 'action'
- width: '8%',
+ this.disabled = false
- ]
- if (this.$hasPermissions('M_allocateReturnConfirmationList_salesPrice')) { // 售价权限
- arr.splice(9, 0, {
- title: '退货总金额',
- dataIndex: 'totalPrice',
- align: 'right',
- customRender: text => ((text || text == 0) ? this.toThousands(text) : '--')
+ this.spinning = false
+ return data
+ openModal: false, // 打开详情弹窗
+ itemSn: ''// 当前行sn
+ // 根据权限显示列表字段
+ computed: {
+ // 表头
+ columns () {
+ const arr = [{
+ title: '序号',
+ dataIndex: 'no',
+ width: '4%',
+ align: 'center'
+ title: '创建时间',
+ dataIndex: 'createDate',
+ width: '11%',
+ align: 'center',
+ customRender: function (text) {
+ return text || '--'
- return arr
- // 创建时间 change
- dateChange(date) {
- this.queryParam.beginDate = date[0]
- this.queryParam.endDate = date[1]
- custChange(val) {
- this.queryParam.buyerSn = val.key
+ title: '退货单号',
+ scopedSlots: {
+ customRender: 'allocateReturnNo'
+ width: '16%',
- // 重置
- resetSearchForm() {
- this.$refs.rangeDate.resetDate()
- this.queryParam.beginDate = ''
- this.queryParam.endDate = ''
- this.queryParam.allocateReturnNo = ''
- this.queryParam.targetName = ''
- this.queryParam.grabFlag = undefined
- this.queryParam.state = undefined
- this.queryParam.warehouseSn = undefined
- this.$refs.table.refresh(true)
+ title: '调拨退货客户',
+ dataIndex: 'targetName',
+ width: '15%',
+ ellipsis: true
- // 详情
- handleDetail(row) {
- this.itemSn = row.allocateReturnSn
- this.openModal = true
+ title: '仓库',
+ dataIndex: 'warehouseName',
- closeModal() {
- this.itemSn = ''
- this.openModal = false
+ title: '是否抓单',
+ dataIndex: 'grabFlagDictValue',
+ width: '7%',
- // 退货确认
- handleAudit(row) {
- const _this = this
- this.$confirm({
- title: '提示',
- content: '请点击下方按钮确认操作',
- centered: true,
- closable: true,
- okText: '通过',
- cancelText: '不通过',
- onOk() {
- _this.auditOrder(row.allocateReturnSn, 'FINISH')
- onCancel(e) {
- if (!e.triggerCancel) {
- _this.auditOrder(row.allocateReturnSn, 'FINANCIAL_REJECT')
- _this.$destroyAll()
+ title: '退货总数量',
+ dataIndex: 'totalQty',
+ return ((text || text == 0) ? text : '--')
- auditOrder(sn, flag) {
- _this.spinning = true
- allocateReturnFinanceAudit({
- allocateReturnSn: sn,
- state: flag
- _this.$message.success(res.message)
- _this.$refs.table.refresh()
- _this.spinning = false
- } else {
+ title: '坏件数量',
+ dataIndex: 'totalBadQty',
- pageInit() {
- this.$nextTick(() => { // 页面渲染完成后的回调
- _this.setTableH()
+ title: '返库数量',
+ dataIndex: 'totalBackStockQty',
+ // { title: '退货总金额', dataIndex: 'totalPrice', width: '7%', align: 'right', customRender: text => ((text || text == 0) ? this.toThousands(text) : '--') },
+ title: '确认时间',
+ dataIndex: 'financeAuditTime',
+ title: '状态',
+ dataIndex: 'stateDictValue',
+ width: '6%',
- setTableH() {
- const tableSearchH = this.$refs.tableSearch.offsetHeight
- this.tableHeight = window.innerHeight - tableSearchH - 200
+ title: '操作',
+ customRender: 'action'
+ width: '8%',
- watch: {
- advanced(newValue, oldValue) {
+ if (this.$hasPermissions('M_allocateReturnConfirmationList_salesPrice')) { // 售价权限
+ arr.splice(9, 0, {
+ title: '退货总金额',
+ dataIndex: 'totalPrice',
+ align: 'right',
+ customRender: text => ((text || text == 0) ? this.toThousands(text) : '--')
- '$store.state.app.winHeight'(newValue, oldValue) { // 窗口变更时,需同时更改表格高度
- this.setTableH()
+ return arr
+ methods: {
+ // 创建时间 change
+ dateChange (date) {
+ this.queryParam.beginDate = date[0]
+ this.queryParam.endDate = date[1]
- mounted() {
- if (!this.$store.state.app.isNewTab) { // 页签刷新时调用
- this.pageInit()
- this.resetSearchForm()
+ // 退货客户
+ custChange (val) {
+ this.queryParam.buyerSn = val.key
- activated() {
- // 如果是新页签打开,则重置当前页面
- if (this.$store.state.app.isNewTab) {
- // 仅刷新列表,不重置页面
- if (this.$store.state.app.updateList) {
- this.$refs.table.refresh()
+ // 重置
+ resetSearchForm () {
+ this.$refs.rangeDate.resetDate()
+ this.queryParam.beginDate = ''
+ this.queryParam.endDate = ''
+ this.queryParam.allocateReturnNo = ''
+ this.queryParam.targetName = ''
+ this.queryParam.grabFlag = undefined
+ this.queryParam.state = undefined
+ this.queryParam.warehouseSn = undefined
+ this.$refs.table.refresh(true)
- beforeRouteEnter(to, from, next) {
- next(vm => {})
+ // 详情
+ handleDetail (row) {
+ this.itemSn = row.allocateReturnSn
+ this.openModal = true
+ // 关闭详情弹窗
+ closeModal () {
+ this.itemSn = ''
+ this.openModal = false
+ // 退货确认
+ handleAudit (row) {
+ const _this = this
+ this.$confirm({
+ title: '提示',
+ content: '请点击下方按钮确认操作',
+ centered: true,
+ closable: true,
+ okText: '通过',
+ cancelText: '不通过',
+ onOk () {
+ _this.auditOrder(row.allocateReturnSn, 'FINISH')
+ onCancel (e) {
+ if (!e.triggerCancel) {
+ _this.auditOrder(row.allocateReturnSn, 'FINANCIAL_REJECT')
+ _this.$destroyAll()
+ // 退货确认成功
+ auditOrder (sn, flag) {
+ _this.spinning = true
+ allocateReturnFinanceAudit({
+ allocateReturnSn: sn,
+ state: flag
+ _this.$message.success(res.message)
+ _this.$refs.table.refresh()
+ _this.spinning = false
+ // 初始化
+ pageInit () {
+ this.$nextTick(() => { // 页面渲染完成后的回调
+ _this.setTableH()
+ // 计算表格高度
+ setTableH () {
+ const tableSearchH = this.$refs.tableSearch.offsetHeight
+ this.tableHeight = window.innerHeight - tableSearchH - 200
+ watch: {
+ // 展开关闭 监听表格高度变化
+ advanced (newValue, oldValue) {
+ '$store.state.app.winHeight' (newValue, oldValue) { // 窗口变更时,需同时更改表格高度
+ this.setTableH()
+ mounted () {
+ if (!this.$store.state.app.isNewTab) { // 页签刷新时调用
+ this.pageInit()
+ this.resetSearchForm()
+ activated () {
+ // 如果是新页签打开,则重置当前页面
+ if (this.$store.state.app.isNewTab) {
+ // 仅刷新列表,不重置页面
+ if (this.$store.state.app.updateList) {
+ this.$refs.table.refresh()
+ beforeRouteEnter (to, from, next) {
+ next(vm => {})
</script>
<style lang="less">
.transferReturnConfirmation-wrap {
-</style>
+</style>
@@ -4,7 +4,7 @@
<div ref="tableSearch" class="table-page-search-wrapper">
<a-form-model
- id="allocateBillList-form"
+ id="allocationList-form"
ref="ruleForm"
class="form-model-con"
layout="inline"
@@ -14,13 +14,13 @@
<a-form-model-item label="创建时间" prop="time">
- <rangeDate ref="rangeDate" :value="queryParam.time" @change="dateChange" />
+ <rangeDate id="allocationList-rangeDate" ref="rangeDate" :value="queryParam.time" @change="dateChange" />
<a-form-model-item label="调往对象">
<a-input
- id="allocateBillList-targetName"
+ id="allocationList-targetName"
v-model.trim="queryParam.targetName"
allowClear
placeholder="请输入调往对象" />
@@ -29,7 +29,7 @@
<a-form-model-item label="费用/调拨类型">
<AllocateType
- id="allocateBillList-costTypeName"
+ id="allocationList-allocateTypeVal"
v-model="allocateTypeVal"
:changeOnSelect="true"
placeholder="请选择费用/调拨类型"
@@ -39,7 +39,7 @@
<a-form-model-item label="收货客户名称">
- <dealerSearchList ref="receiverSn" @change="custChange" />
+ <dealerSearchList id="allocationList-receiverSn" ref="receiverSn" @change="custChange" />
@@ -47,7 +47,7 @@
<v-select
v-model="queryParam.state"
ref="state"
- id="allocateBillList-state"
+ id="allocationList-state"
code="ALLOCATE_STATUS2"
placeholder="请选择业务状态"
allowClear></v-select>
@@ -56,7 +56,7 @@
<a-form-model-item label="调拨单号">
- id="allocateBillList-allocateNo"
+ id="allocationList-allocateNo"
v-model.trim="queryParam.allocateNo"
placeholder="请输入调拨单号" />
@@ -64,7 +64,7 @@
<a-form-model-item label="调出仓库">
- <warehouse v-model="queryParam.warehouseSn" id="allocateBillList-warehouseSn" placeholder="请选择调出仓库" />
+ <warehouse v-model="queryParam.warehouseSn" id="allocationList-warehouseSn" placeholder="请选择调出仓库" />
@@ -72,7 +72,7 @@
v-model="queryParam.printState"
ref="printState"
- id="allocateBillList-printState"
+ id="allocationList-printState"
code="PRINT_STATUS"
placeholder="请选择打印状态"
@@ -83,7 +83,7 @@
v-model="queryParam.checkStatus"
ref="checkStatus"
- id="allocateBillList-checkStatus"
+ id="allocationList-checkStatus"
code="CHECK_STATUS"
placeholder="请选择对单状态"
@@ -95,13 +95,13 @@
type="primary"
@click="handleSearch"
:disabled="disabled"
- id="allocateBillList-refresh">查询</a-button>
+ id="allocationList-refresh">查询</a-button>
<a-button
style="margin-left: 5px"
@click="resetSearchForm"
- id="allocateBillList-reset">重置</a-button>
+ id="allocationList-reset">重置</a-button>
+ <a @click="advanced=!advanced" style="margin-left: 5px" id="allocationList-advanced">
@@ -132,13 +132,14 @@
<!-- 调拨单号 -->
<template slot="allocateNo" slot-scope="text, record">
- <span class="link-bule" @click="handleDetail(record,2)">{{ record.allocateNo }}</span>
+ <span class="link-bule" :id="'allocationList-allocateNo-'+record.id" @click="handleDetail(record,2)">{{ record.allocateNo }}</span>
<!-- 发货单号 -->
<template slot="sendBillNo" slot-scope="text, record">
<span
v-if="record.sendBill&&record.sendBill.sendBillNo"
class="link-bule"
+ :id="'allocationList-sendBillNo-'+record.id"
@click="handleDetail(record,1)">{{ record.sendBill.sendBillNo }}</span>
@@ -169,84 +170,69 @@
-import {
-} from '@/utils/mixin'
import moment from 'moment'
import getDate from '@/libs/getDate.js'
import rangeDate from '@/views/common/rangeDate.vue'
-} from '@/components'
import commonModal from '@/views/common/commonModal.vue'
import detailModal from '@/views/salesManagement/sendOutOrder/detailModal.vue'
import AllocateType from '@/views/common/allocateType.js'
import dealerSearchList from '@/views/common/dealerSearchList.vue'
import warehouse from '@/views/common/chooseWarehouse.js'
- queryOverviewPage
-} from '@/api/allocateBill'
import allocationDetailModal from '@/views/allocationManagement/transferOut/detail.vue'
+import { queryOverviewPage } from '@/api/allocateBill'
- name: 'PushOrderManagementList',
+ name: 'AllocationList',
mixins: [commonMixin],
- allocationDetailModal,
- AllocateType,
- warehouse,
- dealerSearchList,
- commonModal,
- detailModal
+ components: { STable, VSelect, allocationDetailModal, AllocateType, warehouse, dealerSearchList, rangeDate, commonModal, detailModal },
data () {
return {
spinning: false,
advanced: true, // 高级搜索 展开/关闭
disabled: false, // 查询、重置按钮是否可操作
- showDetailModal: false,
- showTipModal: false,
- bizSn: null,
- allocateTypeVal: [],
+ showDetailModal: false, // 调拨单详情弹窗
+ showTipModal: false, // 发货单详情弹窗
+ bizSn: null, // 调拨单sn
+ allocateTypeVal: [], // 调拨类型
// 查询参数
+ // 创建时间默认值
time: [
moment(getDate.getThreeMonthDays().starttime, 'YYYY-MM-DD'),
moment(getDate.getCurrMonthDays().endtime, 'YYYY-MM-DD')
],
- beginDate: getDate.getThreeMonthDays().starttime,
- endDate: getDate.getCurrMonthDays().endtime,
+ beginDate: getDate.getThreeMonthDays().starttime, // 创建开始时间
+ endDate: getDate.getCurrMonthDays().endtime, // 创建结束时间
targetName: '', // 调往对象
costTypeSn: undefined, // 费用类型
allocateSortSn: undefined, // 调拨类型1
allocateTypeSn: undefined, // 调拨类型2
state: undefined, // 业务状态
allocateNo: '', // 调拨单号
- receiverSn: undefined,
- checkStatus: undefined,
- printState: undefined,
+ receiverSn: undefined, // 收货客户sn
+ checkStatus: undefined, // 对单状态
+ printState: undefined, // 打印状态
+ warehouseSn: undefined// 出库仓库sn
+ // 表单验证规则
rules: {
- 'time': [{
- required: true,
- message: '请选择退货完成时间',
- trigger: 'change'
- }]
+ 'time': [{ required: true, message: '请选择退货完成时间', trigger: 'change' }]
// 加载数据方法 必须为 Promise 对象
loadData: parameter => {
this.disabled = true
this.spinning = true
return queryOverviewPage(Object.assign(parameter, this.queryParam)).then(res => {
let data
if (res.status == 200) {
data = res.data
const no = (data.pageNo - 1) * data.pageSize
for (var i = 0; i < data.list.length; i++) {
data.list[i].no = no + i + 1
@@ -260,6 +246,7 @@ export default {
computed: {
columns () {
const _this = this
const arr = [{
@@ -613,6 +600,7 @@ export default {
this.$refs.receiverSn.resetForm()
this.$refs.table.refresh(true)
pageInit () {
this.$nextTick(() => { // 页面渲染完成后的回调
@@ -620,12 +608,14 @@ export default {
_this.resetSearchForm()
setTableH () {
const tableSearchH = this.$refs.tableSearch.offsetHeight
this.tableHeight = window.innerHeight - tableSearchH - 200
advanced (newValue, oldValue) {
@@ -3,40 +3,40 @@
+ <a-form layout="inline" id="matchSendOutOrderList-form" @keyup.enter.native="$refs.table.refresh(true)">
- <rangeDate ref="rangeDate" :value="time" @change="dateChange" />
+ <rangeDate ref="rangeDate" id="matchSendOutOrderList-time" :value="time" @change="dateChange" />
<a-form-item label="调往对象">
- <a-input id="allocateBillList-targetName" v-model.trim="queryParam.targetName" allowClear placeholder="请输入调往对象"/>
+ <a-input id="matchSendOutOrderList-targetName" v-model.trim="queryParam.targetName" allowClear placeholder="请输入调往对象"/>
<a-form-item label="收货客户名称">
+ <dealerSearchList id="matchSendOutOrderList-receiverSn" ref="receiverSn" @change="custChange" />
+ </a-form-item>
+ </a-col>
+ <a-col :md="6" :sm="24" v-show="isShowWarehouse">
+ <a-form-item label="调出仓库">
+ <warehouse
+ v-model="queryParam.warehouseSn"
+ isPermission
+ id="matchSendOutOrderList-warehouseSn"
+ placeholder="请选择调出仓库"
+ />
- <a-col :md="6" :sm="24" v-show="isShowWarehouse">
- <a-form-item label="调出仓库">
- <warehouse
- v-model="queryParam.warehouseSn"
- isPermission
- id="allocateBillList-warehouseSn"
- placeholder="请选择调出仓库"
- />
- </a-form-item>
- </a-col>
<a-form-item label="业务状态">
+ id="matchSendOutOrderList-state"
code="ALLOCATE_STATUS"
@@ -45,7 +45,7 @@
<a-form-item label="调拨单号">
- <a-input id="allocateBillList-allocateNo" v-model.trim="queryParam.allocateNo" allowClear placeholder="请输入调拨单号"/>
+ <a-input id="matchSendOutOrderList-allocateNo" v-model.trim="queryParam.allocateNo" allowClear placeholder="请输入调拨单号"/>
@@ -53,7 +53,7 @@
+ id="matchSendOutOrderList-checkStatus"
@@ -62,19 +62,19 @@
<a-col :md="6" :sm="24" v-show="isShowCustomerSearch">
<a-form-item label="客服">
- <customerService ref="customerName" v-model="queryParam.bizUserSn"></customerService>
+ <customerService ref="customerName" id="matchSendOutOrderList-bizUserSn" v-model="queryParam.bizUserSn"></customerService>
<a-col :md="isShowCustomerSearch?24:6" :sm="24" :style="{textAlign: isShowCustomerSearch?'center':''}">
- <div class="table-page-search-submitButtons">
- <a-button type="primary" @click="$refs.table.refresh(true)" :disabled="disabled" id="allocateBillList-refresh">查询</a-button>
- <a-button style="margin-left: 5px" @click="resetSearchForm" :disabled="disabled" id="allocateBillList-reset">重置</a-button>
- {{ advanced ? '收起' : '展开' }}
- <a-icon :type="advanced ? 'up' : 'down'"/>
- </a>
- </div>
+ <div class="table-page-search-submitButtons">
+ <a-button type="primary" @click="$refs.table.refresh(true)" :disabled="disabled" id="matchSendOutOrderList-refresh">查询</a-button>
+ <a-button style="margin-left: 5px" @click="resetSearchForm" :disabled="disabled" id="matchSendOutOrderList-reset">重置</a-button>
+ <a @click="advanced=!advanced" style="margin-left: 5px" id="matchSendOutOrderList-advanced">
+ {{ advanced ? '收起' : '展开' }}
+ <a-icon :type="advanced ? 'up' : 'down'"/>
+ </a>
+ </div>
</a-row>
</a-form>
@@ -97,7 +97,7 @@
bordered>
<!-- 单号 -->
- <span v-if="$hasPermissions('M_transferOut_detail')" class="link-bule" @click="handleDetail(record)">{{ record.allocateNo }}</span>
+ <span v-if="$hasPermissions('M_transferOut_detail')" :id="'matchSendOutOrderList-allocateNo'+record.id" class="link-bule" @click="handleDetail(record)">{{ record.allocateNo }}</span>
<span v-else>{{ record.allocateNo }}</span>
@@ -108,7 +108,7 @@
v-if="record.checkStatus == 'WAIT'&&$hasPermissions('B_YxAudit')"
class="button-warning"
@click="handleYxAudit(record)"
- id="allocateBillList-checkStatus">对单通过</a-button>
+ :id="'matchSendOutOrderList-checkStatus'+record.id">对单通过</a-button>
@@ -131,6 +131,7 @@
import { commonMixin } from '@/utils/mixin'
import { STable, VSelect } from '@/components'
@@ -138,43 +139,48 @@ import dealerSearchList from '@/views/common/dealerSearchList.vue'
import customerService from '@/views/common/customerService.vue'
import { allocateBillList, allocateBillCheck } from '@/api/allocateBill'
name: 'MatchSendOutOrderAllocationList',
- components: { STable, VSelect, rangeDate, dealerSearchList, commonModal, allocationDetailModal, warehouse,customerService },
+ components: { STable, VSelect, rangeDate, dealerSearchList, commonModal, allocationDetailModal, warehouse, customerService },
+ // 创建时间 默认值
+ beginDate: getDate.getThreeMonthDays().starttime, // 开始时间
+ endDate: getDate.getCurrMonthDays().endtime, // 结束时间
- warehouseSn: undefined,
- bizUserSn:undefined
+ warehouseSn: undefined, // 出库仓库
+ receiverSn: undefined, // 收货客户名称
+ bizUserSn: undefined// 客服
+ showDetailModal: false, // 详情弹窗
- exportLoading: false,
+ exportLoading: false, // 导出按钮加载状态
return allocateBillList(Object.assign(parameter, this.queryParam, { authWarehouseFlag: 1 })).then(res => {
@@ -185,15 +191,14 @@ export default {
return data
- visibleAudit: false,
- auditInfo: null,
- bizSn: '',
- spinningAudit: false,
+ bizSn: '', // 调拨sn
+ spinningAudit: false, // 审核按钮加载状态
openModal: false // 新增编辑 弹框
const arr = [
{ title: '序号', dataIndex: 'no', width: '4%', align: 'center' },
@@ -218,6 +223,7 @@ export default {
methods: {
+ // 收货客户名称 change
custChange (val) {
if (val.row) {
this.queryParam.receiverSn = val.row.dealerSn
@@ -275,11 +281,13 @@ export default {
this.bizSn = row.allocateSn
this.showDetailModal = true
cancelDetail () {
this.showDetailModal = false
this.bizSn = null
@@ -287,12 +295,14 @@ export default {
this.openModal = false
+ // 表格高度
@@ -207,8 +207,8 @@ export default {
departementChange (v, row) {
- console.log(v,row)
- this.form.targetName = row.name
+ console.log(v, row)
+ this.form.targetName = row.name
// 调拨类别 change
allocateTypeChange (val, opt) {
@@ -257,9 +257,9 @@ export default {
const ind = this.dealerData.findIndex(item => item.dealerSn == value)
this.form.targetName = this.dealerData[ind].dealerName
const wsn = this.dealerData[ind].defaultWarehouseSn
- if(this.$refs.warehouse.hasWarehouse(wsn)){
+ if (this.$refs.warehouse.hasWarehouse(wsn)) {
this.form.warehouseSn = wsn
this.form.warehouseSn = undefined
@@ -68,6 +68,7 @@
import { hdExportExcel } from '@/libs/exportExcel'
import { allocateBillParseProducts, allocateBillFailExcel } from '@/api/allocateBill'
name: 'TransferOutChooseImportModal',
@@ -104,15 +105,17 @@ export default {
{ title: '单位', dataIndex: 'productUnit', width: 60, align: 'center', customRender: function (text) { return text || '--' } },
{ title: '备注', dataIndex: 'errorDesc', width: 180, align: 'center', customRender: function (text) { return text || '--' } }
- loadData: [],
- unLoadData: [],
- loading: false
+ loadData: [], // 可导入数据
+ unLoadData: [], // 错误数据
+ loading: false// 表格加载状态
+ // 获取表格数据
getData () {
this.loading = true
+ // 获取列表数据 无分页
allocateBillParseProducts(this.paramsData).then(res => {
this.loading = false
@@ -14,7 +14,7 @@
@click.stop="handleEdit">
<a-icon type="edit"/>编辑
</a-button>
- <a-button type="link" class="button-default" @click="showDetail=!showDetail">
+ <a-button id="allocateBillDetail-showDetail-btn" type="link" class="button-default" @click="showDetail=!showDetail">
<a-icon :type="showDetail ? 'eye-invisible' : 'eye'"/> {{ showDetail?'隐藏':'查看' }}信息
@@ -25,7 +25,7 @@
class="button-info"
v-if="$hasPermissions('B_transferOut_print')"
- id="allocateBillDetail-db-print-btn"
+ id="allocateBillDetail-dbPrint-btn"
:disabled="localDataSource.length==0"
@click="handlePrint('dbPrint')">调拨打印</a-button>
@@ -33,7 +33,7 @@
v-if="$hasPermissions('B_transferOutType_print')"
- id="allocateBillDetail-dbfl-print-btn"
+ id="allocateBillDetail-dbflPrint-btn"
@click="handlePrint('dbflPrint')">调拨分类打印</a-button>
<a-divider type="vertical" />
@@ -50,7 +50,7 @@
type="default"
v-if="$hasPermissions('B_transferOutType_export')"
- id="allocateBillDetail-export-btn"
+ id="allocateBillDetail-exportType-btn"
@click="handlePrint('dbflExport')">调拨分类导出</a-button>
@@ -96,6 +96,7 @@
<div v-if="basicInfoData&&basicInfoData.attachmentList&&basicInfoData.attachmentList.length">
<a
target="_blank"
+ id="allocateBillDetail-attachmentList"
style="color: #00aaff;text-decoration: underline;margin-right: 15px;"
:href="item.filePath"
v-for="item in basicInfoData.attachmentList"
@@ -149,6 +150,7 @@
@@ -202,9 +204,11 @@
import printModal from './printModal.vue'
import { printBase64Fun, exportExcel } from '@/libs/JGPrint.js'
import { allocateBillDetailList, allocateBillDetail, allocateBillDetailCount, allocateBillDetailPrint, allocateBillDetailExcel } from '@/api/allocateBill'
name: 'TransferOutDetail',
@@ -222,10 +226,12 @@ export default {
return allocateBillDetailList(Object.assign(parameter, { allocateSn: this.outBizSn || this.$route.params.sn })).then(res => {
@@ -238,17 +244,19 @@ export default {
basicInfoData: null, // 基本信息
productTotal: null, // 合计
- localDataSource: [],
- nowType: null,
- showDetail: false,
- tableHeight: 0
+ localDataSource: [], // 表格数据
+ openModal: false, // 打印导出弹窗
+ nowType: null, // dbflExport 调拨分类 dbPrint调拨
+ showDetail: false, // 显示隐藏基础信息
+ tableHeight: 0// 计算表格高度
+ // 是否显示基础信息编辑按钮
isEdit () {
return this.basicInfoData && ((this.basicInfoData.state == 'WAIT_SUBMIT') || (this.basicInfoData.state == 'WAIT_AUDIT') || (this.basicInfoData.state == 'AUDIT_REJECT')) && this.$hasPermissions('M_transferOut_edit')
@@ -278,6 +286,7 @@ export default {
+ // 基础信息显示关闭 表格高度变化
showDetail (newValue, oldValue) {
@@ -356,12 +365,14 @@ export default {
printType: taskName + '打印'
}, !this.basicInfoData.printState || this.basicInfoData.printState == 'UNABLE_PRINT' || this.basicInfoData.printState == 'CANCEL_PRINT')
this.getDetail()
this.getDetailCount()
this.setTableH()
this.tableHeight = window.innerHeight - tableSearchH - 280
@@ -1,7 +1,7 @@
<template>
<a-modal
centered
- class="dealerAccountEdit-modal"
+ class="transferOutDs-modal"
:footer="null"
:maskClosable="false"
title="提交调拨单"
@@ -12,7 +12,7 @@
<div>
- id="dealerAccountEdit-form"
+ id="transferOutDs-form"
:model="form"
:rules="rules"
@@ -20,11 +20,11 @@
:wrapper-col="formItemLayout.wrapperCol"
>
<a-form-model-item label="收货客户名称" v-if="dealerLevel != 'OTHER'">
- <dealerSubareaScopeList ref="custList" defValKey="buyerSn" @change="custChange" v-model="form.receiverSn" />
+ <dealerSubareaScopeList id="transferOutDs-custList" ref="custList" defValKey="buyerSn" @change="custChange" v-model="form.receiverSn" />
<a-form-model-item label="收货客户名称" v-else>
- id="dealerAccountEdit-receiverName"
+ id="transferOutDs-receiverName"
:maxLength="30"
v-model.trim="form.receiverName"
placeholder="请输入收货客户名称"
@@ -32,7 +32,7 @@
<a-form-model-item label="发货编号" prop="sendNo">
- id="dealerAccountEdit-phone"
+ id="transferOutDs-sendNo"
:maxLength="10"
v-model.trim="form.sendNo"
placeholder="请输入发货编号"
@@ -43,29 +43,29 @@
<a-form-model-item label="发货说明">
- id="dealerAccountEdit-explainInfo"
+ id="transferOutDs-explainInfo"
type="textarea"
:maxLength="630"
v-model.trim="form.explainInfo"
placeholder="请输入发货说明"/>
<a-form-model-item label="备货打印" prop="printState">
- <a-radio-group v-model="form.printState">
- <a-radio value="NO_PRINT">
+ <a-radio-group id="transferOutDs-printState" v-model="form.printState">
+ <a-radio value="NO_PRINT" id="transferOutDs-printState1">
允许打印
</a-radio>
- <a-radio value="UNABLE_PRINT">
+ <a-radio value="UNABLE_PRINT" id="transferOutDs-printState2">
暂不打印
- <a-radio value="CANCEL_PRINT">
+ <a-radio value="CANCEL_PRINT" id="transferOutDs-printState3">
取消打印
</a-radio-group>
</a-form-model>
<div class="btn-cont">
- <a-button type="primary" id="dealerAccountEdit-save" @click="handleSave">确定</a-button>
- <a-button id="dealerAccountEdit-back" @click="isShow = false" style="margin-left: 15px;">取消</a-button>
+ <a-button type="primary" id="transferOutDs-save" @click="handleSave">确定</a-button>
+ <a-button id="transferOutDs-back" @click="isShow = false" style="margin-left: 15px;">取消</a-button>
</div>
</a-spin>
@@ -74,9 +74,10 @@
import dealerSubareaScopeList from '@/views/common/dealerSubareaScopeList.vue'
- name: 'DealerAccountEditModal',
+ name: 'TransferOutDsModal',
components: { dealerSubareaScopeList },
props: {
@@ -93,17 +94,20 @@ export default {
isShow: this.openModal, // 是否打开弹框
+ // form表单label布局
formItemLayout: {
labelCol: { span: 4 },
wrapperCol: { span: 18 }
+ // 提交参数
form: {
- sendNo: '',
- printState: '',
- receiverSn: '',
- receiverName: '',
- explainInfo: ''
+ sendNo: '', // 发货编号
+ printState: '', // 备货打印状态
+ receiverSn: '', // 收货客户sn
+ receiverName: '', // 收货客户名称
+ explainInfo: ''// 发货说明
sendNo: [{ required: true, message: '请输入发货编号', trigger: 'change' }],
printState: [{ required: true, message: '请选择备货打印', trigger: 'change' }]
@@ -112,10 +116,12 @@ export default {
+ // 获取常用发货编号
setSendNo (i) {
this.form.sendNo = i
this.$refs.ruleForm.validateField('sendNo')
+ // 收货客户名称
this.form.receiverSn = val.key || ''
this.form.receiverName = val.name || ''
@@ -171,7 +177,7 @@ export default {
- .dealerAccountEdit-modal{
+ .transferOutDs-modal{
.ant-modal-body {
padding: 40px 40px 24px;
@@ -6,7 +6,7 @@
<template slot="subTitle">
<a id="allocateBillEdit-back-btn" href="javascript:;" @click="handleBack"><a-icon type="left" /> 返回列表</a>
<span style="margin: 0 15px;color: #666;font-weight: bold;">单号:{{ basicInfoData&&basicInfoData.allocateNo }}</span>
+ <a-button type="link" id="allocateBillEdit-showDetail" class="button-default" @click="showDetail=!showDetail">
@@ -17,7 +17,7 @@
- id="allocateBillEdit-db-print-btn"
+ id="allocateBillEdit-dbPrint-btn"
- id="allocateBillEdit-dbfl-print-btn"
+ id="allocateBillEdit-dbflPrint-btn"
@@ -42,7 +42,7 @@
@@ -91,6 +91,7 @@
@@ -107,7 +108,7 @@
<a-card size="small" title="选择产品" :bordered="false" class="allocateBillEdit-cont">
<!-- 筛选条件 -->
<div class="table-page-search-wrapper">
+ <a-form layout="inline" id="allocateBillDetail-form" @keyup.enter.native="$refs.table.refresh(true)">
<a-form-item label="产品编码" prop="productCode">
@@ -125,8 +126,8 @@
- <a-button type="primary" @click="$refs.table.refresh(true)" :disabled="disabled" id="storeTransferOutList-refresh">查询</a-button>
- <a-button style="margin-left: 8px" @click="resetSearchForm(0)" :disabled="disabled" id="storeTransferOutList-reset">重置</a-button>
+ <a-button type="primary" @click="$refs.table.refresh(true)" :disabled="disabled" id="allocateBillEdit-refresh">查询</a-button>
+ <a-button style="margin-left: 8px" @click="resetSearchForm(0)" :disabled="disabled" id="allocateBillEdit-reset">重置</a-button>
@@ -138,7 +139,7 @@
size="small"
index="0"
tableId="table1"
- :rowKey="(record) => record.stockSn"
:columns="columns"
:customRow="handleClickRow"
:data="loadData"
@@ -158,6 +159,7 @@
<div v-else>
<span v-if="record.powerFlag!=0">{{ record.priceLevelDictValue }}</span>
+ :id="'allocateBillEdit-priceLevelDictValue'+record.id"
v-else
style="width:90%;"
@@ -172,6 +174,7 @@
<template slot="qty" slot-scope="text, record">
<a-input-number
+ :id="'allocateBillEdit-qty'+record.id"
v-model="record.qty"
:precision="0"
:min="1"
@@ -182,6 +185,7 @@
<template slot="action1" slot-scope="text, record">
+ :id="'allocateBillEdit-add-btn'+record.id"
type="link"
class="button-primary"
@@ -205,21 +209,21 @@
<a-col :span="16">
- <a-form layout="inline" @keyup.enter.native="$refs.chooseTable.refresh(true)">
+ <a-form id="allocateBillEdit-form-search" layout="inline" @keyup.enter.native="$refs.chooseTable.refresh(true)">
<a-col :md="9" :sm="24">
- <a-input id="allocateBillEdit-productCode" v-model.trim="chooseQueryParam.productCode" placeholder="请输入产品编码" allowClear />
+ <a-input id="allocateBillEdit-select-productCode" v-model.trim="chooseQueryParam.productCode" placeholder="请输入产品编码" allowClear />
<a-form-item label="产品名称" prop="productName">
- <a-input id="allocateBillEdit-productName" v-model.trim="chooseQueryParam.productName" placeholder="请输入产品名称" allowClear />
+ <a-input id="allocateBillEdit-select-productName" v-model.trim="chooseQueryParam.productName" placeholder="请输入产品名称" allowClear />
- <a-button type="primary" @click="$refs.chooseTable.refresh(true)" :disabled="chooseDisabled" id="storeTransferOutList-refresh">查询</a-button>
- <a-button style="margin-left: 8px" @click="chooseResetSearchForm(0)" :disabled="chooseDisabled" id="storeTransferOutList-reset">重置</a-button>
+ <a-button type="primary" @click="$refs.chooseTable.refresh(true)" :disabled="chooseDisabled" id="allocateBillEdit-select-refresh">查询</a-button>
+ <a-button style="margin-left: 8px" @click="chooseResetSearchForm(0)" :disabled="chooseDisabled" id="allocateBillEdit-select-reset">重置</a-button>
@@ -229,10 +233,10 @@
<span v-if="selNums">已选{{ selNums }}项</span>
style="margin:0 10px;"
- id="salesEdit-plDel-btn"
+ id="allocateBillEdit-plDel-btn"
@click="openPlSet">批量设置费用归属</a-button>
<a-button id="allocateBillEdit-import-btn" @click="openGuideModal=true">导入产品</a-button>
- <a-button type="danger" style="margin-left: 10px" @click.stop="handleDel('', 'all')" id="chainTransferOutEdit-del-all-btn">整单删除</a-button>
+ <a-button type="danger" style="margin-left: 10px" @click.stop="handleDel('', 'all')" id="allocateBillEdit-del-all-btn">整单删除</a-button>
@@ -258,7 +262,7 @@
<div v-if="$route.params.dealerLevel == 'OTHER'">
<a-select
- id="allocateBillEdit-price"
+ :id="'allocateBillEdit-select-price'+record.id"
option-label-prop="label"
v-model="record.price"
placeholder="请选择"
@@ -277,7 +281,7 @@
- id="allocateBillEdit-qty"
+ :id="'allocateBillEdit-select-qty'+record.id"
@@ -291,6 +295,7 @@
style="width:100%"
placeholder="请选择部门"
+ :id="'allocateBillEdit-departmentSn'+record.id"
v-model="record.departmentSn"
@@ -298,7 +303,7 @@
@change="e => handleChange(e, record)"
option-filter-prop="children"
:filter-option="filterOption">
- <a-select-option v-for="item in departmentList" :key="item.departmentSn" :value="item.departmentSn">{{ item.name }}</a-select-option>
+ <a-select-option :id="'allocateBillEdit-departmentSn'+item.departmentSn" v-for="item in departmentList" :key="item.departmentSn" :value="item.departmentSn">{{ item.name }}</a-select-option>
</a-select>
@@ -309,7 +314,7 @@
class="button-error"
:loading="spinning"
@click="handleDel(record)"
- id="allocateBillEdit-del-btn">删除</a-button>
+ :id="'allocateBillEdit-del-btn'+record.id">删除</a-button>
</a-card>
@@ -363,6 +368,7 @@
import ImportGuideModal from './importGuideModal.vue'
import basicInfoModal from './basicInfoModal.vue'
@@ -370,6 +376,7 @@ import printModal from './printModal.vue'
import dsModal from './dsModal.vue'
import { queryStockProductForOtherPage } from '@/api/stock'
import { productPriceInfo } from '@/api/product'
import { departmentQueryList } from '@/api/expenseManagement'
@@ -382,33 +389,37 @@ export default {
- showDsModal: false,
- editRemark: false,
- showPlModal: false,
+ showDsModal: false, // 提交调拨单弹窗
+ editRemark: false, // 编辑基础信息弹窗
+ showPlModal: false, // 批量设置部门弹窗
showDetail: false, // 基础信息
queryParam: {
- productCode: '',
- productName: '',
- productOrigCode: ''
+ productCode: '', // 产品编码
+ productName: '', // 产品名称
+ productOrigCode: ''// 原厂编码
+ // 已选产品查询条件
chooseQueryParam: {
- productName: ''
+ productName: ''// 产品名称
- loading: false,
+ loading: false, // 表格加载状态
chooseDisabled: false, // 查询、重置按钮是否可操作
advanced: false, // 高级搜索 展开/关闭
departmentList: [], // 部门列表
const dealerLevel = this.dealerLevel == 'OTHER' ? undefined : this.dealerLevel
const warehouseSn = this.basicInfoData.warehouseSn
const fun = this.dealerLevel == 'OTHER' ? queryStockProductForOtherPage : queryStockProductPage
const dealerSnInfo = this.dealerLevel != 'OTHER' ? this.basicInfoData.dealerInfo.dealerSn : undefined
return fun(Object.assign(parameter, this.queryParam, { zeroQtyFlag: '0', dealerLevel: dealerLevel, warehouseSn: warehouseSn, dealerSn: dealerSnInfo })).then(res => {
const data = res.data
@@ -420,14 +431,16 @@ export default {
- loadDataSource: [],
+ loadDataSource: [], // 调拨列表数据
+ localDataSource: [], // 调拨已选数据
chooseLoadData: parameter => {
this.chooseDisabled = true
+ // 获取已选列表数据 有分页
const params = Object.assign(parameter, this.chooseQueryParam, { allocateSn: this.allocateSn })
return allocateBillDetailList(params).then(res => {
@@ -444,18 +457,20 @@ export default {
openGuideModal: false, // 导入产品引导
- rowSelectionInfo: null,
- plSetVal: undefined,
- dealerLevel: undefined,
- allocateSn: undefined
+ openModal: false, // 打印预览/快捷打印弹窗
+ nowType: null, // 打印预览/快捷打印 类型
+ rowSelectionInfo: null, // 已选数据集合
+ plSetVal: undefined, // 部门sn
+ dealerLevel: undefined, // 经销商等级
+ allocateSn: undefined// 调拨sn
+ // 计算已选产品条数
selNums () {
return this.rowSelectionInfo && this.rowSelectionInfo.selectedRowKeys.length || 0
@@ -483,6 +498,7 @@ export default {
return arr
+ // 已选列表表头
chooseColumns () {
@@ -536,10 +552,12 @@ export default {
this.$message.warning('请先选择产品!')
+ // 关闭批量设置费用归属部门弹窗
closePlSet () {
this.showPlModal = false
this.plSetVal = undefined
+ // 批量设置费用归属部门成功
setPlSetOk () {
if (!this.plSetVal) {
this.$message.warning('请选择费用归属部门!')
@@ -700,6 +718,7 @@ export default {
this.$message.warning('请选择产品')
+ // 提交
handleSubmit (params) {
const data = Object.assign({ allocateSn: this.$route.params.sn }, params || {})
@@ -791,6 +810,7 @@ export default {
_this.$store.state.app.curActionPermission = ''
+ // 打印导出
exportFl (data) {
this.handleExcel(data.printType, '调拨分类', data)
@@ -799,6 +819,7 @@ export default {
this.nowType = type
this.openModal = true
+ // 打印调拨分类、调拨 成功
handleOk (objs) {
const params = JSON.parse(JSON.stringify(objs))
@@ -828,6 +849,7 @@ export default {
this.$refs.chooseTable.clearSelected()
this.$refs.chooseTable.refresh()
this.dealerLevel = this.$route.params.dealerLevel
this.allocateSn = this.$route.params.sn
@@ -19,7 +19,13 @@
<li>2) 除了“产品编码”、“数量”两列,其他列可自定义,不影响数据导入</li>
<li>3) 如果导入的产品已经存在,则不会导入该行</li>
</ul>
- <a-button type="link" icon="download" style="padding: 0 0 0 23px;" :loading="exportLoading" @click="handleExport">下载导入模板</a-button>
+ id="importGuide-download"
+ icon="download"
+ style="padding: 0 0 0 23px;"
+ :loading="exportLoading"
+ @click="handleExport">下载导入模板</a-button>
<div class="explain-item">
<div class="explain-tit">
@@ -64,8 +70,10 @@
import ChooseImportModal from './chooseImportModal.vue'
import { Upload } from '@/components'
import { allocateBillDownload } from '@/api/allocateBill'
name: 'TransferOutImportGuideModal',
@@ -85,12 +93,12 @@ export default {
openImportModal: false, // 导入
- attachAction: process.env.VUE_APP_API_BASE_URL + '/upload',
- paramsData: null,
- uploadParams: {
+ attachAction: process.env.VUE_APP_API_BASE_URL + '/upload', // 上传文件路径
+ paramsData: null, // 上传参数
+ uploadParams: { // 上传参数
savePathType: 'local'
- exportLoading: false
+ exportLoading: false// 导出按钮加载状态
@@ -146,6 +154,7 @@ export default {
+ // 下载模板
download (data) {
if (!data) { return }
const url = window.URL.createObjectURL(new Blob([data]))
@@ -3,27 +3,27 @@
+ <a-form layout="inline" id="transferOutList-form" @keyup.enter.native="$refs.table.refresh(true)">
+ <rangeDate ref="rangeDate" id="transferOutList-time" :value="time" @change="dateChange" />
+ <a-input id="transferOutList-targetName" v-model.trim="queryParam.targetName" allowClear placeholder="请输入调往对象"/>
<a-form-item label="费用/调拨类型">
- <AllocateType id="allocateBillList-costTypeName" v-model="allocateTypeVal" :changeOnSelect="true" placeholder="请选择费用/调拨类型" @change="changeAllocatype"></AllocateType>
+ <AllocateType id="transferOutList-costTypeName" v-model="allocateTypeVal" :changeOnSelect="true" placeholder="请选择费用/调拨类型" @change="changeAllocatype"></AllocateType>
+ <dealerSearchList id="transferOutList-receiverName" ref="receiverSn" @change="custChange" />
@@ -31,7 +31,7 @@
+ id="transferOutList-state"
@@ -40,7 +40,7 @@
+ <a-input id="transferOutList-allocateNo" v-model.trim="queryParam.allocateNo" allowClear placeholder="请输入调拨单号"/>
@@ -48,7 +48,7 @@
<warehouse
isPermission
v-model="queryParam.warehouseSn"
+ id="transferOutList-warehouseSn"
placeholder="请选择调出仓库"
/>
@@ -58,7 +58,7 @@
+ id="transferOutList-printState"
@@ -70,7 +70,7 @@
+ id="transferOutList-checkStatus"
@@ -79,13 +79,13 @@
+ <customerService id="transferOutList-bizUserSn" ref="customerName" v-model="queryParam.bizUserSn"></customerService>
+ <a-button type="primary" @click="$refs.table.refresh(true)" :disabled="disabled" id="transferOutList-refresh">查询</a-button>
+ <a-button style="margin-left: 5px" @click="resetSearchForm" :disabled="disabled" id="transferOutList-reset">重置</a-button>
@@ -94,8 +94,8 @@
@click="handleExport"
:loading="exportLoading"
- id="allocateBillList-export">导出</a-button>
+ id="transferOutList-export">导出</a-button>
+ <a @click="advanced=!advanced" id="transferOutList-advanced" style="margin-left: 5px">
<a-icon :type="advanced ? 'up' : 'down'"/>
<!-- 操作按钮 -->
<div class="table-operator">
- <a-button v-if="$hasPermissions('B_transferOut_add')" id="allocateBillList-add" type="primary" @click="openModal=true">新增</a-button>
+ <a-button v-if="$hasPermissions('B_transferOut_add')" id="transferOutList-add" type="primary" @click="openModal=true">新增</a-button>
<s-table
@@ -124,7 +124,7 @@
+ <span v-if="$hasPermissions('M_transferOut_detail')" :id="'transferOutList-detail'+record.id" class="link-bule" @click="handleDetail(record)">{{ record.allocateNo }}</span>
<!-- 起止时间 -->
@@ -144,7 +144,7 @@
<template slot="printStateWord" slot-scope="text, record">
<span v-if="record.printState">
<span v-if="record.printState=='NO_PRINT'||record.printState=='PRINT'">{{ record.printStateDictValue }}</span>
- <span @click="handlePrint(record)" class="link-bule" v-else>{{ record.printStateDictValue }}</span>
+ <span :id="'transferOutList-print'+record.id" @click="handlePrint(record)" class="link-bule" v-else>{{ record.printStateDictValue }}</span>
</span>
@@ -156,28 +156,28 @@
v-if="record.state == 'WAIT_AUDIT' && record.printState!='UNABLE_PRINT' && record.printState!='NO_PRINT' && $hasPermissions('B_tfo_yxPrint')"
@click="handleYxPrint(record)"
- id="allocateBillList-examine-btn">允许打印</a-button> -->
+ id="transferOutList-examine-btn">允许打印</a-button> -->
v-if="record.state == 'WAIT_AUDIT' && $hasPermissions('B_transferOut_audit')"
@click="handleExamine(record)"
- id="allocateBillList-examine-btn">审核</a-button>
+ :id="'transferOutList-audit-btn'+record.id">审核</a-button>
v-if="((record.state == 'WAIT_SUBMIT') || (record.state == 'WAIT_AUDIT') || (record.state == 'AUDIT_REJECT')) && $hasPermissions('M_transferOut_edit')"
@click="handleEdit(record)"
- id="allocateBillList-edit-btn">编辑</a-button>
+ :id="'transferOutList-edit-btn'+record.id">编辑</a-button>
v-if="((record.state == 'WAIT_SUBMIT') || (record.state == 'WAIT_AUDIT') || (record.state == 'AUDIT_REJECT')) && $hasPermissions('B_transferOut_del')"
- id="allocateBillList-del-btn">删除</a-button>
+ :id="'transferOutList-del-btn'+record.id">删除</a-button>
<span v-if="((record.state != 'WAIT_SUBMIT') && (record.state != 'WAIT_AUDIT') && (record.state != 'AUDIT_REJECT'))||(!$hasPermissions('B_transferOut_audit') && !$hasPermissions('M_transferOut_edit') && !$hasPermissions('B_transferOut_del'))">--</span>
@@ -202,6 +202,8 @@
+import { hdExportExcel } from '@/libs/exportExcel'
@@ -209,10 +211,10 @@ import auditModal from '@/views/common/auditModal.vue'
import customerService from '@/views/common/customerService'
-import { allocateBillList, allocateBillDel, allocateBillAudit, allocateBillExport, allocateBillAblePrint } from '@/api/allocateBill'
-import { hdExportExcel } from '@/libs/exportExcel'
import printModal from './printStatusModal.vue'
+import { allocateBillList, allocateBillDel, allocateBillAudit, allocateBillExport, allocateBillAblePrint } from '@/api/allocateBill'
name: 'TransferOutList',
@@ -221,38 +223,42 @@ export default {
+ // 创建时间
+ allocateTypeVal: [], // 费用/调拨类型
+ beginDate: getDate.getThreeMonthDays().starttime, // 开始创建时间
+ endDate: getDate.getCurrMonthDays().endtime, // 结束创建时间
- bizUserSn: undefined
+ bizUserSn: undefined // 客服
- printIsShow: false,
+ printIsShow: false, // 打印弹窗
@@ -263,16 +269,15 @@ export default {
+ visibleAudit: false, // 审核弹窗
+ auditInfo: null, // 审核当前行数据
openModal: false, // 新增编辑 弹框
- printInfo: null
+ printInfo: null// 打印当前行信息
- // dataIndex: 'printStateDictValue',
- columns () {
+ columns () { // 表头
{ title: '序号', dataIndex: 'no', width: '3.5%', align: 'center' },
@@ -311,6 +316,7 @@ export default {
this.printIsShow = false
@@ -325,6 +331,7 @@ export default {
this.queryParam.beginDate = date[0]
this.queryParam.endDate = date[1]
+ // 费用/调拨类型
changeAllocatype (val, opts) {
this.allocateTypeVal = val || []
this.queryParam.costTypeSn = val && val[0] ? val[0] : ''
@@ -398,7 +405,7 @@ export default {
- // 审核
+ // 打开审核弹窗
handleExamine (row) {
this.auditInfo = row
this.visibleAudit = true
@@ -442,6 +449,7 @@ export default {
@@ -449,10 +457,12 @@ export default {
this.tableHeight = window.innerHeight - tableSearchH - 240
+ // 打印
handlePrint (item) {
const obj = {
no: item.allocateNo,
@@ -467,6 +477,7 @@ export default {
@@ -22,7 +22,7 @@
<a-form-model-item style="margin-bottom: 0;" label="发货编号">{{ itemData&&itemData.sendNo || '--' }}</a-form-model-item>
<a-form-model-item style="margin-bottom: 0;" label="收货客户名称">{{ itemData&&itemData.receiverName || '--' }}</a-form-model-item>
<a-form-model-item style="margin-bottom: 0;" label="产品分类" prop="id" v-if="nowType=='dbflPrint'||nowType=='dbflExport'">
- <a-select id="allocateBill-print-form" v-model="form.id" placeholder="请选择产品分类">
+ <a-select id="allocateBill-print-typeList" v-model="form.id" placeholder="请选择产品分类">
<a-select-option v-for="item in typeList" :value="item.id" :key="item.id">
<span v-if="item.id != 'all'">{{ item.productBrandName }} - {{ item.productTypeName3 }}</span>
<span v-else>全部</span>
@@ -30,37 +30,37 @@
<a-form-model-item label="货位编号" prop="orderBy" v-if="nowType=='dbflPrint'">
- <a-radio-group v-model="form.orderBy">
- <a-radio value="ASC">打印(↑升序)</a-radio>
- <a-radio value="DESC">打印(↓降序)</a-radio>
- <a-radio value="-1">不打印</a-radio>
+ <a-radio-group v-model="form.orderBy" id="allocateBill-print-orderBy">
+ <a-radio value="ASC" id="allocateBill-print-orderBy-asc">打印(↑升序)</a-radio>
+ <a-radio value="DESC" id="allocateBill-print-orderBy-desc">打印(↓降序)</a-radio>
+ <a-radio value="-1" id="allocateBill-print-orderBy-1">不打印</a-radio>
<a-form-model-item label="产品价格" style="margin-bottom: 0;" prop="priceType" v-if="nowType=='dbPrint'">
- <a-radio-group v-model="form.priceType">
- <a-radio value="ALLOCATE_BILL_PRICE" v-if="$hasPermissions('B_transferOut_print_salesPrice')">销售价</a-radio>
- <a-radio value="ALLOCATE_BILL_COST" v-if="$hasPermissions('B_transferOut_print_costPrice')">成本价</a-radio>
- <a-radio value="ALLOCATE_BILL">不打印</a-radio>
+ <a-radio-group v-model="form.priceType" id="allocateBill-print-priceType">
+ <a-radio value="ALLOCATE_BILL_PRICE" id="allocateBill-print-priceType1" v-if="$hasPermissions('B_transferOut_print_salesPrice')">销售价</a-radio>
+ <a-radio value="ALLOCATE_BILL_COST" id="allocateBill-print-priceType2" v-if="$hasPermissions('B_transferOut_print_costPrice')">成本价</a-radio>
+ <a-radio value="ALLOCATE_BILL" id="allocateBill-print-priceType3">不打印</a-radio>
<a-form-model-item label="产品价格" style="margin-bottom: 0;" prop="priceType" v-if="nowType=='dbExport'">
- <a-radio value="ALLOCATE_BILL_PRICE" v-if="$hasPermissions('B_transferOut_detail_export_salesPrice')">销售价</a-radio>
- <a-radio value="ALLOCATE_BILL_COST" v-if="$hasPermissions('B_transferOut_detail_export_costPrice')">成本价</a-radio>
- <a-radio value="ALLOCATE_BILL">不导出</a-radio>
+ <a-radio value="ALLOCATE_BILL_PRICE" id="allocateBill-print-priceType1" v-if="$hasPermissions('B_transferOut_detail_export_salesPrice')">销售价</a-radio>
+ <a-radio value="ALLOCATE_BILL_COST" id="allocateBill-print-priceType2" v-if="$hasPermissions('B_transferOut_detail_export_costPrice')">成本价</a-radio>
+ <a-radio value="ALLOCATE_BILL" id="allocateBill-print-priceType3">不导出</a-radio>
<a-form-model-item label="备注" v-if="nowType=='dbPrint'">
- <a-checkbox @change="onChangeRemark" :checked="remarkFlag">
+ <a-checkbox @change="onChangeRemark" :checked="remarkFlag" id="allocateBill-print-remark">
打印
</a-checkbox>
- <a-button id="allocateBill-print-close" @click="handleClose('preview')">取消</a-button>
+ <a-button id="allocateBill-printcancel" @click="handleClose('preview')">取消</a-button>
v-if="nowType=='dbflPrint'||nowType=='dbPrint'"
- id="allocateBill-print-save"
+ id="allocateBill-print-dbflPrint"
@click="handleSave('preview')"
@@ -68,13 +68,13 @@
v-if="hidePrint&&(nowType=='dbflPrint'||nowType=='dbPrint')"
- id="allocateBill-print-back"
@click="handleSave('print')"
style="margin-left: 15px;">确定打印</a-button>
v-if="nowType=='dbflExport'||nowType=='dbExport'"
+ id="allocateBill-print-export"
@click="handleSave('export')"
style="margin-left: 15px;">确定导出</a-button>
@@ -104,27 +104,32 @@ export default {
- id: 'all',
- priceType: 'ALLOCATE_BILL',
- orderBy: undefined,
+ id: 'all', // 产品分类
+ priceType: 'ALLOCATE_BILL', // 产品价格
+ orderBy: undefined, // 排序
remarkFlag: 1// 备货打印 1打印 0不打印
- remarkFlag: true,
+ //
+ remarkFlag: true, // 备货打印
id: [{ required: true, message: '请选择产品分类', trigger: 'change' }],
priceType: [{ required: true, message: '请选择产品价格', trigger: 'change' }],
orderBy: [{ required: true, message: '请选择货位编号', trigger: 'change' }]
labelCol: { span: 6 },
wrapperCol: { span: 16 }
- typeList: []
+ typeList: []// 产品分类列表数据
+ // 弹窗标题
modalTit () {
let title = ''
if (this.nowType == 'dbPrint') {
@@ -138,11 +143,13 @@ export default {
return title
+ // 打印状态
hidePrint () {
return this.itemData && this.itemData.printState && this.itemData.printState != 'UNABLE_PRINT' && this.itemData.printState != 'CANCEL_PRINT'
onChangeRemark (e) {
this.remarkFlag = e.target.checked
this.form.remarkFlag = e.target.checked ? 1 : 0
@@ -214,6 +221,7 @@ export default {
+ // 关闭
handleClose () {
this.$refs.ruleForm.resetFields()
@@ -9,7 +9,7 @@
width="40%">
- id="chooseCustom-form"
+ id="printStatusModal-form"
@@ -22,14 +22,14 @@
<span>{{ form.targetName }}</span>
<a-form-model-item label="调拨打印:" prop="printStateInfo">
- <a-radio-group v-model="form.printStateInfo">
- <a-radio value="NO_PRINT">允许打印</a-radio>
- <a-radio value="CANCEL_PRINT" v-if="form.printState == 'UNABLE_PRINT'">取消打印</a-radio>
+ <a-radio-group id="printStatusModal-printStateInfo" v-model="form.printStateInfo">
+ <a-radio value="NO_PRINT" id="printStatusModal-printStateInfo1">允许打印</a-radio>
+ <a-radio value="CANCEL_PRINT" v-if="form.printState == 'UNABLE_PRINT'" id="printStatusModal-printStateInfo0">取消打印</a-radio>
<a-form-model-item :wrapper-col="{ span: 12, offset: 6 }" style="text-align: center;margin-top: 50px;">
- <a-button @click="cancel" style="margin-right: 15px" id="chooseCustom-btn-back">取消</a-button>
- <a-button type="primary" :loading="confirmLoading" @click="handleSubmit" id="chooseCustom-btn-submit">确定</a-button>
+ <a-button @click="cancel" style="margin-right: 15px" id="printStatusModal-cancel-btn">取消</a-button>
+ <a-button type="primary" :loading="confirmLoading" @click="handleSubmit" id="printStatusModal-submit-btn">确定</a-button>
@@ -37,6 +37,7 @@
import { updatePrintState } from '@/api/allocateBill.js'
name: 'PrintModal',
@@ -51,11 +52,11 @@ export default {
- opened: this.show,
+ opened: this.show, // 打开弹窗
- title: '调拨打印状态',
- confirmLoading: false,
+ title: '调拨打印状态', // 弹窗标题
+ confirmLoading: false, // 确定按钮加载状态
labelCol: {
span: 6
@@ -64,18 +65,20 @@ export default {
span: 18
- no: undefined,
+ no: undefined, //
payerName: undefined,
- printStatus: '',
- allocateSn: '',
- printStateInfo: ''
+ printStatus: '', // 打印状态
+ allocateSn: '', // 调拨单号
+ printStateInfo: ''// 调拨打印状态
rules: { printStateInfo: [{ required: true, message: '请选择调拨打印状态', trigger: 'change' }] }
- // 保存
+ // 确定保存验证
handleSubmit () {
this.$refs.ruleForm.validate(valid => {
if (valid) {
@@ -86,6 +89,7 @@ export default {
+ // 确定保存
handleSave () {
const ajax_form = {
@@ -105,6 +109,7 @@ export default {
_this.confirmLoading = false
cancel () {
this.opened = false
this.$emit('cancel')
@@ -1,16 +1,17 @@
- class="allocateBill-basicInfo-modal"
+ class="transferReturn-basicInfo-modal"
title="新增调拨退货"
v-model="isShow"
@cancel="isShow = false"
:width="800">
+ <!-- 搜索条件 -->
- id="allocateBill-basicInfo-form"
+ id="transferReturn-basicInfo-form"
@@ -21,7 +22,7 @@
code="TARGET_TYPE"
showType="radio"
- id="allocateBill-basicInfo-targetType"
+ id="transferReturn-basicInfo-targetType"
v-model="form.targetType"
@change="targetTypeChange"
@@ -31,7 +32,7 @@
v-if="isDealer"
show-search
- id="allocateBill-basicInfo-dealerName"
+ id="transferReturn-basicInfo-dealerName"
v-model="form.targetSn"
placeholder="请输入名称搜索经销商"
:filter-option="false"
@@ -40,20 +41,32 @@
@change="handleChange"
<a-spin v-if="fetching" slot="notFoundContent" size="small" />
- <a-select-option v-for="item in dealerData" :key="item.dealerSn" :value="item.dealerSn">{{ item.dealerName }}</a-select-option>
+ <a-select-option v-for="item in dealerData" :id="'basicInfo-dealerName'+item.dealerSn" :key="item.dealerSn" :value="item.dealerSn">{{ item.dealerName }}</a-select-option>
- <department v-else-if="isDepartment" style="width: 100%;" placeholder="请选择部门" @change="departementChange" v-model="form.targetSn"></department>
- <a-input v-else v-model.trim="form.targetName" placeholder="请输入调拨退货对象名称(最多30个字符)" allowClear :maxLength="30" />
+ <department
+ v-else-if="isDepartment"
+ id="transferReturn-basicInfo-targetSn"
+ style="width: 100%;"
+ placeholder="请选择部门"
+ @change="departementChange"
+ v-model="form.targetSn"></department>
+ id="transferReturn-basicInfo-targetName"
+ v-else
+ v-model.trim="form.targetName"
+ placeholder="请输入调拨退货对象名称(最多30个字符)"
+ :maxLength="30" />
<a-form-model-item label="费用/调拨退货类型" prop="costTypeSn">
- <AllocateType id="allocateBill-basicInfo-allocateTypeSn" v-model="allocateTypeVal" placeholder="请选择费用/调拨退货类型" @change="allocateTypeChange"></AllocateType>
+ <AllocateType id="transferReturn-basicInfo-allocateTypeVal" v-model="allocateTypeVal" placeholder="请选择费用/调拨退货类型" @change="allocateTypeChange"></AllocateType>
<a-form-model-item label="是否抓单" prop="grabFlag">
code="FLAG"
:disabled="form.targetType !== 'DEALER'"
- id="allocateBill-basicInfo-grabFlag"
+ id="transferReturn-basicInfo-grabFlag"
v-model="form.grabFlag"
placeholder="请选择"></v-select>
@@ -61,17 +74,17 @@
<a-form-model-item label="调入仓库" prop="warehouseSn">
v-model="form.warehouseSn"
- id="allocateBill-basicInfo-warehouseSn"
+ id="transferReturn-basicInfo-warehouseSn"
placeholder="请选择调入仓库"
<a-form-model-item label="备注" prop="remark">
- <a-textarea id="allocateBill-basicInfo-remark" :maxLength="120" v-model="form.remarks" placeholder="请输入备注(最多120个字符)" allowClear />
+ <a-textarea id="transferReturn-basicInfo-remark" :maxLength="120" v-model="form.remarks" placeholder="请输入备注(最多120个字符)" allowClear />
- <a-button type="primary" id="allocateBill-basicInfo-modal-save" @click="handleSave">保存</a-button>
- <a-button id="allocateBill-basicInfo-modal-back" @click="isShow = false" style="margin-left: 15px;">取消</a-button>
+ <a-button type="primary" id="transferReturn-basicInfo-modal-save" @click="handleSave">保存</a-button>
+ <a-button id="transferReturn-basicInfo-modal-cancel" @click="isShow = false" style="margin-left: 15px;">取消</a-button>
</a-modal>
@@ -80,12 +93,14 @@
import debounce from 'lodash/debounce'
import { VSelect } from '@/components'
-import { allocateReturnSave, allocateReturnQueryBySn } from '@/api/allocateReturn'
import department from '@/views/expenseManagement/expenseReimbursement/department.js'
-import { dealerSubareaScopeList } from '@/api/dealer'
+import { dealerSubareaScopeList } from '@/api/dealer'
+import { allocateReturnSave, allocateReturnQueryBySn } from '@/api/allocateReturn'
name: 'TransferOutBasicInfoModal',
components: { VSelect, AllocateType, department, warehouse },
@@ -102,22 +117,25 @@ export default {
wrapperCol: { span: 20 }
+ allocateTypeVal: [], // 费用/调拨退货类型 下拉数据
- targetType: 'DEALER',
- targetSn: undefined,
- costTypeSn: undefined,
- allocateSortSn: undefined,
- allocateReturnTypeSn: undefined,
- grabFlag: '1',
- remarks: ''
+ targetType: 'DEALER', // 调往对象
+ targetSn: undefined, // 调往对象sn
+ targetName: '', // 调往对象名称
+ costTypeSn: undefined, // 费用/调拨退货类型sn
+ allocateSortSn: undefined, // 调拨对象sn
+ allocateReturnTypeSn: undefined, // 调拨类别sn
+ grabFlag: '1', // 是否抓单 1是 0否
+ remarks: ''// 备注
targetType: [{ required: true, message: '请选择调往对象', trigger: 'change' }],
targetSn: [{ required: true, message: '请选择调往对象名称', trigger: 'change' }],
@@ -126,7 +144,7 @@ export default {
grabFlag: [{ required: true, message: '请选择是否抓单', trigger: 'change' }],
warehouseSn: [{ required: true, message: '请选择调入仓库', trigger: 'change' }]
- fetching: false,
+ fetching: false, // 经销商名称搜索 状态
dealerData: [] // 经销商 下拉数据
@@ -160,9 +178,10 @@ export default {
this.form.warehouseSn = this.dealerData[ind].defaultWarehouseSn
+ // 选择部门
@@ -221,6 +240,7 @@ export default {
this.form.targetType = val
this.form.grabFlag = val != 'DEALER' ? '0' : '1'
resetForm () {
this.form = {
@@ -254,7 +274,7 @@ export default {
-.allocateBill-basicInfo-modal {
+.transferReturn-basicInfo-modal {
@@ -1,17 +1,24 @@
- <div class="salesReturnCheck-wrap">
+ <div class="transferReturnCheck-wrap">
- <a-page-header :ghost="false" :backIcon="false" class="salesReturnCheck-back" >
+ <a-page-header :ghost="false" :backIcon="false" class="transferReturnCheck-back" >
<!-- 自定义的二级文字标题 -->
- <a id="salesReturnCheck-back-btn" href="javascript:;" @click="handleBack"><a-icon type="left" /> 返回列表</a>
+ <a id="transferReturnCheck-back-btn" href="javascript:;" @click="handleBack"><a-icon type="left" /> 返回列表</a>
<span style="margin: 0 15px;color: #666;">调拨退货对象名称:{{ ordeDetail&&ordeDetail.targetName || '--' }} ({{ ordeDetail&&ordeDetail.grabFlag==1 ? '抓单' : '不抓单' }})</span>
</a-page-header>
<a-card size="small" :bordered="false" class="salesReturnCheck-cont">
- <a-button type="primary" :loading="loading" class="button-info" @click="backStock('BATCH_BACK','批量返库')">批量返库</a-button>
- <a-button v-if="grabFlag==1" type="default" :loading="loading" style="margin-right: 15px;" @click="backStock('BATCH_BAD','批量坏件')">批量坏件</a-button>
+ <!-- 操作按钮 -->
+ <a-button type="primary" id="transferReturnCheck-backStock" :loading="loading" class="button-info" @click="backStock('BATCH_BACK','批量返库')">批量返库</a-button>
+ v-if="grabFlag==1"
+ id="transferReturnCheck-badStock"
+ type="default"
+ :loading="loading"
+ style="margin-right: 15px;"
+ @click="backStock('BATCH_BAD','批量坏件')">批量坏件</a-button>
<span>已选 {{ rowSelectionInfo&&rowSelectionInfo.selectedRows.length }} 项</span>
<!-- 已选配件列表 -->
@@ -37,6 +44,7 @@
v-model="record.backStockQty"
:min="0"
+ :id="'transferReturnCheck-returnQty'+record.ids"
:max="record.returnQty"
placeholder="请输入"
@blur="e => onCellBlur(e.target.value, record)"
@@ -54,55 +62,52 @@
@click="handleSubmit()"
- id="salesReturn-handleSubmit">提交</a-button>
+ id="transferReturnCheck-handleSubmit">提交</a-button>
- allocReturnDetailQueryPage,
- allocateReturnQueryBySn,
- allocateReturnCheckSubmit,
- allocateReturnCheck
-} from '@/api/allocateReturn'
+import { allocReturnDetailQueryPage, allocateReturnQueryBySn, allocateReturnCheckSubmit, allocateReturnCheck } from '@/api/allocateReturn'
name: 'TransferReturnCheck',
+ components: { STable, VSelect },
tableHeight: 0, // 表格高度
- orderSn: null,
- grabFlag: null,
- disabled: false,
+ orderSn: null, // 调拨退货sn
+ grabFlag: null, // 是否抓单 0否 1是
isInster: false, // 是否正在添加产品
- ordeDetail: { discountAmount: 0 },
- // 已选产品
- dataSource: [],
+ ordeDetail: {
+ discountAmount: 0 // 折扣金额
+ }, // 单据详细数据
+ loading: false, // 操作按钮加载状态
+ dataSource: [], // 已选产品
+ // 产品信息数据
productForm: {
- allocateReturnSn: ''
+ allocateReturnSn: '' // 调拨退货sn
- chooseLoadData: [],
+ chooseLoadData: [], // 已选列表数据
- // 查询总计
this.productForm.allocateReturnSn = this.$route.params.sn
return allocReturnDetailQueryPage(Object.assign(parameter, this.productForm)).then(res => {
+ // 重组列表数据名称
data.list[i].ids = data.list[i].no + '-' + data.list[i].productSn
data.list[i].badQty = (data.list[i].badQty || data.list[i].badQty == 0) ? data.list[i].badQty : data.list[i].returnQty
data.list[i].backStockQty = data.list[i].backStockQty || 0
@@ -114,10 +119,11 @@ export default {
- rowSelectionInfo: null
+ rowSelectionInfo: null// 已选数据
@@ -133,8 +139,8 @@ export default {
if (this.grabFlag == 1) { // 抓单
arr.splice(1, 0, { title: '调拨单号', dataIndex: 'allocateNo', width: '12%', align: 'center', customRender: function (text) { return text || '--' } })
- if(this.$hasPermissions('M_transferReturnCheck_salesPrice')){
- arr.splice(this.grabFlag == 1?8:7,0,{ title: '退货单价', dataIndex: 'price', align: 'right', width: '10%', customRender: function (text) { return ((text || text == 0) ? _this.toThousands(text) : '--') } })
+ if (this.$hasPermissions('M_transferReturnCheck_salesPrice')) {
+ arr.splice(this.grabFlag == 1 ? 8 : 7, 0, { title: '退货单价', dataIndex: 'price', align: 'right', width: '10%', customRender: function (text) { return ((text || text == 0) ? _this.toThousands(text) : '--') } })
@@ -233,6 +239,7 @@ export default {
@@ -243,6 +250,7 @@ export default {
this.$refs.table.clearTable()
this.getOrderDetail()
this.tableHeight = window.innerHeight - 340
name: 'TransferReturnImportModal',
@@ -104,12 +105,13 @@ export default {
+ unLoadData: [], // 导入错误数据
+ // 获取导入数据
@@ -96,8 +96,10 @@
import print from './print.vue'
import { allocReturnDetailQueryPage, allocateReturnQueryBySn } from '@/api/allocateReturn'
name: 'TransferReturnDetail',
@@ -108,11 +110,11 @@ export default {
type: [Number, String],
default: ''
- showPrice: {
+ showPrice: {// 是否显示价格
default: false
- pageType: {
+ pageType: {// 页面类型
type: String,
default: 'pages'
@@ -123,10 +125,12 @@ export default {
return allocReturnDetailQueryPage(Object.assign(parameter, { allocateReturnSn: this.outBizSn || this.$route.params.sn })).then(res => {
@@ -138,17 +142,17 @@ export default {
- showDetail: true,
+ showDetail: true, // 显示隐藏基础信息
+ tableHeight: 0// 表格高度
+ // 是否可编辑基础信息
return this.basicInfoData && ((this.basicInfoData.state == 'WAIT_SUBMIT') || (this.basicInfoData.state == 'FINANCIAL_REJECT') || (this.basicInfoData.state == 'AUDIT_REJECT')) && this.$hasPermissions('B_transferReturnEdit')
@@ -173,6 +177,7 @@ export default {
+ // 显示隐藏基础信息 监听表格高度变化
@@ -182,6 +187,7 @@ export default {
'$store.state.app.winHeight' (newValue, oldValue) { // 窗口变更时,需同时更改表格高度
+ // 根据页面类型计算表格高度
outBizSn (newValue, oldValue) {
if (newValue) {
this.pageInit()
@@ -208,6 +214,7 @@ export default {
const row = this.basicInfoData
this.$router.push({ name: row.grabFlag == 1 ? 'transferReturnGrpEdit' : 'transferReturnEdit', params: { sn: row.allocateReturnSn, targetType: row.targetType, dealerLevel: row.dealerLevel } })
if (this.outBizSn || this.$route.params.sn) {
@@ -215,6 +222,7 @@ export default {
this.tableHeight = window.innerHeight - tableSearchH - 285
@@ -1,13 +1,13 @@
- <div class="allocateBillEdit-wrap">
+ <div class="transferReturnEdit-wrap">
<!-- <a-spin :spinning="spinning" tip="Loading..."> -->
<div class="ant-spin-nested-loading">
- <a-page-header :ghost="false" :backIcon="false" class="allocateBillEdit-back" >
+ <a-page-header :ghost="false" :backIcon="false" class="transferReturnEdit-back" >
- <a id="allocateBillEdit-back-btn" href="javascript:;" @click="handleBack"><a-icon type="left" /> 返回列表</a>
+ <a id="transferReturnEdit-back-btn" href="javascript:;" @click="handleBack"><a-icon type="left" /> 返回列表</a>
<span style="margin: 0 15px;color: #666;font-weight: bold;">单号:{{ basicInfoData&&basicInfoData.allocateReturnNo }}</span>
+ <a-button id="transferReturnEdit-showDetail" type="link" class="button-default" @click="showDetail=!showDetail">
@@ -16,7 +16,7 @@
<print :params="{allocateReturnSn: allocateReturnSn}" :basicInfoData="basicInfoData" :disabled="localDataSource.length==0" @loading="spinning=true" @unloading="spinning=false"></print>
- <a-card size="small" :bordered="false" v-if="basicInfoData" class="allocateBillEdit-cont" v-show="showDetail">
+ <a-card size="small" :bordered="false" v-if="basicInfoData" class="transferReturnEdit-cont" v-show="showDetail">
<a-descriptions :column="3">
<a-descriptions-item label="调拨退货单号">{{ (basicInfoData&&basicInfoData.allocateReturnNo) || '--' }}</a-descriptions-item>
<a-descriptions-item label="调拨退货对象">{{ (basicInfoData&&basicInfoData.targetTypeDictValue) || '--' }}</a-descriptions-item>
@@ -34,7 +34,7 @@
</a-descriptions-item>
<a-descriptions-item label="费用/调拨退货类型">
- id="allocateEdit-allocateReturnTypeSn"
+ id="transferReturnEdit-allocateTypeVal"
style="width: 220px;"
:allowClear="false"
@@ -50,24 +50,24 @@
</a-descriptions>
<!-- 选择产品 -->
- <a-card size="small" title="选择产品" :bordered="false" class="allocateBillEdit-cont">
+ <a-card size="small" title="选择产品" :bordered="false" class="transferReturnEdit-cont">
+ <a-form layout="inline" id="transferReturnEdit-form" @keyup.enter.native="$refs.table.refresh(true)">
- <a-input id="allocateBillEdit-productCode" v-model.trim="queryParam.productCode" placeholder="请输入产品编码" allowClear />
+ <a-input id="transferReturnEdit-productCode" v-model.trim="queryParam.productCode" placeholder="请输入产品编码" allowClear />
- <a-input id="allocateBillEdit-productName" v-model.trim="queryParam.productName" placeholder="请输入产品名称" allowClear />
+ <a-input id="transferReturnEdit-productName" v-model.trim="queryParam.productName" placeholder="请输入产品名称" allowClear />
- <a-button style="margin-left: 8px" @click="resetSearchForm" :disabled="disabled" id="storeTransferOutList-reset">重置</a-button>
+ <a-button type="primary" @click="$refs.table.refresh(true)" :disabled="disabled" id="transferReturnEdit-refresh">查询</a-button>
+ <a-button style="margin-left: 8px" @click="resetSearchForm" :disabled="disabled" id="transferReturnEdit-reset">重置</a-button>
@@ -80,6 +80,7 @@
:rowKey="(record) => record.stockSn"
+ rowKeyName="stockSn"
@@ -97,6 +98,7 @@
v-model="record.priceLevel"
placeholder="请选择价格级别"
+ :id="'transferReturnEdit-priceLevel'+record.stockSn"
@change="e => handlePriceLevel(e,index)"></v-select>
<!-- 退货单价 -->
@@ -113,6 +115,7 @@
:max="99999999"
+ :id="'transferReturnEdit-qty'+record.stockSn"
style="width: 100%;" />
@@ -124,13 +127,13 @@
v-if="record.lastStockCost"
@click="handleAdd(record)"
- id="allocateBillEdit-add-btn">添加</a-button>
+ :id="'transferReturnEdit-add-btn'+record.stockSn">添加</a-button>
<!-- 已选产品 -->
- <a-card size="small" title="已选产品" :bordered="false" class="allocateBillEdit-cont">
+ <a-card size="small" title="已选产品" :bordered="false" class="transferReturnEdit-cont">
<!-- 总计 -->
<a-alert type="info" style="margin-bottom:10px">
<div slot="message">
@@ -155,8 +158,8 @@
- <a-button style="margin-left: 8px" @click="chooseResetSearchForm" :disabled="chooseDisabled" id="storeTransferOutList-reset">重置</a-button>
+ <a-button type="primary" @click="$refs.chooseTable.refresh(true)" :disabled="chooseDisabled" id="editGrap-refresh">查询</a-button>
+ <a-button style="margin-left: 8px" @click="chooseResetSearchForm" :disabled="chooseDisabled" id="editGrap-reset">重置</a-button>
@@ -185,6 +188,7 @@
v-model="record.returnQty"
+ :id="'editGrap-returnQty'+record.id"
@@ -194,7 +198,7 @@
- <a-button size="small" type="link" class="button-error" @click="handleDel(record)" id="allocateBillEdit-del-btn">删除</a-button>
+ <a-button size="small" type="link" class="button-error" @click="handleDel(record)" :id="'transferReturnEdit-del-btn'+record.id">删除</a-button>
@@ -203,7 +207,7 @@
<div class="affix-cont">
- id="allocateBillEdit-submit"
+ id="transferReturnEdit-submit"
size="large"
:disabled="spinning"
@@ -224,14 +228,15 @@
@cancel="editRemark = false"
:width="600">
<a-textarea
+ id="transferReturnEdit-remarks"
v-model="basicInfoData.remarks"
placeholder="请输入备注(最多120个字符)"
:maxLength="120"
:auto-size="{ minRows: 3, maxRows: 5 }"
- <a-button type="primary" id="allocateBill-basicInfo-modal-save" @click="handleEditRemark">保存</a-button>
- <a-button id="allocateBill-basicInfo-modal-back" @click="editRemark = false" style="margin-left: 15px;">取消</a-button>
+ <a-button type="primary" id="transferReturnEdit-save" @click="handleEditRemark">保存</a-button>
+ <a-button id="transferReturnEdit-cancel" @click="editRemark = false" style="margin-left: 15px;">取消</a-button>
@@ -239,11 +244,13 @@
// import ImportGuideModal from './importGuideModal.vue'
import {
allocateReturnSave,
allocReturnDetailQueryPage,
@@ -264,21 +271,23 @@ export default {
+ // 已选列表查询条件
+ productName: '' // 产品名称
+ editRemark: false, // 编辑备注
+ loading: false, // 加载状态
- dealerLevel: '',
+ dealerLevel: '', // 经销商等级
@@ -286,8 +295,10 @@ export default {
const dealerLevel = _this.dealerLevel == 'OTHER' ? undefined : _this.dealerLevel
const dealerSnInfo = _this.dealerLevel != 'OTHER' ? _this.basicInfoData.dealerEntity.dealerSn : undefined
const ajaxName = _this.basicInfoData.targetType === 'DEALER' ? queryStockProductPage : stockQueryStockProductPage
return ajaxName(Object.assign(parameter, this.queryParam, { dealerLevel: dealerLevel === '0' ? '' : dealerLevel, warehouseSn: warehouseSn, dealerSn: dealerSnInfo })).then(res => {
@@ -303,15 +314,17 @@ export default {
- allocateReturnSn: '',
+ loadDataSource: [], // 列表数据
+ localDataSource: [], // 已选列表数据
+ allocateReturnSn: '', // 调拨退货sn
const params = Object.assign(parameter, { product: { name: this.chooseQueryParam.productName, code: this.chooseQueryParam.productCode }, allocateReturnSn: this.allocateReturnSn })
return allocReturnDetailQueryPage(params).then(res => {
@@ -325,13 +338,12 @@ export default {
- showDetail: false
+ allocateTypeVal: [], // 费用/调拨退货类型 列表数据
+ showDetail: false// 显示隐藏基础信息
@@ -349,6 +361,7 @@ export default {
+ // 已选数据表头
@@ -582,6 +595,7 @@ export default {
this.getDetail(true)
this.allocateReturnSn = this.$route.params.sn
this.refashPage()
@@ -605,7 +619,7 @@ export default {
- .allocateBillEdit-wrap{
+ .transferReturnEdit-wrap{
position: relative;
height: 100%;
box-sizing: border-box;
@@ -614,13 +628,13 @@ export default {
padding-bottom: 51px;
- .allocateBillEdit-back{
+ .transferReturnEdit-back{
margin-bottom: 6px;
.ant-page-header-heading-sub-title{
margin:0;
- .allocateBillEdit-cont{
+ .transferReturnEdit-cont{
.sub-title{
font-size: 12px;
@@ -7,7 +7,7 @@
<a id="editGrap-back-btn" href="javascript:;" @click="handleBack"><a-icon type="left" /> 返回列表</a>
+ <a-button type="link" id="editGrap-showDetail" class="button-default" @click="showDetail=!showDetail">
@@ -35,7 +35,7 @@
+ id="editGrap-allocateTypeVal"
placeholder="请选择费用/调拨退货类型"
+ id="editGrap-plAdd"
@click="handleBatchAdd">批量添加</a-button>
<span>已选{{ selectTotal }}项</span>
@@ -80,8 +80,8 @@
<a-col :md="4" :sm="24" style="margin-bottom: 10px;">
+ <a-button type="primary" @click="$refs.table.refresh(true)" :disabled="disabled" id="editGrap-refresh">查询</a-button>
+ <a-button style="margin-left: 8px" @click="resetSearchForm" :disabled="disabled" id="editGrap-reset">重置</a-button>
@@ -116,13 +116,14 @@
</template> -->
<!-- 本次可退数量 -->
- <template slot="returnNumber" slot-scope="text, record,index">
+ <template slot="returnNumber" slot-scope="text, record">
v-if="record.refundableQty!=0"
v-model="record.returnableQty"
+ :id="'editGrap-refundableQty-'+record.allocateNo +'-'+ record.productSn"
:max="record.refundableQty"
@@ -135,8 +136,8 @@
v-if="record.refundableQty"
- @click="handleAdd(record)"
- id="editGrap-add-btn">添加</a-button>
+ :id="'editGrap-add-btn-'+record.allocateNo +'-'+ record.productSn"
+ @click="handleAdd(record)">添加</a-button>
@@ -158,17 +159,17 @@
- <a-input id="editGrap-productCode" v-model.trim="chooseQueryParam.productCode" placeholder="请输入产品编码" allowClear />
+ <a-input id="editGrap-choosed-productCode" v-model.trim="chooseQueryParam.productCode" placeholder="请输入产品编码" allowClear />
- <a-input id="editGrap-productName" v-model.trim="chooseQueryParam.productName" placeholder="请输入产品名称" allowClear />
+ <a-input id="editGrap-choosed-productName" v-model.trim="chooseQueryParam.productName" placeholder="请输入产品名称" allowClear />
+ <a-button type="primary" @click="$refs.chooseTable.refresh(true)" :disabled="chooseDisabled" id="editGrap-choosed-refresh">查询</a-button>
+ <a-button style="margin-left: 8px" @click="chooseResetSearchForm" :disabled="chooseDisabled" id="editGrap-choosed-reset">重置</a-button>
@@ -228,7 +229,7 @@
<!-- 修改基础信息 -->
- wrapClassName="allocateBill-editRemark-modal"
+ wrapClassName="transferReturn-editRemark-modal"
v-if="basicInfoData"
@@ -243,8 +244,8 @@
+ <a-button type="primary" id="transferReturn-editGrp-modal-save" @click="handleEditRemark">保存</a-button>
+ <a-button id="transferReturn-editGrp-modal-cancel" @click="editRemark = false" style="margin-left: 15px;">取消</a-button>
@@ -252,22 +253,15 @@
+//组件
-import { allocDetailQueryPageForReturn } from '@/api/allocateBill'
- allocateReturnSave,
- allocReturnDetailInsert,
- allocReturnDetailUpdate,
- allocateReturnSubmit,
- allocReturnDetailDelete,
- allocReturnDetailInsertBatch
+//接口
+import { allocDetailQueryPageForReturn } from '@/api/allocateBill'
+import {allocateReturnSave, allocReturnDetailQueryPage, allocateReturnQueryBySn,allocReturnDetailInsert,allocReturnDetailUpdate,allocateReturnSubmit, allocReturnDetailDelete,allocReturnDetailInsertBatch} from '@/api/allocateReturn'
name: 'TransferReturnGrpEdit',
@@ -276,30 +270,34 @@ export default {
+ showDetail: false,//控制基础信息显示
- allocateNo: ''
+ productCode: '',//产品编码
+ productName: '',//产品名称
+ allocateNo: ''//调拨单号
+ //已选产品查询条件
+ productName: ''//产品名称
+ editRemark: false,//编辑备注
+ loading: false,//表格加载状态
+ allocateReturnSn: '',//调拨sn
const targetSn = this.basicInfoData.targetSn
const allocateNo = this.queryParam.allocateNo
+ //获取待选产品列表 有分页
const otherParams = { allocateBill: { targetType: this.basicInfoData.targetType, targetSn: targetSn, allocateNo: allocateNo } }
return allocDetailQueryPageForReturn(Object.assign(parameter, this.queryParam, otherParams)).then(res => {
+ //计算表格序号 优化表格数据
@@ -312,14 +310,16 @@ export default {
+ loadDataSource: [],//待选表格数据
+ localDataSource: [],//已选表格数据
+ //获取已选表格数据 有分页
+ //计算表格序号
@@ -332,14 +332,16 @@ export default {
- allocateTypeVal: []
+ rowSelectionInfo: null,//已选表格数据
+ allocateTypeVal: []//调拨退货类型列表
+ //计算所选条数
selectTotal () {
+ //表头
@@ -358,6 +360,7 @@ export default {
arr.splice(5, 0, { title: '调拨单价', dataIndex: 'price', width: '10%', align: 'right', customRender: function (text) { return ((text || text == 0) ? _this.toThousands(text) : '--') } })
+ //已选列表表头
@@ -420,6 +423,7 @@ export default {
+ //添加成功后的操作提示
showFailMessage (data) {
const h = this.$createElement
const htmlStr = [h('p', data.message)]
@@ -634,6 +638,7 @@ export default {
this.$refs.table.refresh()
+ //初始化
@@ -695,7 +700,7 @@ export default {
- .allocateBill-editRemark-modal{
+ .transferReturn-editRemark-modal{
.btn-cont{
text-align: center;
padding-top: 20px;
name: 'TransferReturnImportGuideModal',
+ attachAction: process.env.VUE_APP_API_BASE_URL + '/upload', // 上传文件地址
+ paramsData: null, // 上传文件参数
+ uploadParams: {// 上传文件参数
@@ -3,11 +3,11 @@
+ <a-form layout="inline" id="transferReturn-form" @keyup.enter.native="$refs.table.refresh(true)">
+ <rangeDate ref="rangeDate" id="transferReturn-time" :value="time" @change="dateChange" />
@@ -49,7 +49,7 @@
+ <customerService id="transferReturn-bizUserSn" ref="customerName" v-model="queryParam.bizUserSn"></customerService>
@@ -65,7 +65,7 @@
id="transferReturn-export">导出</a-button> -->
+ <a @click="advanced=!advanced" style="margin-left: 5px" id="transferReturn-advanced">
@@ -95,7 +95,7 @@
- <span v-if="$hasPermissions('M_transferReturnDetail')" class="link-bule" @click="handleDetail(record)">{{ record.allocateReturnNo }}</span>
+ <span v-if="$hasPermissions('M_transferReturnDetail')" :id="'transferReturn-allocateReturnNo'+record.id" class="link-bule" @click="handleDetail(record)">{{ record.allocateReturnNo }}</span>
<!-- 调拨类型 -->
@@ -114,28 +114,28 @@
v-if="record.state == 'WAIT_AUDIT' && $hasPermissions('B_transferReturnAudit')"
- id="transferReturn-examine-btn">审核</a-button>
+ :id="'transferReturn-audit-btn'+record.id">审核</a-button>
v-if="record.state=='WAIT_CHECK' && $hasPermissions('M_transferReturnCheck')"
@click="handleCheck(record)"
- id="transferReturn-examine-btn">品检</a-button>
+ :id="'transferReturn-check-btn'+record.id">品检</a-button>
v-if="((record.state == 'WAIT_SUBMIT') || (record.state == 'FINANCIAL_REJECT') || (record.state == 'AUDIT_REJECT')) && $hasPermissions('B_transferReturnEdit')"
- id="transferReturn-edit-btn">编辑</a-button>
+ :id="'transferReturn-edit-btn'+record.id">编辑</a-button>
v-if="((record.state == 'WAIT_SUBMIT') || (record.state == 'FINANCIAL_REJECT') || (record.state == 'AUDIT_REJECT')) && $hasPermissions('B_transferReturnDel')"
- id="transferReturn-del-btn">删除</a-button>
+ :id="'transferReturn-del-btn'+record.id">删除</a-button>
<!-- 带财务确认或已完结 -->
<span v-if="record.state == 'WAIT_FINANCIAL_AUDIT'||record.state == 'FINISH'">--</span>
@@ -157,15 +157,17 @@
import auditModal from '@/views/common/auditModal.vue'
-import { allocateReturnQueryPage, allocateReturnAudit, allocateReturnDelete } from '@/api/allocateReturn'
+import { allocateReturnQueryPage, allocateReturnAudit, allocateReturnDelete } from '@/api/allocateReturn'
name: 'TransferReturnList',
@@ -174,31 +176,34 @@ export default {
- time: [],
+ time: [], // 创建时间
+ allocateTypeVal: [], // 费用/调拨退货类型
+ beginDate: '', // 开始时间
+ endDate: '', // 结束时间
allocateSortSn: undefined, // 调拨类别
allocateReturnTypeSn: undefined, // 调拨退货类型2
allocateReturnNo: '', // 调拨单号
return allocateReturnQueryPage(Object.assign(parameter, this.queryParam, { authWarehouseFlag: 0 })).then(res => {
@@ -209,13 +214,14 @@ export default {
@@ -247,6 +253,7 @@ export default {
+ // 选择费用/调拨退货类型
@@ -295,7 +302,7 @@ export default {
+ // 审核成功
auditOrder (state) {
_this.spinningAudit = true
@@ -334,6 +341,7 @@ export default {
_this.spinning = false
@@ -341,12 +349,14 @@ export default {
this.tableHeight = window.innerHeight - tableSearchH - 255
@@ -5,7 +5,7 @@
v-if="$hasPermissions('B_transferReturnPrint')"
- id="editGrap-db-print-btn"
+ id="transferReturn-db-print-btn"
@click="handlePrint('preview')">打印预览</a-button>
@@ -13,7 +13,7 @@
- id="editGrap-dbfl-print-btn"
+ id="transferReturn-dbfl-print-btn"
@click="handlePrint('print')">快捷打印</a-button>
v-if="$hasPermissions('B_transferReturnExport')"
- id="editGrap-export-btn"
+ id="transferReturn-export-btn"
@click="handleExcel">导出Excel</a-button>
<!-- 打印导出 -->
@@ -34,7 +34,9 @@
import { printFun, exportExcel } from '@/libs/JGPrint.js'
import { allocateReturnExcel, allocateReturnPrint } from '@/api/allocateReturn'
components: { printModal },
@@ -58,8 +60,8 @@ export default {
- nowType: null
+ openModal: false, // 打开打印导出
+ nowType: null// 打印类型
@@ -68,6 +70,7 @@ export default {
handleOk (obj) {
const params = {
@@ -79,10 +82,10 @@ export default {
params.orderBy = obj.orderBy
_this.$emit('loading')
- printFun(allocateReturnPrint, params, obj.isPreview, '调拨退货单', () => {
+ printFun(allocateReturnPrint, params, obj.isPreview, '调拨退货单', () => {
_this.$emit('unloading')
// 导出
handleExcel () {
@@ -20,23 +20,23 @@
<a-form-model-item style="margin:0" label="调拨退货单号">{{ itemData&&itemData.allocateReturnNo || '--' }}</a-form-model-item>
<a-form-model-item style="margin:0" label="调拨退货对象">{{ itemData&&itemData.targetName || '--' }}</a-form-model-item>
<a-form-model-item label="产品价格" prop="priceType">
- <a-radio value="thj" v-if="$hasPermissions('B_transferReturnPrint_salesPrice')">退货价</a-radio>
- <a-radio value="cbj" v-if="$hasPermissions('B_transferReturnPrint_costPrice')">成本价</a-radio>
- <a-radio value="bdy">不打印</a-radio>
+ <a-radio-group id="allocateBill-print-priceType" v-model="form.priceType">
+ <a-radio value="thj" id="allocateBill-print-priceType1" v-if="$hasPermissions('B_transferReturnPrint_salesPrice')">退货价</a-radio>
+ <a-radio value="cbj" id="allocateBill-print-priceType2" v-if="$hasPermissions('B_transferReturnPrint_costPrice')">成本价</a-radio>
+ <a-radio value="bdy" id="allocateBill-print-priceType3">不打印</a-radio>
<a-form-model-item label="货位编号" prop="orderBy">
+ <a-radio-group id="allocateBill-print-orderBy" v-model="form.orderBy">
+ <a-radio value="ASC" id="allocateBill-print-orderBy1">打印(↑升序)</a-radio>
+ <a-radio value="DESC" id="allocateBill-print-orderBy2">打印(↓降序)</a-radio>
+ <a-radio value="-1" id="allocateBill-print-orderBy3">不打印</a-radio>
- <a-button id="allocateBill-print-save" @click="handleSave(0)">取消</a-button>
- <a-button type="primary" id="allocateBill-print-back" @click="handleSave(1)" style="margin-left: 15px;">确定</a-button>
+ <a-button id="allocateBill-print-cancel" @click="handleSave(0)">取消</a-button>
+ <a-button type="primary" id="allocateBill-print-save" @click="handleSave(1)" style="margin-left: 15px;">确定</a-button>
@@ -62,21 +62,24 @@ export default {
id: 'all',
- priceType: undefined,
- orderBy: undefined
+ priceType: undefined, // 产品价格
+ orderBy: undefined// 货位编号
- spinning: false
@@ -120,9 +123,9 @@ export default {
- if(!this.$hasPermissions('B_transferReturnPrint_salesPrice')&&!this.$hasPermissions('B_transferReturnPrint_costPrice')){
- this.form.priceType = "bdy"
+ if (!this.$hasPermissions('B_transferReturnPrint_salesPrice') && !this.$hasPermissions('B_transferReturnPrint_costPrice')) {
+ this.form.priceType = 'bdy'
@@ -1,23 +1,23 @@
- <div class="allocateBillList-wrap">
+ <div class="transfersPrintList-wrap">
<a-card size="small" :bordered="false" :class="currentTab==2 ? 'searchBox' : 'searchBoxNormal'">
+ <a-form layout="inline" id="transfersPrintList-form" @keyup.enter.native="$refs.table.refresh(true)">
+ <rangeDate id="transfersPrintList-time" ref="rangeDate" :value="time" @change="dateChange" />
+ <a-input id="transfersPrintList-targetName" v-model.trim="queryParam.targetName" allowClear placeholder="请输入调往对象"/>
- <dealerSearchList ref="receiverSn" @change="custChange"/>
+ <dealerSearchList id="transfersPrintList-receiver" ref="receiverSn" @change="custChange"/>
<a-col :md="6" :sm="24" v-if="currentTab==2&&!isShowCustomerSearch">
+ id="transfersPrintList-state"
@@ -38,7 +38,7 @@
+ <a-input id="transfersPrintList-allocateNo" v-model.trim="queryParam.allocateNo" allowClear placeholder="请输入调拨单号"/>
<a-col :md="6" :sm="24" v-if="currentTab == 1">
@@ -55,7 +55,7 @@
+ id="transfersPrintList-printState"
@@ -67,31 +67,31 @@
+ id="transfersPrintList-warehouseSn"
<a-form-item label="所在区域">
- <subarea id="allocateBillList-subarea" ref="subarea" @change="subareaChange"></subarea>
+ <subarea id="transfersPrintList-subarea" ref="subarea" @change="subareaChange"></subarea>
<a-form-item label="地区">
- <Area id="allocateBillList-shippingAddrProvinceSn" v-model="queryParam.shippingAddrProvinceSn" placeholder="请选择省"></Area>
+ <Area id="transfersPrintList-shippingAddrProvinceSn" v-model="queryParam.shippingAddrProvinceSn" placeholder="请选择省"></Area>
+ <customerService ref="customerName" id="transfersPrintList-bizUserSn" v-model="queryParam.bizUserSn"></customerService>
<a-col :md="currentTab==2&&!isShowCustomerSearch ?24:6" :sm="24" :style="{textAlign: (currentTab==2&&!isShowCustomerSearch)?'center':''}">
+ <a-button type="primary" @click="$refs.table.refresh(true)" :disabled="disabled" id="transfersPrintList-refresh">查询</a-button>
+ <a-button style="margin-left: 5px" @click="resetSearchForm" :disabled="disabled" id="transfersPrintList-reset">重置</a-button>
+ <a @click="advanced=!advanced" style="margin-left: 5px" id="transfersPrintList-advanced">
@@ -101,10 +101,10 @@
<div style="background-color: #fff;">
- <a-tabs v-model="currentTab" @change="changeTab">
- <a-tab-pane :key="1" tab="全部">
+ <a-tabs v-model="currentTab" @change="changeTab" id="transfersPrintList-tabs">
+ <a-tab-pane :key="1" tab="全部" id="transfersPrintList-tabs1">
</a-tab-pane>
- <a-tab-pane :key="2" tab="待打印">
+ <a-tab-pane :key="2" tab="待打印" id="transfersPrintList-tabs2">
</a-tabs>
@@ -124,12 +124,12 @@
+ <span v-if="$hasPermissions('M_transferOut_detail')" :id="'transfersPrintList-allocateNo'+record.id" class="link-bule" @click="handleDetail(record)">{{ record.allocateNo }}</span>
<!-- 打印状态 -->
<template slot="printStatus" slot-scope="text, record">
- <span v-if="record.printState=='NO_PRINT'" class="link-bule" @click="editPrintStatus(record)">{{ record.printStateDictValue }}</span>
+ <span v-if="record.printState=='NO_PRINT'" :id="'transfersPrintList-printStatus'+record.id" class="link-bule" @click="editPrintStatus(record)">{{ record.printStateDictValue }}</span>
<span v-else>{{ record.printStateDictValue }}</span>
<div slot="costTitle">
@@ -148,14 +148,14 @@
v-if="record.printState == 'NO_PRINT'&&$hasPermissions('B_transferOut_type_print')"
@click="handlePrint(record)"
- id="allocateBillList-printState">调拨分类打印</a-button>
+ :id="'transfersPrintList-printState-btn'+record.id">调拨分类打印</a-button>
v-else-if="record.printState == 'PRINT'&&$hasPermissions('B_tfoPrint_record')"
class="button-success"
@click="handlePrintRecord(record)"
- id="allocateBillList-printRecord">打印记录</a-button>
+ :id="'transfersPrintList-printRecord-btn'+record.id">打印记录</a-button>
@@ -198,6 +198,8 @@
+import { printBase64Fun } from '@/libs/JGPrint.js'
import subarea from '@/views/common/subarea.js'
import Area from '@/views/common/area.js'
@@ -209,8 +211,8 @@ import warehouse from '@/views/common/chooseWarehouse.js'
import recordModal from './recordModal.vue'
import { allocateBillList, allocateBillDetailPrint, updatePrintState } from '@/api/allocateBill'
-import { printBase64Fun } from '@/libs/JGPrint.js'
name: 'TransfersPrintList',
@@ -219,44 +221,48 @@ export default {
- itemData: null,
- showRecordModal: false,
- showPrintModal: false,
+ itemData: null, // 当前行数据
+ showRecordModal: false, // 打印记录弹窗
+ showPrintModal: false, // 打印弹窗
- moment(getDate.getThreeMonthDays().starttime, 'YYYY-MM-DD'),
- moment(getDate.getCurrMonthDays().endtime, 'YYYY-MM-DD')
+ moment(getDate.getThreeMonthDays().starttime, 'YYYY-MM-DD'), // 开始时间
+ moment(getDate.getCurrMonthDays().endtime, 'YYYY-MM-DD')// 几位数使劲
- printState: 'NO_PRINT',
+ checkStatus: undefined, // 选中状态
+ warehouseSn: undefined, // 调出仓库
+ printState: 'NO_PRINT', // 打印状态
subareaArea: {
- subareaSn: undefined,
- subareaAreaSn: undefined
+ subareaSn: undefined, // 区域
+ subareaAreaSn: undefined// 分区
- shippingAddrProvinceSn: undefined,
+ shippingAddrProvinceSn: undefined, // 选中省份
- currentTab: 2,
+ currentTab: 2, // tabs默认值
@@ -267,12 +273,13 @@ export default {
openModal: false, // 打印弹框
- tipData: null
+ tipData: null// 操作提示回显数据
@@ -305,6 +312,7 @@ export default {
@@ -314,6 +322,7 @@ export default {
this.queryParam.receiverName = val.key
+ // tabs事件
changeTab (v) {
this.currentTab = v
this.resetSearchForm()
@@ -323,6 +332,7 @@ export default {
+ // 区域分区
subareaChange (val) {
this.queryParam.subareaArea = {
subareaSn: val[0] ? val[0] : undefined,
@@ -396,11 +406,13 @@ export default {
@@ -408,6 +420,7 @@ export default {
this.tableHeight = window.innerHeight - tableSearchH - 266
@@ -419,10 +432,12 @@ export default {
this.showPrintModal = true
+ // 关闭操作提示弹窗
canselModal () {
this.showPrintModal = false
+ // 操作提示成功呢
updatePrintStatus () {
_this.spinning = true
@@ -440,6 +455,7 @@ export default {
@@ -474,7 +490,7 @@ export default {
- .allocateBillList-wrap{
+ .transfersPrintList-wrap{
.ant-tabs-bar{
margin: 0;
@@ -45,14 +45,16 @@
<div class="btn-box">
- <a-button @click="handleCommonCancel" v-if="isCancel">{{ cancelText }}</a-button>
+ <a-button :id="'record-cancel-'+record.id" @click="handleCommonCancel" v-if="isCancel">{{ cancelText }}</a-button>
import { printLogQueryPage } from '@/api/data'
name: 'RecordModal',
@@ -78,10 +80,11 @@ export default {
- tipData: null,
- params: null,
+ tipData: null, // 调拨当前数据
+ params: null, // 提交数据
columns: [
{ title: '序号', dataIndex: 'no', width: '10%', align: 'center', customRender: function (text) { return text || '--' } },
{ title: '打印时间', dataIndex: 'printDate', width: '20%', align: 'center', customRender: function (text) { return text || '--' } },
@@ -93,10 +96,12 @@ export default {
return printLogQueryPage(Object.assign(parameter, this.params || {})).then(res => {
@@ -110,6 +115,7 @@ export default {
+ // 赋值
setData (data, params) {
this.tipData = data
this.params = params
@@ -33,8 +33,8 @@
- <a-button id="storeTransferOut-type-edit-modal-back" @click="isShow = false" style="margin-right: 15px;">取消</a-button>
- <a-button type="primary" id="storeTransferOut-type-edit-modal-save" @click="handleSave">保存</a-button>
+ <a-button id="transferTypeManagementEdit-cancel" @click="isShow = false" style="margin-right: 15px;">取消</a-button>
+ <a-button type="primary" id="transferTypeManagementEdit-save" @click="handleSave">保存</a-button>
@@ -43,9 +43,11 @@
-import { allocateTypeSave } from '@/api/allocateType'
import allocateType from '@/views/common/allocateType'
+import { allocateTypeSave } from '@/api/allocateType'
name: 'TransferTypeManagementEditModal',
@@ -65,6 +67,7 @@ export default {
return (this.itemSn ? '编辑' : '新增') + '调拨类型'
@@ -73,16 +76,19 @@ export default {
+ // form 表单
- allocateType: [],
+ allocateType: [], // 调拨类别
name: '', // 调拨类型名称
allocateCategory: undefined, // 调拨类别
treeLevel: 3
allocateCategory: [
{ required: true, message: '请选择调拨类别', trigger: 'change' }
@@ -94,6 +100,7 @@ export default {
+ // 调拨类型名称 去空格
filterEmpty () {
let str = this.form.name
str = str.replace(/\ +/g, '')
@@ -101,6 +108,7 @@ export default {
str = str.replace(/[\r\n]/g, '')
this.form.name = str
+ // 调拨类别 change
changeCategory (v, opt) {
this.form.allocateCategory = v && v[1] ? v[1] : ''
@@ -30,14 +30,14 @@
v-if="$hasPermissions('B_transferTypeManagement_edit')"
- id="transferTypeManagementList-edit-btn">编辑</a-button>
+ :id="'transferTypeManagementList-edit-btn-'+record.id">编辑</a-button>
v-if="$hasPermissions('B_transferTypeManagement_del')"
- id="transferTypeManagementList-del-btn">删除</a-button>
+ :id="'transferTypeManagementList-del-btn-'+record.id">删除</a-button>
<span v-if="!$hasPermissions('B_transferTypeManagement_del') &&!$hasPermissions('B_transferTypeManagement_edit')">--</span>
@@ -49,8 +49,10 @@
import transferTypeManagementEditModal from './editModal.vue'
import { allocateTypeList, allocateTypeDel } from '@/api/allocateType'
name: 'TransferTypeManagementList',
@@ -59,7 +61,7 @@ export default {
{ title: '序号', dataIndex: 'no', width: '5%', align: 'center' },
{ title: '创建时间', dataIndex: 'createDate', width: '15%', align: 'center', customRender: function (text) { return text || '--' } },
@@ -71,10 +73,12 @@ export default {
return allocateTypeList(Object.assign(parameter, {})).then(res => {
@@ -123,12 +127,14 @@ export default {
_this.setTableH()
this.tableHeight = window.innerHeight - tableSearchH - 185
v-model="form.warehouseType"
+ id="warehouseEdit-state"
code="WAREHOUSE_TYPE"
placeholder="请选择仓库类型"
@@ -73,9 +73,11 @@
-import { warehouseSave } from '@/api/warehouse'
import AreaList from '@/views/common/areaList.js'
+import { warehouseSave } from '@/api/warehouse'
name: 'WarehouseEditModal',
@@ -103,22 +105,24 @@ export default {
+ // 表单 label 布局
name: '', // 仓库名称
- address: '',
- addressInfo: undefined,
- provinceSn: undefined,
- provinceName: undefined,
- citySn: undefined,
- cityName: undefined,
- districtSn: undefined,
- districtName: undefined,
+ address: '', // 详细地址
+ addressInfo: undefined, // 选择省市区
+ provinceSn: undefined, // 省份sn
+ provinceName: undefined, // 省份名称
+ citySn: undefined, // 市sn
+ cityName: undefined, // 市名称
+ districtSn: undefined, // 区sn
+ districtName: undefined, // 区名称
erpWarehouseCode: undefined, // ERP仓库编码
- warehouseType: undefined
+ warehouseType: undefined// 仓库类型
name: [
@@ -140,6 +144,7 @@ export default {
+ // 仓库名称 去除空格
@@ -147,6 +152,7 @@ export default {
+ // 地区
areaChange (val, row) {
this.form.addressInfo = val
this.form.provinceSn = val[0] ? val[0] : ''
@@ -170,7 +176,7 @@ export default {
districtSn: this.nowData.districtSn ? this.nowData.districtSn : '',
districtName: this.nowData.districtName ? this.nowData.districtName : '',
erpWarehouseCode: this.nowData.erpWarehouseCode ? this.nowData.erpWarehouseCode : '', // ERP仓库编码
- warehouseType:this.nowData.warehouseType ? this.nowData.warehouseType : '',
+ warehouseType: this.nowData.warehouseType ? this.nowData.warehouseType : '',
addressInfo: addressVal
@@ -71,9 +71,11 @@
-import { warehouseList, warehouseDel } from '@/api/warehouse'
import { STable } from '@/components'
import warehouseEditModal from './editModal.vue'
+import { warehouseList, warehouseDel } from '@/api/warehouse'
name: 'WarehouseList',
@@ -84,7 +86,7 @@ export default {
queryParam: { // 查询条件
name: '' // 仓库名称
{ title: '序号', dataIndex: 'no', width: '10%', align: 'center' },
@@ -96,10 +98,12 @@ export default {
return warehouseList(Object.assign(parameter, this.queryParam)).then(res => {
@@ -164,12 +168,14 @@ export default {
goStoringLocation (row) {
this.$router.push({ path: `/basicData/storingLocation/${row.warehouseSn}`, query: { name: row.name } })
this.tableHeight = window.innerHeight - tableSearchH - 250
<a-form-model-item label="所属仓库" prop="warehouseSn">
<a-select id="storingLocationEdit-warehouseSn" disabled placeholder="请选择所属仓库" allowClear v-model="form.warehouseSn">
- <a-select-option v-for="item in warehouseList" :key="item.id" :value="item.warehouseSn">{{ item.name }}</a-select-option>
+ <a-select-option :id="'storingLocationEdit-warehouseSn-'+item.id" v-for="item in warehouseList" :key="item.id" :value="item.warehouseSn">{{ item.name }}</a-select-option>
@@ -44,7 +44,9 @@
import { warehouseLocSave, warehouseAllList } from '@/api/warehouse'
name: 'StoringLocationEditModal',
return (this.itemSn ? '编辑' : '新增') + '仓位'
@@ -73,14 +76,17 @@ export default {
+ // form表单 label布局
name: '', // 仓位名称
warehouseSn: undefined // 所属仓库
{ required: true, message: '请输入仓位名称', trigger: 'blur' }
@@ -11,7 +11,7 @@
<a-card size="small" :bordered="false" class="storingLocationList-cont">
+ <a-form layout="inline" id="storingLocationList-form" @keyup.enter.native="$refs.table.refresh(true)">
<a-form-item label="仓位名称">
@@ -49,14 +49,14 @@
v-if="record.defaultFlag!='1'"
- id="storingLocationList-edit-btn">编辑</a-button>
+ :id="'storingLocationList-edit-btn-'+record.id">编辑</a-button>
- id="storingLocationList-del-btn">删除</a-button>
+ :id="'storingLocationList-del-btn-'+record.id">删除</a-button>
<span v-if="record.defaultFlag=='1'">--</span>
@@ -69,9 +69,11 @@
-import { warehouseLocList, warehouseLocDel } from '@/api/warehouse'
import storingLocationEditModal from './editModal.vue'
+import { warehouseLocList, warehouseLocDel } from '@/api/warehouse'
name: 'StoringLocationList',
@@ -79,12 +81,13 @@ export default {
warehouseSn: this.$route.params.sn, // 仓库sn
name: '' // 仓位名称
{ title: '仓位名称', dataIndex: 'name', align: 'center', width: '45%', customRender: function (text) { return text || '--' }, ellipsis: true },
@@ -94,10 +97,12 @@ export default {
return warehouseLocList(Object.assign(parameter, this.queryParam)).then(res => {
@@ -168,12 +173,14 @@ export default {
handleBack () {
this.$router.push({ path: '/basicData/warehouse/list', query: { closeLastOldTab: true } })
this.tableHeight = window.innerHeight - tableSearchH - 295
@@ -133,7 +133,7 @@ export default {
loading: false, // 表格加载中
{ title: '序号', dataIndex: 'no', width: 80, align: 'center' },
- { title: '产品编码', dataIndex: 'code', align: 'left',width: 200 },
+ { title: '产品编码', dataIndex: 'code', align: 'left', width: 200 },
{ title: '产品名称', dataIndex: 'name', align: 'left', ellipsis: true, customRender: function (text) { return text || '--' } }
@@ -145,6 +145,7 @@ export default {
url = productPricingList // 获取定价产品
const params = Object.assign(parameter, this.queryParam)
+ // 不是供应商也不是经销权选择产品
if (this.type != 'supplier' && this.type != 'dealership') { // 促销
params.onlineFalg = 1
@@ -291,6 +292,7 @@ export default {
+ _this.handleSearch() // 重新渲染表格
_this.$refs.table.setTableSelected(selectedRowKeys, selectedRows) // 设置表格选中项
@@ -40,6 +40,10 @@ const Employee = {
isPermission: {
+ pageSn: {
+ type: String,
+ default: ''
@@ -69,16 +73,21 @@ const Employee = {
this.$emit('change', value, item)
getList () {
- const funs = this.isPermission ? supplierAuthAllList : supplierAllList
+ const funs = _this.isPermission ? supplierAuthAllList : supplierAllList
funs().then(res => {
- if (this.enableFlag != '') {
- this.list = res.data.filter(item => item.enableFlag == this.enableFlag)
+ if (_this.enableFlag != '') {
+ if (_this.pageSn === '福麦斯') {
+ _this.list = res.data.filter(item => item.supplierName.includes('福麦斯'))
+ _this.list = res.data.filter(item => item.enableFlag == _this.enableFlag)
- this.list = res.data
+ _this.list = res.data
- this.list = []
+ _this.list = []
<a-col :md="12" :sm="24">
<a-form-model-item label="选择盘点单" prop="checkWarehouseSn">
- <a-select id="exportCheckList-print" v-model="queryParam.checkWarehouseSn" placeholder="请选择盘点单" allowClear>
+ <a-select id="exportCheckList-checkWarehouseSn" v-model="queryParam.checkWarehouseSn" placeholder="请选择盘点单" allowClear>
<a-select-option v-for="item in checkList" :value="item.checkWarehouseSn" :key="item.checkWarehouseSn">
<span>{{ item.financeAuditTime }} - {{ item.checkWarehouseNo }}</span>
</a-select-option>
@@ -39,13 +39,13 @@
<a-form-model-item :wrapper-col="{ span: 12, offset: 6 }">
- type="primary"
- class="button-warning"
- @click="handleExport"
- :disabled="disabled"
- :loading="exportLoading"
- id="exportCheckList-export">导出</a-button>
- <a-button @click="pageInit" style="margin-left: 15px" id="chooseCustom-btn-back">重置</a-button>
+ @click="handleExport"
+ id="exportCheckList-export">导出</a-button>
+ <a-button @click="pageInit" style="margin-left: 15px" id="exportCheckList-reset">重置</a-button>
@@ -55,10 +55,12 @@
-import { checkWarehouseExcelList, checkWarehouseExport } from '@/api/checkWarehouse'
+import { checkWarehouseExcelList, checkWarehouseExport } from '@/api/checkWarehouse'
name: 'ExportCheckList',
@@ -66,28 +68,30 @@ export default {
- labelCol: { span: 8 },
- wrapperCol: { span: 16 },
- checkWarehouseSn: undefined,
+ labelCol: { span: 8 }, // label 标签布局
+ wrapperCol: { span: 16 }, // 表单设置布局
+ checkWarehouseSn: undefined, // 盘点单 sn
+ warehouseSn: undefined// 仓库sn
checkWarehouseSn: [{ required: true, message: '请选择盘点单', trigger: 'change' }],
warehouseSn: [{ required: true, message: '请选择仓库', trigger: 'change' }]
- checkList: []
+ checkList: []// 盘点单数据
+ // 获取盘点单数据
getList (v) {
this.queryParam.checkWarehouseSn = undefined
this.checkList = []
- if(v){
- checkWarehouseExcelList({warehouseSn: this.queryParam.warehouseSn}).then(res => {
+ if (v) {
+ checkWarehouseExcelList({ warehouseSn: this.queryParam.warehouseSn }).then(res => {
this.checkList = res.data || []
@@ -114,15 +118,17 @@ export default {
- loadWareHouse(){
+ // 加载仓库信息
+ loadWareHouse () {
const defWareHouse = this.$store.state.app.defWarehouse
- this.queryParam.warehouseSn = this.isShowWarehouse ? undefined : (defWareHouse?defWareHouse.warehouseSn:undefined)
+ this.queryParam.warehouseSn = this.isShowWarehouse ? undefined : (defWareHouse ? defWareHouse.warehouseSn : undefined)
- if(!this.isShowWarehouse){
+ if (!this.isShowWarehouse) {
this.getList(true)
+ // 初始化数据
@@ -1,10 +1,10 @@
- <a-card size="small" :bordered="false" class="exportCheckList-wrap">
+ <a-card size="small" :bordered="false" class="exportSalesList-wrap">
<div ref="tableSearch">
- id="exportCheckList-form"
+ id="exportSalesList-form"
:model="queryParam"
@@ -19,7 +19,7 @@
@load="loadWareHouse"
- id="exportCheckList-warehouseSn"
+ id="exportSalesList-warehouseSn"
placeholder="请选择仓库"
@change="getList"
<a-form-model-item label="选择时间范围" prop="dateArr">
- <a-select id="exportCheckList-print" v-model="queryParam.dateArr" placeholder="请选择时间范围" allowClear>
+ <a-select id="exportSalesList-dateArr" v-model="queryParam.dateArr" placeholder="请选择时间范围" allowClear>
<a-select-option v-for="item in checkList" :value="item" :key="item">
<span>{{ item }}</span>
+ id="exportSalesList-export">导出</a-button>
+ <a-button @click="pageInit" style="margin-left: 15px" id="exportSalesList-reset">重置</a-button>
@@ -55,11 +55,13 @@
+import warehouse from '@/views/common/chooseWarehouse.js'
import { checkWarehouseExcelList } from '@/api/checkWarehouse'
import { exportSalesOutProduct } from '@/api/stockOut.js'
-import warehouse from '@/views/common/chooseWarehouse.js'
name: 'ExportSalesList',
@@ -67,28 +69,29 @@ export default {
- dateArr: undefined,
+ labelCol: { span: 8 }, // form表单label横向距离
+ wrapperCol: { span: 16 }, // form表单行缩进距离
+ dateArr: undefined, // 时间范围
+ warehouseSn: undefined// 仓库
- 'dateArr': [{ required: true, message: '请选择时间范围', trigger: 'change' }],
+ dateArr: [{ required: true, message: '请选择时间范围', trigger: 'change' }],
+ checkList: []// 时间范围数据
+ // 获取时间范围数据
this.queryParam.dateArr = undefined
const arr = res.data.reverse()
for (let i = arr.length - 1; i > 0; i--) {
@@ -118,15 +121,17 @@ export default {
+ // 选择仓库 change
@@ -152,7 +157,7 @@ export default {
- .exportCheckList-wrap{
+ .exportSalesList-wrap{
height: 99%;
.form-model-con{
margin-top: 50px;
- class="businessOwnerSettings-modal"
+ class="businessOwnerSettings-add-modal"
:title="itemId ?'编辑人员':'新增人员'"
@@ -13,23 +13,24 @@
:label-col="labelCol"
+ id="businessOwnerSettings-add-form"
:wrapper-col="wrapperCol"
<a-form-model-item label="人员名称" prop="userSn">
- <userName ref="userName" id="businessOwnerSettings-userSn" @change="userChange"></userName>
+ <userName ref="userName" id="businessOwnerSettings-add-userSn" @change="userChange"></userName>
<a-form-model-item label="人员类型" prop="bizUserType">
v-model="form.bizUserType"
ref="printStatus"
- id="businessOwnerSettings-printStatus"
+ id="businessOwnerSettings-add-printStatus"
code="BIZ_USER_TYPE"
placeholder="请选择人员类型"
<a-form-model-item label="管辖经销商" prop="allDealerFlag">
- <a-radio-group v-model="form.allDealerFlag">
+ <a-radio-group v-model="form.allDealerFlag" id="businessOwnerSettings-add-allDealerFlag">
<a-radio value="1">
全部经销商
@@ -39,7 +40,7 @@
<a-form-model-item label="管辖品类" prop="allProductFlag">
- <a-radio-group v-model="form.allProductFlag">
+ <a-radio-group v-model="form.allProductFlag" id="businessOwnerSettings-add-allProductFlag">
全部品类
@@ -50,7 +51,7 @@
<!-- 供应商 -->
<a-form-model-item label="供应商" prop="allSupplierFlag" v-if="form.bizUserType == 'cg'">
- <a-radio-group v-model="form.allSupplierFlag">
+ <a-radio-group v-model="form.allSupplierFlag" id="businessOwnerSettings-add-allSupplierFlag">
全部供应商
@@ -61,11 +62,11 @@
<!-- 人员类型为仓库管理员时 显示管辖仓库 -->
<a-form-model-item label="管辖仓库" prop="bizUserScopeList" v-if="form.bizUserType == 'cg'">
- <chooseWarehouse ref="warehouse" modeType="multiple" :value="warehouseList" @change="handleWarehouse"></chooseWarehouse>
+ <chooseWarehouse ref="warehouse" id="businessOwnerSettings-add-bizUserType" modeType="multiple" :value="warehouseList" @change="handleWarehouse"></chooseWarehouse>
<div style="display: flex;justify-content: center;padding: 30px 0;">
- <a-button @click="isShow=false">取消</a-button>
- <a-button style="margin-left: 15px;" type="primary" @click="handleSave">{{ itemId?'保存':'确定' }}</a-button>
+ <a-button id="businessOwnerSettings-close-btn" @click="isShow=false">取消</a-button>
+ <a-button id="businessOwnerSettings-save-btn" style="margin-left: 15px;" type="primary" @click="handleSave">{{ itemId?'保存':'确定' }}</a-button>
@@ -73,13 +74,14 @@
import userName from '@/views/common/userName'
import chooseWarehouse from '@/views/common/chooseWarehouse'
import { bizuserSave } from '@/api/bizuser.js'
- name: 'ProductInfoDetailModal',
+ name: 'BusinessOwnerSettings',
components: { VSelect, userName, chooseWarehouse },
openModal: { // 弹框显示状态
@@ -96,17 +98,19 @@ export default {
- userSn: '',
+ userSn: '', // 人员名称
bizUserType: undefined, // 人员类型
- allDealerFlag: undefined,
- allProductFlag: undefined,
- bizUserScopeList: [],
- allSupplierFlag: undefined
+ allDealerFlag: undefined, // 管辖经销商
+ allProductFlag: undefined, // 管辖产品
+ bizUserScopeList: [], // 管辖仓库
+ allSupplierFlag: undefined// 供应商
- warehouseList: [],
- user_name: '',
+ warehouseList: [], // 管辖仓库
+ user_name: '', // 用户名称
+ // 表单label布局
labelCol: { span: 5 },
wrapperCol: { span: 16 },
+ // 验证表单规则
userSn: [{ required: true, message: '请输入人员名称', trigger: 'change' }],
bizUserType: [{ required: true, message: '请选择人员类型', trigger: 'change' }],
@@ -118,6 +122,7 @@ export default {
+ // 保存
@@ -144,6 +149,7 @@ export default {
+ // 管辖仓库 change
handleWarehouse (val) {
this.warehouseList = val
const arr = []
@@ -155,6 +161,7 @@ export default {
this.form.bizUserScopeList = arr
resetSearchForm () {
this.user_name = ''
if (this.form.bizUserType && this.form.bizUserType == 'cg') {
@@ -165,9 +172,11 @@ export default {
this.$refs.userName.resetForm()
+ // 人员名称
userChange (val) {
this.form.userSn = val.key
+ // 获取编辑回显数据
getEditInfo (obj) {
this.$refs.userName.setDufaultVal(obj.userName)
@@ -2,8 +2,9 @@
<div class="categorySet-wrap">
<a-card size="small" :bordered="false" class="categorySet-cont">
<div class="table-operator" ref="categorySetAddBtn">
- <a-button type="primary" @click="addCategory" :disabled="disabled">新增管辖品类</a-button>
+ <a-button type="primary" id="categorySet-add" @click="addCategory" :disabled="disabled">新增管辖品类</a-button>
class="sTable fixPagination"
@@ -22,19 +23,25 @@
<div style="max-height:64px;overflow-y:scroll;">
<a-row v-if="record.productTypeList && record.productTypeList.length>0">
<a-col :span="20">
- <a-tag style="margin-bottom:10px;" closable @close.prevent="delLabel(record.bizUserScopeSn,con,'typeList')" v-for="(con,i) in record.productTypeList" :key="i">
+ <a-tag
+ :id="'categorySet-chooseType'+record.bizUserScopeSn"
+ style="margin-bottom:10px;"
+ closable
+ @close.prevent="delLabel(record.bizUserScopeSn,con,'typeList')"
+ v-for="(con,i) in record.productTypeList"
+ :key="i">
{{ con.dataName }}
</a-tag>
<a-col :span="4" style="text-align:right;">
- <a-tag style="background: #fff; borderStyle: dashed;" @click="addClassifyTag(index, record)" color="blue">
+ <a-tag style="background: #fff; borderStyle: dashed;" :id="'categorySet-chooseType-btn'+record.bizUserScopeSn" @click="addClassifyTag(index, record)" color="blue">
<a-icon type="plus" /> 选择
<a-row v-else>
<a-col :span="24">
+ <a-tag style="background: #fff; borderStyle: dashed;" :id="'categorySet-chooseType-btn1'+record.bizUserScopeSn" @click="addClassifyTag(index, record)" color="blue">
@@ -46,19 +53,25 @@
<a-row v-if="record.productBrandList && record.productBrandList.length>0">
- <a-tag style="margin-bottom:10px;" closable @close.prevent="delLabel(record.bizUserScopeSn,item,'brandList')" v-for="(item,j) in record.productBrandList" :key="j">
+ :id="'categorySet-chooseBrand'+record.bizUserScopeSn"
+ @close.prevent="delLabel(record.bizUserScopeSn,item,'brandList')"
+ v-for="(item,j) in record.productBrandList"
+ :key="j">
{{ item.dataName }}
- <a-tag style="background: #fff; borderStyle: dashed;" @click="addBrandTag(index, record)" color="blue">
+ <a-tag style="background: #fff; borderStyle: dashed;" :id="'categorySet-chooseBrand-btn'+record.bizUserScopeSn" @click="addBrandTag(index, record)" color="blue">
+ <a-tag style="background: #fff; borderStyle: dashed;" :id="'categorySet-chooseBrand-btn1'+record.bizUserScopeSn" @click="addBrandTag(index, record)" color="blue">
@@ -70,6 +83,7 @@
+ :id="'categorySet-delete-btn'+record.bizUserScopeSn"
删除
@@ -87,9 +101,11 @@
+import { STable } from '@/components'
import ChooseBrandModal from '@/views/common/chooseBrandModal.vue'
import ChooseTypeModal from '@/views/common/chooseTypeModal.vue'
-import { STable } from '@/components'
import { getNewScopeSn, queryProductScopePage, saveProductBrandList, saveProductTypeList, bizuserScopeDelete, deleteProductBrand, deleteProductType } from '@/api/bizuser'
name: 'CategorySet',
@@ -104,24 +120,25 @@ export default {
{ title: '分类', dataIndex: 'no', width: '42%', align: 'center', scopedSlots: { customRender: 'classify' } },
{ title: '品牌', dataIndex: 'name', width: '42%', align: 'center', scopedSlots: { customRender: 'brand' } },
{ title: '操作', scopedSlots: { customRender: 'action' }, width: '16%', align: 'center' }
+ // 查询参数
hasDetail: 1
+ dataSource: [], // 列表数据
openModal: false, // 新增编辑产品品牌 弹框
itemSn: '', // 当前sn
nowData: null, // 当前记录数据
- openBrandModal: false,
- openTypeModal: false,
- chooseBrand: [],
- chooseType: [],
+ openBrandModal: false, // 打开品牌弹窗
+ openTypeModal: false, // 打开分类弹窗
+ chooseBrand: [], // 选择品牌数据
+ chooseType: [], // 选择分类数据
chooseObj: null, // 选择品牌 内容
@@ -129,11 +146,12 @@ export default {
this.queryParam.userSn = this.$route.query.sn
this.queryParam.bizUserSn = this.bizUserSn
return queryProductScopePage(Object.assign(parameter, this.queryParam)).then(res => {
+ // 计算列表序号
this.total = data.count || 0
@@ -203,6 +221,7 @@ export default {
this.chooseObj = row
this.openTypeModal = true
+ // 打开分类弹窗
handleClassifyModal (con) {
const chooseList = con
this.openTypeModal = false
@@ -230,6 +249,7 @@ export default {
this.chooseBrand = obj
this.saveChangeData('BRAND')
+ // 保存时重组数据
saveChangeData (type) {
if (type == 'BRAND') { // 选择品牌
@@ -254,6 +274,7 @@ export default {
save (list, type) {
const ajaxdata = { userSn: this.$route.query.sn, bizUserScopeSn: this.chooseObj.bizUserScopeSn, bizUserSn: this.bizUserSn }
if (type == 'BRAND') {
@@ -291,6 +312,7 @@ export default {
@@ -298,6 +320,7 @@ export default {
const addBtnHeight = this.$refs.categorySetAddBtn.offsetHeight
this.tableHeight = window.innerHeight - addBtnHeight - 325
@@ -316,6 +339,6 @@ export default {
.categorySet-wrap{
</style>
@@ -10,12 +10,13 @@
<div class="areaSetModal">
<div :style="{ height: tableHeight+84.5+'px' }">
- <a-checkbox :checked="checkAll" @change="onCheckAllChange">全选</a-checkbox>
+ <a-checkbox id="chooseAreaModal-checkAll-btn" :checked="checkAll" @change="onCheckAllChange">全选</a-checkbox>
<div :style="{ height: tableHeight+30+'px' }" style="overflow-y:scroll;">
<a-tree
v-model="checkedKeys"
checkable
+ id="chooseAreaModal-tree"
:auto-expand-parent="autoExpandParent"
:tree-data="subregionData"
:checkStrictly="true"
@@ -27,8 +28,8 @@
<div class="areaFooter">
- <a-button style="margin-right: 15px" @click="visible = false" :disabled="disabled" id="areaSet-reset">取消</a-button>
- <a-button type="primary" @click="save" :disabled="disabled" id="areaSet-refresh">保存</a-button>
+ <a-button style="margin-right: 15px" @click="visible = false" :disabled="disabled" id="chooseAreaModal-close">取消</a-button>
+ <a-button type="primary" @click="save" :disabled="disabled" id="chooseAreaModal-save">保存</a-button>
</a-drawer>
@@ -36,6 +37,7 @@
import { subareaQueryAll } from '@/api/subarea'
@@ -65,16 +67,18 @@ export default {
- autoExpandParent: true,
+ autoExpandParent: true, // 是否展开子级数据
checkAll: false, // 全选
+ // 选中数据
checkedKeys: {
- checked: [], halfChecked: []
+ checked: [],
+ halfChecked: []
- subregionData: null,
- visible: false,
- parentArr: []
+ subregionData: null, // 树数据
+ visible: false, // 是否打开弹窗
+ disabled: false, // 取消、保存按钮禁用状态
+ parentArr: []// 父级展开数据
@@ -84,6 +88,7 @@ export default {
this.parentArr = expandedKeys
this.autoExpandParent = false
+ // 获取区域数据
getArea () {
subareaQueryAll().then(res => {
@@ -106,7 +111,7 @@ export default {
save () {
this.$emit('ok', this.checkedKeys)
@@ -133,9 +138,11 @@ export default {
+ // 选中 check
onCheck (checkedKeys) {
this.checkedKeys = checkedKeys
@@ -143,6 +150,7 @@ export default {
this.getArea()
this.tableHeight = window.innerHeight - 325
@@ -15,9 +15,9 @@
<a-col :md="8" :sm="24">
- <a-form-model-item label="商户级别" prop="dealerLevel">
- <v-select code="DEALER_LEVEL" id="ucModal-dealerLevel" v-model="queryParam.dealer.dealerLevel" allowClear placeholder="请选择商户级别"></v-select>
- </a-form-model-item>
+ <a-form-item label="商户级别" prop="dealerLevel">
+ <v-select code="DEALER_LEVEL" id="chooseDealer-dealerLevel" v-model="queryParam.dealer.dealerLevel" allowClear placeholder="请选择商户级别"></v-select>
<a-col :md="8" :sm="24" v-if="pageType!='viewDealers'">
<a-form-item label="所在区域/分区">
@@ -27,13 +27,13 @@
<a-form-item label="审核状态">
- <v-select code="AUDIT_STATE" id="viewDealers-auditState" v-model="queryParam.auditState" allowClear placeholder="请选择审核状态"></v-select>
+ <v-select code="AUDIT_STATE" id="chooseDealer-auditState" v-model="queryParam.auditState" allowClear placeholder="请选择审核状态"></v-select>
- <a-form-model-item label="地区">
- <AreaList id="viewDealers-areaList" changeOnSelect ref="areaList" @change="areaChange" defValKey="id"></AreaList>
+ <a-form-item label="地区">
+ <AreaList id="chooseDealer-areaList" changeOnSelect ref="areaList" @change="areaChange" defValKey="id"></AreaList>
<a-col :md="pageType!='viewDealers'?8:6" :sm="24" style="margin-bottom: 10px;">
@@ -42,14 +42,15 @@
- <!-- 列表 -->
<div style="margin-bottom: 10px">
- <a-button type="primary" ghost :loading="loading" @click="handleBatchAudit">批量添加</a-button>
+ <a-button type="primary" id="chooseDealer-add" ghost :loading="loading" @click="handleBatchAudit">批量添加</a-button>
<span style="margin-left: 5px">
<template v-if="selectCount"> {{ `已选 ${selectCount} 项` }} </template>
+ <!-- 列表 -->
class="sTable"
ref="table"
@@ -75,7 +76,7 @@
v-if="record.subareaAreaSn != parentData.subareaAreaSn"
- id="marketingDivisionSetNew-del-btn">添加</a-button>
+ :id="'chooseDealer-add-btn'+record.dealerSn">添加</a-button>
<span style="color:#666" v-else>已添加</span>
@@ -84,11 +85,13 @@
-import { bizuserScopeQueryDealer } from '@/api/bizuser'
import dealerType from '@/views/common/dealerType.js'
+import { bizuserScopeQueryDealer } from '@/api/bizuser'
name: 'ChooseDealer',
@@ -108,36 +111,39 @@ export default {
- dealerType: [],
+ loading: false, // 批量添加loading
+ dealerType: [], // 商户类型
dealer: {
- nameLike: '',
+ nameLike: '', // 经销商名称/别名
dealerType1: undefined, // 商户类型
dealerType2: undefined, // 商户类型
dealerLevel: null
- auditState: undefined,
+ auditState: undefined, // 审核状态
+ provinceSn: undefined, // 省sn
- pageFlag: false,
- chooseInfo: [],
- loading: false, // 批量添加loading
+ userSn: '', // 用户sn
+ pageFlag: false, // 是否显示选择框
+ chooseInfo: [], // 选中数据
this.queryParam.userSn = this.userSn
return bizuserScopeQueryDealer(Object.assign(parameter, this.queryParam)).then(res => {
const no = 0
const chooseData = []
@@ -163,7 +169,7 @@ export default {
+ rowSelectionInfo: null// 选中数据
@@ -185,6 +191,7 @@ export default {
+ // 计算选中数据条数
selectCount () {
return this.rowSelectionInfo && this.rowSelectionInfo.selectedRowKeys.length
@@ -194,19 +201,23 @@ export default {
rowSelectionFun (obj) {
this.rowSelectionInfo = obj || null
+ // 商户类型 change
getDealerType (v, o) {
this.queryParam.dealer.dealerType1 = v[0]
this.queryParam.dealer.dealerType2 = v[1]
+ // 地区 change
areaChange (val) {
this.queryParam.provinceSn = val[0] ? val[0] : ''
this.queryParam.citySn = val[1] ? val[1] : ''
this.queryParam.districtSn = val[2] ? val[2] : ''
+ // 查询
searchForm (flag) {
this.$refs.table.refresh(flag)
this.spinning = false
this.queryParam.subareaSn = val[0] ? val[0] : undefined
this.queryParam.subareaAreaSn = val[1] ? val[1] : undefined
@@ -219,7 +230,7 @@ export default {
nameLike: '',
- dealerLevel: null
+ dealerLevel: null// 商户级别
auditState: undefined,
provinceSn: undefined,
@@ -237,6 +248,7 @@ export default {
this.pageFlag = false
+ // 清除表格内容
clearTable () {
this.rowSelectionInfo = null
@@ -252,6 +264,7 @@ export default {
this.$emit('plAdd', dealerSnList)
+ // 添加
handleAdd (row) {
if (row.subareaArea) {
@@ -269,6 +282,7 @@ export default {
this.$emit('add', row)
pageInit (data) {
@@ -278,6 +292,7 @@ export default {
this.userSn = data.sn
+ // 计算表格数据
@@ -2,7 +2,7 @@
<div ref="tableSearch" class="table-page-search-wrapper newTableSearchName">
+ <a-form layout="inline" id="chooseSupplier-form" @keyup.enter.native="$refs.table.refresh(true)">
<a-form-item label="供应商名称">
@@ -15,14 +15,15 @@
+ <a-button type="primary" ghost :loading="loading" id="chooseSupplier-add" @click="handleBatchAudit">批量添加</a-button>
@@ -43,10 +44,12 @@
-import { querySupplierPage } from '@/api/bizuser'
+import { querySupplierPage } from '@/api/bizuser'
name: 'ChooseSupplier',
@@ -54,26 +57,29 @@ export default {
supplier: {
- supplierName: ''
+ supplierName: ''// 供应商名称
return querySupplierPage(Object.assign(parameter, this.queryParam)).then(res => {
@@ -96,7 +102,7 @@ export default {
+ rowSelectionInfo: null// 列表选择数据
@@ -109,6 +115,7 @@ export default {
+ // 计算列表选中数据条数
@@ -118,15 +125,18 @@ export default {
@@ -142,6 +152,7 @@ export default {
@@ -157,6 +168,7 @@ export default {
this.$emit('plAdd', supplierSnList)
@@ -174,6 +186,7 @@ export default {
@@ -184,6 +197,7 @@ export default {
this.tableHeight = window.innerHeight - tableSearchH - 300
@@ -3,10 +3,10 @@
+ <a-form layout="inline" id="businessOwnerSettings-form" @keyup.enter.native="$refs.table.refresh(true)">
- <a-form-model-item label="人员类型">
+ <a-form-item label="人员类型">
v-model="queryParam.bizUserType"
<a-form-item label="人员姓名">
@@ -29,6 +29,7 @@
<a-card size="small" :bordered="false" class="dealerZoneSearch-wrap">
@@ -64,9 +65,15 @@
- <a-button size="small" type="link" class="button-warning" v-if="record.allDealerFlag!=1 || record.allProductFlag!=1 ||record.allSupplierFlag&&record.allSupplierFlag!=1" @click="handleSetCategory(record)">设置管辖范围</a-button>
- <a-button size="small" type="link" class="button-info" @click="handleEdit(record)">编辑</a-button>
- <a-button size="small" type="link" class="button-error" @click="handleDelete(record)">删除</a-button>
+ :id="'businessOwnerSettings-set-btn'+record.id"
+ v-if="record.allDealerFlag!=1 || record.allProductFlag!=1 ||record.allSupplierFlag&&record.allSupplierFlag!=1"
+ @click="handleSetCategory(record)">设置管辖范围</a-button>
+ <a-button size="small" type="link" :id="'businessOwnerSettings-edit-btn'+record.id" class="button-info" @click="handleEdit(record)">编辑</a-button>
+ <a-button size="small" type="link" :id="'businessOwnerSettings-del-btn'+record.id" class="button-error" @click="handleDelete(record)">删除</a-button>
@@ -78,9 +85,11 @@
-import { queryPage, bizuserDelete } from '@/api/bizuser'
import addModal from './addModal'
+import { queryPage, bizuserDelete } from '@/api/bizuser'
name: 'BusinessOwnerSettings',
@@ -89,10 +98,11 @@ export default {
- bizUserType: '',
- userName: undefined
+ bizUserType: '', // 人员类型
+ userName: undefined// 人员姓名
@@ -108,9 +118,11 @@ export default {
return queryPage(Object.assign(parameter, this.queryParam)).then(res => {
@@ -122,13 +134,11 @@ export default {
openAddModal: false, // 编辑 弹框
- itemId: ''
+ itemId: ''// 当前id
- userChange (val) {
- this.queryParam.userSn = val.key
+ // 设置管辖范围
handleSetCategory (row) {
this.$router.push({ name: 'categorySet', query: { sn: row.userSn, id: row.id } })
@@ -181,6 +191,7 @@ export default {
this.itemId = ''
this.openAddModal = false
@@ -188,6 +199,7 @@ export default {
@@ -12,31 +12,32 @@
- <a-tabs v-model="activeKeyVal" @change="handleTabs">
+ <a-tabs v-model="activeKeyVal" @change="handleTabs" id="settingsIndex-tabs">
<a-tab-pane key="1" tab="设置管辖区域" v-if="infoObj.allDealerFlag && infoObj.allDealerFlag!=1">
<div class="areaSet-wrap">
<div class="table-page-search-wrapper newTableSearchName" >
+ <a-form layout="inline" id="settingsIndex-form" @keyup.enter.native="$refs.table.refresh(true)">
- <a-form-model-item label="所在区域/分区">
- <subarea id="chooseDealer-subarea" ref="subarea" @change="subareaChange"></subarea>
+ <a-form-item label="所在区域/分区">
+ <subarea id="settingsIndex-subarea" ref="subarea" @change="subareaChange"></subarea>
<a-form-item label="经销商名称">
- <a-input id="areaSet-dealerName" v-model.trim="queryParam.dealerName" allowClear placeholder="请输入经销商名称"/>
+ <a-input id="settingsIndex-dealerName" v-model.trim="queryParam.dealerName" allowClear placeholder="请输入经销商名称"/>
- <a-button type="primary" @click="$refs.table.refresh(true)" :disabled="disabled" id="areaSet-refresh">查询</a-button>
- <a-button style="margin-left: 5px" @click="resetSearchForm" :disabled="disabled" id="areaSet-reset">重置</a-button>
+ <a-button type="primary" @click="$refs.table.refresh(true)" :disabled="disabled" id="settingsIndex-refresh">查询</a-button>
+ <a-button style="margin-left: 5px" @click="resetSearchForm" :disabled="disabled" id="settingsIndex-reset">重置</a-button>
<div class="areaSet-btnGroup" style="margin-bottom:10px;">
- <a-button type="primary" class="button-info" @click="openAreaModal">选择区域</a-button>
- <a-button type="primary" class="button-error" @click="openDealerModal">选择经销商</a-button>
+ <a-button type="primary" id="settingsIndex-addArea" class="button-info" @click="openAreaModal">选择区域</a-button>
+ <a-button type="primary" id="settingsIndex-addDealer" class="button-error" @click="openDealerModal">选择经销商</a-button>
@@ -45,8 +46,7 @@
- :rowKey="(record) => record.no"
- rowKeyName="no"
:defaultLoadData="false"
@@ -59,10 +59,8 @@
- @click="handleDel(record)"
- >
- 删除
- </a-button>
+ :id="'settingsIndex-del-btn'+record.id"
+ @click="handleDel(record)">删除</a-button>
@@ -103,32 +101,36 @@
-import { commonMixin } from '@/utils/mixin'
import categorySet from './categorySet'
import supplierSet from './supplierSet'
import chooseAreaModal from './chooseAreaModal'
import chooseDealer from './chooseDealer.vue'
-import { queryDealerScopePage, bizuserScopeDelete, findById, queryAreaScope, queryDealerScope, saveAreaScope, saveDealerScope } from '@/api/bizuser'
-import subarea from '@/views/common/subarea.js'
+import subarea from '@/views/common/subarea.js'
+import { queryDealerScopePage, bizuserScopeDelete, findById, queryAreaScope, queryDealerScope, saveAreaScope, saveDealerScope } from '@/api/bizuser'
name: 'SettingsIndex',
components: { STable, categorySet, chooseAreaModal, chooseDealer, subarea, supplierSet },
- openChooseArea: false,
- openChooseDealer: false,
+ openChooseArea: false, // 打开选择区域弹窗
+ openChooseDealer: false, // 打开选择经销商弹窗
hasDetail: 0,
- bizType: undefined,
- bizSn: undefined,
- dealerName: ''
+ bizType: undefined, // 区域分区区别
+ bizSn: undefined, // 当前行sn
+ dealerName: ''// 经销商
- activeKeyVal: '1',
- infoObj: {},
+ activeKeyVal: '1', // 选项卡值 1设置管辖区域 2设置管辖品类 3设置供应商
+ infoObj: {}, // 基本信息数据
newChooseData: {// 区域分区回显
checked: [],
halfChecked: []
@@ -140,17 +142,18 @@ export default {
{ title: '分区', dataIndex: 'subareaAreaName', width: '10%', align: 'center', customRender: function (text) { return text || '--' } },
{ title: '经销商', dataIndex: 'dealerName', width: '16%', align: 'center', customRender: function (text) { return text || '--' }, ellipsis: true },
{ title: '操作', scopedSlots: { customRender: 'action' }, width: '8%', align: 'center' }
chooseInfo: [], // 回显选中经销商信息
return queryDealerScopePage(Object.assign(parameter, this.queryParam)).then(res => {
@@ -210,6 +213,7 @@ export default {
this.saveChooseArea(newData)
+ // 保存区域分区数据
saveChooseArea (list) {
const newAjaxData = {}
@@ -222,6 +226,7 @@ export default {
+ // tabs 选择
handleTabs (val) {
this.activeKeyVal = val
if (val == 2) {
@@ -243,6 +248,7 @@ export default {
this.queryParam.bizType = undefined
this.queryParam = {
bizSn: undefined,
@@ -337,6 +343,7 @@ export default {
this.$router.push({ name: 'businessOwnerSettings' })
@@ -344,6 +351,7 @@ export default {
_this.getBaseInfo()
+ // 计算列表高度
const headHeight = this.$refs.headerBar.offsetHeight
this.tableHeight = window.innerHeight - headHeight - 340
@@ -1,47 +1,49 @@
- <div class="categorySet-wrap">
+ <div class="supplierSet-wrap">
- <div class="areaSet-wrap">
- <div class="table-page-search-wrapper flex-center" style="width:100%;justify-content: space-between;margin-bottom:10px">
- <div class="areaSet-btnGroup">
- <a-button type="primary" @click="openSupplierModal">新增</a-button>
- <div>
- <a-input style="width:300px;" id="areaSet-dealerName" v-model.trim="queryParam.supplierName" allowClear placeholder="请输入供应商名称"/>
- <a-button style="margin-left: 15px" type="primary" @click="$refs.table.refresh(true)" :disabled="disabled" id="areaSet-refresh">查询</a-button>
- </a-form>
- <a-spin :spinning="spinning" tip="Loading...">
- :data="loadData"
- :defaultLoadData="false"
- :style="{ height: tableHeight + 70 +'px' }"
- :scroll="{ y: tableHeight }"
- bordered>
- <!-- 操作 -->
- <template slot="action" slot-scope="text, record">
- <a-button
- type="link"
- class="button-error"
- </template>
- </s-table>
- </a-spin>
+ <div class="supplierSetCon-wrap">
+ <div class="table-page-search-wrapper flex-center" style="width:100%;justify-content: space-between;margin-bottom:10px">
+ <div class="supplierSet-btnGroup">
+ <a-button type="primary" id="supplierSet-add" @click="openSupplierModal">新增</a-button>
+ <div>
+ <a-form layout="inline" id="supplierSet-form" @keyup.enter.native="$refs.table.refresh(true)">
+ <a-input style="width:300px;" id="supplierSet-dealerName" v-model.trim="queryParam.supplierName" allowClear placeholder="请输入供应商名称"/>
+ <a-button style="margin-left: 15px" type="primary" @click="$refs.table.refresh(true)" :disabled="disabled" id="supplierSet-refresh">查询</a-button>
+ <a-button style="margin-left: 5px" @click="resetSearchForm" :disabled="disabled" id="supplierSet-reset">重置</a-button>
+ </a-form>
+ <a-spin :spinning="spinning" tip="Loading...">
+ :style="{ height: tableHeight + 70 +'px' }"
+ <!-- 操作 -->
+ <template slot="action" slot-scope="text, record">
+ :id="'supplierSet-del-btn'+record.id"
+ class="button-error"
+ @click="handleDel(record)"
+ >
+ 删除
+ </a-button>
+ </template>
+ </s-table>
+ </a-spin>
<!-- 选择供应商 -->
<a-drawer
@@ -60,15 +62,16 @@
-import chooseSupplier from './chooseSupplier.vue'
-import ChooseTypeModal from '@/views/common/chooseTypeModal.vue'
+import chooseSupplier from './chooseSupplier.vue'
import { querySupplierScopePage, querySupplierScope, saveSupplierList, bizuserScopeDelete } from '@/api/bizuser'
- name: 'CategorySet',
+ name: 'SupplierSet',
- components: { chooseSupplier, ChooseTypeModal, STable },
+ components: { chooseSupplier, STable },
bizUserSn: {
@@ -78,7 +81,7 @@ export default {
@@ -88,29 +91,23 @@ export default {
// { title: '联系手机', dataIndex: 'subareaAreaName', width: '10%', align: 'center', customRender: function (text) { return text || '--' } },
- openChooseSupplier: false,
+ openChooseSupplier: false, // 选择供应商弹窗
- openModal: false, // 新增编辑产品品牌 弹框
- itemSn: '', // 当前sn
- nowData: null, // 当前记录数据
- openChooseDealer: true,
- chooseObj: null, // 选择品牌 内容
- // this.spinning = true
- this.queryParam.bizUserSn = this.bizUserSn
+ this.queryParam.bizUserSn = this.bizUserSn
return querySupplierScopePage(Object.assign(parameter, this.queryParam)).then(res => {
@@ -118,7 +115,7 @@ export default {
this.dataSource = data.list
this.disabled = false
- // this.spinning = false
@@ -153,6 +150,7 @@ export default {
obj.userSn = this.$route.query.sn
obj.bizUserSn = this.bizUserSn obj.bizType = 'supplier' obj.bizSn = con newData.push(obj) }) this.saveChooseDealer(newData)
+ // 保存所选供应商
saveChooseDealer (list) {
const ajaxData = {}
@@ -181,19 +179,22 @@ export default {
supplierName: ''
this.tableHeight = window.innerHeight - 345
@@ -210,7 +211,7 @@ export default {
- .categorySet-wrap{
+ .supplierSet-wrap{
@@ -22,6 +22,7 @@
import { dealerUserDetail } from '@/api/dealer'
name: 'DealerAccountDetailModal',
@@ -79,7 +79,9 @@
import custList from '@/views/common/custList.vue'
import { dealerUserSave, dealerUserDetail } from '@/api/dealer'
name: 'DealerAccountEditModal',
@@ -99,20 +101,23 @@ export default {
+ // 提交数据
- tenantSn: '',
- name: '',
- phone: '',
- loginName: '',
- password: '',
+ tenantSn: '', // 经销商sn
+ name: '', // 管理员姓名
+ phone: '', // 管理员手机
+ loginName: '', // 管理员账号
+ password: '', // 管理员密码
org: {
- childUserMaxNum: ''
+ childUserMaxNum: ''// 最大可开通用户数
tenantSn: [{ required: true, message: '请选择经销商', trigger: 'change' }],
name: [{ required: true, message: '请输入管理员姓名', trigger: 'blur' }],
@@ -151,6 +156,7 @@ export default {
+ // 经销商名称 change
this.form.tenantSn = val.key
@@ -197,6 +203,19 @@ export default {
+ this.$refs.ruleForm.resetFields()
+ this.form.tenantSn = ''
+ this.form.name = ''
+ this.form.phone = ''
+ this.form.loginName = ''
+ this.form.password = ''
+ this.form.org.childUserMaxNum = ''
+ if (this.itemId == '') {
+ this.$refs.custList.resetForm()
@@ -219,16 +238,7 @@ export default {
isShow (newValue, oldValue) {
- this.$refs.ruleForm.resetFields()
- this.form.tenantSn = ''
- this.form.name = ''
- this.form.phone = ''
- this.form.loginName = ''
- this.form.password = ''
- this.form.org.childUserMaxNum = ''
- if (this.itemId == '') {
- this.$refs.custList.resetForm()
itemId (newValue, oldValue) {
@@ -3,7 +3,7 @@
<a-card size="small" :bordered="false" class="dealerAccountList-wrap searchBoxNormal">
+ <a-form layout="inline" id="dealerAccountList-form" @keyup.enter.native="$refs.table.refresh(true)">
<!-- 账号状态 -->
<template slot="loginFlag" slot-scope="text, record">
<a-switch
- id="dealerAccountList-enable"
+ :id="'dealerAccountList-enable'+record.id"
v-if="$hasPermissions('B_dealerAccount_enable')"
checkedChildren="启用"
unCheckedChildren="禁用"
@@ -66,21 +66,21 @@
v-if="$hasPermissions('B_dealerAccount_edit')"
- id="dealerAccountList-edit-btn">编辑</a-button>
+ :id="'dealerAccountList-edit-btn'+record.id">编辑</a-button>
v-if="$hasPermissions('B_dealerAccount_detail')"
@click="handleDetail(record)"
- id="dealerAccountList-detail-btn">详情</a-button>
+ :id="'dealerAccountList-detail-btn'+record.id">详情</a-button>
v-if="$hasPermissions('B_dealerAccount_reset')"
@click="handleReset(record)"
- id="dealerAccountList-reset-btn">重置密码</a-button>
+ :id="'dealerAccountList-reset-btn'+record.id">重置密码</a-button>
<span v-if="!$hasPermissions('B_dealerAccount_edit') && !$hasPermissions('B_dealerAccount_detail') && !$hasPermissions('B_dealerAccount_reset')">--</span>
@@ -101,9 +101,11 @@
import dealerAccountEditModal from './editModal.vue'
import dealerAccountDetailModal from './detailModal.vue'
import { dealerUserList, dealerUserEnable, dealerUserResetP } from '@/api/dealer'
name: 'DealerAccountManagementList',
@@ -112,15 +114,15 @@ export default {
- name: ''
+ name: ''// 经销商名称
- loginFlag: undefined
+ loginFlag: undefined// 状态
{ title: '创建时间', dataIndex: 'createDate', width: '11%', align: 'center' },
@@ -139,6 +141,7 @@ export default {
@@ -153,8 +156,7 @@ export default {
openDetailModal: false, // 详情 弹框
itemId: '', // 当前id
- productBrandList: []
+ nowData: null // 当前记录数据
@@ -226,12 +228,14 @@ export default {
@@ -6,9 +6,9 @@
<a-form layout="inline" @keyup.enter.native="$refs.table.refresh(true)">
- <a-form-model-item label="所属区域/分区">
+ <a-form-item label="所属区域/分区">
<subarea id="dealerZoneSearch-subareaSn" ref="subarea" @change="subareaChange"></subarea>
<a-form-item label="经销商">
<a-col :md="7" :sm="24">
<a-form-item label="客服/区域负责人/销售总监">
- <a-input id="dealerZoneSearch-dealerName" v-model.trim="queryParam.bizUserName" allowClear placeholder="请输入客服/区域负责人/销售总监"/>
+ <a-input id="dealerZoneSearch-bizUserName" v-model.trim="queryParam.bizUserName" allowClear placeholder="请输入客服/区域负责人/销售总监"/>
<a-col :md="5" :sm="24">
@@ -43,8 +43,7 @@
:style="{ height: tableHeight+70+'px' }"
:pageSize="30"
@@ -52,7 +51,7 @@
<template slot="kf" slot-scope="text, record">
- <a-tooltip placement="top" v-if="record.userNameKfs">
+ <a-tooltip placement="top" :id="'dealerZoneSearch-userNameKfs'+record.id" v-if="record.userNameKfs">
<template slot="title">
{{ record.userNameKfs }}
@@ -61,7 +60,7 @@
<template slot="qyfzr" slot-scope="text, record">
- <a-tooltip placement="top" v-if="record.userNameQyfzrs">
+ <a-tooltip placement="top" :id="'dealerZoneSearch-userNameQyfzrs'+record.id" v-if="record.userNameQyfzrs">
{{ record.userNameQyfzrs }}
@@ -70,7 +69,7 @@
<template slot="xszj" slot-scope="text, record">
- <a-tooltip placement="top" v-if="record.userNameXszjs">
+ <a-tooltip placement="top" :id="'dealerZoneSearch-userNameXszjs'+record.id" v-if="record.userNameXszjs">
{{ record.userNameXszjs }}
@@ -86,11 +85,13 @@
+import { exportExcel } from '@/libs/JGPrint.js'
-import { exportExcel } from '@/libs/JGPrint.js'
-import { queryDealerWithBizuser, exportDealerWithBizuser } from '@/api/dealerRelation'
+import { queryDealerWithBizuser, exportDealerWithBizuser } from '@/api/dealerRelation'
name: 'DealerZoneSearch',
@@ -99,17 +100,18 @@ export default {
+ exportLoading: false, // 导出loading
- subareaAreaSn: undefined,
+ subareaAreaSn: undefined, // 分区
- dealerSn: '',
+ dealerSn: '', // 经销商sn
+ dealerName: ''// 经销商名称
- bizUserName: ''
+ bizUserName: ''// 客服/区域负责人/销售总监
- exportLoading: false, // 导出loading
{ title: '经销商名称', dataIndex: 'dealer.dealerName', width: '15%', align: 'center', customRender: function (text) { return text || '--' }, ellipsis: true },
{ title: '所属区域', dataIndex: 'subareaName', width: '10%', align: 'center', customRender: function (text) { return text || '--' } },
@@ -122,14 +124,11 @@ export default {
return queryDealerWithBizuser(Object.assign(parameter, this.queryParam)).then(res => {
- const no = 0
@@ -150,6 +149,7 @@ export default {
_this.exportLoading = false
@@ -170,6 +170,7 @@ export default {
this.queryParam.dealer.dealerSn = val.key
this.queryParam.dealer.dealerName = val.key ? (val.label.replace('\n', '')).trim() : ''
@@ -177,6 +178,7 @@ export default {
@@ -39,10 +39,10 @@
import { subareaSaveSubarea, subareaQuerySubarea } from '@/api/subarea'
name: 'MarketingDivisionSetEditModal',
- components: { },
@@ -54,21 +54,25 @@ export default {
return (this.itemId ? '编辑' : '新增') + '区域'
- isShow: this.openModal, // 是否打开弹框
+ isShow: this.openModal, // 是否打开弹框
subareaName: '' // 区域名称
subareaName: [
{ required: true, message: '请输入区域名称', trigger: 'blur' }
@@ -77,6 +81,7 @@ export default {
+ // 区域名称
let str = this.form.subareaName
@@ -84,10 +89,11 @@ export default {
this.form.subareaName = str
- getDetail(){
+ // 获取详情数据
+ getDetail () {
- subareaQuerySubarea({subareaSn: this.itemId}).then(res=>{
- if(res.status == 200){
+ subareaQuerySubarea({ subareaSn: this.itemId }).then(res => {
this.form.subareaName = res.data[0].subareaName
@@ -131,8 +137,8 @@ export default {
this.form.subareaName = ''
- if(this.itemId){
+ if (this.itemId) {
- class="marketingDivisionSetEdit-modal"
+ class="addZone-modal"
:title="modalTit"
@@ -13,6 +13,7 @@
:rules="zoneRules"
+ id="addZone-modal-form"
:label-col="formItemLayout.labelCol"
@@ -21,6 +22,7 @@
<a-form-model-item label="分区名称" prop="subareaAreaName">
+ id="addZone-modal-subareaAreaName"
v-model.trim="form.subareaAreaName"
@change="filterEmpty"
@@ -29,16 +31,16 @@
- <a-button id="marketingDivisionSetEdit-modal-back" @click="isShow = false" >取消</a-button>
- <a-button type="primary" style="margin-left: 15px;" id="marketingDivisionSetEdit-modal-save" @click="handleSave">保存</a-button>
+ <a-button id="addZone-modal-back" @click="isShow = false" >取消</a-button>
+ <a-button type="primary" style="margin-left: 15px;" id="addZone-modal-save" @click="handleSave">保存</a-button>
-import { subareaSaveSubareaArea, subareaQuerySubareaArea } from '@/api/subarea'
+import { subareaSaveSubareaArea } from '@/api/subarea'
- name: 'MarketingDivisionSetEditModal',
+ name: 'MarketingDivisionAddZoneModal',
components: { },
@@ -47,27 +49,31 @@ export default {
parentData: {
type: Object,
- default: function(){
+ default: function () {
return null
- return (this.parentData&&this.parentData.subareaAreaSn ? '编辑' : '新增') + '分区'
+ return (this.parentData && this.parentData.subareaAreaSn ? '编辑' : '新增') + '分区'
+ // 表单label设置
subareaAreaName: '' // 分区名称
zoneRules: {
subareaAreaName: [
{ required: true, message: '请输入分区名称', trigger: 'blur' }
@@ -76,6 +82,7 @@ export default {
+ // 分区名称过滤
let str = this.form.subareaAreaName
@@ -123,7 +130,7 @@ export default {
this.form.subareaAreaName = ''
if (this.parentData.subareaAreaSn) {
this.form.subareaAreaName = this.parentData.subareaAreaName
@@ -29,26 +29,26 @@
v-if="record.type && record.type == 'root'"
@click="addZone(record)"
- id="marketingDivisionSetNew-edit-btn">新增分区</a-button>
+ :id="'marketingDivisionSetNew-edit-btn'+record.id">新增分区</a-button>
@click="handleView(record)"
- id="marketingDivisionSetNew-edit-btn">查看经销商</a-button>
+ :id="'marketingDivisionSetNew-edit-btn'+record.id">查看经销商</a-button>
- id="marketingDivisionSetNew-edit-btn">编辑</a-button>
+ :id="'marketingDivisionSetNew-edit-btn'+record.id">编辑</a-button>
- id="marketingDivisionSetNew-del-btn">删除</a-button>
+ :id="'marketingDivisionSetNew-del-btn'+record.id">删除</a-button>
@@ -76,10 +76,12 @@
import addAreaModal from './addAreaModal.vue'
import addZoneModal from './addZoneModal.vue'
import viewDealers from './viewDealers.vue'
import { subareaQueryAll, deleteSubareaBySn, deleteSubareaAreaBySn } from '@/api/subarea'
name: 'MarketingDivisionSetNew',
@@ -88,10 +90,10 @@ export default {
- openAreaModal: false,
- openZoneModal: false,
- openDealerModal: false,
+ openAreaModal: false, // 打开区域弹窗
+ openZoneModal: false, // 打开分区弹窗
+ openDealerModal: false, // 打开经销商弹窗
{ title: '区域分区', scopedSlots: { customRender: 'titles' }, width: '70%', align: 'left' },
{ title: '操作', scopedSlots: { customRender: 'action' }, width: '30%', align: 'center' }
@@ -103,6 +105,7 @@ export default {
for (var i = 0; i < data.length; i++) {
data[i].no = no + i + 1
@@ -114,8 +117,8 @@ export default {
- itemId: null,
- parentData: null
+ itemId: null, // 营销分区id
+ parentData: null// 营销分区一行数据
@@ -170,12 +173,14 @@ export default {
this.parentData = row
this.openDealerModal = true
this.tableHeight = window.innerHeight - tableSearchH - 230
+ <a-form id="viewDealers-form" layout="inline" @keyup.enter.native="$refs.table.refresh(true)">
<a-form-item label="经销商名称/别名">
@@ -25,9 +25,9 @@
- <a-form-model-item label="商户级别">
+ <a-form-item label="商户级别">
<v-select code="DEALER_LEVEL" id="viewDealers-dealerLevel" v-model="queryParam.dealer.dealerLevel" allowClear placeholder="请选择商户级别"></v-select>
@@ -35,9 +35,9 @@
<AreaList id="viewDealers-areaList" changeOnSelect ref="areaList" @change="areaChange" defValKey="id"></AreaList>
<a-button type="primary" @click="searchForm" :disabled="disabled" id="viewDealers-refresh">查询</a-button>
@@ -46,19 +46,17 @@
<div style="margin-top:200px;" v-if="flag">
<a-empty
:image="simpleImage"
- :image-style="{
- height: '60px',
- }"
+ :image-style="{height: '60px'}">
<span slot="description"> 暂无数据 </span>
- <a-button type="primary" class="button-error" @click="openAddDealer=true"><a-icon type="plus" />立即绑定经销商</a-button>
+ <a-button type="primary" id="viewDealers-binding" class="button-error" @click="openAddDealer=true"><a-icon type="plus" />立即绑定经销商</a-button>
</a-empty>
<div class="tableCon" v-else>
- <div style="margin-bottom:10px;"><a-button type="primary" class="button-error" @click="openAddDealer=true">绑定经销商</a-button></div>
+ <div style="margin-bottom:10px;"><a-button type="primary" id="viewDealers-binding-btn" class="button-error" @click="openAddDealer=true">绑定经销商</a-button></div>
@@ -74,6 +72,7 @@
+ :id="'viewDealers-del-btn'+record.id"
>删除</a-button>
@@ -81,7 +80,6 @@
<!-- 绑定经销商 -->
title="绑定经销商"
@@ -107,11 +105,13 @@
+import { Empty } from 'ant-design-vue'
import chooseDealer from '@/views/common/chooseDealer.vue'
-import { Empty } from 'ant-design-vue'
import { queryPageAreaDealer, batchBindDealer, bindDealer, deleteBindDealer } from '@/api/subarea'
@@ -146,29 +146,27 @@ export default {
- simpleImage: Empty.PRESENTED_IMAGE_SIMPLE,
- visible: this.showModal,
- openAddDealer: false,
- flag: true,
+ simpleImage: Empty.PRESENTED_IMAGE_SIMPLE, // 数据为空显示图片
+ visible: this.showModal, // 是否显示弹窗
+ openAddDealer: false, // 打开绑定经销商弹窗
+ flag: true, // 是否显示绑定经销商按钮
- dealerLevel: null,
- districtSn: undefined
+ dealerLevel: null, // 商户级别
+ provinceSn: undefined, // 省
+ citySn: undefined, // 市
+ districtSn: undefined// 区
- addrProvinceList: [], // 省下拉
- addrCityList: [], // 市下拉
- addrDistrictList: [], // 区下拉
{ title: '经销商名称', dataIndex: 'dealer.dealerName', width: '25%', align: 'center', customRender: function (text) { return text || '--' } },
{ title: '商户别名', dataIndex: 'dealer.dealerAlias', width: '25%', align: 'center', customRender: function (text) { return text || '--' } },
@@ -184,6 +182,7 @@ export default {
@@ -201,6 +200,7 @@ export default {
@@ -213,7 +213,7 @@ export default {
this.$refs.chooseDealer.searchForm(false)
- this.$refs.chooseDealer.searchForm
+ this.$refs.chooseDealer.searchForm()
// 批量绑定
@@ -245,6 +245,7 @@ export default {
searchForm () {
if (this.flag) {
this.hasData()
@@ -252,6 +253,7 @@ export default {
resetData () {
this.dealerType = []
@@ -268,6 +270,7 @@ export default {
this.$refs.areaList.clearData()
+ // 重置查询
@@ -276,24 +279,28 @@ export default {
this.queryParam.dealer.provinceSn = val[0] ? val[0] : ''
this.queryParam.dealer.citySn = val[1] ? val[1] : ''
this.queryParam.dealer.districtSn = val[2] ? val[2] : ''
+ // 是否已有绑定数据
async hasData () {
const ret = await queryPageAreaDealer({ pageNo: 1, pageSize: 10, subareaSn: this.parentData.subareaSn, subareaAreaSn: this.parentData.subareaAreaSn }).then(res => res.data)
this.flag = ret.count == 0
this.flag = true
- // 判断是已绑定数据
+ // 判断是否已绑定数据
this.tableHeight = window.innerHeight - tableSearchH - 290
@@ -14,6 +14,7 @@
+ id="chooseType-form"
@@ -22,7 +23,7 @@
code="PRICE_LEVEL"
:notIn="notArr"
style="width: 70%;"
- id="productPriceLevel-level"
+ id="chooseType-level"
v-model="form.priceLevel"
:disabled="notArrFlag"
@@ -30,10 +31,10 @@
<a-form-model-item label="添加品类" prop="typeVal">
<span v-for="(con,i) in filterList" :key="con.id" >
- <a-checkbox :checked="con.checked" @change="e=>onChangeType(e.target.checked,i)" v-show="con.id!=4">
+ <a-checkbox id="chooseType-typeVal" :checked="con.checked" @change="e=>onChangeType(e.target.checked,i)" v-show="con.id!=4">
{{ con.name }}
- <a-checkbox :checked="con.checked" @change="e=>onChangeType(e.target.checked,i)" v-show="con.id==4&&disabledList.length==0">
+ <a-checkbox id="chooseType-typeVal1" :checked="con.checked" @change="e=>onChangeType(e.target.checked,i)" v-show="con.id==4&&disabledList.length==0">
<a-tooltip placement="rightTop">
<span>选择全品类后,未来新加入的品类也将自动默认为已选择状态,无需再次手动操作。</span>
@@ -48,6 +49,7 @@
v-model="checkedList"
+ id="chooseType-typeListBox"
:tree-data="treeData"
:replaceFields="replaceObj"
@@ -65,9 +67,10 @@
-import { dealerScopeCreate, queryWaitingData, dealerScopeQueryList } from '@/api/dealerScope'
-// import chooseTypeList from './chooseTypeList.vue'
+import { dealerScopeCreate, queryWaitingData, dealerScopeQueryList } from '@/api/dealerScope'
name: 'ChooseTypeModal',
components: { VSelect },
@@ -79,17 +82,18 @@ export default {
+ // label 标签布局
labelCol: { span: 3 },
priceLevel: undefined, // 价格级别
- typeVal: '0'
+ typeVal: '0'// 产品品类
- rules: {
+ rules: {// 表单验证规则
priceLevel: [
{ required: true, message: '请选择价格级别', trigger: 'change' }
@@ -98,21 +102,23 @@ export default {
notArr: [], // 特约经销商 禁用选择
- notArrFlag: false,
+ notArrFlag: false, // 价格级别禁用状态
treeData: [], // 品牌分类数据
- checkedList: [],
+ checkedList: [], // 已选产品分类
autoExpandParent: false, // 是否自动展开父节点
- replaceObj: {
+ replaceObj: {// 替换 treeNode 中 对应字段
children: 'sonList', title: 'name', key: 'sn'
disabledList: [], // 已选过禁用调的品类数据
+ // 选择数据方式
filterList: [{ id: '1', name: '全选', checked: false }, { id: '2', name: '自主品牌', checked: false }, { id: '3', name: '代理品牌', checked: false }, { id: '4', name: '全品类', checked: false }],
- allBarndSnList: [],
- ownBarndSnList: [],
- agentBarndSnList: []
+ allBarndSnList: [], // 全选分类数据
+ ownBarndSnList: [], // 自主品牌分类数据
+ agentBarndSnList: []// 代理品牌分类数据
+ // 添加品类
onChangeType (val, pos) {
this.filterList.map(item => item.checked = false)
this.filterList[pos].checked = val
@@ -166,6 +172,7 @@ export default {
_this.$message.warning('请添加品类!')
return
+ // 全选时,过滤有禁用的已选过得品牌
if (_this.disabledList.length > 0) {
checkedArr = checkedArr.filter(items => {
if (!_this.disabledList.includes(items)) return items
@@ -175,6 +182,7 @@ export default {
+ // 重组 后台所需要的数据结构
checkedArr.forEach(item => {
const newArr = item.split('_')
@@ -207,6 +215,7 @@ export default {
+ // 获取已选择的品类
getDataList () {
queryWaitingData({}).then(res => {
@@ -222,6 +231,7 @@ export default {
+ // 重组已选择数据,禁用已选择数据
async getDisabledList () {
const res = await dealerScopeQueryList({ dealerSn: this.$route.params.sn })
// 重组数据
@@ -233,6 +243,7 @@ export default {
this.getDataList()
+ // 遍历树,添加disabled属性
resetDisabledList (tree, arr) {
// 遍历树节点
function traverse (node) {
@@ -251,12 +262,14 @@ export default {
// 返回修改后的树
return tree
+ // 点击复选框触发事件
this.checkedList = checkedKeys.checked
this.filterList[0].checked = this.checkedList.length === this.allBarndSnList.length
this.filterList[1].checked = this.checkedList.length === this.ownBarndSnList.length
this.filterList[2].checked = this.checkedList.length === this.agentBarndSnList.length
+ // 重组选中数据
changeCheckedList () {
const ret = []
this.checkedList.forEach((item, index) => {
@@ -10,6 +10,7 @@
:width="960">
<div style="max-height: 400px;overflow: auto;" ref="merchantInfoDetail">
+ <!-- 基础信息 -->
<a-card title="基础信息" size="small" style="margin-bottom: 15px;">
<a-descriptions :column="2" bordered size="small">
<a-descriptions-item label="经销商名称">{{ form&&form.dealerName ? form.dealerName : '--' }}</a-descriptions-item>
@@ -99,7 +100,9 @@
import { dealerAudit, dealerDetailBySn, dealerFindUpdateInfoBySn } from '@/api/dealer'
name: 'MerchantInfoManagementModal',
@@ -109,20 +112,20 @@ export default {
- itemId: {
+ itemId: { // 单据id
- isAudit: Boolean
+ isAudit: Boolean // 是否显示审核按钮
- form: null,
- title: '',
- spinningAudit: false
+ form: null, // 详情内容数据
+ title: '', // 弹窗标题
+ visibleAudit: false, // 是否打开审核弹窗
+ spinningAudit: false// 审核按钮加载状态
@@ -147,25 +150,14 @@ export default {
// 详情编辑
getDetail () {
- if (this.isAudit) {
- dealerFindUpdateInfoBySn({ sn: this.itemId }).then(res => {
- this.form = res.data
- dealerDetailBySn({ sn: this.itemId }).then(res => {
+ // 根据是否审核状态选择不同的接口
+ const funs = this.isAudit ? dealerFindUpdateInfoBySn : dealerDetailBySn
+ funs({ sn: this.itemId }).then(res => {
+ this.form = res.data
@@ -118,7 +118,7 @@
<a-col :xs="24" :sm="24" :md="12" :lg="8" :xl="8">
<a-form-model-item label="默认仓库" prop="defaultWarehouseSn" >
- <chooseWarehouse ref="warehouse" v-model="form.defaultWarehouseSn"></chooseWarehouse>
+ <chooseWarehouse ref="warehouse" id="merchantInfoManagementEdit-warehouse" v-model="form.defaultWarehouseSn"></chooseWarehouse>
<!-- <a-col :xs="24" :sm="24" :md="12" :lg="8" :xl="8">
@@ -198,7 +198,7 @@
<a-form-model-item label="一般纳税人" prop="isTaxpayer">
- id="customerManagementEdit-isTaxpayer"
+ id="merchantInfoManagementEdit-isTaxpayer"
v-model="form.isTaxpayer"
placeholder="请选择是否"
@@ -420,12 +420,14 @@
-import { getArea } from '@/api/data'
+import moment from 'moment'
-import { dealerSave, dealerFindUpdateInfoBySn } from '@/api/dealer'
-import moment from 'moment'
+import { getArea } from '@/api/data'
+import { dealerSave, dealerFindUpdateInfoBySn } from '@/api/dealer'
name: 'MerchantInfoManagementEdit',
@@ -433,60 +435,58 @@ export default {
+ // form表单布局
- labelCol: {
- span: 8
- wrapperCol: {
- span: 16
+ labelCol: { span: 8 },
+ wrapperCol: { span: 16 }
- dealerName: '',
- dealerAlias: '',
- dealerType1: undefined,
- dealerType2: undefined,
- contact: '',
- contactMobile: '',
- menuMouldId: undefined,
- contactRole: '',
- dealerTelephone: '',
- busniessMode: '',
- busniessItmes: '',
- licenseName: '',
- busniessScope: '',
- buildDate: '',
- isTaxpayer: undefined,
- indentityCard: '',
- brithday: '',
- nativePlace: '',
- mail: '',
- contact2: '',
- contactMobile2: '',
- contractRole2: '',
- zipCode: '',
- receiveContact: '',
- receiveMobile: '',
- receiveProvinceSn: undefined,
- receiveCitySn: undefined,
- receiveDistrictSn: undefined,
- receiveAddress: '',
- tradeAccountName: '',
- tradeBankName: '',
- tradeBankAccount: '',
- jgAutoPartsCode: '',
- jgDoorHeaderChangeTime: '',
- isShowSpecialPrice: 0,
- remark: '',
- kdMidCustomerFnumber: '',
- defaultWarehouseSn: undefined,
- tireStorage: '0'
+ dealerName: '', // 经销商名称
+ dealerAlias: '', // 经销商别名
+ dealerType1: undefined, // 商户类型1
+ dealerType2: undefined, // 商户类型2
+ contact: '', // 联系人1
+ contactMobile: '', // 联系手机1
+ citySn: undefined, // 市 sn
+ address: '', // 地址
+ menuMouldId: undefined, // 授权类型
+ contactRole: '', // 联系角色1
+ dealerTelephone: '', // 电话号码
+ busniessMode: '', // 经营方式
+ busniessItmes: '', // 经营项目
+ licenseName: '', // 营业执照名称
+ busniessScope: '', // 公司规模
+ buildDate: '', // 成立时间
+ isTaxpayer: undefined, // 一般纳税人
+ indentityCard: '', // 证件号码
+ brithday: '', // 生日
+ nativePlace: '', // 籍贯
+ mail: '', // 邮箱
+ contact2: '', // 联系人2
+ contactMobile2: '', // 手机号码2
+ contractRole2: '', // 联系角色2
+ zipCode: '', // 邮政编码
+ receiveContact: '', // 收货人
+ receiveMobile: '', // 电话号码
+ receiveProvinceSn: undefined, // 省sn
+ receiveCitySn: undefined, // 市sn
+ receiveDistrictSn: undefined, // 区sn
+ receiveAddress: '', // 收货详细地址
+ tradeAccountName: '', // 银行账户
+ tradeBankName: '', // 开户行
+ tradeBankAccount: '', // 银行卡号
+ jgAutoPartsCode: '', // 箭冠汽配代码
+ jgDoorHeaderChangeTime: '', // 门头更换日期
+ isShowSpecialPrice: 0, // 特约价是否可见 0否 1是
+ remark: '', // 备注
+ kdMidCustomerFnumber: '', // 财务编码
+ defaultWarehouseSn: undefined, // 默认仓库
+ tireStorage: '0' // 是否轮胎省仓
+ // 规则验证
dealerName: [
{ required: true, message: '请输入经销商名称', trigger: 'change' }
@@ -553,11 +553,12 @@ export default {
addrProvinceList1: [], // 省下拉
addrCityList1: [], // 市下拉
addrDistrictList1: [], // 区下拉
- dateFormat: 'YYYY-MM-DD',
- detailData: null
+ dateFormat: 'YYYY-MM-DD', // 日期规则
+ detailData: null// 详情数据
+ // 银行账号 change
bankAccountChange (e) {
const { value } = e.target
this.form.tradeBankAccount = value.replace(/\s*/g, '')
@@ -566,6 +567,7 @@ export default {
disabledDate (date, dateStrings) {
return date && date.valueOf() > Date.now()
this.form.dealerType1 = v[0]
this.form.dealerType2 = v[1]
@@ -627,7 +629,7 @@ export default {
// 返回
- this.$router.push({ path: '/dealerManagement/merchantInfoManagement/list', query: { closeLastOldTab: true } })
+ this.$router.push({ name: 'merchantInfoManagementList' })
// 获取城市列表
getCityList (val) {
@@ -703,18 +705,20 @@ export default {
getArea(params).then(res => {
+ const areaData = JSON.parse(JSON.stringify(res.data || []))
+ // 省
if (leve == 'province') {
- this.addrProvinceList = JSON.parse(JSON.stringify(res.data || []))
- this.addrProvinceList1 = JSON.parse(JSON.stringify(res.data || []))
- } else if (leve == 'city') {
- this.addrCityList = JSON.parse(JSON.stringify(res.data || []))
+ this.addrProvinceList = areaData
+ this.addrProvinceList1 = areaData
+ } else if (leve == 'city') { // 市
+ this.addrCityList = areaData
if (index == 1) {
- this.addrCityList1 = JSON.parse(JSON.stringify(res.data || []))
+ this.addrCityList1 = areaData
- } else if (leve == 'district') {
- this.addrDistrictList = JSON.parse(JSON.stringify(res.data || []))
+ } else if (leve == 'district') { // 县
+ this.addrDistrictList = areaData
- this.addrDistrictList1 = JSON.parse(JSON.stringify(res.data || []))
+ this.addrDistrictList1 = areaData
@@ -735,6 +739,7 @@ export default {
this.getArea('province')
id="merchantInfoManagementList-export">导出</a-button>
+ <a @click="advanced=!advanced" style="margin-left: 5px" id="merchantInfoManagementList-advanced">
@@ -78,18 +78,54 @@
<!-- 经销商 -->
<template slot="dealerName" slot-scope="text, record">
- <span v-if="$hasPermissions('B_merchantInfo_detail')" :title="record.dealerName" class="link-bule" @click="handleDetail(record)">{{ record.dealerName }}</span>
+ <span v-if="$hasPermissions('B_merchantInfo_detail')" :id="'merchantInfoManagementList-dealerName'+record.id" :title="record.dealerName" class="link-bule" @click="handleDetail(record)">{{ record.dealerName }}</span>
<span v-else :title="record.dealerName">{{ record.dealerName }}</span>
- <a-button size="small" type="link" class="button-warning" v-if="record.auditState == 'WAIT' && $hasPermissions('B_merchantInfo_audit')" @click="handleAudit(record)" >审核</a-button>
- <a-button size="small" type="link" class="button-info" v-if="$hasPermissions('B_merchantInfo_cooperation')" @click="handleCooperation(record)" >合作设置</a-button>
- <a-button size="small" type="link" class="button-primary" v-if="$hasPermissions('B_merchantInfo_level')" @click="handleLevel(record)">级别设置</a-button>
- <a-button size="small" type="link" class="button-info" v-if="$hasPermissions('B_merchantInfo_edit')" @click="handleEdit(record)">编辑</a-button>
+ :id="'merchantInfoManagementList-audit-btn'+record.id"
+ v-if="record.auditState == 'WAIT' && $hasPermissions('B_merchantInfo_audit')"
+ @click="handleAudit(record)" >审核</a-button>
+ :id="'merchantInfoManagementList-cooperation-btn'+record.id"
+ class="button-info"
+ v-if="$hasPermissions('B_merchantInfo_cooperation')"
+ @click="handleCooperation(record)" >合作设置</a-button>
+ :id="'merchantInfoManagementList-level-btn'+record.id"
+ class="button-primary"
+ v-if="$hasPermissions('B_merchantInfo_level')"
+ @click="handleLevel(record)">级别设置</a-button>
+ :id="'merchantInfoManagementList-edit-btn'+record.id"
+ v-if="$hasPermissions('B_merchantInfo_edit')"
+ @click="handleEdit(record)">编辑</a-button>
<br>
- <a-button size="small" type="link" class="button-error" v-if="record.auditState != 'WAIT'&&record.dealerLevel && $hasPermissions('B_merchantInfo_priceSpread')" @click="handlePriceSpread(record)">差价</a-button>
- <a-button size="small" type="link" class="button-error" v-if="record.auditState != 'WAIT'&&record.dealerLevel && $hasPermissions('B_merchantInfo_distribution')" @click="handleDistribution(record)">经销权</a-button>
+ :id="'merchantInfoManagementList-price-btn'+record.id"
+ v-if="record.auditState != 'WAIT'&&record.dealerLevel && $hasPermissions('B_merchantInfo_priceSpread')"
+ @click="handlePriceSpread(record)">差价</a-button>
+ :id="'merchantInfoManagementList-power-btn'+record.id"
+ v-if="record.auditState != 'WAIT'&&record.dealerLevel && $hasPermissions('B_merchantInfo_distribution')"
+ @click="handleDistribution(record)">经销权</a-button>
<span v-if="!(record.auditState == 'WAIT' && $hasPermissions('B_merchantInfo_audit')) && !$hasPermissions('B_merchantInfo_cooperation') && !(record.auditState != 'WAIT' && $hasPermissions('B_merchantInfo_distribution')) && !$hasPermissions('B_merchantInfo_level') && !$hasPermissions('B_merchantInfo_edit')">--</span>
@@ -113,13 +149,15 @@
-import { dealerQueryList, dealerExport } from '@/api/dealer'
import merchantInfoManagementDetailModal from './detailModal.vue'
import UpdateCooperate from './updateCooperate.vue'
import UpdateDealerLeve from './updateDealerLevel.vue'
+import { dealerQueryList, dealerExport } from '@/api/dealer'
name: 'MerchantInfoManagementList',
@@ -128,8 +166,8 @@ export default {
+ dealerType: [], // 所选商户类型 列表
nameLike: '', // 商户名称、别名
@@ -144,8 +182,8 @@ export default {
exportLoading: false, // 导出loading
- total: 0,
+ dateFormat: 'YYYY-MM-DD', // 日期显示格式
+ total: 0, // 总计
{ title: '创建时间', dataIndex: 'createDate', width: '6%', align: 'center', customRender: function (text) { return text || '--' } },
@@ -163,7 +201,6 @@ export default {
{ title: '生效时间', dataIndex: 'cooperateEffectiveTime', width: '6%', align: 'center', customRender: function (text) { return text || '--' } },
{ title: '操作', scopedSlots: { customRender: 'action' }, width: '12%', align: 'center' }
@@ -172,6 +209,7 @@ export default {
@@ -190,14 +228,16 @@ export default {
openUcModal: false, // 合作设置 弹框
openUdModal: false, // 级别设置 弹框
itemId: '', // 当前商户sn
- isAudit: false
+ isAudit: false// 是否显示审核按钮
+ // 区域 change
this.queryParam.subareaArea.subareaSn = val[0] ? val[0] : undefined
this.queryParam.subareaArea.subareaAreaSn = val[1] ? val[1] : undefined
this.queryParam.dealerType1 = v[0]
this.queryParam.dealerType2 = v[1]
@@ -295,6 +335,7 @@ export default {
+ // 导出成功
@@ -307,18 +348,21 @@ export default {
document.body.appendChild(link)
link.click()
this.tableHeight = window.innerHeight - tableSearchH - 235
@@ -20,17 +20,17 @@
<a-form-model-item label="品牌" prop="productBrandSn">
- <ProductBrand id="chooseProducts-productBrandSn" v-model="queryParam.productBrandSn"></ProductBrand>
+ <ProductBrand id="permissionSetting-productBrandSn" v-model="queryParam.productBrandSn"></ProductBrand>
<a-form-model-item label="产品分类" prop="productType">
- <productTypeAll placeholder="请选择产品分类" @change="changeProductType" v-model="productType" id="chooseProducts-productType"></productTypeAll>
+ <productTypeAll placeholder="请选择产品分类" @change="changeProductType" v-model="productType" id="permissionSetting-productType"></productTypeAll>
<a-form-model-item label="价格级别" prop="priceLevel">
- <v-select code="PRICE_LEVEL" id="productLevelEdit-priceLevel" v-model="queryParam.priceLevel" allowClear placeholder="请选择价格级别"></v-select>
+ <v-select code="PRICE_LEVEL" id="permissionSetting-priceLevel" v-model="queryParam.priceLevel" allowClear placeholder="请选择价格级别"></v-select>
@@ -42,10 +42,10 @@
- <a-button type="primary" class="button-error" @click="chooseTModal">选择品类</a-button>
+ <a-button type="primary" id="permissionSetting-chooseType" class="button-error" @click="chooseTModal">选择品类</a-button>
<span v-if="!showEmpty">
- <a-button type="primary" v-if="$route.params.dealerLevel != 'SPECIAL'" class="button-info" @click="handleEdit()">批量编辑</a-button>
- <a-button type="primary" ghost class="button-error" @click="handleDel()">批量删除</a-button>
+ <a-button type="primary" id="permissionSetting-moreEdit" v-if="$route.params.dealerLevel != 'SPECIAL'" class="button-info" @click="handleEdit()">批量编辑</a-button>
+ <a-button type="primary" id="permissionSetting-moreDel" ghost class="button-error" @click="handleDel()">批量删除</a-button>
@@ -77,12 +77,14 @@
import ChooseTypeModal from './chooseTypeModal.vue'
import editPriceLevelModal from './priceLevelModal.vue'
import productTypeAll from '@/views/common/productTypeAll.js'
import ProductBrand from '@/views/common/productBrand.js'
import { Empty } from 'ant-design-vue'
import { dealerScopeModifyPriceLevel, dealerScopeDelete, dealerScopeQueryList } from '@/api/dealerScope'
name: 'MerchantInfoManagementSet',
@@ -91,24 +93,24 @@ export default {
productBrandSn: undefined, // 产品品牌
productTypeSn1: '', // 产品一级分类
productTypeSn2: '', // 产品二级分类
productTypeSn3: '', // 产品三级分类
- priceLevel: undefined
+ priceLevel: undefined// 价格级别
- productType: [],
+ productType: [], // 产品分类
openTypeModal: false, // 选择产品分类
- openPriceLevelModal: false,
- itemPriceLevel: '',
- showEmpty: false,
+ openPriceLevelModal: false, // 打开修改价格等级弹窗
+ itemPriceLevel: '', // 价格级别数据
+ simpleImage: Empty.PRESENTED_IMAGE_SIMPLE, // 空数据图片
+ showEmpty: false, // 数据是否为空
showTableHead: true, // 显示表头
- selectedRowKeys: []
+ selectedRowKeys: []// 已选数据
@@ -147,6 +149,7 @@ export default {
+ // 选择列表数据
checkboxOption () {
@@ -163,6 +166,7 @@ export default {
+ // 获取列表数据
_this.disabled = true
+ // 关闭价格级别弹窗
closePriceLevelModal () {
this.itemPriceLevel = ''
this.openPriceLevelModal = false
@@ -273,12 +278,14 @@ export default {
this.selectedRowKeys = []
this.$router.push({ path: '/dealerManagement/merchantInfoManagement/list', query: { closeLastOldTab: true } })
this.tableHeight = window.innerHeight - tableSearchH - 205
class="chooseType-modal"
- title="选择品类"
+ title="编辑价格级别"
@cancel="isShow=false"
width="500px">
@@ -21,26 +21,26 @@
+ id="priceLevel-modal-level"
placeholder="请选择价格级别"></v-select>
<div class="fontRed">注意:价格变更后,该商户的差价设置将同步清空</div>
- <a-button id="chooseType-modal-back" @click="isShow = false" >取消</a-button>
- <a-button type="primary" style="margin-left: 15px;" id="chooseType-modal-save" @click="handleSave">确定</a-button>
+ <a-button id="priceLevel-modal-back" @click="isShow = false" >取消</a-button>
+ <a-button type="primary" style="margin-left: 15px;" id="priceLevel-modal-save" @click="handleSave">确定</a-button>
- name: 'ChooseTypeModal',
+ name: 'PriceLevelModal',
@@ -54,16 +54,18 @@ export default {
+ // form 表单布局
- notArr: [],
+ notArr: [], // 价格级别禁选数据
priceLevel: undefined // 价格级别
{ required: true, message: '请选择价格等级', trigger: 'change' }
- class="merchantInfoManagement-modal"
+ class="updateCooperate-modal"
:title="title"
@@ -16,24 +16,25 @@
+ id="updateCooperate-form"
<a-form-model-item label="商户名称">
{{ form.dealerName }}
<a-form-model-item label="合作状态" prop="cooperateFlag">
- <v-select code="DEALER_COOPERATE_FLAG" id="ucModal-cooperateFlag" v-model="form.cooperateFlag" allowClear placeholder="请选择合作状态"></v-select>
+ <v-select code="DEALER_COOPERATE_FLAG" id="updateCooperate-cooperateFlag" v-model="form.cooperateFlag" allowClear placeholder="请选择合作状态"></v-select>
<a-form-model-item label="生效时间" prop="cooperateEffectiveTime">
<a-date-picker
- id="ucModal-cooperateEffectiveTime"
+ id="updateCooperate-cooperateEffectiveTime"
v-model="form.cooperateEffectiveTime"
:format="dateFormat"
placeholder="请选择日期" />
- <a-button @click="cansel">取消</a-button>
- <a-button style="margin-left: 15px;" type="primary" @click="onSubmit">确定</a-button>
+ <a-button id="updateCooperate-cancel-btn" @click="cancel">取消</a-button>
+ <a-button id="updateCooperate-submit-btn" style="margin-left: 15px;" type="primary" @click="onSubmit">确定</a-button>
@@ -43,9 +44,11 @@
import { updateCooperate } from '@/api/dealer'
name: 'UpdateCooperate',
@@ -60,16 +63,17 @@ export default {
isShow: this.openUcModal, // 是否打开弹框
- title: '合作设置',
- labelCol: { span: 5 },
+ title: '合作设置', // 表格标题
+ dateFormat: 'YYYY-MM-DD', // 日期格式
+ labelCol: { span: 5 }, // form表单label布局
- other: '',
- cooperateFlag: undefined,
- cooperateEffectiveTime: null
+ dealerName: '', // 商户名称
+ cooperateFlag: undefined, // 合作状态
+ cooperateEffectiveTime: null// 生效时间
cooperateFlag: [
{ required: true, message: '请选择合作状态', trigger: 'change' }
@@ -85,12 +89,14 @@ export default {
setData (row) {
this.form.dealerSn = row.dealerSn
this.form.dealerName = row.dealerName
this.form.cooperateFlag = row.cooperateFlag
this.form.cooperateEffectiveTime = row.cooperateEffectiveTime
+ // 确定提交
onSubmit () {
@@ -112,7 +118,8 @@ export default {
- cansel () {
+ // 取消
+ cancel () {
+ class="updateDealerLevel-modal"
@@ -11,6 +11,7 @@
+ id="updateDealerLevel-form"
@@ -21,11 +22,11 @@
<a-form-model-item label="商户级别" prop="dealerLevel">
- <v-select code="DEALER_LEVEL" id="ucModal-dealerLevel" v-model="form.dealerLevel" allowClear placeholder="请选择商户级别"></v-select>
+ <v-select code="DEALER_LEVEL" id="updateDealerLevel-dealerLevel" v-model="form.dealerLevel" allowClear placeholder="请选择商户级别"></v-select>
+ <a-button id="updateDealerLevel-cancel-btn" @click="cancel">取消</a-button>
+ <a-button id="updateDealerLevel-submit-btn" style="margin-left: 15px;" type="primary" @click="onSubmit">确定</a-button>
@@ -35,7 +36,9 @@
import { updateDealerLevel } from '@/api/dealer'
name: 'UpdateDealerLevel',
@@ -51,24 +54,26 @@ export default {
isShow: this.openUdModal, // 是否打开弹框
- title: '级别设置',
+ title: '级别设置', // 标题
+ labelCol: { span: 5 }, // form表单布局
- dealerLevel: undefined
+ dealerLevel: undefined// 商户级别
dealerLevel: [
{ required: true, message: '请选择商户级别', trigger: 'change' }
- dealerLevelBak: undefined,
- isProvincialCustomers: ''
+ dealerLevelBak: undefined, // 商户级别回显数据
+ isProvincialCustomers: ''// 省仓客户
+ // 设置数据
@@ -76,6 +81,7 @@ export default {
this.dealerLevelBak = row.dealerLevel
this.isProvincialCustomers = row.serviceCenterSn ? '1' : '0'// 是否是省仓客户
+ // 提交判断必填项
@@ -86,6 +92,7 @@ export default {
submitForm () {
const params = JSON.parse(JSON.stringify(_this.form))
@@ -100,7 +107,8 @@ export default {
@@ -12,6 +12,7 @@
<!-- 表单 -->
+ id="addProvincialWarehouse-form"
@@ -20,7 +21,7 @@
<a-form-model-item label="设为省仓" prop="serviceCenterName">
<custList
- id="dealerZoneSearch-dealerName"
+ id="addProvincialWarehouse-dealerName"
cooperateFlag="1"
dealerLevel="PROVINCE"
placeholder="请输入经销商名称搜索"
@@ -37,7 +38,9 @@
import { serviceCenterAdd } from '@/api/serviceCenter'
name: 'AddProvincialWarehouseModal',
@@ -55,22 +58,26 @@ export default {
return (this.parentData && this.parentData.subareaAreaSn ? '编辑' : '新增') + '省仓'
serviceCenterSn: undefined, // 经销商sn
serviceCenterName: undefined// 经销商名称
+ // 表单规则验证
serviceCenterName: [
{ required: true, message: '请输入经销商名称', trigger: 'blur' }
@@ -5,9 +5,9 @@
@@ -20,9 +20,9 @@
- <v-select code="DEALER_LEVEL" id="ucModal-dealerLevel" v-model="queryParam.dealerLevel" allowClear placeholder="请选择商户级别"></v-select>
+ <v-select code="DEALER_LEVEL" id="chooseDealer-dealerLevel" v-model="queryParam.dealerLevel" allowClear placeholder="请选择商户级别"></v-select>
@@ -37,7 +37,7 @@
@@ -66,17 +66,19 @@
-import { getDealerListInfo, dealerQueryList } from '@/api/dealer'
+import { dealerQueryList } from '@/api/dealer'
components: { STable, VSelect, subarea, AreaList, dealerType },
default: 'dealerPromotion'
@@ -87,26 +89,26 @@ export default {
+ loading: false, // 批量添加loading,
subareaSn: undefined, // 区域
subareaAreaSn: undefined // 分区
+ districtSn: undefined// 区sn
- loading: false, // 批量添加loading,
+ rowSelectionInfo: null, // 已选列表数据
{ title: '经销商名称', dataIndex: 'dealerName', width: '30%', align: 'center', customRender: function (text) { return text || '--' }, ellipsis: true },
{ title: '商户别名', dataIndex: 'dealerAlias', align: 'left', width: '30%', customRender: function (text) { return text || '--' }, ellipsis: true },
@@ -126,6 +128,7 @@ export default {
@@ -142,6 +145,7 @@ export default {
@@ -151,18 +155,22 @@ export default {
+ // 所在区域/分区 change
@@ -179,7 +187,6 @@ export default {
citySn: undefined,
districtSn: undefined
@@ -188,6 +195,7 @@ export default {
+ // 清除所选数据
clearSelect () {
this.$refs.table.clearSelected()
@@ -200,10 +208,12 @@ export default {
this.$emit('plAdd', _this.rowSelectionInfo.selectedRows)
const headHeight = this.$refs.tableSearch.offsetHeight
this.tableHeight = window.innerHeight - headHeight - 190
@@ -83,23 +83,27 @@
import provincialWarehouseAddModal from './addModal.vue'
import { serviceCenterList, provincialWarehouseEnable, serviceCenterBinding } from '@/api/serviceCenter'
- name: 'DealerAccountManagementList',
+ name: 'ProvincialWarehouse',
components: { STable, VSelect, provincialWarehouseAddModal },
- serviceCenterName: '',
- enableFlag: undefined
+ tableHeight: 0, // 列表高度
+ openModal: false, // 新增编辑 弹框
+ serviceCenterName: '', // 省仓名称
+ enableFlag: undefined// 省仓状态
{ title: '创建时间', dataIndex: 'createDate', width: '10%', align: 'center' },
@@ -119,6 +123,7 @@ export default {
@@ -129,8 +134,7 @@ export default {
- openModal: false // 新增编辑 弹框
@@ -189,12 +193,14 @@ export default {
@@ -18,14 +18,14 @@
<a-col :md="4" :sm="24">
- <AreaList id="actualSalesReportList-areaList" changeOnSelect ref="areaList" @change="areaChange" defValKey="id"></AreaList>
+ <AreaList id="relatedDealersList-areaList" changeOnSelect ref="areaList" @change="areaChange" defValKey="id"></AreaList>
- <a-form-model-item label="区域/分区">
+ <a-form-item label="区域/分区">
<subarea ref="subarea" id="relatedDealersList-subarea" @change="subareaChange"></subarea>
@@ -38,14 +38,15 @@
<v-select code="DEALER_LEVEL" id="relatedDealersList-dealerLevel" v-model="queryParam.dealerLevel" allowClear placeholder="请选择商户级别"></v-select>
- <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-button type="primary" @click="$refs.table.refresh(true)" :disabled="disabled" id="relatedDealersList-refresh">查询</a-button>
+ <a-button style="margin-left: 5px" @click="resetSearchForm" :disabled="disabled" id="relatedDealersList-reset">重置</a-button>
+ id="relatedDealersList-export"
style="margin-left: 10px"
@@ -58,8 +59,9 @@
<div class="relatedDealersList-btn" style="margin-bottom:10px;">
- <a-button type="primary" @click="openDealersModal">新增经销商</a-button>
+ <a-button id="relatedDealersList-add" type="primary" @click="openDealersModal">新增经销商</a-button>
@@ -87,7 +89,7 @@
v-if="$hasPermissions('B_serviceCenter_unbinding')"
@click="handleDelete(record)"
- id="provincialWarehouse-edit-btn">解绑</a-button>
+ :id="'relatedDealersList-edit-btn'+record.dealerSn">解绑</a-button>
@@ -103,8 +105,7 @@
:visible="openDealerModal"
class="lookUpCustomers-modal"
@close="closeDealerModal"
- width="72%"
+ width="72%">
<div class="dealerModalCon">
<chooseDealer ref="dealerChoose" :itemSn="$route.params.sn" @plAdd="handleAddDealer"></chooseDealer>
@@ -114,38 +115,42 @@
import { queryServiceCenterDealerPage, serviceCenterBinding, serviceCenterUnbinding, serviceCenterExport } from '@/api/serviceCenter'
- name: 'LookUpCustomers',
+ name: 'RelatedDealersList',
components: { STable, VSelect, chooseDealer, subarea, AreaList, dealerType },
- relationType: 'purchase',
+ nameLike: '', // 经销商名称
+ relationType: 'purchase', // 关系类型
+ activeKeyVal: '1', // 基础信息是否显示
@@ -154,6 +159,7 @@ export default {
@@ -178,8 +184,7 @@ export default {
{ title: '商户级别', dataIndex: 'dealerLevelDictValue', width: '15%', align: 'center', customRender: function (text) { return text || '--' } },
{ title: '添加时间', dataIndex: 'createDate', width: '15%', align: 'center', customRender: function (text) { return text || '--' } },
- openDealerModal: false
@@ -195,6 +200,7 @@ export default {
this.openDealerModal = false
this.$refs.dealerChoose.clearSelect()
@@ -222,11 +228,13 @@ export default {
+ // 区域分区 change
@@ -247,6 +255,7 @@ export default {
+ // 确定解绑
submitDel (params) {
serviceCenterUnbinding(params).then(res => {
@@ -292,6 +301,7 @@ export default {
this.$router.push({ name: 'provincialWarehouseList' })
@@ -299,6 +309,7 @@ export default {
@@ -21,9 +21,11 @@
import { dealerUpsList, dealerUpsDelete } from '@/api/dealer'
// 子表格
const ChildTableComp = {
name: 'ChildTableComp',
@@ -48,7 +50,7 @@ const ChildTableComp = {
+ simpleImage: Empty.PRESENTED_IMAGE_SIMPLE, // 为空 图片地址
{ title: '序号', field: 'no', key: 'a', width: 40, align: 'center', operationColumn: false },
{ title: '品牌', field: 'productBrandName', key: 'b', width: 100, align: 'center', operationColumn: false, renderBodyCell: ({ row, column, rowIndex }, h) => { return row[column.field] || '--' } },
@@ -75,13 +77,13 @@ export default {
simpleImage: Empty.PRESENTED_IMAGE_SIMPLE,
- list: [],
- tableHeight: this.maxHeight,
- columnWidthResizeOption: {
+ list: [], // 重组后适合的列表数据
+ tableHeight: this.maxHeight, // 表格高度
+ columnWidthResizeOption: {// 表格列宽设置
// default false
enable: true,
// column resize min width
@@ -98,9 +100,9 @@ export default {
this.changeExpandedRowKeys(afterExpandedRowKeys)
- showEmpty: true,
- checkedDealerSn: [],
- isTeyue: false
+ showEmpty: true, // 是否显示空页面
+ checkedDealerSn: [], // 选中的经销商sn集合
+ isTeyue: false// 是否显示删除按钮
@@ -149,7 +151,7 @@ export default {
)
+ // 表格展开收起功能
const expendFormat = function (record, data, h) {
if (_this.isTeyue) {
return (<span>-</span>)
@@ -213,7 +215,9 @@ export default {
for (let i = 0; i < listData.length; i++) {
const item = listData[i]
+ // 筛选品牌 一级、二级、三级分类数据 渲染展开表格
const rebateScopeList = item.rebateScopeList ? this.filterData(item.rebateScopeList, queryParam) : [{ productBrandName: null, productTypeName1: null, productTypeName2: null, productTypeName3: null }]
+ // SUPERIORS 上级经销商 HEAD 总部经销商 ASSIGN 指定经销商
const supDealerList = item.rebateDealerList.find(b => b.rebateParentType == 'SUPERIORS')
const headDealerList = item.rebateDealerList.find(b => b.rebateParentType == 'HEAD')
const zdDealerList = item.rebateDealerList.filter(b => b.rebateParentType == 'ASSIGN')
@@ -247,6 +251,7 @@ export default {
return ret.filter(item => item.childData.length > 0)
+ // 列表数据查询
searchTable (queryParam) {
if (this.dataSource.length) {
this.$emit('loaded', this.dataSource)
@@ -270,12 +275,14 @@ export default {
+ // 编辑
handleEdit (record, e) {
console.log(e)
e.stopPropagation()
const row = this.dataSource.find(item => item.dealerUpsSn == record.dealerUpsSn && item.dealerSn == record.dealerSn)
this.$emit('edit', row)
+ // 删除
handleDel (record, e) {
@@ -298,6 +305,7 @@ export default {
pageInit (queryParam, isTeyue) {
this.isTeyue = isTeyue
// 获取列表
@@ -33,11 +33,13 @@
-import { VSelect } from '@/components'
-import { dealerUpsPlTree } from '@/api/dealer'
+import { VSelect } from '@/components'
import ProductType from '@/views/common/productType.js'
+import { dealerUpsPlTree } from '@/api/dealer'
name: 'DetailProductList',
@@ -59,27 +61,29 @@ export default {
- dealerSn: undefined,
- parentDealerSn: undefined,
- checkedKeys: [],
- halfCheckedKeys: [],
- allLeafKeys: [],
- allBrands: [],
- check1: false,
- check2: false,
- check3: false
+ simpleImage: Empty.PRESENTED_IMAGE_SIMPLE, // 为空显示的图片
+ dataSource: [], // 树数据
+ showEmpty: true, // 是否显示为空图片
+ dealerSn: undefined, // 经销商sn
+ parentDealerSn: undefined, // 上级经销商sn
+ checkedKeys: [], // 选中数据
+ halfCheckedKeys: [], // 选中孩子节点数据
+ allLeafKeys: [], // 所有子节点数据
+ allBrands: [], // 所有品牌数据
+ check1: false, // 全选
+ check2: false, // 自主品牌
+ check3: false// 代理品牌
+ // 树 check 事件
onCheck (checkedKeys, info) {
// console.log('onCheck', checkedKeys, info)
+ // 选中孩子节点数据
this.halfCheckedKeys = info.halfCheckedKeys
if (this.check1) {
this.check1 = false
@@ -91,6 +95,7 @@ export default {
this.check3 = false
+ // 获取选中数据,重组所选数据结构
getResult () {
// 所有已选叶子节点
const ret = this.allLeafKeys.filter(item => this.checkedKeys.includes(item.sn))
@@ -176,6 +181,7 @@ export default {
this.$message.info('请选择上级经销商')
+ // 获取树数据
async getTreeData () {
this.dataSource = []
this.allLeafKeys = []
@@ -195,6 +201,7 @@ export default {
pageInit (detailData, parentDealerSn, dealerSn) {
this.detailData = detailData
this.parentDealerSn = parentDealerSn
@@ -22,12 +22,12 @@
<a-form-model-item label="品牌">
- <ProductBrand v-model="queryParam.productBrandSn"></ProductBrand>
+ <ProductBrand id="rebateBinding-productBrandSn" v-model="queryParam.productBrandSn"></ProductBrand>
<a-form-model-item label="产品分类">
- <ProductType placeholder="请选择产品分类" @change="changeProductType" v-model="productType"></ProductType>
+ <ProductType id="rebateBinding-productType" placeholder="请选择产品分类" @change="changeProductType" v-model="productType"></ProductType>
<!-- <a-col :md="6" :sm="24" v-if="!isTeyue">
@@ -42,7 +42,13 @@
</a-col> -->
<a-col :md="6" :sm="24" v-show="false">
<a-form-model-item label="差价归属方">
- <v-select code="REBATE_PARENT_TYPE" ref="rpType" v-model="queryParam.rebateParentType" allowClear placeholder="请选择差价归属方"></v-select>
+ id="rebateBinding-rebateParentType"
+ code="REBATE_PARENT_TYPE"
+ ref="rpType"
+ v-model="queryParam.rebateParentType"
+ placeholder="请选择差价归属方"></v-select>
@@ -56,14 +62,13 @@
<div class="table-operator" style="display: flex;align-items: center;justify-content: space-between;" v-if="showBtns">
<a-button id="rebateBinding-brand" type="primary" class="button-error" @click="openGlModal">差价设置</a-button>
<div v-if="!isTeyue && hasData">
- <a-button type="default" @click="expandAllRow">{{ expandAll?'收起全部':'展开全部' }}</a-button>
+ <a-button id="rebateBinding-isTeyue" type="default" @click="expandAllRow">{{ expandAll?'收起全部':'展开全部' }}</a-button>
<categoryList ref="categoryList" @loaded="loadList" @del="delOk" @edit="handleEdit" :maxHeight="tableHeight"></categoryList>
<!-- 差价设置 -->
<priceDiffModal ref="priceDiffModal" :openModal="openModal" @ok="resetGetData" @close="openModal=false"></pricediffmodal>
@@ -71,12 +76,14 @@
-import { dealerDetailBySn } from '@/api/dealer'
import priceDiffModal from './priceDiffModal.vue'
import categoryList from './categoryList'
+import { dealerDetailBySn } from '@/api/dealer'
name: 'RebateBinding',
@@ -84,27 +91,29 @@ export default {
- detail: null,
- rebateParentType: undefined,
- priceLevel: undefined,
- productBrandSn: undefined,
- productTypeSn1: undefined,
- productTypeSn2: undefined,
- productTypeSn3: undefined,
+ openModal: false, // 差价设置弹窗
+ detail: null, // 详情数据
+ productType: [], // 产品分类查询数据
+ rebateParentType: undefined, // 差价归属方
+ priceLevel: undefined, // 价格级别
+ productBrandSn: undefined, // 品牌
+ productTypeSn1: undefined, // 产品一级分类
+ productTypeSn2: undefined, // 产品二级分类
+ productTypeSn3: undefined, // 产品三级分类
- showBtns: true,
- expandAll: false,
- hasData: false
+ showBtns: true, // 是否显示操作按钮
+ expandAll: false, // 显示展开全部 收起全部按钮
+ hasData: false // 列表数据是否为空
+ // 判断是否显示特约经销商内容
isTeyue () {
return this.detail && this.detail.dealerLevel == 'SPECIAL'
@@ -114,6 +123,7 @@ export default {
this.$router.push({ name: 'merchantInfoManagementList', query: { closeLastOldTab: true } })
loadList (list) {
this.showBtns = this.isTeyue ? list.length == 0 : true
this.hasData = list.length > 0
@@ -140,6 +150,7 @@ export default {
this.queryParam.productTypeSn2 = val[1] ? val[1] : undefined
this.queryParam.productTypeSn3 = val[2] ? val[2] : undefined
+ // 收起全部 展开全部 事件
expandAllRow () {
if (this.expandAll) {
this.$refs.categoryList.foldAll()
@@ -148,6 +159,7 @@ export default {
this.expandAll = !this.expandAll
+ // 差价设置成功,关闭弹窗,初始化弹窗所需数据
resetGetData () {
this.expandAll = false
this.$refs.categoryList.dataSource = []
@@ -192,6 +204,7 @@ export default {
@@ -199,6 +212,7 @@ export default {
+ // 获取表格高度
this.tableHeight = window.innerHeight - tableSearchH - (!this.showBtns ? 50 : 205)
<div style="min-height:100px;">
+ id="priceDifference-form"
@@ -26,19 +26,21 @@
<a-row :gutter="10">
<a-col :span="17">
+ id="priceDifference-custList"
v-if="!form.dealerUpsSn || isSpecial"
ref="custList"
:notDealerSn="notDealer"
:notDealerType="['SPECIAL']"
@change="custSupChange"
placeholder="请输入经销商名称搜索"></custList>
- <a-input v-else :value="superDealerName" disabled />
+ <a-input id="priceDifference-superDealerName" v-else :value="superDealerName" disabled />
<a-col :span="4" v-if="!isSpecial">
:precision="2"
:max="100"
+ id="priceDifference-parentAllotRate"
v-model="parentAllotRate"
@change="rateSupChange"
placeholder="请输入比例"/> %
@@ -47,6 +49,7 @@
ghost
+ id="priceDifference-zdDealearList"
@click="addItem()"
>添加指定</a-button>
@@ -55,13 +58,14 @@
<a-form-model-item label="指定经销商" v-if="zdDealearList.length">
<a-row :gutter="10" v-for="(item,index) in zdDealearList" :key="item.id">
- <custList :ref="'custList-'+item.id" :notDealerSn="notZdDealer" @change="(v,r)=>custChange(v,r,index)" placeholder="请输入经销商名称搜索"></custList>
+ <custList id="priceDifference-notZdDealer" :ref="'custList-'+item.id" :notDealerSn="notZdDealer" @change="(v,r)=>custChange(v,r,index)" placeholder="请输入经销商名称搜索"></custList>
<a-col :span="4">
+ id="priceDifference-allotRate"
v-model="item.allotRate"
@change="(v)=>rateChange(v,index)"
@@ -80,6 +84,7 @@
title="删除"
+ id="priceDifference-del"
shape="circle"
icon="minus"/>
@@ -89,13 +94,14 @@
<a-form-model-item label="箭冠总公司" v-if="!isSpecial">
- <a-input value="箭冠总公司" disabled />
+ <a-input id="priceDifference-headOffice" value="箭冠总公司" disabled />
+ id="priceDifference-hAllotRate"
v-model="hAllotRate"
@change="rateHChange"
@@ -108,9 +114,10 @@
<categoryTree v-if="showTable&&!isSpecial&&!form.dealerUpsSn" ref="categoryTree"></categoryTree>
- <a-button @click="isShow = false" style="font-size: 12px;">取消</a-button>
+ <a-button id="priceDifference-cancel-btn" @click="isShow = false" style="font-size: 12px;">取消</a-button>
+ id="priceDifference-save-btn"
style="margin-left: 20px;"
@click="handleSave"
>确定</a-button>
@@ -121,10 +128,12 @@
-import { dealerUpsCreate, dealerUpsUpdate } from '@/api/dealer'
import categoryTree from './categoryTree'
+import { dealerUpsCreate, dealerUpsUpdate } from '@/api/dealer'
name: 'PriceDiffModal',
@@ -139,38 +148,44 @@ export default {
- title: '差价设置',
+ title: '差价设置', // 标题
+ // 表单label布局设置
- dealerUpsSn: undefined,
+ dealerUpsSn: undefined, // 上级经销商
rebateParentType: [], // 差价归属
rebateDealerList: [], // 经销商列表
rebateScopeList: [] // 品类列表
parentAllotRate: '', // 上级经销商分配比例
hAllotRate: '', // 总部分配比例
rebateParentType: [{ required: true, message: '请选择差价归属方', trigger: 'change' }]
- cjgsfList: [],
- zdDealearList: [],
- detailData: null,
- superDealerName: '',
- showTable: false
+ cjgsfList: [], // 箭冠总公司列表
+ zdDealearList: [], // 指定经销商列表
+ detailData: null, // 详情数据
+ superDealerName: '', // 经销商数据
+ checkedDealerSn: [], // 选中经销商sn
+ showTable: false// 是否显示品牌分类列表
+ // 是否是特约经销商
isSpecial () {
return this.detailData && this.detailData.dealerLevel == 'SPECIAL'
+ // 上级经销商数据
notDealer () {
return this.form.rebateDealerList.concat(this.zdDealearList).concat([{ 'parentDealerSn': this.form.dealerSn }])
+ // 指定经销商列表数据
notZdDealer () {
return this.form.rebateDealerList.concat(this.zdDealearList)
@@ -254,6 +269,7 @@ export default {
+ // 上级经销商 比例 change
rateSupChange (val) {
this.form.rebateDealerList[0]['allotRate'] = val
@@ -265,6 +281,7 @@ export default {
this.$refs.categoryTree.pageInit(this.detailData, parentDealerSn, this.form.dealerSn)
+ // 箭冠总公司 比例
rateHChange (val) {
this.form.rebateDealerList[1]['allotRate'] = val
@@ -273,6 +290,7 @@ export default {
console.log(val, index)
this.zdDealearList[index]['parentDealerSn'] = val.key
+ // 指定经销商 比例
rateChange (val, index) {
this.zdDealearList[index]['allotRate'] = val
@@ -1,5 +1,5 @@
- <a-card size="small" :bordered="false" class="noticeManagementList-wrap">
+ <a-card size="small" :bordered="false" class="dowloadFIle-wrap">
@@ -7,29 +7,35 @@
+ <a-range-picker
+ id="dowloadFIle-beginDate"
+ showTime
+ :disabled-date="disabledDate"
+ v-model="time"
+ format="YYYY-MM-DD HH:mm:ss"
+ @change="dateChange" />
<a-form-item label="文件名称">
- <a-input id="noticeManagementList-fileName" v-model.trim="queryParam.fileName" allowClear placeholder="请输入文件名称"/>
+ <a-input id="dowloadFIle-fileName" v-model.trim="queryParam.fileName" allowClear placeholder="请输入文件名称"/>
- <v-select code="EXPORT_TASK_STATE" id="noticeManagementList-taskState" v-model="queryParam.taskState" allowClear placeholder="请选择状态"></v-select>
+ <v-select code="EXPORT_TASK_STATE" id="dowloadFIle-taskState" v-model="queryParam.taskState" allowClear placeholder="请选择状态"></v-select>
- <a-button type="primary" @click="$refs.table.refresh(true)" :disabled="disabled" id="noticeManagementList-refresh">查询</a-button>
- <a-button style="margin-left: 5px" @click="resetSearchForm" :disabled="disabled" id="noticeManagementList-reset">重置</a-button>
+ <a-button type="primary" @click="searchForm" :disabled="disabled" id="dowloadFIle-refresh">查询</a-button>
+ <a-button style="margin-left: 5px" @click="resetSearchForm" :disabled="disabled" id="dowloadFIle-reset">重置</a-button>
- <div slot="message">注意:所有文件只保留7天,超过7天后,状态变为过期,不能下载</div>
+ <div slot="message">注意:所有文件只保留7天,超过7天后,不能下载</div>
</a-alert>
@@ -45,7 +51,7 @@
- <a :href="record.fileUrl" style="padding: 5px 0 0 23px;display: block;" v-if="record.taskState=='SUCCESS'">下载文件</a>
+ <a :id="'file-'+record.id" :href="record.fileUrl" style="padding: 5px 0 0 23px;display: block;" v-if="record.taskState=='SUCCESS'">下载文件</a>
@@ -54,23 +60,30 @@
+import getDate from '@/libs/getDate.js'
import { taskList, dowloadFile } from '@/api/dowloadFile'
-import rangeDate from '@/views/common/rangeDate.vue'
name: 'DowloadFile',
- components: { STable, VSelect, rangeDate },
+ const startDate = moment(getDate.getRecentTime().starttime).subtract('days', 1).format('YYYY-MM-DD HH:mm:ss')
tableHeight: 0,
+ // 默认时间
+ time: [
+ startDate,
+ getDate.getRecentTime().endtime
- fileName: '',
- taskState: undefined
+ beginDate: startDate, // 开始时间
+ endDate: getDate.getRecentTime().endtime, // 结束时间
+ fileName: '', // 文件名称
+ taskState: undefined // 状态
@@ -92,7 +105,7 @@ export default {
const furl = data.list[i].fileUrl
- data.list[i].fileUrl = furl ? furl.replace('http:',location.protocol) : ''
+ data.list[i].fileUrl = furl ? furl.replace('http:', location.protocol) : ''
@@ -108,36 +121,41 @@ export default {
+ // 禁用时间
+ disabledDate (current) {
+ return current && (current < moment(getDate.getRecentTime().starttime).subtract('days', 2) || current > moment().endOf('day'))
+ // 下载文件
dowloadExcel (url) {
dowloadFile(url, '')
- // const elt = document.createElement('a')
- // elt.setAttribute('href', url)
- // elt.setAttribute('download', '')
- // elt.style.display = 'none'
- // document.body.appendChild(elt)
- // elt.click()
- // document.body.removeChild(elt)
// 时间 change
- dateChange (date) {
- this.queryParam.beginDate = date[0] ? date[0] : ''
- this.queryParam.endDate = date[1] ? date[1] : ''
+ dateChange (date, dateString) {
+ this.queryParam.beginDate = dateString[0] ? moment(dateString[0]).format('YYYY-MM-DD HH:mm:ss') : ''
+ this.queryParam.endDate = dateString[1] ? moment(dateString[1]).format('YYYY-MM-DD HH:mm:ss') : ''
+ searchForm () {
// 重置
- this.queryParam.beginDate = null
- this.queryParam.endDate = null
+ this.time = [moment(getDate.getRecentTime().starttime).subtract('days', 1).format('YYYY-MM-DD HH:mm:ss'), getDate.getRecentTime().endtime]
+ this.queryParam.beginDate = moment(getDate.getRecentTime().starttime).subtract('days', 1).format('YYYY-MM-DD HH:mm:ss')
+ this.queryParam.endDate = getDate.getRecentTime().endtime
this.queryParam.fileName = ''
this.queryParam.type = undefined
this.queryParam.taskState = undefined
+ // 页面初始化
+ // 表格高度计算
@@ -4,10 +4,10 @@
<a-page-header :ghost="false" :backIcon="false" class="expenseReimbursementAddcont" >
- <a id="purchaseOrderEdit-back-btn" href="javascript:;" @click="handleBack(0)"><a-icon type="left" /> 返回列表</a>
+ <a id="expenseEdit-back-btn" href="javascript:;" @click="handleBack(0)"><a-icon type="left" /> 返回列表</a>
<span style="margin: 0 15px;color: #666;font-weight: bold;">单号:{{ detailData&&detailData.expenseAccountNo }}</span>
<span style="margin: 0 10px;color: #666;">申请人:{{ detailData&&detailData.applyPersonName || '--' }}</span>
- <a-button size="small" type="link" class="button-default" @click="showDetail=!showDetail">
+ <a-button size="small" type="link" class="button-default" id="expenseEdit-showdesc" @click="showDetail=!showDetail">
@@ -15,7 +15,7 @@
<a-card :bordered="false" size="small" class="expenseReimbursementAddcont" v-show="showDetail">
<div slot="title">
<span>基础信息</span>
- <div style="cursor:pointer;color: #00aaff;float:right;" @click.stop="handleEditBase" >
+ <div style="cursor:pointer;color: #00aaff;float:right;" id="expenseEdit-showEditModal" @click.stop="handleEditBase" >
<a-icon type="edit" /> 编辑基础信息
@@ -33,7 +33,13 @@
<a-descriptions-item label="主题" :span="3">{{ detailData&&detailData.title || '--' }}</a-descriptions-item>
<a-descriptions-item label="详细说明" :span="3">{{ detailData&&detailData.content.join(',')||'' }}</a-descriptions-item>
<a-descriptions-item label="附件" :span="3">
- <a target="_blank" style="color: #00aaff;text-decoration: underline;margin-right: 15px;" :href="item.filePath" v-for="item in detailData.expenseAccountFilesList" :key="item.id">
+ <a
+ target="_blank"
+ style="color: #00aaff;text-decoration: underline;margin-right: 15px;"
+ :href="item.filePath"
+ v-for="item in detailData.expenseAccountFilesList"
+ :id="item.id"
+ :key="item.id">
{{ item.fileName }}
@@ -45,8 +51,9 @@
<div style="display: flex;justify-content: space-between;align-items: center;">
<div>费用明细</div>
- <a-button size="small" class="button-info" type="primary" @click="openGuideModal=true">导入费用明细</a-button>
- <a-button size="small" class="button-error" type="primary" @click="newExpenseDetail">新增费用明细</a-button>
+ <a-button id="expenseEdit-plEdit" size="small" class="button-info" type="primary" @click="plEdit">变更记账名称</a-button>
+ <a-button id="expenseEdit-import" size="small" class="button-info" type="primary" @click="openGuideModal=true">导入费用明细</a-button>
+ <a-button id="expenseEdit-new" size="small" class="button-error" type="primary" @click="newExpenseDetail">新增费用明细</a-button>
@@ -63,6 +70,8 @@
:rowKey="(record) => record.id"
+ :row-selection="{ columnWidth: 40 }"
+ @rowSelection="rowSelectionFun"
:showPagination="false"
@@ -72,18 +81,21 @@
@click="setProduct(record)"
+ :id="'expenseEdit-set-'+record.id"
>设置产品信息</a-button>
+ :id="'expenseEdit-edit-'+record.id"
>编辑</a-button>
+ :id="'expenseEdit-del-'+record.id"
<!-- 记账名称 -->
@@ -91,6 +103,10 @@
<div>{{ text }}</div>
<div v-if="record.accountNameFnumber">({{ record.accountNameFnumber }})</div>
+ <!-- 原记账名称 -->
+ <template slot="yjzname" slot-scope="text,record">
+ <div>{{ text == record.accountName || !text ? '--' : text }}</div>
<!-- 费用承担方 -->
<template slot="fycdf" slot-scope="text,record">
<div v-for="(item,index) in record.detailSplitList" :key="item.id+'-'+index">
@@ -128,12 +144,14 @@
<!-- 费用明细 -->
<epenseDetailModal
+ ref="epenseDetailForm"
:openModal="openEpenseDetailModal"
:expenseAccountSn="$route.params.sn"
:expenseAccountNo="detailData?detailData.expenseAccountNo:''"
:expenseAccountDetailSn="expenseAccountDetailSn"
+ :isBatch="isBatch"
@ok="epenseDetailOk"
- @close="openEpenseDetailModal=false"></epenseDetailModal>
+ @close="epenseDetailClose"></epenseDetailModal>
<!-- 产品信息设置 -->
<productInfoModal
ref="productInfo"
@@ -160,7 +178,7 @@ import productInfoModal from './productInfoModal.vue'
import baseDataModal from './baseDataModal.vue'
import chooseDepartUserModal from './chooseDepartUserModal.vue'
-import { expenseAccountDetail, expenseAcctDetailDelete, expenseAcctDetailFindList, expenseAccountSubmit, expenseInsertImport } from '@/api/expenseManagement.js'
+import { expenseAccountDetail, expenseAcctDetailDelete, updateBatchExpenseAcctDetail, expenseAcctDetailFindList, expenseAccountSubmit, expenseInsertImport } from '@/api/expenseManagement.js'
name: 'ExpenseReimbursementEdit',
@@ -169,15 +187,15 @@ export default {
- openBaseModal: false,
- openGuideModal: false,
- openDepartUserModal: false,
+ detailData: null, // 详情信息
+ openBaseModal: false, // 基础信息编辑弹框
+ openGuideModal: false, // 导入费用明细弹框
+ openDepartUserModal: false, // 选择审核人员弹框
openEpenseDetailModal: false, // 费用明细弹框
- expenseAccountDetailSn: '',
+ expenseAccountDetailSn: '', // 费用明细sn
openProductInfoModal: false, // 产品信息弹框
+ showDetail: false, // 是否显示详细信息
+ total: 0, // 总记录数
const params = Object.assign(parameter, { expenseAccountSn: this.$route.params.sn })
return expenseAcctDetailFindList(params).then(res => {
@@ -203,20 +221,23 @@ export default {
- { title: '序号', dataIndex: 'no', width: '5%', align: 'center' },
+ { title: '序号', dataIndex: 'no', width: '4%', align: 'center' },
{ title: '记账类型', dataIndex: 'accountTypeDictValue', align: 'center', width: '8%', customRender: function (text) { return text || '--' } },
{ title: '记账名称', dataIndex: 'accountName', scopedSlots: { customRender: 'jzname' }, align: 'center', width: '10%' },
- { title: '所属区域', dataIndex: 'subareaNames', width: '6%', align: 'center', customRender: function (text) { return text || '--' } },
- { title: '所属分区', dataIndex: 'subareaAreaName', width: '6%', align: 'center', customRender: function (text) { return text || '--' } },
- { title: '所属省份', dataIndex: 'provinceName', align: 'center', width: '8%', customRender: function (text) { return text || '--' } },
- { title: '所属城市', dataIndex: 'cityName', align: 'center', width: '8%', customRender: function (text) { return text || '--' } },
- { title: '记账费用', dataIndex: 'expense', align: 'center', width: '10%', customRender: function (text) { return (text == 0 || text) ? _this.toThousands(text) : '--' } },
+ { title: '原记账名称', dataIndex: 'origAccountName', scopedSlots: { customRender: 'yjzname' }, align: 'center', width: '10%' },
+ { title: '所属区域', dataIndex: 'subareaNames', width: '5%', align: 'center', customRender: function (text) { return text || '--' } },
+ { title: '所属分区', dataIndex: 'subareaAreaName', width: '5%', align: 'center', customRender: function (text) { return text || '--' } },
+ { title: '所属省份', dataIndex: 'provinceName', align: 'center', width: '5%', customRender: function (text) { return text || '--' } },
+ { title: '所属城市', dataIndex: 'cityName', align: 'center', width: '5%', customRender: function (text) { return text || '--' } },
+ { title: '记账费用', dataIndex: 'expense', align: 'center', width: '8%', customRender: function (text) { return (text == 0 || text) ? _this.toThousands(text) : '--' } },
{ title: '费用承担方', scopedSlots: { customRender: 'fycdf' }, align: 'center', width: '15%' },
- { title: '产品信息', scopedSlots: { customRender: 'cpxx' }, align: 'center', width: '12%' },
+ { title: '产品信息', scopedSlots: { customRender: 'cpxx' }, align: 'center', width: '10%' },
{ title: '销售单号', dataIndex: 'salesBillNo', width: '8%', align: 'center', customRender: function (text) { return text || '--' } },
{ title: '备注', dataIndex: 'remarks', align: 'center', width: '10%', customRender: function (text) { return text || '--' } },
{ title: '操作', scopedSlots: { customRender: 'action' }, width: '100px', align: 'center' }
+ isBatch: false, // 是否变更记账名称
+ rowSelectionInfo: null // 批量选择的数据
@@ -224,10 +245,11 @@ export default {
handleEditBase (event) {
this.openBaseModal = true
+ // 刷新列表
refashData () {
- // 费用单基础详情
+ // 获取费用单基础详情
getDetail (type) {
@@ -245,46 +267,92 @@ export default {
+ // 查询列表
getExpenseDetailList () {
// 确认导入明细
hanldeImprotOk (obj) {
- console.log(obj)
expenseInsertImport(obj).then(res => {
this.getDetail(false)
- // 新增明细
- newExpenseDetail () {
+ // 批量修改明细
+ plEdit () {
+ if (!this.rowSelectionInfo || (this.rowSelectionInfo && this.rowSelectionInfo.selectedRowKeys.length < 1)) {
+ this.$message.warning('请在列表勾选后再进行操作!')
+ return
this.expenseAccountDetailSn = ''
this.openEpenseDetailModal = true
+ this.isBatch = true
- // 新增明细成功
- epenseDetailOk () {
- // 刷新列表
- this.openEpenseDetailModal = false
- this.getDetail(false)
+ // 表格选中项
+ rowSelectionFun (obj) {
+ this.rowSelectionInfo = obj || null
- // 设置产品
- setProduct (row) {
- this.openProductInfoModal = true
- this.expenseAccountDetailSn = row.expenseAccountDetailSn
- this.$refs.productInfo.setBaseData(row)
- // 新增产品成功
- productInfoOk () {
- this.openProductInfoModal = false
+ // 新增明细
+ newExpenseDetail () {
+ this.expenseAccountDetailSn = ''
+ this.openEpenseDetailModal = true
// 编辑明细
handleEdit (row) {
this.expenseAccountDetailSn = row.expenseAccountDetailSn
+ // 新增修改明细成功
+ epenseDetailOk (data) {
+ // 如果是批量修改
+ if (this.isBatch) {
+ const rows = this.rowSelectionInfo && this.rowSelectionInfo.selectedRows || []
+ const params = []
+ if (rows.length) {
+ rows.forEach(item => {
+ params.push({
+ expenseAccountDetailSn: item.expenseAccountDetailSn,
+ origAccountName: item.origAccountName,
+ origAccountNameSn: item.origAccountNameSn,
+ accountNameSn: data.accountNameSn,
+ accountType: data.accountType,
+ provinceName: data.provinceName,
+ provinceSn: data.provinceSn,
+ subareaArea: data.subareaArea,
+ cityName: data.cityName,
+ citySn: data.citySn,
+ expenseAccountNo: data.expenseAccountNo,
+ expenseAccountSn: data.expenseAccountSn,
+ remarks: data.remarks
+ // 组织数据
+ updateBatchExpenseAcctDetail(params).then(res => {
+ this.$message.success(res.message)
+ // 修改成功
+ this.$refs.table.clearTable()
+ this.epenseDetailClose()
+ this.getDetail(false)// 刷新列表
+ this.$refs.epenseDetailForm.spinning = false
+ // 单个修改成功
+ // 明细弹框关闭
+ epenseDetailClose () {
+ this.openEpenseDetailModal = false
+ this.isBatch = false
// 删除明细
handleDel (row) {
@@ -307,6 +375,19 @@ export default {
+ // 设置产品
+ setProduct (row) {
+ this.openProductInfoModal = true
+ this.expenseAccountDetailSn = row.expenseAccountDetailSn
+ this.$refs.productInfo.setBaseData(row)
+ // 新增产品成功
+ productInfoOk () {
+ this.openProductInfoModal = false
+ this.getDetail(false)
+ // 提交前,选择审批人员
beforeSubmit () {
if (this.total) {
this.openDepartUserModal = true
@@ -329,10 +410,10 @@ export default {
handleBack (data) {
this.$router.push({ name: 'expenseReimbursementList' })
+ // 初始化页面
- console.log(1)
if (this.$route.params.sn) { // 编辑页
- console.log(2)
@@ -343,10 +424,7 @@ export default {
activated () {
- // 如果是新页签打开或者进入新的子页(例:存在列表第2条数据编辑页页签时再打开第4条数据的编辑页),则重置当前页面
- if (this.$store.state.app.isNewTab || !this.$store.state.app.isNewSubTab) {
beforeRouteEnter (to, from, next) {
next(vm => {})
@@ -1,5 +1,6 @@
+ v-drag
v-model="opened"
@@ -19,18 +20,18 @@
<a-row>
<a-col :xs="24" :sm="24" :md="12" :lg="12" :xl="12">
<a-form-model-item label="申请人" prop="applyPersonSn">
- <employee style="width: 100%;" @change="employeeChange" id="expenseReimbursement-Employee" v-model="form.applyPersonSn"></employee>
+ <employee style="width: 100%;" @change="employeeChange" id="expenseReimbursementAddform-Employee" v-model="form.applyPersonSn"></employee>
<a-form-model-item label="申请部门" prop="applyDepartmentSn">
- <department style="width: 100%;" @change="departementChange" id="expenseReimbursement-Department" v-model="form.applyDepartmentSn"></department>
+ <department style="width: 100%;" @change="departementChange" id="expenseReimbursementAddform-Department" v-model="form.applyDepartmentSn"></department>
<a-form-model-item label="费用类型" prop="expenseType">
<expenseType
- id="expenseReimbursement-expenseType"
+ id="expenseReimbursementAddform-expenseType"
v-model="expenseTypes"
@change="expenseChange"
placeholder="请选择费用类型"
@@ -40,6 +41,7 @@
<a-form-model-item label="费用产生月" prop="expenseDate">
<a-month-picker
+ id="expenseReimbursementAddform-expenseDate"
placeholder="请选择月份"
v-model="form.expenseDate"
locale="zh-cn"
@@ -51,7 +53,7 @@
<a-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24">
<a-form-model-item label="主题" prop="title" :label-col="{span:3}" :wrapper-col="{span:19}">
- id="expenseReimbursementAdd-title"
+ id="expenseReimbursementAddform-title"
:maxLength="100"
:rows="3"
v-model.trim="form.title"
@@ -62,7 +64,7 @@
<a-form-model-item label="详细说明" prop="content" :label-col="{span:3}" :wrapper-col="{span:19}">
- id="expenseReimbursementAdd-content"
+ id="expenseReimbursementAddform-content"
placeholder="请详细描述费用报销内容(最多500个字符)"
v-model.trim="form.content"
@@ -76,7 +78,7 @@
<a-form-model-item label="附件" help="(支持图片、word、excel、PDF等格式,最多10个附件)" :label-col="{span:3}" :wrapper-col="{span:19}">
<Upload
style="height: 100%;"
- id="noticeEdit-attachList"
+ id="expenseReimbursementAddform-attachList"
v-model="form.expenseAccountFilesList"
ref="attachList"
:fileSize="10"
@@ -90,8 +92,8 @@
<div style="text-align: center;margin-top: 20px;">
- <a-button type="primary" :loading="spinning" @click="handleSubmit" id="chooseCustom-btn-submit">保存</a-button>
+ <a-button @click="cancel" style="margin-right: 15px" id="expenseReimbursementAddform-btn-back">取消</a-button>
+ <a-button type="primary" :loading="spinning" @click="handleSubmit" id="expenseReimbursementAddform-btn-submit">保存</a-button>
@@ -118,17 +120,17 @@ export default {
opened: this.show,
- expenseAccountSn: this.itemSn,
+ expenseAccountSn: this.itemSn, // 费用报销单sn
- title: '新增费用报销单',
+ title: '新增费用报销单', // 弹框标题
wrapperCol: { span: 14 }
- fromPage: null,
- attachList: [],
- attachAction: process.env.VUE_APP_API_BASE_URL + '/uploadGetFileInfo',
- expenseTypes: [],
+ fromPage: null, // 打开方式,sales:销售单转费用单,salesMearge:合并销售单转,其它手动创建
+ attachList: [], // 附件列表
+ attachAction: process.env.VUE_APP_API_BASE_URL + '/uploadGetFileInfo', // 附件上传地址
+ expenseTypes: [], // 费用类型值
applyPersonSn: undefined, // 申请人
applyDepartmentSn: undefined, // 申请部门
@@ -165,21 +167,24 @@ export default {
+ // 关闭弹框
this.$nextTick(() => {
if (this.expenseAccountSn) { // 编辑页
this.title = '编辑费用报销单'
this.title = '新增费用报销单'
- retsetForm(){
+ // 重置表单
+ retsetForm () {
@@ -208,19 +213,22 @@ export default {
this.$refs.ruleForm.validateField(['applyPersonSn', 'applyDepartmentSn'])
+ // 申请部门选择
departementChange () {
this.$refs.ruleForm.validateField('applyDepartmentSn')
+ // 费用产生月
expenseDateChange (v, d) {
this.form.expenseDate = d
+ // 费用产生月禁止范围
disabledDate (current) {
return current && current > moment().endOf('day')
+ // 费用类型选择
expenseChange (val, opts) {
- console.log(val, opts)
this.expenseTypes = val || []
this.form.expenseType = val && val[0] ? val[0] : ''
this.form.expenseType2 = val && val[1] ? val[1] : ''
@@ -237,24 +245,23 @@ export default {
item.fileType = item.extName
- // 设置数据
- setDetail(data, from){
- console.log(data)
+ // 编辑时设置数据
+ setDetail (data, from) {
this.fromPage = from
this.form = Object.assign(this.form, data)
// 获取附件列表
- if(this.$refs.attachList){
+ if (this.$refs.attachList) {
this.form.expenseAccountFilesList = ''
this.attachList = data.expenseAccountFilesList
this.$refs.attachList.setFileList(this.attachList)
- setTimeout(()=>{
+ setTimeout(() => {
this.expenseTypes = data.expenseType ? [this.form.expenseType, this.form.expenseType2, this.form.expenseType3] : []
}, 500)
+ // 获取详情
@@ -277,13 +284,20 @@ export default {
const form = JSON.parse(JSON.stringify(_this.form))
form.expenseDate = form.expenseDate + '-01'
form.expenseAccountFilesList = this.attachList
+ // console.log(form)
- console.log(form)
- // 从销售单转的费用
- if(_this.fromPage=='sales'){
- _this.$emit('expenseSaveOk',form)
+ // 从销售单转的费用,直接提交
+ if (_this.fromPage == 'sales') {
+ _this.$emit('expenseSaveOk', form, this.fromPage)
+ return false
+ // 从销售单转的费用,合并提交
+ if (_this.fromPage == 'salesMearge') {
return false
+ // 手动建的费用单
expenseAccountSave(form).then(res => {
_this.$message.success(res.message)
@@ -291,6 +305,7 @@ export default {
if (this.expenseAccountSn) {
_this.$emit('refashData')
+ // 跳转到费用明细单页面
_this.$router.push({ name: 'expenseReimbursementEdit', params: { sn: res.data.expenseAccountSn } })
@@ -311,7 +326,7 @@ export default {
this.opened = newValue
this.retsetForm()
@@ -46,7 +46,7 @@
<a-button id="departUser-back" @click="isShow = false" style="margin-right: 15px;">取消</a-button>
- <a-button :loading="uploading" style="margin-right: 15px;" @click="updateUser">刷新人员</a-button>
+ <a-button id="departUser-refash" :loading="uploading" style="margin-right: 15px;" @click="updateUser">刷新人员</a-button>
<a-button type="primary" id="departUser-save" @click="handleSave">确定</a-button>
@@ -67,7 +67,7 @@ export default {
- type: {
+ type: { // 类型
@@ -101,17 +101,19 @@ export default {
+ // 刷新人员数据
updateUser () {
this.uploading = true
this.$refs.departUserApp.updateDeptUser()
// this.$refs.departUserCc.updateDeptUser()
+ // 选择人员
changeApprovers (value) {
this.form.approvers = value
this.$refs.ruleForm.clearValidate()
+ // 获取人员组织树数据
getTreeVal (data) {
data.map(item => {
ret.push(item.value)
@@ -131,7 +133,6 @@ export default {
if (form.ccList) {
form.ccList = this.getTreeVal(form.ccList)
this.$emit('submit', form)
@@ -139,6 +140,7 @@ export default {
+ // 格式化人员数据
getFormatUser (list) {
list.map(item => {
@@ -146,16 +148,16 @@ export default {
return ret
+ // 获取默认人员选项
async getDefAudit () {
- // 费用单'' 提货单'billOfLading' 财务单'financeOrder'
+ // 费用单时 type = ''
if (!this.type) {
// 默认写死的人员
const data = await getDefaultCofig({ code: 'EXPENSE_ACCOUNT_DING_USER' }).then(res => res.data)
const ret = JSON.parse(data.value)
- console.log(ret)
this.form.approvers = this.getFormatUser(ret.approvers)
this.form.ccList = this.getFormatUser(ret.ccList)
- } else if (this.type && this.type == 'financeOrder') {
+ } else if (this.type && this.type == 'financeOrder') { // 财务单 type = 'financeOrder'
// 取最新一次审核通过值
const data = await queryLastFinishDingUser().then(res => res.data)
if (data.approversTaskList) {
@@ -164,7 +166,8 @@ export default {
if (data.ccTaskList) {
this.form.ccList = this.getFormatUser(data.ccTaskList)
- } else if (this.type && this.type == 'billOfLading') {
+ } else if (this.type && this.type == 'billOfLading') { // 提货单 type = 'billOfLading'
+ // 取最新一次审核通过值
const data = await getFinishDingUser().then(res => res.data)
this.form.approvers = this.getFormatUser(data.approversTaskList)
@@ -174,6 +177,7 @@ export default {
@@ -125,6 +125,7 @@ export default {
+ // 正确列表
nowColumns: [
{ title: '序号', dataIndex: 'no', width: '8%', align: 'center' },
{ title: '记账类型', dataIndex: 'importAccountType', width: '25%', align: 'center', customRender: function (text) { return text || '--' } },
@@ -138,6 +139,7 @@ export default {
{ title: '产品信息', scopedSlots: { customRender: 'cpxx' }, align: 'center', width: '15%' }
loadData: [],
+ // 错误数据列表
nowUnColumns: [
{ title: '序号', dataIndex: 'no', width: '9%', align: 'center' },
{ title: '记账类型', dataIndex: 'importAccountType', width: '20%', align: 'center', customRender: function (text) { return text || '--' } },
@@ -156,7 +158,7 @@ export default {
- // 格式化数据
+ // 格式化产品数据
formatProduct (list) {
@@ -169,6 +171,7 @@ export default {
+ // 格式化承担人员数据
formatSplit (list) {
@@ -185,6 +188,7 @@ export default {
+ // 没有承担人员
ret.push({
splitObjName: item.importSplitObjName,
splitObjType: item.importSplitObjType,
@@ -194,6 +198,7 @@ export default {
+ // 获取数据
const paramsData = JSON.parse(JSON.stringify(this.paramsData))
this.loadData = paramsData.rightList || []
@@ -227,7 +232,7 @@ export default {
this.isShow = false
- // 导出
+ // 导出错误项
handleError () {
if (_this.paramsData.errorList.length < 1) {
@@ -3,18 +3,19 @@
<a-page-header :ghost="false" :backIcon="false" class="expenseManagementDetail-cont">
- <a href="javascript:;" @click="handleBack">
+ <a href="javascript:;" @click="handleBack" id="epenseDetail-back-btn" >
<a-icon type="left"></a-icon>
返回列表
<span style="margin: 0 15px;color: #666;font-weight: bold;">单号:{{ detailData&&detailData.expenseAccountNo || '--' }}</span>
<span style="margin: 0 10px;color: #666;">申请人:{{ detailData&&detailData.applyPersonName }}</span>
- <a-button type="link" size="small" class="button-default" @click="showDetail=!showDetail">
+ <a-button id="epenseDetail-showDesc-btn" type="link" size="small" class="button-default" @click="showDetail=!showDetail">
<!-- 操作区,位于 title 行的行尾 -->
<template slot="extra">
+ <a-checkbox v-model="printRemark" v-if="$hasPermissions('B_eRPrint')" id="print-remark">打印备注</a-checkbox>
:disabled="detailData==null"
key="1"
@@ -79,6 +80,10 @@
@@ -133,23 +138,23 @@ export default {
disabled: false,
- baseData: null,
- printType: '',
- count: 0,
+ showTipModal: false, // 费用报销单打印预览弹框
+ printType: '', // 打印类型
+ count: 0, // 费用明细条数
- { title: '记账类型', dataIndex: 'accountTypeDictValue', align: 'center', width: '8%', customRender: function (text) { return text || '--' } },
- { title: '记账名称', dataIndex: 'accountName', scopedSlots: { customRender: 'jzname' }, align: 'center', width: '14%' },
+ { title: '记账类型', dataIndex: 'accountTypeDictValue', align: 'center', width: '6%', customRender: function (text) { return text || '--' } },
+ { title: '记账名称', dataIndex: 'accountName', scopedSlots: { customRender: 'jzname' }, align: 'center', width: '8%' },
+ { title: '原记账名称', dataIndex: 'origAccountName', scopedSlots: { customRender: 'yjzname' }, align: 'center', width: '8%' },
{ title: '所属区域', dataIndex: 'subareaNames', width: '6%', align: 'center', customRender: function (text) { return text || '--' } },
{ title: '所属分区', dataIndex: 'subareaAreaName', width: '6%', align: 'center', customRender: function (text) { return text || '--' } },
- { title: '记账费用', dataIndex: 'expense', align: 'right', width: '8%', customRender: function (text) { return (text || text == 0) ? _this.toThousands(text) : '--' } },
- { title: '费用承担方', scopedSlots: { customRender: 'fycdf' }, align: 'center', width: '14%' },
- { title: '销售单号', dataIndex: 'salesBillNo', width: '7%', align: 'center', customRender: function (text) { return text || '--' } },
+ { title: '所属省份', dataIndex: 'provinceName', align: 'center', width: '7%', customRender: function (text) { return text || '--' } },
+ { title: '所属城市', dataIndex: 'cityName', align: 'center', width: '7%', customRender: function (text) { return text || '--' } },
+ { title: '记账费用', dataIndex: 'expense', align: 'center', width: '8%', customRender: function (text) { return (text || text == 0) ? _this.toThousands(text) : '--' } },
+ { title: '费用承担方', scopedSlots: { customRender: 'fycdf' }, align: 'center', width: '12%' },
+ { title: '销售单号', dataIndex: 'salesBillNo', width: '6%', align: 'center', customRender: function (text) { return text || '--' } },
{ title: '备注', dataIndex: 'remarks', align: 'center', width: '8%', customRender: function (text) { return text || '--' } }
@@ -170,13 +175,13 @@ export default {
- detailData: null, // 详情数据
- total: 0
+ total: 0, // 总条数
+ printRemark: false // 是否打印备注
- // 返回
+ // 返回列表
@@ -192,8 +197,10 @@ export default {
if (type == 'preview') {
this.showTipModal = true
+ // 设置打印内容
this.$refs.printModal.setData([{
+ printRemark: this.printRemark,
expenseInfo: this.detailData,
fyListData,
spListData: spListData || []
@@ -207,6 +214,7 @@ export default {
+ // 打印成功
printOk (data) {
if (data && data.status == 200) {
expenseAccountUpdateBatch([{
@@ -223,7 +231,7 @@ export default {
+ // 详情信息
this.detailData = null
@@ -20,6 +20,7 @@
<!-- 费用承担方类型 -->
<template slot="fycdftype" slot-scope="text,record,index">
+ :id="'cdfTable-splitObjType-'+index"
code="EXPENSE_ACCOUNT_DETAIL_SPLIT_OBJ_TYPE"
style="width: 100%;"
@@ -32,7 +33,7 @@
<template slot="fycdf" slot-scope="text,record,index">
<!-- 部门 -->
- <department v-show="record.splitObjType=='DEPARTMENT'" style="width: 100%;" placeholder="请选择承担方" v-model="record.splitObjSn"></department>
+ <department :id="'cdfTable-department-'+index" v-show="record.splitObjType=='DEPARTMENT'" style="width: 100%;" placeholder="请选择承担方" v-model="record.splitObjSn"></department>
v-show="record.splitObjType=='CUSTOMER'"
@@ -46,19 +47,22 @@
v-show="record.splitObjType=='SUPPLIER'"
enableFlag="1"
+ :id="'cdfTable-supplier-'+index"
v-model="record.splitObjSn"
placeholder="请选择(输入名称搜索)"></supplier>
<!-- 其它往来 -->
- <otherTransactions
- style="width: 100%;"
- v-show="record.splitObjType=='OTHER_ORG'"
- v-model="record.splitObjSn"
- placeholder="请选择(输入名称搜索)"></otherTransactions>
+ <otherTransactions
+ :id="'cdfTable-otherTransactions-'+index"
+ v-show="record.splitObjType=='OTHER_ORG'"
+ v-model="record.splitObjSn"
+ placeholder="请选择(输入名称搜索)"></otherTransactions>
<span v-if="!record.splitObjType">--</span>
<!-- 费用承担金额 -->
<template slot="amount" slot-scope="text,record,index">
+ :id="'cdfTable-splitAmount-'+index"
v-show="record.splitObjType"
v-model="record.splitAmount"
@@ -75,10 +79,12 @@
<div
style="display: flex;align-items: center;width: 100%;padding: 5px 0;border-bottom: 1px solid #eee;"
v-for="(item,idx) in record.childDetailSplitList"
:key="item.id">
<employee style="width: 40%;" placeholder="请选择承担人员" v-model="item.splitObjSn"></employee>
+ :id="'cdfTable-childsplitAmount-'+index"
style="width: 40%;"
v-model="item.splitAmount"
@@ -89,6 +95,7 @@
<div style="padding-left: 15px;" v-if="record.childDetailSplitList&&record.childDetailSplitList.length>1">
@click="handleDelCdry(record,idx)"
+ :id="'cdfTable-childsplitAmoun-del-'+index"
type="danger"
@@ -98,6 +105,7 @@
<div v-if="record.childDetailSplitList&&idx == record.childDetailSplitList.length - 1">
@click="handleAddCdry(record,idx)"
+ :id="'cdfTable-childsplitAmoun-add-'+index"
title="添加承担人员"
@@ -110,6 +118,7 @@
<template slot="action" slot-scope="text,record,index">
+ :id="'cdfTable-del-'+index"
@@ -118,6 +127,7 @@
<template slot="footer" slot-scope="currentPageData">
+ :id="'cdfTable-add-'+index"
block
@@ -148,10 +158,12 @@ export default {
+ // 费用明细列表
list (newValue, oldValue) {
this.dataList = JSON.parse(JSON.stringify(newValue))
this.dataList.map(item => {
item.no = item.id
+ // 部门
if (item.splitObjType == 'DEPARTMENT' && (!item.childDetailSplitList || item.childDetailSplitList.length == 0)) {
this.$set(item, 'childDetailSplitList', [{
splitObjType: 'EMPLOYEE',
@@ -159,12 +171,14 @@ export default {
splitAmount: 0
}])
+ // 客户
if (item.splitObjType == 'CUSTOMER') {
this.$refs['custList-' + item.no].setDufaultVal(item.splitObjName)
+ // 默认添加一条
if (this.dataList.length == 0) {
this.handleAddRow()
@@ -198,24 +212,27 @@ export default {
splitObjSn: undefined,
splitAmount: Number(row.splitAmount).toFixed(2)
}] : [])
if (row.splitObjType == 'CUSTOMER') {
this.$set(row, 'splitObjSn', undefined)
this.$set(row, 'splitObjName', undefined)
this.$refs['custList-' + row.no].dealerName = []
+ // 供应商
if (row.splitObjType == 'SUPPLIER') {
+ // 费用合计
this.$emit('fyTotal', this.fyTotal())
- // 经销商
+ // 选择经销商
custChange (v, obj, id) {
const row = this.dataList[id.split('-')[1]]
this.$set(row, 'splitObjSn', v.key)
this.$set(row, 'splitObjName', obj.dealerName)
- // 承担费用
+ // 选择承担费用
splitAmountChange () {
@@ -232,6 +249,7 @@ export default {
hasError = 1
ret.map(item => {
+ // 如果时部门
if (item.splitObjType == 'DEPARTMENT') {
const al = item.childDetailSplitList.filter(a => !a.splitObjSn && a.splitAmount > 0)
if (al.length) {
@@ -317,6 +335,7 @@ export default {
+ // 费用合计计算
fyTotal: function () {
let total = 0
this.dataList.map(item => { total = total + item.splitAmount })
class="epenseDetailModal-modal"
- :title="title+'费用明细'"
+ :title="title"
width="60%">
@@ -33,16 +33,28 @@
<a-form-model-item label="记账名称" prop="accountNameSn">
- <department v-show="form.accountType=='INNER_ACCOUNT'" @change="accountNameSnChange" v-model="form.accountNameSn" placeholder="请选择记账名称(输入名称搜索)"></department>
+ <department id="epenseDetailModal-accountName" v-show="form.accountType=='INNER_ACCOUNT'" @change="accountNameSnChange" v-model="form.accountNameSn" placeholder="请选择记账名称(输入名称搜索)"></department>
- <custList v-show="form.accountType=='CUSTOMER'" cooperateFlag="1" ref="custList" @change="accountNameSnChange" placeholder="请选择记账名称(输入名称搜索)"></custList>
+ <custList
+ id="epenseDetailModal-accountName1"
+ v-show="form.accountType=='CUSTOMER'"
+ cooperateFlag="1"
+ ref="custList"
+ @change="accountNameSnChange"
+ placeholder="请选择记账名称(输入名称搜索)"></custList>
- <supplier v-show="form.accountType=='OUT_ACCOUNT'" enableFlag="1" @change="accountNameSnChange" v-model="form.accountNameSn" placeholder="请选择记账名称(输入名称搜索)"></supplier>
+ <supplier
+ id="epenseDetailModal-accountName2"
+ v-show="form.accountType=='OUT_ACCOUNT'"
+ enableFlag="1"
+ v-model="form.accountNameSn"
+ placeholder="请选择记账名称(输入名称搜索)"></supplier>
- <otherTransactions v-show="form.accountType=='OTHER_ACCOUNT'" @change="accountNameSnChange" v-model="form.accountNameSn" placeholder="请选择记账名称(输入名称搜索)"></otherTransactions>
+ <otherTransactions id="epenseDetailModal-accountName3" v-show="form.accountType=='OTHER_ACCOUNT'" @change="accountNameSnChange" v-model="form.accountNameSn" placeholder="请选择记账名称(输入名称搜索)"></otherTransactions>
<span v-if="!form.accountType">
- <a-select style="width: 100%" placeholder="请选择记账名称">
- <a-select-option value="" :disabled="true">
+ <a-select style="width: 100%" placeholder="请选择记账名称" id="epenseDetailModal-accountName4">
+ <a-select-option value="" :disabled="true" id="epenseDetailModal-accountName-kong">
请先选择记账类型
@@ -65,7 +77,7 @@
<a-form-model-item label="所属省份" prop="provinceSn">
- <Area id="epenseDetailModal-area" @change="provinceChange" placeholder="请选择所属省份" v-model="form.provinceSn"></Area>
+ <Area id="epenseDetailModal-provinceSn" @change="provinceChange" placeholder="请选择所属省份" v-model="form.provinceSn"></Area>
@@ -73,7 +85,7 @@
<a-form-model-item label="所属城市" prop="citySn">
<Area
- id="epenseDetailModal-area"
+ id="epenseDetailModal-citySn"
ref="city"
@change="cityChange"
placeholder="请选择所属城市"
@@ -82,7 +94,13 @@
v-model="form.citySn"></Area>
- <a-col :xs="24" :sm="24" :md="12" :lg="12" :xl="12">
+ <a-col
+ :xs="24"
+ :sm="24"
+ :md="12"
+ :lg="12"
+ :xl="12"
+ v-if="!isBatch">
<a-form-model-item label="记账费用">
style="width: 100%;color: red;font-weight: bold;"
@@ -96,13 +114,13 @@
<a-form-model-item label="备注" prop="remarks" :label-col="{span:2}" :wrapper-col="{span:20}">
- <a-textarea placeholder="请输入备注(最多500个字符)" v-model="form.remarks" :rows="4" :maxLength="500"/>
+ <a-textarea id="epenseDetailModal-remarks" placeholder="请输入备注(最多500个字符)" v-model="form.remarks" :rows="4" :maxLength="500"/>
- <epenseCdfModal ref="epenseCdf" :list="form.detailSplitList" @fyTotal="getFyTotal"></epenseCdfModal>
+ <epenseCdfModal v-if="!isBatch" ref="epenseCdf" :list="form.detailSplitList" @fyTotal="getFyTotal"></epenseCdfModal>
<a-button id="epenseDetailModal-back" @click="isShow = false" style="margin-right: 15px;">取消</a-button>
@@ -139,9 +157,13 @@ export default {
- expenseAccountDetailSn: {
+ expenseAccountDetailSn: { // 明细sn
+ isBatch: { // 是否批量修改
+ type: Boolean,
+ default: false
@@ -171,7 +193,7 @@ export default {
expenseAccountSn: '', // 报销单SN
expenseAccountNo: '', // 报销单号
expenseAccountDetailSn: '', // 报销明细sn
- detailSplitList: []
+ detailSplitList: [] // 费用承担方明细
accountType: [
@@ -198,9 +220,9 @@ export default {
this.form.citySn = row.citySn
this.form.provinceName = row.provinceName
this.form.cityName = row.cityName
- this.form.subareaArea.subareaName = row.subareaArea.subareaName
- this.form.subareaArea.subareaAreaName = row.subareaArea.subareaAreaName
- this.subareaList = [row.subareaArea.subareaName, row.subareaArea.subareaAreaName]
+ this.form.subareaArea.subareaName = row.subareaArea ? row.subareaArea.subareaName : ''
+ this.form.subareaArea.subareaAreaName = row.subareaArea ? row.subareaArea.subareaAreaName : ''
+ this.subareaList = row.subareaArea ? [row.subareaArea.subareaName, row.subareaArea.subareaAreaName] : []
this.form.accountNameSn = ''
this.form.provinceSn = ''
@@ -224,7 +246,6 @@ export default {
// 省
provinceChange (v, row) {
- console.log(v, row)
this.form.provinceName = row ? row.name : ''
this.form.provinceSn = v || ''
this.form.citySn = undefined
@@ -264,58 +285,65 @@ export default {
- const cdfList = this.$refs.epenseCdf.getList()
- if (cdfList[0] == 1) {
- this.$warning({
- title: '是否存在以下情况,请按照要求填写',
- content: <div><p>1、费用承担方至少有一个</p><p>2、带星号的列为必填项,不能为空</p></div>,
- centered: true
- return
- if (cdfList[0] == 3) {
- content: '请检查每行承担人员是否已经选择',
- if (cdfList[0] == 2) {
- content: '请检查每行人员平摊费用合计是否等于承担金额',
- // 获取承担人列表数据
- form.detailSplitList = cdfList[1]
form.provinceName = form.provinceName ? form.provinceName : ''
form.provinceSn = form.provinceSn ? form.provinceSn : ''
form.citySn = form.citySn ? form.citySn : ''
form.cityName = form.cityName ? form.cityName : ''
- form.expense = Math.abs(form.expense)
+ // 如果是批量修改记账名称
+ _this.$emit('ok', form)
+ // 校验明细承担人列表
+ const cdfList = this.$refs.epenseCdf.getList()
+ if (cdfList[0] == 1) {
+ this.$warning({
+ title: '是否存在以下情况,请按照要求填写',
+ content: <div><p>1、费用承担方至少有一个</p><p>2、带星号的列为必填项,不能为空</p></div>,
+ centered: true
+ if (cdfList[0] == 3) {
+ content: '请检查每行承担人员是否已经选择',
+ if (cdfList[0] == 2) {
+ content: '请检查每行人员平摊费用合计是否等于承担金额',
+ // 获取承担人列表数据
+ form.detailSplitList = cdfList[1]
+ form.expense = Math.abs(form.expense) // 费用合计
- expenseAcctDetailSave(form).then(res => {
- setTimeout(() => {
- _this.$emit('ok')
+ expenseAcctDetailSave(form).then(res => {
+ _this.$emit('ok')
+ }, 200)
- }, 200)
@@ -367,13 +395,14 @@ export default {
this.form.expenseAccountSn = this.expenseAccountSn
this.form.expenseAccountNo = this.expenseAccountNo
if (this.expenseAccountDetailSn) {
- this.title = '编辑'
+ this.title = '编辑费用明细'
this.form.expenseAccountDetailSn = this.expenseAccountDetailSn || ''
this.getExpenseAccountDetail()
this.resetForm()
- this.title = '新增'
+ this.title = this.isBatch ? '批量变更记账名称' : '新增费用明细'
@@ -17,9 +17,9 @@
<ul>
<li>1) 导入的Excel文件中必须包含名为“记账类型”、“记账名称”、“费用承担方类型”、“费用承担方”、“费用承担金额”的列,且名称必须相同</li>
<li>2) 其他列可根据实际情况填写,如果符合规则,系统会一起导入</li>
- <li><a :href="filePath" style="margin: 5px 0 0 15px;display: block;">
- <a-icon type="download" style="padding-right: 5px;" />下载导入模板
- </a></li>
+ <li><a :href="filePath" id="importGuide-link" style="margin: 5px 0 0 15px;display: block;">
+ <a-icon type="download" style="padding-right: 5px;" />下载导入模板
+ </a></li>
@@ -90,7 +90,7 @@ export default {
exportLoading: false,
- filePath: location.protocol + '//' +location.host + '/templ/费用明细模板.xlsx' + '?a=' + new Date().getTime()
+ filePath: location.protocol + '//' + location.host + '/templ/费用明细模板.xlsx' + '?a=' + new Date().getTime() // 模板地址
@@ -109,13 +109,11 @@ export default {
// 上传文件 change
changeImport (file) {
- console.log(file, JSON.parse(file))
if (file && JSON.parse(file).length > 0) {
this.paramsData = Object.assign({}, JSON.parse(file)[0] || null, this.params)
this.paramsData = null
- console.log(this.paramsData)
// 导入
hanldeOk (obj) {
@@ -78,9 +78,9 @@
<span class="table-page-search-submitButtons">
- <a-button type="primary" :disabled="disabled" @click="searchForm">查询</a-button>
- <a-button style="margin-left: 8px" :disabled="disabled" @click="resetSearchForm()">重置</a-button>
- <a @click="advanced=!advanced" style="margin-left: 8px">
+ <a-button type="primary" :disabled="disabled" @click="searchForm" id="salesManagementList-search">查询</a-button>
+ <a-button style="margin-left: 8px" :disabled="disabled" @click="resetSearchForm()" id="salesManagementList-reset">重置</a-button>
+ <a @click="advanced=!advanced" style="margin-left: 8px" id="salesManagementList-advanced">
@@ -94,9 +94,16 @@
- <a-button type="primary" v-if="$hasPermissions('B_eRNew')" @click="handleEdit()">新增</a-button>
- <a-button type="primary" :loading="spinning" @click="handlePlPrint()" ghost>批量打印</a-button>
- <span style="margin-left: 8px">
+ <a-button id="salesManagementList-add" type="primary" v-if="$hasPermissions('B_eRNew')" @click="handleEdit()">新增</a-button>
+ id="salesManagementList-batchPrint"
+ v-if="$hasPermissions('B_eRPrint')"
+ :loading="spinning"
+ @click="handlePlPrint()"
+ ghost>批量打印</a-button>
+ <a-checkbox id="salesManagementList-print-remarks" v-model="printRemark" v-if="$hasPermissions('B_eRPrint')">打印备注</a-checkbox>
+ <span style="margin-left: 8px" v-if="$hasPermissions('B_eRPrint')">
<template v-if="rowSelectionInfo && rowSelectionInfo.selectedRowKeys.length>0">{{ `已选 ${rowSelectionInfo.selectedRowKeys.length} 项` }}</template>
@@ -117,7 +124,7 @@
<template slot="expenseAccountNo" slot-scope="text, record">
- <span v-if="$hasPermissions('B_eRdetail')" class="link-bule" @click="handleDetail(record)">{{ record.expenseAccountNo }}</span>
+ <span :id="'salesManagementList-detail-'+record.id" v-if="$hasPermissions('B_eRdetail')" class="link-bule" @click="handleDetail(record)">{{ record.expenseAccountNo }}</span>
<div v-else>{{ record.expenseAccountNo||'--' }}</div>
<!-- 总数量 -->
@@ -130,43 +137,48 @@
- v-if="record.state=='WAIT_SUBMIT'&&$hasPermissions('B_ERtEdit')"
- class="button-info"
- @click="handleEdit(record)"
- 编辑
- v-if="record.state=='WAIT_SUBMIT'&&$hasPermissions('B_ERDel')"
- v-if="record.state!='WAIT_SUBMIT'&&$hasPermissions('B_ERAudit')"
- @click="handleSH(record)"
- 审核进度
- v-if="record.state=='AUDIT_REJECT'"
- @click="againEdit(record)"
- 再次编辑
- <!-- <span v-if="record.state=='AUDIT_REJECT' || record.state=='AUDIT_PASS'">--</span> -->
+ :id="'salesManagementList-edit-'+record.id"
+ v-if="record.state=='WAIT_SUBMIT'&&$hasPermissions('B_ERtEdit')"
+ @click="handleEdit(record)"
+ 编辑
+ :id="'salesManagementList-del-'+record.id"
+ v-if="record.state=='WAIT_SUBMIT'&&$hasPermissions('B_ERDel')"
+ :id="'salesManagementList-audit-'+record.id"
+ v-if="record.state!='WAIT_SUBMIT'&&$hasPermissions('B_ERAudit')"
+ @click="handleSH(record)"
+ 审核进度
+ :id="'salesManagementList-editAge-'+record.id"
+ v-if="record.state=='AUDIT_REJECT'"
+ @click="againEdit(record)"
+ 再次编辑
@@ -216,10 +228,10 @@ export default {
openModal: false, // 审核进度弹框是否显示
openBaseModal: false, // 基础信息新建
+ showTipModal: false, // 打印预览组件
itemSn: '', // 费用单sn
+ expenseTypes: [], // 费用类型
expenseDate: moment().format('YYYY-MM'), // 月份
@@ -231,7 +243,7 @@ export default {
printStatus: undefined, // 打印状态
state: undefined, // 状态
salesBillNo: '', // 销售单号
@@ -273,7 +285,8 @@ export default {
- rowSelectionInfo: null // 批量选择的数据
+ rowSelectionInfo: null, // 批量选择的数据
@@ -281,6 +294,7 @@ export default {
+ // 打印结束,记录打印状态
const rows = this.rowSelectionInfo && this.rowSelectionInfo.selectedRows || []
@@ -312,10 +326,11 @@ export default {
_this.$message.warning('请在列表勾选后再进行批量操作!')
+ // 开始打印
const pageData = []
const businessSnList = []
+ // 循环获取
for (let i = 0; i < rows.length; i++) {
// 费用明细
const fyListData = await expenseAcctDetailFindList({ expenseAccountSn: rows[i].expenseAccountSn }).then(res => res.data)
@@ -323,7 +338,9 @@ export default {
if (rows[i].state != 'WAIT_SUBMIT') {
businessSnList.push(rows[i].expenseAccountSn)
+ // 组装数据
pageData.push({
expenseInfo: rows[i],
fyListData: fyListData,
spListData: []
@@ -337,7 +354,6 @@ export default {
item.spListData = sp ? sp.taskVOList : []
- console.log(pageData)
// 打开预览弹框
@@ -345,25 +361,28 @@ export default {
+ // 费用发生月份
onChange (date, dateString) {
this.queryParam.expenseDate = dateString
+ // 费用发生月份禁用范围
this.queryParam.expenseType = val && val[0] ? val[0] : ''
this.queryParam.expenseType2 = val && val[1] ? val[1] : ''
this.queryParam.expenseType3 = val && val[2] ? val[2] : ''
+ // 详情页面
handleDetail (row) {
this.$router.push({ name: 'expenseReimbursementListDetail', params: { sn: row.expenseAccountSn } })
// 新增、编辑
if (row && row.expenseAccountSn) {
this.$router.push({ name: 'expenseReimbursementEdit', params: { sn: row.expenseAccountSn } })
@@ -384,15 +403,13 @@ export default {
_this.$refs.table.refresh()
- // 审核进度
+ // 审核进度弹框
handleSH (row) {
this.itemSn = row.expenseAccountSn
@@ -417,11 +434,12 @@ export default {
+ // 重置列表
expenseDate: '', // 月份
@@ -439,12 +457,14 @@ export default {
this.expenseTypes = []
this.searchForm()
@@ -1,126 +1,129 @@
- <div class="container-print-view"
- style="width:100%;font-size: 12pt;height: 600px;overflow: auto;"
+ <div
+ class="container-print-view"
+ style="width:100%;font-size: 12pt;height: 600px;overflow: auto;"
- <div class="expense-detail-print" style="width:564pt;margin:0 auto;" v-for="item in list" :key="item.expenseInfo.expenseAccountSn">
- <div class="container-title" style="text-align: center;font-size: 24px;font-weight: 600;margin: 20px 0;">箭冠汽配企业费用报销单</div>
- <div class="container-info" style="width:564pt;border: 1px solid #000000;">
- <div class="container-info-basics" v-if="item.expenseInfo">
- <div class="basics-item" style="width: 100%;border-bottom: 1px solid #000000;padding:0;margin:0;">
- <span style="display: inline-block;width: 50%;padding: 10px;border-right: 1px solid #000000;">申请人:{{ item.expenseInfo.applyPersonName?item.expenseInfo.applyPersonName:'' }}</span>
- <span style="display: inline-block;border-right: none;padding: 10px;">申请部门:{{ item.expenseInfo.applyDepartmentName?item.expenseInfo.applyDepartmentName:'' }}</span>
- <span style="display: inline-block;width: 50%;padding: 10px;border-right: 1px solid #000000;">费用类型:{{ item.expenseInfo.expenseTypeName?item.expenseInfo.expenseTypeName:'' }}</span>
- <span style="display: inline-block;border-right: none;padding: 10px;">费用发生月份:{{ item.expenseInfo.expenseDate?item.expenseInfo.expenseDate.substring(0, 7):'' }}</span>
- <span style="display: inline-block;width: 50%;padding: 10px;border-right: 1px solid #000000;">费用单号:{{ item.expenseInfo.expenseAccountNo?item.expenseInfo.expenseAccountNo:'' }}{{ item.expenseInfo.stateDictValue?'('+item.expenseInfo.stateDictValue+')':'' }}</span>
- <span style="display: inline-block;border-right: none;padding: 10px;">合计金额:{{ (item.expenseInfo.applyExpenseTotal ||item.expenseInfo.applyExpenseTotal==0)?item.expenseInfo.applyExpenseTotal+'元':'' }}</span>
- <div class="basics-item" style="width: 100%;border-bottom: 1px solid #000000;overflow: hidden;">
- <div style="border-right: none;float: left;padding: 10px 0 10px 10px;">主题:</div>
- <div style="padding: 10px 10px 10px 50px;text-align: center;font-weight: bold;">
- {{ item.expenseInfo.title?item.expenseInfo.title:'' }}
+ <div class="expense-detail-print" style="width:564pt;margin:0 auto;" v-for="item in list" :key="item.expenseInfo.expenseAccountSn">
+ <div class="container-title" style="text-align: center;font-size: 24px;font-weight: 600;margin: 20px 0;">箭冠汽配企业费用报销单</div>
+ <div class="container-info" style="width:564pt;border: 1px solid #000000;">
+ <div class="container-info-basics" v-if="item.expenseInfo">
+ <div class="basics-item" style="width: 100%;border-bottom: 1px solid #000000;padding:0;margin:0;">
+ <span style="display: inline-block;width: 50%;padding: 10px;border-right: 1px solid #000000;">申请人:{{ item.expenseInfo.applyPersonName?item.expenseInfo.applyPersonName:'' }}</span>
+ <span style="display: inline-block;border-right: none;padding: 10px;">申请部门:{{ item.expenseInfo.applyDepartmentName?item.expenseInfo.applyDepartmentName:'' }}</span>
- <span style="display: inline-block;width: 100%;padding: 10px 10px 5px;border-right: 1px solid #000000;border-right: none;">详细说明:</span>
- <div style="padding:0 20px 10px 40px;">
- <div v-for="(ditem,index) in item.expenseInfo.content" :key="index+'-content'">
- {{ ditem || '--' }}
+ <span style="display: inline-block;width: 50%;padding: 10px;border-right: 1px solid #000000;">费用类型:{{ item.expenseInfo.expenseTypeName?item.expenseInfo.expenseTypeName:'' }}</span>
+ <span style="display: inline-block;border-right: none;padding: 10px;">费用发生月份:{{ item.expenseInfo.expenseDate?item.expenseInfo.expenseDate.substring(0, 7):'' }}</span>
+ <span style="display: inline-block;width: 50%;padding: 10px;border-right: 1px solid #000000;">费用单号:{{ item.expenseInfo.expenseAccountNo?item.expenseInfo.expenseAccountNo:'' }}{{ item.expenseInfo.stateDictValue?'('+item.expenseInfo.stateDictValue+')':'' }}</span>
+ <span style="display: inline-block;border-right: none;padding: 10px;">合计金额:{{ (item.expenseInfo.applyExpenseTotal ||item.expenseInfo.applyExpenseTotal==0)?item.expenseInfo.applyExpenseTotal+'元':'' }}</span>
+ <div class="basics-item" style="width: 100%;border-bottom: 1px solid #000000;overflow: hidden;">
+ <div style="border-right: none;float: left;padding: 10px 0 10px 10px;">主题:</div>
+ <div style="padding: 10px 10px 10px 50px;text-align: center;font-weight: bold;">
+ {{ item.expenseInfo.title?item.expenseInfo.title:'' }}
+ <span style="display: inline-block;width: 100%;padding: 10px 10px 5px;border-right: 1px solid #000000;border-right: none;">详细说明:</span>
+ <div style="padding:0 20px 10px 40px;">
+ <div v-for="(ditem,index) in item.expenseInfo.content" :key="index+'-content'">
+ {{ ditem || '--' }}
- <div class="container-fytable" style="padding:0 10px;" v-if="item.fyListData">
- <div class="table-title" style="padding: 10px 0;">费用明细:</div>
- <table
- border="1"
- cellspacing="0"
- cellpadding="0"
- style="width: 100%;border-collapse: collapse;font-size:10pt;text-align: center;"
- align="center">
- <thead>
- <tr>
- <th style="padding:5px 0;width:6%;">序号</th>
- <th style="padding:5px 0;width:22%;">记账方</th>
- <!-- <th style="padding:5px 0;width:15%;">区域/省/市</th> -->
- <th style="padding:5px 0;width:10%;">记账费用</th>
- <th style="padding:5px 0;width:30%;">费用承担方</th>
- <th style="padding:5px 0;width:22%;">产品信息</th>
- </tr>
- </thead>
- <tbody>
- <tr v-for="(fyItem,index) in item.fyListData" :key="index">
- <td style="text-align: center;width:6%;">{{ index+1 }}</td>
- <td style="text-align: left;width:22%;padding:0 5px;">
- <div>{{ fyItem.accountTypeDictValue }}</div>
- <div>{{ fyItem.accountName||'' }}</div>
- <div v-if="fyItem.accountNameFnumber">({{ fyItem.accountNameFnumber }})</div>
- </td>
- <!-- <td style="text-align: left;width:15%;padding:5px 5px;">
+ <div class="container-fytable" style="padding:0 10px;" v-if="item.fyListData">
+ <div class="table-title" style="padding: 10px 0;">费用明细:</div>
+ <table
+ border="1"
+ cellspacing="0"
+ cellpadding="0"
+ style="width: 100%;border-collapse: collapse;font-size:10pt;text-align: center;"
+ align="center">
+ <thead>
+ <tr>
+ <th style="padding:5px 0;width:6%;">序号</th>
+ <th style="padding:5px 0;width:22%;">记账方</th>
+ <!-- <th style="padding:5px 0;width:15%;">区域/省/市</th> -->
+ <th style="padding:5px 0;width:10%;">记账费用</th>
+ <th style="padding:5px 0;width:30%;">费用承担方</th>
+ <th style="padding:5px 0;width:22%;">产品信息</th>
+ <th v-if="item.printRemark">备注</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr v-for="(fyItem,index) in item.fyListData" :key="index">
+ <td style="text-align: center;width:6%;">{{ index+1 }}</td>
+ <td style="text-align: left;width:22%;padding:0 5px;">
+ <div>{{ fyItem.accountTypeDictValue }}</div>
+ <div>{{ fyItem.accountName||'' }}</div>
+ <div v-if="fyItem.accountNameFnumber">({{ fyItem.accountNameFnumber }})</div>
+ </td>
+ <!-- <td style="text-align: left;width:15%;padding:5px 5px;">
<div>{{ fyItem.subareaNames }}</div>
<div>{{ fyItem.provinceName }}</div>
<div>{{ fyItem.cityName }}</div>
</td> -->
- <td style="text-align: right;width:10%;padding:0 5px;">{{ fyItem.expense||fyItem.expense==0?toThousands(fyItem.expense):'' }}</td>
- <td style="text-align: left;width:30%;padding:0 5px;vertical-align: top;">
- <div v-for="(ditem,index) in fyItem.detailSplitList" :key="ditem.id+'-'+index" style="padding: 3px 0;" >
- {{ ditem.splitObjName }}
- <span v-if="ditem.splitObjFnumber">({{ ditem.splitObjFnumber }})</span>
- <span v-if="ditem.childDetailSplit&&ditem.childDetailSplit.splitObjName">/</span>
- {{ ditem.childDetailSplit?ditem.childDetailSplit.splitObjName:'' }}: {{ ditem.childDetailSplit?toThousands(ditem.childDetailSplit.splitAmount):toThousands(ditem.splitAmount) }}
- <td style="text-align: left;width:22%;padding:0 5px;vertical-align: top;">
- <div v-for="ditem in fyItem.detailProductsList" :key="ditem.id" style="padding: 3px 0;">
- <div v-if="ditem.productCode">{{ ditem.productCode }}: {{ toThousands(ditem.expense) }}</div>
- <div v-else-if="ditem.productBrandName">{{ ditem.productBrandName }}<span v-if="ditem.productTypeShowName">/</span>{{ ditem.productTypeShowName }}: {{ toThousands(ditem.expense) }}</div>
- <div v-else>{{ ditem.productTypeShowName }}: {{ toThousands(ditem.expense) }}</div>
- </tbody>
- </table>
- <div class="container-fytable" style="padding:0 10px 5px;" v-if="item.spListData&&item.spListData.length">
- <p class="table-title">审批信息:</p>
- style="width: 100%;border-collapse: collapse;border: 1px solid black;font-size:10pt;text-align: center;"
- <tr style="height: 30px;padding: 5px;">
- <th style="padding:5px 0;width:8%;">序号</th>
- <th style="padding:5px 0;width:15%;">人员姓名</th>
- <th style="padding:5px 0;width:15%;">人员类型</th>
- <th style="padding:5px 0;width:10%;">状态</th>
- <th style="padding:5px 0;width:17%;">审批意见</th>
- <th style="padding:5px 0;width:15%;">附件</th>
- <th style="padding:5px 0;width:20%;">时间</th>
- <tr style="height: 30px;padding: 5px;" v-for="(spitem,index) in item.spListData" :key="index">
- <td style="padding:5px 0;">{{ index+1||'' }}</td>
- <td style="padding:5px 0;">{{ spitem.userName||'' }}</td>
- <td style="padding:5px 0;">{{ spitem.userType||'' }}</td>
- <td style="padding:5px 0;">{{ spitem.state||'' }}</td>
- <td style="padding:5px 0;">{{ spitem.remark||'' }}</td>
- <td style="padding:5px 0;">{{ spitem.hasAttachments!= '0' ? '请在钉钉中查看附件内容' : '--' }}</td>
- <td style="padding:5px 0;">{{ spitem.date||'' }}</td>
- </tr></tbody>
- <div class="container-fytable" style="padding:0 10px;" v-else>
- <p class="table-title">审批信息:暂无</p>
+ <td style="text-align: right;width:10%;padding:0 5px;">{{ fyItem.expense||fyItem.expense==0?toThousands(fyItem.expense):'' }}</td>
+ <td style="text-align: left;width:30%;padding:0 5px;vertical-align: top;">
+ <div v-for="(ditem,index) in fyItem.detailSplitList" :key="ditem.id+'-'+index" style="padding: 3px 0;" >
+ {{ ditem.splitObjName }}
+ <span v-if="ditem.splitObjFnumber">({{ ditem.splitObjFnumber }})</span>
+ <span v-if="ditem.childDetailSplit&&ditem.childDetailSplit.splitObjName">/</span>
+ {{ ditem.childDetailSplit?ditem.childDetailSplit.splitObjName:'' }}: {{ ditem.childDetailSplit?toThousands(ditem.childDetailSplit.splitAmount):toThousands(ditem.splitAmount) }}
+ <td style="text-align: left;width:22%;padding:0 5px;vertical-align: top;">
+ <div v-for="ditem in fyItem.detailProductsList" :key="ditem.id" style="padding: 3px 0;">
+ <div v-if="ditem.productCode">{{ ditem.productCode }}: {{ toThousands(ditem.expense) }}</div>
+ <div v-else-if="ditem.productBrandName">{{ ditem.productBrandName }}<span v-if="ditem.productTypeShowName">/</span>{{ ditem.productTypeShowName }}: {{ toThousands(ditem.expense) }}</div>
+ <div v-else>{{ ditem.productTypeShowName }}: {{ toThousands(ditem.expense) }}</div>
+ <td v-if="item.printRemark">{{ fyItem.remarks }}</td>
+ </tbody>
+ </table>
+ <div class="container-fytable" style="padding:0 10px 5px;" v-if="item.spListData&&item.spListData.length">
+ <p class="table-title">审批信息:</p>
+ style="width: 100%;border-collapse: collapse;border: 1px solid black;font-size:10pt;text-align: center;"
+ <tr style="height: 30px;padding: 5px;">
+ <th style="padding:5px 0;width:8%;">序号</th>
+ <th style="padding:5px 0;width:15%;">人员姓名</th>
+ <th style="padding:5px 0;width:15%;">人员类型</th>
+ <th style="padding:5px 0;width:10%;">状态</th>
+ <th style="padding:5px 0;width:17%;">审批意见</th>
+ <th style="padding:5px 0;width:15%;">附件</th>
+ <th style="padding:5px 0;width:20%;">时间</th>
+ <tr style="height: 30px;padding: 5px;" v-for="(spitem,index) in item.spListData" :key="index">
+ <td style="padding:5px 0;">{{ index+1||'' }}</td>
+ <td style="padding:5px 0;">{{ spitem.userName||'' }}</td>
+ <td style="padding:5px 0;">{{ spitem.userType||'' }}</td>
+ <td style="padding:5px 0;">{{ spitem.state||'' }}</td>
+ <td style="padding:5px 0;">{{ spitem.remark||'' }}</td>
+ <td style="padding:5px 0;">{{ spitem.hasAttachments!= '0' ? '请在钉钉中查看附件内容' : '--' }}</td>
+ <td style="padding:5px 0;">{{ spitem.date||'' }}</td>
+ </tr></tbody>
+ <div class="container-fytable" style="padding:0 10px;" v-else>
+ <p class="table-title">审批信息:暂无</p>
@@ -140,17 +143,17 @@ export default {
this.list = list
// 打印
- prints(){
+ prints () {
const html = document.getElementsByClassName('expense-detail-print')
// 自动排版
- const result = groupLessThan(html,true)
+ const result = groupLessThan(html, true)
this.$store.state.app.curActionPermission = 'B_eRPrint'
// html, type, callback, printLogParams
jGPlPrint(result, 'print', function (res) {
_this.$emit('printOk', res)
- },null,'费用报销单')
+ }, null, '费用报销单')
@@ -36,6 +36,7 @@
<div slot="customTitle"><span style="color: red;">*</span>费用金额</div>
+ :id="'productInfoModal-del-'+record.id"
@@ -52,17 +53,18 @@
:disabled="!!record.productCode"
:ref="'productType-'+record.no"
- :id="'productType-'+index"
+ :id="'productInfoModal-productType-'+record.id"
v-model="record.productType"
@change="changeProductType"></ProductTypeAll>
<!-- 产品编码 -->
<template slot="productCode" slot-scope="text,record,index">
- <productCodeList :ref="'productCode-'+record.no" :key="'productCode-'+index" :id="'productCode-'+index" @change="e => productCodeChange(e, record)" />
+ <productCodeList :ref="'productCode-'+record.no" :key="'productCode-'+index" :id="'productCode-'+record.id" @change="e => productCodeChange(e, record)" />
<!-- 费用金额 -->
<template slot="expense" slot-scope="text,record">
+ :id="'productInfoModal-expense-'+record.id"
v-model="record.expense"
@@ -73,6 +75,7 @@
+ :id="'productInfoModal-add-'+record.id"
v-if="dataList.length==0"
@@ -113,7 +116,7 @@ export default {
+ expenseAccountDetailSn: { // 费用单sn
@@ -123,7 +126,7 @@ export default {
dataList: [],
+ baseData: null, // 详细信息
{ title: '产品品牌', scopedSlots: { customRender: 'productBrand' }, align: 'center', width: '20%' },
{ title: '产品分类', scopedSlots: { customRender: 'productType' }, align: 'center', width: '30%' },
@@ -136,7 +139,6 @@ export default {
// 产品编码
productCodeChange (val, row) {
- console.log(val, row)
row.productSn = val.key || undefined
row.productCode = val.row && val.row.code ? val.row.code : undefined
row.productName = val.row && val.row.name ? val.row.name : undefined
@@ -163,7 +165,6 @@ export default {
// 产品分类 change
changeProductType (val, id, options) {
- console.log(val, id, options)
const index = id.split('-')[1]
const row = this.dataList[index]
if (val.length > 1) {
@@ -223,10 +224,6 @@ export default {
// 校验数据
const retList = JSON.parse(JSON.stringify(this.dataList))
console.log(retList)
- // if (retList.length == 0) {
- // this.$message.info('请添加产品信息')
- // return
- // }
let hasError = 0
retList.map(item => {
if (!item.expense) {
@@ -238,10 +235,6 @@ export default {
delete item.productType
delete item.no
- // if (hasError == 1) {
- // this.$message.info('请输入费用金额')
if (hasError == 2) {
this.$message.info('产品品牌、产品分类、产品编码,三个至少填一个')
@@ -36,7 +36,7 @@ export default {
- itemSn: {
+ itemSn: { // 费用单sn
<a-form-item label="审核时间">
+ <rangeDate id="expenseReimbursementDetailList-rangeDate" ref="rangeDate" :value="time" @change="dateChange" />
@@ -40,6 +40,7 @@
<a-form-item label="费用发生月份">
+ id="expenseReimbursementDetailList-month"
v-model="queryParam.expenseDate"
@change="onChange"
@@ -61,14 +62,14 @@
<a-form-item label="记账名称">
- <department v-show="queryParam.accountType=='INNER_ACCOUNT'" @change="accountNameSnChange" v-model="queryParam.accountNameSn" placeholder="请选择记账名称(输入名称搜索)"></department>
+ <department id="expenseReimbursementDetailList-department" v-show="queryParam.accountType=='INNER_ACCOUNT'" @change="accountNameSnChange" v-model="queryParam.accountNameSn" placeholder="请选择记账名称(输入名称搜索)"></department>
- <custList v-show="queryParam.accountType=='CUSTOMER'" ref="custList" @change="accountNameSnChange" placeholder="请选择记账名称(输入名称搜索)"></custList>
+ <custList id="expenseReimbursementDetailList-custList" v-show="queryParam.accountType=='CUSTOMER'" ref="custList" @change="accountNameSnChange" placeholder="请选择记账名称(输入名称搜索)"></custList>
- <supplier v-show="queryParam.accountType=='OUT_ACCOUNT'" @change="accountNameSnChange" v-model="queryParam.accountNameSn" placeholder="请选择记账名称(输入名称搜索)"></supplier>
+ <supplier id="expenseReimbursementDetailList-supplier" v-show="queryParam.accountType=='OUT_ACCOUNT'" @change="accountNameSnChange" v-model="queryParam.accountNameSn" placeholder="请选择记账名称(输入名称搜索)"></supplier>
- <otherTransactions v-show="queryParam.accountType=='OTHER_ACCOUNT'" v-model="queryParam.accountNameSn" placeholder="请选择记账名称(输入名称搜索)"></otherTransactions>
- <a-select style="width: 100%" v-if="!queryParam.accountType" placeholder="请选择记账名称">
+ <otherTransactions id="expenseReimbursementDetailList-other" v-show="queryParam.accountType=='OTHER_ACCOUNT'" v-model="queryParam.accountNameSn" placeholder="请选择记账名称(输入名称搜索)"></otherTransactions>
+ <a-select style="width: 100%" v-if="!queryParam.accountType" placeholder="请选择记账名称" id="expenseReimbursementDetailList-kong">
<a-select-option value="" :disabled="true">
@@ -99,6 +100,7 @@
<a-form-item label="费用承担方类型" :label-col="{ span:7 }" :wrapper-col="{ span:17}">
+ id="expenseReimbursementDetailList-splitObjType"
v-model="queryParam.splitObjType"
@@ -110,10 +112,10 @@
<a-form-item label="费用承担方" :label-col="{ span:7 }" :wrapper-col="{ span:17}">
- <department v-show="queryParam.splitObjType=='DEPARTMENT'" style="width: 100%;" placeholder="请选择承担方" v-model="queryParam.splitObjSn"></department>
+ <department id="expenseReimbursementDetailList-department" v-show="queryParam.splitObjType=='DEPARTMENT'" style="width: 100%;" placeholder="请选择承担方" v-model="queryParam.splitObjSn"></department>
- <custList v-show="queryParam.splitObjType=='CUSTOMER'" ref="custList" @change="custChange" placeholder="请选择(输入名称搜索)"></custList>
- <a-select style="width: 100%" v-if="!queryParam.splitObjType" placeholder="请选择">
+ <custList id="expenseReimbursementDetailList-custList" v-show="queryParam.splitObjType=='CUSTOMER'" ref="custList" @change="custChange" placeholder="请选择(输入名称搜索)"></custList>
+ <a-select style="width: 100%" v-if="!queryParam.splitObjType" placeholder="请选择" id="expenseReimbursementDetailList-kong1">
请先选择承担方类型
@@ -122,12 +124,12 @@
<a-col :md="6" :sm="24" v-show="queryParam.splitObjType=='DEPARTMENT'">
<a-form-item label="费用承担人" :label-col="{ span:7 }" :wrapper-col="{ span:17}">
- <employee style="width: 100%;" placeholder="请选择承担人员" v-model="queryParam.childSplitObjSn"></employee>
+ <employee id="expenseReimbursementDetailList-employee" style="width: 100%;" placeholder="请选择承担人员" v-model="queryParam.childSplitObjSn"></employee>
<a-col :md="6" :sm="24" v-show="queryParam.splitObjType==undefined">
- <a-select style="width: 100%" placeholder="请选择">
+ <a-select style="width: 100%" placeholder="请选择" id="expenseReimbursementDetailList-kong2">
@@ -142,8 +144,8 @@
<div class="table-page-search-submitButtons">
- <a-button type="primary" :disabled="disabled" @click="$refs.table.refresh(true)">查询</a-button>
+ <a-button id="expenseReimbursementDetailList-search" type="primary" :disabled="disabled" @click="$refs.table.refresh(true)">查询</a-button>
+ <a-button id="expenseReimbursementDetailList-reset" style="margin-left: 8px" :disabled="disabled" @click="resetSearchForm()">重置</a-button>
@@ -153,7 +155,7 @@
v-if="$hasPermissions('B_expenseAcctDetailReport')"
id="expenseAcctDetail-export">导出</a-button>
+ <a @click="advanced=!advanced" style="margin-left: 8px" id="expenseReimbursementDetailList-advanced">
@@ -220,14 +222,14 @@ export default {
openModal: false, // 选择客户弹框是否显示
moment(getDate.getCurrMonthDays().starttime, 'YYYY-MM-DD'),
- countData: null,
+ countData: null, // 统计信息
expenseDate: undefined, // 月份
@@ -244,15 +246,15 @@ export default {
splitObjType: undefined, // 费用承担方类型
splitObjSn: undefined, // 费用承担方
childSplitObjSn: undefined, // 费用承担人
- subareaArea: {
+ subareaArea: { // 区域信息
subareaName: '',
subareaAreaName: ''
- provinceName: '',
- cityName: '',
+ provinceName: '', // 省
+ cityName: '', // 市
addrProvinceList: [], // 省列表
addrCityList: [], // 城市列表数据
@@ -315,46 +317,52 @@ export default {
+ // 费用发生月份禁用时间
+ return current && current > moment().endOf('day')
+ // 费用类型
+ // 经销商 ,费用承担方
this.queryParam.splitObjSn = val.key
- disabledDate (current) {
- return current && current > moment().endOf('day')
+ // 申请人选择
employeeChange (v) {
this.queryParam.employeeSn = v.key
applyDepartmentChange (v) {
this.queryParam.applyDepartmentSn = v.key
// 记账名称变化时
accountNameSnChange (v, row) {
if (v) {
this.queryParam.accountNameSn = v.key
+ // 费用承担方类型
splitObjTypeChange (v) {
this.queryParam.splitObjSn = undefined
this.queryParam.childSplitObjSn = undefined
this.$refs.custList.dealerName = []
+ // 统计信息
getDetailCount (params) {
expenseAccountDetailCount(params).then(res => {
this.countData = res.data || null
+ // 导出费用报销明细统计报表
handleExport () {
const params = JSON.parse(JSON.stringify(_this.queryParam))
@@ -401,12 +409,14 @@ export default {
@@ -165,6 +165,7 @@
授信还款总金额:<strong>{{ toThousands(countData&&countData.payCreditAmount||0) }}</strong>;
余款抵扣总金额:<strong>{{ toThousands(countData&&countData.balanceAmount||0) }}</strong>;
跨月打款总金额:<strong>{{ toThousands(countData&&countData.nextMonthAmount||0) }}</strong>;
+ 特殊申请发货总金额:<strong>{{ toThousands(countData&&countData.specialSendAmount||0) }}</strong>;
@@ -354,6 +355,7 @@ export default {
{ title: '授信还款', dataIndex: 'payCreditAmount', align: 'right', width: '5%', customRender: text => ((text || text == 0) ? this.toThousands(text) : '--') },
{ title: '余款抵扣', dataIndex: 'balanceAmount', align: 'right', width: '5%', customRender: text => ((text || text == 0) ? this.toThousands(text) : '--') },
{ title: '跨月打款', dataIndex: 'nextMonthAmount', align: 'right', width: '5%', customRender: text => ((text || text == 0) ? this.toThousands(text) : '--') },
+ { title: '特殊申请发货', dataIndex: 'specialSendAmount', width: '5%', align: 'right', customRender: text => ((text || text == 0) ? this.toThousands(text) : '--') },
{ title: '户名', dataIndex: 'bankAccount', align: 'center', width: '5%', customRender: function (text) { return text || '--' } },
{ title: '汇入银行', dataIndex: 'bankName', align: 'center', width: '5%', customRender: function (text) { return text || '--' } },
{ title: '足额打款', dataIndex: 'fullPaymentFlagDictValue', align: 'center', width: '5%', customRender: function (text) { return (text == 0 || text) ? text : '--' } },
@@ -407,7 +409,7 @@ export default {
dataList.map(item => {
data.push({ id: item.id, printStatus: 'NO_PRINT' })
- _this.plUpdateStatus(data,1)
+ _this.plUpdateStatus(data, 1)
@@ -418,16 +420,16 @@ export default {
if (e.key == 2) { // 批量开票
const data = []
rows.map(item => {
- data.push({ id: item.id, invoiceDate: '', remarks: ''})
+ data.push({ id: item.id, invoiceDate: '', remarks: '' })
_this.plinvoiceInfo = data
_this.plinvoiceIsShow = true
// 批量操作
- plUpdateStatus (data,type) {
+ plUpdateStatus (data, type) {
- financeBookDetailUpdateBatch(data,type).then(res => {
+ financeBookDetailUpdateBatch(data, type).then(res => {
@@ -440,7 +442,7 @@ export default {
item.invoiceDate = data.invoiceDate
item.remarks = data.remarks
- this.plUpdateStatus(this.plinvoiceInfo,0)
+ this.plUpdateStatus(this.plinvoiceInfo, 0)
// 表格选中项
@@ -13,24 +13,24 @@
<a-card :bordered="false" class="financialCollectionAddcont" v-show="showDetail">
- <a-descriptions :column="{ xs: 2, sm: 3, md: 3}" v-if="detailData" ref="tableSearch">
- <a-descriptions-item label="创建时间">{{ detailData&&detailData.createDate || '--' }}</a-descriptions-item>
- <a-descriptions-item label="收款单号">
- {{ detailData&&detailData.bookNo || '--' }}
- </a-descriptions-item>
- <a-descriptions-item label="申请人">{{ detailData&&detailData.applyPersonName || '--' }}</a-descriptions-item>
- <a-descriptions-item label="审核时间">{{ detailData&&detailData.auditDate || '--' }}</a-descriptions-item>
- <a-descriptions-item span="2" label="收款事由">{{ detailData&&detailData.bookReason || '--' }}</a-descriptions-item>
- <a-descriptions-item label="状态">{{ detailData&&detailData.statusDictValue || '--' }}</a-descriptions-item>
- <a-descriptions-item label="付款方类型">{{ detailData&&detailData.payerTypeDictValue || '--' }}</a-descriptions-item>
- <a-descriptions-item label="付款方">{{ detailData&&detailData.payerName || '--' }}</a-descriptions-item>
- <a-descriptions-item label="备注" :span="3">{{ detailData&&detailData.remarks||'--' }}</a-descriptions-item>
- <a-descriptions-item label="附件" :span="3">
- <a target="_blank" style="color: #00aaff;text-decoration: underline;margin-right: 15px;" :href="item.filePath" v-for="item in detailData.attachmentList" :key="item.id">
- {{ item.fileName }}
- </a-descriptions>
+ <a-descriptions :column="{ xs: 2, sm: 3, md: 3}" v-if="detailData" ref="tableSearch">
+ <a-descriptions-item label="创建时间">{{ detailData&&detailData.createDate || '--' }}</a-descriptions-item>
+ <a-descriptions-item label="收款单号">
+ {{ detailData&&detailData.bookNo || '--' }}
+ </a-descriptions-item>
+ <a-descriptions-item label="申请人">{{ detailData&&detailData.applyPersonName || '--' }}</a-descriptions-item>
+ <a-descriptions-item label="审核时间">{{ detailData&&detailData.auditDate || '--' }}</a-descriptions-item>
+ <a-descriptions-item span="2" label="收款事由">{{ detailData&&detailData.bookReason || '--' }}</a-descriptions-item>
+ <a-descriptions-item label="状态">{{ detailData&&detailData.statusDictValue || '--' }}</a-descriptions-item>
+ <a-descriptions-item label="付款方类型">{{ detailData&&detailData.payerTypeDictValue || '--' }}</a-descriptions-item>
+ <a-descriptions-item label="付款方">{{ detailData&&detailData.payerName || '--' }}</a-descriptions-item>
+ <a-descriptions-item label="备注" :span="3">{{ detailData&&detailData.remarks||'--' }}</a-descriptions-item>
+ <a-descriptions-item label="附件" :span="3">
+ <a target="_blank" style="color: #00aaff;text-decoration: underline;margin-right: 15px;" :href="item.filePath" v-for="item in detailData.attachmentList" :key="item.id">
+ {{ item.fileName }}
+ </a-descriptions>
<!-- 财务明细 -->
<a-card :bordered="false" size="small" class="financialCollectionAddcont" v-if="$route.params.sn||bookSn">
@@ -46,7 +46,9 @@
收款金额合计 {{ toThousands(detailData.receiptTotalAmount ||0) }},
使用授信合计 {{ toThousands(detailData.useTotalAmount||0) }},
授信还款合计 {{ toThousands(detailData.payTotalAmount||0) }},
- 余款抵扣合计 {{ toThousands(detailData.balanceTotalAmount||0) }}
+ 余款抵扣合计 {{ toThousands(detailData.balanceTotalAmount||0) }},
+ 跨月打款合计 {{ toThousands(detailData.nextMonthTotalAmount||0) }},
+ 特殊申请发货合计 {{ toThousands(detailData.specialTotalAmount||0) }}
@@ -141,6 +143,7 @@ export default {
{ title: '授信还款', dataIndex: 'payTotalAmount', align: 'right', width: '5%', customRender: text => ((text || text == 0) ? this.toThousands(text) : '--') },
{ title: '户名', dataIndex: 'bankAccount', align: 'center', width: '8%', customRender: function (text) { return text || '--' } },
{ title: '汇入银行', dataIndex: 'bankName', align: 'center', width: '8%', customRender: function (text) { return text || '--' } },
@@ -58,6 +58,8 @@
余款抵扣合计 {{ toThousands(detailData.balanceTotalAmount||0) }}
@@ -256,6 +258,7 @@ export default {
+ { title: '特殊申请发货', dataIndex: 'specialSendAmount', width: '6%', align: 'right', customRender: text => ((text || text == 0) ? this.toThousands(text) : '--') },
{ title: '户名', dataIndex: 'bankAccount', align: 'center', width: '7%', customRender: function (text) { return text || '--' } },
{ title: '汇入银行', dataIndex: 'bankName', align: 'center', width: '7%', customRender: function (text) { return text || '--' } },
@@ -18,7 +18,13 @@
<a-col :span="12">
<a-form-model-item style="margin-bottom:5px;" label="收款日期" prop="receiptDate">
- <a-date-picker inputReadOnly style="width:100%" format="YYYY-MM-DD" v-model="form.receiptDate" placeholder="请选择收款日期" />
+ <a-date-picker
+ id="fcDetailModal-receiptDate"
+ inputReadOnly
+ style="width:100%"
+ format="YYYY-MM-DD"
+ v-model="form.receiptDate"
+ placeholder="请选择收款日期" />
@@ -39,12 +45,13 @@
<a-form-model-item style="margin-bottom:5px;" label="付款方" prop="dealerSn">
<!-- <dealerSubareaScopeList ref="settleClientName" @change="custChange" :disabled="true" /> -->
- {{form.payerName}}
+ {{ form.payerName }}
<a-form-model-item style="margin-bottom:5px;" label="付款账户类型" prop="payerAccountType">
+ id="fcDetailModal-payerAccountType"
v-model="form.payerAccountType"
code="PAYER_ACCOUNT_TYPE"
@@ -58,13 +65,13 @@
<!-- 公户 -->
<a-col :span="12" v-if="form.payerAccountType=='PUBLIC'">
<a-form-model-item style="margin-bottom:5px;" label="营业执照名称">
- <a-input :maxLength="30" placeholder="请输入营业执照名称" v-model="form.payerAccountInfo"></a-input>
+ <a-input id="fcDetailModal-payerAccountInfo" :maxLength="30" placeholder="请输入营业执照名称" v-model="form.payerAccountInfo"></a-input>
<!-- 私户 -->
<a-col :span="12" v-if="form.payerAccountType=='PRIVATE'">
<a-form-model-item style="margin-bottom:5px;" label="付款账户">
- <a-input :maxLength="30" placeholder="付款账户" v-model="form.payerAccountInfo"></a-input>
+ <a-input id="fcDetailModal-payerAccountInfo1" :maxLength="30" placeholder="付款账户" v-model="form.payerAccountInfo"></a-input>
@@ -78,12 +85,12 @@
<a-form-model-item style="margin-bottom:5px;" label="付款方" prop="payerName">
<!-- <a-input :maxLength="30" placeholder="请输入付款方名称" disabled v-model="form.payerName"></a-input> -->
+ <a-input id="fcDetailModal-payerAccountInfo2" :maxLength="30" placeholder="付款账户" v-model="form.payerAccountInfo"></a-input>
@@ -93,6 +100,7 @@
<a-form-model-item style="margin-bottom:5px;" label="订单金额">
+ id="fcDetailModal-orderAmount"
@@ -104,6 +112,7 @@
<a-form-model-item style="margin-bottom:5px;" label="收款金额">
+ id="fcDetailModal-receiptAmount"
@@ -113,19 +122,20 @@
<a-form-model-item style="margin-bottom:5px;" label="使用授信">
- <a-checkbox v-model="form.useCreditFlag" @change="form.detailItemUseList=[]">是</a-checkbox>
+ <a-checkbox id="fcDetailModal-useCreditFlag" v-model="form.useCreditFlag" @change="form.detailItemUseList=[]">是</a-checkbox>
<span v-if="form.useCreditFlag">合计: {{ useTotalAmount||'--' }}</span>
<a-form-model-item style="margin-bottom:5px;" label="授信还款">
- <a-checkbox v-model="form.payCreditFlag" @change="form.detailItemPayList=[]">是</a-checkbox>
+ <a-checkbox id="fcDetailModal-payCreditFlag" v-model="form.payCreditFlag" @change="form.detailItemPayList=[]">是</a-checkbox>
<span v-if="form.payCreditFlag">合计: {{ payTotalAmount||'--' }}</span>
<a-form-model-item style="margin-bottom:5px;" label="余款抵扣">
+ id="fcDetailModal-balanceAmount"
@@ -138,6 +148,7 @@
<a-form-model-item style="margin-bottom:5px;" label="跨月打款">
+ id="fcDetailModal-nextMonthAmount"
@@ -145,9 +156,32 @@
v-model="form.nextMonthAmount"></a-input-number>
+ <a-col :span="12">
+ <a-form-model-item style="margin-bottom:5px;" label="特殊申请发货">
+ <a-input-number
+ id="fcDetailModal-specialSendAmount"
+ :min="0"
+ :max="99999999"
+ :precision="2"
+ placeholder="请输入特殊申请发货金额"
+ v-model="form.specialSendAmount"></a-input-number>
+ </a-form-model-item>
+ <a-form-model-item style="margin-bottom:5px;" label="足额打款">
+ showType="radio"
+ id="fcDetailModal-fullPaymentFlag"
+ v-model="form.fullPaymentFlag"
+ placeholder="请选择是否足额打款"
<a-form-model-item style="margin-bottom:5px;" label="户名" prop="bankAccount">
- <a-select placeholder="请选择户名" v-model="form.bankAccount" style="width: 100%" @change="handleChange">
+ <a-select placeholder="请选择户名" v-model="form.bankAccount" id="fcDetailModal-bankAccount" style="width: 100%" @change="handleChange">
<a-select-option v-for="item in bankList" :value="item.bankAccount">
{{ item.bankAccount }}
@@ -156,25 +190,16 @@
<a-form-model-item style="margin-bottom:5px;" label="汇入银行" prop="bankName">
- <a-select placeholder="请选择汇入银行" v-model="form.bankName" style="width: 100%">
+ <a-select placeholder="请选择汇入银行" id="fcDetailModal-bankName" v-model="form.bankName" style="width: 100%">
<a-select-option v-for="item in bankNameList" :value="item">
{{ item }}
- <a-col :span="12">
- <a-form-model-item style="margin-bottom:5px;" label="足额打款">
- <v-select
- v-model="form.fullPaymentFlag"
- code="FLAG"
- placeholder="请选择是否足额打款"
- allowClear></v-select>
<a-form-model-item style="margin-bottom:5px;" label="说明" :labelCol="{span:3}" :wrapper-col="{ span: 20 }">
- <a-textarea :rows="2" :maxLength="500" placeholder="请输入说明(最多500个字符)" v-model="form.explainInfo"></a-textarea>
+ <a-textarea :rows="2" id="fcDetailModal-explainInfo" :maxLength="500" placeholder="请输入说明(最多500个字符)" v-model="form.explainInfo"></a-textarea>
<!-- 使用授信列表 -->
@@ -189,8 +214,8 @@
- <a-button type="primary" :loading="confirmLoading" @click="handleSubmit" id="chooseCustom-btn-submit">保存</a-button>
+ <a-button @click="cancel" style="margin-right: 15px" id="fcDetailModal-btn-back">取消</a-button>
+ <a-button type="primary" :loading="confirmLoading" @click="handleSubmit" id="fcDetailModal-btn-submit">保存</a-button>
@@ -232,32 +257,33 @@ export default {
title: '新增收款明细',
confirmLoading: false,
- bookDetailSn: '',
+ bookDetailSn: '', // 收款明细sn
- payerType: 'DEALER',
- payerAccountType: 'PUBLIC',
- payerName: '',
- payerAccountInfo: '',
- receiptDate: moment(),
- dealerCode: '',
- orderAmount: '',
- receiptAmount: '',
- useCreditFlag: false,
- detailItemUseList: [],
- payCreditFlag: false,
- detailItemPayList: [],
- balanceAmount: '',
- nextMonthAmount: '',
- bankAccount: '东莞箭冠',
- bankName: '东莞银行',
- fullPaymentFlag: '1',
+ payerType: 'DEALER', // 付款方
+ payerAccountType: 'PUBLIC', // 付款账户
+ dealerSn: undefined, // 客户sn
+ payerName: '', // 付款方名称
+ payerAccountInfo: '', // 付款账户
+ licenseName: '', // 营业执照
+ receiptDate: moment(), // 收款日期
+ dealerCode: '', // 财务编码
+ orderAmount: '', // 订单金额
+ receiptAmount: '', // 收款金额
+ useCreditFlag: false, // 是否使用授信
+ detailItemUseList: [], // 授信使用项目
+ payCreditFlag: false, // 是否授信还款
+ detailItemPayList: [], // 授信还款项目
+ balanceAmount: '', // 余额
+ nextMonthAmount: '', // 下月额度
+ specialSendAmount: '', // 特批额度
+ bankAccount: '东莞箭冠', // 汇入银行户名
+ bankName: '东莞银行', // 汇入银行
+ fullPaymentFlag: '1', // 足额打款
+ explainInfo: '' // 说明
receiptDate: [ { required: true, message: '请选择收款日期', trigger: ['change', 'blur'] } ],
@@ -265,8 +291,8 @@ export default {
dealerSn: [ { required: true, message: '请选择付款方', trigger: ['change', 'blur'] } ],
payerName: [ { required: true, message: '请输入付款方名称', trigger: ['change', 'blur'] } ],
payerAccountType: [ { required: true, message: '请选择付款账户类型', trigger: ['change', 'blur'] } ],
- bankAccount:[{ required: true, message: '请选择户名', trigger: ['change', 'blur'] }],
- bankName:[{ required: true, message: '请选择汇入银行', trigger: ['change', 'blur'] }]
+ bankAccount: [{ required: true, message: '请选择户名', trigger: ['change', 'blur'] }],
+ bankName: [{ required: true, message: '请选择汇入银行', trigger: ['change', 'blur'] }]
useTotalAmount: '',
payTotalAmount: '',
@@ -315,23 +341,22 @@ export default {
this.form.licenseName = ''
this.form.payerAccountInfo = ''
- if(this.form.payerAccountType=='PUBLIC'){
+ if (this.form.payerAccountType == 'PUBLIC') {
this.form.bankAccount = '东莞箭冠'
this.form.bankName = '东莞银行'
this.bankNameList = ['东莞银行']
this.form.bankAccount = '张丽添'
this.form.bankName = '农业银行'
this.bankNameList = ['农业银行']
handleChange (v) {
- console.log(v)
this.form.bankAccount = v
const row = this.bankList.find(item => item.bankAccount == v)
this.bankNameList = row.bankName
- this.form.bankName = undefined
+ this.form.bankName = undefined
getLastPayerAccount () {
@@ -356,7 +381,6 @@ export default {
// 客户
custChange (v) {
if (v && v.key) {
this.form.dealerSn = v.key
this.form.payerName = v.row ? v.row.dealerName : ''
@@ -430,10 +454,10 @@ export default {
setDetail (data) {
this.form = Object.assign(this.form, { payerTypeDictValue: data.payerTypeDictValue, payerType: data.payerType, dealerSn: data.dealerSn, payerName: data.payerName })
- if(this.form.dealerSn){
+ if (this.form.dealerSn) {
// this.$refs.settleClientName.getDetail(this.form.dealerSn)
this.getDealerDetail(this.form.dealerSn)
@@ -476,7 +500,7 @@ export default {
this.bankNameList = []
- if(this.$refs.ruleForm){
+ if (this.$refs.ruleForm) {
@@ -496,6 +520,7 @@ export default {
detailItemPayList: [],
balanceAmount: '',
nextMonthAmount: '',
+ specialSendAmount: '',
bankAccount: '东莞箭冠',
bankName: '东莞银行',
fullPaymentFlag: '1',
@@ -92,6 +92,8 @@
使用授信总金额:{{ toThousands(countData&&countData.useTotalAmount||0) }};
授信还款总金额:{{ toThousands(countData&&countData.payTotalAmount||0) }};
余款抵扣总金额:{{ toThousands(countData&&countData.balanceTotalAmount||0) }};
+ 跨月打款总金额:{{ toThousands(countData&&countData.nextMonthTotalAmount||0) }};
+ 特殊申请发货总金额:{{ toThousands(countData&&countData.specialTotalAmount||0) }};
<div></div>
@@ -251,6 +253,8 @@ export default {
{ title: '使用授信总金额', dataIndex: 'useTotalAmount', width: '6%', align: 'right', customRender: text => ((text || text == 0) ? this.toThousands(text) : '--') },
{ title: '授信还款总金额', dataIndex: 'payTotalAmount', width: '6%', align: 'right', customRender: text => ((text || text == 0) ? this.toThousands(text) : '--') },
{ title: '余款抵扣总金额', dataIndex: 'balanceTotalAmount', width: '6%', align: 'right', customRender: text => ((text || text == 0) ? this.toThousands(text) : '--') },
+ { title: '跨月打款总金额', dataIndex: 'nextMonthTotalAmount', width: '6%', align: 'right', customRender: text => ((text || text == 0) ? this.toThousands(text) : '--') },
+ { title: '特殊申请发货总金额', dataIndex: 'specialTotalAmount', width: '6%', align: 'right', customRender: text => ((text || text == 0) ? this.toThousands(text) : '--') },
{ title: '审核时间', dataIndex: 'auditDate', width: '8%', align: 'center', customRender: function (text) { return text || '--' } },
{ title: '状态', dataIndex: 'statusDictValue', width: '6%', align: 'center', customRender: function (text) { return text || '--' } },