fix: 优化积分商品添加页面和对账单详情页面的功能 (master)
- 移除积分商品添加页面的冗余标题 - 将兑换时间选择器替换为活动时间范围选择器 - 简化验证规则,使用rangeTime替代单独的开始和结束时间 - 调整批量删除按钮和其他按钮的样式格式 - 在对账单详情页面添加删除消息提示框功能
This commit is contained in:
parent
a85ec69549
commit
376a3223dc
@ -3,7 +3,6 @@
|
|||||||
<Card>
|
<Card>
|
||||||
<Form ref="form" :model="form" :rules="formRule">
|
<Form ref="form" :model="form" :rules="formRule">
|
||||||
<div class="base-info-item">
|
<div class="base-info-item">
|
||||||
<h4>添加积分商品</h4>
|
|
||||||
<div class="form-item-view">
|
<div class="form-item-view">
|
||||||
<FormItem astyle="width: 100%">
|
<FormItem astyle="width: 100%">
|
||||||
<div style="display: flex; margin-bottom: 10px">
|
<div style="display: flex; margin-bottom: 10px">
|
||||||
@ -13,7 +12,8 @@
|
|||||||
ghost
|
ghost
|
||||||
style="margin-left: 10px"
|
style="margin-left: 10px"
|
||||||
@click="delSelectGoods"
|
@click="delSelectGoods"
|
||||||
>批量删除</Button
|
>批量删除
|
||||||
|
</Button
|
||||||
>
|
>
|
||||||
</div>
|
</div>
|
||||||
<Table
|
<Table
|
||||||
@ -50,7 +50,8 @@
|
|||||||
v-for="item in categoryList"
|
v-for="item in categoryList"
|
||||||
:value="item.id"
|
:value="item.id"
|
||||||
:key="item.id"
|
:key="item.id"
|
||||||
>{{ item.name }}</Option
|
>{{ item.name }}
|
||||||
|
</Option
|
||||||
>
|
>
|
||||||
</Select>
|
</Select>
|
||||||
</template>
|
</template>
|
||||||
@ -71,33 +72,16 @@
|
|||||||
</Table>
|
</Table>
|
||||||
</FormItem>
|
</FormItem>
|
||||||
|
|
||||||
<FormItem label="兑换时间" prop="time">
|
<FormItem label="活动时间" prop="rangeTime">
|
||||||
<DatePicker
|
<DatePicker type="datetimerange" v-model="form.rangeTime" format="yyyy-MM-dd HH:mm:ss"
|
||||||
type="datetime"
|
placeholder="请选择" :options="options" style="width: 260px">
|
||||||
v-model="form.startTime"
|
|
||||||
format="yyyy-MM-dd HH:mm:ss"
|
|
||||||
placeholder="请选择"
|
|
||||||
:options="options"
|
|
||||||
clearable
|
|
||||||
style="width: 200px"
|
|
||||||
>
|
|
||||||
</DatePicker>
|
|
||||||
-
|
|
||||||
<DatePicker
|
|
||||||
type="datetime"
|
|
||||||
v-model="form.endTime"
|
|
||||||
format="yyyy-MM-dd HH:mm:ss"
|
|
||||||
:options="options"
|
|
||||||
placeholder="请选择"
|
|
||||||
clearable
|
|
||||||
style="width: 200px"
|
|
||||||
>
|
|
||||||
</DatePicker>
|
</DatePicker>
|
||||||
</FormItem>
|
</FormItem>
|
||||||
<div>
|
<div>
|
||||||
<Button type="text" @click="closeCurrentPage">返回</Button>
|
<Button type="text" @click="closeCurrentPage">返回</Button>
|
||||||
<Button type="primary" :loading="submitLoading" @click="handleSubmit"
|
<Button type="primary" :loading="submitLoading" @click="handleSubmit"
|
||||||
>提交</Button
|
>提交
|
||||||
|
</Button
|
||||||
>
|
>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@ -109,31 +93,19 @@
|
|||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
import { addPointsGoods, getPointsGoodsCategoryList } from "@/api/promotion";
|
import {addPointsGoods, getPointsGoodsCategoryList} from "@/api/promotion";
|
||||||
import { regular } from "@/utils";
|
import {regular} from "@/utils";
|
||||||
import skuSelect from "@/components/lili-dialog";
|
import skuSelect from "@/components/lili-dialog";
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
name: "addPoinsGoods",
|
name: "addPoinsGoods",
|
||||||
components: {
|
components: {
|
||||||
skuSelect,
|
skuSelect,
|
||||||
},
|
},
|
||||||
data() {
|
data() {
|
||||||
const isLtEndDate = (rule, value, callback) => {
|
|
||||||
if (new Date(value).getTime() > new Date(this.form.endTime).getTime()) {
|
|
||||||
callback(new Error());
|
|
||||||
} else {
|
|
||||||
callback();
|
|
||||||
}
|
|
||||||
};
|
|
||||||
const isGtStartDate = (rule, value, callback) => {
|
|
||||||
if (new Date(value).getTime() < new Date(this.form.startTime).getTime()) {
|
|
||||||
callback(new Error());
|
|
||||||
} else {
|
|
||||||
callback();
|
|
||||||
}
|
|
||||||
};
|
|
||||||
return {
|
return {
|
||||||
form: {
|
form: {
|
||||||
|
rangeTime: ["",""],
|
||||||
promotionGoodsList: [], // 活动商品列表
|
promotionGoodsList: [], // 活动商品列表
|
||||||
},
|
},
|
||||||
showTable: true,
|
showTable: true,
|
||||||
@ -142,50 +114,7 @@ export default {
|
|||||||
submitLoading: false, // 添加或编辑提交状态
|
submitLoading: false, // 添加或编辑提交状态
|
||||||
selectedGoods: [], // 已选商品列表,便于删除
|
selectedGoods: [], // 已选商品列表,便于删除
|
||||||
formRule: {
|
formRule: {
|
||||||
startTime: [
|
rangeTime: [{required: true, message: "请选择活动时间"}],
|
||||||
{
|
|
||||||
required: true,
|
|
||||||
type: "date",
|
|
||||||
message: "请选择开始时间",
|
|
||||||
},
|
|
||||||
{
|
|
||||||
trigger: "change",
|
|
||||||
message: "开始时间要小于结束时间",
|
|
||||||
validator: isLtEndDate,
|
|
||||||
},
|
|
||||||
],
|
|
||||||
endTime: [
|
|
||||||
{
|
|
||||||
required: true,
|
|
||||||
type: "date",
|
|
||||||
message: "请选择结束时间",
|
|
||||||
},
|
|
||||||
{
|
|
||||||
trigger: "change",
|
|
||||||
message: "结束时间要大于开始时间",
|
|
||||||
validator: isGtStartDate,
|
|
||||||
},
|
|
||||||
],
|
|
||||||
discount: [
|
|
||||||
{ required: true, message: "请输入折扣" },
|
|
||||||
{
|
|
||||||
pattern: regular.discount,
|
|
||||||
message: "请输入0-10的数字,可有一位小数",
|
|
||||||
},
|
|
||||||
],
|
|
||||||
sellerCommission: [
|
|
||||||
{ required: true, message: "请输入店铺承担比例" },
|
|
||||||
{ pattern: regular.rate, message: "请输入0-100的正整数" },
|
|
||||||
],
|
|
||||||
publishNum: [
|
|
||||||
{ required: true, message: "请输入发放数量" },
|
|
||||||
{ pattern: regular.Integer, message: "请输入正整数" },
|
|
||||||
],
|
|
||||||
couponLimitNum: [
|
|
||||||
{ required: true, message: "请输入领取限制" },
|
|
||||||
{ pattern: regular.Integer, message: "请输入正整数" },
|
|
||||||
],
|
|
||||||
description: [{ required: true, message: "请输入范围描述" }],
|
|
||||||
},
|
},
|
||||||
columns: [
|
columns: [
|
||||||
{
|
{
|
||||||
@ -219,7 +148,7 @@ export default {
|
|||||||
key: "price",
|
key: "price",
|
||||||
minWidth: 40,
|
minWidth: 40,
|
||||||
render: (h, params) => {
|
render: (h, params) => {
|
||||||
return h("priceColorScheme", {props:{value:params.row.price,color:this.$mainColor}} );
|
return h("priceColorScheme", {props: {value: params.row.price, color: this.$mainColor}});
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@ -293,14 +222,16 @@ export default {
|
|||||||
},
|
},
|
||||||
/** 保存积分商品 */
|
/** 保存积分商品 */
|
||||||
handleSubmit() {
|
handleSubmit() {
|
||||||
|
this.form.startTime=this.form.rangeTime[0]
|
||||||
|
this.form.endTime=this.form.rangeTime[1]
|
||||||
this.$refs.form.validate((valid) => {
|
this.$refs.form.validate((valid) => {
|
||||||
if (valid) {
|
if (valid) {
|
||||||
let params = this.promotionGoodsList;
|
let params = this.promotionGoodsList;
|
||||||
const start = this.$options.filters.unixToDate(this.form.startTime / 1000);
|
const start = this.$options.filters.unixToDate(this.form.startTime / 1000);
|
||||||
const end = this.$options.filters.unixToDate(this.form.endTime / 1000);
|
const end = this.$options.filters.unixToDate(this.form.endTime / 1000);
|
||||||
|
|
||||||
if (!params || params.length == 0) {
|
if (!params || params.length === 0) {
|
||||||
this.$Modal.warning({ title: "提示", content: "请选择指定商品" });
|
this.$Modal.warning({title: "提示", content: "请选择指定商品"});
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -373,7 +304,7 @@ export default {
|
|||||||
let list = [];
|
let list = [];
|
||||||
item.forEach((e) => {
|
item.forEach((e) => {
|
||||||
const obj = {
|
const obj = {
|
||||||
settlementPrice: e.settlementPrice || 0,
|
settlementPrice: e.settlementPrice || e.price,
|
||||||
pointsGoodsCategoryId: e.pointsGoodsCategoryId || 0,
|
pointsGoodsCategoryId: e.pointsGoodsCategoryId || 0,
|
||||||
pointsGoodsCategoryName: e.pointsGoodsCategoryName || "",
|
pointsGoodsCategoryName: e.pointsGoodsCategoryName || "",
|
||||||
activeStock: e.activeStock || 1,
|
activeStock: e.activeStock || 1,
|
||||||
@ -407,11 +338,13 @@ h4 {
|
|||||||
line-height: 40px;
|
line-height: 40px;
|
||||||
text-align: left;
|
text-align: left;
|
||||||
}
|
}
|
||||||
|
|
||||||
.describe {
|
.describe {
|
||||||
font-size: 12px;
|
font-size: 12px;
|
||||||
margin-left: 10px;
|
margin-left: 10px;
|
||||||
color: #999;
|
color: #999;
|
||||||
}
|
}
|
||||||
|
|
||||||
.wrapper {
|
.wrapper {
|
||||||
min-height: 800px;
|
min-height: 800px;
|
||||||
}
|
}
|
||||||
|
@ -508,6 +508,7 @@ export default {
|
|||||||
loading: true,
|
loading: true,
|
||||||
onOk: () => {
|
onOk: () => {
|
||||||
API_Shop.pay(this.id).then((res) => {
|
API_Shop.pay(this.id).then((res) => {
|
||||||
|
this.$Modal.remove();
|
||||||
if (res.success) {
|
if (res.success) {
|
||||||
this.$Message.success(res.message);
|
this.$Message.success(res.message);
|
||||||
this.init();
|
this.init();
|
||||||
|
Loading…
x
Reference in New Issue
Block a user