| | |
| | | <template> |
| | | <win-md class="stock-edit" :title="`${setting.title}采购入库`" @close="close" :width="'800px'"> |
| | | <win-md class="stock-edit" title="物品分发" @close="close" :width="'800px'"> |
| | | <el-form class="form" ref="ruleForm" :model="formData" :rules="rules" label-width="120px"> |
| | | <div class="main-w"> |
| | | <el-row :gutter="24" class="headerHeight"> |
| | | <el-col :span="12"> |
| | | <el-form-item label="入库仓库" prop="warehouseId"> |
| | | <el-form-item label="部门" prop="warehouseId"> |
| | | <el-select v-model="formData.warehouseId" placeholder="请选择" style="width: 100%"> |
| | | <el-option v-for="item in warehouses" :key="item.id" :label="item.warehouseName" :value="item.id" /> |
| | | <el-option v-for="item in departmentOptions" :key="item.id" :label="item.name" :value="item.id" /> |
| | | </el-select> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="12"> |
| | | <el-form-item label="领取人" prop="warehouseId"> |
| | | <el-input v-model="formData.warehouseId" placeholder="请输入"></el-input> |
| | | </el-form-item> |
| | | </el-col> |
| | | </el-row> |
| | | <el-row :gutter="24" class="headerHeight"> |
| | | <el-col :span="12"> |
| | | <el-form-item label="联系电话" prop="buyType"> |
| | | <el-input v-model.number="formData.buyType" placeholder="请输入"></el-input> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="12"> |
| | |
| | | </el-col> |
| | | </el-row> |
| | | <el-row :gutter="24" class="headerHeight"> |
| | | <el-col :span="12"> |
| | | <el-form-item label="采购类型" prop="buyType"> |
| | | <el-select v-model="formData.buyType" placeholder="请选择" style="width: 100%"> |
| | | <el-option v-for="item in buyTypeOptions" :key="item.value" :label="item.label" :value="item.value" /> |
| | | </el-select> |
| | | </el-form-item> |
| | | </el-col> |
| | | </el-row> |
| | | <el-row :gutter="24" class="headerHeight"> |
| | | <el-col :span="24"> |
| | | <el-form-item label="采购入库手续" prop="procureDoc"> |
| | | <el-form-item label="分发审批手续" prop="procureDoc"> |
| | | <upload ref="uploadRef" :values="fileList" :settings="uploadSettings" @on-change="uploadChange"></upload> |
| | | </el-form-item> |
| | | </el-col> |
| | |
| | | </el-select> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="12"> |
| | | <el-form-item label="供货商" prop="supplier"> |
| | | <el-input v-model="goodsItem.supplier" clearable maxlength="20" show-word-limit /> |
| | | </el-form-item> |
| | | </el-col> |
| | | </el-row> |
| | | <el-table :data="goodsItem.models" :stripe="true"> |
| | | <el-table-column prop="baseGoodsModelsId" label="规格型号" align="center"> |
| | | <template slot-scope="scope"> |
| | | {{ getGoodsModelsName(scope.row.baseGoodsModelsId) }} |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column label="单位" align="center"> |
| | | <template slot-scope="scope"> |
| | | {{ scope.row.unit }} |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column prop="priceYuan" label="单价(元)" align="center"> |
| | | <template slot-scope="scope"> |
| | | <el-form-item |
| | | label-width="0" |
| | | style="margin-bottom: 0" |
| | | :prop="`procureGoods[${goodsIndex}].models[${scope.$index}].priceYuan`" |
| | | :rules="rules.priceYuan" |
| | | > |
| | | <el-input |
| | | type="number" |
| | | v-model.number="scope.row.priceYuan" |
| | | @change="priceChange($event, goodsIndex, scope.$index)" |
| | | ></el-input> |
| | | <el-row class="card3" v-for="(mItem, mIndex) in goodsItem.models" :key="mIndex"> |
| | | <el-row :gutter="24" type="flex" align="middle" style="height: 50px"> |
| | | <el-col :span="8"> |
| | | <el-form-item label="规格型号:" prop="baseGoodsModelsId" style="margin-bottom: 0"> |
| | | {{ getGoodsModelsName(mItem.baseGoodsModelsId) }} |
| | | </el-form-item> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column prop="counts" label="采购数量" align="center"> |
| | | <template slot-scope="scope"> |
| | | <el-form-item |
| | | label-width="0" |
| | | style="margin-bottom: 0" |
| | | :prop="`procureGoods[${goodsIndex}].models[${scope.$index}].counts`" |
| | | :rules="rules.counts" |
| | | > |
| | | <el-input v-model.number="scope.row.counts"></el-input> |
| | | </el-col> |
| | | <el-col :span="6"> |
| | | <el-form-item label="剩余数量:" prop="baseGoodsModelsId" style="margin-bottom: 0" label-width="80"> |
| | | 50 |
| | | </el-form-item> |
| | | </template> |
| | | </el-table-column> |
| | | </el-table> |
| | | </el-col> |
| | | <el-col :span="10" v-if="true"> |
| | | <el-form-item label="分发数量:" prop="baseGoodsModelsId" style="margin-bottom: 0" label-width="80"> |
| | | <el-input v-model.number="mItem.count" style="width: 160px;"></el-input> |
| | | </el-form-item> |
| | | </el-col> |
| | | </el-row> |
| | | <el-table :data="mItem.clist" :stripe="true" v-if="false"> |
| | | <el-table-column prop="count" label="分发数量" align="center"> |
| | | <template slot-scope="scope"> |
| | | <el-input v-model="scope.row.count"></el-input> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column prop="count" label="使用人" align="center"> |
| | | <template slot-scope="scope"> |
| | | <el-input v-model="scope.row.user" maxlength="20"></el-input> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column prop="count" label="联系电话" align="center"> |
| | | <template slot-scope="scope"> |
| | | <el-input v-model.number="scope.row.phone" maxlength="11"></el-input> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column align="left" width="60"> |
| | | <template slot-scope="scope"> |
| | | <i |
| | | v-if="mItem.clist.length > 1" |
| | | class="el-icon-remove-outline" |
| | | style="color: #f56c6c; font-size: 16px; cursor: pointer" |
| | | @click="handleDel(goodsIndex, mIndex, scope.$index)" |
| | | ></i> |
| | | <i |
| | | v-if="mItem.clist.length - 1 == scope.$index" |
| | | class="el-icon-circle-plus-outline" |
| | | style="color: #0d997c; font-size: 16px; cursor: pointer" |
| | | @click="handleAdd(goodsIndex, mIndex, scope.$index)" |
| | | ></i> |
| | | </template> |
| | | </el-table-column> |
| | | </el-table> |
| | | </el-row> |
| | | <div class="btn-group"> |
| | | <el-button |
| | | v-if="formData.procureGoods.length > 1" |
| | |
| | | goodsModel, |
| | | procureDetail, |
| | | } from '@/api/stock/procure/purchaseOrder'; |
| | | import { departmentListAll } from '@/api/system/deptment'; |
| | | import { getTree } from '@/api/foudation/classification'; |
| | | import MyButton from '@/components/myButton/myButton'; |
| | | import winMd from '@/components/win/win-md'; |
| | |
| | | import { getUploadUrl, getDownUrl } from '@/utils/base'; |
| | | import { findParentIds } from '@/utils/index'; |
| | | import { mapGetters } from 'vuex'; |
| | | import * as DateFormatter from '@/utils/DateFormatter'; |
| | | |
| | | export default { |
| | | components: { MyButton, winMd, upload }, |
| | |
| | | let temp = this.formData.procureGoods.filter((v) => v.baseGoodsTemplateId == value); |
| | | if (!temp || temp.length != 1) { |
| | | return callback(new Error('已选过此物品')); |
| | | } |
| | | callback(); |
| | | }; |
| | | // 金额校验 |
| | | var checkPrice = (rule, value, callback) => { |
| | | console.log(value); |
| | | if (!value) { |
| | | return callback(new Error('请输入')); |
| | | } |
| | | if (value == 0) { |
| | | this.$message.warning('数字值不能为0'); |
| | | return callback(new Error('数字值不能为0')); |
| | | } |
| | | callback(); |
| | | }; |
| | |
| | | }, |
| | | ], |
| | | fileList: [], |
| | | warehouses: [], // 入库仓库列表 |
| | | departmentOptions: [], // 部门列表 |
| | | categoryOptions: [], // 物品分类列表 |
| | | modelList: [], //型号列表 |
| | | formData: { |
| | | procureDoc: '', |
| | | warehouseId: '', // 入库仓库id |
| | | procureTime: '', // 采购时间 |
| | | buyType: '2', // 采购方式(1:集采;2=自采) |
| | | procureTime: DateFormatter.formatDate(new Date()), // 采购时间 |
| | | procureGoods: [], |
| | | }, |
| | | goodsItem: { |
| | |
| | | }, |
| | | modelsItem: { |
| | | baseGoodsModelsId: '', // 规格型号编号 |
| | | priceYuan: null, // 单价(元) |
| | | price: null, // 单价(分 采购需要,调拨不需要) |
| | | counts: null, // 操作数量 |
| | | unit: null, //单位 |
| | | syCount: '', |
| | | }, |
| | | clistItem: { |
| | | count: null, |
| | | user: null, |
| | | phone: null, |
| | | }, |
| | | rules: { |
| | | warehouseId: [{ required: true, message: '请选择', trigger: 'change' }], |
| | |
| | | baseCategoryIds: [{ required: true, message: '请选择', trigger: 'change' }], |
| | | baseGoodsTemplateId: [{ validator: checkGoodsTemplateId, trigger: ['blur', 'change'] }], |
| | | modelsIds: [{ required: true, message: '请选择', trigger: 'change' }], |
| | | priceYuan: [{ validator: checkPrice, trigger: 'blur' }], |
| | | counts: [{ validator: checkCounts, trigger: 'blur' }], |
| | | }, |
| | | |
| | |
| | | }, |
| | | methods: { |
| | | async init() { |
| | | this.getWarehouseList(); |
| | | this.getdeptmentList(); |
| | | this.getgoodsTemplate(); |
| | | this.getgoodsModel(); |
| | | // 获取物品分类列表 |
| | |
| | | }, |
| | | |
| | | // 获取入库仓库列表 |
| | | getWarehouseList() { |
| | | selectTenantWarehouse({ agencyId: this.userInfo.tenantId }) |
| | | getdeptmentList() { |
| | | departmentListAll({ agencyId: this.userInfo.tenantId }) |
| | | .then((res) => { |
| | | this.warehouses = res; |
| | | this.departmentOptions = res; |
| | | if (!this.setting.id && res.length) { |
| | | this.formData.procureGoods.push(JSON.parse(JSON.stringify(this.goodsItem))); |
| | | } |
| | | if (this.warehouses.length && !this.formData.warehouseId) { |
| | | if (this.departmentOptions.length && !this.formData.warehouseId) { |
| | | // 默认选中第一个仓库 |
| | | this.formData.warehouseId = this.warehouses[0].id; |
| | | this.formData.warehouseId = this.departmentOptions[0].id; |
| | | } |
| | | }) |
| | | .catch((err) => { |
| | |
| | | let str = JSON.stringify(arr); |
| | | e.forEach((item) => { |
| | | if (str.indexOf(item) == -1) { |
| | | let temp = this.goodsModelAll.find((v) => v.id == item); |
| | | arr.push({ ...this.modelsItem, baseGoodsModelsId: item, unit: temp.unit }); |
| | | let clist = [JSON.parse(JSON.stringify(this.clistItem))]; |
| | | arr.push({ ...this.modelsItem, baseGoodsModelsId: item, clist }); |
| | | } |
| | | }); |
| | | this.formData.procureGoods[index].models = arr; |
| | |
| | | let arr = this.formData.procureGoods[index].models; |
| | | let delIndex = arr.findIndex((v) => v.baseGoodsModelsId == e); |
| | | this.formData.procureGoods[index].models.splice(delIndex, 1); |
| | | }, |
| | | |
| | | //型号分发新增 |
| | | handleAdd(goodsIndex, mIndex, cIndex) { |
| | | this.formData.procureGoods[goodsIndex].models[mIndex].clist.push(JSON.parse(JSON.stringify(this.clistItem))); |
| | | }, |
| | | handleDel(goodsIndex, mIndex, cIndex) { |
| | | this.formData.procureGoods[goodsIndex].models[mIndex].clist.splice(cIndex, 1); |
| | | }, |
| | | |
| | | // 价格input监听 转为分 |
| | |
| | | </script> |
| | | <style scoped lang="scss"> |
| | | @import url(../../../../styles/store.scss); |
| | | .card3 { |
| | | border-radius: 2px; |
| | | background: #ffffff; |
| | | } |
| | | </style> |