|
|
@@ -0,0 +1,319 @@
|
|
|
+<template>
|
|
|
+ <div v-loading="loading">
|
|
|
+ <div class="white-box">
|
|
|
+ <el-form ref="form" label-width="auto" class="form-page">
|
|
|
+ <el-form-item :label="$t('shop.productName')"><!-- 商品名称 -->
|
|
|
+ <el-input v-model="form.goodsName"></el-input>
|
|
|
+ </el-form-item>
|
|
|
+ <el-form-item :label="$t('shop.memberDiscount')"><!-- 会员折扣 -->
|
|
|
+ <el-input v-model="form.sellDiscount"></el-input>
|
|
|
+ </el-form-item>
|
|
|
+ <el-form-item :label="$t('shop.productType')"><!-- 商品类型 -->
|
|
|
+ <el-checkbox v-for="(value,key) in GiftTypeArr" v-model="form.giftType[key-1]" :key="key" >{{value.name}}</el-checkbox>
|
|
|
+ </el-form-item>
|
|
|
+ <el-form-item :label="$t('shop.bvSplit')">
|
|
|
+ <el-select v-model="form.pvSplit" placeholder="">
|
|
|
+ <el-option
|
|
|
+ v-for="item in pvSplitOptions"
|
|
|
+ :key="item.value"
|
|
|
+ :label="item.label"
|
|
|
+ :value="item.value">
|
|
|
+ </el-option>
|
|
|
+ </el-select>
|
|
|
+ </el-form-item>
|
|
|
+ <el-form-item :label="$t('shop.productCategory')"><!-- 商品分类 -->
|
|
|
+ <el-select v-model="form.categoryType" placeholder="">
|
|
|
+ <el-option v-for="item in categoryType" :key="item.id" :label="item.name" :value="item.id"></el-option>
|
|
|
+ </el-select>
|
|
|
+ </el-form-item>
|
|
|
+ <el-form-item :label="$t('shop.productCode')"><!-- 商品编号 -->
|
|
|
+ <el-input v-model="form.goodsNo"></el-input>
|
|
|
+ </el-form-item>
|
|
|
+ <el-form-item :label="$t('shop.unit')"><!-- 单位 -->
|
|
|
+ <el-input v-model="form.unit"></el-input>
|
|
|
+ </el-form-item>
|
|
|
+ <el-form-item :label="$t('shop.taxRate')"><!-- 税率 -->
|
|
|
+ <el-input v-model="form.taxRate">
|
|
|
+ <template slot="append">%</template>
|
|
|
+ </el-input>
|
|
|
+ </el-form-item>
|
|
|
+ <el-form-item :label="$t('shop.uSPrice')" p>
|
|
|
+ <el-input v-model="form.sellPriceStandard"></el-input>
|
|
|
+ </el-form-item>
|
|
|
+ <el-form-item :label="$t('shop.salesPrice')">
|
|
|
+ <el-input v-model="form.sellPrice"></el-input>
|
|
|
+ </el-form-item>
|
|
|
+ <el-form-item :label="$t('shop.marketPrice')">
|
|
|
+ <el-input v-model="form.marketPrice"></el-input>
|
|
|
+ </el-form-item>
|
|
|
+ <el-form-item :label="$t('shop.priceBV')" v-show="pvDisabled"><!-- 价格BV -->
|
|
|
+ <el-input v-model="form.pricePv"></el-input>
|
|
|
+ </el-form-item>
|
|
|
+ <el-form-item :label="$t('shop.inventory')"><!-- 库存 -->
|
|
|
+ <el-input v-model="form.storeNums"></el-input>
|
|
|
+ </el-form-item>
|
|
|
+ <el-form-item :label="$t('shop.productDetails')"><!-- 商品详情 -->
|
|
|
+ <el-input
|
|
|
+ type="textarea"
|
|
|
+ :rows="2"
|
|
|
+ :placeholder="$t('shop.enterContentNotice')"
|
|
|
+ v-model="form.content">
|
|
|
+ </el-input><!-- 请输入内容 -->
|
|
|
+ </el-form-item>
|
|
|
+ <el-form-item :label="$t('shop.order')"><!-- 排序 -->
|
|
|
+ <el-input v-model="form.sort"></el-input>
|
|
|
+ </el-form-item>
|
|
|
+ <el-form-item :label="$t('shop.uploadImages')"><!-- 上传图片 -->
|
|
|
+ <div class='up_load'>
|
|
|
+ <!-- <leo-uploader
|
|
|
+ @on-success='upLoadSuccess'
|
|
|
+ :request-route="'shop/upload'"
|
|
|
+ ></leo-uploader> -->
|
|
|
+ <Upload
|
|
|
+ :request-route="'v1/shop/upload'"
|
|
|
+ width="400px"
|
|
|
+ height="160px"
|
|
|
+ @on-success="upLoadSuccess"
|
|
|
+ ></Upload>
|
|
|
+ </div>
|
|
|
+ </el-form-item>
|
|
|
+ <el-form-item>
|
|
|
+ <el-button type="primary" @click="addSubmit" :loading="submitButtonStat">{{ $t('table.add') }}<!-- 添加 --></el-button>
|
|
|
+ </el-form-item>
|
|
|
+ </el-form>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+</template>
|
|
|
+
|
|
|
+<script>
|
|
|
+import baseInfo from '@/utils/baseInfo'
|
|
|
+import Upload from '@/components/Upload'
|
|
|
+import { getAddGoodsConfig, getUploadToken, addGoods } from '@/api/shop'
|
|
|
+
|
|
|
+export default {
|
|
|
+ name: 'goods-add',
|
|
|
+ components: {Upload},
|
|
|
+ mounted () {
|
|
|
+ this.getData()
|
|
|
+ this.getFileToken()
|
|
|
+ },
|
|
|
+ data () {
|
|
|
+ return {
|
|
|
+ dialogImageUrl: '',
|
|
|
+ dialogVisible: false,
|
|
|
+ disabled: false,
|
|
|
+ loading: false,
|
|
|
+ file: null,
|
|
|
+ uploadToken: '',
|
|
|
+ pvSplitOptions: [
|
|
|
+ {
|
|
|
+ value: '0',
|
|
|
+ label: this.$t('common.no')
|
|
|
+ },
|
|
|
+ {
|
|
|
+ value: '1',
|
|
|
+ label: this.$t('common.yes')
|
|
|
+ }],
|
|
|
+ form: {
|
|
|
+ goodsName: '',
|
|
|
+ type: '',
|
|
|
+ giftType: [false, false, false, false],
|
|
|
+ sellType: [false, false],
|
|
|
+ goodsNo: '',
|
|
|
+ unit: '',
|
|
|
+ marketPrice: '',
|
|
|
+ sellPrice: '',
|
|
|
+ pvSplit: '0',
|
|
|
+ pricePv: '',
|
|
|
+ point: '',
|
|
|
+ storeNums: '',
|
|
|
+ content: '',
|
|
|
+ sort: '',
|
|
|
+ discount: '',
|
|
|
+ cover: '',
|
|
|
+ textarea: '',
|
|
|
+ sellDiscount: '',
|
|
|
+ categoryType: '',
|
|
|
+ sellPriceStandard: '',
|
|
|
+ taxRate: 0
|
|
|
+ },
|
|
|
+ submitButtonStat: false,
|
|
|
+ goodsType: [],
|
|
|
+ GiftTypeArr: [],
|
|
|
+ categoryType: [],
|
|
|
+ sellType: null,
|
|
|
+ width: '100px',
|
|
|
+ height: '100px',
|
|
|
+ pvDisabled: true,
|
|
|
+ exchangeRate: baseInfo.exchangeRate()
|
|
|
+ }
|
|
|
+ },
|
|
|
+ watch: {
|
|
|
+ dialogVisible (newVal, oldVal) {
|
|
|
+ console.log(newVal, oldVal)
|
|
|
+ },
|
|
|
+ // 监听商品分类,控制PV是否展示
|
|
|
+ 'form.categoryType': {
|
|
|
+ deep: true,
|
|
|
+ handler (modern, origin) {
|
|
|
+ this.pvDisabled = (parseInt(modern) === 1)
|
|
|
+ }
|
|
|
+ }
|
|
|
+ // 监听商品标准价格,自动计算销售价格
|
|
|
+ // 'form.sellPriceStandard': {
|
|
|
+ // deep: true,
|
|
|
+ // handler(modern, origin) {
|
|
|
+ // this.form.sellPrice = modern * this.exchangeRate
|
|
|
+ // }
|
|
|
+ // },
|
|
|
+ },
|
|
|
+ methods: {
|
|
|
+ handleRemove (file) {
|
|
|
+ console.log(file)
|
|
|
+ },
|
|
|
+ upLoadSuccess (file) {
|
|
|
+ this.form.cover = file
|
|
|
+ },
|
|
|
+ handlePictureCardPreview (file) {
|
|
|
+ this.dialogImageUrl = file.url
|
|
|
+ this.dialogVisible = true
|
|
|
+ this.file = file
|
|
|
+ // console.log(file);
|
|
|
+ },
|
|
|
+ handleDownload (file) {
|
|
|
+ console.log(file)
|
|
|
+ },
|
|
|
+ getFileToken () {
|
|
|
+ getUploadToken().then(response => {
|
|
|
+ this.uploadToken = response.data
|
|
|
+ }).catch(err => {
|
|
|
+ this.$message({
|
|
|
+ message: this.$t('common.modifyData'),
|
|
|
+ type: 'info'
|
|
|
+ })
|
|
|
+ })
|
|
|
+ },
|
|
|
+ getData (page, pageSize) {
|
|
|
+ getAddGoodsConfig(this.filterModel).then(response => {
|
|
|
+ this.categoryType = response.data.categoryType
|
|
|
+ this.goodsType = response.data.goodsType
|
|
|
+ this.GiftTypeArr = response.data.giftType
|
|
|
+ this.sellType = response.data.sellType
|
|
|
+ }).catch(err => {
|
|
|
+ this.$message({
|
|
|
+ message: err,
|
|
|
+ type: 'error'
|
|
|
+ })
|
|
|
+ })
|
|
|
+ },
|
|
|
+ addSubmit () {
|
|
|
+ this.submitButtonStat = true
|
|
|
+ let path = 'shop/goods-add'
|
|
|
+ let sen_gift = []
|
|
|
+ this.form.giftType.map((item, index) => {
|
|
|
+ if (item) {
|
|
|
+ sen_gift.push((index + 1).toString())
|
|
|
+ }
|
|
|
+ })
|
|
|
+
|
|
|
+ let postData = {
|
|
|
+ goodsName: this.form.goodsName,
|
|
|
+ sellDiscount: this.form.sellDiscount,
|
|
|
+ discount: this.form.type.discount,
|
|
|
+ type: this.form.type,
|
|
|
+ giftType: sen_gift,
|
|
|
+ // sellType: sellType,
|
|
|
+ sellType: this.form.sellType,
|
|
|
+ pvSplit: this.form.pvSplit,
|
|
|
+ categoryType: this.form.categoryType,
|
|
|
+ goodsNo: this.form.goodsNo,
|
|
|
+ unit: this.form.unit,
|
|
|
+ marketPrice: this.form.marketPrice,
|
|
|
+ sellPrice: this.form.sellPrice,
|
|
|
+ sellPriceStandard: this.form.sellPriceStandard,
|
|
|
+ pricePv: this.form.pricePv,
|
|
|
+ // point: this.form.point,
|
|
|
+ storeNums: this.form.storeNums,
|
|
|
+ content: this.form.content,
|
|
|
+ sort: this.form.sort,
|
|
|
+ cover: this.form.cover,
|
|
|
+ taxRate: this.form.taxRate
|
|
|
+ }
|
|
|
+ addGoods(postData).then(response => {
|
|
|
+ this.$message({
|
|
|
+ message: response.data,
|
|
|
+ type: 'success'
|
|
|
+ })
|
|
|
+ this.submitButtonStat = false
|
|
|
+ this.$router.go(-1)
|
|
|
+ }).catch(err => {
|
|
|
+ this.$message({
|
|
|
+ message: err,
|
|
|
+ type: 'error'
|
|
|
+ })
|
|
|
+ this.submitButtonStat = false
|
|
|
+ })
|
|
|
+ // return network.postData(path, postData).then(response => {
|
|
|
+ // this.$message({
|
|
|
+ // message: response,
|
|
|
+ // type: 'success'
|
|
|
+ // })
|
|
|
+ // this.submitButtonStat = false
|
|
|
+ // this.$router.go(-1)
|
|
|
+ // }).catch(() => {
|
|
|
+ // this.submitButtonStat = false
|
|
|
+ // })
|
|
|
+ }
|
|
|
+ }
|
|
|
+}
|
|
|
+</script>
|
|
|
+
|
|
|
+<style scoped>
|
|
|
+/* 小于760 */
|
|
|
+ @media (max-width:759px) {
|
|
|
+
|
|
|
+ /deep/ .el-input {
|
|
|
+ width: 100% !important;
|
|
|
+ }
|
|
|
+ /deep/ .el-select {
|
|
|
+ width: 100% !important;
|
|
|
+ }
|
|
|
+
|
|
|
+ /deep/ .el-textarea {
|
|
|
+ width: 100% !important;
|
|
|
+ }
|
|
|
+ /deep/ .image-uploader {
|
|
|
+ width: 100% !important;
|
|
|
+ }
|
|
|
+ /deep/ i.el-icon-plus.uploader-icon {
|
|
|
+ width:100% !important;
|
|
|
+ }
|
|
|
+ /deep/ .form-page {
|
|
|
+ width:100%;
|
|
|
+ padding-left: 1%;
|
|
|
+ }
|
|
|
+ /deep/ img {
|
|
|
+ width: 100% !important;
|
|
|
+ height: 100% !important;
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
+@media (min-width:760px) {
|
|
|
+ /deep/ .el-input {
|
|
|
+ width: 400px !important;
|
|
|
+ }
|
|
|
+ /deep/ .el-select {
|
|
|
+ width: 400px !important;
|
|
|
+ }
|
|
|
+ /deep/ .el-textarea {
|
|
|
+ width: 400px !important;
|
|
|
+ }
|
|
|
+ /deep/ .upload-container {
|
|
|
+ width: 400px !important;
|
|
|
+ }
|
|
|
+ /deep/ .form-page {
|
|
|
+ width:100%;
|
|
|
+ padding-left: 10%;
|
|
|
+ }
|
|
|
+}
|
|
|
+</style>
|