Merge branch 'ma'
commit
7331fcbb17
|
@ -90,7 +90,7 @@
|
|||
<template v-if="detail.goodsParamsDTOList && detail.goodsParamsDTOList.length">
|
||||
<div class="goods-params" v-for="item in detail.goodsParamsDTOList" :key="item.groupId">
|
||||
<span class="ml_10">{{item.groupName}}</span>
|
||||
<table class="mb_10" cellpadding='0' border="1" cellspacing="0" >
|
||||
<table class="mb_10" cellpadding='0' cellspacing="0" >
|
||||
<tr v-for="param in item.goodsParamsItemDTOList" :key="param.paramId">
|
||||
<td style="text-align: center">{{param.paramName}}</td><td>{{param.paramValue}}</td>
|
||||
</tr>
|
||||
|
|
|
@ -17,14 +17,14 @@ export default {
|
|||
* @description api请求基础路径
|
||||
*/
|
||||
api_dev: {
|
||||
common: "https://common-api.pickmall.cn",
|
||||
buyer: "https://buyer-api.pickmall.cn",
|
||||
seller: "https://store-api.pickmall.cn",
|
||||
manager: "https://admin-api.pickmall.cn"
|
||||
// common: 'http://192.168.0.106:8890',
|
||||
// buyer: 'http://192.168.0.106:8888',
|
||||
// seller: 'http://192.168.0.106:8889',
|
||||
// manager: 'http://192.168.0.106:8887'
|
||||
// common: "https://common-api.pickmall.cn",
|
||||
// buyer: "https://buyer-api.pickmall.cn",
|
||||
// seller: "https://store-api.pickmall.cn",
|
||||
// manager: "https://admin-api.pickmall.cn"
|
||||
common: 'http://192.168.0.103:8890',
|
||||
buyer: 'http://192.168.0.103:8888',
|
||||
seller: 'http://192.168.0.103:8889',
|
||||
manager: 'http://192.168.0.103:8887'
|
||||
},
|
||||
api_prod: {
|
||||
common: "https://common-api.pickmall.cn",
|
||||
|
|
|
@ -1,10 +1,7 @@
|
|||
<template>
|
||||
<div class="search">
|
||||
|
||||
<Card>
|
||||
|
||||
<Row @keydown.enter.native="handleSearch">
|
||||
<Form ref="searchForm" :model="searchForm" inline :label-width="70" class="search-form">
|
||||
<Form ref="searchForm" @keydown.enter.native="handleSearch" :model="searchForm" inline :label-width="70" class="search-form">
|
||||
<Form-item label="订单号" prop="orderSn">
|
||||
<Input type="text" v-model="searchForm.orderSn" placeholder="请输入订单号" clearable style="width: 160px" />
|
||||
</Form-item>
|
||||
|
@ -31,13 +28,11 @@
|
|||
<Option value="CANCELLED">已取消</Option>
|
||||
</Select>
|
||||
</Form-item>
|
||||
|
||||
<Form-item label="下单时间">
|
||||
<DatePicker v-model="selectDate" type="datetimerange" format="yyyy-MM-dd" clearable @on-change="selectDateRange" placeholder="选择起始时间" style="width: 160px"></DatePicker>
|
||||
</Form-item>
|
||||
<Button @click="handleSearch" type="primary" icon="ios-search" class="search-btn">搜索</Button>
|
||||
</Form>
|
||||
</Row>
|
||||
<div>
|
||||
<download-excel class="export-excel-wrapper" :data="data" :fields="fields" name="商品订单.xls">
|
||||
<Button type="info" class="export">
|
||||
|
|
|
@ -118,7 +118,7 @@ export default {
|
|||
render: (h, params) => {
|
||||
return h(
|
||||
"div",
|
||||
params.row.receivedNum + "/" + params.row.publishNum
|
||||
params.row.receivedNum + "/" + (params.row.publishNum === 0 ? '不限制' : params.row.publishNum)
|
||||
);
|
||||
},
|
||||
|
||||
|
|
|
@ -12,13 +12,7 @@
|
|||
<Input type='number' v-model="formValidate.autoReceive">
|
||||
<span slot="append">天</span>
|
||||
</Input>
|
||||
|
||||
</FormItem>
|
||||
<FormItem label="订单自动完成" prop="autoComplete">
|
||||
<Input type='number' v-model="formValidate.autoComplete">
|
||||
<span slot="append">天</span>
|
||||
</Input>
|
||||
|
||||
<span class="desc">收货后,订单完成</span>
|
||||
</FormItem>
|
||||
|
||||
<FormItem label="自动评价" prop="autoEvaluation">
|
||||
|
@ -27,11 +21,17 @@
|
|||
</Input>
|
||||
|
||||
</FormItem>
|
||||
<FormItem label="售后自动取消" prop="autoCancelAfterSale">
|
||||
<Input type='number' v-model="formValidate.autoCancelAfterSale">
|
||||
<FormItem label="已完成订单允许退单" prop="closeAfterSale">
|
||||
<Input type='number' v-model="formValidate.closeAfterSale">
|
||||
<span slot="append">天</span>
|
||||
</Input>
|
||||
|
||||
<span class="desc">如果天数为0,则不允许退单</span>
|
||||
</FormItem>
|
||||
<FormItem label="已完成订单允许投诉" prop="closeComplaint">
|
||||
<Input type='number' v-model="formValidate.closeComplaint">
|
||||
<span slot="append">天</span>
|
||||
</Input>
|
||||
<span class="desc">如果天数为0,则不允许投诉</span>
|
||||
</FormItem>
|
||||
|
||||
<div class="label-btns">
|
||||
|
@ -50,10 +50,10 @@ export default {
|
|||
ruleValidate: {}, // 验证规则
|
||||
formValidate: { // 表单数据
|
||||
autoCancel: "",
|
||||
autoComplete: "",
|
||||
autoEvaluation: "",
|
||||
autoReceive: "",
|
||||
autoCancelAfterSale: "",
|
||||
closeAfterSale: "",
|
||||
closeComplaint:""
|
||||
},
|
||||
};
|
||||
},
|
||||
|
@ -121,4 +121,8 @@ export default {
|
|||
/deep/ .ivu-input {
|
||||
width: 100px !important;
|
||||
}
|
||||
.desc {
|
||||
font-size: 12px;
|
||||
color: #999;
|
||||
}
|
||||
</style>
|
||||
|
|
|
@ -0,0 +1,3 @@
|
|||
import Vue from "vue";
|
||||
|
||||
export default new Vue;
|
|
@ -280,34 +280,13 @@ div.base-info-item {
|
|||
word-break: break-all;
|
||||
}
|
||||
|
||||
/deep/ .ivu-steps {
|
||||
width: 100% !important;
|
||||
display: flex;
|
||||
}
|
||||
.step-list {
|
||||
height: 60px;
|
||||
padding: 10px 30px;
|
||||
background-color: #fff;
|
||||
margin-bottom: 20px;
|
||||
border-radius: 0.8em;
|
||||
box-shadow: 0 2px 12px 0 rgba(0, 0, 0, 0.1);
|
||||
// box-shadow: 0 2px 4px rgba(0, 0, 0, .12), 0 0 6px rgba(0, 0, 0, .04)
|
||||
}
|
||||
.step-view {
|
||||
flex: 1;
|
||||
height: 60px;
|
||||
font-size: 19px;
|
||||
text-align: center;
|
||||
display: flex;
|
||||
background-color: #fff;
|
||||
justify-content: center;
|
||||
align-items: center;
|
||||
}
|
||||
.step-view:nth-of-type(1) {
|
||||
border-top-left-radius: 0.4em;
|
||||
border-bottom-left-radius: 0.4em;
|
||||
}
|
||||
.step-view:nth-last-child(1) {
|
||||
border-top-right-radius: 0.4em;
|
||||
border-bottom-right-radius: 0.4em;
|
||||
}
|
||||
|
||||
.add-sku-btn {
|
||||
|
|
|
@ -59,8 +59,6 @@
|
|||
:data="data"
|
||||
ref="table"
|
||||
sortable="custom"
|
||||
@on-sort-change="changeSort"
|
||||
@on-selection-change="changeSelect"
|
||||
></Table>
|
||||
<Row type="flex" justify="end" class="page">
|
||||
<Page
|
||||
|
@ -77,29 +75,6 @@
|
|||
></Page>
|
||||
</Row>
|
||||
</Card>
|
||||
<Modal
|
||||
:title="modalTitle"
|
||||
v-model="modalVisible"
|
||||
:mask-closable="false"
|
||||
:width="500"
|
||||
>
|
||||
<Form
|
||||
ref="underForm"
|
||||
:model="underForm"
|
||||
:label-width="100"
|
||||
:rules="formValidate"
|
||||
>
|
||||
<FormItem label="下架原因" prop="reason">
|
||||
<Input v-model="underForm.reason" clearable style="width: 100%" />
|
||||
</FormItem>
|
||||
</Form>
|
||||
<div slot="footer">
|
||||
<Button type="text" @click="modalVisible = false">取消</Button>
|
||||
<Button type="primary" :loading="submitLoading" @click="lower(form.id)"
|
||||
>提交</Button
|
||||
>
|
||||
</div>
|
||||
</Modal>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
|
@ -110,11 +85,7 @@ export default {
|
|||
components: {},
|
||||
data() {
|
||||
return {
|
||||
id: "", //要操作的id
|
||||
openSearch: true, // 显示搜索
|
||||
loading: true, // 表单加载状态
|
||||
modalVisible: false, // 添加或编辑显示
|
||||
modalTitle: "", // 添加或编辑标题
|
||||
drop: false,
|
||||
dropDownContent: "展开",
|
||||
dropDownIcon: "ios-arrow-down",
|
||||
|
@ -124,24 +95,8 @@ export default {
|
|||
pageSize: 10, // 页面大小
|
||||
sort: "create_time", // 默认排序字段
|
||||
order: "desc", // 默认排序方式
|
||||
saveType: "TEMPLATE"
|
||||
},
|
||||
underForm: { // 下架表单
|
||||
reason: "",
|
||||
},
|
||||
form: {
|
||||
// 添加或编辑表单对象初始化数据
|
||||
goodsName: "",
|
||||
sn: "",
|
||||
marketEnable: "",
|
||||
price: "",
|
||||
sellerName: "",
|
||||
},
|
||||
// 表单验证规则
|
||||
|
||||
formValidate: {},
|
||||
submitLoading: false, // 添加或编辑提交状态
|
||||
selectList: [], // 多选数据
|
||||
selectCount: 0, // 多选计数
|
||||
columns: [ // 表头
|
||||
{
|
||||
title: "ID",
|
||||
|
@ -202,7 +157,7 @@ export default {
|
|||
"Button",
|
||||
{
|
||||
props: {
|
||||
type: "primary",
|
||||
type: "success",
|
||||
size: "small",
|
||||
},
|
||||
style: {
|
||||
|
@ -244,22 +199,14 @@ export default {
|
|||
},
|
||||
methods: {
|
||||
init() {
|
||||
let here = this.$route.matched.find((v) => v.name === this.$route.name);
|
||||
this.pageType = here.props.default ? here.props.default.type : "";
|
||||
if (this.pageType === "TEMPLATE") {
|
||||
this.searchForm.saveType = "TEMPLATE";
|
||||
} else {
|
||||
this.searchForm.saveType = "DRAFT";
|
||||
}
|
||||
this.getDataList();
|
||||
},
|
||||
// 编辑模板
|
||||
editGoods(v) {
|
||||
this.searchForm.saveType === "TEMPLATE" ?
|
||||
this.$router.push({ name: "goods-template-operation-edit", query: { draftId: v.id } }):
|
||||
this.$router.push({ name: "goods-draft-operation-edit", query: { draftId: v.id } });
|
||||
this.$router.push({ name: "goods-template-operation-edit", query: { draftId: v.id } })
|
||||
},
|
||||
removeDraft (id) {
|
||||
let showType = this.searchForm.saveType === "TEMPLATE" ? "模版" : "草稿";
|
||||
let showType = "模版";
|
||||
this.$Modal.confirm({
|
||||
title: "确认审核",
|
||||
content: "您确认要删除id为 " + id + " 的" + showType + "吗?",
|
||||
|
@ -278,7 +225,6 @@ export default {
|
|||
changePage(v) {
|
||||
this.searchForm.pageNumber = v;
|
||||
this.getDataList();
|
||||
this.clearSelectAll();
|
||||
},
|
||||
changePageSize(v) {
|
||||
this.searchForm.pageSize = v;
|
||||
|
@ -296,21 +242,6 @@ export default {
|
|||
// 重新加载数据
|
||||
this.getDataList();
|
||||
},
|
||||
changeSort(e) {
|
||||
this.searchForm.sort = e.key;
|
||||
this.searchForm.order = e.order;
|
||||
if (e.order === "normal") {
|
||||
this.searchForm.order = "";
|
||||
}
|
||||
this.getDataList();
|
||||
},
|
||||
clearSelectAll() {
|
||||
this.$refs.table.selectAll(false);
|
||||
},
|
||||
changeSelect(e) {
|
||||
this.selectList = e;
|
||||
this.selectCount = e.length;
|
||||
},
|
||||
dropDown() {
|
||||
if (this.drop) {
|
||||
this.dropDownContent = "展开";
|
||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -0,0 +1,216 @@
|
|||
<template>
|
||||
<div>
|
||||
<!-- 选择商品类型 -->
|
||||
<Modal v-model="selectGoodsType" width="550" :closable="false">
|
||||
<div class="goods-type-list" v-if="!showGoodsTemplates">
|
||||
<div class="goods-type-item" :class="{'active-goods-type':item.check}" @click="handleClickGoodsType(item)"
|
||||
v-for="(item,index) in goodsTypeWay" :key="index">
|
||||
<img :src="item.img"/>
|
||||
<div>
|
||||
<h2>{{ item.title }}</h2>
|
||||
<p>{{ item.desc }}</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div v-else class="goods-type-list">
|
||||
<h2 @click="showGoodsTemplates = !showGoodsTemplates">返回</h2>
|
||||
<div class="goods-type-item template-item" @click="handleClickGoodsTemplate(item)"
|
||||
v-for="(item,tempIndex) in goodsTemplates" :key="tempIndex">
|
||||
<img :src="item.thumbnail" />
|
||||
<div>
|
||||
<h2>{{ item.goodsName }}</h2>
|
||||
<p>{{ item.sellingPoint || '' }}</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</Modal>
|
||||
<!-- 商品分类 -->
|
||||
<div class="content-goods-publish">
|
||||
<div class="goods-category">
|
||||
<ul v-if="categoryListLevel1.length > 0">
|
||||
<li v-for="(item, index) in categoryListLevel1" :class="{ activeClass: category[0].name === item.name }"
|
||||
@click="handleSelectCategory(item, index, 1)" :key="index">
|
||||
<span>{{ item.name }}</span>
|
||||
<span>></span>
|
||||
</li>
|
||||
</ul>
|
||||
<ul v-if="categoryListLevel2.length > 0">
|
||||
<li v-for="(item, index) in categoryListLevel2" :class="{ activeClass: category[1].name === item.name }"
|
||||
@click="handleSelectCategory(item, index, 2)" :key="index">
|
||||
<span>{{ item.name }}</span>
|
||||
<span>></span>
|
||||
</li>
|
||||
</ul>
|
||||
<ul v-if="categoryListLevel3.length > 0">
|
||||
<li v-for="(item, index) in categoryListLevel3" :class="{ activeClass: category[2].name === item.name }"
|
||||
@click="handleSelectCategory(item, index, 3)" :key="index">
|
||||
<span>{{ item.name }}</span>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
<p class="current-goods-category">
|
||||
您当前选择的商品类别是:
|
||||
<span>{{ category[0].name }}</span>
|
||||
<span v-show="category[1].name">> {{ category[1].name }}</span>
|
||||
<span v-show="category[2].name">> {{ category[2].name }}</span>
|
||||
</p>
|
||||
<template v-if="selectedTemplate.goodsName">
|
||||
<Divider>已选商品模版:{{selectedTemplate.goodsName}}</Divider>
|
||||
</template>
|
||||
</div>
|
||||
<!-- 底部按钮 -->
|
||||
<div class="footer">
|
||||
<ButtonGroup>
|
||||
<Button type="primary" @click="selectGoodsType = true">商品类型</Button>
|
||||
<Button type="primary" @click="next">下一步</Button>
|
||||
</ButtonGroup>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
<script>
|
||||
import * as API_GOODS from "@/api/goods";
|
||||
export default {
|
||||
data() {
|
||||
return {
|
||||
selectedTemplate: {}, // 已选模板
|
||||
selectGoodsType: false, // 展示选择商品分类modal
|
||||
goodsTemplates: [], // 商品模板列表
|
||||
showGoodsTemplates: false, //是否显示选择商品模板
|
||||
goodsTypeWay: [
|
||||
{
|
||||
title: "实物商品",
|
||||
img: require("@/assets/goodsType1.png"),
|
||||
desc: "零售批发,物流配送",
|
||||
type: "PHYSICAL_GOODS",
|
||||
check: false,
|
||||
},
|
||||
{
|
||||
title: "虚拟商品",
|
||||
img: require("@/assets/goodsType2.png"),
|
||||
desc: "虚拟核验,无需物流",
|
||||
type: "VIRTUAL_GOODS",
|
||||
check: false,
|
||||
},
|
||||
{
|
||||
title: "商品模板导入",
|
||||
img: require("@/assets/goodsTypeTpl.png"),
|
||||
desc: "商品模板,一键导入",
|
||||
check: false,
|
||||
},
|
||||
],
|
||||
// 商品分类选择数组
|
||||
category: [
|
||||
{name: '', id: ''},
|
||||
{name: '', id: ''},
|
||||
{name: '', id: ''}
|
||||
],
|
||||
// 商品类型
|
||||
goodsType: '',
|
||||
/** 1级分类列表*/
|
||||
categoryListLevel1: [],
|
||||
|
||||
/** 2级分类列表*/
|
||||
categoryListLevel2: [],
|
||||
|
||||
/** 3级分类列表*/
|
||||
categoryListLevel3: [],
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
// 点击商品类型
|
||||
handleClickGoodsType(val) {
|
||||
this.goodsTypeWay.map((item) => {
|
||||
return (item.check = false);
|
||||
});
|
||||
|
||||
val.check = !val.check;
|
||||
if (!val.type) {
|
||||
this.GET_GoodsTemplate()
|
||||
this.showGoodsTemplates = true;
|
||||
} else {
|
||||
this.goodsType = val.type;
|
||||
this.selectedTemplate = {}
|
||||
}
|
||||
},
|
||||
// 点击商品模板
|
||||
handleClickGoodsTemplate(val) {
|
||||
console.log(val);
|
||||
this.selectedTemplate = val;
|
||||
this.selectGoodsType = false;
|
||||
this.$emit('change', {tempId: val.id})
|
||||
},
|
||||
// 获取商品模板
|
||||
GET_GoodsTemplate() {
|
||||
let searchParams = {
|
||||
saveType: "TEMPLATE",
|
||||
sort: "create_time",
|
||||
order: "desc"
|
||||
};
|
||||
API_GOODS.getDraftGoodsListData(searchParams).then((res) => {
|
||||
if (res.success) {
|
||||
this.goodsTemplates = res.result.records;
|
||||
}
|
||||
});
|
||||
},
|
||||
/** 选择商城商品分类 */
|
||||
handleSelectCategory(row, index, level) {
|
||||
if (level === 1) {
|
||||
this.category.forEach(cate => {
|
||||
cate.name = '',
|
||||
cate.id = ''
|
||||
})
|
||||
this.category[0].name = row.name;
|
||||
this.category[0].id = row.id;
|
||||
this.categoryListLevel2 = this.categoryListLevel1[index].children;
|
||||
this.categoryListLevel3 = [];
|
||||
} else if (level === 2) {
|
||||
this.category[1].name = row.name;
|
||||
this.category[1].id = row.id;
|
||||
this.category[2].name = '';
|
||||
this.category[2].id = '';
|
||||
this.categoryListLevel3 = this.categoryListLevel2[index].children;
|
||||
} else {
|
||||
this.category[2].name = row.name
|
||||
this.category[2].id = row.id
|
||||
}
|
||||
},
|
||||
/** 查询下一级 商城商品分类*/
|
||||
GET_NextLevelCategory(row) {
|
||||
const _id = row && row.id !== 0 ? row.id : 0;
|
||||
API_GOODS.getGoodsCategoryAll().then((res) => {
|
||||
if (res.success && res.result) {
|
||||
this.categoryListLevel1 = res.result;
|
||||
}
|
||||
});
|
||||
},
|
||||
// 下一步
|
||||
next() {
|
||||
window.scrollTo(0, 0);
|
||||
if (!this.goodsType && !this.selectedTemplate.goodsName) {
|
||||
this.$Message.error('请选择商品类型')
|
||||
return
|
||||
}
|
||||
if (!this.category[0].name) {
|
||||
this.$Message.error("请选择商品分类");
|
||||
return;
|
||||
} else if (!this.category[2].name) {
|
||||
this.$Message.error("必须选择到三级分类");
|
||||
return;
|
||||
} else if (this.category[2].name) {
|
||||
if (this.selectedTemplate.id) {
|
||||
this.$emit('change',{tempId: this.selectedTemplate.id})
|
||||
} else {
|
||||
this.$emit('change',{category: this.category,goodsType:this.goodsType})
|
||||
}
|
||||
}
|
||||
},
|
||||
},
|
||||
mounted () {
|
||||
this.GET_NextLevelCategory()
|
||||
|
||||
}
|
||||
}
|
||||
</script>
|
||||
<style lang="scss" scoped>
|
||||
@import "./addGoods.scss";
|
||||
</style>
|
File diff suppressed because it is too large
Load Diff
|
@ -0,0 +1,37 @@
|
|||
<template>
|
||||
<div class="content-goods-publish">
|
||||
<div class="success" style="text-align: left">
|
||||
<h1>恭喜您,商品发布成功!</h1>
|
||||
<div class="goToGoodsList" @click="gotoGoodsList">
|
||||
<a>去店铺查看商品列表>></a>
|
||||
</div>
|
||||
<div class="operation">
|
||||
<h3>您还可以:</h3>
|
||||
<div>
|
||||
1、继续
|
||||
<a @click="gotoBack">发布商品</a>
|
||||
</div>
|
||||
<div>
|
||||
2、进入卖家中心,管理
|
||||
<a @click="gotoGoodsList">商品列表</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
<script>
|
||||
export default {
|
||||
methods: {
|
||||
// 跳转商品列表
|
||||
gotoGoodsList() {
|
||||
this.$router.push({name: "goods"});
|
||||
},
|
||||
gotoBack() {
|
||||
this.$router.go();
|
||||
},
|
||||
}
|
||||
}
|
||||
</script>
|
||||
<style lang="scss" scoped>
|
||||
@import "./addGoods.scss";
|
||||
</style>
|
Loading…
Reference in New Issue