提交 97222c8e authored 作者: huaxinzhu's avatar huaxinzhu

3.1添加商品

上级 b49200a2
......@@ -147,3 +147,12 @@ export function getByCategoryData(query) {
params: query
})
}
// 综合列表-仓库-供应商-计量单位。。。
export function synthesisList(data) {
return request({
url: '/system/goodsNew/synthesisList',
method: 'post',
data: data
})
}
import request from '@/utils/request'
export function warehouseList(data) {
return request({
url: '/local/warehouse/list',
method: 'post',
data: data
})
}
......@@ -115,5 +115,8 @@ new Vue({
el: '#app',
router,
store,
render: h => h(App)
render: h => h(App),
beforeCreate() {
Vue.prototype.$bus = this
}
})
......@@ -77,59 +77,58 @@
</el-card>
<el-card class="box-card" ref="outhervalue">
<div slot="header" class="clearfix" >
<span>其他设置</span>
</div>
<!-- <el-card class="box-card" ref="outhervalue">-->
<!-- <div slot="header" class="clearfix" >-->
<!-- <span>其他设置</span>-->
<!-- </div>-->
<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>
<!--&lt;!&ndash; <el-form-item label='商品关键词:' prop="goods_des">&ndash;&gt;-->
<!--&lt;!&ndash; <el-input v-model.trim="goodsAfterSaleForm.goods_des" placeholder="请输入商品关键词" style="width:420px;"></el-input>&ndash;&gt;-->
<!--&lt;!&ndash; <span class="tip-span ml20">关键词之间用 <strong>英文逗号</strong> 分开,最多可以添加5个</span>&ndash;&gt;-->
<!--&lt;!&ndash; </el-form-item>&ndash;&gt;-->
<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="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="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="unit">-->
<!-- <el-input v-model.trim="goodsAfterSaleForm.unit" placeholder="请输入商品单位" style="width:420px;"></el-input>-->
<!-- &lt;!&ndash; <span class="tip-span ml20">关键词之间用逗号分开,最多可以添加5个</span>&ndash;&gt;-->
<!-- </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>
<!--&lt;!&ndash; <el-form-item label='市场参考价链接:' prop="web_url">&ndash;&gt;-->
<!--&lt;!&ndash; <el-input v-model.trim="goodsAfterSaleForm.web_url" placeholder="请输入京东或者淘宝的商品链接" style="width:420px;"></el-input>&ndash;&gt;-->
<!--&lt;!&ndash; </el-form-item>&ndash;&gt;-->
<!-- <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-card>
<!-- </el-card>-->
</el-form>
</div>
</template>
<script>
import { GetFreight } from '@/api/module/goods'
import { getAreaList } from '@/api/module/retreat/address'
import draggable from 'vuedraggable'
export default {
name: "goodsaftersale",
......@@ -175,28 +174,19 @@
freight_id: 310,
delay_compensate: 24,
aftersale_time: 7,
// 参数
params:[
{
'title':'',
'value':''
}
],//参数
goods_des:'',//关键词
producing_area:'',//产地
deliver_area:'',//发货地
unit:'',//单位
web_url:'',//外部市场链接
out_goods_id:''//商品编码
],
},
goodsAfterSaleRules: {
stags: [{ type: 'array', required: true, message: '请选择至少一个服务标签', trigger: 'change' }],
freight_id: [{required: true, message: '请选择邮费模板', trigger: 'change'}],
delay_compensate: [{required: true, message: '请选择发货时效', trigger: 'change'}],
aftersale_time: [{required: true, message: '请选择售后时长', trigger: 'change'}],
producing_area:[{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: [
{id: 2, tag: "假一赔十"},
......@@ -211,30 +201,17 @@
components: { draggable },
mounted() {
this.getFreightData();
debugger
console.log('售后数据:',this.goodsaftersale);
// debugger
// console.log('售后数据:',this.goodsaftersale);
if(this.goodsaftersale) {
this.goodsAfterSaleForm = this.goodsaftersale;
}
},
created() {
// 获取 省
this.getArea();
// this.getArea();
},
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 = {
......@@ -283,11 +260,11 @@
flag = true
} else {
flag = false
if(this.goodsAfterSaleForm.producing_area==''||this.goodsAfterSaleForm.deliver_area==''||this.goodsAfterSaleForm.unit==''){
sessionStorage.setItem('clickbtm',1)
}else{
sessionStorage.setItem('clickbtm',2)
}
// if(this.goodsAfterSaleForm.producing_area==''||this.goodsAfterSaleForm.deliver_area==''||this.goodsAfterSaleForm.unit==''){
// sessionStorage.setItem('clickbtm',1)
// }else{
// sessionStorage.setItem('clickbtm',2)
// }
}
})
return flag
......
......@@ -10,34 +10,10 @@
</el-form-item>
<el-form-item label='商品标题:' prop="goods_name">
<el-input v-model.trim="goodsInfoForm.goods_name" placeholder="请输入商品标题" style="width:420px;"></el-input>
<span class="tip-span ml20">商品名称限制在50字以内,不要填写与商品无关的词</span>
<el-input v-model.trim="goodsInfoForm.goods_name" maxlength="300" show-word-limit
placeholder="请输入商品标题" style="width:420px;"></el-input>
<span class="tip-span ml20">商品名称限制在300字以内,不要填写与商品无关的词</span>
</el-form-item>
<!-- <el-form-item label='商品关键词:' prop="goods_des">
<el-input v-model.trim="goodsInfoForm.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="goodsInfoForm.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="goodsInfoForm.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="goodsInfoForm.unit" placeholder="请输入商品单位" style="width:420px;"></el-input>
</el-form-item> -->
......@@ -45,15 +21,52 @@
<el-select v-model.trim="goodsInfoForm.brand_id" placeholder="请选择商品品牌" style="width: 420px;">
<el-option v-for="item in brandOptions" :key="item.id" :label="item.brand_cn" :value="item.id"></el-option>
</el-select>
<el-link class="edit-type-span el-icon-plus" type="primary" :underline="false" @click="toBrand">新增品牌</el-link>
<el-link class="edit-type-span el-icon-plus" type="primary" :underline="false" @click="toPage('brand')">新增品牌</el-link>
</el-form-item>
<el-form-item label="计量单位:" prop="metering_unit">
<el-select v-model.trim="goodsInfoForm.metering_unit" placeholder="请选择商品计量单位" style="width: 420px;">
<el-option v-for="item in unitList" :key="item.id" :label="item.title" :value="item.id"></el-option>
</el-select>
</el-form-item>
<el-form-item label="包装单位:" prop="packaging_unit">
<el-select v-model.trim="goodsInfoForm.packaging_unit" placeholder="请选择商品包装单位" style="width: 420px;">
<el-option v-for="item in packageList" :key="item.id" :label="item.title" :value="item.id"></el-option>
</el-select>
</el-form-item>
<el-form-item label="换算关系:" prop="conversion_unit">
<el-input v-model.trim="goodsInfoForm.conversion_unit" placeholder="请输入换算关系都数量值" style="width:420px;"></el-input>
<span class="tip-span ml20">1包装单位=n计量单位,如:1箱=10个,请填写数字10</span>
</el-form-item>
<el-form-item label="商品产地:" prop="producing_area_id">
<el-cascader ref="producing_area" v-model.trim="goodsInfoForm.producing_area_id" :props="areaProps" placeholder="请选择"
style="width:420px;" size="mini" @change="matchIdName('producing_area')">
</el-cascader>
</el-form-item>
<el-form-item label="商品发货地:" prop="deliver_area_id">
<el-cascader ref="deliver_area" v-model.trim="goodsInfoForm.deliver_area_id" :props="areaProps" placeholder="请选择"
style="width:420px;" size="mini" @change="matchIdName('deliver_area')">
</el-cascader>
</el-form-item>
<!-- <el-form-item label='市场参考价链接:' prop="web_url">
<el-input v-model.trim="goodsInfoForm.web_url" placeholder="请输入京东或者淘宝的商品链接" style="width:420px;"></el-input>
</el-form-item> -->
<!-- <el-form-item label='商品编码:' prop="out_goods_id">
<el-input v-model.trim="goodsInfoForm.out_goods_id" placeholder="请输入商品编码(非必须)" style="width:420px;"></el-input>
</el-form-item> -->
<div style="display: flex;justify-content: flex-start;flex-direction: row;">
<el-form-item label='税收分类:' prop="ssfl">
<el-input v-model.trim="goodsInfoForm.ssfl" :disabled="true" placeholder="请输入税收分类" style="width:160px;"></el-input>
</el-form-item>
<el-form-item label='税率:' prop="tax_rate" label-width="100px">
<el-select v-model.trim="goodsInfoForm.tax_rate" placeholder="请选择商品税率" style="width: 160px;">
<el-option
v-for="item in taxRateOptions"
:key="item.id"
:label="item.value"
:value="item.id"
></el-option>
</el-select>
</el-form-item>
</div>
<el-form-item label="商品图片:" prop="imgs">
<span class="tip-span" style="display: block;line-height: 34px;">
<i style="margin: 10px;">{{ goodsImgFileList.length }} / 7</i>
......@@ -90,11 +103,49 @@
</el-dialog>
</el-form-item>
<!-- 更多设置 -->
<p class="more-settings-p" @click="switchMoreSetting">
<span>{{ !isMoreSetting ? "展开" : "收起"}}</span>更多设置
<i v-show="!isMoreSetting" class="el-icon-arrow-down"></i>
<i v-show="isMoreSetting" class="el-icon-arrow-up"></i>
</p>
<transition name="fade">
<div v-show="isMoreSetting">
<el-form-item label='市场参考价链接:'>
<el-input v-model.trim="goodsInfoForm.web_url" placeholder="请输入京东或者淘宝的商品链接" style="width:420px;"></el-input>
</el-form-item>
<el-form-item label="商品分组:">
<el-select v-model.trim="goodsInfoForm.group" placeholder="请选择商品分组" style="width: 420px;">
<el-option v-for="item in goodsGroupList" :key="item.id" :label="item.name" :value="item.id"></el-option>
</el-select>
<el-link class="edit-type-span el-icon-plus" type="primary" :underline="false" @click="toPage('group')">新增分组</el-link>
</el-form-item>
<el-form-item label="所属供应商:">
<el-select v-model.trim="goodsInfoForm.supplier" placeholder="请选择供应商" style="width: 420px;">
<el-option v-for="item in supplierList" :key="item.id" :label="item.title" :value="item.id"></el-option>
</el-select>
<el-link class="edit-type-span el-icon-plus" type="primary" :underline="false" @click="toPage('supplier')">新增供应商</el-link>
</el-form-item>
<el-form-item label="所属仓库:">
<el-select v-model.trim="goodsInfoForm.storehouse" v-el-select-loadmore="loadMoreTheme" class="w-600" placeholder="请选择仓库" style="width: 420px;">
<el-option v-for="item in warehouseList" :key="item.id" :label="item.name" :value="item.id"></el-option>
</el-select>
<el-link class="edit-type-span el-icon-plus" type="primary" :underline="false" @click="toPage('warehouse')">新增仓库</el-link>
</el-form-item>
<el-form-item label='商品标签:' prop="goods_des">
<el-input v-model.trim="goodsInfoForm.goods_des" placeholder="请输入商品标签" style="width:420px;"></el-input>
<span class="tip-span ml20">关键词之间用 <strong>英文逗号</strong> 分开,最多可以添加5个</span>
</el-form-item>
<el-form-item label='商品视频:'>
<span class="tip-span" style="display: block;line-height: 34px;">
最多上传一个视频(mp4格式),视频时长不超过30秒,
<span style="margin-left: 20px;">视频大小不超过10M,默认视频在图片前面</span>
<span style="margin-left: 20px;">视频大小不超过100M,默认视频在图片前面</span>
</span>
<video v-if="vediosrc" style="width:300px;height:150px;float:left;margin:0 10px 0 0;" v-bind:src="vediosrc"
......@@ -110,6 +161,8 @@
<!-- v-if="videoform.showvideopath !='' && !videoflag" -->
</el-upload>
</el-form-item>
</div>
</transition>
</el-form>
<!-- 修改 商品分类目录 -->
......@@ -127,9 +180,10 @@
</template>
<script>
import { NewGetCategory,NewGetCategoryData, GetFreight, UploadImg, getByCategoryData, uploadVideo } from '@/api/module/goods'
import { NewGetCategoryData, UploadImg, getByCategoryData, uploadVideo,synthesisList } from '@/api/module/goods'
import { getBrandsInf } from '@/api/module/brand/brand'
import { getAreaList } from '@/api/module/retreat/address'
import { warehouseList } from '@/api/module/mockTest' // 仓库列表
import draggable from 'vuedraggable'
export default {
name: 'goods',
......@@ -153,6 +207,27 @@
};
}
},
directives: {
'el-select-loadmore': {
bind(el, binding) {
// 获取element-ui定义好的scroll盒子
const SELECTWRAP_DOM = el.querySelector('.el-select-dropdown .el-select-dropdown__wrap');
SELECTWRAP_DOM.addEventListener('scroll', function () {
/**
* scrollHeight 获取元素内容高度(只读)
* scrollTop 获取或者设置元素的偏移值,常用于, 计算滚动条的位置, 当一个元素的容器没有产生垂直方向的滚动条, 那它的scrollTop的值默认为0.
* clientHeight 读取元素的可见高度(只读)
* 如果元素滚动到底, 下面等式返回true, 没有则返回false:
* ele.scrollHeight - ele.scrollTop === ele.clientHeight;
*/
const condition = this.scrollHeight - this.scrollTop <= this.clientHeight;
if (condition) {
binding.value();
}
});
}
}
},
data() {
let categoryIdCheck = (rule, value, callback) => {
if (this.goodsImgFileList.length < 1) {
......@@ -194,6 +269,9 @@
showvideopath: ''
},
goodsvedioFileList: [],
taxRateOptions: [
{id: 0,value: '0'}
], // 税率
vediosrc: '',
loadingapp: false,
drag: false,
......@@ -204,29 +282,41 @@
goods_id: 0,
categoryStr: '', // 商品分类 地址拼接
categoryList: [], // 商品分类 id集合的数组
goods_des: '', // 关键词
goods_des: '', // 商品标签
goods_name: '', // 商品标题
category_id: '',
producing_area: '', // 产地
deliver_area: '', // 发货地
unit: '', // 单位
producing_area_id: '', // 产地id
producing_area: '', // 产地name
deliver_area_id: '', // 发货地id
deliver_area: '', // 发货地name
goods_brand: '', // 品牌
brand_id: '', // 品牌id
metering_unit: '', // 计量单位
packaging_unit: '', // 包装单位
conversion_unit: '', // 换算关系
ssfl: '', // 税收分类
tax_rate: 0, // 税率
web_url: '', // 外部链接
group: '', // 商品分组
supplier: '', // 供应商
storehouse: '', // 仓库
out_goods_id: '', // 商品编码
imgs: [], // 商品图片
video: ''
},
isMoreSetting: false, // true-展开状态;false-收起状态
goodsInfoRules: {
categoryStr: [{ required: true, message: '商品分类不能为空', trigger: 'blur' }],
goods_name: [
{ required: true, message: '请输入商品名称', trigger: 'blur' },
{ min: 3, max: 50, message: '商品标题限制在3字符以上,50个字符以下', trigger: 'blur' }
],
brand_id: [{ required: true, message: '请选择商品品牌', trigger: 'change' }],
ssfl: [{ required: true, message: '请选择商品税收分类', trigger: 'change' }],
// goods_des: [{required: true, validator: goodsDecCheck, trigger: 'blur'}],
// producing_area:[{required: true, message: '请选择商品产地', trigger: 'change'}],
deliver_area: [{ required: true, message: '请选择商品发货地', trigger: 'change' }],
unit: [{ required: true, message: '商品单位不能为空', trigger: 'blur' }],
producing_area_id:[{required: true, message: '请选择商品产地', trigger: 'change'}],
deliver_area_id: [{ required: true, message: '请选择商品发货地', trigger: 'change' }],
metering_unit: [{ required: true, message: '商品单位不能为空', trigger: 'blur' }],
goods_brand: [{ required: true, message: '请选择商品品牌', trigger: 'change' }],
imgs: [{ required: true, message: '请上传商品图片', validator: categoryIdCheck }]
},
......@@ -249,6 +339,27 @@
},
fuckoptions: [],
catefee: 0,
areaProps: {
checkStrictly: true ,
expandTrigger: 'click',
emitPath: true,
lazy: true,
lazyLoad: this.areaLazyLoad,
value: "id",
label: "name",
leaf: "leaf"
},
unitList: [], // 计量单位
packageList: [], // 包装单位
goodsGroupList: [], //分组
supplierList: [], // 供应商
warehouseList: [], // 仓库
pageDataTheme: {
page: 1,
limit: 20,
// status: 1, // 已起用的
},
warehouseCount: 0, // 仓库总数量
} // return end
},
watch: {
......@@ -262,8 +373,8 @@
created() {
// 获取 商品品牌
this.getBrands();
// 获取类目
// this.getSSQArea();
// 综合接口,获取仓库,供应商,商品分组,计量单位,默认返回第一页的数据
this.getSynthesisList();
},
mounted() {
if (this.goodsinfodata.goods_id) {
......@@ -279,13 +390,93 @@
} else {
this.goodsInfoForm.categoryStr = this.goodsinfodata.categoryStr;
this.goodsInfoForm.categoryList = this.goodsinfodata.categoryList;
let categoryNameList = this.goodsinfodata.categoryStr.split("/");
if (categoryNameList.length === 3) {
this.goodsInfoForm.ssfl = categoryNameList[2]
}
}
// 初始化 服务费率
this.getByCategoryFee(this.goodsInfoForm.categoryList)
this.SSQGoodsList = this.goodsInfoForm.categoryList
this. getalllist(this.SSQGoodsList)
this.getalllist(this.SSQGoodsList)
},
methods: {
// 更多设置 初始化 数据
resetMoreSetting() {
let resetPartData = {
web_url: '',
group: '',
supplier: '',
storehouse: '',
goods_des: '',
video: ''
};
this.delvideo()
Object.assign(this.goodsInfoForm,resetPartData)
},
// 产地
areaLazyLoad(node, resolve) {
this.getArea(node, resolve);
},
// 商品产地
getArea(node, resolve) {
const level = node.level
let date = {}
if (level === 0) {
date = { pid: 0 }
}else {
date = { pid: node.value }
}
getAreaList(date).then(res => {
let result = {}
result = res.data
if (level === 0) {
result.forEach(item => {
item.value = item.id;
item.label = item.name
item.children=[]
item.leaf = 0
})
}
if (level === 1) {
result.forEach(item => {
item.value = item.id;
item.label = item.name
item.children=[]
//这句代码表示当点击最后一级的时候 label后面不会转圈圈 并把相关值赋值到选择器上
item.leaf = 0
})
}
if (level === 2) {
result.forEach(item => {
item.value = item.id;
item.label = item.name
//这句代码表示当点击最后一级的时候 label后面不会转圈圈 并把相关值赋值到选择器上
item.leaf = 1
})
}
resolve(result)
})
},
// 产地查处id对应的中文地址
matchIdName(typeName) {
let areaLabelList = this.$refs[typeName].getCheckedNodes()[0].pathLabels;
let areaLastName = 0;
if (areaLabelList.length > 0) {
areaLastName = areaLabelList.length - 1
// 产地
if (typeName === "producing_area") {
this.goodsInfoForm.producing_area = areaLabelList[areaLastName]
}
// 发货地
if (typeName === "deliver_area") {
this.goodsInfoForm.deliver_area = areaLabelList[areaLastName]
}
}
},
handchange() {//图片拖动结束
this.goodsInfoForm.imgs = []
this.goodsImgFileList.forEach(item => {
......@@ -299,7 +490,7 @@
// 上传 视频 之前
beforeUpGoodsvedio(file) {
// debugger
let isImgSize = (file.size / 1024 / 1024) > 10;
let isImgSize = (file.size / 1024 / 1024) > 100;
if (file.type !== "video/mp4") {
this.$message({
......@@ -311,7 +502,7 @@
if (isImgSize) {
this.$message({
message: '上传视频大小不能超过10MB',
message: '上传视频大小不能超过100MB',
type: "warning"
});
return false;
......@@ -380,13 +571,68 @@
status: 1
}
getBrandsInf(data).then(res => {
if (res.code == 1) {
if (res.data) {
this.brandOptions = res.data.data ? res.data.data : [];
} else {
this.brandOptions = [];
}
});
},
// 综合接口,获取仓库,供应商,商品分组,计量单位,默认返回第一页的数据
getSynthesisList() {
synthesisList().then(res=> {
// 数据兼容
if (res.code === 1 && res.data) {
// 包装单位
if (Array.isArray(res.data.goods_pack_list)) {
this.packageList = res.data.goods_pack_list
}
// 计量单位
if (Array.isArray(res.data.goods_unit_list)) {
this.unitList = res.data.goods_unit_list
}
// 商品分组
if (res.data.group_list && Array.isArray(res.data.group_list.list)) {
this.goodsGroupList = res.data.group_list.list
}
// 供应商
if (Array.isArray(res.data.operator_list)) {
this.supplierList = res.data.operator_list
}
// 仓库
if (res.data.warehouse_list && Array.isArray(res.data.warehouse_list.list)) {
this.warehouseList = res.data.warehouse_list.list
// 默认一次数据最多20条,如果这个接口,返回仓库数据小于20条,说明仓库已经没有数据了,不用再进行滚动懒加载;否则仓库总数量,
// 可能多于20条,需要进行滚动懒加载
if (this.warehouseList.length === 20) {
this.loadMoreTheme()
}
}
}else {
this.$message({type: "error",message: res.message ? res.message : ""});
}
});
},
// 仓库 滚动加载
loadMoreTheme() {
if (this.warehouseList.length < this.warehouseCount) {
this.pageDataTheme.page++;
this.getWarehouseList();
}
},
// 仓库列表
getWarehouseList() {
warehouseList(this.pageDataTheme).then(res=> {
if (res.data) {
if (Array.isArray(res.data.list) && res.data.list.length > 0) {
this.warehouseList = this.warehouseList.concat(res.data.list);
this.warehouseCount = res.data.count;
}
}
});
},
/* 修改 商品分类 类目 */
editType() {
// this.SSQGoodsList = [];
......@@ -491,6 +737,7 @@
let ssqLabelList = this.$refs['ssqGoodsCascader'].getCheckedNodes()[0].pathLabels;
this.goodsInfoForm.categoryList = this.SSQGoodsList;
this.goodsInfoForm.categoryStr = ssqLabelList[0] + '/' + ssqLabelList[1] + '/' + ssqLabelList[2];
this.goodsInfoForm.ssfl = ssqLabelList[2];
this.editGoodsTypeDialog = false;
this.$message({ type: 'success', message: '修改成功' });
// 修改类目后更新 服务费率
......@@ -505,6 +752,10 @@
this.SSQGoodsList = [];
},
// 更多设置
switchMoreSetting() {
this.isMoreSetting = !this.isMoreSetting
},
// 上传 商品图片,限制 7 张
limitImg5() {
......@@ -609,9 +860,26 @@
}
},
// 维护品牌
toBrand() {
// 跳转到对应页面
toPage(name) {
switch (name) {
case 'brand' : {
this.$router.push({ path: '/system/shop/brand' });
break;
}
case 'group' : {
this.$router.push({ path: '/system/setup/commodityGroup' });
break;
}
case 'supplier' : {
this.$router.push({ path: '/system/supplier' });
break;
}
case 'warehouse' : {
this.$router.push({ path: '/system/warehouse' });
break;
}
}
},
/** 根据类目 获取服务费率
......@@ -676,6 +944,22 @@
margin: 0 20px;
}
/*更多设置*/
.more-settings-p {
display: inline-block;
margin: 20px 0;
padding: 0 0 0 66px;
font-size: 14px;
font-weight: 400;
cursor: pointer;
color: #1890ff;
}
.more-settings-p:hover {
display: inline-block;
color: #647dff;
}
/* 一般提示性文字 */
.tip-span {
color: #909399;
......@@ -715,4 +999,12 @@
.opendow /deep/ .el-dialog{
width:800px;
}
.fade-enter-active, .fade-leave-active {
transition: opacity .5s;
}
.fade-enter, .fade-leave-to /* .fade-leave-active below version 2.1.8 */ {
opacity: 0;
}
</style>
<template>
<div class="goods-parameter">
<div v-show="isradioguide==1">
<div :class="['goods-parameter']">
<div v-if="parameterdata.isradioguide === 1">
<!-- <p style="margin: 10px 0;color: #333;font-size: 14px;font-weight: 400;">默认</p> -->
<el-table
border
size="small"
:data="singleSpecTable"
style="width: 80%;margin-right:10%;"
style="width: 100%;margin-right:10%;"
>
<el-table-column align="center" prop="js_price" label="协议价" >
<el-table-column align="center" prop="sc_price" label="市场划线价">
<template slot-scope="scope">
<el-input size="mini" style="width:90%" v-model.trim="scope.row.js_price" placeholder="请输入协议价" ></el-input>
<el-input size="mini" style="width:90%" v-model.trim="scope.row.sc_price" placeholder="请输入市场价"></el-input>
</template>
</el-table-column>
<el-table-column align="center" prop="sl_price" label="结算价">
<el-table-column align="center" prop="price" label="销售指导价">
<template slot-scope="scope">
<span>{{ settleSLPriceFormatter(scope.row.js_price) }}</span>
<el-input size="mini" style="width:90%" v-model.trim="scope.row.price" placeholder="请输入指导价"></el-input>
</template>
</el-table-column>
<el-table-column align="center" prop="price" label="指导价">
<el-table-column align="center" prop="js_price" label="供货结算价" >
<template slot-scope="scope">
<el-input size="mini" style="width:90%" v-model.trim="scope.row.price" placeholder="请输入指导价"></el-input>
<el-input size="mini" style="width:90%" v-model.trim="scope.row.js_price" placeholder="请输入协议价" ></el-input>
</template>
</el-table-column>
<el-table-column align="center" prop="sc_price" label="市场价">
<el-table-column align="center" label="成本核算价" >
<template slot-scope="scope">
<el-input size="mini" style="width:90%" v-model.trim="scope.row.sc_price" placeholder="请输入市场价"></el-input>
<el-input size="mini" style="width:90%" v-model.trim="scope.row.prime_cost" placeholder="请输入" ></el-input>
</template>
</el-table-column>
<el-table-column align="center" prop="stock" label="库存量">
<el-table-column align="center" prop="stock" label="库存">
<template slot-scope="scope">
<el-input size="mini" style="width:90%" v-model.trim="scope.row.stock" placeholder="请输入库存量"></el-input>
</template>
</el-table-column>
<el-table-column align="center" prop="weight" label="重量">
<el-table-column align="center" prop="" label="库存预警">
<template slot-scope="scope">
<el-input size="mini" style="width:90%" v-model.trim="scope.row.stock_warning" placeholder="请输入"></el-input>
</template>
</el-table-column>
<el-table-column align="center" prop="weight" label="重量(g)">
<template slot-scope="scope">
<el-input size="mini" style="width:90%" v-model.trim="scope.row.weight" placeholder="请输入重量"></el-input>
</template>
</el-table-column>
<el-table-column align="center" label="体积(m³)">
<template slot-scope="scope">
<el-input size="mini" style="width:90%" v-model.trim="scope.row.volume" placeholder="请输入"></el-input>
</template>
</el-table-column>
<el-table-column align="center" label="编码">
<template slot-scope="scope">
<el-input size="mini" style="width:90%" v-model.trim="scope.row.goods_code" placeholder="请输入"></el-input>
</template>
</el-table-column>
<el-table-column align="center" label="条形码">
<template slot-scope="scope">
<el-input size="mini" style="width:90%" v-model.number="scope.row.bar_code" placeholder="请输入"></el-input>
</template>
</el-table-column>
<!-- <el-table-column align="center" prop="imgs9" label="图片">-->
<!-- <template slot-scope="scope">-->
<!-- &lt;!&ndash;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&ndash;&gt;-->
......@@ -57,16 +80,44 @@
<!-- </template>-->
<!-- </el-table-column>-->
</el-table>
<div class="tiered-pricing-con">
<el-checkbox v-model="parameterdata.is_ladder">启用阶梯定价</el-checkbox>
<el-table v-show="parameterdata.is_ladder" border size="small" :data="parameterdata.ladder"
style="width: 80%;margin-right:10%;" class="single-tiered-pricing-table">
<el-table-column align="center" prop="" label="规格" >
<template slot-scope="scope">
<span>默认</span>
</template>
</el-table-column>
<el-table-column align="center" prop="" label="起订量" >
<template slot-scope="scope">
<el-input size="mini" style="width:90%" v-model.number="scope.row.quantity" placeholder="起订量" ></el-input>
</template>
</el-table-column>
<el-table-column align="center" prop="" label="价格" >
<template slot-scope="scope">
<el-input size="mini" style="width:90%" v-model.number="scope.row.money" placeholder="价格" ></el-input>
</template>
</el-table-column>
<el-table-column align="center" prop="" label="操作" >
<template slot-scope="scope">
<el-button @click="delTieredPrice(scope.$index)" v-if="parameterdata.ladder.length > 1" size="mini" type="text" class="custom-button-danger">删除</el-button>
<el-divider v-if="parameterdata.ladder.length > 1" direction="vertical"></el-divider>
<el-button @click="addTieredPrice" size="mini" type="text">添加阶梯</el-button>
</template>
</el-table-column>
</el-table>
</div>
</div>
<div v-if="parameterdata.specs&&parameterdata.specs.length > 0&&isradioguide==2" class="single-spe-con">
<!-- {{parameterdata.specs_group}} -->
<div v-if="parameterdata.specs&&parameterdata.specs.length > 0 && parameterdata.isradioguide === 2" class="single-spe-con">
<el-table
border
size="small"
:data="parameterdata.specs_group"
:span-method="objectSpanMethod1"
style="width: 80%"
style="width: 100%"
:key="keyvalue"
>
<el-table-column
......@@ -80,60 +131,90 @@
<!-- <template slot-scope="scope">
</template> -->
</el-table-column>
<el-table-column align="center" prop="js_price" label="协议价">
<el-table-column align="center" prop="sc_price" label="市场划线价">
<template slot="header">
<span>协议</span>
<el-tooltip placemetn="top">
<span>市场划线</span>
<el-tooltip placemetn="top" >
<span slot="content">点击可批量设置价格</span>
<span class="spe-ali-icon0435 iconfont icon-iconset0435" @click="applyAllTable('js_price')"></span>
<span class="spe-ali-icon0435 iconfont icon-iconset0435" @click="applyAllTable('sc_price')"></span>
</el-tooltip>
</template>
<template slot-scope="scope">
<el-input size="mini" style="width:90%" v-model.trim="scope.row.js_price" placeholder="请输入协议价"></el-input>
<el-input size="mini" style="width:90%" v-model.trim="scope.row.sc_price" placeholder="请输入"></el-input>
</template>
</el-table-column>
<el-table-column align="center" prop="sl_price" label="结算价">
<el-table-column align="center" prop="price" label="销售指导价">
<template slot="header">
<span>销售指导价</span>
<el-tooltip placemetn="top" >
<span slot="content">点击可批量设置价格</span>
<span class="spe-ali-icon0435 iconfont icon-iconset0435" @click="applyAllTable('price')"></span>
</el-tooltip>
</template>
<template slot-scope="scope">
<span class="sl-price-span-input">{{ settleSLPriceFormatter(scope.row.js_price) }}</span>
<el-input size="mini" style="width:90%" v-model.trim="scope.row.price" placeholder="请输入"></el-input>
</template>
</el-table-column>
<el-table-column align="center" prop="price" label="指导价">
<el-table-column align="center" prop="js_price" label="供货结算价">
<template slot="header">
<span>指导</span>
<el-tooltip placemetn="top" >
<span>供货结算</span>
<el-tooltip placemetn="top">
<span slot="content">点击可批量设置价格</span>
<span class="spe-ali-icon0435 iconfont icon-iconset0435" @click="applyAllTable('price')"></span>
<span class="spe-ali-icon0435 iconfont icon-iconset0435" @click="applyAllTable('js_price')"></span>
</el-tooltip>
</template>
<template slot-scope="scope">
<el-input size="mini" style="width:90%" v-model.trim="scope.row.price" placeholder="请输入指导价"></el-input>
<el-input size="mini" style="width:90%" v-model.trim="scope.row.js_price" placeholder="请输入"></el-input>
</template>
</el-table-column>
<el-table-column align="center" prop="sc_price" label="市场价">
<el-table-column align="center" prop="prime_cost" label="成本核算价">
<template slot="header">
<span>市场</span>
<el-tooltip placemetn="top" >
<span>成本核算</span>
<el-tooltip placemetn="top">
<span slot="content">点击可批量设置价格</span>
<span class="spe-ali-icon0435 iconfont icon-iconset0435" @click="applyAllTable('sc_price')"></span>
<span class="spe-ali-icon0435 iconfont icon-iconset0435" @click="applyAllTable('prime_cost')"></span>
</el-tooltip>
</template>
<template slot-scope="scope">
<el-input size="mini" style="width:90%" v-model.trim="scope.row.sc_price" placeholder="请输入市场价"></el-input>
<el-input size="mini" style="width:90%" v-model.trim="scope.row.prime_cost" placeholder="请输入"></el-input>
</template>
</el-table-column>
<el-table-column align="center" prop="stock" label="库存量">
<!-- <el-table-column align="center" prop="sl_price" label="结算价">-->
<!-- <template slot-scope="scope">-->
<!-- <span class="sl-price-span-input">{{ settleSLPriceFormatter(scope.row.js_price) }}</span>-->
<!-- </template>-->
<!-- </el-table-column>-->
<el-table-column align="center" prop="stock" label="库存">
<template slot="header">
<span>库存</span>
<span>库存</span>
<el-tooltip placemetn="top" >
<span slot="content">点击可批量设置数量</span>
<span class="spe-ali-icon0435 iconfont icon-iconset0435" @click="applyAllTable('stock')"></span>
</el-tooltip>
</template>
<template slot-scope="scope">
<el-input size="mini" style="width:90%" v-model.trim="scope.row.stock" placeholder="请输入库存量"></el-input>
<el-input size="mini" style="width:90%" v-model.trim="scope.row.stock" placeholder="请输入"></el-input>
</template>
</el-table-column>
<el-table-column align="center" prop="stock_warning" label="库存预警">
<template slot="header">
<span>库存预警</span>
<el-tooltip placemetn="top" >
<span slot="content">点击可批量设置数量</span>
<span class="spe-ali-icon0435 iconfont icon-iconset0435" @click="applyAllTable('stock_warning')"></span>
</el-tooltip>
</template>
<template slot-scope="scope">
<el-input size="mini" style="width:90%" v-model.trim="scope.row.stock_warning" placeholder="请输入"></el-input>
</template>
</el-table-column>
<el-table-column align="center" prop="weight" label="重量">
<el-table-column align="center" prop="weight" label="重量(g)">
<template slot="header">
<span>重量</span>
<el-tooltip placemetn="top" >
......@@ -142,9 +223,49 @@
</el-tooltip>
</template>
<template slot-scope="scope">
<el-input size="mini" style="width:90%" v-model.trim="scope.row.weight" placeholder="请输入重量"></el-input>
<el-input size="mini" style="width:90%" v-model.trim="scope.row.weight" placeholder="请输入"></el-input>
</template>
</el-table-column>
<el-table-column align="center" prop="volume" label="体积(m³)">
<template slot="header">
<span>体积</span>
<el-tooltip placemetn="top" >
<span slot="content">点击可批量设置</span>
<span class="spe-ali-icon0435 iconfont icon-iconset0435" @click="applyAllTable('volume')"></span>
</el-tooltip>
</template>
<template slot-scope="scope">
<el-input size="mini" style="width:90%" v-model.trim="scope.row.volume" placeholder="请输入"></el-input>
</template>
</el-table-column>
<el-table-column align="center" prop="goods_code" label="编码">
<template slot="header">
<span>编码</span>
<el-tooltip placemetn="top" >
<span slot="content">点击可批量设置</span>
<span class="spe-ali-icon0435 iconfont icon-iconset0435" @click="applyAllTable('goods_code')"></span>
</el-tooltip>
</template>
<template slot-scope="scope">
<el-input size="mini" style="width:90%" v-model.trim="scope.row.goods_code" placeholder="请输入"></el-input>
</template>
</el-table-column>
<el-table-column align="center" prop="bar_code" label="条形码">
<template slot="header">
<span>条形码</span>
<el-tooltip placemetn="top" >
<span slot="content">点击可批量设置</span>
<span class="spe-ali-icon0435 iconfont icon-iconset0435" @click="applyAllTable('bar_code')"></span>
</el-tooltip>
</template>
<template slot-scope="scope">
<el-input size="mini" style="width:90%" v-model.trim="scope.row.bar_code" placeholder="请输入"></el-input>
</template>
</el-table-column>
<el-table-column align="center" prop="thumb" label="图片">
<template slot-scope="scope">
<span
......@@ -164,8 +285,76 @@
</template>
</el-table-column>
</el-table>
<input type="file" style="display: none;" ref="guideupimg" accept="image/*"
@change="changeIMG()">
<input type="file" style="display: none;" ref="guideupimg" accept="image/*" @change="changeIMG()">
</div>
<!-- 多规格,阶梯定价 -->
<div v-if="parameterdata.is_ladder_spec && parameterdata.specs&&parameterdata.specs.length > 0 && parameterdata.isradioguide === 2">
<el-table
border
size="small"
:data="parameterdata.specs_group"
:span-method="objectSpanMethod1"
style="width: 100%"
:key="keyvalue"
>
<el-table-column
header-align="center"
align="center"
v-for="(item, index) in parameterdata.specs"
:key="index"
:prop="item.spec_name"
:label="item.spec_name"
>
<!-- <template slot-scope="scope">
</template> -->
</el-table-column>
<el-table-column align="center" label="起批量">
<!-- <template slot="header">-->
<!-- <span>起批量</span>-->
<!-- <el-tooltip placemetn="top">-->
<!-- <span slot="content">点击可批量设置</span>-->
<!-- <span class="spe-ali-icon0435 iconfont icon-iconset0435"></span>-->
<!-- </el-tooltip>-->
<!-- </template>-->
<template slot-scope="scope">
<el-input size="mini" v-for="(iten,inde) in scope.row.ladder" :key="inde" style="width:90%"
v-model="scope.row.ladder[inde].quantity" placeholder="请输入" @input="upChange"
class="custom-el-input-con"></el-input>
</template>
</el-table-column>
<el-table-column align="center" label="价格">
<!-- <template slot="header">-->
<!-- <span>价格</span>-->
<!-- <el-tooltip placemetn="top">-->
<!-- <span slot="content">点击可批量设置</span>-->
<!-- <span class="spe-ali-icon0435 iconfont icon-iconset0435"></span>-->
<!-- </el-tooltip>-->
<!-- </template>-->
<template slot-scope="scope">
<el-input size="mini" v-for="(iten,inde) in scope.row.ladder" :key="inde" style="width:90%"
v-model="scope.row.ladder[inde].money" placeholder="请输入" @input="upChange"
class="custom-el-input-con"></el-input>
</template>
</el-table-column>
<el-table-column align="center" prop="" label="操作">
<template slot-scope="scope">
<div class="options-price-con">
<div>
<div v-for="(iten,inde) in scope.row.ladder">
<el-button @click="delTieredPrice1(scope.$index,inde)" v-if="scope.row.ladder.length > 1" size="mini" type="text" class="custom-button-danger">删除</el-button>
<el-divider v-if="scope.row.ladder.length > 1" direction="vertical"></el-divider>
</div>
</div>
<div>
<el-button @click="addTieredPrice1(scope.$index)" size="mini" type="text">添加阶梯</el-button>
</div>
</div>
</template>
</el-table-column>
</el-table>
</div>
</div>
</template>
......@@ -178,11 +367,13 @@ export default {
parameterdata: {
type: Object,
required: true
}
},
},
data() {
return {
isradioguide:'',
// isCustomPriceSingle: false, // 单规格-阶梯定价
// isCustomPriceSpec: false, // 多规格-阶梯定价
fuckVal: 0,
upimgindex:'',
keyvalue:1,
spacArr:[],
......@@ -192,12 +383,16 @@ export default {
/** 无规格 数据 */
singleSpecTable: [
{
js_price: '', // 协议
sl_price: '', // 结算
price: '', // 指导
sc_price: '', // 市场
sc_price: '', // 市场划线
price: '', // 销售指导
js_price: '', // 供货结算
prime_cost: '', // 成本核算
stock: '', // 库存
stock_warning: '', // 库存预警
weight: '', // 重量 g
volume: '', // 体积
goods_code: '', // 编码
bar_code: '', // 条码
}
],
singleSpecImgList: [],
......@@ -219,35 +414,60 @@ export default {
} // return end
},
watch:{
'parameterdata': function(val) {
this.orgGoodsPam = val;
if(val.pamNameList){
this.spacArr = val.pamNameList
}
},
},
created() {
this.cateFee = this.$store.state.user.cateFee;
},
mounted() {
this.isradioguide = this.parameterdata.isradioguide ? this.parameterdata.isradioguide:1
console.log(this.parameterdata)
this.getSpanArr(this.parameterdata);
this.keyvalue++
if(this.parameterdata.singleSpecTable && this.parameterdata.singleSpecTable.length === 1 ) {
// debugger
if (this.parameterdata.singleSpecTable && this.parameterdata.singleSpecTable.length === 1) {
this.singleSpecTable = this.parameterdata.singleSpecTable
}
// console.log(439,this.parameterdata)
// 接受 多规格是否启用阶梯定价
this.$bus.$on("customPriceSpec",(data)=> {
this.parameterdata.is_ladder_spec = data
this.keyvalue++
})
},
beforeDestroy () {
this.$bus.$off('customPriceSpec')
},
methods: {
parentMsg(val){
console.log(val,'guangbo')
this.isradioguide = val
upChange() {
this.keyvalue++
// this.$forceUpdate()
},
/** 初始化 商品售价 数据 */
initInfo() {
this.orgGoodsPam = {};
//this.singleSpecTable =
},
addTieredPrice1(index){
let priceItem = {quantity: 1,money: 0}
// this.parameterdata.specs_group[index].ladder.push(priceItem)
this.$set(this.parameterdata.specs_group[index].ladder,this.parameterdata.specs_group[index].ladder.length,priceItem);
this.keyvalue++
},
delTieredPrice1(index,inde) {
this.parameterdata.specs_group[index].ladder.splice(inde,1)
this.keyvalue++
},
// 添加阶梯
addTieredPrice() {
let ladderItem = {quantity: 1,money: 0}
this.parameterdata.ladder.push(ladderItem)
},
// 删除阶梯
delTieredPrice(index) {
this.parameterdata.ladder.splice(index,1);
},
// ------ 无规格,上传图片相关 ------
limit5() {
this.$message({type: 'warning',message: '只能上传5张图片'});
......@@ -330,46 +550,28 @@ export default {
* 当多规格数据时候,才调用
* */
priceReduce() {
// debugger
if(this.parameterdata.pamTableList && this.parameterdata.pamTableList.length > 0) {
this.parameterdata.pamTableList.forEach((item)=> {
if(item[0].js_price) {
item[0].js_price = item[0].js_price / 100;
if(item[0].sc_price) {
item[0].sc_price = item[0].sc_price / 100;
}
if(item[0].price) {
item[0].price = item[0].price / 100;
}
if(item[0].sc_price) {
item[0].sc_price = item[0].sc_price / 100;
if(item[0].js_price) {
item[0].js_price = item[0].js_price / 100;
}
if(item[0].sl_price) {
item[0].sl_price = item[0].sl_price / 100;
if(item[0].price_cost) {
item[0].price_cost = item[0].price_cost / 100;
}
})
}
// else {
// if(this.singleSpecTable[0].js_price) {
// this.singleSpecTable[0].js_price = this.singleSpecTable[0].js_price / 100
// }
// if(this.singleSpecTable[0].price) {
// this.singleSpecTable[0].price = this.singleSpecTable[0].price / 100
// }
// if(this.singleSpecTable[0].sc_price) {
// this.singleSpecTable[0].sc_price = this.singleSpecTable[0].sc_price / 100
// }
// if(this.singleSpecTable[0].sl_price) {
// this.singleSpecTable[0].sl_price = this.singleSpecTable[0].sl_price / 100
// }
// }
},
/** 一键应用所有 */
applyAllTable(key) {
// js_price: '', // 协议价
// sl_price: '', // 结算价
// price: '', // 指导价
// sc_price: '', // 市场价
// stock: '', // 库存
// weight: '', // 重量 g
let text = ''
let pacee = ''
if(key == 'js_price'){
......@@ -509,6 +711,22 @@ export default {
}
}
},
// 表格合并 列单元格
// arraySpanMethod({ row, column, rowIndex, columnIndex }) {
// if (columnIndex > 2 && columnIndex != 6 && columnIndex != 7) { // 用于设置要合并开始的列号
// if (rowIndex === 0) { // 用于设置合并开始的行号
// return {
// rowspan: 100,     // 合并的行数
// colspan: 1 // 合并的列数,设为0则直接不显示
// }
// } else {
// return {
// rowspan: 0,
// colspan: 0
// }
// }
// }
// },
// 合并行数
objectSpanMethod1({ row, column, rowIndex, columnIndex }) {
if(this.parameterdata.specs_group && this.parameterdata.specs_group.length > 0) {
......@@ -628,7 +846,11 @@ p {
}
.goods-parameter {
padding: 20px;
}
.goods-parameter-spe {
padding-top: 0;
margin-top: -20px;
}
.edit-type-span {
......@@ -695,4 +917,31 @@ p {
height: 50px;
}
}
.tiered-pricing-con {
margin: 20px 0 0;
}
.single-tiered-pricing-table {
margin: 20px 0 0;
}
.custom-button-danger {
color: #F56C6C;
}
.custom-button-danger:hover {
color: #ff4949;
}
.custom-el-input-con {
margin: 3px 0;
}
.options-price-con {
display: flex;
justify-content: center;
flex-direction: row;
align-items: center;
}
</style>
......@@ -46,8 +46,10 @@
<el-button type="danger" plain icon="el-icon-delete" size="mini" @click="deleteSpe(index)">删除该规格</el-button>
</div>
</div>
<div>
<el-checkbox v-model="isCustomPriceSpec" class="custom-price-check" @change="switchCustomPriceSpec">启用阶梯定价</el-checkbox>
<el-button @click="addSpe" class="el-icon-plus" size="mini">添加规格</el-button>
</div>
<!-- 添加 规格名称 -->
<el-dialog
......@@ -88,6 +90,7 @@ export default {
},
data() {
return {
isCustomPriceSpec: false, // 是否启用 阶梯定价
tableData7:{},
speData: [], // 商品规格总数据
specsGroup: {
......@@ -113,7 +116,7 @@ export default {
/** 先获取 本地存储的localStorage **/
this.getLocalSpecNameOption();
// 先判断是新增还是修改
//console.log(123,this.specificationsdata)
// console.log(44444,this.specificationsdata)
if(this.specificationsdata.length === 0) {
this.$set(this.specsGroup.spec_value,this.specsGroup.spec_value.length,this.speParamName);
this.speData = [];
......@@ -132,6 +135,12 @@ export default {
// }
},
methods: {
switchCustomPriceSpec() {
this.$bus.$emit("customPriceSpec",this.isCustomPriceSpec)
if (!this.isCustomPriceSpec) {
console.log(151,this.specificationsdata)
}
},
/** 初始化 商品规格数据 */
initInfo() {
// debugger
......@@ -346,7 +355,7 @@ export default {
if (proSpeData.length === 0) {
let goodsPam = {
specs:[],
isradioguide:1
isradioguide:2
};
this.$emit('calcSpeTable', goodsPam);
} else {
......@@ -358,43 +367,55 @@ export default {
}
// goodsParametersList newList
let goodsParametersList = this.cartesian(proSpeData);
debugger
// debugger
for (let index = 0; index < goodsParametersList.length; index++) {
var listobj = {};
listobj["js_price"] = "";
listobj["sl_price"] = "";
listobj["price"] = "";
listobj["sc_price"] = "";
listobj["price"] = "";
listobj["js_price"] = "";
listobj["prime_cost"] = "";
listobj["stock"] = "";
listobj["stock_warning"] = "";
listobj["weight"] = "";
listobj["volume"] = "";
listobj["goods_code"] = "";
listobj["bar_code"] = "";
listobj["thumb"] = "";
listobj["spec_values"] = goodsParametersList[index]
for (let i = 0; i < this.speData.length; i++) {
debugger
if(this.speData.length>1){
listobj[this.speData[i].spec_name] = goodsParametersList[index][i];
}
if(this.speData.length==1){
debugger
listobj[this.speData[0].spec_name] = goodsParametersList[index];
}
}
specs_group.push(listobj);
}
// goodsParametersList.forEach((item,index)=> {
// goodsPam.pamTableList.push(prePamTable)
// });
this.tableData7['specs_group'] = specs_group
this.tableData7['specs'] = this.speData
this.tableData7['shopTypes'] = this.cartesian(proSpeData)
this.tableData7['isradioguide'] = 2
if(this.isCustomPriceSpec) {
this.tableData7.specs_group.forEach((item,index)=> {
item['ladder'] = []
let obj = {
quantity: 1,money: 0
}
item['ladder'].push(obj)
})
}
this.$emit('calcSpeTable',this.tableData7);
console.log(this.tableData7)
// this.switchCustomPriceSpec()
// if (this.tableData7.is_ladder_spec !== undefined) {
// this.tableData7.is_ladder_spec = this.isCustomPriceSpec
// }
console.log(399,this.tableData7)
}
},
......@@ -551,4 +572,8 @@ export default {
justify-content: center;
align-items: center;
}
.custom-price-check {
margin: 0 20px 0 0;
}
</style>
......@@ -40,15 +40,14 @@
<el-radio :label="1">单规格</el-radio>
<el-radio :label="2">多规格</el-radio>
</el-radio-group>
<el-link class="edit-type-span el-icon-search" type="primary" :underline="false" @click="viewPriceExp">查看各类价格说明
<el-link class="edit-type-span el-icon-search" type="primary" :underline="false" @click="viewPriceExp">
查看各类价格说明
</el-link>
<span class="tip-span">所有商品价格均为含税价,必须开具发票</span>
</p>
<GoodsSpecifications v-show="radioguide==2" ref="goodsspecifications" :specificationsdata="specificationsdata" @calcSpeTable="calcSpeTable"/>
<!-- <keep-alive>-->
<GoodsParameter :key="keyvalue" ref="goodsparameter" :parameterdata="parameterdata" @ />
<GoodsParameter :key="keyvalue" ref="goodsparameter" :parameterdata="parameterdata"/>
<!-- </keep-alive>-->
</div>
</div>
......@@ -88,27 +87,25 @@
>
<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 label="市场划线价:">
<span>市场原价</span>
</el-form-item>
<el-form-item label="指导售价:">
<span>指导下游商户制定销售的价格</span>
<el-form-item label="销售指导价:">
<span>供货场景下,定义为指导售价;销售场景下,定义为您的销售价</span>
</el-form-item>
<el-form-item label="市场价:">
<span>市场售价,参考京东、天猫等平台的售</span>
<el-form-item label="供货结算价:">
<span>本商品铺货到第三方平台的供货结算</span>
</el-form-item>
<el-form-item>
<span class="pre-price-tip">商品价格均为含税价,必须开具发票。请准确填写并更新商品实际库存,超卖导致的虚假及延迟发货会引起用户投诉与平台判罚。</span>
<el-form-item label="成本核算价:">
<span>指本商品采购进货的成本价,仅自己可见</span>
</el-form-item>
<!-- <el-form-item>-->
<!-- <span class="pre-price-tip">商品价格均为含税价,必须开具发票。请准确填写并更新商品实际库存,超卖导致的虚假及延迟发货会引起用户投诉与平台判罚。</span>-->
<!-- </el-form-item>-->
</el-form>
<span slot="footer" class="dialog-footer">
<el-button @click="isViewPriceExp = false" size="mini">取 消</el-button>
......@@ -127,12 +124,6 @@
export default {
name: 'Index',
// props: {
// option: {
// type: Number,
// required: true
// }
// },
components: {
Goodsinfomation,
GoodsSpecifications,
......@@ -165,8 +156,7 @@
{ id: 2, name: '商品规格' },
{ id: 3, name: '商品详情' },
{ id: 4, name: '商品参数' },
{ id: 5, name: '售后及服务' },
{ id: 6, name: '其他设置' }
{ id: 5, name: '售后及服务' }
],
/* 商品信息 */
goodsinfodata: {
......@@ -178,13 +168,14 @@
specificationsdata: [],
/* 商品售价 */
parameterdata: {
isradioguide:this.radioguide,
singleSpecTable: []
isradioguide:1,
is_ladder: false, // 单规格,是否开启,阶梯定价
is_ladder_spec: false, // 多规格,是否开启,阶梯定价
singleSpecTable: [],
ladder: [
{quantity: 1,money: 0} // 默认一个,处理方便一些
]
},
/* 商品详情 */
// imgdata: {
// description: ''
// },
description: '',
/* 售后及服务 */
goodsaftersale: {
......@@ -197,25 +188,18 @@
stags: [],
freight_id: 310,
delay_compensate: 24,
aftersale_time: 7,
goods_des:'',//关键词
producing_area:'',//产地
deliver_area:'',//发货地
unit:'',//单位
web_url:'',//外部市场链接
out_goods_id:''//商品编码
aftersale_time: 7
},
goodsAllData: {
submit: 0,
}, // 商品所有数据
TIMER: null,
hehe: 0,
option: 0
} // return end
},
created() {
// option 商品的id
// option 商品的id
//debugger
this.option = Number(this.$route.query.goods_id)
if( this.option && this.option !== 0 ) {
......@@ -228,18 +212,26 @@
goods_id: res.data.goods_id,
categoryStr: '', // 商品分类 地址拼接
categoryList: [], // 商品分类 id集合的数组
// goods_des: res.data.goods_des, // 关键词
goods_des: res.data.goods_des, // 商品标签
goods_name: res.data.goods_name, // 商品标题
category_id: res.data.category_id,
// producing_area: res.data.producing_area, // 产地
// deliver_area: res.data.deliver_area, // 发货地
// unit: res.data.unit, // 单位
metering_unit: res.data.metering_unit,// 计量单位
packaging_unit: res.data.packaging_unit,// 包装单位
conversion_unit: res.data.conversion_unit, // 换算关系
producing_area_id: "", // 产地的idlist
producing_area: res.data.producing_area, // 产地中文名称
deliver_area_id: "", // 发货地的idlist
deliver_area: res.data.deliver_area, // 发货地中文名称
tax_rate: res.data.tax_rate,// 税率
goods_brand: res.data.goods_brand, // 品牌
brand_id: res.data.brand_id, // 品牌
// web_url: res.data.web_url, // 外部链接
// out_goods_id: (res.data.out_goods_id == 0) ? '' : res.data.out_goods_id , // 商品编码
web_url: res.data.web_url, // 市场参考价链接
group: res.data.group, // 商品分组
supplier: res.data.supplier, // 供应商
storehouse: res.data.storehouse, // 仓库
imgs: res.data.imgs, // 商品图片
video:res.data.video
video:res.data.video,
ssfl: (res.data.category_three_id && res.data.category_three_name) ? res.data.category_three_name : ""
}
this.goodsinfodata.categoryStr = res.data.category_first_name + '/' + res.data.category_first_name + '/' + res.data.category_three_name;
......@@ -249,26 +241,51 @@
arr[2] = res.data.category_three_id;
this.goodsinfodata.categoryList = arr;
// 产地
let producing_area_list = res.data.producing_area_list
if (Array.isArray(producing_area_list) && producing_area_list.length > 0) {
this.goodsinfodata.producing_area_id = producing_area_list.map((item)=> {
return item.id
});
}
// 发货地
let deliver_area_list = res.data.deliver_area_list
if (Array.isArray(deliver_area_list) && deliver_area_list.length > 0) {
this.goodsinfodata.deliver_area_id = deliver_area_list.map((item)=> {
return item.id
});
}
// 是否启用阶梯定价
// 商品规格, 售价由规格决定
if(res.data.specs && res.data.specs.length > 0) {
this.specificationsdata = res.data.specs;
this.radioguide = 2
this.parameterdata.isradioguide = 2
this.parameterdata.is_ladder = false
this.parameterdata.is_ladder_spec = res.data.is_ladder == 1 ? true : false;
// this.$bus.$emit("FUCK",this.parameterdata.is_ladder_spec)
}else{
this.parameterdata['specs']=[]
this.radioguide = 1
this.parameterdata.isradioguide = 1
this.parameterdata.is_ladder = res.data.is_ladder == 1 ? true : false;
this.parameterdata.is_ladder_spec = false;
}
// debugger
// 商品售价
// 多规格
if(res.data.specs_group && res.data.specs_group.length > 0) {
//this.parameterdata
let specs_group = res.data.specs_group
res.data.specs_group.forEach((item)=> {
item.js_price = item.js_price / 100;
item.sl_price = item.js_price / 100;
item.price = item.price / 100;
item.sc_price = item.sc_price / 100;
item.price = item.price / 100;
item.js_price = item.js_price / 100;
item.prime_cost = item.prime_cost / 100;
})
let goodsParametersList = this.cartesian(this.processData(res.data.specs));
......@@ -276,7 +293,6 @@
for (let i = 0; i < res.data.specs.length; i++) {
if(res.data.specs.length>1){
specs_group[index][res.data.specs[i].spec_name] = goodsParametersList[index][i];
}
if(res.data.specs.length==1){
specs_group[index][res.data.specs[0].spec_name] = goodsParametersList[index];
......@@ -289,23 +305,40 @@
this.parameterdata['shopTypes'] = goodsParametersList
}else {
// 单规格
this.parameterdata.pamTableList = [];
let singleSpecObj = {
js_price:'',
sl_price:'',
price:'',
sc_price:'',
stock:'',
weight:'',
sc_price: '', // 市场划线价
price: '', // 销售指导价
js_price: '', // 供货结算价
prime_cost: '', // 成本核算价
stock: '', // 库存
stock_warning: '', // 库存预警
weight: '', // 重量 g
volume: '', // 体积
goods_code: '', // 编码
bar_code: '', // 条码
}
this.parameterdata.singleSpecTable = [];
singleSpecObj.js_price = res.data.js_price / 100;
singleSpecObj.sl_price = res.data.js_price / 100;
singleSpecObj.price = res.data.price / 100;
singleSpecObj.sc_price = res.data.sc_price / 100;
singleSpecObj.price = res.data.price / 100;
singleSpecObj.js_price = res.data.js_price / 100;
singleSpecObj.prime_cost = res.data.prime_cost / 100;
singleSpecObj.stock = res.data.stock;
singleSpecObj.stock_warning = res.data.stock_warning;
singleSpecObj.weight = res.data.weight;
singleSpecObj.volume = res.data.volume;
singleSpecObj.goods_code = res.data.goods_code;
singleSpecObj.bar_code = res.data.bar_code;
this.parameterdata.singleSpecTable.push(singleSpecObj);
// 价格阶梯
if (res.data.ladder.length > 0) {
this.parameterdata.ladder = res.data.ladder.map((item)=> {
item.money = item.money/100
return item
});
}
}
// 商品详情
......@@ -313,11 +346,6 @@
// 商品参数 售后服务 其他设置
this.goodsaftersale.params = res.data.params?res.data.params:[{'title':'','value':''}]//参数
this.goodsaftersale.goods_des = res.data.goods_des//关键词
this.goodsaftersale.producing_area = res.data.producing_area // 产地
this.goodsaftersale.deliver_area = res.data.deliver_area // 发货地
this.goodsaftersale.unit = res.data.unit // 单位
this.goodsaftersale.web_url = res.data.web_url // 外部链接
this.goodsaftersale.out_goods_id = (res.data.out_goods_id == 0) ? '' : res.data.out_goods_id //商品编码
this.goodsaftersale.freight_id = res.data.freight_id;
this.goodsaftersale.delay_compensate = res.data.delay_compensate;
......@@ -348,7 +376,7 @@
}
}
});
console.log(this.goodsaftersale)
// console.log("售后数据:",this.goodsaftersale)
}else {
this.isShowGoodsDetails = false;
}
......@@ -357,8 +385,8 @@
},
methods: {
radiochange(val){
this.parameterdata.isradioguide = val
this.$refs.goodsparameter.parentMsg(val)
this.parameterdata.isradioguide = this.radioguide
this.keyvalue++
},
// 查看各类价格说明
viewPriceExp() {
......@@ -368,8 +396,6 @@
calcSpeTable(data) {
this.keyvalue++
this.parameterdata = data;
// debugger
},
// 只有点击完最后一级,才会有值
SSQChange() {
......@@ -462,70 +488,147 @@
// 保存/提交
save() {
// 此处变量 有顺序 校验时,电梯至某处
// 商品信息 是否填写完整
let isGoodsInfoMsg = this.$refs['goodsInfo'].validateGoodsInfoForm();
debugger
// 商品规格 无需校验
let spggRef = this.$refs.goodsspecifications;
let spggData = spggRef.speData;
spggRef.upDateDom();
// return;
// 商品售价,通过获取的数据,分别进行判断
// 商品售价,通过获取的数据,分别进行判断,
// 1-单规格和多规格【规格组合】数据进行处理;
// 2-单规格和多规格【阶梯定价】数据进行处理
let isGoodsPrice = true;
let goodsPriceMsg = '';
let spsjData1 = JSON.parse(JSON.stringify(this.$refs.goodsparameter.singleSpecTable));
let spsjData2 = JSON.parse(JSON.stringify(this.$refs.goodsparameter.parameterdata));
// 如果有,则说明有规格组合数据
let goodsparameterData = this.$refs.goodsparameter; // 后续可以将spsjData1和spsjData2进行优化掉
// 阶梯定价-控制参数
this.goodsAllData['is_ladder'] = spsjData2.is_ladder ? 1 : 0;
if (this.radioguide === 1) {
this.goodsAllData.is_ladder = spsjData2.is_ladder ? 1 : 0;
}
if (this.radioguide === 2) {
this.goodsAllData.is_ladder = spsjData2.is_ladder_spec ? 1 : 0;
}
this.goodsAllData['ladder'] = []
// 阶梯定价数据
let ladder = []
// 多规格【规格组合】数据 -- start --//
if ( this.radioguide==2&&spsjData2.specs_group && spsjData2.specs_group.length > 0 ) {
// debugger
for(let i = 0; i < spsjData2.specs_group.length; i++) {
let itemObj = spsjData2.specs_group[i][0];
for (let itemKey in itemObj) {
// 有多余字段,可能为空,需要对有效字段单独判断
// Number后,有三中情况:0,正数,负数,NaN
if( !Number(itemObj['js_price']) || Number(itemObj['js_price']) <0 ) {
goodsPriceMsg = '[ 商品售价 ]中,协议价不能为空,并且只能填大于0的数值'
if( !Number(itemObj['sc_price']) || Number(itemObj['sc_price']) <0 ) {
goodsPriceMsg = '[ 商品售价 ]中,市场划线价不能为空,并且只能填大于0的数字'
isGoodsPrice = false;
break
} else if ( !Number(itemObj['price']) || Number(itemObj['price']) <0 ) {
goodsPriceMsg = '[ 商品售价 ]中,指导价不能为空,并且只能填大于0的数值'
goodsPriceMsg = '[ 商品售价 ]中,销售指导价不能为空,并且只能填大于0的数字'
isGoodsPrice = false;
break
} else if( !Number(itemObj['sc_price']) || Number(itemObj['sc_price']) <0 ) {
goodsPriceMsg = '[ 商品售价 ]中,市场价不能为空,并且只能填大于0的数值'
} else if( !Number(itemObj['js_price']) || Number(itemObj['js_price']) <0 ) {
goodsPriceMsg = '[ 商品售价 ]中,供货结算价不能为空,并且只能填大于0的数字'
isGoodsPrice = false;
break
} else if ( !Number(itemObj['stock']) || Number(itemObj['stock']) <0 ) {
goodsPriceMsg = '[ 商品售价 ]中,库存量不能为空,并且只能填大于0的整数'
isGoodsPrice = false;
break
} else if ( !Number(itemObj['weight']) || Number(itemObj['weight']) <0 ) {
goodsPriceMsg = '[ 商品售价 ]中,商品重量不能为空,并且只能填大于0的数字'
isGoodsPrice = false;
break
} else {
goodsPriceMsg = '';
isGoodsPrice = true;
}
// 多规格【阶梯定价】数据 -- start --//
if (this.goodsAllData.is_ladder) {
for(let la = 0; la < spsjData2.specs_group[i][ladder].length; la++) {
let ladderItem = spsjData2.specs_group[i][ladder][la]
for(let laKey in ladderItem) {
if( !Number(ladderItem['quantity']) || Number(ladderItem['quantity']) <0 ) {
goodsPriceMsg = '[ 阶梯定价 ]中,商品数量不能为空,并且只能填大于0的整数'
isGoodsPrice = false;
break;
}else if( !Number(ladderItem['money']) || Number(ladderItem['money']) <0 ) {
goodsPriceMsg = '[ 阶梯定价 ]中,商品数量不能为空,并且只能填大于0的数字'
isGoodsPrice = false;
break;
}else {
goodsPriceMsg = ''
isGoodsPrice = true;
}
}
}
}else {
spsjData2.specs_group[i][ladder] = []
}
// 多规格【阶梯定价】数据 -- end --//
}
if (!isGoodsPrice) {
break
}
}
// 多规格【规格组合】数据 -- end --//
}else {
// 无规格组合数据
// 单规格组合数据【规格组合】数据 -- start --//
let slingleSpeObj = spsjData1[0];
if ( !Number(slingleSpeObj['js_price']) || Number(slingleSpeObj['js_price']) <0 ) {
goodsPriceMsg = '[ 商品售价 ]中,协议价不能为空,并且只能填大于0的数值'
if ( !Number(slingleSpeObj['sc_price']) || Number(slingleSpeObj['sc_price']) <0 ) {
goodsPriceMsg = '[ 商品售价 ]中,市场划线价不能为空,并且只能填大于0的数字'
isGoodsPrice = false;
} else if ( !Number(slingleSpeObj['price']) || Number(slingleSpeObj['price']) <0 ) {
goodsPriceMsg = '[ 商品售价 ]中,指导价不能为空,并且只能填大于0的数值'
goodsPriceMsg = '[ 商品售价 ]中,销售指导价不能为空,并且只能填大于0的数字'
isGoodsPrice = false;
} else if ( !Number(slingleSpeObj['sc_price']) || Number(slingleSpeObj['sc_price']) <0 ) {
goodsPriceMsg = '[ 商品售价 ]中,市场价不能为空,并且只能填大于0的数值'
} else if ( !Number(slingleSpeObj['js_price']) || Number(slingleSpeObj['js_price']) <0 ) {
goodsPriceMsg = '[ 商品售价 ]中,供货结算价不能为空,并且只能填大于0的数字'
isGoodsPrice = false;
} else if ( !Number(slingleSpeObj['stock']) || Number(slingleSpeObj['stock']) <0 ) {
goodsPriceMsg = '[ 商品售价 ]中,库存量不能为空,并且只能填大于0的整数'
isGoodsPrice = false;
} else if ( !Number(slingleSpeObj['weight']) || Number(slingleSpeObj['weight']) <0 ) {
goodsPriceMsg = '[ 商品售价 ]中,商品重量不能为空,并且只能填大于0的数字'
isGoodsPrice = false;
} else {
goodsPriceMsg = ''
isGoodsPrice = true;
}
// 单规格【规格组合】数据 -- end --//
// 单规格【阶梯定价】数据 -- start --//
ladder = goodsparameterData.parameterdata.ladder;
if (this.goodsAllData.is_ladder) {
if (ladder.length > 0) {
for (let la = 0; la < ladder.length; la++) {
let ladderItem = ladder[la]
for(let laKey in ladderItem) {
if( !Number(ladderItem['quantity']) || Number(ladderItem['quantity']) <0 ) {
goodsPriceMsg = '[ 阶梯定价 ]中,商品数量不能为空,并且只能填大于0的整数'
isGoodsPrice = false;
break;
}else if( !Number(ladderItem['money']) || Number(ladderItem['money']) <0 ) {
goodsPriceMsg = '[ 阶梯定价 ]中,商品数量不能为空,并且只能填大于0的数字'
isGoodsPrice = false;
break;
}else {
goodsPriceMsg = ''
isGoodsPrice = true;
}
}
}
}
}else {
ladder = []
}
// 单规格【阶梯定价】数据 -- end --//
}
// 商品详情 是否填写完整
......@@ -535,6 +638,13 @@
// 售后服务 是否填写完整
let isGoodsAfterSaleMsg = this.$refs['goodsaftersale'].validateGoodsAfterSaleForm();
// ----------- 自测用
// 获取 商品信息数据
// let fuck = this.$refs.goodsInfo.goodsInfoForm;
// console.log("商品信息:",fuck)
// return
// ----------- 自测用
if(!isGoodsInfoMsg) {
this.$message({type:'error',message:'商品信息未填写完整'});
this.setFloorNavMountClick(0);
......@@ -555,14 +665,8 @@
}
if(!isGoodsAfterSaleMsg) {
if(sessionStorage.getItem('clickbtm')==1){
this.$message({type:'error',message:'其他设置未填写完整'});
this.setFloorNavMountClick(5);
}else if(sessionStorage.getItem('clickbtm')==2){
this.$message({type:'error',message:'售后及服务未填写完整'});
this.setFloorNavMountClick(4);
}
return
}
......@@ -572,8 +676,6 @@
// 品牌处理 goods_brand
let brandOptions = this.$refs.goodsInfo.brandOptions;
// debugger
// goods_brand
if (Array.isArray(brandOptions) && brandOptions.length > 0) {
for(let bi = 0; bi < brandOptions.length; bi++) {
if( Number(spxxData.brand_id) === Number(brandOptions[bi].id) ) {
......@@ -583,18 +685,24 @@
}
}
// 产地
spxxData.producing_area_id = spxxData.producing_area_id[spxxData.producing_area_id.length - 1]
// 发货地
spxxData.deliver_area_id = spxxData.deliver_area_id[spxxData.deliver_area_id.length - 1]
// 发货地数据处理,预留
// for(let ai = 0; ai < areaOptions.length; ai++) {
// if ( Number(ssffData.deliver_area) === Number(areaOptions[ai].id) ) {
// ssffData.deliver_area = areaOptions[ai].name;
// break;
// }
// }
// console.log(500,spxxData);
if( spxxData.imgs.length > 7 ) {
this.$message({ type: 'warning',message: '商品信息中,商品图片最大数量为7张,请检查' });
this.setFloorNavMountClick(0);
return;
}
// 商品规格
// let spggData = this.$refs.goodsspecifications.speData;
//
// 商品售价,上面已经获取,
let spsjData = {};
if(this.radioguide==2 && spsjData2.specs_group && spsjData2.specs_group.length > 0 ) {
......@@ -604,6 +712,16 @@
spsjData = spsjData1[0];
this.goodsAllData['specs_group'] = []
this.goodsAllData['specs'] = []
// 启用,才赋值,否则是空数组
if (this.goodsAllData.is_ladder) {
this.goodsAllData.ladder = ladder
// 进一步处理金额数据
this.goodsAllData.ladder.map((item)=> {
item.money = item.money * 10000 / 100
return item
});
}
}
// 商品详情 数据
......@@ -612,36 +730,20 @@
// 售后服务 数据
let ssffData = this.$refs.goodsaftersale.goodsAfterSaleForm;
// 产地数据处理
let areaOptions = this.$refs.goodsaftersale.areaOptions;
for(let ai = 0; ai < areaOptions.length; ai++) {
if ( Number(ssffData.producing_area) === Number(areaOptions[ai].id) ) {
ssffData.producing_area = areaOptions[ai].name;
break;
}
}
// 发货地数据处理
for(let ai = 0; ai < areaOptions.length; ai++) {
if ( Number(ssffData.deliver_area) === Number(areaOptions[ai].id) ) {
ssffData.deliver_area = areaOptions[ai].name;
break;
}
}
console.log(569,ssffData);
if (ssffData.delay_compensate == 72) {
this.$message({ type: 'warning',message: '发货时长不能超过48小时,请重新编辑' });
return
}
// return
// 所有数据合并
Object.assign( this.goodsAllData, spxxData, spsjData, ssffData);
this.goodsAllData.description = spxqData
// 经营类目,服务标签,需要单独处理数据格式
this.goodsAllData.category_id = spxxData.categoryList.slice(-1)[0] ? spxxData.categoryList.slice(-1)[0] : '';
if(this.goodsAllData.stags) {
this.goodsAllData.stags = this.goodsAllData.stags.toString();
}
......@@ -649,24 +751,28 @@
// 价格数字需要 乘以100
if(this.goodsAllData.specs_group && this.goodsAllData.specs_group.length > 0) {
this.goodsAllData.specs_group.forEach((item)=> {
item.js_price = (Number(item.js_price) * 1000)/10;
item.price = (Number(item.price) * 1000)/10;
item.sc_price = (Number(item.sc_price) * 1000)/10;
item.sl_price = (Number(item.sl_price) * 1000)/10;
item.price = (Number(item.price) * 1000)/10;
item.js_price = (Number(item.js_price) * 1000)/10;
item.prime_cost = (Number(item.prime_cost) * 1000)/10;
item.stock = Number(item.stock);
item.stock_warning = Number(item.stock_warning);
item.bar_code = Number(item.bar_code);
})
delete this.goodsAllData.js_price;
delete this.goodsAllData.price;
delete this.goodsAllData.sc_price;
delete this.goodsAllData.sl_price;
delete this.goodsAllData.price;
delete this.goodsAllData.js_price;
delete this.goodsAllData.prime_cost;
delete this.goodsAllData.stock;
delete this.goodsAllData.weight;
}else {
this.goodsAllData.js_price = (Number(this.goodsAllData.js_price) * 1000)/10
this.goodsAllData.price = (Number(this.goodsAllData.price) * 1000)/10
this.goodsAllData.sc_price = (Number(this.goodsAllData.sc_price) * 1000)/10
this.goodsAllData.sl_price = (Number(this.goodsAllData.sl_price) * 1000)/10
this.goodsAllData.price = (Number(this.goodsAllData.price) * 1000)/10
this.goodsAllData.js_price = (Number(this.goodsAllData.js_price) * 1000)/10
this.goodsAllData.prime_cost = (Number(this.goodsAllData.prime_cost) * 1000)/10
this.goodsAllData.stock = Number(this.goodsAllData.stock);
this.goodsAllData.stock_warning = Number(this.goodsAllData.stock_warning);
this.goodsAllData.bar_code = Number(this.goodsAllData.bar_code);
delete this.goodsAllData.specs;
delete this.goodsAllData.specs_group;
}
......@@ -759,7 +865,6 @@
}
if(index==3){
floor_item = this.$refs.goodsaftersale.$refs.paramsvalue.$el
console.log(floor_item)
floor_offsetTop =floor_item.offsetTop - 90
}
if(index==4){
......@@ -767,11 +872,6 @@
floor_offsetTop = floor_item.offsetTop - 90
}
if(index==5){
floor_item = this.$refs.goodsaftersale.$refs.outhervalue.$el
floor_offsetTop = floor_item.offsetTop - 90
}
// 每次点击,对应dom需要滚动的高度
let window_scrollTop = _this.$refs.scrollview.scrollTop
......@@ -783,31 +883,27 @@
let resList = [];
let list = [];
for(let i = 0; i < 6; i++) {
if(i==0||i==1||i==2){
for (let i = 0; i < 6; i++) {
if (i == 0 || i == 1 || i == 2) {
let floor_item = document.getElementsByClassName('floor-item')
list.push(Number(floor_item[i].offsetHeight));
}
if(i==3){
if (i == 3) {
list.push(Number(this.$refs.goodsaftersale.$refs.paramsvalue.$el.offsetHeight));
}
if(i==4){
if (i == 4) {
list.push(Number(this.$refs.goodsaftersale.$refs.salesvalue.$el.offsetHeight));
}
if(i==5){
list.push(Number(this.$refs.goodsaftersale.$refs.outhervalue.$el.offsetHeight));
}
}
resList = list.slice(index)
for(let j = 0; j < resList.length; j++) {
for (let j = 0; j < resList.length; j++) {
hxz += resList[j]
}
if( hxz > floor_cont.offsetHeight) {
if (hxz > floor_cont.offsetHeight) {
timer.FLOOR_OFFSETTOP = floor_offsetTop;
}else {
} else {
timer.FLOOR_OFFSETTOP = floor_cont.scrollHeight - floor_cont.offsetHeight
}
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论