提交 92287de1 authored 作者: 王天霸's avatar 王天霸

提测

上级 ae8bf0d5
...@@ -5,7 +5,8 @@ ENV = 'development' ...@@ -5,7 +5,8 @@ ENV = 'development'
#VUE_APP_BASE_API = 'http://sjapi.jxhh.com' #VUE_APP_BASE_API = 'http://sjapi.jxhh.com'
# 测试环境 # 测试环境
VUE_APP_BASE_API = 'http://192.168.26.179:6605/api/v1' #VUE_APP_BASE_API = 'http://192.168.26.179:6605/api/v1'
VUE_APP_BASE_API = 'http://192.168.111.240:6605/api/v1'
# 文档模块 直接调用 sys开放接口 # 文档模块 直接调用 sys开放接口
VUE_APP_BASE_SYS_API = 'http://sysapi.jxhh.com' VUE_APP_BASE_SYS_API = 'http://sysapi.jxhh.com'
......
...@@ -9,6 +9,14 @@ export function listGoods(query) { ...@@ -9,6 +9,14 @@ export function listGoods(query) {
}) })
} }
// 上传视频
export function uploadVideo(data) {
return request({
url: '/system/goods/uploadVideo',
method: 'post',
data: data
})
}
// 查询类别 // 查询类别
export function GetCategory(query) { export function GetCategory(query) {
return request({ return request({
......
<template> <template>
<div class="goods-after-sale"> <div class="goods-after-sale">
<el-card class="box-card" ref="paramsvalue">
<div slot="header" class="clearfix">
<span>商品参数</span> <span style="font-size:13px;padding-left:20px;">参数名称/参数值</span>
</div>
<draggable :list="goodsAfterSaleForm.params" group="article" class="dragArea">
<div v-for="(element,index) in goodsAfterSaleForm.params" :key="index" class="list-complete-item">
<el-row :gutter="24" style="padding-left:50px;">
<el-col :span="8" style="height:50px;">
<el-input
type="text"
placeholder="参数名称"
v-model="element.title"
maxlength="15"
show-word-limit
></el-input>
</el-col>
<el-col :span="12" style="height:50px;">
<el-input
type="text"
placeholder="参数值"
v-model="element.value"
maxlength="60"
show-word-limit
></el-input>
</el-col>
<el-col :span="4" style="height:50px;">
<span style="height:50px;line-height: 40px;" @click="deleteparameter(index)">
<i style="color:#ff4949" class="el-icon-delete curspor" />
</span>
<i style="color:#ff4949" class="el-icon-rank curspor" />
</el-col>
</el-row>
</div>
</draggable>
<el-button style="margin-left:50px;margin-bottom:30px;" type="primary" @click="addparameter">添加参数</el-button>
</el-card>
<el-card class="box-card" ref="salesvalue">
<div slot="header" class="clearfix">
<span>售后及服务</span>
</div>
<el-form ref="goodsAfterSaleForm" :model="goodsAfterSaleForm" :rules="goodsAfterSaleRules" label-width="150px" size="small"> <el-form ref="goodsAfterSaleForm" :model="goodsAfterSaleForm" :rules="goodsAfterSaleRules" label-width="150px" size="small">
<el-form-item label="服务标签:" prop="stags"> <el-form-item label="服务标签:" prop="stags">
...@@ -31,11 +73,61 @@ ...@@ -31,11 +73,61 @@
</el-form-item> </el-form-item>
</el-form> </el-form>
</el-card>
<el-card class="box-card" ref="outhervalue">
<div slot="header" class="clearfix" >
<span>其他设置</span>
</div>
<el-form :model="goodsAfterSaleForm" :rules="goodsAfterSaleRules" ref="goodsAfterSaleForm" label-width="150px" class="demo-goodsInfoForm" size="small">
<el-form-item label='商品关键词:' prop="goods_des">
<el-input v-model.trim="goodsAfterSaleForm.goods_des" placeholder="请输入商品关键词" style="width:420px;"></el-input>
<span class="tip-span ml20">关键词之间用 <strong>英文逗号</strong> 分开,最多可以添加5个</span>
</el-form-item>
<el-form-item label="商品产地:" prop="producing_area">
<el-select v-model.trim="goodsAfterSaleForm.producing_area" placeholder="请选择商品产地" style="width: 420px;">
<el-option
v-for="item in areaOptions"
:key="item.id"
:label="item.name"
:value="item.id"
></el-option>
</el-select>
</el-form-item>
<el-form-item label="商品发货地:" prop="deliver_area">
<el-select v-model.trim="goodsAfterSaleForm.deliver_area" placeholder="请选择商品发货地" style="width: 420px;">
<el-option
v-for="item in areaOptions"
:key="item.id"
:label="item.name"
:value="item.id"
></el-option>
</el-select>
</el-form-item>
<el-form-item label='商品单位:' prop="unit">
<el-input v-model.trim="goodsAfterSaleForm.unit" placeholder="请输入商品单位" style="width:420px;"></el-input>
<!-- <span class="tip-span ml20">关键词之间用逗号分开,最多可以添加5个</span>-->
</el-form-item>
<el-form-item label='市场参考价链接:' prop="web_url">
<el-input v-model.trim="goodsAfterSaleForm.web_url" placeholder="请输入京东或者淘宝的商品链接" style="width:420px;"></el-input>
</el-form-item>
<el-form-item label='商品编码:' prop="out_goods_id">
<el-input v-model.trim="goodsAfterSaleForm.out_goods_id" placeholder="请输入商品编码(非必须)" style="width:420px;"></el-input>
</el-form-item>
</el-form>
</el-card>
</div> </div>
</template> </template>
<script> <script>
import { GetFreight } from '@/api/module/goods' import { GetFreight } from '@/api/module/goods'
import { getAreaList } from '@/api/module/retreat/address'
import draggable from 'vuedraggable'
export default { export default {
name: "goodsaftersale", name: "goodsaftersale",
props: { props: {
...@@ -53,17 +145,49 @@ ...@@ -53,17 +145,49 @@
} }
}; };
return { return {
areaOptions: [], // 地址 省
list:[
{
key:'1',
value:''
},{
key:'2',
value:''
},
{
key:'3',
value:''
},
{
key:'4',
value:''
},
{
key:'5',
value:''
}
],
goodsAfterSaleForm: { goodsAfterSaleForm: {
stags: [], stags: [],
freight_id: 310, freight_id: 310,
delay_compensate: 24, delay_compensate: 24,
aftersale_time: 7 aftersale_time: 7,
params:[],//参数
goods_des:'',//关键词
producing_area:'',//产地
deliver_area:'',//发货地
unit:'',//单位
web_url:'',//外部市场链接
out_goods_id:''//商品编码
}, },
goodsAfterSaleRules: { goodsAfterSaleRules: {
stags: [{required: true, validator: checkStags}], stags: [{required: true, validator: checkStags}],
freight_id: [{required: true, message: '请选择邮费模板', trigger: 'change'}], freight_id: [{required: true, message: '请选择邮费模板', trigger: 'change'}],
delay_compensate: [{required: true, message: '请选择发货时效', trigger: 'change'}], delay_compensate: [{required: true, message: '请选择发货时效', trigger: 'change'}],
aftersale_time: [{required: true, message: '请选择售后时长', trigger: 'change'}] aftersale_time: [{required: true, message: '请选择售后时长', trigger: 'change'}],
deliver_area: [{required: true, message: '请选择商品发货地', trigger: 'change'}],
unit: [{required: true, message: '商品单位不能为空', trigger: 'blur'}],
goods_brand: [{required: true, message: '请选择商品品牌', trigger: 'change'}]
}, },
tagOptions: [ tagOptions: [
{id: 2, tag: "假一赔十"}, {id: 2, tag: "假一赔十"},
...@@ -75,15 +199,44 @@ ...@@ -75,15 +199,44 @@
freightOptions: [] freightOptions: []
} // return end } // return end
}, },
components: { draggable },
mounted() { mounted() {
this.getFreightData(); this.getFreightData();
//debugger //debugger
//console.log('售后数据:',this.goodsaftersale); console.log('售后数据:',this.goodsaftersale);
if(this.goodsaftersale && this.goodsaftersale.stags.length > 0) { if(this.goodsaftersale) {
this.goodsAfterSaleForm = this.goodsaftersale; this.goodsAfterSaleForm = this.goodsaftersale;
} }
}, },
created() {
// 获取 省
this.getArea();
},
methods: { methods: {
// 获取 省
getArea() {
let limboNode = {
pid: 0
};
getAreaList(limboNode).then( res => {
if( res.data && res.data.length > 0) {
this.areaOptions = res.data;
}else {
this.areaOptions = [];
}
});
},
// 添加参数
addparameter(){
let obj = {
title:'',
value:''
}
this.goodsAfterSaleForm.params.push(obj)
},
deleteparameter(index){
this.list.splice(index, 1)
},
/** 售后服务数据 初始化 */ /** 售后服务数据 初始化 */
initInfo() { initInfo() {
this.$refs.goodsAfterSaleForm.resetFields(); this.$refs.goodsAfterSaleForm.resetFields();
...@@ -135,4 +288,13 @@ ...@@ -135,4 +288,13 @@
padding: 20px; padding: 20px;
margin-bottom:20px; margin-bottom:20px;
} }
.box-card{
margin-bottom: 50px;
}
.curspor{
font-size: 16px;
}
.curspor:hover{
cursor: pointer;
}
</style> </style>
<template> <template>
<div class="goods-parameter"> <div class="goods-parameter">
<p class="tip-p"> <div v-show="isradioguide==1">
<el-link class="edit-type-span el-icon-search" type="primary" :underline="false" @click="viewPriceExp">查看各类价格说明 <!-- <p style="margin: 10px 0;color: #333;font-size: 14px;font-weight: 400;">默认</p> -->
</el-link>
<span class="tip-span">所有商品价格均为含税价,必须开具发票</span>
</p>
<div v-show="(!orgGoodsPam.pamTableList || orgGoodsPam.pamTableList.length === 0)">
<p style="margin: 10px 0;color: #333;font-size: 14px;font-weight: 400;">默认</p>
<el-table <el-table
border border
size="small" size="small"
...@@ -64,7 +58,8 @@ ...@@ -64,7 +58,8 @@
<!-- </el-table-column>--> <!-- </el-table-column>-->
</el-table> </el-table>
</div> </div>
<div v-if="parameterdata.specs.length > 0" class="single-spe-con"> {{parameterdata.isradioguide}}
<div v-if="parameterdata.specs&&parameterdata.specs.length > 0&&isradioguide==2" class="single-spe-con">
<!-- {{parameterdata.specs_group}} --> <!-- {{parameterdata.specs_group}} -->
<el-table <el-table
border border
...@@ -168,49 +163,15 @@ ...@@ -168,49 +163,15 @@
<span class="span-img-del el-icon-delete del-span-block" @click="delSingleSpecImg(scope.$index,scope.row)"></span> <span class="span-img-del el-icon-delete del-span-block" @click="delSingleSpecImg(scope.$index,scope.row)"></span>
</span> </span>
<input type="file" style="display: none;" :ref=" 'hxz' + scope.$index " accept="image/*"
@change="changeIMG(scope.$index,scope.row)">
</template> </template>
</el-table-column> </el-table-column>
</el-table> </el-table>
</div>
<!-- 查看各类价格说明 -->
<el-dialog
title="各类价格说明"
:visible.sync="isViewPriceExp"
width="40%"
center
append-to-body
>
<el-form ref="workOrderForm" size="small" label-width="150px">
<el-form-item label="协议价:">
<span>指您供货给下游的价格</span>
</el-form-item>
<el-form-item label="结算价:">
<span>与云仓平台结算的价格,根据协议价自动计算</span>
</el-form-item>
<el-form-item label="指导售价:">
<span>指导下游商户制定销售的价格</span>
</el-form-item>
<el-form-item label="市场价:">
<span>市场售价,参考京东、天猫等平台的售价</span>
</el-form-item>
<el-form-item>
<span class="pre-price-tip">商品价格均为含税价,必须开具发票。请准确填写并更新商品实际库存,超卖导致的虚假及延迟发货会引起用户投诉与平台判罚。</span>
</el-form-item>
<input type="file" style="display: none;" ref="guideupimg" accept="image/*"
@change="changeIMG()">
</div>
</el-form>
<span slot="footer" class="dialog-footer">
<el-button @click="isViewPriceExp = false" size="mini">取 消</el-button>
</span>
</el-dialog>
</div> </div>
</template> </template>
...@@ -227,6 +188,8 @@ export default { ...@@ -227,6 +188,8 @@ export default {
}, },
data() { data() {
return { return {
isradioguide:'',
upimgindex:'',
keyvalue:1, keyvalue:1,
spacArr:[], spacArr:[],
orgGoodsPam: {}, orgGoodsPam: {},
...@@ -277,28 +240,27 @@ export default { ...@@ -277,28 +240,27 @@ export default {
debugger debugger
}, },
mounted() { mounted() {
this.isradioguide = this.parameterdata.isradioguide ? this.parameterdata.isradioguide:1
console.log(this.parameterdata) console.log(this.parameterdata)
this.getSpanArr(this.parameterdata); this.getSpanArr(this.parameterdata);
debugger debugger
this.keyvalue++ this.keyvalue++
if(this.parameterdata.pamTableList && this.parameterdata.pamTableList.length > 0) {
this.orgGoodsPam = this.parameterdata; if(this.parameterdata.singleSpecTable && this.parameterdata.singleSpecTable.length === 1 ) {
}else {
if( this.parameterdata.singleSpecTable.length === 1 ) {
this.singleSpecTable = this.parameterdata.singleSpecTable this.singleSpecTable = this.parameterdata.singleSpecTable
} }
}
}, },
methods: { methods: {
parentMsg(val){
console.log(val,'guangbo')
this.isradioguide = val
},
/** 初始化 商品售价 数据 */ /** 初始化 商品售价 数据 */
initInfo() { initInfo() {
this.orgGoodsPam = {}; this.orgGoodsPam = {};
//this.singleSpecTable = //this.singleSpecTable =
}, },
// 查看各类价格说明
viewPriceExp() {
this.isViewPriceExp = true;
},
// ------ 无规格,上传图片相关 ------ // ------ 无规格,上传图片相关 ------
limit5() { limit5() {
this.$message({type: 'warning',message: '只能上传5张图片'}); this.$message({type: 'warning',message: '只能上传5张图片'});
...@@ -341,10 +303,10 @@ export default { ...@@ -341,10 +303,10 @@ export default {
/** 规格组合 上传图片 */ /** 规格组合 上传图片 */
// 上传图片 // 上传图片
upPreSpeImg(index, row) { upPreSpeImg(index, row) {
let domRef = "hxz" + index; this.upimgindex = index
//console.log(domRef,this.$refs[domRef][0]); this.$refs.guideupimg.value = '';
this.$refs[domRef][0].value = '';
this.$refs[domRef][0].click(); this.$refs.guideupimg.dispatchEvent(new MouseEvent('click'))
}, },
// 更换 某一个规格的图片 // 更换 某一个规格的图片
...@@ -354,14 +316,12 @@ export default { ...@@ -354,14 +316,12 @@ export default {
// 真正的上传图片方法,原生input // 真正的上传图片方法,原生input
changeIMG(index, row) { changeIMG(index, row) {
let curRow = row; let curRow = row;
let inputDom = "hxz" + index;
let file = this.$refs[inputDom][0].files[0]; let file = this.$refs.guideupimg.files[0];
if( file.size > 1024 * 1024 * 3 ) { if( file.size > 1024 * 1024 * 3 ) {
this.$message({ type: 'error',message: '规格图片不能大于 3 M'}); this.$message({ type: 'error',message: '规格图片不能大于 3 M'});
return; return;
} }
this.getBase64(file).then((res) => { this.getBase64(file).then((res) => {
let result = res.split(","); let result = res.split(",");
this.Base64img = result[1]; this.Base64img = result[1];
...@@ -369,7 +329,7 @@ export default { ...@@ -369,7 +329,7 @@ export default {
UploadImg(data).then(res => { UploadImg(data).then(res => {
// this.loading = false; // this.loading = false;
if (res && res.code == 1) { if (res && res.code == 1) {
curRow.thumb = res.data.image_url; this.parameterdata.specs_group[this.upimgindex].thumb = res.data.image_url;
// this.singleSpecImgList.push({'url': res.data.image_url}) // this.singleSpecImgList.push({'url': res.data.image_url})
this.$message({ message:'上传成功',type:'success'}); this.$message({ message:'上传成功',type:'success'});
}else { }else {
...@@ -417,10 +377,28 @@ export default { ...@@ -417,10 +377,28 @@ export default {
}, },
/** 一键应用所有 */ /** 一键应用所有 */
applyAllTable(key) { applyAllTable(key) {
let val = this.orgGoodsPam.pamTableList[0][0][key] this.$prompt('', '批量设置价格', {
this.orgGoodsPam.pamTableList.map(item => { confirmButtonText: '确定',
item[0][key] = val cancelButtonText: '取消',
}) inputPattern: /^[+]{0,1}(\d+)$|^[+]{0,1}(\d+\.\d+)$/ ,
inputErrorMessage: '金额须大于零',
inputPlaceholder:'输入协议价',
center: true
}).then(({ value }) => {
this.parameterdata.specs_group.map(item => {
item[key] = value
})
this.$message({
type: 'success',
message: '设置成功'
});
}).catch(() => {
this.$message({
type: 'info',
message: '取消输入'
});
});
}, },
// 删除 单个规格的图片 // 删除 单个规格的图片
......
...@@ -343,10 +343,8 @@ export default { ...@@ -343,10 +343,8 @@ export default {
// 当处理后的数据,是一个空数组,则不需要再进行 笛卡尔积 计算,可以直接给出计算结果 // 当处理后的数据,是一个空数组,则不需要再进行 笛卡尔积 计算,可以直接给出计算结果
if (proSpeData.length === 0) { if (proSpeData.length === 0) {
let goodsPam = { let goodsPam = {
pamNameList: [], specs:[],
pamDataList: [], isradioguide:1
pamTableList: [],
specs:[]
}; };
this.$emit('calcSpeTable', goodsPam); this.$emit('calcSpeTable', goodsPam);
} else { } else {
...@@ -358,26 +356,29 @@ export default { ...@@ -358,26 +356,29 @@ export default {
} }
// goodsParametersList newList // goodsParametersList newList
let goodsParametersList = this.cartesian(proSpeData); let goodsParametersList = this.cartesian(proSpeData);
debugger
for (let index = 0; index < goodsParametersList.length; index++) { for (let index = 0; index < goodsParametersList.length; index++) {
var listobj = {}; var listobj = {};
listobj["js_price"] = "";
listobj["sl_price"] = "";
listobj["price"] = "";
listobj["sc_price"] = "";
listobj["stock"] = "";
listobj["weight"] = "";
listobj["thumb"] = "";
listobj["spec_values"] = goodsParametersList[index]
for (let i = 0; i < this.speData.length; i++) { for (let i = 0; i < this.speData.length; i++) {
debugger
if(this.speData.length>1){ if(this.speData.length>1){
listobj[this.speData[i].spec_name] = goodsParametersList[index][i]; listobj[this.speData[i].spec_name] = goodsParametersList[index][i];
} }
if(this.speData.length==1){ if(this.speData.length==1){
listobj[this.speData[i].spec_name] = goodsParametersList[index]; debugger
listobj[this.speData[0].spec_name] = goodsParametersList[index];
} }
listobj["js_price"] = "";
listobj["sl_price"] = "";
listobj["price"] = "";
listobj["sc_price"] = "";
listobj["stock"] = "";
listobj["weight"] = "";
listobj["thumb"] = "";
listobj["spec_values"] = goodsParametersList[index]
} }
specs_group.push(listobj); specs_group.push(listobj);
} }
...@@ -389,6 +390,7 @@ export default { ...@@ -389,6 +390,7 @@ export default {
this.tableData7['specs_group'] = specs_group this.tableData7['specs_group'] = specs_group
this.tableData7['specs'] = this.speData this.tableData7['specs'] = this.speData
this.tableData7['shopTypes'] = this.cartesian(proSpeData) this.tableData7['shopTypes'] = this.cartesian(proSpeData)
this.tableData7['isradioguide'] = 2
this.$emit('calcSpeTable',this.tableData7); this.$emit('calcSpeTable',this.tableData7);
console.log(this.tableData7) console.log(this.tableData7)
} }
...@@ -454,9 +456,11 @@ export default { ...@@ -454,9 +456,11 @@ export default {
//console.log(404,this.speData); //console.log(404,this.speData);
}, },
/** 笛卡尔积算法 */ /** 笛卡尔积算法 */
cartesian(arr) { cartesian(arr) {
debugger
if(arr.length < 2) { if(arr.length < 2) {
return arr[0] || []; return arr[0] || [];
}else { }else {
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论