|
@@ -36,7 +36,7 @@
|
|
|
</a-row>
|
|
|
</a-form>
|
|
|
</div>
|
|
|
-
|
|
|
+
|
|
|
<div class="table-page-search-wrapper">
|
|
|
<a-row :gutter="15" type="flex" justify="space-between" align="middle">
|
|
|
<a-col :md="8" :sm="24" style="text-align:left;">
|
|
@@ -45,6 +45,9 @@
|
|
|
<a-col :md="16" :sm="24" style="text-align:right;">
|
|
|
<a-dropdown>
|
|
|
<a-menu slot="overlay" @click="handleMenuClick">
|
|
|
+ <a-menu-item key="3">
|
|
|
+ 全部出库仓库设置
|
|
|
+ </a-menu-item>
|
|
|
<a-menu-item key="0">
|
|
|
仓库设置
|
|
|
</a-menu-item>
|
|
@@ -75,19 +78,19 @@
|
|
|
</a-col>
|
|
|
</a-row>
|
|
|
</div>
|
|
|
-
|
|
|
+
|
|
|
<!-- 已选配件列表 -->
|
|
|
<s-table
|
|
|
- class="sTable"
|
|
|
- ref="table"
|
|
|
- size="small"
|
|
|
- :scroll="showTotal ? null :{ y: tableHeight }"
|
|
|
- :rowKey="(record) => record.id"
|
|
|
- :columns="columns"
|
|
|
- :data="loadData"
|
|
|
- :row-selection="{ columnWidth: 40 }"
|
|
|
- @rowSelection="rowSelectionFun"
|
|
|
- :pageSize="showTotal?10:30"
|
|
|
+ class="sTable"
|
|
|
+ ref="table"
|
|
|
+ size="small"
|
|
|
+ :scroll="showTotal ? null :{ y: tableHeight }"
|
|
|
+ :rowKey="(record) => record.id"
|
|
|
+ :columns="columns"
|
|
|
+ :data="loadData"
|
|
|
+ :row-selection="{ columnWidth: 40 }"
|
|
|
+ @rowSelection="rowSelectionFun"
|
|
|
+ :pageSize="showTotal?10:30"
|
|
|
:defaultLoadData="false"
|
|
|
bordered>
|
|
|
<!-- 产品编码 -->
|
|
@@ -134,7 +137,7 @@
|
|
|
<template slot="warehouseBox" slot-scope="text, record">
|
|
|
<a-select
|
|
|
size="small"
|
|
|
- style="width:100%;"
|
|
|
+ style="width:100%;"
|
|
|
placeholder="请选择仓库"
|
|
|
v-model="record.warehouseSn"
|
|
|
:showSearch="true"
|
|
@@ -158,9 +161,9 @@
|
|
|
<!-- 总计 -->
|
|
|
<a-alert type="info" v-if="showTotal" banner :showIcon="false">
|
|
|
<div slot="message" style="text-align: right;">
|
|
|
- 款数:<strong>{{ countData&&(countData.totalCategory || countData.totalCategory==0) ? countData.totalCategory : 0 }}</strong>;
|
|
|
- 数量:<strong>{{ countData&&(countData.totalQty || countData.totalQty==0) ? countData.totalQty : 0 }}</strong>;
|
|
|
- <span v-if="$hasPermissions('B_salesEdit_salesPrice')">总金额:<strong>{{ countData&&(countData.totalAmount || countData.totalAmount==0) ? toThousands(countData.totalAmount) : '0.00' }}</strong>;</span>
|
|
|
+ 款数:<strong>{{ countData&&(countData.totalCategory || countData.totalCategory==0) ? countData.totalCategory : 0 }}</strong>;
|
|
|
+ 数量:<strong>{{ countData&&(countData.totalQty || countData.totalQty==0) ? countData.totalQty : 0 }}</strong>;
|
|
|
+ <span v-if="$hasPermissions('B_salesEdit_salesPrice')">总金额:<strong>{{ countData&&(countData.totalAmount || countData.totalAmount==0) ? toThousands(countData.totalAmount) : '0.00' }}</strong>;</span>
|
|
|
</div>
|
|
|
</a-alert>
|
|
|
</template>
|
|
@@ -174,384 +177,386 @@
|
|
|
</template>
|
|
|
|
|
|
<script>
|
|
|
- import { commonMixin } from '@/utils/mixin'
|
|
|
- import { STable, VSelect } from '@/components'
|
|
|
- import ImportGuideModal from './importGuideModal.vue'
|
|
|
- import setWarehouse from './setWarehouse.vue'
|
|
|
- import chooseWarehouse from '@/views/common/chooseWarehouse'
|
|
|
- import ProductBrand from '@/views/common/productBrand.js'
|
|
|
- import productTypeAll from '@/views/common/productTypeAll.js'
|
|
|
- import {
|
|
|
- salesDetailList,
|
|
|
- salesDetailInsert,
|
|
|
- salesDetailUpdateQty,
|
|
|
- salesDetailDel,
|
|
|
- salesDetailBatchDel,
|
|
|
- deleteAll,
|
|
|
- updateWarehouse,
|
|
|
- salesDetaiCount,
|
|
|
- salesBatchInsert } from '@/api/salesDetailNew'
|
|
|
- export default {
|
|
|
- name: 'ProductList',
|
|
|
- mixins: [commonMixin],
|
|
|
- components: {
|
|
|
- STable,
|
|
|
- VSelect,
|
|
|
- ImportGuideModal,
|
|
|
- chooseWarehouse,
|
|
|
- setWarehouse,
|
|
|
- ProductBrand,
|
|
|
- productTypeAll
|
|
|
+import { commonMixin } from '@/utils/mixin'
|
|
|
+import { STable, VSelect } from '@/components'
|
|
|
+import ImportGuideModal from './importGuideModal.vue'
|
|
|
+import setWarehouse from './setWarehouse.vue'
|
|
|
+import chooseWarehouse from '@/views/common/chooseWarehouse'
|
|
|
+import ProductBrand from '@/views/common/productBrand.js'
|
|
|
+import productTypeAll from '@/views/common/productTypeAll.js'
|
|
|
+import {
|
|
|
+ salesDetailList,
|
|
|
+ salesDetailInsert,
|
|
|
+ salesDetailUpdateQty,
|
|
|
+ salesDetailDel,
|
|
|
+ salesDetailBatchDel,
|
|
|
+ deleteAll,
|
|
|
+ updateWarehouse,
|
|
|
+ salesDetaiCount,
|
|
|
+ salesBatchInsert } from '@/api/salesDetailNew'
|
|
|
+export default {
|
|
|
+ name: 'ProductList',
|
|
|
+ mixins: [commonMixin],
|
|
|
+ components: {
|
|
|
+ STable,
|
|
|
+ VSelect,
|
|
|
+ ImportGuideModal,
|
|
|
+ chooseWarehouse,
|
|
|
+ setWarehouse,
|
|
|
+ ProductBrand,
|
|
|
+ productTypeAll
|
|
|
+ },
|
|
|
+ props: {
|
|
|
+ openModal: { // 弹框显示状态
|
|
|
+ type: Boolean,
|
|
|
+ default: false
|
|
|
},
|
|
|
- props: {
|
|
|
- openModal: { // 弹框显示状态
|
|
|
- type: Boolean,
|
|
|
- default: false
|
|
|
- },
|
|
|
- newLoading: Boolean,
|
|
|
- detailData: {
|
|
|
- type: Object,
|
|
|
- default: function(){return null}
|
|
|
- },
|
|
|
- warehouseSn: {
|
|
|
- type: String,
|
|
|
- default: ''
|
|
|
+ newLoading: Boolean,
|
|
|
+ detailData: {
|
|
|
+ type: Object,
|
|
|
+ default: function () { return null }
|
|
|
+ },
|
|
|
+ warehouseSn: {
|
|
|
+ type: String,
|
|
|
+ default: ''
|
|
|
+ },
|
|
|
+ salesBillSn: {
|
|
|
+ type: String,
|
|
|
+ default: ''
|
|
|
+ },
|
|
|
+ showTotal: {
|
|
|
+ type: Boolean,
|
|
|
+ default: true
|
|
|
+ }
|
|
|
+ },
|
|
|
+ data () {
|
|
|
+ return {
|
|
|
+ spinning: false,
|
|
|
+ // 加载数据方法 必须为 Promise 对象
|
|
|
+ loadData: parameter => {
|
|
|
+ this.disabled = true
|
|
|
+ this.queryParam.salesBillSn = this.salesBillSn || ''
|
|
|
+ this.getCount()
|
|
|
+ return salesDetailList(Object.assign(parameter, this.queryParam, { showStock: true })).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
|
|
|
+ data.list[i].qtyBackups = data.list[i].qty
|
|
|
+ data.list[i].warehouseBackups = data.list[i].warehouseSn
|
|
|
+ }
|
|
|
+ this.dataSource = data.list
|
|
|
+ }
|
|
|
+ this.disabled = false
|
|
|
+ return data
|
|
|
+ })
|
|
|
},
|
|
|
- salesBillSn: {
|
|
|
- type: String,
|
|
|
- default: ''
|
|
|
+ showSearch: false,
|
|
|
+ openWarehouseModal: false, // 打开仓库设置
|
|
|
+ openGuideModal: false, // 导入产品引导
|
|
|
+ delLoading: false,
|
|
|
+ chooseDisabled: false,
|
|
|
+ disabled: false, // 查询、重置按钮是否可操作
|
|
|
+ queryParam: {
|
|
|
+ warehouseSn: undefined,
|
|
|
+ productCode: '',
|
|
|
+ productName: '',
|
|
|
+ productBrandSn: undefined,
|
|
|
+ productTypeSn1: '', // 产品一级分类
|
|
|
+ productTypeSn2: '', // 产品二级分类
|
|
|
+ productTypeSn3: '' // 产品三级分类
|
|
|
},
|
|
|
- showTotal:{
|
|
|
- type: Boolean,
|
|
|
- default: true
|
|
|
+ productType: [],
|
|
|
+ rowSelectionInfo: null,
|
|
|
+ warehouseDataList: [],
|
|
|
+ countData: null,
|
|
|
+ isInster: false
|
|
|
+ }
|
|
|
+ },
|
|
|
+ computed: {
|
|
|
+ selectTotal () {
|
|
|
+ return this.rowSelectionInfo && this.rowSelectionInfo.selectedRowKeys.length || 0
|
|
|
+ },
|
|
|
+ tableHeight () {
|
|
|
+ return window.innerHeight - 395
|
|
|
+ },
|
|
|
+ columns () {
|
|
|
+ const arr = [
|
|
|
+ { title: '序号', dataIndex: 'no', width: '4%', align: 'center' },
|
|
|
+ { title: '产品编码', dataIndex: 'productEntity.code', scopedSlots: { customRender: 'productCode' }, width: '13%', align: 'center' },
|
|
|
+ { title: '产品名称', dataIndex: 'productEntity.name', scopedSlots: { customRender: 'productName' }, width: '20%', align: 'left' },
|
|
|
+ // { title: '售价', dataIndex: 'price', width: '8%', align: 'center', customRender: function (text) { return ((text || text == 0) ? text : '--') } },
|
|
|
+ { title: '销售数量', scopedSlots: { customRender: 'salesNums' }, width: '8%', align: 'center' },
|
|
|
+ { title: '库存', dataIndex: 'stockQty', scopedSlots: { customRender: 'stockQty' }, width: '8%', align: 'center' },
|
|
|
+ { title: '出库仓库', scopedSlots: { customRender: 'warehouseBox' }, width: '15%', align: 'center' },
|
|
|
+ { title: '单位', dataIndex: 'productEntity.unit', width: '6%', align: 'center', customRender: function (text) { return text || '--' } },
|
|
|
+ // { title: '售价小计', dataIndex: 'totalAmount', width: '8%', align: 'center', customRender: function (text) { return ((text || text == 0) ? text : '--') } },
|
|
|
+ { title: '操作', scopedSlots: { customRender: 'action' }, width: '10%', align: 'center' }
|
|
|
+ ]
|
|
|
+ if (this.$hasPermissions('B_salesEdit_salesPrice')) { // 售价权限
|
|
|
+ arr.splice(3, 0, { title: '售价', dataIndex: 'price', width: '8%', align: 'right', customRender: text => ((text || text == 0) ? this.toThousands(text) : '--') })
|
|
|
+ arr.splice(7, 0, { title: '售价小计', dataIndex: 'totalAmount', width: '8%', align: 'right', customRender: text => ((text || text == 0) ? this.toThousands(text) : '--') })
|
|
|
}
|
|
|
+ return arr
|
|
|
+ }
|
|
|
+ },
|
|
|
+ methods: {
|
|
|
+ filterOption (input, option) {
|
|
|
+ return (
|
|
|
+ option.componentOptions.children[0].text.toLowerCase().indexOf(input.toLowerCase()) >= 0
|
|
|
+ )
|
|
|
+ },
|
|
|
+ warehouseLoad (sn, list) {
|
|
|
+ this.warehouseDataList = list
|
|
|
+ },
|
|
|
+ // 表格选中项
|
|
|
+ rowSelectionFun (obj) {
|
|
|
+ this.rowSelectionInfo = obj || null
|
|
|
+ },
|
|
|
+ openCpModal () {
|
|
|
+ this.$emit('openCpModal', 0, 'productNormalList')
|
|
|
},
|
|
|
- data () {
|
|
|
- return {
|
|
|
- spinning: false,
|
|
|
- // 加载数据方法 必须为 Promise 对象
|
|
|
- loadData: parameter => {
|
|
|
- this.disabled = true
|
|
|
- this.queryParam.salesBillSn = this.salesBillSn || ''
|
|
|
- this.getCount()
|
|
|
- return salesDetailList(Object.assign(parameter, this.queryParam, {showStock: true})).then(res => {
|
|
|
- let data
|
|
|
+ // 统计
|
|
|
+ getCount () {
|
|
|
+ salesDetaiCount(Object.assign(this.queryParam, { showStock: true })).then(res => {
|
|
|
+ if (res.status == 200) {
|
|
|
+ this.countData = res.data
|
|
|
+ }
|
|
|
+ })
|
|
|
+ },
|
|
|
+ handleBatchDelAll () {
|
|
|
+ const _this = this
|
|
|
+ if (_this.dataSource.length == 0) {
|
|
|
+ _this.$message.warning('暂无可删除的已选产品!')
|
|
|
+ return
|
|
|
+ }
|
|
|
+ this.$confirm({
|
|
|
+ title: '提示',
|
|
|
+ content: '确认要删除全部已选产品吗?',
|
|
|
+ centered: true,
|
|
|
+ onOk () {
|
|
|
+ _this.spinning = true
|
|
|
+ deleteAll({ salesBillSn: _this.salesBillSn }).then(res => {
|
|
|
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
|
|
|
- data.list[i].qtyBackups = data.list[i].qty
|
|
|
- data.list[i].warehouseBackups = data.list[i].warehouseSn
|
|
|
- }
|
|
|
- this.dataSource = data.list
|
|
|
+ _this.$refs.table.refresh(false)
|
|
|
+ _this.$emit('insterOk', 'normal')
|
|
|
+ _this.$message.success(res.message)
|
|
|
}
|
|
|
- this.disabled = false
|
|
|
- return data
|
|
|
+ _this.spinning = false
|
|
|
})
|
|
|
- },
|
|
|
- showSearch: false,
|
|
|
- openWarehouseModal: false, // 打开仓库设置
|
|
|
- openGuideModal: false, // 导入产品引导
|
|
|
- delLoading: false,
|
|
|
- chooseDisabled: false,
|
|
|
- disabled: false, // 查询、重置按钮是否可操作
|
|
|
- queryParam: {
|
|
|
- warehouseSn: undefined,
|
|
|
- productCode: '',
|
|
|
- productName: '',
|
|
|
- productBrandSn: undefined,
|
|
|
- productTypeSn1: '', // 产品一级分类
|
|
|
- productTypeSn2: '', // 产品二级分类
|
|
|
- productTypeSn3: '' // 产品三级分类
|
|
|
- },
|
|
|
- productType: [],
|
|
|
- rowSelectionInfo: null,
|
|
|
- warehouseDataList: [],
|
|
|
- countData: null,
|
|
|
- isInster: false
|
|
|
- }
|
|
|
+ }
|
|
|
+ })
|
|
|
},
|
|
|
- computed: {
|
|
|
- selectTotal () {
|
|
|
- return this.rowSelectionInfo && this.rowSelectionInfo.selectedRowKeys.length || 0
|
|
|
- },
|
|
|
- tableHeight(){
|
|
|
- return window.innerHeight - 395
|
|
|
- },
|
|
|
- columns () {
|
|
|
- const arr = [
|
|
|
- { title: '序号', dataIndex: 'no', width: '4%', align: 'center' },
|
|
|
- { title: '产品编码', dataIndex: 'productEntity.code', scopedSlots: { customRender: 'productCode' }, width: '13%', align: 'center' },
|
|
|
- { title: '产品名称', dataIndex: 'productEntity.name', scopedSlots: { customRender: 'productName' }, width: '20%', align: 'left' },
|
|
|
- // { title: '售价', dataIndex: 'price', width: '8%', align: 'center', customRender: function (text) { return ((text || text == 0) ? text : '--') } },
|
|
|
- { title: '销售数量', scopedSlots: { customRender: 'salesNums' }, width: '8%', align: 'center' },
|
|
|
- { title: '库存', dataIndex: 'stockQty', scopedSlots: { customRender: 'stockQty' }, width: '8%', align: 'center' },
|
|
|
- { title: '出库仓库', scopedSlots: { customRender: 'warehouseBox' }, width: '15%', align: 'center' },
|
|
|
- { title: '单位', dataIndex: 'productEntity.unit', width: '6%', align: 'center', customRender: function (text) { return text || '--' } },
|
|
|
- // { title: '售价小计', dataIndex: 'totalAmount', width: '8%', align: 'center', customRender: function (text) { return ((text || text == 0) ? text : '--') } },
|
|
|
- { title: '操作', scopedSlots: { customRender: 'action' }, width: '10%', align: 'center' }
|
|
|
- ]
|
|
|
- if (this.$hasPermissions('B_salesEdit_salesPrice')) { // 售价权限
|
|
|
- arr.splice(3, 0, { title: '售价', dataIndex: 'price', width: '8%', align: 'right', customRender: text => ((text || text == 0) ? this.toThousands(text) : '--') })
|
|
|
- arr.splice(7, 0, { title: '售价小计', dataIndex: 'totalAmount', width: '8%', align: 'right', customRender: text => ((text || text == 0) ? this.toThousands(text) : '--') })
|
|
|
+ // 批量删除已选产品
|
|
|
+ handleBatchDel () {
|
|
|
+ const _this = this
|
|
|
+ if (!_this.rowSelectionInfo || (_this.rowSelectionInfo && _this.rowSelectionInfo.selectedRowKeys.length < 1)) {
|
|
|
+ _this.$message.warning('请先选择要删除的产品后再进行批量操作!')
|
|
|
+ return
|
|
|
+ }
|
|
|
+ const obj = []
|
|
|
+ _this.rowSelectionInfo && _this.rowSelectionInfo.selectedRows.map(item => {
|
|
|
+ obj.push(item.salesBillDetailSn)
|
|
|
+ })
|
|
|
+ this.$confirm({
|
|
|
+ title: '提示',
|
|
|
+ content: '已选产品' + obj.length + '项,确认要批量删除吗?',
|
|
|
+ centered: true,
|
|
|
+ onOk () {
|
|
|
+ _this.spinning = true
|
|
|
+ salesDetailBatchDel({
|
|
|
+ salesBillSn: _this.salesBillSn,
|
|
|
+ salesBillDetailSnList: obj
|
|
|
+ }).then(res => {
|
|
|
+ if (res.status == 200) {
|
|
|
+ _this.$refs.table.refresh(false)
|
|
|
+ _this.$emit('insterOk', 'normal')
|
|
|
+ _this.$message.success(res.message)
|
|
|
+ }
|
|
|
+ _this.spinning = false
|
|
|
+ })
|
|
|
}
|
|
|
- return arr
|
|
|
+ })
|
|
|
+ },
|
|
|
+ // 设置单个出库仓库
|
|
|
+ handleWarehouseBox (row) {
|
|
|
+ const snArr = [row.salesBillDetailSn]
|
|
|
+ const ajax_data = {
|
|
|
+ warehouseSn: row.warehouseSn,
|
|
|
+ salesBillDetailSnList: snArr,
|
|
|
+ salesBillSn: this.salesBillSn
|
|
|
}
|
|
|
+ this.setWarehouseInfo(ajax_data)
|
|
|
},
|
|
|
- methods: {
|
|
|
- filterOption (input, option) {
|
|
|
- return (
|
|
|
- option.componentOptions.children[0].text.toLowerCase().indexOf(input.toLowerCase()) >= 0
|
|
|
- )
|
|
|
- },
|
|
|
- warehouseLoad(sn,list){
|
|
|
- this.warehouseDataList = list
|
|
|
- },
|
|
|
- // 表格选中项
|
|
|
- rowSelectionFun (obj) {
|
|
|
- this.rowSelectionInfo = obj || null
|
|
|
- },
|
|
|
- openCpModal(){
|
|
|
- this.$emit('openCpModal', 0, 'productNormalList')
|
|
|
- },
|
|
|
- // 统计
|
|
|
- getCount(){
|
|
|
- salesDetaiCount(Object.assign(this.queryParam, {showStock: true})).then(res => {
|
|
|
- if(res.status == 200){
|
|
|
- this.countData = res.data
|
|
|
- }
|
|
|
- })
|
|
|
- },
|
|
|
- handleBatchDelAll () {
|
|
|
- const _this = this
|
|
|
- if (_this.dataSource.length == 0) {
|
|
|
- _this.$message.warning('暂无可删除的已选产品!')
|
|
|
- return
|
|
|
+ chooseWarehouseOk (sn) {
|
|
|
+ const _this = this
|
|
|
+ const snArr = []
|
|
|
+ _this.rowSelectionInfo.selectedRows.forEach(item => {
|
|
|
+ snArr.push(item.salesBillDetailSn)
|
|
|
+ })
|
|
|
+ const ajax_data = {
|
|
|
+ warehouseSn: sn,
|
|
|
+ salesBillDetailSnList: snArr,
|
|
|
+ salesBillSn: _this.salesBillSn
|
|
|
+ }
|
|
|
+ _this.setWarehouseInfo(ajax_data)
|
|
|
+ },
|
|
|
+ setWarehouseInfo (data) {
|
|
|
+ const _this = this
|
|
|
+ _this.spinning = true
|
|
|
+ updateWarehouse(data).then(res => {
|
|
|
+ if (res.status == 200) {
|
|
|
+ _this.$message.success(res.message)
|
|
|
}
|
|
|
- this.$confirm({
|
|
|
- title: '提示',
|
|
|
- content: '确认要删除全部已选产品吗?',
|
|
|
- centered: true,
|
|
|
- onOk () {
|
|
|
- _this.spinning = true
|
|
|
- deleteAll({ salesBillSn: _this.salesBillSn }).then(res => {
|
|
|
- if (res.status == 200) {
|
|
|
- _this.$refs.table.refresh(false)
|
|
|
- _this.$emit('insterOk','normal')
|
|
|
- _this.$message.success(res.message)
|
|
|
- }
|
|
|
- _this.spinning = false
|
|
|
- })
|
|
|
- }
|
|
|
- })
|
|
|
- },
|
|
|
- // 批量删除已选产品
|
|
|
- handleBatchDel () {
|
|
|
- const _this = this
|
|
|
+ _this.$refs.table.refresh(false)
|
|
|
+ _this.openWarehouseModal = false
|
|
|
+ _this.spinning = false
|
|
|
+ })
|
|
|
+ },
|
|
|
+ // 产品分类 change
|
|
|
+ changeProductType (val, opt) {
|
|
|
+ this.queryParam.productTypeSn1 = val[0] ? val[0] : ''
|
|
|
+ this.queryParam.productTypeSn2 = val[1] ? val[1] : ''
|
|
|
+ this.queryParam.productTypeSn3 = val[2] ? val[2] : ''
|
|
|
+ },
|
|
|
+ handleMenuClick (e) {
|
|
|
+ const _this = this
|
|
|
+ if (e.key == 0) { // 仓库设置
|
|
|
if (!_this.rowSelectionInfo || (_this.rowSelectionInfo && _this.rowSelectionInfo.selectedRowKeys.length < 1)) {
|
|
|
- _this.$message.warning('请先选择要删除的产品后再进行批量操作!')
|
|
|
- return
|
|
|
- }
|
|
|
- const obj = []
|
|
|
- _this.rowSelectionInfo && _this.rowSelectionInfo.selectedRows.map(item => {
|
|
|
- obj.push(item.salesBillDetailSn)
|
|
|
- })
|
|
|
- this.$confirm({
|
|
|
- title: '提示',
|
|
|
- content: '已选产品' + obj.length + '项,确认要批量删除吗?',
|
|
|
- centered: true,
|
|
|
- onOk () {
|
|
|
- _this.spinning = true
|
|
|
- salesDetailBatchDel({
|
|
|
- salesBillSn: _this.salesBillSn,
|
|
|
- salesBillDetailSnList: obj
|
|
|
- }).then(res => {
|
|
|
- if (res.status == 200) {
|
|
|
- _this.$refs.table.refresh(false)
|
|
|
- _this.$emit('insterOk','normal')
|
|
|
- _this.$message.success(res.message)
|
|
|
- }
|
|
|
- _this.spinning = false
|
|
|
- })
|
|
|
- }
|
|
|
- })
|
|
|
- },
|
|
|
- // 设置单个出库仓库
|
|
|
- handleWarehouseBox (row) {
|
|
|
- const snArr = [row.salesBillDetailSn]
|
|
|
- const ajax_data = {
|
|
|
- warehouseSn: row.warehouseSn,
|
|
|
- salesBillDetailSnList: snArr,
|
|
|
- salesBillSn: this.salesBillSn
|
|
|
- }
|
|
|
- this.setWarehouseInfo(ajax_data)
|
|
|
- },
|
|
|
- chooseWarehouseOk (sn) {
|
|
|
- const _this = this
|
|
|
- const snArr = []
|
|
|
- _this.rowSelectionInfo.selectedRows.forEach(item => {
|
|
|
- snArr.push(item.salesBillDetailSn)
|
|
|
- })
|
|
|
- const ajax_data = {
|
|
|
- warehouseSn: sn,
|
|
|
- salesBillDetailSnList: snArr,
|
|
|
- salesBillSn: _this.salesBillSn
|
|
|
+ _this.$message.warning('请先选择要设置的产品!')
|
|
|
+ } else {
|
|
|
+ _this.openWarehouseModal = true
|
|
|
}
|
|
|
- _this.setWarehouseInfo(ajax_data)
|
|
|
- },
|
|
|
- setWarehouseInfo (data) {
|
|
|
- const _this = this
|
|
|
+ } else if (e.key == 1) { // 删除已选项
|
|
|
+ this.handleBatchDel()
|
|
|
+ } else if (e.key == 3) {
|
|
|
+ _this.openWarehouseModal = true
|
|
|
+ } else {
|
|
|
+ this.handleBatchDelAll()
|
|
|
+ }
|
|
|
+ },
|
|
|
+ // 已选产品 blur
|
|
|
+ onCellBlur (val, record) {
|
|
|
+ const _this = this
|
|
|
+ // 光标移出,值发生改变再调用编辑接口
|
|
|
+ if (val && val != record.qtyBackups) {
|
|
|
_this.spinning = true
|
|
|
- updateWarehouse(data).then(res => {
|
|
|
+ salesDetailUpdateQty({
|
|
|
+ salesBillDetailSn: record.salesBillDetailSn,
|
|
|
+ qty: record.qty,
|
|
|
+ salesBillSn: _this.salesBillSn
|
|
|
+ }).then(res => {
|
|
|
if (res.status == 200) {
|
|
|
+ _this.$emit('insterOk', 'normal')
|
|
|
_this.$message.success(res.message)
|
|
|
}
|
|
|
_this.$refs.table.refresh(false)
|
|
|
- _this.openWarehouseModal = false
|
|
|
_this.spinning = false
|
|
|
})
|
|
|
- },
|
|
|
- // 产品分类 change
|
|
|
- changeProductType (val, opt) {
|
|
|
- this.queryParam.productTypeSn1 = val[0] ? val[0] : ''
|
|
|
- this.queryParam.productTypeSn2 = val[1] ? val[1] : ''
|
|
|
- this.queryParam.productTypeSn3 = val[2] ? val[2] : ''
|
|
|
- },
|
|
|
- handleMenuClick (e) {
|
|
|
- const _this = this
|
|
|
- if (e.key == 0) { // 仓库设置
|
|
|
- if (!_this.rowSelectionInfo || (_this.rowSelectionInfo && _this.rowSelectionInfo.selectedRowKeys.length < 1)) {
|
|
|
- _this.$message.warning('请先选择要设置的产品!')
|
|
|
- } else {
|
|
|
- _this.openWarehouseModal = true
|
|
|
- }
|
|
|
- } else if (e.key == 1) { // 删除已选项
|
|
|
- this.handleBatchDel()
|
|
|
- } else {
|
|
|
- this.handleBatchDelAll()
|
|
|
- }
|
|
|
- },
|
|
|
- // 已选产品 blur
|
|
|
- onCellBlur (val, record) {
|
|
|
- const _this = this
|
|
|
- // 光标移出,值发生改变再调用编辑接口
|
|
|
- if (val && val != record.qtyBackups) {
|
|
|
+ } else {
|
|
|
+ record.qty = record.qtyBackups
|
|
|
+ }
|
|
|
+ },
|
|
|
+ // 重置
|
|
|
+ resetSearchForm (flag) {
|
|
|
+ this.queryParam.productCode = ''
|
|
|
+ this.queryParam.productName = ''
|
|
|
+ this.queryParam.warehouseSn = undefined
|
|
|
+ this.queryParam.productBrandSn = undefined
|
|
|
+ this.queryParam.productTypeSn1 = ''
|
|
|
+ this.queryParam.productTypeSn2 = ''
|
|
|
+ this.queryParam.productTypeSn3 = ''
|
|
|
+ this.productType = []
|
|
|
+ this.$refs.table.clearSelected()
|
|
|
+ this.$refs.table.refresh(!!flag)
|
|
|
+ },
|
|
|
+ // 删除产品
|
|
|
+ handleDel (row) {
|
|
|
+ const _this = this
|
|
|
+ this.$confirm({
|
|
|
+ title: '提示',
|
|
|
+ content: '确认要删除吗?',
|
|
|
+ centered: true,
|
|
|
+ closable: true,
|
|
|
+ onOk () {
|
|
|
+ _this.delLoading = true
|
|
|
_this.spinning = true
|
|
|
- salesDetailUpdateQty({
|
|
|
- salesBillDetailSn: record.salesBillDetailSn,
|
|
|
- qty: record.qty,
|
|
|
- salesBillSn: _this.salesBillSn
|
|
|
- }).then(res => {
|
|
|
+ salesDetailDel({ salesBillDetailSn: row.salesBillDetailSn, salesBillSn: _this.salesBillSn }).then(res => {
|
|
|
if (res.status == 200) {
|
|
|
- _this.$emit('insterOk','normal')
|
|
|
_this.$message.success(res.message)
|
|
|
+ _this.$refs.table.refresh(false)
|
|
|
+ _this.$emit('insterOk', 'normal')
|
|
|
}
|
|
|
- _this.$refs.table.refresh(false)
|
|
|
+ _this.delLoading = false
|
|
|
_this.spinning = false
|
|
|
})
|
|
|
- } else {
|
|
|
- record.qty = record.qtyBackups
|
|
|
}
|
|
|
- },
|
|
|
- // 重置
|
|
|
- resetSearchForm (flag) {
|
|
|
- this.queryParam.productCode = ''
|
|
|
- this.queryParam.productName = ''
|
|
|
- this.queryParam.warehouseSn = undefined
|
|
|
- this.queryParam.productBrandSn = undefined
|
|
|
- this.queryParam.productTypeSn1 = ''
|
|
|
- this.queryParam.productTypeSn2 = ''
|
|
|
- this.queryParam.productTypeSn3 = ''
|
|
|
- this.productType = []
|
|
|
- this.$refs.table.clearSelected()
|
|
|
- this.$refs.table.refresh(!!flag)
|
|
|
- },
|
|
|
- // 删除产品
|
|
|
- handleDel (row) {
|
|
|
- const _this = this
|
|
|
- this.$confirm({
|
|
|
- title: '提示',
|
|
|
- content: '确认要删除吗?',
|
|
|
- centered: true,
|
|
|
- closable: true,
|
|
|
- onOk () {
|
|
|
- _this.delLoading = true
|
|
|
- _this.spinning = true
|
|
|
- salesDetailDel({ salesBillDetailSn: row.salesBillDetailSn, salesBillSn: _this.salesBillSn }).then(res => {
|
|
|
- if (res.status == 200) {
|
|
|
- _this.$message.success(res.message)
|
|
|
- _this.$refs.table.refresh(false)
|
|
|
- _this.$emit('insterOk','normal')
|
|
|
- }
|
|
|
- _this.delLoading = false
|
|
|
- _this.spinning = false
|
|
|
- })
|
|
|
- }
|
|
|
- })
|
|
|
- },
|
|
|
- // 添加产品
|
|
|
- insterProduct (row, promotionFlag) {
|
|
|
- console.log(row, promotionFlag)
|
|
|
- // 防止多次添加产品
|
|
|
- if (this.isInster) { return }
|
|
|
- this.saveNewProduct(row, promotionFlag)
|
|
|
- },
|
|
|
- // 保存添加的产品到销售列表
|
|
|
- saveNewProduct (row, promotionFlag) {
|
|
|
- this.$message.loading('正在添加产品...', 1)
|
|
|
- this.isInster = true
|
|
|
- this.spinning = true
|
|
|
- salesDetailInsert({
|
|
|
- packQty: row.productPackQty,
|
|
|
- productSn: row.productSn,
|
|
|
- showCost: row.lastStockCost,
|
|
|
- price: row.productPrice,
|
|
|
- origPrice: row.productPrice,
|
|
|
- promotionGiftsAmount: 0,
|
|
|
- usePromotionGiftsAmount: 0,
|
|
|
- qty: row.salesNums,
|
|
|
- salesBillSn: this.detailData.salesBillSn,
|
|
|
- salesBillNo: this.detailData.salesBillNo,
|
|
|
- purchaseBillSn: this.detailData.purchaseBillSn,
|
|
|
- purchaseBillNo: this.detailData.purchaseBillNo,
|
|
|
- stockSn: row.stockSn,
|
|
|
- promotableFlag: row.isJoinActivityProduct || 0, // 可促销标记 有活动的传1,没活动的传0
|
|
|
- promotionFlag: promotionFlag, // 促销标记 正品传0,促销品传1
|
|
|
- warehouseSn: row.warehouseSn
|
|
|
- }).then(res => {
|
|
|
- if (res.status == 200) {
|
|
|
- this.$message.success('产品添加成功', 2.5)
|
|
|
- this.resetSearchForm(true)
|
|
|
- this.$emit('insterOk','normal')
|
|
|
- }
|
|
|
- this.spinning = false
|
|
|
- this.isInster = false
|
|
|
- }).catch(err => {
|
|
|
- this.spinning = false
|
|
|
- this.isInster = false
|
|
|
- })
|
|
|
- },
|
|
|
- closeGuideModel () {
|
|
|
- this.openGuideModal = false
|
|
|
- },
|
|
|
- // 批量导入产品
|
|
|
- hanldeOk (data, salesPromoSn) {
|
|
|
- const params = {
|
|
|
- salesBillSn: this.detailData.salesBillSn,
|
|
|
- salesBillDetailList: data
|
|
|
+ })
|
|
|
+ },
|
|
|
+ // 添加产品
|
|
|
+ insterProduct (row, promotionFlag) {
|
|
|
+ console.log(row, promotionFlag)
|
|
|
+ // 防止多次添加产品
|
|
|
+ if (this.isInster) { return }
|
|
|
+ this.saveNewProduct(row, promotionFlag)
|
|
|
+ },
|
|
|
+ // 保存添加的产品到销售列表
|
|
|
+ saveNewProduct (row, promotionFlag) {
|
|
|
+ this.$message.loading('正在添加产品...', 1)
|
|
|
+ this.isInster = true
|
|
|
+ this.spinning = true
|
|
|
+ salesDetailInsert({
|
|
|
+ packQty: row.productPackQty,
|
|
|
+ productSn: row.productSn,
|
|
|
+ showCost: row.lastStockCost,
|
|
|
+ price: row.productPrice,
|
|
|
+ origPrice: row.productPrice,
|
|
|
+ promotionGiftsAmount: 0,
|
|
|
+ usePromotionGiftsAmount: 0,
|
|
|
+ qty: row.salesNums,
|
|
|
+ salesBillSn: this.detailData.salesBillSn,
|
|
|
+ salesBillNo: this.detailData.salesBillNo,
|
|
|
+ purchaseBillSn: this.detailData.purchaseBillSn,
|
|
|
+ purchaseBillNo: this.detailData.purchaseBillNo,
|
|
|
+ stockSn: row.stockSn,
|
|
|
+ promotableFlag: row.isJoinActivityProduct || 0, // 可促销标记 有活动的传1,没活动的传0
|
|
|
+ promotionFlag: promotionFlag, // 促销标记 正品传0,促销品传1
|
|
|
+ warehouseSn: row.warehouseSn
|
|
|
+ }).then(res => {
|
|
|
+ if (res.status == 200) {
|
|
|
+ this.$message.success('产品添加成功', 2.5)
|
|
|
+ this.resetSearchForm(true)
|
|
|
+ this.$emit('insterOk', 'normal')
|
|
|
}
|
|
|
-
|
|
|
- salesBatchInsert(params).then(res => {
|
|
|
- if (res.status == 200) {
|
|
|
- this.$message.success('产品导入成功', 2.5)
|
|
|
- this.resetSearchForm(true)
|
|
|
- this.$emit('insterOk','normal')
|
|
|
- }
|
|
|
- })
|
|
|
- },
|
|
|
+ this.spinning = false
|
|
|
+ this.isInster = false
|
|
|
+ }).catch(err => {
|
|
|
+ this.spinning = false
|
|
|
+ this.isInster = false
|
|
|
+ })
|
|
|
+ },
|
|
|
+ closeGuideModel () {
|
|
|
+ this.openGuideModal = false
|
|
|
+ },
|
|
|
+ // 批量导入产品
|
|
|
+ hanldeOk (data, salesPromoSn) {
|
|
|
+ const params = {
|
|
|
+ salesBillSn: this.detailData.salesBillSn,
|
|
|
+ salesBillDetailList: data
|
|
|
+ }
|
|
|
+
|
|
|
+ salesBatchInsert(params).then(res => {
|
|
|
+ if (res.status == 200) {
|
|
|
+ this.$message.success('产品导入成功', 2.5)
|
|
|
+ this.resetSearchForm(true)
|
|
|
+ this.$emit('insterOk', 'normal')
|
|
|
+ }
|
|
|
+ })
|
|
|
}
|
|
|
}
|
|
|
+}
|
|
|
</script>
|
|
|
|
|
|
<style lang="less">
|
|
@@ -562,4 +567,4 @@
|
|
|
display:flex;
|
|
|
justify-content: space-between;
|
|
|
}
|
|
|
-</style>
|
|
|
+</style>
|