import ImageUpload from '@/components/file-upload' import { getWebsit } from "@/api/customerManagement.js" import { listPageV2 } from "@/api/auxiliaryFittings/supplier"; import { materialCategoryList } from "@/api/auxiliaryMaterialClass"; import { materialNormList } from "@/api/auxiliaryPriceManagement"; import { listPageV2 as peijianList } from "@/api/auxiliaryFittings/attachmentProfile"; import { websitPurchaseInList, websitPurchaseInImport, websitPurchaseRetImport, websitPurchaseInDetail } from "@/api/purchasingManagement.js" import { commonTemplateDownload } from '@/api/common.js' import { required, mobileRequired, mobile } from '@/components/template/rules_verify.js' export default { data() { return { // 表格属性 tableAttributes: { // 启用勾选列 selectColumn: false }, // 表格事件 tableEvents: { 'selection-change': this.selectionChange }, recordSelected: [], formDialog: false, formDialogType: 0, // 0:新增, 1:编辑, 2:查看, 3:审核 formDialogTitles: ['新增', '编辑', '查看', '审核'], pageType: this?.$route?.name, materialCategoryListL1: [], materialCategoryListL2: [], materialNormList: [], peijianList: [], websitPurchaseInList: [] } }, computed: { // 事件组合 optionsEvensGroup() { return [ [ [ this.optionsEvensAuth("add", { click: this.addData }), ], ], [ [ this.optionsEvensAuth("template", { isRole: !!~['auxiliaryMaterialsStorage', 'partsStorage'].indexOf(this?.$route?.name), click: () => { commonTemplateDownload({ name: '采购入库模板.xlsx' }, `${this.$route.meta.title}`) .then(res => { this.$message({ message: '下载成功', type: 'success' }) }) .catch(err => { this.$message.error('下载失败') }) } }), ], [ this.optionsEvensAuth("imp", ({ moduleName }) => { return { isRole: !!~['auxiliaryMaterialsStorage', 'partsStorage'].indexOf(this?.$route?.name), name: moduleName, render: () => { return this.importButton(websitPurchaseInImport, moduleName, { goodsType: this.storageType }) } } }), ], ], [ [ this.optionsEvensAuth("template", { isRole: !!~['returnAuxiliaryMaterials', 'partsReturn'].indexOf(this?.$route?.name), click: () => { commonTemplateDownload({ name: '采购退货模板.xlsx' }, `${this.$route.meta.title}`) .then(res => { this.$message({ message: '下载成功', type: 'success' }) }) .catch(err => { this.$message.error('下载失败') }) } }), ], [ this.optionsEvensAuth("imp", ({ moduleName }) => { return { isRole: !!~['returnAuxiliaryMaterials', 'partsReturn'].indexOf(this?.$route?.name), name: moduleName, render: () => { return this.importButton(websitPurchaseRetImport, moduleName, { goodsType: this.storageType }) } } }), ], ], ] }, moreParameters() { return [ { name: '状态', key: 'flag', value: '', conditions: [ { label: `全部`, value: '' }, { label: `已保存`, value: "SAVE" }, { label: `已审核`, value: "OK" }, { label: `失败`, value: "FAIL" }, ] }, ] }, columns() { return [ ...(() => { if (!!~['auxiliaryMaterialsStorage', 'returnAuxiliaryMaterials'].indexOf(this.pageType)) { return [{ columnAttributes: { label: '大类名称', prop: 'parentCategoryId', }, render: (h, { row, column, index }) => { return ( row.isEditRow ?
{ row[column.columnAttributes.prop] = val }} onChange={(val) => { row['goodsCategoryId'] = "" row['goodsCategoryName'] = "" row['goodsId'] = "" row['goodsName'] = "" this.materialNormList = []; this.qkrow(row) if (val) { row['parentCategoryName'] = this.materialCategoryListL1.find(item => item.categoryId == val).categoryName } else { row['parentCategoryName'] = '' } this.$nextTick(this.jiaoyan) }} placeholder="请选择"> {this.materialCategoryListL1.map((item, index_) => )}
:
{row['parentCategoryName']}
) } }] } return [] })(), ...(() => { if (!!~['auxiliaryMaterialsStorage', 'returnAuxiliaryMaterials'].indexOf(this.pageType)) { return [{ columnAttributes: { label: '小类名称', prop: 'goodsCategoryId', }, render: (h, { row, column, index }) => { var selectList = row['parentCategoryId'] ? this.materialCategoryListL2.filter(item => item.parentCategoryId == row['parentCategoryId']) : [] return ( row.isEditRow ?
{ row[column.columnAttributes.prop] = val }} placeholder="请选择" onChange={(val) => { row['goodsId'] = "" row['goodsName'] = "" this.qkrow(row) if (val) { row['goodsCategoryName'] = selectList.find(item => item.categoryId == val).categoryName materialNormList({ isShowStockQty: true, websitId: this.formData.websitId, "pageNum": 1, "pageSize": -1, "params": [{ "param": "b.category_id", "compare": "=", "value": val }, { "param": "a.status", "compare": "=", "value": "ON" }] }).then(res => { this.materialNormList = res.data.records }) } else { this.materialNormList = []; row['goodsCategoryName'] = '' } this.$nextTick(this.jiaoyan) }}> {selectList.map((item, index_) => )}
:
{row['goodsCategoryName']}
) } }] } return [] })(), ...(() => { if (!!~['auxiliaryMaterialsStorage', 'returnAuxiliaryMaterials'].indexOf(this.pageType)) { return [{ columnAttributes: { label: '辅材', prop: 'goodsId', }, render: (h, { row, column, index }) => { return ( row.isEditRow ?
{ row[column.columnAttributes.prop] = val }} placeholder="请选择" onChange={(val) => { if (val) { var data = this.materialNormList.find(item => item.goodsId == val) row['goodsName'] = data.goodsName this.qkrow(row, { "goodsStockUnit": data.goodsStockUnit, "goodsCode": data.goodsCode, "goodsSpecification": data.goodsSpecification, "brand": "", "productCategory": "", "cost": data.cost, "costValue": "", "stockQty": data.stockQty }) } else { row['goodsName'] = '' this.qkrow(row) } this.$nextTick(this.jiaoyan) }}> {this.materialNormList.filter((item) => !~[...this.formData.items.map(val => val.goodsId).filter(val => val != row.goodsId)].indexOf(item.goodsId)).map((item, index_) => )}
:
{row['goodsName']}
) } }] } return [] })(), ...(() => { if (!!~['partsStorage', 'partsReturn'].indexOf(this.pageType)) { return [{ columnAttributes: { label: '配件', prop: 'goodsId', }, render: (h, { row, column, index }) => { return ( row.isEditRow ?
{ row[column.columnAttributes.prop] = val }} placeholder="请选择" onChange={(val) => { this.materialNormList = []; if (val) { var data = this.peijianList.find(item => item.goodsId == val) row['goodsName'] = data.goodsName this.qkrow(row, { "goodsStockUnit": data.goodsStockUnit, "goodsCode": data.goodsCode, "goodsSpecification": data.goodsSpecification, "brand": data.brandRelaName, "productCategory": data.productRelaName, "cost": data.cost, "costValue": "", "stockQty": data.stockQty }) } else { row['goodsName'] = '' this.qkrow(row) } this.$nextTick(this.jiaoyan) }}> {this.peijianList.filter((item) => !~[...this.formData.items.map(val => val.goodsId).filter(val => val != row.goodsId)].indexOf(item.goodsId)).map((item, index_) => )}
:
{row['goodsName']}
) } }] } return [] })(), ...(() => { if (!!~['auxiliaryMaterialsStorage', 'returnAuxiliaryMaterials', 'partsStorage', 'partsReturn'].indexOf(this.pageType)) { return [{ columnAttributes: { label: '单位', prop: 'goodsStockUnit', } }] } return [] })(), ...(() => { if (!!~['auxiliaryMaterialsStorage', 'partsStorage'].indexOf(this.pageType)) { return [{ columnAttributes: { label: '数量', prop: 'recQty', }, render: (h, { row, column, index }) => { return ( row.isEditRow ?
{ row[column.columnAttributes.prop] = val if (val) { row.costValue = this.setNumber( Number(row.cost) * Number(val) ) } else { row.costValue = "" } this.$nextTick(this.jiaoyan) }} placeholder="请选择">
:
{row[column.columnAttributes.prop]}
) } }] } return [] })(), ...(() => { if (!!~['returnAuxiliaryMaterials', 'partsReturn'].indexOf(this.pageType)) { return [{ columnAttributes: { label: '退货数量', prop: 'retQty', }, render: (h, { row, column, index }) => { return ( row.isEditRow ?
{ row[column.columnAttributes.prop] = val if (val) { row.retValue = this.setNumber( Number(row.cost) * Number(val) ) } else { row.retValue = "" } this.$nextTick(this.jiaoyan) }} placeholder="请选择">
:
{row[column.columnAttributes.prop]}
) } }] } return [] })(), ...(() => { if (!!~['returnAuxiliaryMaterials', 'partsReturn'].indexOf(this.pageType)) { return [{ columnAttributes: { label: '退款金额', prop: 'retValue', } }] } return [] })(), ...(() => { if (!!~['auxiliaryMaterialsStorage', 'returnAuxiliaryMaterials'].indexOf(this.pageType)) { return [{ columnAttributes: { label: '商品代码', prop: 'goodsCode', } }] } return [] })(), ...(() => { if (!!~['auxiliaryMaterialsStorage', 'returnAuxiliaryMaterials'].indexOf(this.pageType)) { return [{ columnAttributes: { label: '规格型号', prop: 'goodsSpecification', } }] } return [] })(), ...(() => { if (!!~['partsStorage', 'partsReturn'].indexOf(this.pageType)) { return [{ columnAttributes: { label: '配件编码', prop: 'goodsId', } }] } return [] })(), ...(() => { if (!!~['partsStorage', 'partsReturn'].indexOf(this.pageType)) { return [{ columnAttributes: { label: '适用品牌', prop: 'brand', } }] } return [] })(), ...(() => { if (!!~['partsStorage', 'partsReturn'].indexOf(this.pageType)) { return [{ columnAttributes: { label: '适用产品大类', prop: 'productCategory', } }] } return [] })(), ...(() => { if (!!~['returnAuxiliaryMaterials', 'partsReturn'].indexOf(this.pageType)) { return [{ columnAttributes: { label: '采购数量', prop: 'recQty', } }] } return [] })(), ...(() => { if (!!~['auxiliaryMaterialsStorage', 'returnAuxiliaryMaterials', 'partsStorage', 'partsReturn'].indexOf(this.pageType)) { return [{ columnAttributes: { label: '采购价格', prop: 'cost', } }] } return [] })(), ...(() => { if (!!~['auxiliaryMaterialsStorage', 'returnAuxiliaryMaterials', 'partsStorage', 'partsReturn'].indexOf(this.pageType)) { return [{ columnAttributes: { label: '采购金额', prop: 'costValue', } }] } return [] })(), ...(() => { if (!!~['auxiliaryMaterialsStorage', 'returnAuxiliaryMaterials', 'partsStorage', 'partsReturn'].indexOf(this.pageType) && this.formData.flag !== "OK") { return [{ columnAttributes: { label: '库存数量', prop: 'stockQty', } }] } return [] })(), ...(() => { if (!!~[0, 1].indexOf(this.formDialogType)) { return [{ columnAttributes: { label: '操作', prop: '', }, render: (h, { row, column, index }) => { return (
{ this.formData.items.splice(index, 1) }}>删除 { row.isEditRow ? { this.$refs.formRef.validate((valid, invalidFields, errLabels) => { if (valid) { this.formData.items[index].isEditRow = false } }) }}>确定 : null } { !row.isEditRow ? { this.formData.items.map((item, index_) => { if (index_ == index) { item.isEditRow = true if (!!~['auxiliaryMaterialsStorage', 'returnAuxiliaryMaterials'].indexOf(this.pageType) && row.goodsCategoryId) { materialNormList({ isShowStockQty: true, websitId: this.formData.websitId, "pageNum": 1, "pageSize": -1, "params": [{ "param": "b.category_id", "compare": "=", "value": row.goodsCategoryId }, { "param": "a.status", "compare": "=", "value": "ON" }] }).then(res => { this.materialNormList = res.data.records }) } } else { item.isEditRow = false } }) }}>编辑 : null }
) } }] } return [] })(), ] }, formItems1() { return [ { md: 24, isShow: true, name: 'slot-component', formItemAttributes: { label: '', prop: '', 'label-width': '0px' }, render: (h, { props, onInput }) => { var { value } = props return (
{({ SAVE: "保存", OK: "通过", FAIL: "失败" })[this.formData.flag]} {(!!~['auxiliaryMaterialsStorage', 'partsStorage'].indexOf(this.pageType) ? this.formData.purchaseId : this.formData.purchaseRetId) || ''} {this.formData.companyWechatName}
{ this.formData.websitId = val }} placeholder="请选择" disabled={this.formDialogType >= 2} onChange={(val) => { this.formData.items = [] if (val) { this.formData['websitName'] = this.getWebsitList.find(item => item.websitId == val).name } else { this.formData['websitName'] = '' } if (~['partsStorage', 'partsReturn'].indexOf(this.pageType)) { if (val) { peijianList({ isShowStockQty: true, websitId: val, "pageNum": 1, "pageSize": -1, "params": [{ "param": "a.status", "compare": "=", "value": "ON" }, { "param": "a.norm_type", "compare": "=", "value": "M" }] }).then((res) => { this.peijianList = res.data.records }) } else { this.peijianList = [] } } this.getorderlist() this.$nextTick(this.jiaoyan) }}> {this.getWebsitList.map(item => )}
{ this.formData.venderId = val }} placeholder="请选择" disabled={this.formDialogType >= 2} onChange={(val) => { if (val) { this.formData['venderName'] = this.listPageV2Data.find(item => item.venderId == val).venderName } else { this.formData['venderName'] = '' } this.getorderlist() this.$nextTick(this.jiaoyan) }}> {this.listPageV2Data.map(item => )}
{ !!~['returnAuxiliaryMaterials', 'partsReturn'].indexOf(this.pageType) ?
{ this.formData.purchaseId = val }} placeholder="请选择" disabled={this.formDialogType >= 2} clearable={true} filterable={true} blurNoMatchText={true} blurNoMatchInputBorderColor="" onChange={(val) => { if (val) { var data = this.websitPurchaseInList.find(item => item.purchaseId == val) if (data) { websitPurchaseInDetail({ purchaseId: data.purchaseId }).then(res => { Object.assign(this.formData, { items: res.data.items.map((item, index) => ({ ...item, retQty: "", retValue: "", isEditRow: !index })) }) var row = this.formData.items[0] if (!!~['auxiliaryMaterialsStorage', 'returnAuxiliaryMaterials'].indexOf(this.pageType) && row && row.goodsCategoryId) { materialNormList({ isShowStockQty: true, websitId: this.formData.websitId, "pageNum": 1, "pageSize": -1, "params": [{ "param": "b.category_id", "compare": "=", "value": row.goodsCategoryId }, { "param": "a.status", "compare": "=", "value": "ON" }] }).then(res => { this.materialNormList = res.data.records }) } }) return } } this.formData.items = [] this.$nextTick(this.jiaoyan) }}> {this.websitPurchaseInList.map(item => )}
{!~[0, 1].indexOf(this.formDialogType) ? this.formData.retTotalQty : this.setNumber([0, 0, 0, ...this.formData.items.map(row => { return Number(row.retQty) })].reduce((a, b) => a + b))} {!~[0, 1].indexOf(this.formDialogType) ? this.formData.retTotalAmount : this.setNumber([0, 0, 0, ...this.formData.items.map(row => { return Number(row.cost) * Number(row.retQty) })].reduce((a, b) => a + b))}
: null } {this.formData.createBy} {this.formData.createTime} {this.formData.confirmBy} {this.formData.confirmTime} { this.formData.remark = val }} maxlength="200" show-word-limit autosize={{ minRows: 6, maxRows: 8 }} disabled={this.formDialogType >= 2} >
) } },] }, formItems2() { return [ { md: 24, isShow: true, name: 'slot-component', formItemAttributes: { label: '', prop: 'items', 'label-width': '0px', rules: [...required] }, render: (h, { props, onInput }) => { var { value } = props return (
{!!~[0, 1].indexOf(this.formDialogType) ?
{ this.$refs.formRef.validate((valid, invalidFields, errLabels) => { if (valid || (Object.keys(invalidFields).length == 1 && invalidFields.items)) { this.formData.items.map((item) => { item.isEditRow = false }) this.formData.items.push({ "brand": "", "companyWechatId": "", "cost": "", "costValue": "", "goodsCategoryId": "", "goodsCategoryName": "", "goodsCode": "", "goodsId": "", "goodsName": "", "goodsSpecification": "", "goodsStockUnit": "", "goodsType": "", "note": "", "parentCategoryId": "", "parentCategoryName": "", "productCategory": "", "purchaseId": "", "recQty": "", "retQty": "", "retValue": "", "stockQty": "", "websitId": "", "websitName": "", "isEditRow": true, }) } }) }}>添加
: null}
) } },] } }, methods: { // 表格列解析渲染数据更改 columnParsing(item, defaultData) { if (item.jname === 'imageUrl') { defaultData.render = (h, { row, index, column }) => { return (
{row.imageUrl ? row.imageUrl.split(",").map(url => ) : null}
) } } return defaultData }, // 监听勾选变化 selectionChange(data) { this.recordSelected = data }, // 打开 openForm() { this.getorderlist(false) var req = [ getWebsit({ type: "C", status: true }), ] var runs = [ (res) => { this.getWebsitList = res.data.filter(item => item.type == "C") }, ] if (~['auxiliaryMaterialsStorage', 'returnAuxiliaryMaterials'].indexOf(this.pageType)) { req.push(...[ listPageV2({ "pageNum": 1, "pageSize": -1, "params": [{ "param": "a.status", "compare": "=", "value": "ON" }, { "param": "a.vender_type", "compare": "=", "value": ["A", "M"] }] }) ]) runs.push(...[ (res) => { this.listPageV2Data = res.data.records } ]) } else if (~['partsStorage', 'partsReturn'].indexOf(this.pageType)) { req.push(...[ listPageV2({ "pageNum": 1, "pageSize": -1, "params": [{ "param": "a.status", "compare": "=", "value": "ON" }, { "param": "a.vender_type", "compare": "=", "value": ["P", "A"] }] }) ]) runs.push(...[ (res) => { this.listPageV2Data = res.data.records } ]) } if (~['auxiliaryMaterialsStorage', 'returnAuxiliaryMaterials'].indexOf(this.pageType)) { req.push(...[ materialCategoryList({ "pageNum": 1, "pageSize": -1, "params": [{ "param": "a.status", "compare": "=", "value": "ON" }, { "param": "a.category_level", "compare": "=", "value": "1" }] }), materialCategoryList({ "pageNum": 1, "pageSize": -1, "params": [{ "param": "a.status", "compare": "=", "value": "ON" }, { "param": "a.category_level", "compare": "=", "value": "2" }] }), ]) runs.push(...[ (res) => { this.materialCategoryListL1 = res.data.records }, (res) => { this.materialCategoryListL2 = res.data.records } ]) } else if (~['partsStorage', 'partsReturn'].indexOf(this.pageType) && this.formData.websitId) { req.push(...[ peijianList({ isShowStockQty: true, websitId: this.formData.websitId, "pageNum": 1, "pageSize": -1, "params": [{ "param": "a.status", "compare": "=", "value": "ON" }, { "param": "a.norm_type", "compare": "=", "value": "M" }] }) ]) runs.push(...[ (res) => { this.peijianList = res.data.records }, ]) } Promise.all(req).then((ress) => { ress.forEach((res, index) => { runs[index](res) }) this.formDialog = true }) }, qkrow(row, data = {}) { ["goodsStockUnit", "recQty", "retQty", "retValue", "goodsCode", "goodsSpecification", "brand", "productCategory", "cost", "costValue", "stockQty"].map(key => { if (row[key] !== undefined) { row[key] = data[key] !== undefined ? data[key] : "" } }) }, getorderlist(bool = true) { if (this.formData.websitId && this.formData.venderId) { if (~['returnAuxiliaryMaterials'].indexOf(this.pageType)) { if (bool) { this.websitPurchaseInList = [] this.formData.items = [] this.formData.purchaseId = "" } websitPurchaseInList({ "pageNum": 1, "pageSize": -1, "params": [ { "param": "a.goods_type", "compare": "=", "value": "M" }, { "param": "a.flag", "compare": "=", "value": "OK" }, { "param": "a.websit_id", "compare": "=", "value": this.formData.websitId }, { "param": "a.vender_id", "compare": "=", "value": this.formData.venderId }, ] }).then(res => { this.websitPurchaseInList = res.data.records.map(item => ({ ...item, showLabel: `单号:${item.purchaseId} / 金额:${item.totalAmount} / 时间:${item.createTime.split(" ")[0]}` })) }) } else if (~['partsReturn'].indexOf(this.pageType)) { if (bool) { this.websitPurchaseInList = [] this.formData.items = [] this.formData.purchaseId = "" } websitPurchaseInList({ "pageNum": 1, "pageSize": -1, "params": [ { "param": "a.goods_type", "compare": "=", "value": "P" }, { "param": "a.flag", "compare": "=", "value": "OK" }, { "param": "a.websit_id", "compare": "=", "value": this.formData.websitId }, { "param": "a.vender_id", "compare": "=", "value": this.formData.venderId }, ] }).then(res => { this.websitPurchaseInList = res.data.records.map(item => ({ ...item, showLabel: `单号:${item.purchaseId} / 金额:${item.totalAmount} / 时间:${item.createTime.split(" ")[0]}` })) }) } } }, // 添加 addData() { this.formDialogType = 0 this.openForm() }, // 关闭弹窗 formCancel() { this.$refs.formRef.$refs.inlineForm.clearValidate() this.$data.formData = this.$options.data().formData this.formDialog = false }, jiaoyan() { this.$refs.formRef.validate((valid, invalidFields, errLabels) => { }, false) }, setNumber(val) { return Number(val.toFixed(2)) } }, }