180 lines
3.7 KiB
Vue
180 lines
3.7 KiB
Vue
<template>
|
|
<view class="min-page bg-gray u-font-28">
|
|
<up-sticky offset-top="0">
|
|
<view class="top">
|
|
<view class="search bg-fff u-p-t-32 u-p-l-28 u-p-r-28 u-p-b-32">
|
|
<up-search v-bind="search" v-model="search.val" @search="searchConfirm" @clear="searchConfirm"
|
|
@custom="searchConfirm"></up-search>
|
|
</view>
|
|
<filter-vue @clearUser="clearQueryUser" @updateStatus="updateQuery('status',$event)"
|
|
v-model:time="order.data.query.createdAt" :user="user" :type="option.type"></filter-vue>
|
|
</view>
|
|
</up-sticky>
|
|
|
|
<order-list @printOrder="onPrintOrder" :hasAjax="order.data.hasAjax" :list="order.data.list"></order-list>
|
|
<template v-if="order.data.list.length>0">
|
|
<my-pagination @change="pageChange" :totalElements="order.data.total"></my-pagination>
|
|
</template>
|
|
<view style="height: 100rpx;"></view>
|
|
</view>
|
|
</template>
|
|
|
|
<script setup>
|
|
import {
|
|
onLoad,
|
|
onShow,
|
|
onPullDownRefresh
|
|
} from '@dcloudio/uni-app'
|
|
import * as Api from '@/http/yskApi/order.js'
|
|
import {
|
|
queryAllShopUser
|
|
} from '@/http/yskApi/shop-user.js'
|
|
|
|
|
|
import LIST from '@/commons/class/list.js'
|
|
import {
|
|
$printOrder
|
|
} from '@/http/yskApi/Instead.js'
|
|
import filterVue from './compoents/filter.vue';
|
|
import orderList from './compoents/order-list.vue';
|
|
import infoBox from '@/commons/utils/infoBox.js'
|
|
import {
|
|
reactive,
|
|
ref,
|
|
watch
|
|
} from 'vue';
|
|
import {
|
|
getTodayTimestamps
|
|
} from '@/commons/utils/dayjs-time.js';
|
|
const search = reactive({
|
|
val: '',
|
|
placeholder: '搜索单号/商品名称',
|
|
shape: 'square',
|
|
inputStyle: {
|
|
borderRadius: '12rpx'
|
|
},
|
|
actionStyle: {
|
|
textAlign: 'right'
|
|
}
|
|
})
|
|
|
|
const today = getTodayTimestamps();
|
|
const order = new LIST({
|
|
list: [],
|
|
query: {
|
|
createdAt: [today.start, today.end],
|
|
id: "",
|
|
orderNo: "",
|
|
orderType: "0",
|
|
page: 0,
|
|
pageSize: 10,
|
|
payType: "",
|
|
productName: "",
|
|
status: "",
|
|
userId: ''
|
|
}
|
|
})
|
|
console.log(order.data);
|
|
|
|
function clearQueryUser() {
|
|
order.setQuery('userId', '')
|
|
}
|
|
|
|
function pageChange(e) {
|
|
const newPage = e - 1
|
|
order.setVal('page', newPage)
|
|
order.setQuery('page', newPage)
|
|
init()
|
|
}
|
|
|
|
function updateQuery(key, e) {
|
|
order.setQuery(key, e)
|
|
}
|
|
watch(() => order.data.query.createdAt, (newval) => {
|
|
init()
|
|
})
|
|
watch(() => order.data.query.status, (newval) => {
|
|
init()
|
|
})
|
|
watch(() => order.data.query.userId, (newval) => {
|
|
init()
|
|
})
|
|
|
|
function searchConfirm() {
|
|
order.setQuery('page', 0)
|
|
init()
|
|
}
|
|
async function init() {
|
|
console.log(order.data.query);
|
|
const {
|
|
data
|
|
} = await Api.tbOrderInfoData({
|
|
...order.data.query,
|
|
page: order.data.query.page,
|
|
keyword: search.val
|
|
})
|
|
uni.stopPullDownRefresh()
|
|
order.setVal('list', data.records)
|
|
order.setVal('total', data.totalRow)
|
|
order.setVal('hasAjax', true)
|
|
}
|
|
onPullDownRefresh(() => {
|
|
order.setQuery('page', 0)
|
|
init()
|
|
})
|
|
|
|
let user = ref({
|
|
userId: ''
|
|
})
|
|
const option = reactive({
|
|
type: ''
|
|
})
|
|
onLoad((opt) => {
|
|
Object.assign(option, opt)
|
|
if (opt && JSON.stringify(opt) != '{}') {
|
|
order.setQuery('userId', opt.userId ? opt.userId : '')
|
|
if (opt.userId) {
|
|
queryAllShopUser({
|
|
id: opt.userId
|
|
}).then(res => {
|
|
user.value = res.content[0] || opt
|
|
})
|
|
}
|
|
}
|
|
})
|
|
|
|
onShow(init)
|
|
async function printOrder(item) {
|
|
try {
|
|
console.log(item);
|
|
const res = await $printOrder({
|
|
tableId: item.tableId
|
|
})
|
|
infoBox.showToast('已发送打印请求')
|
|
} catch (e) {
|
|
console.log(e);
|
|
infoBox.showToast('发送打印请求失败')
|
|
//TODO handle the exception
|
|
}
|
|
|
|
}
|
|
|
|
function onPrintOrder(e) {
|
|
console.log(e);
|
|
uni.showModal({
|
|
title: '提示',
|
|
content: '是否打印该订单',
|
|
success(res) {
|
|
if (res.confirm) {
|
|
printOrder(e)
|
|
}
|
|
}
|
|
})
|
|
}
|
|
</script>
|
|
|
|
<style>
|
|
.top {
|
|
background-color: #E5E5E5;
|
|
}
|
|
</style> |