This commit is contained in:
chc
2025-03-11 19:09:39 +08:00
8 changed files with 57 additions and 127 deletions

View File

@@ -42,10 +42,11 @@
:max="9.9" :max="9.9"
:min="0.1" :min="0.1"
:step="0.1" :step="0.1"
precision="1"
v-model="form.couponDiscount" v-model="form.couponDiscount"
style="width: 260px"> style="width: 260px">
</InputNumber> </InputNumber>
<span class="describe">请输入0-10之间数字以输入一位小数</span> <span class="describe">请输入0-10数字,一位小数</span>
</FormItem> </FormItem>
<FormItem label="面额" prop="price" v-if="form.couponType == 'PRICE'"> <FormItem label="面额" prop="price" v-if="form.couponType == 'PRICE'">
<Input <Input

View File

@@ -81,14 +81,14 @@
label="优惠折扣" label="优惠折扣"
prop="fullRate" prop="fullRate"
> >
<Input <InputNumber
type="text"
v-model="form.fullRate"
placeholder="优惠折扣" placeholder="优惠折扣"
disabled :max="9.9"
clearable :min="0.1"
style="width: 260px" :step="0.1"
/> precision="1"
v-model="form.fullRate"
style="width: 260px"/>
<span class="describe">优惠折扣为0-10之间数字可有一位小数</span> <span class="describe">优惠折扣为0-10之间数字可有一位小数</span>
</FormItem> </FormItem>
<FormItem label="额外赠送"> <FormItem label="额外赠送">

View File

@@ -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;
} }

View File

@@ -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();

View File

@@ -24,11 +24,6 @@
<Icon v-show="currentMessageType == 'read'" type="md-checkmark"></Icon> <Icon v-show="currentMessageType == 'read'" type="md-checkmark"></Icon>
</transition> </transition>
<span class="mes-type-btn-text">已读消息</span> <span class="mes-type-btn-text">已读消息</span>
<Badge
class="message-count-badge-outer"
class-name="message-count-badge"
:count="hasReadCount"
></Badge>
</div> </div>
</Button> </Button>
</div> </div>
@@ -39,11 +34,6 @@
<Icon v-show="currentMessageType == 'recycleBin'" type="md-checkmark"></Icon> <Icon v-show="currentMessageType == 'recycleBin'" type="md-checkmark"></Icon>
</transition> </transition>
<span class="mes-type-btn-text">回收站</span> <span class="mes-type-btn-text">回收站</span>
<Badge
class="message-count-badge-outer"
class-name="message-count-badge"
:count="recycleBinCount"
></Badge>
</div> </div>
</Button> </Button>
</div> </div>
@@ -98,7 +88,6 @@
</template> </template>
<script> <script>
import Cookies from "js-cookie";
import * as API_Index from "@/api/index"; import * as API_Index from "@/api/index";
export default { export default {
@@ -120,8 +109,6 @@
API_Index.read(v.id).then(res => { API_Index.read(v.id).then(res => {
this.loading = false; this.loading = false;
if (res.success) { if (res.success) {
this.$Message.success("操作成功");
this.currentMessageType = "unread"
this.getAll(); this.getAll();
} }
}); });
@@ -148,9 +135,7 @@
API_Index.deleteMessage(v.id).then(res => { API_Index.deleteMessage(v.id).then(res => {
this.loading = false; this.loading = false;
if (res.success) { if (res.success) {
this.$Message.success("删除成功"); this.refreshMessage()
this.currentMessageType = "read"
this.getAll();
} }
}); });
} }
@@ -177,9 +162,7 @@
API_Index.reductionMessage(v.id).then(res => { API_Index.reductionMessage(v.id).then(res => {
this.loading = false; this.loading = false;
if (res.success) { if (res.success) {
this.setCurrentMesType("read"); this.refreshMessage()
this.recycleBinCount -= 1
this.hasReadCount +=1
} }
}); });
} }
@@ -205,9 +188,7 @@
API_Index.clearMessage(v.id).then(res => { API_Index.clearMessage(v.id).then(res => {
this.loading = false; this.loading = false;
if (res.success) { if (res.success) {
this.$Message.success("删除成功"); this.refreshMessage()
this.currentMessageType = "recycleBin"
this.getAll();
} }
}); });
} }
@@ -390,6 +371,13 @@
}, },
getContent(v) { getContent(v) {
this.mes.content = v.content; this.mes.content = v.content;
API_Index.read(v.id).then(res => {
this.loading = false;
if (res.success) {
this.getAll()();
}
});
} }
}, },
mounted() { mounted() {

View File

@@ -38,10 +38,10 @@
:max="9.9" :max="9.9"
:min="0.1" :min="0.1"
:step="0.1" :step="0.1"
precision="1"
v-model="form.couponDiscount" v-model="form.couponDiscount"
style="width: 260px"> style="width: 260px"/>
</InputNumber> <span class="describe">请输入0-10的数字,可有一位小数</span>
<span class="describe">请输入0-10之间数字可以输入一位小数</span>
</FormItem> </FormItem>
<FormItem label="面额" prop="price" v-if="form.couponType == 'PRICE'"> <FormItem label="面额" prop="price" v-if="form.couponType == 'PRICE'">
<Input <Input
@@ -256,7 +256,6 @@ export default {
formRule: { formRule: {
promotionName: [{ required: true, message: "活动名称不能为空" }], promotionName: [{ required: true, message: "活动名称不能为空" }],
couponName: [{ required: true, message: "优惠券名称不能为空" }], couponName: [{ required: true, message: "优惠券名称不能为空" }],
couponLimitNum: [{ required: true, message: "领取限制不能为空" }],
price: [{ required: true, message: "请输入面额" }, { validator: checkPrice }], price: [{ required: true, message: "请输入面额" }, { validator: checkPrice }],
consumeThreshold: [ consumeThreshold: [
{ required: true, message: "请输入消费门槛" }, { required: true, message: "请输入消费门槛" },

View File

@@ -154,10 +154,12 @@ export default {
key: "price", key: "price",
width: 100, width: 100,
render: (h, params) => { render: (h, params) => {
if (params.row.price) { if (params.row.couponType === "PRICE") {
return h("priceColorScheme", {props:{value:params.row.price,color:this.$mainColor}} ); return h("priceColorScheme", {props:{value:params.row.price,color:this.$mainColor}} );
} else { } else if(params.row.couponType === "DISCOUNT") {
return h("div", (params.row.couponDiscount || 0) + "折"); return h("div", (params.row.couponDiscount || 0) + "折");
}else{
return h("div", "未知");
} }
}, },
}, },

View File

@@ -38,8 +38,14 @@
clearable style="width: 280px" /> clearable style="width: 280px" />
</FormItem> </FormItem>
<FormItem v-if="form.discountType == 'fullRateFlag'" label="优惠折扣" prop="fullRate"> <FormItem v-if="form.discountType == 'fullRateFlag'" label="优惠折扣" prop="fullRate">
<Input :disabled="form.promotionStatus != 'NEW'" type="text" v-model="form.fullRate" placeholder="优惠折扣" <InputNumber :disabled="form.promotionStatus != 'NEW'"
clearable style="width: 280px" /> placeholder="优惠折扣"
:max="9.9"
:min="0.1"
:step="0.1"
precision="1"
v-model="form.fullRate"
style="width: 260px"/>
<span class="describe">优惠折扣为0-10之间数字可有一位小数</span> <span class="describe">优惠折扣为0-10之间数字可有一位小数</span>
</FormItem> </FormItem>
<FormItem label="额外赠送"> <FormItem label="额外赠送">