<wxs module="order">
var getTotal = function (orderTypeCurrentIndex,array) {
var total = 0.00;
for (var i = 0; i < array.length;i++){
total += orderTypeCurrentIndex === 0 ? array[i].invoiceMoney : array[i].payAmount;
}
return Math.floor(total * 100) / 100;
}
module.exports.getTotal = getTotal;
</wxs>
<view class="container">
<view class="tab-content">
<view class="time-frame-content">
<van-row gutter="10">
<view class="order-type-content">
<van-row>
<van-col span="12" class="tx-c" wx:for="{{orderTypeList}}" wx:key="value">
<text class="order-type-item {{orderTypeCurrentIndex === item.value ? 'order-type-current' : ''}}"
data-index="{{item.value}}" bindtap="chooseOrderTypeItem">{{item.label}}</text>
</van-col>
</van-row>
</view>
</van-row>
</view>
<view class="bc-ffffff header-tab">
<view class="tips-text-content">
<text class="tips-text">温馨提醒:小程序开具电子发票有效期为3个月!过期请进站开具纸质发票</text>
</view>
<view class="df f-ac">
<view class="fg-1 order-type-title-class">
<view class="df f-ac">
<van-icon name="map-marked" class="map-marked" color="#666666" size="18"/>
<view class="station-name">{{listSiteInfo.siteName}}</view>
<view class="switch-site-text" bindtap="switchSite">切换</view>
</view>
<!-- <van-dropdown-menu active-color="#01A23D">
<van-dropdown-item value="{{ invState }}" bind:change="orderTypeOnChange" title-class="order-type-title-class" options="{{ orderTypeOptions }}" />
</van-dropdown-menu> -->
</view>
<view class="fg-1 order-screen order-screen-title-class tx-r" bindtap="showOrderScreen">
<van-icon name="filter-o" class="filter-icon"/>
<text>订单筛选</text>
</view>
</view>
</view>
</view>
<view class="fixed-height"></view>
<view class="order-list">
<view-list showNotify="{{showNotify}}" loading="{{loading}}" dataList="{{orderList}}" nowPage="{{nowPage}}"
totalPage="{{totalPage}}">
<van-checkbox-group value="{{ formOrderIds }}" bind:change="checkedOnChange">
<view class="df f-ac" wx:for="{{orderList}}" data-index="{{ index }}" wx:key="omsOrderId" bindtap="toggle">
<view class="checkbox-content" wx:if="{{invState === 0}}">
<van-checkbox checked-color="#01A23D" custom-class="checkbox-class" catch:tap="noop"
class="checkboxes-{{ index }}" name="{{ item.omsOrderId }}" bind:click="toggle"/>
</view>
<view class="fg-1">
<order-list-tmp showOrderState="{{invState === 1}}" showDetails="{{true}}"
paymentTime="{{item.createTime}}" payAmount="{{orderTypeCurrentIndex === 0 ? item.invoiceMoney : item.payAmount}}"
bind:details="toDetails" hiddenTip="{{showTipIndex !== index}}"
bind:orderStateTap="orderStateTap" data-index="{{index}}" index="{{index}}">
<view slot="header-title" wx:if="{{ invState === 1 && item.invNum >=2}}">
<!-- 开票上限制 -->
<text class="fs-25 fc-01A23D">已达到开票上限</text>
</view>
<view slot="desc">
<view class="info-cell fs-27">
<text class="fc-999999">消费门店:</text>
<text class="fc-666666">{{item.stationName}}</text>
</view>
<view class="info-cell fs-27">
<text class="fc-999999">交易说明:</text>
<text class="fc-666666">{{item.costTypeStr}}</text>
</view>
</view>
</order-list-tmp>
</view>
</view>
</van-checkbox-group>
</view-list>
</view>
<view class="footer-operation-height" wx:if="{{invState === 0}}"></view>
<view class="footer-operation" wx:if="{{invState === 0}}">
<view class="footer-operation-content">
<view class="operation-order-sum-text">
<text class="fc-01A23D plr-10">{{formOrderIds.length}}</text><text>笔订单,共</text><text
class="fc-01A23D plr-10">{{order.getTotal(orderTypeCurrentIndex,chooseOrder)}}</text>元
</view>
<van-divider></van-divider>
<van-radio-group bind:change="onChange">
<view class="df f-ac operation-content">
<view class="mr-35">
<van-checkbox value="{{selectPageChecked}}" checked-color="#01A23D" bind:change="selectPageOnChange"
label-class="label-class">本页全选
</van-checkbox>
</view>
<view>
<van-checkbox value="{{selectAllChecked}}" checked-color="#01A23D" bind:change="selectAllOnChange"
label-class="label-class">全部全选
</van-checkbox>
</view>
<view class="fg-1 tx-r">
<van-button type="primary" disabled="{{formOrderIds.length === 0}}" color="#01A23D"
bind:click="toInvoicing">下一步
</van-button>
</view>
</view>
</van-radio-group>
</view>
</view>
</view>
<screen-tmp propDate="{{propDate}}" isShowOrderScreen="{{isShowOrderScreen}}" siteInfo="{{screenSiteInfo}}"
bind:popupclose="onOrderScreenClose" bind:confirm="screenConfirm"
bind:reset="resetOrderSearch"></screen-tmp>
import {
initOrderData
} from '../../../../utils/orderInterface';
import moment from "../../../../utils/moment";
const app = getApp();
App.Page({
data: {
loading: true,
useProp: ["user", "invoive", "site"],
currentDate: [moment(new Date()).subtract(3, "months").format("YYYY-MM-DD"), moment(new Date()).add(1, 'm').format("YYYY-MM-DD")],
propDate: [moment(new Date()).subtract(3, "months").format("YYYY-MM-DD"), moment(new Date()).add(1, 'm').format("YYYY-MM-DD")],
payAmountStart: "", // 实付支付金额(起)
payAmountEnd: "", // 实付支付金额(始)
orderList: [],
orderTypeCurrentIndex: 6, // 默认甲醇
screenSiteInfo: null,
listSiteInfo: null,
showNotify: null,
tabHeight: 0,
orderTypeList: [
// {
// value: 0,
// label: "能源消费"
// },
// {
// value: 1,
// label: "便利店消费"
// },
{
value: 6,
label: "甲醇消费"
}, {
value: 7,
label: "天然气消费"
}
],
orderTypeOptions: [{
text: '可开订单',
value: 0
},
{
text: '其他订单',
value: 1
},
],
// nowDate: moment().format("YYYY-MM"),
isShowOrderScreen: false,
invState: 0,
formOrderIds: [], // 选中的订单id
selectPageChecked: false, // 本页全选的状态
selectAllChecked: false, // 全部全选的状态
showTipIndex: null,
totalCount: 0,
totalPage: 0,
nowPage: 1,
pageSize: 10,
chooseOrder: [] // 选中的订单对象
},
initData(isRefresh = false) {
// 获取订单数据
let that = this;
let {
mobile,
} = that.data.$state.user.userInfo;
let {
currentDate,
invState,
orderTypeCurrentIndex,
nowPage,
pageSize,
payAmountStart,
payAmountEnd,
listSiteInfo
} = that.data;
this.setData({
loading: true
});
return new Promise((resolve, reject) => {
initOrderData({
state:orderTypeCurrentIndex
}, {
memberId:that.data.$state.user.memberInfo.id,
phone: mobile,
memberNum: that.data.$state.user.memberInfo.number,
invState,
payAmountStart,
payAmountEnd,
stationId: listSiteInfo.pkId,
stationName:listSiteInfo.siteName,
startTime: currentDate[0] ? currentDate[0] : null,
endTime: currentDate[1] ? currentDate[1] : null,
nowPage: nowPage,
pageSize: pageSize,
}).then((res) => {
let tmp = that.data.orderList.concat(res.list);
that.setData({
orderList: tmp,
loading: false,
totalCount: res.totalCount,
totalPage: res.totalPage,
showNotify: isRefresh ? {
zIndex: 99,
top: this.data.tabHeight,
} : null,
});
wx.stopPullDownRefresh()
return resolve();
});
})
},
selectPageOnChange({
detail
}) {
// 本页全选的事件
let ids = this.data.orderList.map((val, index) => {
return String(val.omsOrderId);
});
const params = this.getOrderListParams(ids);
this.setData({
selectPageChecked: detail,
formOrderIds: detail ? ids : [],
chooseOrder: detail ? params : []
});
},
async selectAllOnChange({
detail
}) {
// 全部全选的事件
if (detail) {
this.setData({
pageSize: this.data.totalCount,
orderList: [],
});
await this.initData();
}
let ids = this.data.orderList.map((val, index) => {
return String(val.omsOrderId);
});
const params = this.getOrderListParams(ids);
this.setData({
selectPageChecked: detail,
selectAllChecked: detail,
formOrderIds: detail ? ids : [],
chooseOrder: detail ? params : []
});
},
checkedOnChange({
detail
}) {
// 点击选择订单
const params = this.getOrderListParams(detail);
this.setData({
formOrderIds: detail,
chooseOrder: params
});
},
getOrderListParams(detail) {
let {
orderList
} = this.data;
return orderList.filter(item => detail.some(ele => ele == item.omsOrderId))
},
toggle(event) {
if (this.data.invState !== 0) {
return;
}
const {
index
} = event.currentTarget.dataset;
const checkbox = this.selectComponent(`.checkboxes-${index}`);
checkbox.toggle();
},
orderStateTap(e) {
let {
index
} = e.currentTarget.dataset;
this.setData({
showTipIndex: this.data.showTipIndex === index ? null : index
})
},
orderTypeOnChange({
detail
}) {
// 查询可开订单和其他订单
this.setData({
invState: detail
}, () => {
this.setData({
nowPage: 1,
pageSize: 10,
formOrderIds: [],
selectPageChecked: false, // 本页全选的状态
selectAllChecked: false, // 全部全选的状态
orderList: []
});
this.initData();
});
},
resetOrderSearch() {
// 重置订单搜索
this.setData({
nowPage: 1,
pageSize: 10,
// currentDate: moment().format("YYYY-MM"),// 重置时间为当前月份
currentDate: [moment(new Date()).subtract(3, "months").format("YYYY-MM-DD"), moment(new Date()).add(1, 'm').format("YYYY-MM-DD")],
payAmountStart: "", // 实付支付金额(起)
payAmountEnd: "", // 实付支付金额(始)
orderList: [],
formOrderIds: [],
selectPageChecked: false, // 本页全选的状态
selectAllChecked: false, // 全部全选的状态
isShowOrderScreen: false
});
this.initData();
},
screenConfirm({detail}) {
// 筛选弹窗 确定事件
this.setData({
nowPage: 1,
pageSize: 10,
currentDate: detail.currentDate,
payAmountStart: detail.payAmountStart,
payAmountEnd: detail.payAmountEnd,
orderList: [],
listSiteInfo: detail.siteInfo,
formOrderIds: [],
selectPageChecked: false, // 本页全选的状态
selectAllChecked: false, // 全部全选的状态
isShowOrderScreen: false
});
this.initData();
},
toDetails({
detail
}) {
// 查看详情
let {
index
} = detail.currentTarget.dataset;
let orderPrams = this.data.orderList[index];
let omsOrderId = (this.data.orderTypeCurrentIndex === 0 || this.data.orderTypeCurrentIndex === 6 || this.data.orderTypeCurrentIndex === 7) ? orderPrams.orderNum : orderPrams.omsOrderId;
wx.navigateTo({
url: `/pages/order/details/index?omsOrderId=${omsOrderId}&orderType=${this.data.orderTypeCurrentIndex}`,
});
},
toInvoicing() {
// 点击下一步 进入开票页面
app.store.setState({
['invoive.chooseOrderList']: this.data.chooseOrder,
});
wx.navigateTo({
url: `/pages/order/invoice/makeInvoice/index?orderType=${this.data.orderTypeCurrentIndex}&stationId=${this.data.listSiteInfo.pkId}`,
})
},
refreshData() {
this.setData({
nowPage: 1,
pageSize: 10,
orderList: [],
formOrderIds: [],
selectPageChecked: false, // 本页全选的状态
selectAllChecked: false, // 全部全选的状态
}, () => {
this.initData();
});
},
showOrderScreen() {
this.setData({
isShowOrderScreen: true
})
},
onOrderScreenClose() {
this.setData({
isShowOrderScreen: false
})
},
chooseOrderTypeItem(e) {
// 订单类型的样式切换
let {
index
} = e.currentTarget.dataset;
this.setData({
orderTypeCurrentIndex: index,
nowPage: 1,
pageSize: 10,
loading: true,
formOrderIds: [],
orderList: [],
chooseOrder: [],
selectPageChecked: false, // 本页全选的状态
selectAllChecked: false, // 全部全选的状态
}, () => {
this.initData();
});
},
selecSitCallBack(item) {
// 切换门店 选择门店后的回调函数
this.setData({
screenSiteInfo: item,
listSiteInfo: item,
nowPage: 1,
loading: true,
orderList: [],
formOrderIds: [],
selectPageChecked: false, // 本页全选的状态
selectAllChecked: false, // 全部全选的状态
}, () => {
this.initData(true);
});
},
switchSite() {
// 订单切换门店
wx.navigateTo({
url: `/pages/selectSite/index`,
});
},
/**
* 生命周期函数--监听页面加载
*/
onLoad: function (options) {
let that = this;
wx.createSelectorQuery().selectAll('.fixed-height').boundingClientRect().exec(function (res) {
that.setData({
tabHeight: res[0][0].height
})
});
let type = Number(options.orderType);
let {
stationId,
siteInfo
} = that.data.$state.site;
this.setData({
orderTypeCurrentIndex: 6,
screenSiteInfo: siteInfo,
listSiteInfo: siteInfo
}, () => {
this.initData();
});
},
/**
* 生命周期函数--监听页面初次渲染完成
*/
onReady: function () {
},
/**
* 生命周期函数--监听页面显示
*/
onShow: function () {
},
/**
* 生命周期函数--监听页面隐藏
*/
onHide: function () {
},
/**
* 生命周期函数--监听页面卸载
*/
onUnload: function () {
},
/**
* 页面相关事件处理函数--监听用户下拉动作
*/
onPullDownRefresh: function () {
this.setData({
nowPage: 1,
loading: true,
orderList: [],
formOrderIds: [],
selectPageChecked: false, // 本页全选的状态
selectAllChecked: false, // 全部全选的状态
}, () => {
this.initData(true);
});
},
/**
* 页面上拉触底事件的处理函数
*/
onReachBottom: function () {
if (this.data.totalCount === this.data.orderList.length) {
return;
}
this.setData({
nowPage: this.data.nowPage + 1,
selectAllChecked: false, // 全部全选的状态
}, () => {
this.initData();
});
},
/**
* 用户点击右上角分享
*/
onShareAppMessage: function () {
}
})
组件
// components/screenTmp/index.js
import moment from '../../utils/moment';
Component({
/**
* 组件的属性列表
*/
options: {
addGlobalClass: true
},
properties: {
propDate:{
type:Array,
value: [new Date(moment().subtract(2, "d").format("YYYY-MM-DD")).getTime(), new Date(moment().format("YYYY-MM-DD")).getTime()]
},
siteInfo: {
type: Object,
value: () => {
return {}
}
},
isShowOrderScreen: {
type: Boolean,
value: false
},
isShowPayAmount: {
type: Boolean,
value: true
},
isShowStation: {
type: Boolean,
value: false
}
},
/**
* 组件的初始数据
*/
data: {
currentDate: ["", ""],
calendarShow: false,
defaultDate: [], //默认的开始时间结束时间
minDate: new Date(moment().subtract(3, "months").format("YYYY-MM-DD")).getTime(), // 最小显示的日期
maxDate: new Date(moment().add(1, 'm').format("YYYY-MM-DD")).getTime(), // 最大显示的日期
payAmountStart: "",
payAmountEnd: ""
},
/**
* 组件的方法列表
*/
methods: {
onCalendarClose() {
this.setData({
calendarShow: false
});
},
onConfirm(event) {
// 日期选择确定事件
const [start, end] = event.detail;
this.setData({
calendarShow: false,
currentDate: [moment(new Date(start)).format("YYYY-MM-DD"), moment(new Date(end)).format("YYYY-MM-DD")],
});
},
showCalendar() {
this.setData({
calendarShow: !this.data.calendarShow
})
},
switchBtn() {
this.triggerEvent('switchBtn');
},
calendarOnClose() {
this.setData({
calendarShow: !this.data.calendarShow
})
},
popupClose() {
this.triggerEvent('popupclose');
},
payAmountonChange(e) {
// 金额范围的input 事件
let {
name
} = e.currentTarget.dataset;
this.setData({
[name]: e.detail
});
},
reset() {
// 重置按钮
this.setData({
currentDate: ["", ""],
payAmountStart: "",
payAmountEnd: ""
})
this.triggerEvent('reset');
},
confirm(e) {
// 确定筛选按钮
let params = {
currentDate: this.data.currentDate,
payAmountStart: this.data.payAmountStart,
payAmountEnd: this.data.payAmountEnd,
siteInfo:this.data.siteInfo
}
this.triggerEvent('confirm', params);
},
}
})
resetOrderSearch重置如何更改组件中的时间数据,现在只是清除了输入框的数据,点日期还是上一次选的日期
最新发布