<!-- 我的发票 --> <template> <view class="invoice"> <z-paging ref="paging" v-model="invoiceList" @query="queryList"> <!-- 导航栏 --> <u-navbar title-color="#fff" :custom-back="customBack" :border-bottom="false" back-icon-color="#CCE8FF" :background="{ background: '#008CFF' }" title="我的发票" class="invoice-navbar" slot="top" > <view slot="right" class="invoice-navbar-right" @click="addInvoice">申请开票</view> </u-navbar> <!-- 列表 --> <view class="invoice-list"> <view class="invoice-list-item" v-for="(item, index) in invoiceList" :key="index" @click="invoiceItemClick(item)"> <view class="invoice-list-item-left"> <view class="invoice-list-item-left-item" v-for="(child, childIndex) in invoiceObjectList" :key="childIndex"> <view class="left">{{ child.label }}</view> <view class="right"> <template v-if="child.type === 'money'"> <text class="money">¥{{ item[child.key] }}</text> </template> <template v-else-if="child.type === 'time'"> <text class="time">{{ item[child.key] }}</text> </template> <template v-else> <text>{{ item[child.key] }}</text> </template> </view> </view> </view> <view class="invoice-list-item-right"> <view class="arrow-right"> <u-icon name="arrow-right" color="#909399" size="28" /> </view> <view> <text :class="formatStatusType(item['status'])">{{ formatStatus(item['status']) }}</text> </view> </view> </view> </view> </z-paging> <!-- 选择开票类型 --> <u-select v-model="chooseRecords.show" :list="chooseRecords.list" @confirm="chooseRecordsConfirm" /> </view> </template> <script> export default { data() { return { invoiceList: [], invoiceObjectList: [ { label: '', key: 'price', type: 'money' }, { label: '', key: 'title', type: 'status' }, { label: '申请时间:', key: 'applyTime', type: 'time' } ], queryParams: { pageNum: 1, pageSize: 10 }, chooseRecords: { show: false, list: [ { value: 'parkingRecords', label: '停车记录' }, { value: 'monthlyRecords', label: '包月记录' } ] } }; }, methods: { /** * @description: 指定返回上一页 * @return {*} */ customBack() { this.$u.route({ type: 'switchTab', url: 'pages/center/index' }); }, /** * @description: 开发票 * @return {*} */ addInvoice() { this.chooseRecords.show = true; }, /** * @description: 开发票选择确认 * @param {*} val * @return {*} */ chooseRecordsConfirm(list) { this.$u.route({ url: '/pages/invoiceModule/availableOrder/availableOrder', params: { type: list[0].value } }); }, /** * @description: 分页触发 * @param {*} pageNo * @param {*} pageSize * @return {*} */ queryList(pageNo, pageSize) { this.queryParams.pageNum = pageNo; this.queryParams.pageSize = pageSize; // this.getInvoiceList(); this.$refs.paging.complete([ { id: 1, title: '停车服务', price: 0.03, applyTime: '2023-06-12 11:21:30', status: 0 }, { id: 2, title: '停车服务', price: 0.03, applyTime: '2023-06-12 11:21:30', status: 1 }, { id: 3, title: '停车服务', price: 0.03, applyTime: '2023-06-12 11:21:30', status: 2 }, { id: 4, title: '停车服务', price: 0.03, applyTime: '2023-06-12 11:21:30', status: 1 } ]); }, /** * @description: 获取发票列表 * @return {*} */ async getInvoiceList() { const { code, data } = await this.$u.api.invoiceModuleApi.getInvoiceListApi({ ...this.queryParams }); if (code === 200) { this.$refs.paging.complete(data?.rows || []); } }, /** * @description: 单条发票点击 * @param {*} item * @return {*} */ invoiceItemClick(item) { this.$u.route({ url: '/pages/invoiceModule/invoiceDetails/invoiceDetails', params: { id: item.id } }); }, /** * @description: 初始化状态 * @param {*} val * @return {*} */ formatStatus(val) { const statusObj = { 0: '申请中', 1: '已开票', 2: '开票失败' }; return statusObj[val]; }, /** * @description: 初始化状态按钮样式 * @param {*} val * @return {*} */ formatStatusType(val) { const statusTypeObj = { 0: 'info', 1: 'primary', 2: 'error' }; return statusTypeObj[val]; } } }; </script> <style lang="scss" scoped> @import './myInvoice.scss'; </style>