import { required, diyRequired } from '@/components/template/rules_verify.js'
import { getBrandList } from '@/api/miniapp'
import { getClassifyList } from '@/api/goods'
import { goodsMaterialList } from '@/api/commercialMaterial.js'
import { goodsPurchaseItemImportCode, goodsPurchaseDetail } from '@/api/goodsPurchasedStored.js'
export default {
data() {
return {
brandList: [],
ClassifyList: [],
goodsMaterialList: []
}
},
computed: {
storage_goods() {
return [
{
columnAttributes: {
label: '*品牌',
prop: 'brandId',
propName: 'brandName',
width: 160
},
render: (h, { row, column, index }) => {
return this.isEditIndex == index ? (
{
if(this.logs){
this.logs.push({index:index, errMsg:`${column.columnAttributes.label}不能为空`})
}
this?.tishicuowu?.()
return new Error('必须填写')
})]}
>
{
row[column.columnAttributes.prop] = val
}}
onChange={val => {
this.shanchujichu(row, 0)
if (val) {
row[column.columnAttributes.propName] = this.brandList.find(item => item.id == val).brandName
} else {
row[column.columnAttributes.propName] = ''
}
}}
placeholder="请选择"
>
{this.brandList.map((item, index_) => (
))}
) : (
{row[column.columnAttributes.propName]}
)
}
},
{
columnAttributes: {
label: '*商品大类',
prop: 'mainId',
propName: 'mainName',
width: 160
},
render: (h, { row, column, index }) => {
return this.isEditIndex == index ? (
{
if(this.logs){
this.logs.push({index:index, errMsg:`${column.columnAttributes.label}不能为空`})
}
this?.tishicuowu?.()
return new Error('必须填写')
})]}
>
{
row[column.columnAttributes.prop] = val
}}
onChange={val => {
this.shanchujichu(row, 1)
if (val) {
row[column.columnAttributes.propName] = this.ClassifyList.find(
item => item.categoryId == val
).name
} else {
row[column.columnAttributes.propName] = ''
}
}}
placeholder="请选择"
>
{this.ClassifyList.map((item, index_) => (
))}
) : (
{row[column.columnAttributes.propName]}
)
}
},
{
columnAttributes: {
label: '*商品小类',
prop: 'smallId',
propName: 'smallName',
width: 160
},
render: (h, { row, column, index }) => {
return this.isEditIndex == index ? (
{
if(this.logs){
this.logs.push({index:index, errMsg:`${column.columnAttributes.label}不能为空`})
}
this?.tishicuowu?.()
return new Error('必须填写')
})]}
>
{
row[column.columnAttributes.prop] = val
}}
onChange={val => {
this.shanchujichu(row, 2)
if (val) {
row[column.columnAttributes.propName] = (
this.ClassifyList.find(item => item.categoryId == row.mainId)?.children || []
).find(item => item.categoryId == val).name
} else {
row[column.columnAttributes.propName] = ''
}
}}
placeholder="请选择"
>
{(this.ClassifyList.find(item => item.categoryId == row.mainId)?.children || []).map(
(item, index_) => (
)
)}
) : (
{row[column.columnAttributes.propName]}
)
}
},
{
columnAttributes: {
label: '*商品名称',
prop: 'goodsMaterialId',
propName: 'goodsMaterialName',
width: 160
},
render: (h, { row, column, index }) => {
return this.isEditIndex == index ? (
{
if(this.logs){
this.logs.push({index:index, errMsg:`${column.columnAttributes.label}不能为空`})
}
this?.tishicuowu?.()
return new Error('必须填写')
})]}
>
{
row[column.columnAttributes.prop] = val
}}
onChange={val => {
this.shanchujichu(row, 3)
if (val) {
var data = this.goodsMaterialList
.filter(
item =>
item.brandId === row.brandId && item.mainId === row.mainId && item.smallId === row.smallId
)
.find(item => item.id == val)
row[column.columnAttributes.propName] = data?.goodsName
this.getGoodsDetl(data, res => {
if (this.formDialogType == 0) {
row['specsName'] = res?.specsName
row['unit'] = res?.unit
row['stockQty'] = res?.stockQty
row['factoryNo'] = res?.factoryNo
row['insideQty'] =
res.items
.filter(item => item.type === 'INSIDE')
.map(item => item.qty)
.reduce((accumulator, currentValue) => accumulator + currentValue, 0) * Number(row?.qty)
row['outQty'] =
res.items
.filter(item => item.type === 'OUT')
.map(item => item.qty)
.reduce((accumulator, currentValue) => accumulator + currentValue, 0) * Number(row?.qty)
row['partsQty'] =
res.items
.filter(item => item.type === 'PARTS')
.map(item => item.qty)
.reduce((accumulator, currentValue) => accumulator + currentValue, 0) * Number(row?.qty)
}
})
} else {
row[column.columnAttributes.propName] = ''
row['specsName'] = ''
row['unit'] = ''
row['insideQty'] = ''
row['outQty'] = ''
row['partsQty'] = ''
row['stockQty'] = ''
row['factoryNo'] = ''
}
}}
filterable={true}
placeholder="请选择"
>
{this.goodsMaterialList
.filter(
item =>
item.brandId === row.brandId && item.mainId === row.mainId && item.smallId === row.smallId
)
.map((item, index_) => (
))}
) : (
{row[column.columnAttributes.propName]}
)
}
},
{
columnAttributes: {
label: '厂物料编码',
prop: 'factoryNo',
width: 120
}
},
{
columnAttributes: {
label: '规格型号',
prop: 'specsName',
width: 120
}
},
{
columnAttributes: {
label: '单位',
prop: 'unit'
},
render: (h, { row, column, index }) => {
return {{ C: '整套', I: '单个' }[row[column.columnAttributes.prop]] || ''}
}
},
{
columnAttributes: {
label: '*采购数量',
prop: 'qty',
width: 160
},
render: (h, { row, column, index }) => {
return this.isEditIndex == index ? (
{
if(this.logs){
this.logs.push({index:index, errMsg:`${column.columnAttributes.label}不能为空`})
}
this?.tishicuowu?.()
return new Error('必须填写')
})]}
>
{
row[column.columnAttributes.prop] = val <= 0 ? 0 : Number(val)
this.getGoodsDetl(
this.goodsMaterialList
.filter(
item =>
item.brandId === row.brandId && item.mainId === row.mainId && item.smallId === row.smallId
)
.find(item => item.id == row.goodsMaterialId),
res => {
if (this.formDialogType == 0) {
row['insideQty'] =
res.items
.filter(item => item.type === 'INSIDE')
.map(item => item.qty)
.reduce((accumulator, currentValue) => accumulator + currentValue, 0) *
row[column.columnAttributes.prop]
row['outQty'] =
res.items
.filter(item => item.type === 'OUT')
.map(item => item.qty)
.reduce((accumulator, currentValue) => accumulator + currentValue, 0) *
row[column.columnAttributes.prop]
row['partsQty'] =
res.items
.filter(item => item.type === 'PARTS')
.map(item => item.qty)
.reduce((accumulator, currentValue) => accumulator + currentValue, 0) *
row[column.columnAttributes.prop]
}
}
)
}}
type="number"
placeholder="请输入"
>
) : (
{row[column.columnAttributes.prop]}
)
}
},
{
columnAttributes: {
label: '内机数量',
prop: 'insideQty'
}
},
{
columnAttributes: {
label: '外机数量',
prop: 'outQty'
}
},
{
columnAttributes: {
label: '配件数量',
prop: 'partsQty'
}
},
{
columnAttributes: {
label: '导入内机条码数量',
prop: 'insideCodeQty',
width: 120
}
},
{
columnAttributes: {
label: '导入外机条码数量',
prop: 'outCodeQty',
width: 120
}
},
{
columnAttributes: {
label: '导入配件条码数量',
prop: 'partsCodeQty',
width: 120
}
},
{
columnAttributes: {
label: '*采购价格',
prop: 'price',
width: 160
},
render: (h, { row, column, index }) => {
return this.isEditIndex == index ? (
{
if(this.logs){
this.logs.push({index:index, errMsg:`${column.columnAttributes.label}不能为空`})
}
this?.tishicuowu?.()
return new Error('必须填写')
})]}
>
{
row[column.columnAttributes.prop] = val
}}
type="number"
placeholder="请输入"
>
) : (
{row[column.columnAttributes.prop]}
)
}
},
{
columnAttributes: {
label: '采购金额',
prop: 'amount',
width: 160
},
render: (h, { row, column, index }) => {
return {Number(row['qty']) * Number(row['price'])}
}
},
{
columnAttributes: {
label: '库存数量',
prop: 'stockQty'
}
},
...(() => {
if (this.formDialogType < 2 && !~['WAIT', 'OK', 'FAIL'].indexOf(this.formData.status)) {
return [
{
columnAttributes: {
label: '操作',
fixed: 'right',
width: 140
},
render: (h, { row, column, index }) => {
return (
{[
this.isEditIndex == index ? (
{
this.$refs.formRef.validateField(
this.getVfyKey(this.isEditIndex),
(valid, invalidFields, errLabels) => {
if (valid && this.eidtItems()) {
this.isEditIndex = -1
}
}
)
}}
>
保存
) : null,
this.isEditIndex == -1 ? (
{
this.isEditIndex = index
}}
>
编辑
) : null,
{
this.delGoodsInfo(row, index)
}}
>
删除
]}
)
}
}
]
} else if (this.formDialogType < 2 && !!~[].indexOf(this.formData.status) && this.joinCode) {
return [
{
columnAttributes: {
label: '操作',
fixed: 'right',
width: 140
},
render: (h, { row, column, index }) => {
return (
{this.importButton(goodsPurchaseItemImportCode, '导入条码', { purchaseItemId: row.id }, () => { }, () => {
if (this.formData.id) {
// 更新表单信息
goodsPurchaseDetail({ id: this.formData.id }).then(res => {
Object.assign(this.formData, res.data, {
fileUrl: res.data.fileUrl ? [{ url: res.data.fileUrl }] : [],
items: res.data.items.map(item => ({ ...item, details: {} }))
})
})
}
})}
)
}
}
]
}
return []
})()
]
}
},
methods: {
getBaseList() {
getBrandList({
status: true
}).then(res => {
this.brandList = res.data
})
getClassifyList({
type: 2,
status: true
}).then(res => {
this.ClassifyList = res.data
})
goodsMaterialList({
pageNum: 1,
pageSize: -1,
params: []
}).then(res => {
this.goodsMaterialList = res.data.records
.filter(item => item.isVirtyual !== 'YES' && item.state == 'ON')
.map(item => ({ ...item, details: {} }))
})
},
shanchujichu(row, num) {
if (num <= 0) {
}
if (num <= 1) {
row.smallId = ''
row.smallName = ''
}
if (num <= 2) {
row.goodsMaterialId = ''
row.goodsMaterialName = ''
row.specsName = ''
row.unit = ''
row.insideQty = ''
row.outQty = ''
row.partsQty = ''
row.stockQty = ''
row.factoryNo = ''
}
},
getVfyKey(index, bool = true) {
return [
...(() => {
if (bool) {
return [`items`]
}
return []
})(),
...(() => {
if (index > -1) {
return [
`items.${index}.brandId`,
`items.${index}.mainId`,
`items.${index}.smallId`,
`items.${index}.goodsMaterialId`,
`items.${index}.qty`,
`items.${index}.price`
]
}
return []
})()
]
},
eidtItems() {
try {
this.formData.items.map((item, index) => {
this.formData.items.map((item2, index2) => {
if (
index !== index2 &&
`${item.brandId}_${item.mainId}_${item.smallId}_${item.goodsMaterialId}` ==
`${item2.brandId}_${item2.mainId}_${item2.smallId}_${item2.goodsMaterialId}`
) {
throw new Error('')
}
})
})
} catch (error) {
this.$message.warning('重复')
return false
}
return true
},
// 添加商品信息
addGoodsInfo() {
if (this.isEditIndex > -1) {
this.$refs.formRef.validateField(this.getVfyKey(this.isEditIndex), (valid, invalidFields, errLabels) => {
if (valid && this.eidtItems()) {
this.formData.items.unshift({
brandId: '',
brandName: '',
mainId: '',
mainName: '',
smallId: '',
smallName: '',
goodsMaterialId: '',
goodsMaterialName: '',
specsName: '',
unit: '',
qty: '',
insideQty: '',
outQty: '',
partsQty: '',
insideCodeQty: '',
outCodeQty: '',
partsCodeQty: '',
price: '',
amount: '',
stockQty: '',
factoryNo: "",
})
this.isEditIndex = 0
}
})
} else if (this.eidtItems()) {
this.formData.items.unshift({
brandId: '',
brandName: '',
mainId: '',
mainName: '',
smallId: '',
smallName: '',
goodsMaterialId: '',
goodsMaterialName: '',
specsName: '',
unit: '',
qty: '',
insideQty: '',
outQty: '',
partsQty: '',
insideCodeQty: '',
outCodeQty: '',
partsCodeQty: '',
price: '',
amount: '',
stockQty: '',
factoryNo: ''
})
this.isEditIndex = 0
}
},
delGoodsInfo(row, index) {
if (index > this.isEditIndex) {
this.formData?.items?.splice(index, 1)
} else if (index == this.isEditIndex) {
this.formData?.items?.splice(index, 1)
this.isEditIndex = -1
}
}
}
}