Compare commits

..

No commits in common. "e2451fb08720ee67cde684617191e98c1c1f30f0" and "e70e0e9c0bcf1fdaea27376b23a48f9f73374f09" have entirely different histories.

4 changed files with 114 additions and 356 deletions

View File

@ -1,7 +1,7 @@
import $http from "@/utils/httpRequest.js"; import $http from "@/utils/httpRequest.js";
export const preSale = { export const preSale = {
//预售商品列表 //优惠券列表
preSaleProducts: (data) => { preSaleProducts: (data) => {
return $http.request({ return $http.request({
url: `/merchant-api/product/advance/sell/page`, url: `/merchant-api/product/advance/sell/page`,
@ -9,11 +9,4 @@ export const preSale = {
data, data,
}); });
}, },
addPreSaleProducts: (data) => {
return $http.request({
url: `/merchant-api/product/batch/save/advance/sell`,
method: "post",
data,
});
},
}; };

View File

@ -99,8 +99,6 @@
</obj-table-plus> </obj-table-plus>
<!-- 添加或编辑 --> <!-- 添加或编辑 -->
<add-or-update <add-or-update
:marketId="formInline.marketId"
:shopId="formInline.shopId"
@queryList="$refs.oTable.reload()" @queryList="$refs.oTable.reload()"
ref="addOrUpdate" ref="addOrUpdate"
></add-or-update> ></add-or-update>
@ -130,7 +128,6 @@ export default {
data() { data() {
return { return {
activeName: "5", activeName: "5",
advanceSellStatus: "",
dataList: [], dataList: [],
formInline: { formInline: {
name: "", name: "",
@ -238,7 +235,7 @@ export default {
pageNumber: pageNo, pageNumber: pageNo,
pageSize: pageSize, pageSize: pageSize,
...this.formInline, ...this.formInline,
advanceSellStatus: this.advanceSellStatus, advanceSellStatus: this.activeName,
merchantId: JSON.parse(sessionStorage.getItem("userInfo")).merchantId, merchantId: JSON.parse(sessionStorage.getItem("userInfo")).merchantId,
productQuerySortParam: [], productQuerySortParam: [],
}) })
@ -262,12 +259,6 @@ export default {
this.$refs.oTable.reload(); this.$refs.oTable.reload();
}, },
handleClick(e) { handleClick(e) {
console.log(e.name);
if (e.name == "5") {
this.advanceSellStatus = "";
} else {
this.advanceSellStatus = e.name;
}
this.$refs.oTable.reload(); this.$refs.oTable.reload();
}, },
addEarlyWarning() { addEarlyWarning() {
@ -282,7 +273,7 @@ export default {
{ {
title: "商品ID", title: "商品ID",
align: "center", align: "center",
field: "id", field: "name",
}, },
{ {
title: "商品图", title: "商品图",
@ -308,15 +299,7 @@ export default {
{ {
title: "定金支付时间", title: "定金支付时间",
align: "center", align: "center",
field: "startTime", field: "name",
type: "jsx",
render: ({ row }) => {
return (
<span>
{row.startTime}{row.endTime}
</span>
);
},
}, },
{ {
title: "尾款支付时间", title: "尾款支付时间",
@ -324,11 +307,15 @@ export default {
field: "minSalePrice", field: "minSalePrice",
type: "jsx", type: "jsx",
render: ({ row }) => { render: ({ row }) => {
if (row.minSalePrice == row.maxSalePrice) {
return <span>{row.minSalePrice}</span>;
} else {
return ( return (
<span> <span>
{row.balancePaymentStartTime}{row.balancePaymentEndTime} {row.minSalePrice}~{row.maxSalePrice}
</span> </span>
); );
}
}, },
}, },
{ {
@ -345,96 +332,12 @@ export default {
{ {
title: "定金", title: "定金",
align: "center", align: "center",
field: "earnestMoney", field: "saleNum",
type: "jsx",
render: ({ row }) => {
if (
Math.min.apply(
Math,
row.productSpecificationList.map((item) => item.earnestMoney)
) ==
Math.max.apply(
Math,
row.productSpecificationList.map((item) => item.earnestMoney)
)
) {
return (
<span>
{Math.min.apply(
Math,
row.productSpecificationList.map(
(item) => item.earnestMoney
)
)}
</span>
);
} else {
return (
<span>
{Math.min.apply(
Math,
row.productSpecificationList.map(
(item) => item.earnestMoney
)
)}
{Math.max.apply(
Math,
row.productSpecificationList.map(
(item) => item.earnestMoney
)
)}
</span>
);
}
},
}, },
{ {
title: "尾款", title: "尾款",
align: "center", align: "center",
field: "balancePayment", field: "stockNum",
type: "jsx",
render: ({ row }) => {
if (
Math.min.apply(
Math,
row.productSpecificationList.map((item) => item.balancePayment)
) ==
Math.max.apply(
Math,
row.productSpecificationList.map((item) => item.balancePayment)
)
) {
return (
<span>
{Math.min.apply(
Math,
row.productSpecificationList.map(
(item) => item.balancePayment
)
)}
</span>
);
} else {
return (
<span>
{Math.min.apply(
Math,
row.productSpecificationList.map(
(item) => item.balancePayment
)
)}
{Math.max.apply(
Math,
row.productSpecificationList.map(
(item) => item.balancePayment
)
)}
</span>
);
}
},
}, },
{ {
title: "状态", title: "状态",
@ -442,14 +345,10 @@ export default {
field: "status", field: "status",
type: "jsx", type: "jsx",
render: ({ row }) => { render: ({ row }) => {
if (row.advanceSellStatus == "0") { if (row.status == "DOWN") {
return <span>未开始</span>; return <span>未开始</span>;
} else if (row.advanceSellStatus == "1") { } else {
return <span>进行中</span>; return <span>上架</span>;
} else if (row.advanceSellStatus == "2") {
return <span>已结束</span>;
} else if (row.advanceSellStatus == "3") {
return <span>已关闭</span>;
} }
}, },
}, },
@ -462,6 +361,7 @@ export default {
render: ({ row }) => { render: ({ row }) => {
let edit = () => { let edit = () => {
console.log(row); console.log(row);
this.$refs.addOrUpdate.toggle(row).update(); this.$refs.addOrUpdate.toggle(row).update();
}; };
let priceAdjustment = () => { let priceAdjustment = () => {
@ -484,7 +384,12 @@ export default {
> >
查看 查看
</el-button> </el-button>
<el-button size="mini" type="primary" onClick={edit}> <el-button
size="mini"
disabled={row.status != "DOWN"}
type="primary"
onClick={edit}
>
编辑 编辑
</el-button> </el-button>

View File

@ -17,66 +17,42 @@
> >
<el-row> <el-row>
<el-col :span="12"> <el-col :span="12">
<el-form-item label="订金支付时间:" prop="startTime"> <el-form-item label="订金支付时间:" prop="name">
<el-date-picker <el-date-picker
@change="getOrderTime" @change="getOrderTime"
format="yyyy-MM-dd HH:mm:ss"
data-format="yyyy-MM-dd HH:mm:ss"
value-format="yyyy-MM-dd HH:mm:ss"
v-model="orderTime" v-model="orderTime"
type="datetimerange" type="datetimerange"
range-separator="至" range-separator="至"
start-placeholder="开始日期" start-placeholder="开始日期"
end-placeholder="结束日期" end-placeholder="结束日期"
:editable="false"
> >
</el-date-picker> </el-form-item </el-date-picker> </el-form-item
></el-col> ></el-col>
<el-col :span="12"> <el-col :span="12">
<el-form-item <el-form-item label="尾款支付时间:" prop="name">
label="尾款支付时间:"
prop="balancePaymentStartTime"
>
<el-date-picker <el-date-picker
@change="getArrearsTime"
format="yyyy-MM-dd"
data-format="yyyy-MM-dd"
value-format="yyyy-MM-dd HH:mm:ss"
v-model="arrears" v-model="arrears"
type="datetimerange" type="datetimerange"
range-separator="至" range-separator="至"
start-placeholder="开始日期" start-placeholder="开始日期"
end-placeholder="结束日期" end-placeholder="结束日期"
:picker-options="pickerOptions"
> >
</el-date-picker> </el-form-item </el-date-picker> </el-form-item
></el-col> ></el-col>
</el-row> </el-row>
<el-form-item <el-form-item label="预计发货时间:" prop="name">
label="预计发货时间:"
prop="estimatedStartDeliveryTime"
>
<el-date-picker <el-date-picker
format="yyyy-MM-dd HH:mm"
data-format="yyyy-MM-dd HH:mm"
value-format="yyyy-MM-dd HH:mm:ss"
@change="deliveryTime"
v-model="delivery" v-model="delivery"
type="datetimerange" type="datetimerange"
range-separator="至" range-separator="至"
start-placeholder="开始日期" start-placeholder="开始日期"
end-placeholder="结束日期" end-placeholder="结束日期"
:picker-options="pickerOptions"
> >
</el-date-picker> </el-date-picker>
</el-form-item> </el-form-item>
<el-form-item label="定金可退:" prop="name"> <el-form-item label="定金可退:" prop="name">
<el-radio v-model="ruleForm.isRefundEarnestMoney" :label="1" <el-radio v-model="ruleForm.radio" label="1"></el-radio>
></el-radio <el-radio v-model="ruleForm.radio" label="2"></el-radio>
>
<el-radio v-model="ruleForm.isRefundEarnestMoney" :label="2"
></el-radio
>
<span> <span>
选择是用户可在付尾款前申请退定金申请后自动退无需审核或付尾款时间结束后系统自动退定金 选择是用户可在付尾款前申请退定金申请后自动退无需审核或付尾款时间结束后系统自动退定金
</span> </span>
@ -92,69 +68,43 @@
已选择商品 已选择商品
</div> </div>
<div style="padding: 20px"> <div style="padding: 20px">
<div <div style="border-top: 1px solid #ccc; padding: 10px 0 0 0">
v-for="item in ruleForm.productList"
:key="item.id"
style="border-top: 1px solid #ccc; padding: 10px 0 0 0"
>
<div style="font-size: 16px; margin-bottom: 20px"> <div style="font-size: 16px; margin-bottom: 20px">
<span>商品ID:{{ item.productId }}</span> <span>商品ID:</span>
<span style="margin-left: 20px">商品名称:{{ item.name }}</span> <span style="margin-left: 20px">商品名称:</span>
</div> </div>
<el-table <el-table
border border
ref="multipleTable" ref="multipleTable"
:data="item.productSpecificationList" :data="tableData"
tooltip-effect="dark" tooltip-effect="dark"
style="width: 100%" style="width: 100%"
@selection-change="handleSelectionChange" @selection-change="handleSelectionChange"
> >
<el-table-column align="center" label="是否预售" width="80"> <el-table-column align="center" label="是否预售" width="80">
<template slot-scope="scope"> <template slot-scope="scope">
<el-checkbox <el-checkbox v-model="scope.row.isShow"></el-checkbox>
:true-label="1"
:false-label="0"
v-model="scope.row.isAdvanceSell"
></el-checkbox>
</template>
</el-table-column>
<el-table-column align="center" label="SKU-ID" prop="id" />
<el-table-column align="center" label="规格" prop="attributeList">
<template slot-scope="scope">
<span>{{ scope.row.attributeValue }}</span>
</template>
</el-table-column>
<el-table-column align="center" label="属性" prop="address">
<template slot-scope="scope">
<span>{{
scope.row.attributeList
? scope.row.attributeList[0].attributeName
: "无"
}}</span>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column align="center" label="SKU-ID" prop="date" />
<el-table-column align="center" label="规格" prop="name" />
<el-table-column align="center" label="属性" prop="address" />
<el-table-column <el-table-column
align="center" align="center"
label="销售价" label="销售价"
prop="marketPrice" prop="address"
width="120" width="120"
/> />
<el-table-column align="center" label="*是否预售" width="200"> <el-table-column align="center" label="*是否预售" width="200">
<template slot="header"> <template slot="header">
<span style="color: red">*预售</span> <span style="color: red">*是否预售</span>
</template> </template>
<template slot-scope="scope"> <template slot-scope="scope">
<el-input-number <el-input
@change=" v-if="scope.row.isShow"
scope.row.balancePayment =
scope.row.presalePrice - scope.row.earnestMoney
"
v-if="scope.row.isAdvanceSell"
v-model="scope.row.presalePrice" v-model="scope.row.presalePrice"
:min="0" placeholder="请输入销售价"
:max="scope.row.marketPrice" ></el-input>
label="请输入销售价"
></el-input-number>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column align="center" label="*定金" width="200"> <el-table-column align="center" label="*定金" width="200">
@ -162,25 +112,17 @@
<span style="color: red">*定金</span> <span style="color: red">*定金</span>
</template> </template>
<template slot-scope="scope"> <template slot-scope="scope">
<el-input-number <el-input
@change=" v-if="scope.row.isShow"
scope.row.balancePayment = v-model="scope.row.presalePrice"
scope.row.presalePrice - scope.row.earnestMoney placeholder="请输入订金"
" ></el-input>
v-if="scope.row.isAdvanceSell"
v-model="scope.row.earnestMoney"
:min="0"
:max="scope.row.presalePrice"
label="请输入订金"
></el-input-number>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column align="center" label="尾款" width="200"> <el-table-column align="center" label="尾款" width="200">
<template slot-scope="scope"> <template slot-scope="scope">
<span v-if="scope.row.isAdvanceSell">{{ <span v-if="scope.row.isShow">{{
scope.row.presalePrice scope.row.presalePrice
? scope.row.presalePrice - scope.row.earnestMoney
: ""
}}</span> }}</span>
</template> </template>
</el-table-column> </el-table-column>
@ -189,45 +131,24 @@
<span style="color: red">*预售库存</span> <span style="color: red">*预售库存</span>
</template> </template>
<template slot-scope="scope"> <template slot-scope="scope">
<el-input-number <el-input
v-if="scope.row.isAdvanceSell" v-if="scope.row.isShow"
v-model="scope.row.advanceSellStockNum" v-model="scope.row.presalePrice"
:min="0" placeholder="请输入预售库存"
:max="999999" ></el-input>
:step="10"
:precision="0"
label="请输入预售库存"
></el-input-number>
</template> </template>
</el-table-column> </el-table-column>
</el-table> </el-table>
</div> </div>
<el-empty
v-show="ruleForm.productList.length == 0"
description="请选择商品"
></el-empty>
</div> </div>
</div> </div>
<!-- 选择商品 -->
</obj-modal> </obj-modal>
<commodity @getProduct="getProduct" ref="commodity"></commodity>
</div> </div>
</template> </template>
<script> <script>
import commodity from "./commodity.vue";
import { debounce, cloneDeep } from "lodash"; import { debounce, cloneDeep } from "lodash";
export default { export default {
components: { commodity }, components: {},
props: {
marketId: {
type: String,
default: "",
},
shopId: {
type: String,
default: "",
},
},
data() { data() {
return { return {
isAdd: true, isAdd: true,
@ -240,13 +161,9 @@ export default {
}, },
modalData: {}, modalData: {},
ruleForm: { ruleForm: {
productList: [], name: "",
isRefundEarnestMoney: 1, //退 1 2 value: "1",
}, radio: "1",
pickerOptions: {
disabledDate(time) {
return time.getTime() < Date.now();
},
}, },
orderTime: [], // orderTime: [], //
arrears: [], // arrears: [], //
@ -295,17 +212,10 @@ export default {
this.modalConfig.show = false; this.modalConfig.show = false;
} }
if (e) { if (e) {
this.init(cloneDeep(e)); this.init(cloneDeep(e.row));
} }
return { return {
add: () => { add: (data) => {
this.orderTime = [];
this.arrears = [];
this.delivery = [];
this.ruleForm = {
productList: [],
isRefundEarnestMoney: 1, //退 1 2
};
this.modalConfig.title = "新增预售"; this.modalConfig.title = "新增预售";
this.isAdd = true; this.isAdd = true;
}, },
@ -316,78 +226,24 @@ export default {
}; };
}, },
init(row) { init(row) {
console.log(row.startTime, row.endTime); this.modalData = row;
this.orderTime = [row.startTime, row.endTime];
this.arrears = [row.balancePaymentStartTime, row.balancePaymentEndTime];
this.delivery = [];
this.ruleForm.productList = [
{
productId: row.id,
name: row.name,
productSpecificationList: row.productSpecificationList,
},
];
console.log(this.orderTime, this.arrears, this.delivery);
// this.ruleForm = row;
}, },
// //
getOrderTime(e) { getOrderTime(e) {
if (e) { if (e) {
console.log(e); ruleForm.startTime = e[0];
this.ruleForm.startTime = e[0]; ruleForm.endTime = e[1];
this.ruleForm.endTime = e[1];
} else { } else {
this.ruleForm.startTime = ""; ruleForm.startTime = "";
this.ruleForm.endTime = ""; ruleForm.endTime = "";
}
},
//
getArrearsTime(e) {
if (e) {
console.log(e);
this.ruleForm.balancePaymentStartTime = e[0];
this.ruleForm.balancePaymentEndTime = e[1];
} else {
this.ruleForm.balancePaymentStartTime = "";
this.ruleForm.balancePaymentEndTime = "";
}
},
//
deliveryTime(e) {
if (e) {
console.log(e);
this.ruleForm.estimatedStartDeliveryTime = e[0];
this.ruleForm.estimatedEndDeliveryTime = e[1];
} else {
this.ruleForm.estimatedStartDeliveryTime = "";
this.ruleForm.estimatedEndDeliveryTime = "";
} }
}, },
selectProduct() { selectProduct() {
console.log("选择商品", this.marketId, this.shopId); console.log("选择商品");
this.$nextTick(() => {
this.$refs.commodity.toggle().add({
marketId: this.marketId,
shopId: this.shopId,
});
});
}, },
handleSelectionChange(e) { handleSelectionChange(e) {
console.log(e); console.log(e);
}, },
getProduct(row) {
this.ruleForm.productList = row.map((item) => {
return {
productId: item.id,
name: item.name,
productSpecificationList: item.productSpecificationList,
};
});
console.log(this.ruleForm.productList, this.ruleForm.productList.length);
console.log("获取商品");
},
}, },
computed: { computed: {
modalHandles() { modalHandles() {
@ -403,17 +259,12 @@ export default {
type: "primary", type: "primary",
// submit: true, // submit: true,
handle: () => { handle: () => {
this.$api.preSale.addPreSaleProducts(this.ruleForm).then((res) => { this.$refs.ruleForm.validate((valid) => {
console.log("确认", res); if (valid) {
// this.toggle(); this.$emit("getAttribute", this.ruleForm);
this.toggle();
}
}); });
// console.log("", this.ruleForm);
// this.$refs.ruleForm.validate((valid) => {
// if (valid) {
// this.$emit("getAttribute", this.ruleForm);
// this.toggle();
// }
// });
}, },
}, },
]; ];

View File

@ -17,13 +17,31 @@
:tableEvent="tableEvent" :tableEvent="tableEvent"
:enableAutoQuery="false" :enableAutoQuery="false"
> >
<template slot="tableTop"> <!-- <template slot="tableTop">
<el-form :inline="true" :model="formInline" class="demo-form-inline"> <el-form :inline="true" :model="formInline" class="demo-form-inline">
<el-form-item label="商品搜索"> <el-form-item v-if="marketList.length > 0" label="菜市场">
<el-input <el-select
v-model="formList.name" @change="getData"
placeholder="商品搜索" v-model="formInline.marketId"
></el-input> placeholder="请选择菜市场"
>
<el-option
v-for="item in marketList"
:key="item.marketId"
:label="item.marketName"
:value="item.marketId"
></el-option>
</el-select>
</el-form-item>
<el-form-item v-if="marketList.length > 0" label="店铺">
<el-select v-model="formInline.shopId" placeholder="请选择店铺">
<el-option
v-for="item in storeList"
:key="item.shopId"
:label="item.shopName"
:value="item.shopId"
></el-option>
</el-select>
</el-form-item> </el-form-item>
<el-form-item> <el-form-item>
<el-button type="primary" @click="$refs.oTable.reload()" <el-button type="primary" @click="$refs.oTable.reload()"
@ -31,7 +49,7 @@
> >
</el-form-item> </el-form-item>
</el-form> </el-form>
</template> </template> -->
</obj-table-plus> </obj-table-plus>
</template> </template>
</obj-modal> </obj-modal>
@ -45,7 +63,7 @@ export default {
isAdd: true, isAdd: true,
// //
modalConfig: { modalConfig: {
title: "请点击选择商品 (提示最多选择5个商品)", title: "请点击选择商品",
show: false, show: false,
width: "1000px", width: "1000px",
}, },
@ -58,11 +76,14 @@ export default {
"row-id": "id", "row-id": "id",
"show-overflow": false, "show-overflow": false,
}, },
selectList: [], selectList: {},
formInline: {}, tableEvent: {
formList: { "current-change": async (e) => {
name: "", console.log(e.row);
this.selectList = e.row;
}, },
},
formInline: {},
}; };
}, },
methods: { methods: {
@ -100,7 +121,6 @@ export default {
} }
return { return {
add: (row) => { add: (row) => {
console.log(row);
this.formInline = row; this.formInline = row;
this.isAdd = true; this.isAdd = true;
this.$nextTick(() => { this.$nextTick(() => {
@ -117,7 +137,7 @@ export default {
computed: { computed: {
tableCols() { tableCols() {
return [ return [
{ type: "checkbox", width: "60px", fixed: "left" }, { type: "seq", width: "60px", align: "center", title: "序号" },
{ {
title: "商品图", title: "商品图",
field: "productPhotoList", field: "productPhotoList",
@ -202,17 +222,6 @@ export default {
}, },
]; ];
}, },
tableEvent() {
return {
"checkbox-all": ({ records, reserves }) => {
this.selectList = [...records, ...reserves];
},
"checkbox-change": ({ records, reserves }) => {
console.log(this.selectList, "2");
this.selectList = [...records, ...reserves];
},
};
},
}, },
}; };
</script> </script>