开票信息,开票列表,开票保存

This commit is contained in:
itgaojian163 2025-04-28 18:06:24 +08:00
parent 268d49ec3c
commit 8bbe186208
16 changed files with 1230 additions and 53 deletions

View File

@ -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",

View File

@ -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;
}

View File

@ -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)

View File

@ -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'

View 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}`,
})
}
}
})

View 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"
}
}

View 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>

View 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);
}

View 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
}
})

View File

@ -0,0 +1,6 @@
{
"usingComponents": {
"mp-toptips": "weui-miniprogram/toptips/toptips",
"mp-half-screen-dialog": "weui-miniprogram/half-screen-dialog/half-screen-dialog"
}
}

View 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>

View 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;
}

View File

@ -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',
})
}
})

View File

@ -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>

View File

@ -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) {

View File

@ -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
};