<template>
|
<GlobalWindow
|
width="100%"
|
:title="title"
|
:visible.sync="visible"
|
:confirm-working="isWorking"
|
@confirm="confirm">
|
<div class="main">
|
<div class="main_content">
|
<el-form :model="form" label-position="top" ref="form" :rules="rules">
|
<div class="list">
|
<el-form-item label="物料编码" prop="code">
|
<el-input v-model="form.code" :disabled="form.id" placeholder="不输入系统会自动编码" v-trim />
|
</el-form-item>
|
<el-form-item label="物料名称" prop="name">
|
<el-input v-model="form.name" placeholder="请输入" v-trim />
|
</el-form-item>
|
<el-form-item label="物料分类" prop="cateArr">
|
<el-cascader
|
v-model="form.cateArr"
|
:options="cateList"
|
@change="getCateVal"
|
:props="{ label: 'name', value: 'id', children: 'childCategoryList' }"
|
placeholder="请选择" />
|
</el-form-item>
|
<el-form-item label="条码" prop="qrcode">
|
<el-input v-model="form.qrcode" placeholder="请输入" v-trim />
|
</el-form-item>
|
<el-form-item label="品牌" prop="brand">
|
<el-input v-model="form.brand" placeholder="请输入" v-trim />
|
</el-form-item>
|
<el-form-item label="规格型号" prop="attr">
|
<el-input v-model="form.attr" placeholder="请输入" v-trim />
|
</el-form-item>
|
<el-form-item label="安全库存(下限)" prop="minStock">
|
<el-input v-model="form.minStock" placeholder="请输入" v-trim />
|
</el-form-item>
|
<el-form-item label="安全库存(上限)" prop="maxStock">
|
<el-input v-model="form.maxStock" placeholder="请输入" v-trim />
|
</el-form-item>
|
<el-form-item label="单位" prop="unitName">
|
<el-input v-model="form.unitName" placeholder="请输入" v-trim />
|
</el-form-item>
|
<el-form-item label="物料照片" prop="multifile">
|
<el-upload
|
:action="uploadImgUrl"
|
:file-list="fileList"
|
:data="uploadData"
|
:limit="1"
|
list-type="picture-card"
|
:on-exceed="exceed"
|
:on-success="uploadAvatarSuccess"
|
:on-remove="dele">
|
<i class="el-icon-plus"></i>
|
</el-upload>
|
</el-form-item>
|
<el-form-item style="width: 100%;" label="备注" prop="remark">
|
<el-input type="textarea" :rows="5" v-model="form.remark" placeholder="请输入" />
|
</el-form-item>
|
</div>
|
</el-form>
|
</div>
|
</div>
|
</GlobalWindow>
|
</template>
|
|
<script>
|
import GlobalWindow from '@/components/common/GlobalWindow'
|
import BaseOpera from '@/components/base/BaseOpera'
|
import { fetchList } from '@/api/business/category.js'
|
export default {
|
name: 'newMaterial',
|
components: {
|
GlobalWindow
|
},
|
extends: BaseOpera,
|
data () {
|
var validateCateArr = (rule, value, callback) => {
|
if (value.length === 0) {
|
callback(new Error('请选择物料分类'));
|
} else {
|
callback();
|
}
|
};
|
return {
|
form: {
|
id: null,
|
code: '',
|
name: '',
|
parentCateId: '',
|
cateId: '',
|
cateArr: [],
|
multifile: null,
|
remark: '',
|
unitName: '',
|
maxStock: '',
|
minStock: '',
|
attr: '',
|
brand: '',
|
qrcode: ''
|
},
|
rules: {
|
name: [
|
{ required: true, message: '请输入物料名称', trigger: 'blur' }
|
],
|
cateArr: [
|
{ required: true, validator: validateCateArr, trigger: 'blur' }
|
],
|
qrcode: [
|
{ required: true, message: '请输入条码', trigger: 'blur' }
|
]
|
},
|
cateList: [],
|
uploadImgUrl: process.env.VUE_APP_API_PREFIX + '/visitsAdmin/cloudService/public/uploadBatch',
|
fileList: [],
|
uploadData: {
|
folder: 'YW_MATERIAL'
|
}
|
}
|
},
|
created () {
|
this.config({
|
api: '/ywMaterial'
|
})
|
},
|
methods: {
|
open (title, target) {
|
this.title = title
|
this.fileList = []
|
this.visible = true
|
this.getCategry()
|
// 新建
|
if (target == null) {
|
this.$nextTick(() => {
|
this.$refs.form.resetFields()
|
this.form[this.configData['field.id']] = null
|
})
|
return
|
}
|
// 编辑
|
this.$nextTick(() => {
|
for (const key in this.form) {
|
this.form[key] = target[key]
|
}
|
if (this.form.multifile) {
|
this.fileList = [
|
{ url: this.form.multifile.fileurlFull, ...this.form.multifile }
|
]
|
}
|
})
|
},
|
exceed() {
|
this.$message.warning('只能上传一张图片!')
|
},
|
getCateVal(e) {
|
this.form.parentCateId = e[0]
|
this.form.cateId = e[1]
|
},
|
getCategry() {
|
fetchList({
|
capacity: 1000,
|
model: {
|
type: 7
|
},
|
page: 1
|
}).then(res => {
|
this.cateList = res.records
|
})
|
},
|
dele (e) {
|
this.fileList = []
|
this.form.multifile = null
|
},
|
uploadAvatarSuccess (file) {
|
const item = file.data[0]
|
this.fileList.push({ ...item, fileurl: item.imgaddr, name: item.originname })
|
this.form.multifile = { ...item, fileurl: item.imgaddr, name: item.originname }
|
}
|
}
|
}
|
</script>
|
|
<style lang="scss" scoped>
|
@import '@/assets/style/variables.scss';
|
|
|
.cost_tabs {
|
justify-content: flex-start;
|
border: none;
|
|
.tab {
|
height: 36px;
|
line-height: 36px;
|
font-size: 14px;
|
}
|
}
|
|
.main {
|
display: flex;
|
margin-bottom: 20px;
|
|
.main_content {
|
flex: 1;
|
margin-right: 20px;
|
|
.head {
|
display: flex;
|
align-items: center;
|
justify-content: space-between;
|
|
.tabs {
|
display: flex;
|
margin-bottom: 20px;
|
align-items: center;
|
justify-content: center;
|
|
.tab {
|
height: 14px;
|
line-height: 14px;
|
cursor: pointer;
|
border: 1px solid #ebebeb;
|
padding: 12px 24px;
|
}
|
|
.active {
|
font-weight: 500;
|
color: $primary-color;
|
border: 1px solid $primary-color;
|
}
|
}
|
}
|
|
.list {
|
display: flex;
|
flex-wrap: wrap;
|
|
.el-form-item {
|
width: 33.33%;
|
box-sizing: border-box;
|
padding: 0 12px;
|
}
|
}
|
}
|
|
.main_house {
|
width: 320px;
|
padding: 24px 12px;
|
border: 1px solid #c3c6cd;
|
border-radius: 2px;
|
|
.title {
|
font-size: 16px;
|
font-weight: 500;
|
margin-bottom: 30px;
|
}
|
}
|
|
}
|
|
.total {
|
display: flex;
|
justify-content: space-between;
|
align-items: center;
|
height: 32px;
|
background-color: #e7e9f5;
|
|
span {
|
width: 160px;
|
text-align: center;
|
}
|
}
|
|
.m_title {
|
font-weight: 500;
|
font-size: 14px;
|
margin-bottom: 15px;
|
margin-top: 10px;
|
}
|
</style>
|