Commit abca0593 by wangyalan-git

新增物品校验

parent 5d6954ae
...@@ -137,8 +137,7 @@ export const asyncRouterMap = [ ...@@ -137,8 +137,7 @@ export const asyncRouterMap = [
path: 'userList', path: 'userList',
name: 'userList', name: 'userList',
component: () => import('@/views/use/UserList'), component: () => import('@/views/use/UserList'),
meta: { title: '用户列表', icon: 'product-cate' }, meta: { title: '用户列表', icon: 'product-cate' }
hidden: true
}] }]
}, },
{ {
......
...@@ -75,11 +75,11 @@ ...@@ -75,11 +75,11 @@
</el-table-column> </el-table-column>
<el-table-column label="型号" <el-table-column label="型号"
align="center"> align="center">
<template slot-scope="scope">{{scope.row.name}}</template> <template slot-scope="scope">{{scope.row.goodsNo}}</template>
</el-table-column> </el-table-column>
<el-table-column label="物品类别" <el-table-column label="物品类别"
align="center"> align="center">
<template slot-scope="scope">{{scope.row.username}}</template> <template slot-scope="scope">{{scope.row.goodsCategoryName}}</template>
</el-table-column> </el-table-column>
<el-table-column label="数量" <el-table-column label="数量"
align="center"> align="center">
...@@ -87,7 +87,7 @@ ...@@ -87,7 +87,7 @@
</el-table-column> </el-table-column>
<el-table-column label="申领人" <el-table-column label="申领人"
align="center"> align="center">
<template slot-scope="scope">{{scope.row.memberName || '--'}}</template> <template slot-scope="scope">{{$store.getters.type == 1? scope.row.backOutboundName : scope.row.receptOutboundName}}</template>
</el-table-column> </el-table-column>
<el-table-column label="所属部门" <el-table-column label="所属部门"
align="center"> align="center">
......
...@@ -2,7 +2,8 @@ ...@@ -2,7 +2,8 @@
<el-dialog :visible.sync="visible" <el-dialog :visible.sync="visible"
:title="title" :title="title"
center center
width="1000px"> width="1000px"
:close-on-click-modal="false">
<!-- start --> <!-- start -->
<el-row style="padding: 10px 0;text-align: left;"> <el-row style="padding: 10px 0;text-align: left;">
<el-button type="primary" size="medium" @click="handleAdd">新增</el-button> <el-button type="primary" size="medium" @click="handleAdd">新增</el-button>
...@@ -10,16 +11,17 @@ ...@@ -10,16 +11,17 @@
<div class="scroll-container no-bottom" <div class="scroll-container no-bottom"
ref="scrollContainer"> ref="scrollContainer">
<el-form :model="formData" ref="formData"> <el-form :model="formData" ref="formData">
<el-table <el-table
:data="formData.tableData" :data="formData.tableData"
style="width: 100%" style="width: 100%"
@row-dblclick="dbclick" :row-class-name="tableRowClassName"
:row-class-name="tableRowClassName"> >
<el-table-column prop="name" label="物品名称"> <el-table-column prop="name" label="物品名称" align="left" style="justify-content: flex-start;">
<template slot-scope="scope"> <template slot-scope="scope">
<el-form-item size="mini" :prop="'tableData.' + scope.$index + '.name'" <el-form-item size="mini" :prop="'tableData.' + scope.$index + '.name'"
:rules="[{required: true,trigger: 'change',message: '物品名称不能为空'}]"> :rules="[{required: true,trigger: 'change',message: '物品名称不能为空'}]">
<el-autocomplete <el-autocomplete
:maxlength="30"
class="input-width" class="input-width"
v-model="scope.row.name" v-model="scope.row.name"
:fetch-suggestions="querySearch" :fetch-suggestions="querySearch"
...@@ -29,32 +31,34 @@ ...@@ -29,32 +31,34 @@
></el-autocomplete> ></el-autocomplete>
<span v-else>{{scope.row.name}}</span> <span v-else>{{scope.row.name}}</span>
</el-form-item> </el-form-item>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="型号"> <el-table-column label="型号">
<template slot-scope="scope"> <template slot-scope="scope">
<el-form-item size="mini" :prop="'tableData.' + scope.$index + '.goodsNo'" :rules="[{required: true,trigger: 'blur',message: '型号不能为空'}]"> <el-form-item size="mini" :prop="'tableData.' + scope.$index + '.goodsNo'"
:rules="[{required: true,trigger: 'blur',message: '型号不能为空'}]">
<el-input v-if="scope.row.isOK" v-model="scope.row.goodsNo" class="input-width" <el-input v-if="scope.row.isOK" v-model="scope.row.goodsNo" class="input-width"
placeholder="型号" placeholder="型号"
:disabled="scope.row.id? true: false"></el-input> :disabled="scope.row.id? true: false"></el-input>
<span v-else>{{scope.row.goodsNo}}</span> <span v-else>{{scope.row.goodsNo}}</span>
</el-form-item> </el-form-item>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="条形码"> <el-table-column label="条形码">
<template slot-scope="scope"> <template slot-scope="scope">
<el-form-item size="mini" :prop="'tableData.' + scope.$index + '.barCode'" :rules="[{required: true,trigger: 'blur',message: '条形码不能为空'}]"> <el-form-item size="mini" :prop="'tableData.' + scope.$index + '.barCode'"
:rules="[{required: true,trigger: 'blur',message: '条形码不能为空'}]">
<el-input v-if="scope.row.isOK" v-model="scope.row.barCode" class="input-width" <el-input v-if="scope.row.isOK" v-model="scope.row.barCode" class="input-width"
placeholder="条形码" placeholder="条形码"
:disabled="scope.row.id? true: false"></el-input> :disabled="scope.row.id? true: false"></el-input>
<span v-else>{{scope.row.barCode}}</span> <span v-else>{{scope.row.barCode}}</span>
</el-form-item> </el-form-item>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="物品类别"> <el-table-column label="物品类别">
<template slot-scope="scope"> <template slot-scope="scope">
<el-form-item size="mini" :prop="'tableData.' + scope.$index + '.goodsCategoryId'" <el-form-item size="mini" :prop="'tableData.' + scope.$index + '.goodsCategoryId'"
:rules="[{required: true,trigger: 'change',message: '物品类别不能为空'}]"> :rules="[{required: true,trigger: 'change',message: '类别不能为空'}]">
<el-select v-if="scope.row.isOK" v-model="scope.row.goodsCategoryId" <el-select v-if="scope.row.isOK" v-model="scope.row.goodsCategoryId"
class="input-width" class="input-width"
clearable clearable
...@@ -67,29 +71,31 @@ ...@@ -67,29 +71,31 @@
</el-select> </el-select>
<span v-else>{{getName(scope.row.goodsCategoryId, categoryOptions)}}</span> <span v-else>{{getName(scope.row.goodsCategoryId, categoryOptions)}}</span>
</el-form-item> </el-form-item>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="数量"> <el-table-column label="数量">
<template slot-scope="scope"> <template slot-scope="scope">
<el-form-item size="mini" :prop="'tableData.' + scope.$index + '.goodsNum'" :rules="[{required: true,trigger: 'blur',message: '数量不能为空'}]"> <el-form-item size="mini" :prop="'tableData.' + scope.$index + '.goodsNum'"
:rules="[{validator: validateNum,trigger: 'blur'}]">
<el-input v-if="scope.row.isOK" v-model="scope.row.goodsNum" class="input-width" <el-input v-if="scope.row.isOK" v-model="scope.row.goodsNum" class="input-width"
placeholder="数量"></el-input> placeholder="数量"></el-input>
<span v-else>{{scope.row.goodsNum}}</span> <span v-else>{{scope.row.goodsNum}}</span>
</el-form-item> </el-form-item>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="价格(元)"> <el-table-column label="价格(元)">
<template slot-scope="scope"> <template slot-scope="scope">
<el-form-item size="mini" :prop="'tableData.' + scope.$index + '.prict'" :rules="[{required: true,trigger: 'blur',message: '价格不能为空'}]"> <el-form-item size="mini" :prop="'tableData.' + scope.$index + '.prict'"
:rules="[{validator: validatePrice,trigger: 'blur'}]">
<el-input v-if="scope.row.isOK" v-model="scope.row.prict" class="input-width" <el-input v-if="scope.row.isOK" v-model="scope.row.prict" class="input-width"
placeholder="价格" placeholder="价格"
:disabled="scope.row.id? true: false"></el-input> :disabled="scope.row.id? true: false"></el-input>
<span v-else>{{scope.row.prict}}</span> <span v-else>{{scope.row.prict}}</span>
</el-form-item> </el-form-item>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="供应商"> <el-table-column label="供应商">
<template slot-scope="scope"> <template slot-scope="scope">
<el-form-item size="mini" :prop="'tableData.' + scope.$index + '.supplierId'" <el-form-item size="mini" :prop="'tableData.' + scope.$index + '.supplierId'"
:rules="[{required: true,trigger: 'change',message: '供应商不能为空'}]"> :rules="[{required: true,trigger: 'change',message: '供应商不能为空'}]">
<el-select v-if="scope.row.isOK" v-model="scope.row.supplierId" <el-select v-if="scope.row.isOK" v-model="scope.row.supplierId"
...@@ -104,10 +110,10 @@ ...@@ -104,10 +110,10 @@
</el-select> </el-select>
<span v-else>{{getName(scope.row.supplierId, supplierOptions,1)}}</span> <span v-else>{{getName(scope.row.supplierId, supplierOptions,1)}}</span>
</el-form-item> </el-form-item>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="库房"> <el-table-column label="库房">
<template slot-scope="scope"> <template slot-scope="scope">
<el-form-item size="mini" :prop="'tableData.' + scope.$index + '.stockRoomId'" <el-form-item size="mini" :prop="'tableData.' + scope.$index + '.stockRoomId'"
:rules="[{required: true,trigger: 'change',message: '库房不能为空'}]"> :rules="[{required: true,trigger: 'change',message: '库房不能为空'}]">
<el-select v-if="scope.row.isOK" v-model="scope.row.stockRoomId" <el-select v-if="scope.row.isOK" v-model="scope.row.stockRoomId"
...@@ -122,17 +128,17 @@ ...@@ -122,17 +128,17 @@
</el-select> </el-select>
<span v-else>{{getName(scope.row.stockRoomId, depotOptions)}}</span> <span v-else>{{getName(scope.row.stockRoomId, depotOptions)}}</span>
</el-form-item> </el-form-item>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="操作" <el-table-column label="操作"
align="center" align="center"
width="50"> width="50">
<template slot-scope="scope"> <template slot-scope="scope">
<el-link type="danger" :underline="false" @click="handleDelete(scope.$index)">删除</el-link> <el-link type="danger" :underline="false" @click="handleDelete(scope.$index)">删除</el-link>
<!-- <el-button type="danger" size="small" @click="handleDelete(scope.$index)">删除</el-button>--> <!-- <el-button type="danger" size="small" @click="handleDelete(scope.$index)">删除</el-button>-->
</template> </template>
</el-table-column> </el-table-column>
</el-table> </el-table>
</el-form> </el-form>
</div> </div>
<div slot="footer"> <div slot="footer">
...@@ -154,7 +160,31 @@ import { getSuppliersList } from '@/api/supplier' ...@@ -154,7 +160,31 @@ import { getSuppliersList } from '@/api/supplier'
export default { export default {
name: 'addGoodsModal', name: 'addGoodsModal',
data() { data() {
var validatePrice = (rule, value, callback) => {
if (value === '') {
callback(new Error('价格不能为空'))
} else {
let priceReg = /^[0-9]+(.[0-9]{2})?$/
if (!priceReg.test(value)) {
callback(new Error('价格不符合要求'))
}
callback()
}
}
var validateNum = (rule, value, callback) => {
if (value === '') {
callback(new Error('数量不能为空'))
} else {
let myReg = /^\d{1,}$/
if (!myReg.test(value)) {
callback(new Error('数量必须为正整数'))
}
callback()
}
}
return { return {
validatePrice: validatePrice,
validateNum: validateNum,
visible: false, visible: false,
title: null, title: null,
loading: false, loading: false,
...@@ -231,9 +261,9 @@ export default { ...@@ -231,9 +261,9 @@ export default {
isOK: true isOK: true
},) },)
}, },
tableRowClassName ({row, rowIndex}) { tableRowClassName({ row, rowIndex }) {
// 把每一行的索引放进row // 把每一行的索引放进row
row.index = rowIndex; row.index = rowIndex
}, },
// dbclick(row, event, column) { // dbclick(row, event, column) {
// for (var i of this.formData.tableData) { // for (var i of this.formData.tableData) {
...@@ -242,19 +272,14 @@ export default { ...@@ -242,19 +272,14 @@ export default {
// row.isOK = !row.isOK // row.isOK = !row.isOK
// }, // },
submit(formName) { submit(formName) {
// if (!this.formData.tableData.length || !this.formData.tableData[0].name) {
// this.$message.warning('请添加物品')
// return
// }
this.$refs[formName].validate((valid) => { this.$refs[formName].validate((valid) => {
if (valid) { if (valid) {
let data = this.formData.tableData let data = this.formData.tableData
alert(JSON.stringify(data))
addGoodList({ vankeGoodsList: this.formData.tableData }).then(res => { addGoodList({ vankeGoodsList: this.formData.tableData }).then(res => {
this.$emit('ok') this.$emit('ok')
this.visible = false this.visible = false
}) })
}else { } else {
this.$message.warning('请检查必填项') this.$message.warning('请检查必填项')
} }
}) })
...@@ -270,7 +295,7 @@ export default { ...@@ -270,7 +295,7 @@ export default {
return '' return ''
} }
let name = null let name = null
console.log('arr,id',arr,id) console.log('arr,id', arr, id)
if (type) { if (type) {
name = arr.filter(item => item.id == id)[0].supplierName name = arr.filter(item => item.id == id)[0].supplierName
} else { } else {
...@@ -320,4 +345,14 @@ export default { ...@@ -320,4 +345,14 @@ export default {
.no-bottom .el-form-item--mini.el-form-item, .el-form-item--small.el-form-item { .no-bottom .el-form-item--mini.el-form-item, .el-form-item--small.el-form-item {
margin-bottom: 0; margin-bottom: 0;
} }
.no-bottom .el-form-item__error {
position: relative;
top: 0;
margin: 5px 0;
}
.no-bottom .el-table th, .el-table td {
vertical-align: top;
}
</style> </style>
...@@ -2,7 +2,8 @@ ...@@ -2,7 +2,8 @@
<el-dialog :visible.sync="visible" <el-dialog :visible.sync="visible"
:title="title" :title="title"
center center
width="1000px"> width="1000px"
:close-on-click-modal="false">
<!-- excel表格上传 --> <!-- excel表格上传 -->
<el-upload <el-upload
:auto-upload="false" :auto-upload="false"
...@@ -21,13 +22,13 @@ ...@@ -21,13 +22,13 @@
<el-table <el-table
:data="formData.tableData" :data="formData.tableData"
style="width: 100%" style="width: 100%"
@row-dblclick="dbclick"
:row-class-name="tableRowClassName"> :row-class-name="tableRowClassName">
<el-table-column prop="name" label="物品名称"> <el-table-column prop="name" label="物品名称">
<template slot-scope="scope"> <template slot-scope="scope">
<el-form-item size="mini" :prop="'tableData.' + scope.$index + '.name'" <el-form-item size="mini" :prop="'tableData.' + scope.$index + '.name'"
:rules="[{required: true,trigger: 'change',message: '物品名称不能为空'}]"> :rules="[{required: true,trigger: 'change',message: '物品名称不能为空'}]">
<el-autocomplete <el-autocomplete
:maxlength="30"
class="input-width" class="input-width"
v-model="scope.row.name" v-model="scope.row.name"
:fetch-suggestions="querySearch" :fetch-suggestions="querySearch"
...@@ -64,7 +65,7 @@ ...@@ -64,7 +65,7 @@
<el-table-column label="物品类别"> <el-table-column label="物品类别">
<template slot-scope="scope"> <template slot-scope="scope">
<el-form-item size="mini" :prop="'tableData.' + scope.$index + '.goodsCategoryId'" <el-form-item size="mini" :prop="'tableData.' + scope.$index + '.goodsCategoryId'"
:rules="[{required: true,trigger: 'change',message: '物品类别不能为空'}]"> :rules="[{required: true,message: '请选择物品类别',trigger: 'change'}]">
<el-select v-if="scope.row.isOK" v-model="scope.row.goodsCategoryId" <el-select v-if="scope.row.isOK" v-model="scope.row.goodsCategoryId"
class="input-width" class="input-width"
clearable clearable
...@@ -82,7 +83,7 @@ ...@@ -82,7 +83,7 @@
<el-table-column label="数量"> <el-table-column label="数量">
<template slot-scope="scope"> <template slot-scope="scope">
<el-form-item size="mini" :prop="'tableData.' + scope.$index + '.goodsNum'" <el-form-item size="mini" :prop="'tableData.' + scope.$index + '.goodsNum'"
:rules="[{required: true,trigger: 'blur',message: '数量不能为空'}]"> :rules="[{validator: validateNum,trigger: 'blur'}]">
<el-input v-if="scope.row.isOK" v-model="scope.row.goodsNum" class="input-width" <el-input v-if="scope.row.isOK" v-model="scope.row.goodsNum" class="input-width"
placeholder="数量"></el-input> placeholder="数量"></el-input>
<span v-else>{{scope.row.goodsNum}}</span> <span v-else>{{scope.row.goodsNum}}</span>
...@@ -92,7 +93,7 @@ ...@@ -92,7 +93,7 @@
<el-table-column label="价格(元)"> <el-table-column label="价格(元)">
<template slot-scope="scope"> <template slot-scope="scope">
<el-form-item size="mini" :prop="'tableData.' + scope.$index + '.prict'" <el-form-item size="mini" :prop="'tableData.' + scope.$index + '.prict'"
:rules="[{required: true,trigger: 'blur',message: '价格不能为空'}]"> :rules="[{validator: validatePrice,trigger: 'blur'}]">
<el-input v-if="scope.row.isOK" v-model="scope.row.prict" class="input-width" <el-input v-if="scope.row.isOK" v-model="scope.row.prict" class="input-width"
placeholder="价格" placeholder="价格"
:disabled="scope.row.id? true: false"></el-input> :disabled="scope.row.id? true: false"></el-input>
...@@ -168,7 +169,31 @@ import XLSX from 'xlsx' ...@@ -168,7 +169,31 @@ import XLSX from 'xlsx'
export default { export default {
name: 'importGoodsModal', name: 'importGoodsModal',
data() { data() {
var validatePrice = (rule, value, callback) => {
if (!value) {
callback(new Error('价格不能为空'))
} else {
let priceReg = /^[0-9]+(.[0-9]{2})?$/
if (!priceReg.test(value)) {
callback(new Error('价格不符合要求'))
}
callback()
}
}
var validateNum = (rule, value, callback) => {
if (!value) {
callback(new Error('数量不能为空'))
} else {
let myReg = /^\d{1,}$/
if (!myReg.test(value)) {
callback(new Error('数量必须为正整数'))
}
callback()
}
}
return { return {
validatePrice:validatePrice,
validateNum:validateNum,
files: null, //文件列表 files: null, //文件列表
visible: false, visible: false,
title: null, title: null,
...@@ -308,15 +333,15 @@ export default { ...@@ -308,15 +333,15 @@ export default {
// 把每一行的索引放进row // 把每一行的索引放进row
row.index = rowIndex; row.index = rowIndex;
}, },
dbclick(row, event, column) { // dbclick(row, event, column) {
console.log('row, event, column',row, event, column) // console.log('row, event, column',row, event, column)
for (var i of this.formData.tableData) { // for (var i of this.formData.tableData) {
i.isOK = false // i.isOK = false
} // }
row.isOK = !row.isOK // row.isOK = !row.isOK
this.formData.tableData.splice(row.index,1,row) // this.formData.tableData.splice(row.index,1,row)
console.log('this.formData.tableData',this.formData.tableData) // console.log('this.formData.tableData',this.formData.tableData)
}, // },
submit(formName) { submit(formName) {
this.$refs[formName].validate((valid) => { this.$refs[formName].validate((valid) => {
if (valid) { if (valid) {
...@@ -395,6 +420,9 @@ export default { ...@@ -395,6 +420,9 @@ export default {
fs.splice(0, 1) fs.splice(0, 1)
} }
this.read(f.raw) this.read(f.raw)
this.$nextTick(() => {
this.$refs.formData.clearValidate()
})
}, },
/** /**
* 解析 * 解析
...@@ -407,18 +435,12 @@ export default { ...@@ -407,18 +435,12 @@ export default {
let tables = [] let tables = []
for (var sheet of sheetArray.Sheet1) { for (var sheet of sheetArray.Sheet1) {
let rowTable = {} let rowTable = {}
rowTable.isOK = true
rowTable.name = sheet['物品名称'] rowTable.name = sheet['物品名称']
rowTable.goodsNo = sheet['型号'] rowTable.goodsNo = sheet['型号']
rowTable.goodsNum = sheet['数量'] rowTable.goodsNum = sheet['数量']
rowTable.prict = sheet['价格'] rowTable.prict = sheet['价格']
rowTable.barCode = sheet['条形码'] rowTable.barCode = sheet['条形码']
if (sheet['物品名称']) {
let isExist = this.goodsList.findIndex(item =>
item.name === sheet['物品名称']
)
isExist === -1 && (rowTable.id = null)
isExist !== -1 && (rowTable.id = this.goodsList[isExist].id)
}
if (sheet['物品类别']) { if (sheet['物品类别']) {
let isExist = this.categoryOptions.findIndex(item => let isExist = this.categoryOptions.findIndex(item =>
item.name === sheet['物品类别'] item.name === sheet['物品类别']
...@@ -440,6 +462,21 @@ export default { ...@@ -440,6 +462,21 @@ export default {
isExist === -1 && (rowTable.stockRoomId = null) isExist === -1 && (rowTable.stockRoomId = null)
isExist !== -1 && (rowTable.stockRoomId = this.depotOptions[isExist].id) isExist !== -1 && (rowTable.stockRoomId = this.depotOptions[isExist].id)
} }
if (sheet['物品名称']) {
let isExist = this.goodsList.findIndex(item =>
item.name === sheet['物品名称']
)
isExist === -1 && (rowTable.id = null)
if( isExist !== -1){
rowTable.id = this.goodsList[isExist].id
rowTable.prict = this.goodsList[isExist].prict
rowTable.goodsNo = this.goodsList[isExist].goodsNo
rowTable.barCode = this.goodsList[isExist].barCode
rowTable.goodsCategoryId = this.goodsList[isExist].goodsCategoryId
rowTable.stockRoomId = this.goodsList[isExist].stockRoomId
rowTable.supplierId = this.goodsList[isExist].supplierId
}
}
tables.push(rowTable) tables.push(rowTable)
this.formData.tableData = tables this.formData.tableData = tables
} }
...@@ -465,8 +502,3 @@ export default { ...@@ -465,8 +502,3 @@ export default {
font-size: 10px; font-size: 10px;
} }
</style> </style>
<style>
.no-bottom .el-form-item--mini.el-form-item, .el-form-item--small.el-form-item {
margin-bottom: 0;
}
</style>
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment