完成发票初始版本
This commit is contained in:
parent
d1b2c89b1c
commit
b7e831662e
2
app.json
2
app.json
|
@ -3,6 +3,7 @@
|
||||||
"pages/home/index",
|
"pages/home/index",
|
||||||
"pages/invoiceList/index",
|
"pages/invoiceList/index",
|
||||||
"pages/invoiceDetail/index",
|
"pages/invoiceDetail/index",
|
||||||
|
"pages/invoiceDetailContent/index",
|
||||||
"pages/invoicing/index",
|
"pages/invoicing/index",
|
||||||
"pages/rechargeRecord/index",
|
"pages/rechargeRecord/index",
|
||||||
"pages/member/index",
|
"pages/member/index",
|
||||||
|
@ -18,6 +19,7 @@
|
||||||
"pages/editInvoice/index",
|
"pages/editInvoice/index",
|
||||||
"pages/rechargeDetail/index",
|
"pages/rechargeDetail/index",
|
||||||
"pages/agreements/index"
|
"pages/agreements/index"
|
||||||
|
|
||||||
],
|
],
|
||||||
"tabBar": {
|
"tabBar": {
|
||||||
"list": [
|
"list": [
|
||||||
|
|
24
components/empty/index.js
Normal file
24
components/empty/index.js
Normal file
|
@ -0,0 +1,24 @@
|
||||||
|
// components/empty/index.js
|
||||||
|
Component({
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 组件的属性列表
|
||||||
|
*/
|
||||||
|
properties: {
|
||||||
|
|
||||||
|
},
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 组件的初始数据
|
||||||
|
*/
|
||||||
|
data: {
|
||||||
|
|
||||||
|
},
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 组件的方法列表
|
||||||
|
*/
|
||||||
|
methods: {
|
||||||
|
|
||||||
|
}
|
||||||
|
})
|
7
components/empty/index.json
Normal file
7
components/empty/index.json
Normal file
|
@ -0,0 +1,7 @@
|
||||||
|
{
|
||||||
|
"component": true,
|
||||||
|
"usingComponents": {
|
||||||
|
"van-empty": "@vant/weapp/empty/index",
|
||||||
|
"van-button": "@vant/weapp/button/index"
|
||||||
|
}
|
||||||
|
}
|
4
components/empty/index.wxml
Normal file
4
components/empty/index.wxml
Normal file
|
@ -0,0 +1,4 @@
|
||||||
|
<!--components/empty/index.wxml-->
|
||||||
|
<van-empty description="描述文字">
|
||||||
|
<van-button round type="danger" class="bottom-button">按钮</van-button>
|
||||||
|
</van-empty>
|
1
components/empty/index.wxss
Normal file
1
components/empty/index.wxss
Normal file
|
@ -0,0 +1 @@
|
||||||
|
/* components/empty/index.wxss */
|
104
components/table/table.js
Normal file
104
components/table/table.js
Normal file
|
@ -0,0 +1,104 @@
|
||||||
|
// components/table/table/table.js
|
||||||
|
|
||||||
|
Component({
|
||||||
|
/**
|
||||||
|
* 组件的属性列表
|
||||||
|
*/
|
||||||
|
externalClasses: ['table-class', 'tr-class', 'td-class', 'th-class', 'tr-class_even', 'tr-class_odd'],
|
||||||
|
properties: {
|
||||||
|
colWidth: Number,
|
||||||
|
isScroll: {
|
||||||
|
type: Boolean,
|
||||||
|
value: false
|
||||||
|
},
|
||||||
|
header: {
|
||||||
|
type: Array,
|
||||||
|
value: []
|
||||||
|
},
|
||||||
|
list: {
|
||||||
|
type: Array,
|
||||||
|
value: []
|
||||||
|
},
|
||||||
|
showActive: {
|
||||||
|
type: Boolean,
|
||||||
|
value: true
|
||||||
|
},
|
||||||
|
activeColor: {
|
||||||
|
type: String,
|
||||||
|
value: '#d6e8ff'
|
||||||
|
},
|
||||||
|
maxLine: {
|
||||||
|
type: Number,
|
||||||
|
value: 2
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
observers: {
|
||||||
|
'header,list': function (header, list) {
|
||||||
|
this.init();
|
||||||
|
}
|
||||||
|
},
|
||||||
|
/**
|
||||||
|
* 组件的初始数据
|
||||||
|
*/
|
||||||
|
data: {
|
||||||
|
},
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 组件的方法列表
|
||||||
|
*/
|
||||||
|
methods: {
|
||||||
|
setWidth (head) {
|
||||||
|
const colWidth = this.data.colWidth || head.length < 3 ? (730 / head.length) : 300;
|
||||||
|
const tableWidth = head.length >= 1 && this.data.isScroll ? head.length * colWidth : null;
|
||||||
|
this.setData({ tableWidth });
|
||||||
|
},
|
||||||
|
init () {
|
||||||
|
!this.data.tableWidth && this.setWidth(this.data.header);
|
||||||
|
const { list, header } = this.data;
|
||||||
|
let showHeader = JSON.parse(JSON.stringify(header));
|
||||||
|
let showList = JSON.parse(JSON.stringify(list));
|
||||||
|
showHeader.forEach((head, headIndex) => {
|
||||||
|
showList.forEach((item, index) => {
|
||||||
|
const body = header[headIndex].renderBody && header[headIndex].renderBody(item, index);
|
||||||
|
const color = header[headIndex].renderColor && header[headIndex].renderColor(item, index);
|
||||||
|
const bg = header[headIndex].renderBg && header[headIndex].renderBg(item, index);
|
||||||
|
if (body !== undefined) {
|
||||||
|
head.key = `col${headIndex}`;
|
||||||
|
item[`col${headIndex}`] = {};
|
||||||
|
item[`col${headIndex}`].text = body;
|
||||||
|
} else if (head.key) {
|
||||||
|
const text = item[head.key];
|
||||||
|
item[head.key] = { text };
|
||||||
|
}
|
||||||
|
if (color && head.key) {
|
||||||
|
item[head.key].color = color;
|
||||||
|
}
|
||||||
|
if (bg && head.key) {
|
||||||
|
item[head.key].bg = bg;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
});
|
||||||
|
this.setData({ showHeader, showList });
|
||||||
|
},
|
||||||
|
checkRow (index) {
|
||||||
|
if (!this.data.showActive) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
index = /\d+/.test(index) ? index : 0;
|
||||||
|
this.setData({ currentIndex: index });
|
||||||
|
},
|
||||||
|
onLongPress (e) {
|
||||||
|
const { index } = e.currentTarget.dataset;
|
||||||
|
this.checkRow(index);
|
||||||
|
const data = this.data.list[index];
|
||||||
|
this.triggerEvent('onLongPress', { index, data });
|
||||||
|
},
|
||||||
|
onTap (e) {
|
||||||
|
const { index } = e.currentTarget.dataset;
|
||||||
|
this.checkRow(index);
|
||||||
|
const data = this.data.list[index];
|
||||||
|
this.triggerEvent('onClick', { index, data });
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
4
components/table/table.json
Normal file
4
components/table/table.json
Normal file
|
@ -0,0 +1,4 @@
|
||||||
|
{
|
||||||
|
"component": true,
|
||||||
|
"usingComponents": {}
|
||||||
|
}
|
69
components/table/table.less
Normal file
69
components/table/table.less
Normal file
|
@ -0,0 +1,69 @@
|
||||||
|
@display: table,
|
||||||
|
table-row,
|
||||||
|
table-cell;
|
||||||
|
|
||||||
|
each(@display, {
|
||||||
|
.d-@{value} {
|
||||||
|
display: @value !important;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
) .d-table-cell {
|
||||||
|
padding: 10px 5px;
|
||||||
|
font-size: 14px;
|
||||||
|
word-break: break-all;
|
||||||
|
min-height: 42px;
|
||||||
|
max-width: 150px;
|
||||||
|
position: relative;
|
||||||
|
}
|
||||||
|
|
||||||
|
.d-table {
|
||||||
|
background-color: #fff;
|
||||||
|
|
||||||
|
.d-table-row.active {
|
||||||
|
background-color: #d6e8ff;
|
||||||
|
}
|
||||||
|
|
||||||
|
.d-table-row:not(:first-child) {
|
||||||
|
.d-table-cell {
|
||||||
|
&::before {
|
||||||
|
content: '';
|
||||||
|
position: absolute;
|
||||||
|
left: 0;
|
||||||
|
top: 0;
|
||||||
|
width: 100%;
|
||||||
|
height: 1px;
|
||||||
|
background-color: #ddd;
|
||||||
|
transform: scaleY(0.3);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.table {
|
||||||
|
position: relative;
|
||||||
|
background-color: #fff;
|
||||||
|
overflow: hidden;
|
||||||
|
font-size: 13px;
|
||||||
|
width: 100%;
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
.table1-view {
|
||||||
|
width: 100%;
|
||||||
|
}
|
||||||
|
|
||||||
|
.table1 {
|
||||||
|
width: var(--width, 100%);
|
||||||
|
min-width: auto;
|
||||||
|
}
|
||||||
|
|
||||||
|
.text {
|
||||||
|
font-size: 14px;
|
||||||
|
overflow: hidden;
|
||||||
|
text-overflow: ellipsis;
|
||||||
|
display: -webkit-box;
|
||||||
|
-webkit-box-orient: vertical;
|
||||||
|
-webkit-line-clamp: var(--max_line, 2)
|
||||||
|
}
|
22
components/table/table.wxml
Normal file
22
components/table/table.wxml
Normal file
|
@ -0,0 +1,22 @@
|
||||||
|
<wxs module="getTableWidth">
|
||||||
|
module.exports = function (tableWidth) {
|
||||||
|
if (!tableWidth) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
return tableWidth + 'rpx'
|
||||||
|
}
|
||||||
|
</wxs>
|
||||||
|
<scroll-view hidden="{{!showList.length||!showHeader.length}}" scroll-x class="table1-view" style="--max_line:{{maxLine}};--width:{{getTableWidth(tableWidth)}}">
|
||||||
|
<view class="table1 d-table table-class">
|
||||||
|
<view class="d-table-row tr-class">
|
||||||
|
<view class="d-table-cell th-class" wx:for="{{showHeader}}" wx:key="index">{{item.title}}</view>
|
||||||
|
</view>
|
||||||
|
<view bindtap="onTap" data-index="{{index}}" bindlongpress="onLongPress" class="tr-class d-table-row {{currentIndex===index?'active':''}} {{index%2===0?'tr-class_even':'tr-class_odd'}}" wx:for="{{showList}}" wx:key="index">
|
||||||
|
<view class="d-table-cell td-class " wx:for="{{showHeader}}" wx:for-item="head" wx:for-index="hindex" wx:key="hindex" style="background-color: {{item[head.key].bg}};color:{{item[head.key].color}}">
|
||||||
|
<view class="text">
|
||||||
|
{{item[head.key].text}}
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
</scroll-view>
|
55
components/table/table.wxss
Normal file
55
components/table/table.wxss
Normal file
|
@ -0,0 +1,55 @@
|
||||||
|
.d-table {
|
||||||
|
display: table !important;
|
||||||
|
}
|
||||||
|
.d-table-row {
|
||||||
|
display: table-row !important;
|
||||||
|
}
|
||||||
|
.d-table-cell {
|
||||||
|
display: table-cell !important;
|
||||||
|
}
|
||||||
|
.d-table-cell {
|
||||||
|
padding: 10px 5px;
|
||||||
|
font-size: 14px;
|
||||||
|
word-break: break-all;
|
||||||
|
min-height: 42px;
|
||||||
|
max-width: 150px;
|
||||||
|
position: relative;
|
||||||
|
}
|
||||||
|
.d-table {
|
||||||
|
background-color: #fff;
|
||||||
|
}
|
||||||
|
.d-table .d-table-row.active {
|
||||||
|
background-color: #d6e8ff;
|
||||||
|
}
|
||||||
|
.d-table .d-table-row:not(:first-child) .d-table-cell::before {
|
||||||
|
content: '';
|
||||||
|
position: absolute;
|
||||||
|
left: 0;
|
||||||
|
top: 0;
|
||||||
|
width: 100%;
|
||||||
|
height: 1px;
|
||||||
|
background-color: #ddd;
|
||||||
|
transform: scaleY(0.3);
|
||||||
|
}
|
||||||
|
.table {
|
||||||
|
position: relative;
|
||||||
|
background-color: #fff;
|
||||||
|
overflow: hidden;
|
||||||
|
font-size: 13px;
|
||||||
|
width: 100%;
|
||||||
|
}
|
||||||
|
.table1-view {
|
||||||
|
width: 100%;
|
||||||
|
}
|
||||||
|
.table1 {
|
||||||
|
width: var(--width, 100%);
|
||||||
|
min-width: auto;
|
||||||
|
}
|
||||||
|
.text {
|
||||||
|
font-size: 14px;
|
||||||
|
overflow: hidden;
|
||||||
|
text-overflow: ellipsis;
|
||||||
|
display: -webkit-box;
|
||||||
|
-webkit-box-orient: vertical;
|
||||||
|
-webkit-line-clamp: var(--max_line, 2);
|
||||||
|
}
|
|
@ -24,6 +24,11 @@ Page({
|
||||||
handleBack() {
|
handleBack() {
|
||||||
wx.navigateBack()
|
wx.navigateBack()
|
||||||
},
|
},
|
||||||
|
jumpToDetail() {
|
||||||
|
wx.redirectTo({
|
||||||
|
url: '/pages/invoiceDetailContent/index',
|
||||||
|
})
|
||||||
|
},
|
||||||
/**
|
/**
|
||||||
* 生命周期函数--监听页面初次渲染完成
|
* 生命周期函数--监听页面初次渲染完成
|
||||||
*/
|
*/
|
||||||
|
|
|
@ -51,7 +51,13 @@
|
||||||
|
|
||||||
<navigator title="发票详细" canBack="{{true}}" bind:back="back" />
|
<navigator title="发票详细" canBack="{{true}}" bind:back="back" />
|
||||||
<view class="wrapper">
|
<view class="wrapper">
|
||||||
<view> 尊敬的客户,您好 </view>
|
<view style="margin-top: 40rpx;"> 尊敬的客户,您好: </view>
|
||||||
<view> 已经为您开具订单2222222222的发票,发票数量共计1张,如下: </view>
|
<view style="margin-top: 20rpx;"> 已经为您开具订单2222222222的发票,发票数量共计1张,如下: </view>
|
||||||
<view> 发票裂隙:数电发票(电子发票),发票号码:54645654656556,您可以点击“发票下载”获取该发票文件 </view>
|
<view style="margin-top: 20rpx;"> 发票类型:数电发票(电子发票),发票号码:54645654656556,您可以点击“发票XML文件下载”获取该发票XML文件,或者点击“发票PDF文件下载”获取该发票PDF文件; </view>
|
||||||
|
<view style="margin-top: 20rpx;"> 同时您也可以到预留的邮箱中查看下载发票。 </view>
|
||||||
|
</view>
|
||||||
|
|
||||||
|
<view class="operate">
|
||||||
|
<van-button type="info" style="flex: 1;" block> 下载 </van-button>
|
||||||
|
<van-button type="info" style="flex: 1;margin-left: 40rpx;" block bind:click="jumpToDetail"> 发票明细 </van-button>
|
||||||
</view>
|
</view>
|
|
@ -4,4 +4,16 @@
|
||||||
display: flex;
|
display: flex;
|
||||||
align-items: center;
|
align-items: center;
|
||||||
margin-top: 50rpx;
|
margin-top: 50rpx;
|
||||||
|
}
|
||||||
|
|
||||||
|
page {
|
||||||
|
background-color: var(--transparent-green);
|
||||||
|
}
|
||||||
|
|
||||||
|
.operate {
|
||||||
|
margin-top: 80rpx;
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
margin-left: 30rpx;
|
||||||
|
margin-right: 30rpx;
|
||||||
}
|
}
|
84
pages/invoiceDetailContent/index.js
Normal file
84
pages/invoiceDetailContent/index.js
Normal file
|
@ -0,0 +1,84 @@
|
||||||
|
import { getInvoiceInfoDetail } from "../../service/invoice";
|
||||||
|
|
||||||
|
// pages/invoiceDetailContent/index.js
|
||||||
|
Page({
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 页面的初始数据
|
||||||
|
*/
|
||||||
|
data: {
|
||||||
|
detail: {},
|
||||||
|
header: [
|
||||||
|
{ key: 'time', title: '月份' },
|
||||||
|
{ title: '电表地址',renderBody: (item) => item.meter.address },
|
||||||
|
{ key: 'money', title: '金额' },
|
||||||
|
]
|
||||||
|
},
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 生命周期函数--监听页面加载
|
||||||
|
*/
|
||||||
|
onLoad(options) {
|
||||||
|
const { id } = options;
|
||||||
|
this.getDetail(id)
|
||||||
|
},
|
||||||
|
async getDetail(id) {
|
||||||
|
const { code, message, data } = await getInvoiceInfoDetail(id);
|
||||||
|
this.setData({
|
||||||
|
detail: data
|
||||||
|
})
|
||||||
|
},
|
||||||
|
jumpToInvoiceDetail() {
|
||||||
|
wx.redirectTo({
|
||||||
|
url: '/pages/invoiceDetail/index',
|
||||||
|
})
|
||||||
|
},
|
||||||
|
/**
|
||||||
|
* 生命周期函数--监听页面初次渲染完成
|
||||||
|
*/
|
||||||
|
onReady() {
|
||||||
|
|
||||||
|
},
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 生命周期函数--监听页面显示
|
||||||
|
*/
|
||||||
|
onShow() {
|
||||||
|
|
||||||
|
},
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 生命周期函数--监听页面隐藏
|
||||||
|
*/
|
||||||
|
onHide() {
|
||||||
|
|
||||||
|
},
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 生命周期函数--监听页面卸载
|
||||||
|
*/
|
||||||
|
onUnload() {
|
||||||
|
|
||||||
|
},
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 页面相关事件处理函数--监听用户下拉动作
|
||||||
|
*/
|
||||||
|
onPullDownRefresh() {
|
||||||
|
|
||||||
|
},
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 页面上拉触底事件的处理函数
|
||||||
|
*/
|
||||||
|
onReachBottom() {
|
||||||
|
|
||||||
|
},
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 用户点击右上角分享
|
||||||
|
*/
|
||||||
|
onShareAppMessage() {
|
||||||
|
|
||||||
|
}
|
||||||
|
})
|
9
pages/invoiceDetailContent/index.json
Normal file
9
pages/invoiceDetailContent/index.json
Normal file
|
@ -0,0 +1,9 @@
|
||||||
|
{
|
||||||
|
"usingComponents": {
|
||||||
|
"van-field": "@vant/weapp/field/index",
|
||||||
|
"table": "/components/table/table",
|
||||||
|
"van-button": "@vant/weapp/button/index",
|
||||||
|
"navigator": "/components/navigator/index"
|
||||||
|
},
|
||||||
|
"navigationStyle": "custom"
|
||||||
|
}
|
80
pages/invoiceDetailContent/index.wxml
Normal file
80
pages/invoiceDetailContent/index.wxml
Normal file
|
@ -0,0 +1,80 @@
|
||||||
|
<!--pages/invoiceDetailContent/index.wxml-->
|
||||||
|
<navigator title="发票明细" canBack="{{true}}" />
|
||||||
|
<view class="wrapper">
|
||||||
|
<van-field
|
||||||
|
value="{{detail.tenement.name}}"
|
||||||
|
label="开票名称 :"
|
||||||
|
readonly
|
||||||
|
autosize="{{true}}"
|
||||||
|
type="textarea"
|
||||||
|
border="{{false}}"
|
||||||
|
title-width="160rpx"
|
||||||
|
/>
|
||||||
|
<van-field
|
||||||
|
value="{{detail.approveTime}}"
|
||||||
|
label="申请时间 :"
|
||||||
|
readonly
|
||||||
|
autosize="{{true}}"
|
||||||
|
type="textarea"
|
||||||
|
border="{{false}}"
|
||||||
|
title-width="160rpx"
|
||||||
|
/>
|
||||||
|
<van-field
|
||||||
|
value="{{detail.finishTime}}"
|
||||||
|
label="开票时间 :"
|
||||||
|
readonly
|
||||||
|
autosize="{{true}}"
|
||||||
|
type="textarea"
|
||||||
|
border="{{false}}"
|
||||||
|
title-width="160rpx"
|
||||||
|
/>
|
||||||
|
<van-field
|
||||||
|
value="{{detail.number}}"
|
||||||
|
label="发票编号 :"
|
||||||
|
readonly
|
||||||
|
autosize="{{true}}"
|
||||||
|
type="textarea"
|
||||||
|
border="{{false}}"
|
||||||
|
title-width="160rpx"
|
||||||
|
/>
|
||||||
|
<van-field
|
||||||
|
value="{{detail.money}}"
|
||||||
|
label="开票金额 :"
|
||||||
|
readonly
|
||||||
|
autosize="{{true}}"
|
||||||
|
type="textarea"
|
||||||
|
border="{{false}}"
|
||||||
|
title-width="160rpx"
|
||||||
|
/>
|
||||||
|
<van-field
|
||||||
|
value="{{detail.invoice.content}}"
|
||||||
|
label="开票内容 :"
|
||||||
|
readonly
|
||||||
|
autosize="{{true}}"
|
||||||
|
type="textarea"
|
||||||
|
border="{{false}}"
|
||||||
|
title-width="160rpx"
|
||||||
|
/>
|
||||||
|
<van-field
|
||||||
|
value="{{detail.invoice.type === 0 ? '普通电子发票' : '增值税专用电子发票'}}"
|
||||||
|
label="发票类型 :"
|
||||||
|
readonly
|
||||||
|
autosize="{{true}}"
|
||||||
|
type="textarea"
|
||||||
|
border="{{false}}"
|
||||||
|
title-width="160rpx"
|
||||||
|
/>
|
||||||
|
<van-field
|
||||||
|
label="电费情况 :"
|
||||||
|
readonly
|
||||||
|
autosize="{{true}}"
|
||||||
|
type="textarea"
|
||||||
|
border="{{false}}"
|
||||||
|
title-width="160rpx"
|
||||||
|
/>
|
||||||
|
<table header="{{header}}" list="{{detail.list}}" />
|
||||||
|
<view style="padding-top: 40rpx;padding-bottom: 40rpx;display: flex; justify-content: center;">
|
||||||
|
<van-button type="info" bind:click="jumpToInvoiceDetail">发票</van-button>
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
<view style="height: 50rpx;"></view>
|
10
pages/invoiceDetailContent/index.wxss
Normal file
10
pages/invoiceDetailContent/index.wxss
Normal file
|
@ -0,0 +1,10 @@
|
||||||
|
/* pages/invoiceDetailContent/index.wxss */
|
||||||
|
page {
|
||||||
|
background-color: var(--transparent-green);
|
||||||
|
}
|
||||||
|
|
||||||
|
.wrapper {
|
||||||
|
background-color: #fff;
|
||||||
|
margin: 30rpx;
|
||||||
|
border-radius: 24rpx;
|
||||||
|
}
|
|
@ -1,3 +1,7 @@
|
||||||
|
import { getAlreadyInvoiceList } from "../../../../service/invoice"
|
||||||
|
import { alertInfo } from "../../../../utils/index";
|
||||||
|
import request from '../../../../utils/request'
|
||||||
|
const { OK } = request;
|
||||||
// pages/invoiceList/components/already/index.js
|
// pages/invoiceList/components/already/index.js
|
||||||
Component({
|
Component({
|
||||||
|
|
||||||
|
@ -12,13 +16,45 @@ Component({
|
||||||
* 组件的初始数据
|
* 组件的初始数据
|
||||||
*/
|
*/
|
||||||
data: {
|
data: {
|
||||||
|
page: 1,
|
||||||
|
list: []
|
||||||
|
},
|
||||||
|
onRefresh() {
|
||||||
|
console.log('--------------')
|
||||||
|
},
|
||||||
|
lifetimes: {
|
||||||
|
attached() {
|
||||||
|
this.getList();
|
||||||
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 组件的方法列表
|
* 组件的方法列表
|
||||||
*/
|
*/
|
||||||
methods: {
|
methods: {
|
||||||
|
async getList() {
|
||||||
|
const { page, list = [] } = this.data;
|
||||||
|
const { code, message, data } = await getAlreadyInvoiceList(page);
|
||||||
|
if (!data.length) {
|
||||||
|
alertInfo("没用更多数据了")
|
||||||
|
return
|
||||||
|
}
|
||||||
|
this.setData({
|
||||||
|
list: [...list, ...data, ],
|
||||||
|
page: page + 1,
|
||||||
|
})
|
||||||
|
},
|
||||||
|
scrollToLower() {
|
||||||
|
this.getList();
|
||||||
|
},
|
||||||
|
jumpToDetail() {
|
||||||
|
wx.navigateTo({
|
||||||
|
url: '/pages/invoiceDetail/index',
|
||||||
|
})
|
||||||
|
},
|
||||||
|
jumpToDetailContent() {
|
||||||
|
wx.navigateTo({
|
||||||
|
url: '/pages/invoiceDetailContent/index',
|
||||||
|
})
|
||||||
|
}
|
||||||
}
|
}
|
||||||
})
|
})
|
|
@ -1,26 +1,31 @@
|
||||||
<!--pages/invoiceList/components/already/index.wxml-->
|
<!--pages/invoiceList/components/already/index.wxml-->
|
||||||
<view class="card">
|
|
||||||
<view class="left">
|
|
||||||
<view class="title">
|
<scroll-view scroll-y lower-threshold="100px" bindscrolltolower="scrollToLower" style="height: 80vh;" scroll-top="{{topHeight}}px" class="scrView">
|
||||||
河北华昌宝能售电有限公司
|
<view class="card" wx:for="{{list}}">
|
||||||
</view>
|
<view class="left">
|
||||||
<view class="invoiceContent">
|
<view class="title">
|
||||||
发票内容:电费
|
{{item.invoice.name}}
|
||||||
</view>
|
</view>
|
||||||
<view class="invoiceType">
|
<view class="invoiceContent">
|
||||||
发票类型:增值税专用发票
|
发票内容: {{item.invoice.content}}
|
||||||
</view>
|
</view>
|
||||||
<view class="time">
|
<view class="invoiceType">
|
||||||
2024年3月3日 18:00:00
|
发票类型:{{ item.invoice.type === 0 ? '普通电子发票' : '增值税专用电子发票' }}
|
||||||
</view>
|
</view>
|
||||||
</view>
|
<view class="time">
|
||||||
<view class="right">
|
{{item.finishTime}}
|
||||||
<view class="money"> ¥3026 </view>
|
</view>
|
||||||
<view class="operate">
|
</view>
|
||||||
<view style="margin-top: 20rpx; margin-bottom: 20rpx;">
|
<view class="right">
|
||||||
<van-button type="info" class="invoiceBtn" bind:click="submit" size="small">发票</van-button>
|
<view class="money"> ¥{{item.money}} </view>
|
||||||
|
<view class="operate">
|
||||||
|
<view style="margin-top: 20rpx; margin-bottom: 20rpx;">
|
||||||
|
<van-button type="info" class="invoiceBtn" bind:click="submit" size="small" bind:click="jumpToDetail">发票</van-button>
|
||||||
|
</view>
|
||||||
|
<van-button type="info" class="detailBtn" bind:click="submit" size="small" bind:click="jumpToDetailContent">明细</van-button>
|
||||||
</view>
|
</view>
|
||||||
<van-button type="info" class="detailBtn" bind:click="submit" size="small">明细</van-button>
|
|
||||||
</view>
|
</view>
|
||||||
</view>
|
</view>
|
||||||
</view>
|
<view style="height: 50rpx;"></view>
|
||||||
|
</scroll-view>
|
|
@ -1,4 +1,5 @@
|
||||||
import { getInvoiceInfo, updateInvoiceInfo } from "../../../../service/invoice"
|
import { getInvoiceInfo, updateInvoiceInfo } from "../../../../service/invoice"
|
||||||
|
import { getUserInfo } from "../../../../service/user";
|
||||||
import { alertInfo, alertSuccess } from "../../../../utils/index";
|
import { alertInfo, alertSuccess } from "../../../../utils/index";
|
||||||
|
|
||||||
// pages/invoiceList/components/info/index.js
|
// pages/invoiceList/components/info/index.js
|
||||||
|
@ -13,6 +14,7 @@ Component({
|
||||||
lifetimes: {
|
lifetimes: {
|
||||||
attached() {
|
attached() {
|
||||||
this.getDetail();
|
this.getDetail();
|
||||||
|
this.getUser();
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
/**
|
/**
|
||||||
|
@ -33,6 +35,10 @@ Component({
|
||||||
|
|
||||||
this.setData({ detail: {...data, },editType: 'detail', formData: {} })
|
this.setData({ detail: {...data, },editType: 'detail', formData: {} })
|
||||||
},
|
},
|
||||||
|
async getUser() {
|
||||||
|
const { code, message, data } = await getUserInfo()
|
||||||
|
this.setData({ user: data });
|
||||||
|
},
|
||||||
changeEditType() {
|
changeEditType() {
|
||||||
this.setData({ editType: 'edit', formData: this.data.detail })
|
this.setData({ editType: 'edit', formData: this.data.detail })
|
||||||
},
|
},
|
||||||
|
|
|
@ -4,7 +4,7 @@
|
||||||
<view
|
<view
|
||||||
slot="operate"
|
slot="operate"
|
||||||
class="cardOperate"
|
class="cardOperate"
|
||||||
wx:if="{{editType === 'detail'}}"
|
wx:if="{{editType === 'detail' && user.isAdmin}}"
|
||||||
bind:tap="changeEditType"
|
bind:tap="changeEditType"
|
||||||
>
|
>
|
||||||
<van-icon name="edit" />
|
<van-icon name="edit" />
|
||||||
|
|
|
@ -40,7 +40,7 @@ Page({
|
||||||
list: [...tenements]
|
list: [...tenements]
|
||||||
})
|
})
|
||||||
},
|
},
|
||||||
async getCode(e, that) {
|
async getCode() {
|
||||||
// const { index, id } = e.currentTarget.dataset;
|
// const { index, id } = e.currentTarget.dataset;
|
||||||
const tenement = wx.getStorageSync('tenement');
|
const tenement = wx.getStorageSync('tenement');
|
||||||
const { code, message, data } = await getWxCode(tenement.id)
|
const { code, message, data } = await getWxCode(tenement.id)
|
||||||
|
|
|
@ -28,5 +28,10 @@ export const getInvoiceList = async function() {
|
||||||
|
|
||||||
// 获取创建的发开票信息详情
|
// 获取创建的发开票信息详情
|
||||||
export const getInvoiceInfoDetail = async function(id) {
|
export const getInvoiceInfoDetail = async function(id) {
|
||||||
return await GET(`/wx/getInvoiceInfoDetail/${id}`);
|
return await GET(`/wx/getInvoiceInfoDetail/${id}/${wx.getStorageSync('tenement')?.id}`);
|
||||||
|
}
|
||||||
|
|
||||||
|
// 获取已开发票的列表
|
||||||
|
export const getAlreadyInvoiceList = async function(page) {
|
||||||
|
return await GET(`/wx/getAlreadyInvoiceList?tenement=${wx.getStorageSync('tenement')?.id}&page=${page}`);
|
||||||
}
|
}
|
Loading…
Reference in New Issue
Block a user