|
@@ -13,14 +13,27 @@
|
|
|
<style-checkbox :checked="item.checked"></style-checkbox>
|
|
<style-checkbox :checked="item.checked"></style-checkbox>
|
|
|
</view>
|
|
</view>
|
|
|
<view>
|
|
<view>
|
|
|
- <view class="fs-30 fw-500" key="title" duration="300">充电费用</view>
|
|
|
|
|
|
|
+ <view class="flex-align-center">
|
|
|
|
|
+ <view class="fs-30 fw-500">充电费用</view>
|
|
|
|
|
+ <view
|
|
|
|
|
+ v-if="
|
|
|
|
|
+ isInvoice &&
|
|
|
|
|
+ (item.invoiceStatus === 1 ||
|
|
|
|
|
+ item.invoiceStatus === 2 ||
|
|
|
|
|
+ item.invoiceStatus === 3)
|
|
|
|
|
+ "
|
|
|
|
|
+ class="flex-center ml-24 fs-24 color-000-6 width-96 height-46 br-8"
|
|
|
|
|
+ style="background: #e5e5e5"
|
|
|
|
|
+ >{{ isInvoiceTitles[item.invoiceStatus] }}</view
|
|
|
|
|
+ >
|
|
|
|
|
+ </view>
|
|
|
<view class="fs-24 mt-10" style="color: rgba(0, 0, 0, 0.4)">{{
|
|
<view class="fs-24 mt-10" style="color: rgba(0, 0, 0, 0.4)">{{
|
|
|
- item.transactionTime
|
|
|
|
|
|
|
+ item.endTime
|
|
|
}}</view>
|
|
}}</view>
|
|
|
</view>
|
|
</view>
|
|
|
<view class="ml-auto" style="text-align: right">
|
|
<view class="ml-auto" style="text-align: right">
|
|
|
<view class="fs-36 fw-500">
|
|
<view class="fs-36 fw-500">
|
|
|
- <text>{{ item.amount }}</text>
|
|
|
|
|
|
|
+ <text>{{ item.totalMoney }}</text>
|
|
|
<text class="fs-24 ml-6">元</text>
|
|
<text class="fs-24 ml-6">元</text>
|
|
|
</view>
|
|
</view>
|
|
|
</view>
|
|
</view>
|
|
@@ -36,13 +49,20 @@
|
|
|
v-if="infiniteScroller.list && infiniteScroller.list.length <= 0"
|
|
v-if="infiniteScroller.list && infiniteScroller.list.length <= 0"
|
|
|
>暂无数据</view
|
|
>暂无数据</view
|
|
|
>
|
|
>
|
|
|
-
|
|
|
|
|
|
|
+ <view class="invoice-placeholder" v-if="isInvoice"></view>
|
|
|
<view class="foot-placeholder"></view>
|
|
<view class="foot-placeholder"></view>
|
|
|
|
|
|
|
|
<style-bottom-view>
|
|
<style-bottom-view>
|
|
|
- <view class="foot flex-align-center flex-justify-end" v-if="!isInvoice">
|
|
|
|
|
|
|
+ <view class="foot flex-align-center" v-if="!isInvoice">
|
|
|
|
|
+ <!-- <view
|
|
|
|
|
+ class="flex-center height-72 br-72"
|
|
|
|
|
+ style="width: 176rpx"
|
|
|
|
|
+ @click="openInvoiceHistory"
|
|
|
|
|
+ >
|
|
|
|
|
+ <view class="fs-28 color-333 mr-12">发票历史</view>
|
|
|
|
|
+ </view> -->
|
|
|
<view
|
|
<view
|
|
|
- class="flex-center mr-40 height-72 br-72"
|
|
|
|
|
|
|
+ class="flex-center ml-auto mr-40 height-72 br-72"
|
|
|
style="width: 176rpx; border: 1rpx solid rgba(0, 0, 0, 0.2)"
|
|
style="width: 176rpx; border: 1rpx solid rgba(0, 0, 0, 0.2)"
|
|
|
@click="openInvoice"
|
|
@click="openInvoice"
|
|
|
>
|
|
>
|
|
@@ -79,27 +99,36 @@
|
|
|
</template>
|
|
</template>
|
|
|
|
|
|
|
|
<script setup lang="ts">
|
|
<script setup lang="ts">
|
|
|
-import { onLoad, onPullDownRefresh, onReachBottom } from "@dcloudio/uni-app";
|
|
|
|
|
-import { fetchWallet } from "../../api/user";
|
|
|
|
|
-import { applyInvoice } from "../../api/index";
|
|
|
|
|
|
|
+import {
|
|
|
|
|
+ onLoad,
|
|
|
|
|
+ onPullDownRefresh,
|
|
|
|
|
+ onReachBottom,
|
|
|
|
|
+ onShow,
|
|
|
|
|
+} from "@dcloudio/uni-app";
|
|
|
|
|
+import { fetchOrders } from "../../api/user";
|
|
|
|
|
+import { applyInvoice, fetchInvoiceList } from "../../api/index";
|
|
|
import { useInfiniteScroll } from "../../utils/infinite-scroll";
|
|
import { useInfiniteScroll } from "../../utils/infinite-scroll";
|
|
|
import { ref } from "vue";
|
|
import { ref } from "vue";
|
|
|
|
|
+import { to } from "@/utils/navigate";
|
|
|
|
|
|
|
|
const isInvoice = ref(false);
|
|
const isInvoice = ref(false);
|
|
|
|
|
+const isInvoiceing = ref(false);
|
|
|
|
|
+const isInvoiceHistory = ref(false);
|
|
|
|
|
+const isInvoiceTitles = ref(["未开票", "已开票", "已作废", "开票中"]);
|
|
|
const checkAll = ref(false);
|
|
const checkAll = ref(false);
|
|
|
const checkedPrice = ref(0);
|
|
const checkedPrice = ref(0);
|
|
|
const checkedCount = ref(0);
|
|
const checkedCount = ref(0);
|
|
|
|
|
|
|
|
-// 0-未开票 1-开票中 2-已开票
|
|
|
|
|
|
|
+// 0-未开票 1-已开票 2-已作废 3-开票中
|
|
|
const infiniteScroller = useInfiniteScroll(10, (page) => {
|
|
const infiniteScroller = useInfiniteScroll(10, (page) => {
|
|
|
- return fetchWallet(3, page, 10, "invoiceStatus=2").then((res: any) => {
|
|
|
|
|
- if (res && res.length) {
|
|
|
|
|
- res.forEach((item: any) => {
|
|
|
|
|
- item.amount = (Number(item.amount) / 100).toFixed(2);
|
|
|
|
|
|
|
+ return fetchOrders(page, 10).then((res: any) => {
|
|
|
|
|
+ if (res && res.list && res.list.length) {
|
|
|
|
|
+ res.list.forEach((item: any) => {
|
|
|
|
|
+ item.totalMoney = (Number(item.totalMoney) / 100).toFixed(2);
|
|
|
item.checked = false;
|
|
item.checked = false;
|
|
|
});
|
|
});
|
|
|
}
|
|
}
|
|
|
- return res;
|
|
|
|
|
|
|
+ return res.list;
|
|
|
});
|
|
});
|
|
|
});
|
|
});
|
|
|
|
|
|
|
@@ -109,7 +138,7 @@ const setCheckData = () => {
|
|
|
infiniteScroller.list.forEach((item: any) => {
|
|
infiniteScroller.list.forEach((item: any) => {
|
|
|
if (item.checked) {
|
|
if (item.checked) {
|
|
|
count++;
|
|
count++;
|
|
|
- price += Number(item.amount);
|
|
|
|
|
|
|
+ price += Number(item.totalMoney);
|
|
|
}
|
|
}
|
|
|
});
|
|
});
|
|
|
checkAll.value = infiniteScroller.list.every((item: any) => item.checked);
|
|
checkAll.value = infiniteScroller.list.every((item: any) => item.checked);
|
|
@@ -121,33 +150,50 @@ const detail = (index: number) => {
|
|
|
return;
|
|
return;
|
|
|
}
|
|
}
|
|
|
if (isInvoice.value) {
|
|
if (isInvoice.value) {
|
|
|
- infiniteScroller.list[index].checked =
|
|
|
|
|
- !infiniteScroller.list[index].checked;
|
|
|
|
|
- setCheckData();
|
|
|
|
|
|
|
+ if ([0, 3].includes(infiniteScroller.list[index].invoiceStatus)) {
|
|
|
|
|
+ infiniteScroller.list[index].checked =
|
|
|
|
|
+ !infiniteScroller.list[index].checked;
|
|
|
|
|
+ setCheckData();
|
|
|
|
|
+ }
|
|
|
|
|
+ if ([1].includes(infiniteScroller.list[index].invoiceStatus)) {
|
|
|
|
|
+ to(
|
|
|
|
|
+ `/pages-common/invoice/invoice?id=${infiniteScroller.list[index].startChargeSeq}`
|
|
|
|
|
+ );
|
|
|
|
|
+ }
|
|
|
return;
|
|
return;
|
|
|
}
|
|
}
|
|
|
- uni.navigateTo({
|
|
|
|
|
- url: `/pages-charge/order/order?id=${infiniteScroller.list[index].orderNo}`,
|
|
|
|
|
- });
|
|
|
|
|
|
|
+ to(
|
|
|
|
|
+ `/pages-charge/order/order?id=${infiniteScroller.list[index].startChargeSeq}`
|
|
|
|
|
+ );
|
|
|
};
|
|
};
|
|
|
const openInvoice = () => {
|
|
const openInvoice = () => {
|
|
|
isInvoice.value = true;
|
|
isInvoice.value = true;
|
|
|
};
|
|
};
|
|
|
|
|
+// 获取发票历史
|
|
|
|
|
+const openInvoiceHistory = () => {
|
|
|
|
|
+ uni.showLoading({
|
|
|
|
|
+ title: "请求中",
|
|
|
|
|
+ });
|
|
|
|
|
+ fetchInvoiceList().then((res) => {
|
|
|
|
|
+ uni.hideLoading();
|
|
|
|
|
+ if (res.length <= 0) {
|
|
|
|
|
+ uni.showToast({
|
|
|
|
|
+ title: "无开票历史",
|
|
|
|
|
+ icon: "none",
|
|
|
|
|
+ });
|
|
|
|
|
+ return;
|
|
|
|
|
+ }
|
|
|
|
|
+ isInvoiceHistory.value = true;
|
|
|
|
|
+ });
|
|
|
|
|
+};
|
|
|
const nextInvoice = () => {
|
|
const nextInvoice = () => {
|
|
|
- // const ids = infiniteScroller.list
|
|
|
|
|
- // .filter((item: any) => item.checked)
|
|
|
|
|
- // .map((item: any) => item.orderNo)
|
|
|
|
|
- // .join("|");
|
|
|
|
|
- // uni.navigateTo({
|
|
|
|
|
- // url: `/pages-common/invoice/invoice?ids=${ids}`,
|
|
|
|
|
- // });
|
|
|
|
|
uni.showLoading({
|
|
uni.showLoading({
|
|
|
title: "请求中",
|
|
title: "请求中",
|
|
|
});
|
|
});
|
|
|
applyInvoice(
|
|
applyInvoice(
|
|
|
infiniteScroller.list
|
|
infiniteScroller.list
|
|
|
.filter((item: any) => item.checked)
|
|
.filter((item: any) => item.checked)
|
|
|
- .map((item: any) => item.orderNo)
|
|
|
|
|
|
|
+ .map((item: any) => item.startChargeSeq)
|
|
|
)
|
|
)
|
|
|
.then((res) => {
|
|
.then((res) => {
|
|
|
uni.hideLoading();
|
|
uni.hideLoading();
|
|
@@ -156,13 +202,14 @@ const nextInvoice = () => {
|
|
|
path: res.miniprogramPath,
|
|
path: res.miniprogramPath,
|
|
|
success(res) {
|
|
success(res) {
|
|
|
console.log("打开成功");
|
|
console.log("打开成功");
|
|
|
|
|
+ isInvoiceing.value = true;
|
|
|
},
|
|
},
|
|
|
});
|
|
});
|
|
|
})
|
|
})
|
|
|
.catch((err) => {
|
|
.catch((err) => {
|
|
|
uni.hideLoading();
|
|
uni.hideLoading();
|
|
|
uni.showModal({
|
|
uni.showModal({
|
|
|
- content: `${err.errMsg},请重试`,
|
|
|
|
|
|
|
+ content: `${err.errMsg}`,
|
|
|
});
|
|
});
|
|
|
});
|
|
});
|
|
|
};
|
|
};
|
|
@@ -179,6 +226,13 @@ const checkPage = () => {
|
|
|
onLoad(() => {
|
|
onLoad(() => {
|
|
|
infiniteScroller.refresh();
|
|
infiniteScroller.refresh();
|
|
|
});
|
|
});
|
|
|
|
|
+onShow(() => {
|
|
|
|
|
+ if (isInvoiceing.value) {
|
|
|
|
|
+ isInvoiceing.value = false;
|
|
|
|
|
+ isInvoice.value = false;
|
|
|
|
|
+ infiniteScroller.refresh();
|
|
|
|
|
+ }
|
|
|
|
|
+});
|
|
|
onPullDownRefresh(() => {
|
|
onPullDownRefresh(() => {
|
|
|
if (isInvoice.value) {
|
|
if (isInvoice.value) {
|
|
|
uni.stopPullDownRefresh();
|
|
uni.stopPullDownRefresh();
|
|
@@ -195,6 +249,12 @@ onReachBottom(() => {
|
|
|
.item {
|
|
.item {
|
|
|
height: 170rpx;
|
|
height: 170rpx;
|
|
|
border-bottom: 1rpx solid rgba(0, 0, 0, 0.1);
|
|
border-bottom: 1rpx solid rgba(0, 0, 0, 0.1);
|
|
|
|
|
+ &:last-child {
|
|
|
|
|
+ border-bottom: none;
|
|
|
|
|
+ }
|
|
|
|
|
+}
|
|
|
|
|
+.invoice-placeholder {
|
|
|
|
|
+ height: 60rpx;
|
|
|
}
|
|
}
|
|
|
.foot-placeholder {
|
|
.foot-placeholder {
|
|
|
height: 112rpx;
|
|
height: 112rpx;
|