开票信息,开票列表,开票保存
This commit is contained in:
parent
268d49ec3c
commit
8bbe186208
4
app.json
4
app.json
@ -17,7 +17,9 @@
|
||||
"pages/treaty/rule/rule",
|
||||
"pages/mine/mineAccount/minePayRecord/minePayRecord",
|
||||
"pages/mine/mineAccount/mineInvoice/mineInvoice",
|
||||
"pages/mine/mineAccount/invoiceInfo/invoiceInfo"
|
||||
"pages/mine/mineAccount/invoiceInfo/invoiceInfo",
|
||||
"pages/mine/mineAccount/makeInvoice/makeInvoice",
|
||||
"pages/mine/mineAccount/invoiceOrder/invoiceOrder"
|
||||
],
|
||||
"window": {
|
||||
"navigationBarTextStyle": "black",
|
||||
|
18
app.wxss
18
app.wxss
@ -51,6 +51,24 @@ page {
|
||||
margin-left: 5rpx;
|
||||
}
|
||||
|
||||
.star::after {
|
||||
content: "*";
|
||||
color: red;
|
||||
margin-left: 3px;
|
||||
}
|
||||
|
||||
.bottom-footer {
|
||||
position: fixed;
|
||||
bottom: 0rpx;
|
||||
left: 0rpx;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
background-color: white;
|
||||
padding-bottom: 40rpx;
|
||||
align-items: center;
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
.ml-10 {
|
||||
margin-left: 10rpx;
|
||||
}
|
||||
|
@ -4,6 +4,7 @@ import {
|
||||
const Cache = require('../../utils/storage');
|
||||
// 公共API
|
||||
const apiPath = {
|
||||
mineInvoiceOrderList: '/api/invoicerecharge/recharge-listpage/{userId}/{status}', //可以开具发票的订单
|
||||
mineInvoiceList: '/api/invoice-config/listpage/{userId}', //我的开票信息
|
||||
saveInvoiceInfo: '/api/invoice-config/save/{userId}', //保存开票信息
|
||||
updateInvoiceInfo: '/api/invoice-config/update/{invoiceId}', //修改开票信息
|
||||
@ -12,10 +13,20 @@ const apiPath = {
|
||||
saveInvoiceRecord: '/api/invoicerecharge/save/{userId}', // 保存开票申请
|
||||
updateInvoiceRecord: '/api/invoicerecharge/save/{userId}', //修改开票申请
|
||||
cancelInvoiceRecord: '/api/invoicerecharge/cancel/{invoiceRechargeId}', //取消开票申请
|
||||
dicByPId: '/api/data/listbyparentid/{pId}', //数据字典
|
||||
}
|
||||
|
||||
class InvoiceApi {
|
||||
static userId = Cache.get('userId')
|
||||
//获取可以开具发票的订单
|
||||
static doGetMineInvoiceOrderList(data, status) {
|
||||
const path = apiPath.mineInvoiceOrderList.replace('{userId}', this.userId).replace('{status}', status)
|
||||
return request(path, "GET", data, null, 'plug')
|
||||
}
|
||||
static doGetDicListByPId(id) {
|
||||
const path = apiPath.dicByPId.replace('{pId}', id)
|
||||
return request(path, "GET")
|
||||
}
|
||||
//我的开票信息
|
||||
static doGetMineInvoiceList(data) {
|
||||
const path = apiPath.mineInvoiceList.replace('{userId}', this.userId)
|
||||
|
@ -3,6 +3,7 @@ const Cache = require('../utils/storage');
|
||||
// const baseUrl = 'https://www.xzszwhy.cn/daqi/app';
|
||||
const operatorUrl = 'https://www.aimzhu.com/operator';
|
||||
const operatorPlug = 'https://www.aimzhu.com/operator-plugin'
|
||||
// const operatorPlug = 'http://192.168.0.15:8099/operator-plugin'
|
||||
// const operatorUrl = 'https://www.aimzhu.com/operator';
|
||||
const copyrightUrl = 'https://www.aimzhu.com/copyright';
|
||||
const uploadImgUrl = copyrightUrl + '/api/file/v2/upload-image'
|
||||
|
165
pages/mine/mineAccount/invoiceOrder/invoiceOrder.js
Normal file
165
pages/mine/mineAccount/invoiceOrder/invoiceOrder.js
Normal file
@ -0,0 +1,165 @@
|
||||
// pages/mine/mineAccount/invoiceOrder/invoiceOrder.js
|
||||
import InvoiceApi from '../../../../net/api/invoiceApi'
|
||||
Page({
|
||||
|
||||
/**
|
||||
* 页面的初始数据
|
||||
*/
|
||||
data: {
|
||||
currentStatus: 'not', //可否开具发票tab not可以开 yes 已开
|
||||
loadingState: 'loading',
|
||||
isLoadMore: false,
|
||||
listRefreshTrig: false,
|
||||
orderList: [], //订单列表
|
||||
pageData: {
|
||||
page: 1,
|
||||
rows: 10,
|
||||
startTime: '',
|
||||
endTime: '',
|
||||
thirdParty: '', //充值方式 微信 支付宝 对公转账
|
||||
},
|
||||
hasMore: true,
|
||||
startTime: '',
|
||||
endTime: '',
|
||||
checkList: [], //选中的可以开票的集合
|
||||
money: 0, //开票金额
|
||||
msgHint: '',
|
||||
msgType: 'error',
|
||||
msgShow: false
|
||||
},
|
||||
|
||||
/**
|
||||
* 生命周期函数--监听页面加载
|
||||
*/
|
||||
onLoad(options) {
|
||||
wx.setNavigationBarTitle({
|
||||
title: '开发票',
|
||||
})
|
||||
wx.setNavigationBarColor({
|
||||
frontColor: '#000000', // 必写项,字体颜色仅支持#ffffff和#000000
|
||||
backgroundColor: '#F0F0F0', // 传递的颜色值,仅支持十六进制颜色
|
||||
animation: { // 可选项
|
||||
duration: 500,
|
||||
timingFunc: 'easeIn'
|
||||
}
|
||||
})
|
||||
this.doRefreshList()
|
||||
},
|
||||
//切换tab
|
||||
doChangeStatus(e) {
|
||||
this.setData({
|
||||
currentStatus: e.currentTarget.dataset.value
|
||||
})
|
||||
this.doRefreshList()
|
||||
},
|
||||
//获取我的优惠卷
|
||||
doGetMineInvoiceOrderList(isRefresh) {
|
||||
const _self = this
|
||||
_self.setData({
|
||||
orderList: isRefresh ? [] : _self.data.orderList,
|
||||
loadingState: isRefresh ? 'loading' : ''
|
||||
})
|
||||
InvoiceApi.doGetMineInvoiceOrderList(_self.data.pageData, _self.data.currentStatus)
|
||||
.then(res => {
|
||||
var status = 'success'
|
||||
res.rows.map(item => {
|
||||
item.checked = _self.data.checkList.find(value => item.accountRechargeId == value.accountRechargeId)
|
||||
return item
|
||||
})
|
||||
status = res.rows && res.rows.length > 0 ? 'success' : 'empty'
|
||||
_self.setData({
|
||||
loadingState: isRefresh ? status : '',
|
||||
orderList: _self.data.orderList.concat(res.rows),
|
||||
listRefreshTrig: false,
|
||||
isLoadMore: false
|
||||
})
|
||||
_self.setData({
|
||||
hasMore: _self.data.orderList.length < res.total
|
||||
})
|
||||
}, err => {
|
||||
_self.setData({
|
||||
loadingState: 'error',
|
||||
listRefreshTrig: false,
|
||||
isLoadMore: false,
|
||||
hasMore: true
|
||||
})
|
||||
})
|
||||
},
|
||||
//下拉刷新
|
||||
doRefreshList() {
|
||||
const _self = this
|
||||
_self.setData({
|
||||
listRefreshTrig: true,
|
||||
loadingState: 'loading',
|
||||
hasMore: true,
|
||||
'pageData.page': 1,
|
||||
'pageData.startTime': _self.data.startTime,
|
||||
'pageData.endTime': _self.data.endTime,
|
||||
isLoadMore: false
|
||||
})
|
||||
_self.doGetMineInvoiceOrderList(true)
|
||||
},
|
||||
|
||||
//加载更多
|
||||
doLoadMore() {
|
||||
//判断是否正在加载中 与是否存在更多数据
|
||||
const _self = this
|
||||
if (_self.data.isLoadMore || !_self.data.hasMore) {
|
||||
return
|
||||
}
|
||||
|
||||
_self.setData({
|
||||
isLoadMore: true,
|
||||
'pageData.page': ++_self.data.pageData.page,
|
||||
'pageData.startTime': _self.data.startTime,
|
||||
'pageData.endTime': _self.data.endTime,
|
||||
})
|
||||
_self.doGetMineInvoiceOrderList(false)
|
||||
},
|
||||
//选中list
|
||||
checkItem(e) {
|
||||
if (this.data.currentStatus == 'yes') return;
|
||||
const value = e.currentTarget.dataset.value;
|
||||
// 查找当前选中项在 checkList 中的索引
|
||||
const checkListIndex = this.data.checkList.findIndex(item => item.accountRechargeId === value.accountRechargeId);
|
||||
const isHas = checkListIndex !== -1;
|
||||
// 更新 orderList 中对应项的 checked 状态
|
||||
const newOrderList = this.data.orderList.map(item => {
|
||||
item.checked = item.accountRechargeId === value.accountRechargeId ? !isHas : item.checked;
|
||||
return item;
|
||||
});
|
||||
// 更新 checkList
|
||||
var newCheckList = [...this.data.checkList];
|
||||
if (isHas) {
|
||||
newCheckList.splice(checkListIndex, 1);
|
||||
} else {
|
||||
newCheckList.push(value);
|
||||
}
|
||||
// 使用 setData 更新数据
|
||||
this.setData({
|
||||
checkList: newCheckList,
|
||||
orderList: newOrderList,
|
||||
money: newCheckList.length > 0 ? newCheckList.map(item => {
|
||||
let count = 0
|
||||
count += item.rechargeMoney
|
||||
return count
|
||||
}) : 0
|
||||
});
|
||||
},
|
||||
//去开票
|
||||
goMakeInvoice() {
|
||||
if (this.data.money <= 0) {
|
||||
this.setData({
|
||||
msgHint: '请先选择要开票的充值记录',
|
||||
msgType: 'error',
|
||||
msgShow: true
|
||||
})
|
||||
} else {
|
||||
const idArray = this.data.checkList.map(item => item.accountRechargeId)
|
||||
const ids = idArray.join(',')
|
||||
wx.navigateTo({
|
||||
url: `/pages/mine/mineAccount/makeInvoice/makeInvoice?money=${this.data.money}&ids=${ids}`,
|
||||
})
|
||||
}
|
||||
}
|
||||
})
|
7
pages/mine/mineAccount/invoiceOrder/invoiceOrder.json
Normal file
7
pages/mine/mineAccount/invoiceOrder/invoiceOrder.json
Normal file
@ -0,0 +1,7 @@
|
||||
{
|
||||
"usingComponents": {
|
||||
"mp-loading": "weui-miniprogram/loading/loading",
|
||||
"container-loading": "/components/container-loading/container-loading",
|
||||
"mp-toptips": "weui-miniprogram/toptips/toptips"
|
||||
}
|
||||
}
|
48
pages/mine/mineAccount/invoiceOrder/invoiceOrder.wxml
Normal file
48
pages/mine/mineAccount/invoiceOrder/invoiceOrder.wxml
Normal file
@ -0,0 +1,48 @@
|
||||
<!--pages/mine/mineAccount/invoiceOrder/invoiceOrder.wxml-->
|
||||
<!-- 可以开具发票的订单 -->
|
||||
<view class="page-container">
|
||||
<!-- <view class="list-title-btns">
|
||||
<view bind:tap="doChangeStatus" data-value="not" class="{{currentStatus=='not'? 'btn-select':'btn-normal'}} border-left">
|
||||
<view class="tab">
|
||||
<text>可开</text>
|
||||
<view class="{{currentStatus=='not'?'border-select':'border-normal'}}"></view>
|
||||
</view>
|
||||
</view>
|
||||
<view bind:tap="doChangeStatus" data-value="yes" class="{{currentStatus=='yes'? 'btn-select':'btn-normal'}} border-right">
|
||||
<view class="tab">
|
||||
<text>已开</text>
|
||||
<view class="{{currentStatus=='yes'?'border-select':'border-normal'}}"></view>
|
||||
</view>
|
||||
</view>
|
||||
</view> -->
|
||||
<view style="margin-top: 20px;">
|
||||
<container-loading loadingState="{{loadingState}}">
|
||||
<scroll-view scroll-y style="height: 85vh;" bindrefresherrefresh="doRefreshList" refresher-enabled refresher-triggered="{{listRefreshTrig}}" bindscrolltolower="doLoadMore" lower-threshold='30'>
|
||||
<view class="order-list-box">
|
||||
<block wx:for="{{orderList}}" wx:key="index">
|
||||
<view class="order-list-item" bind:tap="checkItem" data-value="{{item}}">
|
||||
<checkbox checked="{{item.checked}}" wx:if="{{currentStatus=='not'}}" class="custom-wx-checkbox"></checkbox>
|
||||
<view class="order-list-item-content">
|
||||
<view class="order-item-time-box">
|
||||
<view class="time-content icon-time">{{item.reconciliationTime}}</view>
|
||||
<view class="{{tools.payWay(item.thirdParty)}} pay-icon-size"></view>
|
||||
</view>
|
||||
<view class="order-item-title-box">
|
||||
<view class="success-time">到账时间:{{item.rechargeFinalTime}}</view>
|
||||
<rich-text class="pay-money" nodes="{{tools.moneyTxt(10,item.rechargeMoney)}}"></rich-text>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
</block>
|
||||
<mp-loading show="{{isLoadMore}}" type="circle"></mp-loading>
|
||||
</view>
|
||||
</scroll-view>
|
||||
</container-loading>
|
||||
</view>
|
||||
<view class="bottom-footer">
|
||||
<view class="money">开票金额:<text class="price">{{money}}元</text></view>
|
||||
<view class="confirm-btn" bind:tap="goMakeInvoice">去开票</view>
|
||||
</view>
|
||||
</view>
|
||||
<wxs src="../../../../utils/comm.wxs" module="tools"></wxs>
|
||||
<mp-toptips msg="{{msgHint}}" delay="{{2000}}" type="{{msgType}}" show="{{msgShow}}"></mp-toptips>
|
212
pages/mine/mineAccount/invoiceOrder/invoiceOrder.wxss
Normal file
212
pages/mine/mineAccount/invoiceOrder/invoiceOrder.wxss
Normal file
@ -0,0 +1,212 @@
|
||||
/* pages/mine/mineAccount/invoiceOrder/invoiceOrder.wxss */
|
||||
page {
|
||||
background: linear-gradient(to bottom, #F0F0F0, #FFFFFF);
|
||||
background-size: 100% 100vh;
|
||||
background-repeat: no-repeat;
|
||||
}
|
||||
|
||||
|
||||
.list-title-btns {
|
||||
position: fixed;
|
||||
top: 0;
|
||||
left: 0;
|
||||
display: flex;
|
||||
flex-direction: row;
|
||||
justify-content: space-between;
|
||||
font-size: 16px;
|
||||
text-align: center;
|
||||
width: 100vw;
|
||||
}
|
||||
|
||||
.btn-select {
|
||||
line-height: 20px;
|
||||
color: rgba(233, 157, 66, 1);
|
||||
font-size: 16px;
|
||||
text-align: center;
|
||||
flex: 1;
|
||||
padding: 10px;
|
||||
color: #2A9E75;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
.btn-normal {
|
||||
line-height: 20px;
|
||||
color: rgba(16, 16, 16, 1);
|
||||
flex: 1;
|
||||
font-size: 16px;
|
||||
text-align: center;
|
||||
padding: 10px;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
.border-select {
|
||||
width: 20px;
|
||||
height: 4px;
|
||||
background-color: #2A9E75;
|
||||
margin-top: 10px;
|
||||
border-radius: 2px;
|
||||
}
|
||||
|
||||
.tab {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
justify-content: center;
|
||||
align-items: center;
|
||||
}
|
||||
|
||||
.border-normal {
|
||||
width: 20px;
|
||||
height: 4px;
|
||||
margin-top: 10px;
|
||||
border-radius: 2px;
|
||||
background-color: #F0F0F0;
|
||||
}
|
||||
|
||||
|
||||
.order-list-box {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
}
|
||||
|
||||
.order-list-item {
|
||||
display: flex;
|
||||
flex-direction: row;
|
||||
background-color: white;
|
||||
border-radius: 10rpx;
|
||||
align-items: center;
|
||||
padding: 10rpx 20rpx;
|
||||
}
|
||||
|
||||
.order-list-item-content {
|
||||
display: flex;
|
||||
flex: 1;
|
||||
flex-direction: column;
|
||||
}
|
||||
|
||||
.order-item-title-box {
|
||||
display: flex;
|
||||
flex-direction: row;
|
||||
justify-content: space-between;
|
||||
padding: 0rpx 10rpx;
|
||||
align-items: baseline;
|
||||
}
|
||||
|
||||
.pay-icon-size {
|
||||
width: 30rpx;
|
||||
height: 30rpx;
|
||||
}
|
||||
|
||||
.pay-money {
|
||||
font-size: 45rpx;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
.order-item-time-box {
|
||||
display: flex;
|
||||
flex-direction: row;
|
||||
font-size: 28rpx;
|
||||
padding: 10rpx 10rpx 0rpx 10rpx;
|
||||
justify-content: space-between;
|
||||
}
|
||||
|
||||
.time-content {
|
||||
display: flex;
|
||||
flex-direction: row;
|
||||
align-items: center;
|
||||
}
|
||||
|
||||
.success-time {
|
||||
font-size: 24rpx;
|
||||
padding-left: 5rpx;
|
||||
color: #3a3a3a;
|
||||
}
|
||||
|
||||
.icon-time::before {
|
||||
content: '';
|
||||
background-image: url('data:image/svg+xml;charset=utf-8;base64,PHN2ZyB0PSIxNzQ1ODEyODg5NzI5IiBjbGFzcz0iaWNvbiIgdmlld0JveD0iMCAwIDEwMjQgMTAyNCIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHAtaWQ9IjM2MTgwIiB3aWR0aD0iMTYiIGhlaWdodD0iMTYiPjxwYXRoIGQ9Ik01MTMgMzMuMjJjLTI2NS4xIDAtNDgwIDIxNC45LTQ4MCA0ODBzMjE0LjkgNDgwIDQ4MCA0ODAgNDgwLTIxNC45IDQ4MC00ODAtMjE0LjktNDgwLTQ4MC00ODB6IG0yMDguOSA2NTIuNTljLTExLjA1IDE5LjEzLTM1LjUxIDI1LjY5LTU0LjY0IDE0LjY0TDQ3NC4xIDU4OC45M2MtMTMuMDYtNy41NC0yMC4yNi0yMS4zNC0xOS45OS0zNS40MiAwLTAuMTctMC4wMS0wLjM0LTAuMDEtMC41MVYzMjkuOTVjMC0yMi4wOSAxNy45MS00MCA0MC00MHM0MCAxNy45MSA0MCA0MHYyMDEuMjNsMTczLjE3IDk5Ljk4YzE5LjEyIDExLjA1IDI1LjY4IDM1LjUxIDE0LjYzIDU0LjY1eiIgZmlsbD0iI2RiZGJkYiIgcC1pZD0iMzYxODEiPjwvcGF0aD48L3N2Zz4=');
|
||||
background-size: cover;
|
||||
width: 28rpx;
|
||||
height: 28rpx;
|
||||
display: flex;
|
||||
flex-direction: row;
|
||||
margin-right: 10rpx;
|
||||
}
|
||||
|
||||
.custom-checkbox {
|
||||
font-size: 14px;
|
||||
margin-left: 14px;
|
||||
}
|
||||
|
||||
.custom-wx-checkbox .wx-checkbox-input.wx-checkbox-input-checked {
|
||||
color: #fff !important;
|
||||
background-color: #FFA900;
|
||||
border: 1px solid #FFA900;
|
||||
}
|
||||
|
||||
.custom-wx-checkbox .wx-checkbox-input {
|
||||
-webkit-appearance: none;
|
||||
appearance: none;
|
||||
margin-bottom: 3px;
|
||||
outline: 0;
|
||||
text-indent: 0;
|
||||
width: 32rpx;
|
||||
height: 32rpx;
|
||||
border-radius: 16rpx;
|
||||
background-color: transparent;
|
||||
position: relative;
|
||||
border: 1rpx solid #FFA900;
|
||||
box-sizing: border-box;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
/*钩大小*/
|
||||
.custom-wx-checkbox .wx-checkbox-input.wx-checkbox-input-checked:before {
|
||||
font-size: 32rpx;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.pay-public {
|
||||
background-image: url('data:image/svg+xml;charset=utf-8;base64,PHN2ZyB0PSIxNzQ1ODExODY1NDk3IiBjbGFzcz0iaWNvbiIgdmlld0JveD0iMCAwIDEwMjQgMTAyNCIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHAtaWQ9IjI4ODY4IiB3aWR0aD0iMTYiIGhlaWdodD0iMTYiPjxwYXRoIGQ9Ik0xMjggMGg3NjhhMTI4IDEyOCAwIDAgMSAxMjggMTI4djc2OGExMjggMTI4IDAgMCAxLTEyOCAxMjhIMTI4YTEyOCAxMjggMCAwIDEtMTI4LTEyOFYxMjhhMTI4IDEyOCAwIDAgMSAxMjgtMTI4eiBtMjYzLjA0IDI0OC45NmMtMzcuNzYgMTE5LjA0LTk1LjM2IDIxNS4wNC0xNzIuMTYgMjg3LjM2bDQ4IDQxLjZjNzQuODgtNzAuNCAxMzUuMDQtMTcyLjggMTgwLjQ4LTMwNi41NmwtNTYuMzItMjIuNHogbTI0MC42NCAzMzkuMmwtNTQuNCAxOC41NmMyMy4wNCAzNC41NiA0NC44IDcyLjk2IDY1LjkyIDExNS4yLTg0LjQ4IDEyLjgtMTcyLjggMjIuNC0yNjMuNjggMjguOCA1Mi40OC03Mi4zMiAxMDQuOTYtMTYyLjU2IDE1Ni4xNi0yNzAuNzJsLTU5LjUyLTIwLjQ4Yy04MS45MiAxODEuMTItMTQ1LjI4IDI3OS4wNC0xOTAuNzIgMjkzLjc2bDEwLjg4IDU4Ljg4YzEzNi45Ni04Ljk2IDI2MC40OC0yMS43NiAzNzEuODQtMzguNCA4Ljk2IDE5LjIgMTcuMjggMzkuNjggMjYuMjQgNjAuMTZsNTYuOTYtMjUuNmExMzUxLjA0IDEzNTEuMDQgMCAwIDAtMTE5LjY4LTIyMC4xNnpNNjIwLjggMjQzLjg0bC01MS44NCAyOS40NGMzNi40OCAxMjQuOCAxMDEuMTIgMjI2LjU2IDE5My45MiAzMDUuOTJsNDMuNTItNDkuOTJjLTg4LjMyLTczLjYtMTQ5Ljc2LTE2OC45Ni0xODUuNi0yODUuNDR6IiBmaWxsPSIjRkY5NDNFIiBwLWlkPSIyODg2OSI+PC9wYXRoPjwvc3ZnPg==');
|
||||
background-size: cover;
|
||||
background-repeat: no-repeat;
|
||||
}
|
||||
|
||||
.pay-wx {
|
||||
background-image: url('data:image/svg+xml;charset=utf-8;base64,PHN2ZyB0PSIxNzQ1ODExOTk2NjI4IiBjbGFzcz0iaWNvbiIgdmlld0JveD0iMCAwIDEwMjUgMTAyNCIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHAtaWQ9IjMyMzcyIiB3aWR0aD0iMTYiIGhlaWdodD0iMTYiPjxwYXRoIGQ9Ik0yNjEuMDk1OTA2IDM1NC43Mzc2OTRhMy41NTggMy41NDcgMCAxIDAgODUuNzI2ODcxIDAgMy41NTggMy41NDcgMCAxIDAtODUuNzI2ODcxIDBaIiBmaWxsPSIjNEVENTE5IiBwLWlkPSIzMjM3MyI+PC9wYXRoPjxwYXRoIGQ9Ik00NjAuMjA5Njk0IDM1NC43Mzc2OTRhMy41NTcgMy41NDcgMCAxIDAgODUuNzAyNzc2IDAgMy41NTcgMy41NDcgMCAxIDAtODUuNzAyNzc2IDBaIiBmaWxsPSIjNEVENTE5IiBwLWlkPSIzMjM3NCI+PC9wYXRoPjxwYXRoIGQ9Ik04MDkuMjYxMTc2IDAgMjE1LjI4MDk0MSAwQzk2LjM4ODUxOCAwIDAuMDEyMDQ3IDk2LjA5OTM4OCAwLjAxMjA0NyAyMTQuNjMwNGwwIDU5NC4yMzMyMjRjMCAxMTguNTQzMDU5IDk2LjM3NjQ3MSAyMTQuNjMwNCAyMTUuMjY4ODk0IDIxNC42MzA0bDU5My45ODAyMzUgMEM5MjguMTUzNiAxMDIzLjUwNjA3MSAxMDI0LjUxODAyNCA5MjcuNDA2NjgyIDEwMjQuNTE4MDI0IDgwOC44NzU2NzFMMTAyNC41MTgwMjQgMjE0LjYzMDRDMTAyNC41MTgwMjQgOTYuMDk5Mzg4IDkyOC4xNTM2IDAgODA5LjI2MTE3NiAwek0zOTguNjEzMDgyIDY1NS44MTc3ODhjLTQxLjQ2NTk3NiAwLTgwLjg1OTg1OS03LjI1MjMyOS0xMTYuNDU4OTE4LTIwLjMxMTM0MS0xNy4wNDY1ODggMTEuNzk0MDcxLTgzLjM0MTU1MyA1Ni41NjA5NDEtODMuMzQxNTUzIDU2LjU2MDk0MXM2LjgxODYzNS03NC4wNTMyNzEgNi44MTg2MzUtOTcuNjg5NmMtNTguMzY4LTQzLjY0NjQ5NC05NS4wMzkyNDctMTA2LjgwOTIyNC05NS4wMzkyNDctMTc3LjA0MzU3NiAwLTEzMS43MTA0OTQgMTI4LjkzOTY3MS0yMzguNDgzNTc2IDI4OC4wMjEwODItMjM4LjQ4MzU3NiAxNDEuMzEyIDAgMjU4LjgwNjk2NSA4NC4zMjk0MTIgMjgzLjI1MDQ0NyAxOTUuNTExNzE4LTE0NC4wMTA1NDEgOS40MDg3NTMtMjU3LjI4OTAzNSAxMDcuMjkxMTA2LTI1Ny4yODkwMzUgMjI2LjczNzY5NCAwIDE4LjI4NzQzNSAyLjczNDY4MiAzNS45OTY2MTIgNy43MzQyMTIgNTMuMDE5MTA2QzQyMS4yNDk1MDYgNjU1LjIwMzM4OCA0MTAuMDA5NiA2NTUuODE3Nzg4IDM5OC42MTMwODIgNjU1LjgxNzc4OHpNODY2LjgwOTk3NiA3NjMuMTMyOTg4YzAgMTMuNDA4Mzc2LTAuNzU4OTY1IDYwLjYyMDgtMC43NTg5NjUgNjAuNjIwOHMtNDMuMjM2ODk0LTIwLjU2NDMyOS02MS4zOTE4MTItMjkuNjcxOTA2Yy0zMC43MzIwNDcgMTAuNzU4MDI0LTY0LjU3MjIzNSAxNi43MjEzMTgtMTAwLjExMTA1OSAxNi43MjEzMTgtMTQxLjQ1NjU2NSAwLTI1Ni4xMzI1MTgtOTQuMzE2NDI0LTI1Ni4xMzI1MTgtMjEwLjY2NjkxOCAwLTExNi4zMzg0NDcgMTE0LjY3NTk1My0yMTAuNjU0ODcxIDI1Ni4xMzI1MTgtMjEwLjY1NDg3MSAxNDEuNDQ0NTE4IDAgMjU2LjEyMDQ3MSA5NC4zMTY0MjQgMjU2LjEyMDQ3MSAyMTAuNjU0ODcxQzk2MC42ODA2NTkgNjY1LjgyODg5NCA5MjQuMDkzNzQxIDcyNC41MjIxNjUgODY2LjgwOTk3NiA3NjMuMTMyOTg4eiIgZmlsbD0iIzRFRDUxOSIgcC1pZD0iMzIzNzUiPjwvcGF0aD48cGF0aCBkPSJNNTgwLjAwNTY0NyA1MzEuNjAwNTY1YTIuODk2IDIuODg3IDAgMSAwIDY5Ljc3NjU2NSAwIDIuODk2IDIuODg3IDAgMSAwLTY5Ljc3NjU2NSAwWiIgZmlsbD0iIzRFRDUxOSIgcC1pZD0iMzIzNzYiPjwvcGF0aD48cGF0aCBkPSJNNzUxLjQzNTI5NCA1MzEuNjAwNTY1YTIuODk2IDIuODg3IDAgMSAwIDY5Ljc3NjU2NSAwIDIuODk2IDIuODg3IDAgMSAwLTY5Ljc3NjU2NSAwWiIgZmlsbD0iIzRFRDUxOSIgcC1pZD0iMzIzNzciPjwvcGF0aD48L3N2Zz4=');
|
||||
background-size: cover;
|
||||
background-repeat: no-repeat;
|
||||
}
|
||||
|
||||
.pay-alipay {
|
||||
background-image: url('data:image/svg+xml;charset=utf-8;base64,PHN2ZyB0PSIxNzQ1ODEyMDQ2MTM5IiBjbGFzcz0iaWNvbiIgdmlld0JveD0iMCAwIDEwMjQgMTAyNCIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHAtaWQ9IjMzNDEwIiB3aWR0aD0iMTYiIGhlaWdodD0iMTYiPjxwYXRoIGQ9Ik0xMDI0LjA1MTIgNzAxLjAzMDRWMTk2Ljg2NEExOTYuOTY2NCAxOTYuOTY2NCAwIDAgMCA4MjcuMTM2IDBIMTk2Ljg2NEExOTYuOTY2NCAxOTYuOTY2NCAwIDAgMCAwIDE5Ni44NjR2NjMwLjI3MkExOTYuOTE1MiAxOTYuOTE1MiAwIDAgMCAxOTYuODY0IDEwMjRoNjMwLjI3MmExOTcuMTIgMTk3LjEyIDAgMCAwIDE5My44NDMyLTE2Mi4wOTkyYy01Mi4yMjQtMjIuNjMwNC0yNzguNTI4LTEyMC4zMi0zOTYuNDQxNi0xNzYuNjQtODkuNzAyNCAxMDguNjk3Ni0xODMuNzA1NiAxNzMuOTI2NC0zMjUuMzI0OCAxNzMuOTI2NHMtMjM2LjE4NTYtODcuMjQ0OC0yMjQuODE5Mi0xOTQuMDQ4YzcuNDc1Mi03MC4wNDE2IDU1LjU1Mi0xODQuNTc2IDI2NC4yOTQ0LTE2NC45NjY0IDExMC4wOCAxMC4zNDI0IDE2MC40MDk2IDMwLjg3MzYgMjUwLjE2MzIgNjAuNTE4NCAyMy4xOTM2LTQyLjU5ODQgNDIuNDk2LTg5LjQ0NjQgNTcuMTM5Mi0xMzkuMjY0SDI0OC4wNjR2LTM5LjQyNGgxOTYuOTE1MlYzMTEuMTQyNEgyMDQuOFYyNjcuNzc2aDI0MC4xMjhWMTY1LjYzMnMyLjE1MDQtMTUuOTc0NCAxOS44MTQ0LTE1Ljk3NDRoOTguNDU3NlYyNjcuNzc2aDI1NnY0My40MTc2aC0yNTZWMzgxLjk1MmgyMDguODQ0OGE4MDUuOTkwNCA4MDUuOTkwNCAwIDAgMS04NC44Mzg0IDIxMi42ODQ4YzYwLjY3MiAyMi4wMTYgMzM2Ljc5MzYgMTA2LjM5MzYgMzM2Ljc5MzYgMTA2LjM5MzZ6TTI4My41NDU2IDc5MS42MDMyYy0xNDkuNjU3NiAwLTE3My4zMTItOTQuNDY0LTE2NS4zNzYtMTMzLjkzOTIgNy44MzM2LTM5LjMyMTYgNTEuMi05MC42MjQgMTM0LjQtOTAuNjI0IDk1LjU5MDQgMCAxODEuMjQ4IDI0LjQ3MzYgMjg0LjA1NzYgNzQuNTQ3Mi03Mi4xOTIgOTQuMDAzMi0xNjAuOTIxNiAxNTAuMDE2LTI1My4wODE2IDE1MC4wMTZ6IiBmaWxsPSIjMDA5RkU4IiBwLWlkPSIzMzQxMSI+PC9wYXRoPjwvc3ZnPg==');
|
||||
background-size: cover;
|
||||
background-repeat: no-repeat;
|
||||
}
|
||||
|
||||
|
||||
.confirm-btn {
|
||||
background-color: #FFA900;
|
||||
color: white;
|
||||
font-size: 16px;
|
||||
height: 70rpx;
|
||||
line-height: 70rpx;
|
||||
border-radius: 5px;
|
||||
text-align: center;
|
||||
width: 85vw !important;
|
||||
}
|
||||
|
||||
.confirm-btn:active {
|
||||
background-color: #ffaa0083;
|
||||
color: white;
|
||||
}
|
||||
|
||||
.money {
|
||||
color: #532A00;
|
||||
font-size: 20px;
|
||||
display: flex;
|
||||
flex-direction: row;
|
||||
}
|
||||
|
||||
.price {
|
||||
color: rgb(255, 0, 0);
|
||||
}
|
244
pages/mine/mineAccount/makeInvoice/makeInvoice.js
Normal file
244
pages/mine/mineAccount/makeInvoice/makeInvoice.js
Normal file
@ -0,0 +1,244 @@
|
||||
// pages/mine/mineAccount/makeInvoice/makeInvoice.js
|
||||
import InvoiceApi from '../../../../net/api/invoiceApi'
|
||||
Page({
|
||||
|
||||
/**
|
||||
* 页面的初始数据
|
||||
*/
|
||||
data: {
|
||||
msgType: 'error',
|
||||
msgHint: '',
|
||||
msgShow: false,
|
||||
typeList: [], //开票类型
|
||||
contentList: [], //开票内容
|
||||
rateList: [], //开票税率
|
||||
typeId: '',
|
||||
contentId: '',
|
||||
rateId: '',
|
||||
invoiceInfo: null, //开票信息
|
||||
invoiceMoney: 0, //开票金额
|
||||
showInvoiceInfo: false,
|
||||
invoiceInfoList: [], //开票信息
|
||||
payOrderIds: '', //开票记录id
|
||||
remark: '', //备注信息
|
||||
},
|
||||
|
||||
/**
|
||||
* 生命周期函数--监听页面加载
|
||||
*/
|
||||
onLoad(options) {
|
||||
wx.setNavigationBarTitle({
|
||||
title: '开发票',
|
||||
})
|
||||
wx.setNavigationBarColor({
|
||||
frontColor: '#000000', // 必写项,字体颜色仅支持#ffffff和#000000
|
||||
backgroundColor: '#F0F0F0', // 传递的颜色值,仅支持十六进制颜色
|
||||
animation: { // 可选项
|
||||
duration: 500,
|
||||
timingFunc: 'easeIn'
|
||||
}
|
||||
})
|
||||
this.setData({
|
||||
invoiceMoney: options.money,
|
||||
payOrderIds: options.ids
|
||||
})
|
||||
//获取开票类型
|
||||
//获取开票内容
|
||||
//获取开票税率
|
||||
this.getPageData()
|
||||
},
|
||||
//获取页面数据
|
||||
getPageData() {
|
||||
wx.showLoading({
|
||||
title: '加载中...',
|
||||
})
|
||||
const _self = this
|
||||
const type = InvoiceApi.doGetDicListByPId('e0251d55-cd52-4f57-be92-b2bef8a6dd62')
|
||||
const content = InvoiceApi.doGetDicListByPId('b67d5208-db1d-4d0e-99de-cc22d9d50041')
|
||||
const rate = InvoiceApi.doGetDicListByPId('e4808c45-64ee-42fa-a413-a470fbdc0aea')
|
||||
const list = [type, content, rate]
|
||||
Promise.all(list)
|
||||
.then(res => {
|
||||
wx.hideLoading()
|
||||
_self.setData({
|
||||
contentList: res[0],
|
||||
rateList: res[1],
|
||||
typeList: res[2]
|
||||
})
|
||||
console.log(res)
|
||||
})
|
||||
.catch(err => {
|
||||
wx.hideLoading()
|
||||
console.log(err)
|
||||
_self.setData({
|
||||
msgHint: '数据有误,请稍后重试',
|
||||
msgType: 'error',
|
||||
msgShow: true
|
||||
})
|
||||
setTimeout(() => {
|
||||
wx.navigateBack()
|
||||
}, 1800);
|
||||
})
|
||||
},
|
||||
inputRemark(e) {
|
||||
this.setData({
|
||||
remark: e.detail.value
|
||||
})
|
||||
},
|
||||
changeContent(e) {
|
||||
this.setData({
|
||||
contentId: e.detail.value
|
||||
})
|
||||
},
|
||||
changeType(e) {
|
||||
this.setData({
|
||||
typeId: e.detail.value
|
||||
})
|
||||
},
|
||||
changeRate(e) {
|
||||
this.setData({
|
||||
rateId: e.detail.value
|
||||
})
|
||||
},
|
||||
changeInvoiceInfo(e) {
|
||||
console.log('groupChange', e)
|
||||
const index = e.detail.value;
|
||||
const selectedItem = this.data.invoiceInfoList[index];
|
||||
this.setData({
|
||||
invoiceInfo: selectedItem,
|
||||
showInvoiceInfo: false
|
||||
});
|
||||
},
|
||||
onInvoiceItemClick(e) {
|
||||
console.log(e)
|
||||
this.setData({
|
||||
invoiceInfo: e.currentTarget.dataset.value,
|
||||
showInvoiceInfo: false
|
||||
})
|
||||
},
|
||||
openCreateInvoiceInfo() {
|
||||
wx.navigateTo({
|
||||
url: '/pages/mine/mineAccount/invoiceInfo/invoiceInfo',
|
||||
})
|
||||
},
|
||||
//获取开票信息
|
||||
doGetInvoiceInfoList() {
|
||||
const _self = this
|
||||
wx.showLoading({
|
||||
title: '加载中...',
|
||||
})
|
||||
const pageData = {
|
||||
page: 1,
|
||||
rows: 100
|
||||
}
|
||||
InvoiceApi.doGetMineInvoiceList(pageData)
|
||||
.then(res => {
|
||||
console.log(res)
|
||||
wx.hideLoading()
|
||||
if (res.rows && res.rows.length > 0) {
|
||||
_self.setData({
|
||||
invoiceInfoList: res.rows,
|
||||
showInvoiceInfo: true
|
||||
})
|
||||
} else {
|
||||
_self.setData({
|
||||
invoiceInfoList: [],
|
||||
msgShow: true,
|
||||
msgType: 'error',
|
||||
msgHint: '您暂无开票信息,请添加信息后,再进行开票操作',
|
||||
showInvoiceInfo: false
|
||||
})
|
||||
}
|
||||
})
|
||||
.catch(err => {
|
||||
wx.hideLoading()
|
||||
_self.setData({
|
||||
msgShow: true,
|
||||
msgType: 'error',
|
||||
msgHint: err.msg ? err.msg : '网络错误,请稍后重试',
|
||||
showInvoiceInfo: false
|
||||
})
|
||||
})
|
||||
},
|
||||
//构建提交参数
|
||||
buildParams() {
|
||||
const data = {
|
||||
invoiceId: this.data.invoiceInfo.invoiceId,
|
||||
invoiceTaxrate: this.data.rateId,
|
||||
invoicePurpose: this.data.contentId,
|
||||
invoiceClassify: this.data.typeId,
|
||||
invoiceRecord: this.data.remark,
|
||||
accountRechargeIds: this.data.payOrderIds
|
||||
}
|
||||
return data
|
||||
},
|
||||
doSaveInfo() {
|
||||
const isLegal = this.checkParams()
|
||||
if (isLegal) {
|
||||
wx.showLoading({
|
||||
title: '提交中...',
|
||||
})
|
||||
const _self = this
|
||||
const data = _self.buildParams()
|
||||
InvoiceApi.doSaveInvoiceRecord(data)
|
||||
.then(res => {
|
||||
wx.hideLoading()
|
||||
console.log(res)
|
||||
if (res.data && res.data != '') {
|
||||
this.setData({
|
||||
msgType: 'success',
|
||||
msgHint: '开票信息提交成功!我们会以最快速度完成开票,还请耐心等待!',
|
||||
msgShow: true
|
||||
})
|
||||
} else {
|
||||
this.setData({
|
||||
msgType: 'error',
|
||||
msgHint: '发票开取失败,请稍后重试',
|
||||
msgShow: true
|
||||
})
|
||||
}
|
||||
})
|
||||
.catch(err => {
|
||||
wx.hideLoading()
|
||||
console.log(err)
|
||||
})
|
||||
}
|
||||
},
|
||||
//校验参数
|
||||
checkParams() {
|
||||
if (this.data.invoiceInfo == null) {
|
||||
this.setData({
|
||||
msgType: 'error',
|
||||
msgHint: '请选择开票信息',
|
||||
msgShow: true
|
||||
})
|
||||
return false
|
||||
}
|
||||
if (this.data.typeId == '') {
|
||||
this.setData({
|
||||
msgType: 'error',
|
||||
msgHint: '请选择开票类型',
|
||||
msgShow: true
|
||||
})
|
||||
return false
|
||||
}
|
||||
if (this.data.contentId == '') {
|
||||
this.setData({
|
||||
msgType: 'error',
|
||||
msgHint: '请选择开票内容',
|
||||
msgShow: true
|
||||
})
|
||||
return false
|
||||
}
|
||||
if (this.data.rateId == '') {
|
||||
this.setData({
|
||||
msgType: 'error',
|
||||
msgHint: '请选择开票税率',
|
||||
msgShow: true
|
||||
})
|
||||
return false
|
||||
}
|
||||
return true
|
||||
}
|
||||
|
||||
})
|
6
pages/mine/mineAccount/makeInvoice/makeInvoice.json
Normal file
6
pages/mine/mineAccount/makeInvoice/makeInvoice.json
Normal file
@ -0,0 +1,6 @@
|
||||
{
|
||||
"usingComponents": {
|
||||
"mp-toptips": "weui-miniprogram/toptips/toptips",
|
||||
"mp-half-screen-dialog": "weui-miniprogram/half-screen-dialog/half-screen-dialog"
|
||||
}
|
||||
}
|
89
pages/mine/mineAccount/makeInvoice/makeInvoice.wxml
Normal file
89
pages/mine/mineAccount/makeInvoice/makeInvoice.wxml
Normal file
@ -0,0 +1,89 @@
|
||||
<view class="page-container">
|
||||
<swiper indicator-dots style="height: 120rpx;" autoplay indicator-active-color="#fff">
|
||||
<swiper-item>
|
||||
<image src="https://www.aimzhu.com/miniapp-assets/banner_1.png" style="width: 100vw;height: 120rpx;"></image>
|
||||
</swiper-item>
|
||||
<swiper-item>
|
||||
<image src="https://www.aimzhu.com/miniapp-assets/banner_2.png" style="width: 100vw;height: 120rpx;"></image>
|
||||
</swiper-item>
|
||||
</swiper>
|
||||
<view class="invoice-info-title mt-40">开票信息</view>
|
||||
<view class="invoice-info-box mt-20">
|
||||
<view class="invoice-info-item">
|
||||
<view class="invoice-info-item-title star">开票信息</view>
|
||||
<view bind:tap="doGetInvoiceInfoList" class="invoice-info-item-content select {{invoiceInfo==null?'normal-value':'select-value'}}">{{invoiceInfo ==null ?'请选择开票信息' :invoiceInfo.invoiceName}}
|
||||
</view>
|
||||
</view>
|
||||
<view class="invoice-info-item">
|
||||
<view class="invoice-info-item-title star">发票类型</view>
|
||||
<view class="invoice-info-item-content">
|
||||
<radio-group class="custom-radio-group" bindchange="changeType">
|
||||
<block wx:for="{{typeList}}" wx:key="index">
|
||||
<radio class="custom-radio" value="{{item.dataName}}">{{item.dataName}}</radio>
|
||||
</block>
|
||||
</radio-group>
|
||||
</view>
|
||||
</view>
|
||||
<view class="invoice-info-item">
|
||||
<view class="invoice-info-item-title star">开票内容</view>
|
||||
<view class="invoice-info-item-content">
|
||||
<radio-group class="custom-radio-group" bindchange="changeContent">
|
||||
<block wx:for="{{contentList}}" wx:key="index">
|
||||
<radio class="custom-radio" value="{{item.dataName}}">{{item.dataName}}</radio>
|
||||
</block>
|
||||
</radio-group>
|
||||
</view>
|
||||
</view>
|
||||
<view class="invoice-info-item">
|
||||
<view class="invoice-info-item-title star">开票税率</view>
|
||||
<view class="invoice-info-item-content">
|
||||
<radio-group class="custom-radio-group" bindchange="changeRate">
|
||||
<block wx:for="{{rateList}}" wx:key="index">
|
||||
<radio class="custom-radio" value="{{item.dataName}}">{{item.dataName}}</radio>
|
||||
</block>
|
||||
</radio-group>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
<view class="invoice-info-title mt-40">开票内容</view>
|
||||
<view class="invoice-info-box mt-20">
|
||||
<view class="invoice-info-item">
|
||||
<view class="invoice-info-item-title star">开票金额</view>
|
||||
<view class="invoice-info-item-content">
|
||||
<rich-text style="font-size: 28rpx;color: red;font-weight: bold;" nodes="{{tools.moneyTxt(10,invoiceMoney)}}"></rich-text>
|
||||
</view>
|
||||
</view>
|
||||
<view class="invoice-info-item-ver">
|
||||
<view class="invoice-info-item-title" style="align-self: flex-start;">开票备注</view>
|
||||
<textarea class="invoice-remark" bindinput="inputRemark" placeholder-style="color:#dbdbdb;" placeholder="请输入备注信息"></textarea>
|
||||
</view>
|
||||
</view>
|
||||
<view class="bottom-btn">
|
||||
<view class="confirm-btn" bind:tap="doSaveInfo">提交</view>
|
||||
</view>
|
||||
</view>
|
||||
<!-- 开票信息 -->
|
||||
<mp-half-screen-dialog show="{{showInvoiceInfo}}">
|
||||
<view slot="title">开票信息</view>
|
||||
<view slot="desc">
|
||||
<scroll-view scroll-y style="height:500rpx;">
|
||||
<radio-group bindchange="changeInvoiceInfo" style="display: flex;flex-direction: column;">
|
||||
<block wx:for="{{invoiceInfoList}}" wx:for-index="index" wx:key="index">
|
||||
<view class="invoice-sel-item-box" bind:tap="onInvoiceItemClick" data-value="{{item}}">
|
||||
<view class="{{invoiceInfo && invoiceInfo.invoiceId===item.invoiceId? 'invoice-sel-item-yellow' :'invoice-sel-item-gray'}}">
|
||||
<view>{{item.invoiceName}}</view>
|
||||
<view>{{item.invoiceNumber}}</view>
|
||||
</view>
|
||||
<radio checked="{{invoiceInfo && invoiceInfo.invoiceId === item.invoiceId}}" class="custom-radio-no-border" value="{{index}}">
|
||||
</radio>
|
||||
</view>
|
||||
</block>
|
||||
</radio-group>
|
||||
</scroll-view>
|
||||
</view>
|
||||
<view slot="footer">
|
||||
<view class="confirm-btn" bind:tap="openCreateInvoiceInfo">新增开票信息</view>
|
||||
</view>
|
||||
</mp-half-screen-dialog>
|
||||
<mp-toptips msg="{{msgHint}}" type="{{msgType}}" show="{{msgShow}}" delay="{{2000}}"></mp-toptips>
|
||||
<wxs src="../../../../utils/comm.wxs" module="tools"></wxs>
|
210
pages/mine/mineAccount/makeInvoice/makeInvoice.wxss
Normal file
210
pages/mine/mineAccount/makeInvoice/makeInvoice.wxss
Normal file
@ -0,0 +1,210 @@
|
||||
/* pages/mine/mineAccount/makeInvoice/makeInvoice.wxss */
|
||||
page {
|
||||
background: linear-gradient(to bottom, #F0F0F0, #FFFFFF);
|
||||
background-size: 100% 100vh;
|
||||
background-repeat: no-repeat;
|
||||
}
|
||||
|
||||
.invoice-info-title {
|
||||
font-size: 36rpx;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
.invoice-info-box {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
padding: 20rpx;
|
||||
background-color: white;
|
||||
border-radius: 10rpx;
|
||||
}
|
||||
|
||||
.invoice-info-item {
|
||||
display: flex;
|
||||
flex-direction: row;
|
||||
justify-content: space-between;
|
||||
align-items: center;
|
||||
}
|
||||
|
||||
.invoice-info-item-ver {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
box-sizing: border-box;
|
||||
margin-top: 20rpx;
|
||||
}
|
||||
|
||||
.invoice-remark {
|
||||
height: 120rpx;
|
||||
border: 1rpx solid #dbdbdb;
|
||||
align-self: center;
|
||||
border-radius: 10rpx;
|
||||
width: 95%;
|
||||
padding: 10rpx;
|
||||
margin-top: 10rpx;
|
||||
margin-bottom: 20rpx;
|
||||
font-size: 28rpx;
|
||||
}
|
||||
|
||||
|
||||
|
||||
.bottom-btn {
|
||||
position: fixed;
|
||||
bottom: 40rpx;
|
||||
left: 0;
|
||||
display: flex;
|
||||
flex-direction: row;
|
||||
padding: 30rpx;
|
||||
width: 100%;
|
||||
box-sizing: border-box;
|
||||
}
|
||||
|
||||
.form-box {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
justify-content: center;
|
||||
align-items: flex-start;
|
||||
font-size: 14px;
|
||||
background-color: antiquewhite;
|
||||
}
|
||||
|
||||
.confirm-btn {
|
||||
background-color: #FFA900;
|
||||
color: white;
|
||||
font-size: 16px;
|
||||
height: 70rpx;
|
||||
line-height: 70rpx;
|
||||
border-radius: 5px;
|
||||
flex: 1;
|
||||
text-align: center;
|
||||
/* width: 85vw !important; */
|
||||
}
|
||||
|
||||
.confirm-btn:active {
|
||||
background-color: #ffaa0083;
|
||||
color: white;
|
||||
}
|
||||
|
||||
.invoice-info-item:nth-of-type(n+2) {
|
||||
margin-top: 20rpx;
|
||||
}
|
||||
|
||||
.invoice-info-item-title {
|
||||
font-size: 28rpx;
|
||||
}
|
||||
|
||||
.invoice-info-item-content {
|
||||
font-size: 28rpx;
|
||||
padding-left: 20rpx;
|
||||
flex: 1;
|
||||
align-items: center;
|
||||
justify-content: flex-end;
|
||||
display: flex;
|
||||
flex-direction: row;
|
||||
}
|
||||
|
||||
.custom-radio-group {
|
||||
display: flex;
|
||||
flex-direction: row;
|
||||
justify-content: flex-end;
|
||||
align-items: center;
|
||||
font-size: 28rpx;
|
||||
flex-wrap: wrap;
|
||||
}
|
||||
|
||||
.link {
|
||||
font-size: 28rpx;
|
||||
color: rgb(71, 142, 248);
|
||||
}
|
||||
|
||||
.select::after {
|
||||
content: '';
|
||||
background-image: url('data:image/svg+xml;charset=utf-8;base64,PHN2ZyB0PSIxNzQ1ODA2NDUxMTAzIiBjbGFzcz0iaWNvbiIgdmlld0JveD0iMCAwIDEwMjQgMTAyNCIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHAtaWQ9IjE0MDQ5IiB3aWR0aD0iMTYiIGhlaWdodD0iMTYiPjxwYXRoIGQ9Ik0xMDA0Ljk5MTg5NCAyNDIuOTkzNDRjLTEyLjY1ODA2MS0xMi42Njg1NjgtMjcuNjYyODAyLTE4Ljk5NzU5OS00NS4wMDAyMTItMTguOTk3NTk5SDY0LjAwNDgxNmMtMTcuMzQ0NDE1IDAtMzIuMzM4NjQ5IDYuMzI5MDMtNDUuMDA3MjE3IDE4Ljk5NzU5OUM2LjMyOTAzIDI1NS42NzYwMTggMCAyNzAuNjcwMjUxIDAgMjg4LjAwNDE1OWMwIDE3LjMzMDQwNSA2LjMyOTAzIDMyLjMyNDYzOSAxOC45OTc1OTkgNDQuOTk2NzFsNDQ3Ljk5NTE4NCA0NDcuOTk1MTg0YzEyLjY4MjU3OCAxMi42Njg1NjggMjcuNjc2ODEyIDE5LjAxMTYwOSA0NS4wMDcyMTcgMTkuMDExNjA5czMyLjMzODY0OS02LjM0MzA0IDQ0Ljk5NjcxLTE5LjAxMTYwOUwxMDA0Ljk5MTg5NCAzMzIuOTk3MzY2YzEyLjY1NDU1OC0xMi42Njg1NjggMTkuMDA4MTA2LTI3LjY2MjgwMiAxOS4wMDgxMDYtNDQuOTk2NzA5IDAtMTcuMzMwNDA1LTYuMzUzNTQ4LTMyLjMyNDYzOS0xOS4wMDgxMDYtNDUuMDA3MjE3eiIgcC1pZD0iMTQwNTAiIGZpbGw9IiNkYmRiZGIiPjwvcGF0aD48L3N2Zz4=');
|
||||
display: block;
|
||||
background-size: cover;
|
||||
width: 24rpx;
|
||||
height: 24rpx;
|
||||
margin: 0rpx 15rpx;
|
||||
}
|
||||
|
||||
.normal-value {
|
||||
color: #dbdbdb;
|
||||
}
|
||||
|
||||
.select-value {
|
||||
color: #000000;
|
||||
}
|
||||
|
||||
.custom-radio-no-border .wx-radio-input {
|
||||
border-color: transparent;
|
||||
/* 自定义未选中时的边框颜色 */
|
||||
background-color: transparent;
|
||||
width: 28rpx;
|
||||
height: 28rpx;
|
||||
font-size: 24rpx;
|
||||
}
|
||||
|
||||
/* 选中状态 */
|
||||
.custom-radio-no-border .wx-radio-input.wx-radio-input-checked {
|
||||
border-color: transparent;
|
||||
background: transparent;
|
||||
}
|
||||
|
||||
/* 选中状态下的内部圆圈 */
|
||||
.custom-radio-no-border .wx-radio-input.wx-radio-input-checked::before {
|
||||
color: #FFA900;
|
||||
}
|
||||
|
||||
/* 未选中状态 */
|
||||
.custom-radio .wx-radio-input {
|
||||
border-color: #757575;
|
||||
background-color: transparent;
|
||||
width: 28rpx;
|
||||
height: 28rpx;
|
||||
font-size: 24rpx;
|
||||
}
|
||||
|
||||
/* 选中状态 */
|
||||
.custom-radio .wx-radio-input.wx-radio-input-checked {
|
||||
border-color: #FFA900;
|
||||
background: linear-gradient(to right, #FFA900, #ffaa007e);
|
||||
}
|
||||
|
||||
/* 选中状态下的内部圆圈 */
|
||||
.custom-radio .wx-radio-input.wx-radio-input-checked::before {
|
||||
color: #FFFFFF;
|
||||
}
|
||||
|
||||
.custom-radio:nth-of-type(n+2) {
|
||||
margin-left: 20rpx;
|
||||
}
|
||||
|
||||
.weui-half-screen-dialog__ft {
|
||||
padding: 0rpx 0rpx 40rpx;
|
||||
}
|
||||
|
||||
.weui-half-screen-dialog__bd {
|
||||
padding-bottom: 40rpx;
|
||||
}
|
||||
|
||||
.invoice-sel-item-yellow {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
text-align: left;
|
||||
color: #FFA900;
|
||||
}
|
||||
|
||||
.invoice-sel-item-gray {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
text-align: left;
|
||||
color: #535353;
|
||||
}
|
||||
|
||||
.invoice-sel-item-box {
|
||||
display: flex;
|
||||
flex-direction: row;
|
||||
justify-content: space-between;
|
||||
align-items: center;
|
||||
flex: 1;
|
||||
padding: 20rpx 10rpx;
|
||||
border-bottom: 1rpx solid #F0F0F0;
|
||||
}
|
@ -44,6 +44,24 @@ Page({
|
||||
url: '/pages/mine/mineAccount/invoiceInfo/invoiceInfo',
|
||||
})
|
||||
},
|
||||
inputKeywords(e) {
|
||||
this.setData({
|
||||
keywords: e.detail.value
|
||||
})
|
||||
},
|
||||
//清除搜索内容
|
||||
clearSearch() {
|
||||
const _self = this
|
||||
_self.setData({
|
||||
keywords: ''
|
||||
})
|
||||
_self.doRefreshList()
|
||||
},
|
||||
//发起搜索
|
||||
doSearchKeyWord() {
|
||||
const _self = this
|
||||
_self.doRefreshList()
|
||||
},
|
||||
doRefreshList() {
|
||||
console.log('正在刷新...')
|
||||
const _self = this
|
||||
@ -98,5 +116,11 @@ Page({
|
||||
hasMore: true
|
||||
})
|
||||
})
|
||||
},
|
||||
//跳转可以开具发票订单列表
|
||||
openMake() {
|
||||
wx.navigateTo({
|
||||
url: '/pages/mine/mineAccount/invoiceOrder/invoiceOrder',
|
||||
})
|
||||
}
|
||||
})
|
@ -9,61 +9,32 @@
|
||||
<view class="content-container">
|
||||
<container-loading loadingState="{{loadingState}}" style="height: 85vh;" bindrefresh="doRefreshList">
|
||||
<scroll-view scroll-y="{{true}}" style="height: 85vh;padding-bottom: 40px;" bindrefresherrefresh="doRefreshList" refresher-enabled refresher-triggered="{{listRefreshTrig}}" bindscrolltolower="doLoadMore" lower-threshold='30'>
|
||||
<!-- <view class="order-box">
|
||||
<block wx:for="{{invoiceList}}" wx:key="index">
|
||||
<view class="order-box">
|
||||
<block wx:for="{{recordList}}" wx:key="index">
|
||||
<view class="order-item">
|
||||
<view class="contact-desc">
|
||||
<view class="contact-icon">
|
||||
<view class="ic-user" style="width: 24px;height: 24px;"></view>
|
||||
<view class="ml-10 name">{{item.name}}</view>
|
||||
</view>
|
||||
<view>{{item.phone}}</view>
|
||||
<view class="options-box">
|
||||
<view class="edit" bind:tap="showEditDialog" data-value="{{item}}">编辑</view>
|
||||
<view class="del" bind:tap="showDelDialog" data-value="{{item}}">删除</view>
|
||||
<view class="record-title-box">
|
||||
<view class="record-title-status {{tools.invoiceStatusColor(item.invoiceStatus)}}">{{tools.invoiceStatus(item.invoiceStatus)}}</view>
|
||||
<view class="record-title-name">{{item.invoiceName}}</view>
|
||||
<view class="record-options">
|
||||
<view wx:if="{{item.invoiceStatus==-1}}" class="options-btn green">修改</view>
|
||||
<view wx:if="{{item.invoiceStatus==1 || item.invoiceStatus==0}}" class="options-btn red" bind:tap="cancelRecord" data-value="{{item}}">取消</view>
|
||||
</view>
|
||||
</view>
|
||||
<view class="service-desc ml-10">{{item.company}}</view>
|
||||
<view class="service-desc ml-10">专属客服 : {{item.csaNo}}</view>
|
||||
<view class="record-number mt-10">纳税人识别号: {{item.invoiceNumber}}</view>
|
||||
<view class="record-bottom-box mt-10">
|
||||
<rich-text style="font-size: 40rpx;color: red;" nodes="{{tools.moneyTxt(10,item.invoiceRechargeMoney)}}"></rich-text>
|
||||
<view class="record-time icon-time">{{item.gmtCreate}}</view>
|
||||
</view>
|
||||
</view>
|
||||
</block>
|
||||
<mp-loading show="{{isLoadMore}}" type="circle"></mp-loading>
|
||||
</view> -->
|
||||
</view>
|
||||
</scroll-view>
|
||||
</container-loading>
|
||||
</view>
|
||||
<view class="bottom-btn">
|
||||
<view class="confirm-btn">去开票</view>
|
||||
<view class="confirm-btn" bind:tap="openMake">去开票</view>
|
||||
</view>
|
||||
</view>
|
||||
|
||||
<!-- 新增 -->
|
||||
<!-- <mp-half-screen-dialog show="{{showCreateContact}}">
|
||||
<view slot="title">{{title}}</view>
|
||||
<view slot="desc">
|
||||
<view class="form-box">
|
||||
<view class="form-item">
|
||||
<view class="form-item-title">姓名</view>
|
||||
<input adjust-position="{{true}}" cursor-spacing="{{50}}" value="{{contactName}}" placeholder="请输入姓名" class="form-item-content" bindinput="inputContactName" />
|
||||
</view>
|
||||
<view class="form-item">
|
||||
<view class="form-item-title">联系电话</view>
|
||||
<input adjust-position="{{true}}" cursor-spacing="{{50}}" value="{{contactPhone}}" placeholder="请输入联系电话" class="form-item-content" bindinput="inputContactPhone" />
|
||||
</view>
|
||||
<view class="form-item">
|
||||
<view class="form-item-title no-after" style="padding-left: 16rpx;">联系邮箱</view>
|
||||
<input adjust-position="{{true}}" cursor-spacing="{{50}}" value="{{contactEmail}}" placeholder="请输入联系邮箱" class="form-item-content" bindinput="inputContactEmail" />
|
||||
</view>
|
||||
<view class="form-item">
|
||||
<view class="form-item-title no-after" style="padding-left: 16rpx;">公司</view>
|
||||
<input adjust-position="{{true}}" cursor-spacing="{{50}}" value="{{contactCompany}}" placeholder="请输入公司名称" class="form-item-content" bindinput="inputContactCompany" />
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
<view slot="footer">
|
||||
<button wx:if="{{isCreate}}" class="confirm-btn" bind:tap="doSaveContact">{{btnTxt}}</button>
|
||||
<button wx:if="{{!isCreate}}" class="confirm-btn" bind:tap="doEditContact">{{btnTxt}}</button>
|
||||
</view>
|
||||
</mp-half-screen-dialog> -->
|
||||
|
||||
<mp-toptips msg="{{msgHint}}" type="{{msgType}}" show="{{msgShow}}" :delay="2000"></mp-toptips>
|
||||
<mp-toptips msg="{{msgHint}}" type="{{msgType}}" show="{{msgShow}}" :delay="2000"></mp-toptips>
|
||||
<wxs src="../../../../utils/comm.wxs" module="tools"></wxs>
|
@ -99,16 +99,124 @@ page {
|
||||
.order-box {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
justify-content: center;
|
||||
align-items: center;
|
||||
}
|
||||
|
||||
.order-item {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
background-color: white;
|
||||
border-radius: 10px;
|
||||
width: 94vw;
|
||||
border-radius: 10rpx;
|
||||
padding: 10rpx 20rpx;
|
||||
}
|
||||
|
||||
.record-title-box {
|
||||
display: flex;
|
||||
flex-direction: row;
|
||||
}
|
||||
|
||||
.record-options {
|
||||
display: flex;
|
||||
flex-direction: row;
|
||||
}
|
||||
|
||||
.options-btn {
|
||||
font-size: 24rpx;
|
||||
line-height: 24rpx;
|
||||
height: 24rpx;
|
||||
padding: 10rpx 20rpx;
|
||||
border-radius: 5rpx;
|
||||
}
|
||||
|
||||
.red {
|
||||
background-color: rgba(247, 49, 42, 0.42);
|
||||
color: rgba(255, 255, 255, 1);
|
||||
}
|
||||
|
||||
.green {
|
||||
background-color: rgba(122, 196, 131, 0.42);
|
||||
color: rgba(255, 255, 255, 1);
|
||||
}
|
||||
|
||||
.green:active {
|
||||
background-color: rgba(122, 196, 131, 1);
|
||||
color: rgba(255, 255, 255, 1);
|
||||
}
|
||||
|
||||
.options-btn:nth-of-type(n+2) {
|
||||
margin-left: 10rpx;
|
||||
}
|
||||
|
||||
.red:active {
|
||||
background-color: rgba(247, 49, 42, 1);
|
||||
}
|
||||
|
||||
.record-title-status {
|
||||
font-size: 20rpx;
|
||||
line-height: 24rpx;
|
||||
height: 24rpx;
|
||||
margin-top: 8rpx;
|
||||
text-align: center;
|
||||
padding: 5rpx;
|
||||
min-width: 80rpx;
|
||||
border-radius: 5rpx;
|
||||
margin-right: 15rpx;
|
||||
}
|
||||
|
||||
.col-yellow {
|
||||
background-color: #FFA900;
|
||||
color: #000000;
|
||||
}
|
||||
|
||||
.col-gray {
|
||||
background-color: #ccc;
|
||||
color: #666;
|
||||
}
|
||||
|
||||
.col-green {
|
||||
background-color: #90ee90;
|
||||
color: #006400;
|
||||
}
|
||||
|
||||
.col-red {
|
||||
background-color: #f08080;
|
||||
color: #8b0000;
|
||||
}
|
||||
|
||||
.record-title-name {
|
||||
font-size: 32rpx;
|
||||
color: #000000;
|
||||
font-weight: bold;
|
||||
flex: 1;
|
||||
}
|
||||
|
||||
.record-number {
|
||||
font-size: 24rpx;
|
||||
color: rgb(114, 114, 114);
|
||||
margin-left: 10rpx;
|
||||
}
|
||||
|
||||
.record-time {
|
||||
display: flex;
|
||||
flex-direction: row;
|
||||
align-items: center;
|
||||
font-size: 24rpx;
|
||||
}
|
||||
|
||||
.record-bottom-box {
|
||||
display: flex;
|
||||
flex-direction: row;
|
||||
justify-content: space-between;
|
||||
}
|
||||
|
||||
.icon-time::before {
|
||||
content: '';
|
||||
background-image: url('data:image/svg+xml;charset=utf-8;base64,PHN2ZyB0PSIxNzQ1ODEyODg5NzI5IiBjbGFzcz0iaWNvbiIgdmlld0JveD0iMCAwIDEwMjQgMTAyNCIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHAtaWQ9IjM2MTgwIiB3aWR0aD0iMTYiIGhlaWdodD0iMTYiPjxwYXRoIGQ9Ik01MTMgMzMuMjJjLTI2NS4xIDAtNDgwIDIxNC45LTQ4MCA0ODBzMjE0LjkgNDgwIDQ4MCA0ODAgNDgwLTIxNC45IDQ4MC00ODAtMjE0LjktNDgwLTQ4MC00ODB6IG0yMDguOSA2NTIuNTljLTExLjA1IDE5LjEzLTM1LjUxIDI1LjY5LTU0LjY0IDE0LjY0TDQ3NC4xIDU4OC45M2MtMTMuMDYtNy41NC0yMC4yNi0yMS4zNC0xOS45OS0zNS40MiAwLTAuMTctMC4wMS0wLjM0LTAuMDEtMC41MVYzMjkuOTVjMC0yMi4wOSAxNy45MS00MCA0MC00MHM0MCAxNy45MSA0MCA0MHYyMDEuMjNsMTczLjE3IDk5Ljk4YzE5LjEyIDExLjA1IDI1LjY4IDM1LjUxIDE0LjYzIDU0LjY1eiIgZmlsbD0iI2RiZGJkYiIgcC1pZD0iMzYxODEiPjwvcGF0aD48L3N2Zz4=');
|
||||
background-size: cover;
|
||||
width: 28rpx;
|
||||
height: 28rpx;
|
||||
display: flex;
|
||||
flex-direction: row;
|
||||
margin-right: 10rpx;
|
||||
}
|
||||
|
||||
.order-item:nth-of-type(n+2) {
|
||||
|
@ -36,10 +36,67 @@ var payTypeSign = function (type) {
|
||||
}
|
||||
return typeStr
|
||||
}
|
||||
var payWay = function (way) {
|
||||
var wayClass = 'pay-wx'
|
||||
switch (way) {
|
||||
case '微信':
|
||||
wayClass = 'pay-wx'
|
||||
break
|
||||
case '支付宝':
|
||||
wayClass = 'pay-alipay'
|
||||
break
|
||||
case '对公转账':
|
||||
wayClass = 'pay-public'
|
||||
break
|
||||
}
|
||||
return wayClass
|
||||
}
|
||||
var invoiceStatusColor = function (status) {
|
||||
var str = 'col-yellow'
|
||||
// -1:用户取消,0:开票失败,1:开票中,2:开票完成
|
||||
switch (status) {
|
||||
case -1:
|
||||
str = 'col-gray'
|
||||
break
|
||||
case 0:
|
||||
str = 'col-red'
|
||||
break
|
||||
case 1:
|
||||
str = 'col-yellow'
|
||||
break
|
||||
case 2:
|
||||
str = 'col-green'
|
||||
break
|
||||
|
||||
}
|
||||
return str
|
||||
}
|
||||
var invoiceStatus = function (status) {
|
||||
var str = '待审核'
|
||||
// -1:用户取消,0:开票失败,1:开票中,2:开票完成
|
||||
switch (status) {
|
||||
case -1:
|
||||
str = '已取消'
|
||||
break
|
||||
case 0:
|
||||
str = '未通过'
|
||||
break
|
||||
case 1:
|
||||
str = '待审核'
|
||||
break
|
||||
case 2:
|
||||
str = '完成'
|
||||
break
|
||||
|
||||
}
|
||||
return str
|
||||
}
|
||||
var coverTxt = function (price) {
|
||||
// return '<span style=" height: 172rpx;line-height: 172rpx;color: #000000;font-size: 60rpx;font-weight: bold;width: 50rpx;"><span style="font-size:10px;">¥</span>' + price + '</span>'
|
||||
return '<span style="font-size:12px;">¥</span>' + price
|
||||
}
|
||||
var moneyTxt = function (size, price) {
|
||||
return '<span style="font-size:' + size + 'px;">¥</span>' + price
|
||||
}
|
||||
var payType = function (type) {
|
||||
// 充值1|支出2|提现3|系统扣款4|订单收入5|付款6)
|
||||
var typeStr = '支出'
|
||||
@ -241,5 +298,9 @@ module.exports = {
|
||||
payTypeColor: payTypeColor,
|
||||
payTypeSign: payTypeSign,
|
||||
payTypeFontSize: payTypeFontSize,
|
||||
coverTxt: coverTxt
|
||||
coverTxt: coverTxt,
|
||||
payWay: payWay,
|
||||
moneyTxt: moneyTxt,
|
||||
invoiceStatus: invoiceStatus,
|
||||
invoiceStatusColor: invoiceStatusColor
|
||||
};
|
Loading…
Reference in New Issue
Block a user