完成发票初始版本
This commit is contained in:
		
							
								
								
									
										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> | ||||||
| @@ -5,3 +5,15 @@ | |||||||
|   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"> |  | ||||||
|  |  | ||||||
|  | <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 class="left"> |     <view class="left"> | ||||||
|       <view class="title"> |       <view class="title"> | ||||||
|       河北华昌宝能售电有限公司 |         {{item.invoice.name}} | ||||||
|       </view> |       </view> | ||||||
|       <view class="invoiceContent"> |       <view class="invoiceContent"> | ||||||
|       发票内容:电费 |         发票内容: {{item.invoice.content}} | ||||||
|       </view> |       </view> | ||||||
|       <view class="invoiceType"> |       <view class="invoiceType"> | ||||||
|       发票类型:增值税专用发票 |         发票类型:{{ item.invoice.type === 0 ? '普通电子发票' : '增值税专用电子发票' }} | ||||||
|       </view> |       </view> | ||||||
|       <view class="time"> |       <view class="time"> | ||||||
|       2024年3月3日 18:00:00 |         {{item.finishTime}} | ||||||
|       </view> |       </view> | ||||||
|     </view> |     </view> | ||||||
|     <view class="right"> |     <view class="right"> | ||||||
|     <view class="money"> ¥3026 </view> |       <view class="money"> ¥{{item.money}} </view> | ||||||
|       <view class="operate"> |       <view class="operate"> | ||||||
|         <view style="margin-top: 20rpx; margin-bottom: 20rpx;"> |         <view style="margin-top: 20rpx; margin-bottom: 20rpx;"> | ||||||
|         <van-button type="info" class="invoiceBtn" bind:click="submit" size="small">发票</van-button> |           <van-button type="info" class="invoiceBtn" bind:click="submit" size="small" bind:click="jumpToDetail">发票</van-button> | ||||||
|         </view> |         </view> | ||||||
|       <van-button type="info" class="detailBtn" bind:click="submit" size="small">明细</van-button> |         <van-button type="info" class="detailBtn" bind:click="submit" size="small" bind:click="jumpToDetailContent">明细</van-button> | ||||||
|       </view> |       </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}`); | ||||||
| } | } | ||||||
		Reference in New Issue
	
	Block a user