<template>
|
<GlobalWindow :title="title" :visible.sync="visible" :confirm-working="isWorking" @confirm="confirm" width="800px"
|
v-loading="isUploading">
|
<el-form :model="form" ref="form" label-width="120px" :rules="rules">
|
<div style="font-size: 18px;font-weight: bold;">基本信息</div>
|
<el-form-item label="商品名称" prop="name">
|
<el-input v-model="form.name" maxlength="50" placeholder="请输入商品名称,不超过50个字" v-trim />
|
</el-form-item>
|
<el-form-item label="商品品牌" prop="brandId">
|
<el-select v-model="form.brandId" placeholder="请选择,单选">
|
<el-option v-for="item in brandList()" :key="item.id" :label="item.name" :value="item.id">
|
</el-option>
|
</el-select>
|
</el-form-item>
|
<el-form-item label="商品类别" prop="categoryId">
|
<el-select v-model="form.categoryId" placeholder="请选择,单选" @change="categorySelect">
|
<el-option v-for="item in categoryList()" :key="item.id" :label="item.name" :value="item.id">
|
</el-option>
|
</el-select>
|
</el-form-item>
|
<el-form-item label="指导价(元)" prop="zdPrice">
|
<el-input v-model="form.zdPrice" @input="priceCHANEG(form.zdPrice, 1)" type="number" placeholder="建议录入整数,单位元"
|
v-trim />
|
</el-form-item>
|
<el-form-item label="入手价(元)" prop="price">
|
<el-input v-model="form.price" @input="priceCHANEG(form.price, 2)" type="number" placeholder="建议录入整数,单位元"
|
v-trim />
|
</el-form-item>
|
<el-form-item label="商品主图">
|
<UploadAvatarImage :file="{ 'imgurlfull': form.imgfullurl, 'imgurl': form.imgurl }" :uploadData="uploadData"
|
tipsLabel="" @uploadSuccess="uploadReverseSuccess" @uploadEnd="isUploading = false"
|
@uploadBegin="isUploading = true" />
|
只能上传图片格式,png格式,建议尺寸140px*140px
|
</el-form-item>
|
<el-form-item label="商品图片">
|
<UploadImage :fileList="form.multifileList" :uploadData="uploadData" @beginUpload="isUploading = true" @endUpload="isUploading = false" />
|
只能上传图片格式,png格式,建议尺寸600*600px
|
</el-form-item>
|
<template v-if="form.baseGoodsParamList && form.baseGoodsParamList.length > 0">
|
<div style="font-size: 18px;font-weight: bold;">参数属性值配置 <span
|
style="font-size: 13px; font-weight: 500;">按需配置当前商品的产品参数值,单个参数值不超过30个字</span></div>
|
<el-form-item :label="item.name" v-for="(item, index) in form.baseGoodsParamList" :key="index">
|
<el-input v-model="item.val" maxlength="30" type="text" placeholder="请输入" v-trim />
|
</el-form-item>
|
</template>
|
</el-form>
|
</GlobalWindow>
|
</template>
|
|
<script>
|
import BaseOpera from '@/components/base/BaseOpera'
|
import GlobalWindow from '@/components/common/GlobalWindow'
|
import UploadAvatarImage from '@/components/common/UploadAvatarImage.vue'
|
import UploadImage from '@/components/common/UploadImage.vue'
|
import { baseCategory, brand } from '@/api/system/common.js'
|
import { companyCreate, companyUpdateById } from '@/api/business/goods.js'
|
export default {
|
name: 'OperaGoodsWindow',
|
extends: BaseOpera,
|
components: { GlobalWindow, UploadAvatarImage, UploadImage },
|
data() {
|
return {
|
action: process.env.VUE_APP_API_PREFIX + '/public/upload',
|
name1: '',
|
name2: '',
|
// 表单数据
|
isUploading: false,
|
form: {
|
id: null,
|
name: '',
|
categoryId: '',
|
brandId: '',
|
zdPrice: '',
|
price: '',
|
imgurl: '',
|
imgfullurl: '',
|
multifileList: [],
|
baseGoodsParamList: [],
|
},
|
uploadData: {
|
folder: 'goods_img'
|
},
|
// 验证规则
|
rules: {
|
name: [
|
{ required: true, message: '不能为空', trigger: 'blur' }
|
],
|
categoryId: [
|
{ required: true, message: '请选择', trigger: 'change' }
|
],
|
brandId: [
|
{ required: true, message: '请选择', trigger: 'change' }
|
],
|
zdPrice: [
|
{ required: true, message: '不能为空', trigger: 'blur' }
|
],
|
price: [
|
{ required: true, message: '不能为空', trigger: 'blur' }
|
]
|
},
|
options: []
|
}
|
},
|
inject: ['categoryList', 'brandList'],
|
created() {
|
this.config({
|
api: '/business/goods',
|
'field.id': 'id'
|
})
|
// this.getbrand()
|
// this.getcategory()
|
},
|
methods: {
|
open(title, target) {
|
this.title = title
|
this.visible = true
|
// 新建
|
if (target == null) {
|
this.$nextTick(() => {
|
this.$refs.form.resetFields()
|
this.form.imgurl = ''
|
this.form.imgfullurl = ''
|
this.form.multifileList = []
|
this.form.baseGoodsParamList = []
|
this.form[this.configData['field.id']] = null
|
})
|
return
|
}
|
// 编辑
|
this.$nextTick(() => {
|
for (const key in this.form) {
|
this.form[key] = target[key]
|
}
|
this.form.multifileList.forEach(item => {
|
item.url = item.filefullurl
|
})
|
})
|
},
|
priceCHANEG(val, type) {
|
if (!/^[1-9]+[0-9]*$/.test(val)) {
|
this.$message.warning('只能输入正整数')
|
if (type === 1) {
|
this.form.zdPrice = ''
|
} else {
|
this.form.price = ''
|
}
|
}
|
},
|
categorySelect(v) {
|
this.categoryList().forEach(item => {
|
if (item.id === v) {
|
this.form.baseGoodsParamList = JSON.parse(JSON.stringify(item.baseCateParamList))
|
this.form.baseGoodsParamList.forEach(item => {
|
item.pramaId = item.id
|
})
|
}
|
})
|
},
|
uploadReverseSuccess(file) {
|
this.form.imgurl = file.imgurl;
|
this.form.imgfullurl = file.imgurlfull;
|
}
|
}
|
}
|
</script>
|
|
<style lang="scss" scoped>
|
::v-deep .el-form-item__content {
|
.el-input {
|
width: 400px;
|
}
|
}
|
</style>
|