商品增加商品名称字段

main
xuechunyuan 2 years ago
parent 98cfb8d51a
commit fd540fee0a
  1. 23
      src/api/product/product.js
  2. 84
      src/views/product/index.vue
  3. 4
      vue.config.js

@ -0,0 +1,23 @@
import request from "@/router/axios";
//查询商品信息
export const getGoodInfo = () => {
return request({
url: "/api/blade-system/dict-biz/get-goods-info",
method: "get",
});
};
//保存商品信息
export const saveGoodInfo = (data) => {
let formdata = new FormData();
Object.keys(data).map(key => {
formdata.append(key, data[key]);
})
return request({
url: "/api/blade-system/dict-biz/save-goods-info",
method: "post",
headers: {
'Content-Type': 'application/x-www-form-urlencoded'
},
data: formdata
});
};

@ -1,11 +1,17 @@
<template> <template>
<basic-container> <basic-container>
<el-form label-width="140px"> <el-form label-width="140px">
<!-- <el-form-item label="商家名称:" required>
<el-input style="width:360px;" v-model="productDetail.shopName" placeholder="请输入商家名称" maxlength="30" />
</el-form-item> -->
<el-form-item label="商品名称:" required>
<el-input style="width:360px;" v-model="productDetail.goodsName" placeholder="请输入商品名称" maxlength="30" />
</el-form-item>
<el-form-item label="商品价格:" required> <el-form-item label="商品价格:" required>
<el-input style="width:360px;" v-model="productDetail.price" placeholder="请输入价格" maxlength="10" @input="NumberCheck" /> <el-input style="width:360px;" v-model="productDetail.price" placeholder="请输入价格" maxlength="10" @input="NumberCheck" />
</el-form-item> </el-form-item>
<el-form-item label="商品介绍详情图片:"> <el-form-item label="商品介绍详情图片:">
<el-upload v-if="productDetail.src == ''" class="avatar-uploader" action="https://jsonplaceholder.typicode.com/posts/" :show-file-list="false" <el-upload v-if="productDetail.imgPath == ''" class="avatar-uploader" action="/api/blade-resource/oss/endpoint/put-file" :show-file-list="false"
:on-success="handleAvatarSuccess" :before-upload="beforeAvatarUpload"> :on-success="handleAvatarSuccess" :before-upload="beforeAvatarUpload">
<template> <template>
<i class="el-icon-plus avatar-uploader-icon"></i> <i class="el-icon-plus avatar-uploader-icon"></i>
@ -13,41 +19,42 @@
</template> </template>
</el-upload> </el-upload>
<div v-else class="img-box"> <div v-else class="img-box">
<el-button class="btn-del" size="mini" icon="el-icon-delete" type="danger" @click="productDetail.src == ''"> </el-button> <el-button class="btn-del" size="mini" icon="el-icon-delete" type="danger" @click="delImgPath"> </el-button>
<img :src="productDetail.src" style="width: 100%; height: auto;" /> <div class="img-box-scroll">
<img :src="productDetail.imgPath" style="width: 100%; height: auto;" />
</div>
</div> </div>
</el-form-item> </el-form-item>
<div style="text-align:right;padding: 20px 0;"> <div style="text-align:right;padding: 20px 0;">
<el-button type="primary" size="small" @click="doSave"> </el-button> <el-button type="primary" size="small" @click="doSave" :loading="loading"> </el-button>
<!-- <el-button type="info" size="small" @click="cancelPublish" v-if="productDetail.status == 2">取消发布</el-button>
<el-button type="primary" size="small" @click="doPublish" v-if="productDetail.status == 1"> </el-button> -->
</div> </div>
</el-form> </el-form>
</basic-container> </basic-container>
</template> </template>
<script> <script>
// import {getBaseList,getTypeList} from "@/api/base" import { getGoodInfo, saveGoodInfo } from "@/api/product/product";
import {
getList,
exportList,
deleteList,
detailList,
} from "@/api/statistics/statistics";
export default { export default {
data() { data() {
return { return {
productDetail: { productDetail: {
src: 'https://cube.elemecdn.com/6/94/4d3ea53c084bad6931a56d5158a48jpeg.jpeg', // shopName: '',
status: 1 goodsName: '',
imgPath : '',
price: ''
}, },
imageUrl: '' loading: false
}; };
}, },
created() { created() {
this.queryProduct();
}, },
methods: { methods: {
//
delImgPath() {
this.productDetail.imgPath = '';
},
// //
NumberCheck() { NumberCheck() {
let str = this.productDetail.price; let str = this.productDetail.price;
@ -64,15 +71,29 @@ export default {
}, },
// //
queryProduct() { queryProduct() {
getGoodInfo().then(res => {
if(JSON.stringify(res.data.data) !== '{}') {
this.productDetail.goodsName = res.data.data.goodsName;
this.productDetail.imgPath = res.data.data.imgPath;
this.productDetail.price = res.data.data.price;
}
})
}, },
// //
doSave() { doSave() {
// if(this.productDetail.shopName == '') {
// this.$message.warning("");
// return;
// }
if(this.productDetail.goodsName == '') {
this.$message.warning("请填写商品名称");
return;
}
if(this.productDetail.price == '') { if(this.productDetail.price == '') {
this.$message.warning("请填写商品价格"); this.$message.warning("请填写商品价格");
return; return;
} }
if(this.productDetail.src == '') { if(this.productDetail.imgPath == '') {
this.$message.warning("请先上传图片"); this.$message.warning("请先上传图片");
return; return;
} }
@ -81,7 +102,13 @@ export default {
cancelButtonText: "取消", cancelButtonText: "取消",
type: "warning", type: "warning",
}).then(() => { }).then(() => {
this.$message.success("发布成功"); this.loading = true;
saveGoodInfo(this.productDetail).then(res => {
this.loading = false;
this.$message.success("发布成功");
}, () => {
this.loading = false;
})
}); });
}, },
// //
@ -105,7 +132,12 @@ export default {
}); });
}, },
handleAvatarSuccess(res, file) { handleAvatarSuccess(res, file) {
this.productDetail.src = URL.createObjectURL(file.raw); if(res.code == 200){
this.productDetail.imgPath = res.data.link;
}
else{
this.$message.warning(res.msg)
}
}, },
beforeAvatarUpload(file) { beforeAvatarUpload(file) {
const isJPG = file.type === 'image/jpeg'; const isJPG = file.type === 'image/jpeg';
@ -156,12 +188,20 @@ export default {
.img-box{ .img-box{
position:relative; position:relative;
width: 360px; width: 360px;
height: calc(100vh - 280px); height: calc(100vh - 380px);
overflow: auto; .img-box-scroll{
position: absolute;
left: 0;
top: 0;
right: 0;
bottom: 0;
overflow: auto;
}
.btn-del { .btn-del {
position: absolute; position: absolute;
right: 0; right: 0;
top: 0; top: 0;
z-index: 99;
} }
} }
</style> </style>

@ -26,9 +26,9 @@ module.exports = {
proxy: { proxy: {
"/api": { "/api": {
//本地服务接口地址 //本地服务接口地址
target: "http://192.168.3.32:80", // target: "http://192.168.3.32:80",
// target: "http://47.104.224.41:80", // target: "http://47.104.224.41:80",
// target: "http://192.168.1.106:80", target: "http://192.168.1.106:80",
//远程演示服务地址,可用于直接启动项目 //远程演示服务地址,可用于直接启动项目
//target: 'https://saber.bladex.vip/api', //target: 'https://saber.bladex.vip/api',
ws: true, ws: true,

Loading…
Cancel
Save