发票信息

This commit is contained in:
itgaojian163 2025-04-27 18:07:06 +08:00
parent 25816b0373
commit 268d49ec3c
25 changed files with 1491 additions and 133 deletions

View File

@ -1,50 +1,53 @@
{ {
"pages": [ "pages": [
"pages/mainPage/mainPage", "pages/mainPage/mainPage",
"pages/login/login", "pages/login/login",
"pages/index/index", "pages/index/index",
"pages/mine/mineIndex/mine", "pages/mine/mineIndex/mine",
"pages/copyright/createProjectInfo/createProjectInfo", "pages/copyright/createProjectInfo/createProjectInfo",
"pages/copyright/createBuy/createBuy", "pages/copyright/createBuy/createBuy",
"pages/copyright/payment/payment", "pages/copyright/payment/payment",
"pages/mine/mineAccount/mineCoupons/mineCoupons", "pages/mine/mineAccount/mineCoupons/mineCoupons",
"pages/copyright/publicPay/publicPay", "pages/copyright/publicPay/publicPay",
"pages/copyright/common/payState", "pages/copyright/common/payState",
"pages/readTxt/readTxt", "pages/readTxt/readTxt",
"pages/mine/mineAccount/mineInfo/mineInfo", "pages/mine/mineAccount/mineInfo/mineInfo",
"pages/mine/mineAccount/mineOrder/mineOrder", "pages/mine/mineAccount/mineOrder/mineOrder",
"pages/mine/mineAccount/mineContact/mineContact", "pages/mine/mineAccount/mineContact/mineContact",
"pages/treaty/rule/rule", "pages/treaty/rule/rule",
"pages/mine/mineAccount/minePayRecord/minePayRecord" "pages/mine/mineAccount/minePayRecord/minePayRecord",
], "pages/mine/mineAccount/mineInvoice/mineInvoice",
"window": { "pages/mine/mineAccount/invoiceInfo/invoiceInfo"
"navigationBarTextStyle": "black", ],
"navigationBarTitleText": "AI喵著", "window": {
"navigationBarBackgroundColor": "#ffffff" "navigationBarTextStyle": "black",
}, "navigationBarTitleText": "AI喵著",
"tabBar": { "navigationBarBackgroundColor": "#ffffff"
"custom": true, },
"color": "#515151", "tabBar": {
"selectedColor": "#FE9944", "custom": true,
"list": [{ "color": "#515151",
"pagePath": "pages/index/index", "selectedColor": "#FE9944",
"text": "首页", "list": [
"iconPath": "/static/images/ic_home_normal.png", {
"selectedIconPath": "/static/images/ic_home_select.png" "pagePath": "pages/index/index",
}, "text": "首页",
{ "iconPath": "/static/images/ic_home_normal.png",
"pagePath": "pages/mine/mineIndex/mine", "selectedIconPath": "/static/images/ic_home_select.png"
"text": "我的", },
"iconPath": "/static/images/ic_mine_normal.png", {
"selectedIconPath": "/static/images/ic_mine_select.png" "pagePath": "pages/mine/mineIndex/mine",
} "text": "我的",
] "iconPath": "/static/images/ic_mine_normal.png",
}, "selectedIconPath": "/static/images/ic_mine_select.png"
"style": "v2", }
"componentFramework": "glass-easel", ]
"sitemapLocation": "sitemap.json", },
"lazyCodeLoading": "requiredComponents", "style": "v2",
"useExtendedLib": { "componentFramework": "glass-easel",
"weui": true "sitemapLocation": "sitemap.json",
} "lazyCodeLoading": "requiredComponents",
"useExtendedLib": {
"weui": true
}
} }

View File

@ -47,6 +47,10 @@ page {
margin-right: 10rpx; margin-right: 10rpx;
} }
.ml-5 {
margin-left: 5rpx;
}
.ml-10 { .ml-10 {
margin-left: 10rpx; margin-left: 10rpx;
} }

View File

@ -14,6 +14,10 @@ Component({
coupons: { coupons: {
type: Object, type: Object,
value: null value: null
},
couponsList: {
type: Array,
value: null
} }
}, },
data: { data: {
@ -36,17 +40,17 @@ Component({
}, },
lifetimes: { lifetimes: {
ready() { ready() {
const _self = this // const _self = this
const systemInfo = wx.getWindowInfo() // const systemInfo = wx.getWindowInfo()
this.setData({ // this.setData({
screenHeight: systemInfo.windowHeight, // screenHeight: systemInfo.windowHeight,
screenWidth: systemInfo.windowWidth // screenWidth: systemInfo.windowWidth
}) // })
var phoneHeight = Math.floor(systemInfo.screenWidth / 750 * 100) / 100 //1rpx 是0.52px // var phoneHeight = Math.floor(systemInfo.screenWidth / 750 * 100) / 100 //1rpx 是0.52px
this.setData({ // this.setData({
'content.top': _self.data.top * phoneHeight, // 'content.top': _self.data.top * phoneHeight,
'content.left': _self.data.left * phoneHeight // 'content.left': _self.data.left * phoneHeight
}) // })
} }
}, },
methods: { methods: {

View File

@ -2,28 +2,35 @@
<view class="ad-container" animation="{{animation}}" style="left: {{initPosition.left}};top:{{initPosition.top}}"> <view class="ad-container" animation="{{animation}}" style="left: {{initPosition.left}};top:{{initPosition.top}}">
<view class="ic-close close-icon" bind:tap="onClose"></view> <view class="ic-close close-icon" bind:tap="onClose"></view>
<view class="image-box"> <view class="image-box">
<view class="ad-bg"></view> <image src="https://www.aimzhu.com/miniapp-assets/ad_background.png" mode="scaleToFill" class="ad-coupons-box-bg"></image>
<view class="ad-content"> <view class="ad-coupons-container">
<view class="price-box"> <scroll-view scroll-y style="height: {{couponsList.length>1 ? '550rpx' :'350rpx'}};">
<view class="p-icon">¥</view> <view class="ad-coupons-list-box">
<view class="p-content">{{coupons.amount/100}}</view> <block wx:for="{{couponsList}}" wx:key="index">
<view class="ad-coupons-item">
<image src="https://www.aimzhu.com/miniapp-assets/ad_item_bg.png" style="width: 100%;height:100%;" mode="scaleToFill"></image>
<view class="ad-coupons-item-content">
<view class="ad-coupons-item-price">
<rich-text nodes="{{tools.coverTxt(item.amount/100)}}"></rich-text>
</view>
<view class="ad-coupons-item-desc">
<view class="ad-coupons-item-desc-title">{{item.title}}</view>
<view class="ad-coupons-item-desc-time">{{item.useGmtStart}}至{{item.useGmtEnd}}</view>
</view>
</view>
</view>
</block>
</view>
</scroll-view>
<view class="custom-checkbox-group" bindtap="toggleCheck">
<view class="custom-checkbox {{checked ? 'checked' : ''}}">
<text wx:if="{{checked}}">✓</text>
</view>
<view style="margin-left: 5px;margin-top: 1px;">今日不再显示</view>
</view> </view>
<view class="ad-desc-box"> <view class="btn" bind:tap="onFurl">收下优惠卷</view>
<text class="ad-desc">{{coupons.title}}</text>
<view class="ad-period">期限:{{coupons.useGmtStart}}至{{coupons.useGmtEnd}}</view>
</view>
<!-- <view class="ad-icon-box">
<view class="ad-ic-up-circle ad-icon-size"></view>
<view class="ad-ic-down-circle ad-icon-size"></view>
</view> -->
</view> </view>
</view> </view>
<view class="custom-checkbox-group" bindtap="toggleCheck">
<view class="custom-checkbox {{checked ? 'checked' : ''}}">
<text wx:if="{{checked}}">✓</text>
</view>
<view style="margin-left: 5px;margin-top: 1px;">今日不再显示</view>
</view>
<view class="btn" bind:tap="onFurl">收下优惠卷</view>
</view> </view>
</view> </view>
<wxs src="../../utils/comm.wxs" module="tools"></wxs>

View File

@ -63,12 +63,7 @@
} }
.image-box {
position: relative;
display: flex;
justify-content: center;
align-items: center;
}
.ad-content { .ad-content {
position: absolute; position: absolute;
@ -85,6 +80,116 @@
flex-wrap: nowrap; flex-wrap: nowrap;
} }
.ad-coupons-box {
position: absolute;
height: 500rpx;
width: 83vw;
top: 80rpx;
left: 0;
}
.ad-coupons-list-box {
display: flex;
flex-direction: column;
align-items: center;
}
.ad-coupons-item-bg {
background-position: center;
background-size: contain;
background-repeat: no-repeat;
background-image: url('https://www.aimzhu.com/miniapp-assets/ad_item_bg.png');
width: 100%;
height: 100%;
}
.ad-coupons-item-content {
position: absolute;
display: flex;
top: 55rpx;
left: 0;
flex-direction: row;
width: 100%;
height: 77%;
justify-content: center;
align-items: center;
}
.ad-coupons-item-price-box {
padding: 5rpx;
color: #000000;
font-size: 40rpx;
font-weight: bold;
align-items: baseline;
justify-content: center;
text-overflow: ellipsis;
white-space: nowrap;
overflow: hidden;
}
.ad-coupons-item-desc {
display: flex;
flex: 1;
flex-direction: column;
justify-content: center;
align-items: center;
height: 100%;
}
.ad-coupons-item-price {
flex: 0.5;
text-align: center;
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
font-size: 60rpx;
font-weight: bold;
color: #000000;
}
.ad-coupons-item-price-icon {
font-size: 20rpx;
}
.ad-coupons-item-desc-title {
font-size: 32rpx;
margin-left: 5px;
color: #000000;
font-weight: bold;
text-align: center;
width: 28vw;
display: -webkit-box;
-webkit-box-orient: vertical;
-webkit-line-clamp: 2;
overflow: hidden;
text-overflow: ellipsis;
}
.ad-coupons-item-desc-time {
font-size: 18rpx;
margin-left: 5px;
color: #000000;
font-weight: bold;
width: 29vw;
text-overflow: ellipsis;
white-space: nowrap;
text-align: center;
overflow: hidden;
}
.ad-coupons-item {
position: relative;
top: 0;
left: 0;
width: 500rpx;
height: 240rpx;
}
.ad-coupons-item:nth-of-type(n+2) {
margin-top: 20rpx;
}
.price-box { .price-box {
display: flex; display: flex;
flex-direction: row; flex-direction: row;
@ -137,15 +242,15 @@
} }
.btn { .btn {
border-radius: 14px; border-radius: 50rpx;
background-color: rgba(255, 169, 0, 1); background-color: rgba(255, 169, 0, 1);
color: rgba(255, 255, 255, 1); color: rgba(255, 255, 255, 1);
font-size: 14px; font-size: 28rpx;
text-align: center; text-align: center;
font-family: PingFangSC-regular; margin-top: 20rpx;
margin-top: 20px; padding: 10rpx;
padding: 10px;
width: 55vw; width: 55vw;
align-self: center;
} }
.close-btn { .close-btn {
@ -187,11 +292,27 @@
justify-content: space-between; justify-content: space-between;
} }
.ad-bg { .image-box {
width: 600rpx; position: relative;
height: 600rpx; display: flex;
background-position: center; flex-direction: column;
background-size: contain; justify-content: center;
background-repeat: no-repeat; align-items: center;
background-image: url('https://www.aimzhu.com/miniapp-assets/ad_bg.png'); width: 652rpx;
height: 774rpx;
}
/* 图片背景 */
.ad-coupons-box-bg {
width: 100%;
height: 100%;
position: absolute;
left: 0;
top: 0;
}
/* 内容 */
.ad-coupons-container {
display: flex;
flex-direction: column;
} }

61
net/api/invoiceApi.js Normal file
View File

@ -0,0 +1,61 @@
import {
request
} from "../http";
const Cache = require('../../utils/storage');
// 公共API
const apiPath = {
mineInvoiceList: '/api/invoice-config/listpage/{userId}', //我的开票信息
saveInvoiceInfo: '/api/invoice-config/save/{userId}', //保存开票信息
updateInvoiceInfo: '/api/invoice-config/update/{invoiceId}', //修改开票信息
deleteInvoiceInfo: '/api/invoice-config/remove/{ids}', //删除开票信息
mineInvoiceRecordList: '/api/invoicerecharge/listpage/{userId}', //我的开票记录
saveInvoiceRecord: '/api/invoicerecharge/save/{userId}', // 保存开票申请
updateInvoiceRecord: '/api/invoicerecharge/save/{userId}', //修改开票申请
cancelInvoiceRecord: '/api/invoicerecharge/cancel/{invoiceRechargeId}', //取消开票申请
}
class InvoiceApi {
static userId = Cache.get('userId')
//我的开票信息
static doGetMineInvoiceList(data) {
const path = apiPath.mineInvoiceList.replace('{userId}', this.userId)
return request(path, "GET", data, null, 'plug')
}
//保存我的开票信息
static doSaveMineInvoiceInfo(data) {
const path = apiPath.saveInvoiceInfo.replace('{userId}', this.userId)
return request(path, "POST", data, null, 'plug')
}
//编辑开票信息
static doUpdateMineInvoiceInfo(id, data) {
const path = apiPath.updateInvoiceInfo.replace('{invoiceId}', id)
return request(path, "PUT", data, null, 'plug')
}
//删除开票信息
static doDelMineInvoiceInfo(id) {
const path = apiPath.deleteInvoiceInfo.replace('{ids}', id)
return request(path, "DELETE", null, null, 'plug')
}
//开票申请列表
static doGetInvoiceRecordList(data) {
const path = apiPath.mineInvoiceRecordList.replace('{userId}', this.userId)
return request(path, "GET", data, null, 'plug')
}
//取消开票申请
static doCancelInvoiceRecord(id) {
const path = apiPath.cancelInvoiceRecord.replace('{invoiceRechargeId}', id)
return request(path, "DELETE", null, null, 'plug')
}
//提交开票申请
static doSaveInvoiceRecord(data) {
const path = apiPath.saveInvoiceRecord.replace('{userId}', this.userId)
return request(path, "POST", data, null, 'plug')
}
//修改开票申请
static doUpdateInvoiceRecord(data) {
const path = apiPath.updateInvoiceRecord.replace('{userId}', this.userId)
return request(path, 'PUT', data, null, 'plug')
}
}
export default InvoiceApi;

View File

@ -19,7 +19,7 @@ const apiPath = {
delContact: '/api/proj-contact/remove/{ids}', //删除联系人 delContact: '/api/proj-contact/remove/{ids}', //删除联系人
canClaimsCoupons: '/api/coupon/list-can-claim', //获取可以申领的优惠卷 canClaimsCoupons: '/api/coupon/list-can-claim', //获取可以申领的优惠卷
saveCoupons: '/api/coupon/user/save', //领取优惠卷 saveCoupons: '/api/coupon/user/save', //领取优惠卷
minePayRecord: '/api/account/listpage-item/self' minePayRecord: '/api/account/listpage-item/self',
} }
class UserService { class UserService {
static doLogin(data) { static doLogin(data) {

View File

@ -2,6 +2,7 @@ const Cache = require('../utils/storage');
// 定义api服务地址 // 定义api服务地址
// const baseUrl = 'https://www.xzszwhy.cn/daqi/app'; // const baseUrl = 'https://www.xzszwhy.cn/daqi/app';
const operatorUrl = 'https://www.aimzhu.com/operator'; const operatorUrl = 'https://www.aimzhu.com/operator';
const operatorPlug = 'https://www.aimzhu.com/operator-plugin'
// const operatorUrl = 'https://www.aimzhu.com/operator'; // const operatorUrl = 'https://www.aimzhu.com/operator';
const copyrightUrl = 'https://www.aimzhu.com/copyright'; const copyrightUrl = 'https://www.aimzhu.com/copyright';
const uploadImgUrl = copyrightUrl + '/api/file/v2/upload-image' const uploadImgUrl = copyrightUrl + '/api/file/v2/upload-image'
@ -33,6 +34,8 @@ function request(url, method = "GET", data = {}, params = {}, project = "copyrig
baseUrl = copyrightUrl baseUrl = copyrightUrl
} else if (project == 'online') { } else if (project == 'online') {
baseUrl = 'https://www.aimzhu.com/operator' baseUrl = 'https://www.aimzhu.com/operator'
} else if (project == 'plug') {
baseUrl = operatorPlug
} }
return new Promise(function (resolve, reject) { return new Promise(function (resolve, reject) {
wx.request({ wx.request({

View File

@ -117,6 +117,17 @@ Page({
_self.doGetClaimsCoupons() _self.doGetClaimsCoupons()
} }
this.countViewHeight() this.countViewHeight()
this.getMineInfo()
},
//获取我的个人信息
getMineInfo() {
UserApi.doGetMineAccount()
.then(res => {
Cache.set('userId', res.userId)
})
.catch(err => {
console.log(err)
})
}, },
onShow() { onShow() {
const pages = getCurrentPages(); const pages = getCurrentPages();
@ -157,7 +168,7 @@ Page({
.then(res => { .then(res => {
if (res && res.length > 0) { if (res && res.length > 0) {
_self.setData({ _self.setData({
tempCoupons: res[0], tempCoupons: res,
showAd: true showAd: true
}) })
} }
@ -540,10 +551,13 @@ Page({
wx.showLoading({ wx.showLoading({
title: '领取中...', title: '领取中...',
}) })
const coupons = { const requests = _self.data.tempCoupons.map(item => {
couponId: _self.data.tempCoupons.couponId const coupons = {
} couponId: _self.data.tempCoupons.couponId
UserApi.doSaveCoupons(coupons) }
return UserApi.doSaveCoupons(coupons)
})
Promise.all(requests)
.then(res => { .then(res => {
wx.hideLoading() wx.hideLoading()
_self.setData({ _self.setData({

View File

@ -162,5 +162,5 @@
<down-progress isShow="{{downloading}}" progress="{{downloadProgress}}"></down-progress> <down-progress isShow="{{downloading}}" progress="{{downloadProgress}}"></down-progress>
<mp-toptips ext-class="custom-tips" msg="{{errorHint}}" type="error" show="{{showError}}"></mp-toptips> <mp-toptips ext-class="custom-tips" msg="{{errorHint}}" type="error" show="{{showError}}"></mp-toptips>
<mp-toptips ext-class="custom-tips" msg="{{successHint}}" delay="2000" type="success" show="{{showSuccess}}"></mp-toptips> <mp-toptips ext-class="custom-tips" msg="{{successHint}}" delay="2000" type="success" show="{{showSuccess}}"></mp-toptips>
<ad-popup coupons="{{tempCoupons}}" bindclose="doCloseAd" bindfurl="doFurlCoupons" visible="{{showAd}}"></ad-popup> <ad-popup couponsList="{{tempCoupons}}" bindclose="doCloseAd" bindfurl="doFurlCoupons" visible="{{showAd}}"></ad-popup>
<wxs src="../../utils/comm.wxs" module="tools"></wxs> <wxs src="../../utils/comm.wxs" module="tools"></wxs>

View File

@ -0,0 +1,337 @@
// pages/mine/mineAccount/invoiceInfo/invoiceInfo.js
import InvoiceApi from '../../../../net/api/invoiceApi'
import {
isValidPhone
} from '../../../../utils/validator'
Page({
/**
* 页面的初始数据
*/
data: {
keywords: '',
pageData: {
page: 1,
rows: 10,
keywords: ''
},
msgShow: false,
msgHint: '',
msgType: 'error',
loadingState: 'loading',
listRefreshTrig: false,
isLoadMore: false,
hasMore: true,
createDialog: false,
title: '开票信息',
isCreate: true, //区别是创建 or 编辑
companyName: '', //公司名称
companyAddress: '', //公司地址
companyPhone: '', //公司电话
companyBank: '', //公司开户行
bankNum: '', //开户行账号
tinNum: '', //纳税人识别号
btnTxt: '提交',
invoiceInfoList: [], //开票信息列表
tempItem: null,
},
/**
* 生命周期函数--监听页面加载
*/
onLoad(options) {
wx.setNavigationBarTitle({
title: '开票信息',
})
wx.setNavigationBarColor({
frontColor: '#000000', // 必写项,字体颜色仅支持#ffffff和#000000
backgroundColor: '#F0F0F0', // 传递的颜色值,仅支持十六进制颜色
animation: { // 可选项
duration: 500,
timingFunc: 'easeIn'
}
})
this.doRefreshList()
},
inputKeywords(e) {
this.setData({
keywords: e.detail.value
})
},
//清除搜索内容
clearSearch() {
const _self = this
_self.setData({
keywords: ''
})
_self.doRefreshList()
},
//发起搜索
doSearchKeyWord() {
const _self = this
_self.doRefreshList()
},
doGetInvoiceInfoList(isRefresh) {
const _self = this
_self.setData({
invoiceInfoList: isRefresh ? [] : _self.data.invoiceInfoList,
loadingState: isRefresh ? 'loading' : ''
})
InvoiceApi.doGetMineInvoiceList(_self.data.pageData)
.then(res => {
console.log(res)
var status = 'success'
status = res.rows && res.rows.length > 0 ? 'success' : 'empty'
_self.setData({
loadingState: isRefresh ? status : '',
invoiceInfoList: _self.data.invoiceInfoList.concat(res.rows),
listRefreshTrig: false,
isLoadMore: false
})
_self.setData({
hasMore: _self.data.invoiceInfoList.length < res.total
})
}, err => {
_self.setData({
loadingState: 'error',
listRefreshTrig: false,
isLoadMore: false,
hasMore: true
})
})
},
doRefreshList() {
console.log('正在刷新...')
const _self = this
_self.setData({
listRefreshTrig: true,
loadingState: 'loading',
hasMore: true,
'pageData.page': 1,
'pageData.keywords': _self.data.keywords,
isLoadMore: false
})
_self.doGetInvoiceInfoList(true)
},
doLoadMore() {
//判断是否正在加载中 与是否存在更多数据
const _self = this
if (_self.data.isLoadMore || !_self.data.hasMore) {
return
}
_self.setData({
isLoadMore: true,
'pageData.page': ++_self.data.pageData.page,
'pageData.keywords': _self.data.keywords
})
_self.doGetInvoiceInfoList(false)
},
inputCompanyName(e) {
this.setData({
companyName: e.detail.value
})
},
inputTinNum(e) {
this.setData({
tinNum: e.detail.value
})
},
inputAddress(e) {
this.setData({
companyAddress: e.detail.value
})
},
inputPhone(e) {
this.setData({
companyPhone: e.detail.value
})
},
inputBank(e) {
this.setData({
companyBank: e.detail.value
})
},
inputBankNum(e) {
this.setData({
bankNum: e.detail.value
})
},
showCreateDialog() {
this.setData({
title: '开票信息',
isCreate: true,
createDialog: !this.data.createDialog
})
},
//显示编辑
showEditDialog(e) {
const _self = this
const item = e.currentTarget.dataset.value
_self.setData({
tempItem: item,
companyName: item.invoiceName,
tinNum: item.invoiceNumber,
companyAddress: item.invoiceOrgaddress,
companyPhone: item.invoiceOrgtel,
companyBank: item.invoiceBank,
bankNum: item.invoiceBanknumber,
isCreate: false,
createDialog: true
})
},
//删除
showDelDialog(e) {
wx.showModal({
title: '警告',
content: '您确定要删除该开票信息吗?',
complete: (res) => {
if (res.confirm) {
this.doDeleteInvoiceInfo(e)
}
}
})
},
//删除开票信息
doDeleteInvoiceInfo(e) {
const item = e.currentTarget.dataset.value
const _self = this
wx.showLoading({
title: '删除中...',
})
InvoiceApi.doDelMineInvoiceInfo(item.invoiceId)
.then(res => {
wx.hideLoading()
_self.setData({
msgHint: '删除成功',
msgType: 'success',
msgShow: true
})
_self.doRefreshList()
})
.catch(err => {
wx.hideLoading()
_self.setData({
msgHint: err.msg ? err.msg : '删除失败,请稍后重试',
msgType: 'error',
msgShow: true
})
})
},
//编辑开票信息
editInvoiceInfo() {
const isLegl = this.checkParams()
if (isLegl) {
const _self = this
wx.showLoading({
title: '修改中...',
})
const data = _self.buildParams()
InvoiceApi.doUpdateMineInvoiceInfo(_self.data.tempItem.invoiceId, data)
.then(res => {
wx.hideLoading()
_self.setData({
tempItem: null,
msgType: 'success',
msgHint: '修改开票信息成功',
msgShow: true,
companyName: '',
tinNum: '',
companyAddress: '',
companyPhone: '',
companyBank: '',
bankNum: '',
isCreate: true,
createDialog: false
})
_self.doRefreshList()
})
.catch(err => {
wx.hideLoading()
_self.setData({
msgType: 'error',
msgHint: err.msg ? err.msg : '修改开票信息失败,请稍后重试',
msgShow: true
})
})
}
},
buildParams() {
const _self = this
const data = {
invoiceType: "企业",
invoiceName: _self.data.companyName,
invoiceNumber: _self.data.tinNum,
invoiceOrgaddress: _self.data.companyAddress,
invoiceOrgtel: _self.data.companyPhone,
invoiceBank: _self.data.companyBank,
invoiceBanknumber: _self.data.bankNum,
}
return data
},
//新增开票信息
saveInvoiceInfo() {
const _self = this
var isLegal = _self.checkParams()
if (isLegal) {
wx.showLoading({
title: '提交中...',
})
const data = _self.buildParams()
InvoiceApi.doSaveMineInvoiceInfo(data)
.then(res => {
wx.hideLoading()
_self.setData({
msgType: 'success',
msgHint: '新增开票信息成功',
msgShow: true,
companyName: '',
tinNum: '',
companyAddress: '',
companyPhone: '',
companyBank: '',
bankNum: '',
createDialog: false
})
_self.doRefreshList()
})
.catch(err => {
wx.hideLoading()
_self.setData({
msgType: 'error',
msgHint: err.msg ? err.msg : '新增开票信息失败,请稍后重试',
msgShow: true
})
})
}
},
checkParams() {
var _self = this
if (_self.data.companyName == '') {
_self.setData({
msgType: 'error',
msgHint: '请输入公司名称',
msgShow: true
})
return false
}
if (_self.data.tinNum == '') {
_self.setData({
msgType: 'error',
msgHint: '请输入纳税人识别号',
msgShow: true
})
return false
}
if (_self.data.companyPhone != '') {
if (!isValidPhone(_self.data.companyPhone)) {
_self.setData({
msgType: 'error',
msgHint: '公司电话号码有误,请核查',
msgShow: true
})
return false
}
}
return true
}
})

View File

@ -0,0 +1,8 @@
{
"usingComponents": {
"mp-half-screen-dialog": "weui-miniprogram/half-screen-dialog/half-screen-dialog",
"mp-loading": "weui-miniprogram/loading/loading",
"container-loading": "/components/container-loading/container-loading",
"mp-toptips": "weui-miniprogram/toptips/toptips"
}
}

View File

@ -0,0 +1,77 @@
<view class="page-container">
<view class="search-box">
<view class="search-container">
<input class="search-input" value="{{keywords}}" bindinput="inputKeywords" bindconfirm="doSearchKeyWord" type="text" confirm-type="search" placeholder="搜索" />
<view wx:if="{{keywords !=''}}" bind:tap="clearSearch" class="icon-clear" style="width: 20px;height: 20px;"></view>
</view>
<view class="add-btn" bind:tap="showCreateDialog">新建</view>
</view>
<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="{{invoiceInfoList}}" 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.invoiceName}}</view>
</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>
</view>
<view class="service-desc ml-10">纳税识别号:{{item.invoiceNumber}}</view>
<view class="service-desc ml-10">企业电话:{{item.invoiceOrgtel}}</view>
<view class="service-desc ml-5" wx:if="{{item.invoiceOrgaddress != ''}}">
<view class="icon-yellow-location" style="width: 32rpx;height: 32rpx;"></view>
<view class="ml-10">{{item.invoiceOrgaddress}}</view>
</view>
</view>
</block>
<mp-loading show="{{isLoadMore}}" type="circle"></mp-loading>
</view>
</scroll-view>
</container-loading>
</view>
</view>
<!-- 新增 -->
<mp-half-screen-dialog show="{{createDialog}}">
<view slot="title">{{title}}</view>
<view slot="desc">
<view class="form-box">
<view class="form-item">
<view class="form-item-title">公司名称</view>
<input confirm-type="next" type="text" adjust-position="{{true}}" cursor-spacing="{{50}}" value="{{companyName}}" placeholder="请输入公司名称" class="form-item-content" bindinput="inputCompanyName" />
</view>
<view class="form-item">
<view class="form-item-title">纳税人识别号</view>
<input confirm-type="next" type="text" adjust-position="{{true}}" cursor-spacing="{{50}}" value="{{tinNum}}" placeholder="请输入纳税人识别号" class="form-item-content" bindinput="inputTinNum" />
</view>
<view class="form-item">
<view class="form-item-title no-after" style="padding-left: 16rpx;">公司地址</view>
<input confirm-type="next" type="text" adjust-position="{{true}}" cursor-spacing="{{50}}" value="{{companyAddress}}" placeholder="请输入公司地址" class="form-item-content" bindinput="inputAddress" />
</view>
<view class="form-item">
<view class="form-item-title no-after" style="padding-left: 16rpx;">公司电话</view>
<input confirm-type="next" type="text" adjust-position="{{true}}" cursor-spacing="{{50}}" value="{{companyPhone}}" placeholder="请输入公司电话" class="form-item-content" bindinput="inputPhone" />
</view>
<view class="form-item">
<view class="form-item-title no-after" style="padding-left: 16rpx;">开户行</view>
<input confirm-type="next" type="text" adjust-position="{{true}}" cursor-spacing="{{50}}" value="{{companyBank}}" placeholder="请输入开户行" class="form-item-content" bindinput="inputBank" />
</view>
<view class="form-item">
<view class="form-item-title no-after" style="padding-left: 16rpx;">开户行账号</view>
<input confirm-type="next" type="text" adjust-position="{{true}}" cursor-spacing="{{50}}" value="{{bankNum}}" placeholder="请输入开户行账号" class="form-item-content" bindinput="inputBankNum" />
</view>
</view>
</view>
<view slot="footer">
<button wx:if="{{isCreate}}" class="confirm-btn" bind:tap="saveInvoiceInfo">{{btnTxt}}</button>
<button wx:if="{{!isCreate}}" class="confirm-btn" bind:tap="editInvoiceInfo">{{btnTxt}}</button>
</view>
</mp-half-screen-dialog>
<mp-toptips msg="{{msgHint}}" type="{{msgType}}" show="{{msgShow}}" delay="{{2000}}"></mp-toptips>

View File

@ -0,0 +1,261 @@
/* pages/mine/mineAccount/mineInvoice/mineInvoice.wxss */
page {
background: linear-gradient(to bottom, #F0F0F0, #FFFFFF);
background-size: 100% 100vh;
background-repeat: no-repeat;
}
.ic-user {
background-image: url('data:image/svg+xml;charset=utf-8;base64,PHN2ZyB0PSIxNzQzOTg4MzkwNjkwIiBjbGFzcz0iaWNvbiIgdmlld0JveD0iMCAwIDEwMjQgMTAyNCIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHAtaWQ9IjM0MDkiIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiI+PHBhdGggZD0iTTUxMiAxMDI0QzIyOS4yMDUzMzMgMTAyNCAwIDc5NC43OTQ2NjcgMCA1MTJTMjI5LjIwNTMzMyAwIDUxMiAwczUxMiAyMjkuMjA1MzMzIDUxMiA1MTItMjI5LjIwNTMzMyA1MTItNTEyIDUxMnogbTAtNDk2LjQ2OTMzM2ExNzAuNjY2NjY3IDE3MC42NjY2NjcgMCAxIDAgMC0zNDEuMzMzMzM0IDE3MC42NjY2NjcgMTcwLjY2NjY2NyAwIDAgMCAwIDM0MS4zMzMzMzR6IG0yNjMuNzY1MzMzIDI2My43MjI2NjZhMjYzLjc2NTMzMyAyNjMuNzY1MzMzIDAgMSAwLTUyNy41MzA2NjYgMGg1MjcuNTMwNjY2eiIgcC1pZD0iMzQxMCIgZmlsbD0iIzEyOTZkYiI+PC9wYXRoPjwvc3ZnPg==');
background-size: cover;
background-repeat: no-repeat;
}
.search-box {
position: fixed;
top: 0;
left: 0;
display: flex;
flex-direction: row;
align-items: center;
justify-content: center;
align-self: center;
width: 96vw;
}
.search-container {
position: relative;
align-self: center;
border-radius: 5px;
background-color: rgba(255, 255, 255, 1);
font-family: -regular;
margin: 10px 15px;
padding: 5px;
display: flex;
flex-direction: row;
justify-content: center;
align-items: center;
flex: 1;
}
.search-input {
box-sizing: border-box;
color: rgba(16, 16, 16, 1);
font-size: 14px;
text-align: center;
flex: 1;
}
.search-input::after {
content: '';
position: absolute;
left: 10px;
top: 50%;
transform: translateY(-50%);
width: 20px;
height: 20px;
margin-top: -1px;
background-size: cover;
background-image: url('data:image/svg+xml;charset=utf-8;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB2aWV3Qm94PSI2NCA2NCA4OTYgODk2IiB3aWR0aD0iMTQiIGhlaWdodD0iMTkiIHN0eWxlPSIiIGZpbHRlcj0ibm9uZSI+CiAgICAKICAgIDxnPgogICAgPHBhdGggZD0iTTkwOS42IDg1NC41TDY0OS45IDU5NC44QzY5MC4yIDU0Mi43IDcxMiA0NzkgNzEyIDQxMmMwLTgwLjItMzEuMy0xNTUuNC04Ny45LTIxMi4xLTU2LjYtNTYuNy0xMzItODcuOS0yMTIuMS04Ny45cy0xNTUuNSAzMS4zLTIxMi4xIDg3LjlDMTQzLjIgMjU2LjUgMTEyIDMzMS44IDExMiA0MTJjMCA4MC4xIDMxLjMgMTU1LjUgODcuOSAyMTIuMUMyNTYuNSA2ODAuOCAzMzEuOCA3MTIgNDEyIDcxMmM2NyAwIDEzMC42LTIxLjggMTgyLjctNjJsMjU5LjcgMjU5LjZhOC4yIDguMiAwIDAgMCAxMS42IDBsNDMuNi00My41YTguMiA4LjIgMCAwIDAgMC0xMS42ek01NzAuNCA1NzAuNEM1MjggNjEyLjcgNDcxLjggNjM2IDQxMiA2MzZzLTExNi0yMy4zLTE1OC40LTY1LjZDMjExLjMgNTI4IDE4OCA0NzEuOCAxODggNDEyczIzLjMtMTE2LjEgNjUuNi0xNTguNEMyOTYgMjExLjMgMzUyLjIgMTg4IDQxMiAxODhzMTE2LjEgMjMuMiAxNTguNCA2NS42UzYzNiAzNTIuMiA2MzYgNDEycy0yMy4zIDExNi4xLTY1LjYgMTU4LjR6IiBmaWxsPSJyZ2JhKDIwNCwyMDQsMjA0LDEpIj48L3BhdGg+CiAgICA8L2c+CiAgPC9zdmc+');
}
.add-btn {
border-radius: 4px;
background-color: rgba(50, 112, 255, 1);
color: rgba(255, 255, 255, 1);
font-size: 14px;
text-align: center;
text-align: center;
font-family: PingFangSC-regular;
padding: 5px 10px;
}
.add-btn:active {
background-color: rgba(50, 112, 255, .7);
}
.content-container {
height: 82vh;
margin-top: 50px;
}
.bottom-btn {
position: fixed;
bottom: 40rpx;
left: 0;
display: flex;
flex-direction: row;
justify-content: center;
align-items: center;
width: 100%;
}
.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;
}
.order-item:nth-of-type(n+2) {
margin-top: 15px;
}
.contact-desc {
display: flex;
flex-direction: row;
justify-content: space-between;
padding: 15px;
}
.contact-icon {
display: flex;
flex-direction: row;
justify-content: center;
align-items: center;
}
.name {
line-height: 32rpx;
flex: 1;
color: rgba(0, 0, 0, 1);
font-size: 28rpx;
text-align: left;
font-weight: bold;
font-family: SourceHanSansSC-black;
display: -webkit-box;
-webkit-box-orient: vertical;
-webkit-line-clamp: 2;
overflow: hidden;
text-overflow: ellipsis;
}
.service-desc {
padding: 5rpx 15rpx 15rpx 30rpx;
line-height: 26rpx;
color: rgba(122, 122, 122, 1);
font-size: 26rpx;
text-align: left;
font-family: SourceHanSansSC-regular;
display: flex;
flex-direction: row;
align-items: center;
}
.edit {
line-height: 20px;
border-radius: 4px;
background-color: rgba(122, 196, 131, 0.42);
color: rgba(255, 255, 255, 1);
font-size: 28rpx;
text-align: center;
font-family: PingFangSC-regular;
padding: 5rpx 10rpx;
}
.del {
line-height: 20px;
border-radius: 4px;
background-color: rgba(247, 49, 42, 0.42);
color: rgba(255, 255, 255, 1);
font-size: 28rpx;
text-align: center;
font-family: PingFangSC-regular;
padding: 5rpx 10rpx;
margin-left: 5px;
}
.del:active {
background-color: rgba(247, 49, 42, 0.7);
}
.options-box {
display: flex;
flex-direction: row;
justify-content: center;
align-items: center;
flex-wrap: nowrap;
min-width: 170rpx;
}
.edit:active {
background-color: rgba(122, 196, 131, 0.6);
}
.form-box {
display: flex;
flex-direction: column;
justify-content: center;
align-items: flex-start;
font-size: 14px;
width: 100vw;
}
.form-item {
display: flex;
flex-direction: row;
justify-content: flex-start;
align-items: center;
width: 80vw;
padding: 10px;
}
.form-item-title {
flex: .5;
font-size: 14px;
color: black;
font-weight: 500;
text-align: left;
}
.form-item-title:not(.no-after)::before {
content: "*";
color: red;
font-size: 14px;
margin-left: 1px;
text-align: center;
}
.form-item-content {
flex: 1;
text-align: right;
}
.confirm-btn {
background-color: #FFA900;
color: white;
font-size: 16px;
height: 70rpx;
line-height: 70rpx;
border-radius: 5px;
width: 85vw !important;
padding: 0rpx;
}
.confirm-btn:active {
background-color: #ffaa0083;
color: white;
}
.weui-half-screen-dialog__ft {
padding: 0rpx 0rpx 40rpx;
}
.weui-half-screen-dialog__bd {
padding-bottom: 40rpx;
}

View File

@ -310,7 +310,7 @@ Page({
_self.setData({ _self.setData({
isLoadMore: true, isLoadMore: true,
'pageData.page': ++_self.data.pageData.page, 'pageData.page': ++_self.data.pageData.page,
keywords: _self.data.keywords 'pageData.keywords': _self.data.keywords
}) })
_self.doGetMineContactList(false) _self.doGetMineContactList(false)
}, },

View File

@ -0,0 +1,102 @@
// pages/mine/mineAccount/mineInvoice/mineInvoice.js
import InvoiceApi from '../../../../net/api/invoiceApi'
Page({
/**
* 页面的初始数据
*/
data: {
keywords: '',
pageData: {
page: 1,
rows: 10,
keywords: ''
},
msgShow: false,
msgHint: '',
msgType: 'error',
loadingState: 'loading',
listRefreshTrig: false,
isLoadMore: false,
hasMore: true,
recordList: [], //开票记录
},
/**
* 生命周期函数--监听页面加载
*/
onLoad(options) {
wx.setNavigationBarTitle({
title: '发票管理',
})
wx.setNavigationBarColor({
frontColor: '#000000', // 必写项,字体颜色仅支持#ffffff和#000000
backgroundColor: '#F0F0F0', // 传递的颜色值,仅支持十六进制颜色
animation: { // 可选项
duration: 500,
timingFunc: 'easeIn'
}
})
this.doRefreshList()
},
openInvoiceInfo() {
wx.navigateTo({
url: '/pages/mine/mineAccount/invoiceInfo/invoiceInfo',
})
},
doRefreshList() {
console.log('正在刷新...')
const _self = this
_self.setData({
listRefreshTrig: true,
loadingState: 'loading',
hasMore: true,
'pageData.page': 1,
'pageData.keywords': _self.data.keywords,
isLoadMore: false
})
_self.doGetInvoiceRecordList(true)
},
doLoadMore() {
//判断是否正在加载中 与是否存在更多数据
const _self = this
if (_self.data.isLoadMore || !_self.data.hasMore) {
return
}
_self.setData({
isLoadMore: true,
'pageData.page': ++_self.data.pageData.page,
'pageData.keywords': _self.data.keywords
})
_self.doGetInvoiceRecordList(false)
},
doGetInvoiceRecordList(isRefresh) {
const _self = this
_self.setData({
recordList: isRefresh ? [] : _self.data.recordList,
loadingState: isRefresh ? 'loading' : ''
})
InvoiceApi.doGetInvoiceRecordList(_self.data.pageData)
.then(res => {
console.log(res)
var status = 'success'
status = res.rows && res.rows.length > 0 ? 'success' : 'empty'
_self.setData({
loadingState: isRefresh ? status : '',
recordList: _self.data.recordList.concat(res.rows),
listRefreshTrig: false,
isLoadMore: false
})
_self.setData({
hasMore: _self.data.recordList.length < res.total
})
}, err => {
_self.setData({
loadingState: 'error',
listRefreshTrig: false,
isLoadMore: false,
hasMore: true
})
})
}
})

View File

@ -0,0 +1,8 @@
{
"usingComponents": {
"mp-half-screen-dialog": "weui-miniprogram/half-screen-dialog/half-screen-dialog",
"mp-loading": "weui-miniprogram/loading/loading",
"container-loading": "/components/container-loading/container-loading",
"mp-toptips": "weui-miniprogram/toptips/toptips"
}
}

View File

@ -0,0 +1,69 @@
<view class="page-container">
<view class="search-box">
<view class="search-container">
<input class="search-input" value="{{keywords}}" bindinput="inputKeywords" bindconfirm="doSearchKeyWord" type="text" confirm-type="search" placeholder="搜索" />
<view wx:if="{{keywords !=''}}" bind:tap="clearSearch" class="icon-clear" style="width: 20px;height: 20px;"></view>
</view>
<view class="add-btn" bind:tap="openInvoiceInfo">开票信息</view>
</view>
<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-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>
</view>
<view class="service-desc ml-10">{{item.company}}</view>
<view class="service-desc ml-10">专属客服 : {{item.csaNo}}</view>
</view>
</block>
<mp-loading show="{{isLoadMore}}" type="circle"></mp-loading>
</view> -->
</scroll-view>
</container-loading>
</view>
<view class="bottom-btn">
<view class="confirm-btn">去开票</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>

View File

@ -0,0 +1,251 @@
/* pages/mine/mineAccount/mineInvoice/mineInvoice.wxss */
page {
background: linear-gradient(to bottom, #F0F0F0, #FFFFFF);
background-size: 100% 100vh;
background-repeat: no-repeat;
}
.ic-user {
background-image: url('data:image/svg+xml;charset=utf-8;base64,PHN2ZyB0PSIxNzQzOTg4MzkwNjkwIiBjbGFzcz0iaWNvbiIgdmlld0JveD0iMCAwIDEwMjQgMTAyNCIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHAtaWQ9IjM0MDkiIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiI+PHBhdGggZD0iTTUxMiAxMDI0QzIyOS4yMDUzMzMgMTAyNCAwIDc5NC43OTQ2NjcgMCA1MTJTMjI5LjIwNTMzMyAwIDUxMiAwczUxMiAyMjkuMjA1MzMzIDUxMiA1MTItMjI5LjIwNTMzMyA1MTItNTEyIDUxMnogbTAtNDk2LjQ2OTMzM2ExNzAuNjY2NjY3IDE3MC42NjY2NjcgMCAxIDAgMC0zNDEuMzMzMzM0IDE3MC42NjY2NjcgMTcwLjY2NjY2NyAwIDAgMCAwIDM0MS4zMzMzMzR6IG0yNjMuNzY1MzMzIDI2My43MjI2NjZhMjYzLjc2NTMzMyAyNjMuNzY1MzMzIDAgMSAwLTUyNy41MzA2NjYgMGg1MjcuNTMwNjY2eiIgcC1pZD0iMzQxMCIgZmlsbD0iIzEyOTZkYiI+PC9wYXRoPjwvc3ZnPg==');
background-size: cover;
background-repeat: no-repeat;
}
.search-box {
position: fixed;
top: 0;
left: 0;
display: flex;
flex-direction: row;
align-items: center;
justify-content: center;
align-self: center;
width: 96vw;
}
.search-container {
position: relative;
align-self: center;
border-radius: 5px;
background-color: rgba(255, 255, 255, 1);
font-family: -regular;
margin: 10px 15px;
padding: 5px;
display: flex;
flex-direction: row;
justify-content: center;
align-items: center;
flex: 1;
}
.search-input {
box-sizing: border-box;
color: rgba(16, 16, 16, 1);
font-size: 14px;
text-align: center;
flex: 1;
}
.search-input::after {
content: '';
position: absolute;
left: 10px;
top: 50%;
transform: translateY(-50%);
width: 20px;
height: 20px;
margin-top: -1px;
background-size: cover;
background-image: url('data:image/svg+xml;charset=utf-8;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB2aWV3Qm94PSI2NCA2NCA4OTYgODk2IiB3aWR0aD0iMTQiIGhlaWdodD0iMTkiIHN0eWxlPSIiIGZpbHRlcj0ibm9uZSI+CiAgICAKICAgIDxnPgogICAgPHBhdGggZD0iTTkwOS42IDg1NC41TDY0OS45IDU5NC44QzY5MC4yIDU0Mi43IDcxMiA0NzkgNzEyIDQxMmMwLTgwLjItMzEuMy0xNTUuNC04Ny45LTIxMi4xLTU2LjYtNTYuNy0xMzItODcuOS0yMTIuMS04Ny45cy0xNTUuNSAzMS4zLTIxMi4xIDg3LjlDMTQzLjIgMjU2LjUgMTEyIDMzMS44IDExMiA0MTJjMCA4MC4xIDMxLjMgMTU1LjUgODcuOSAyMTIuMUMyNTYuNSA2ODAuOCAzMzEuOCA3MTIgNDEyIDcxMmM2NyAwIDEzMC42LTIxLjggMTgyLjctNjJsMjU5LjcgMjU5LjZhOC4yIDguMiAwIDAgMCAxMS42IDBsNDMuNi00My41YTguMiA4LjIgMCAwIDAgMC0xMS42ek01NzAuNCA1NzAuNEM1MjggNjEyLjcgNDcxLjggNjM2IDQxMiA2MzZzLTExNi0yMy4zLTE1OC40LTY1LjZDMjExLjMgNTI4IDE4OCA0NzEuOCAxODggNDEyczIzLjMtMTE2LjEgNjUuNi0xNTguNEMyOTYgMjExLjMgMzUyLjIgMTg4IDQxMiAxODhzMTE2LjEgMjMuMiAxNTguNCA2NS42UzYzNiAzNTIuMiA2MzYgNDEycy0yMy4zIDExNi4xLTY1LjYgMTU4LjR6IiBmaWxsPSJyZ2JhKDIwNCwyMDQsMjA0LDEpIj48L3BhdGg+CiAgICA8L2c+CiAgPC9zdmc+');
}
.add-btn {
border-radius: 4px;
background-color: rgba(50, 112, 255, 1);
color: rgba(255, 255, 255, 1);
font-size: 14px;
text-align: center;
text-align: center;
font-family: PingFangSC-regular;
padding: 5px 10px;
}
.add-btn:active {
background-color: rgba(50, 112, 255, .7);
}
.content-container {
height: 82vh;
margin-top: 50px;
}
.bottom-btn {
position: fixed;
bottom: 40rpx;
left: 0;
display: flex;
flex-direction: row;
justify-content: center;
align-items: center;
width: 100%;
}
.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;
}
.order-item:nth-of-type(n+2) {
margin-top: 15px;
}
.contact-desc {
display: flex;
flex-direction: row;
justify-content: space-between;
padding: 15px;
align-items: center;
}
.contact-icon {
display: flex;
flex-direction: row;
justify-content: center;
align-items: center;
}
.name {
line-height: 23rpx;
color: rgba(0, 0, 0, 1);
font-size: 32rpx;
text-align: left;
font-weight: bold;
font-family: SourceHanSansSC-black;
}
.service-desc {
padding: 0px 15px 15px 15px;
line-height: 20px;
color: rgba(0, 0, 0, 1);
font-size: 14px;
text-align: left;
font-family: SourceHanSansSC-regular;
}
.edit {
line-height: 20px;
border-radius: 4px;
background-color: rgba(122, 196, 131, 0.42);
color: rgba(255, 255, 255, 1);
font-size: 28rpx;
text-align: center;
font-family: PingFangSC-regular;
padding: 5rpx 10rpx;
}
.del {
line-height: 20px;
border-radius: 4px;
background-color: rgba(247, 49, 42, 0.42);
color: rgba(255, 255, 255, 1);
font-size: 28rpx;
text-align: center;
font-family: PingFangSC-regular;
padding: 5rpx 10rpx;
margin-left: 5px;
}
.del:active {
background-color: rgba(247, 49, 42, 0.7);
}
.options-box {
display: flex;
flex-direction: row;
justify-content: center;
align-items: center;
}
.edit:active {
background-color: rgba(122, 196, 131, 0.6);
}
.form-box {
display: flex;
flex-direction: column;
justify-content: center;
align-items: flex-start;
font-size: 14px;
width: 100vw;
}
.form-item {
display: flex;
flex-direction: row;
justify-content: flex-start;
align-items: center;
width: 80vw;
padding: 10px;
}
.form-item-title {
flex: .3;
font-size: 14px;
color: black;
font-weight: 500;
text-align: left;
}
.form-item-title:not(.no-after)::before {
content: "*";
color: red;
font-size: 14px;
margin-left: 1px;
text-align: center;
}
.form-item-content {
flex: 1;
text-align: right;
}
.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;
}
.weui-half-screen-dialog__ft {
padding: 0rpx 0rpx 40rpx;
}
.weui-half-screen-dialog__bd {
padding-bottom: 40rpx;
}

View File

@ -31,29 +31,33 @@ Page({
materialCount: 0, materialCount: 0,
accountInfo: {}, accountInfo: {},
menuList: [{ menuList: [{
"icon": "ic-user", icon: "ic-user",
"title": "个人信息", title: "个人信息",
"path": "/pages/mine/mineAccount/mineInfo/mineInfo" path: "/pages/mine/mineAccount/mineInfo/mineInfo"
}, { }, {
"icon": "ic-pay-record", icon: 'ic-invoice-info',
"title": "资金流水", title: '开票信息',
"path": "/pages/mine/mineAccount/minePayRecord/minePayRecord" path: '/pages/mine/mineAccount/invoiceInfo/invoiceInfo'
}, { }, {
"icon": "ic-order", icon: "ic-pay-record",
"title": "我的订单", title: "资金流水",
"path": "/pages/mine/mineAccount/mineOrder/mineOrder" path: "/pages/mine/mineAccount/minePayRecord/minePayRecord"
}, { }, {
"icon": "ic-invoice", icon: "ic-order",
"title": "发票管理", title: "我的订单",
"path": "" path: "/pages/mine/mineAccount/mineOrder/mineOrder"
}, { }, {
"icon": "ic-contact", icon: "ic-invoice",
"title": "产权联系人", title: "发票管理",
"path": "/pages/mine/mineAccount/mineContact/mineContact" path: "/pages/mine/mineAccount/mineInvoice/mineInvoice"
}, { }, {
"icon": "ic-unbind", icon: "ic-contact",
"title": "微信解绑", title: "产权联系人",
"path": "" path: "/pages/mine/mineAccount/mineContact/mineContact"
}, {
icon: "ic-unbind",
title: "微信解绑",
path: ""
}], }],
buttons: [{ buttons: [{
text: '知道了' text: '知道了'
@ -314,12 +318,7 @@ Page({
itemClick(e) { itemClick(e) {
const path = e.currentTarget.dataset.path const path = e.currentTarget.dataset.path
const title = e.currentTarget.dataset.title const title = e.currentTarget.dataset.title
if (title == '发票管理') { if (title == '微信解绑') {
this.setData({
showHint: true,
hintTxt: `鉴于功能特性,需在电脑端完成操作。请打开浏览器,登录网址${copyrightUrl},进行后续操作。`
})
} else if (title == '微信解绑') {
this.unbindPhone() this.unbindPhone()
} else { } else {
wx.navigateTo({ wx.navigateTo({

View File

@ -269,6 +269,14 @@
height: 24px; height: 24px;
} }
.ic-invoice-info {
background-image: url('data:image/svg+xml;charset=utf-8;base64,PHN2ZyB0PSIxNzQ1NzM3NDQ3MTAwIiBjbGFzcz0iaWNvbiIgdmlld0JveD0iMCAwIDEwMjQgMTAyNCIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHAtaWQ9IjQ0MTMiIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiI+PHBhdGggZD0iTTUxMiA1MTJtLTQ3NS40Mjg1NzEgMGE0NzUuNDI4NTcxIDQ3NS40Mjg1NzEgMCAxIDAgOTUwLjg1NzE0MiAwIDQ3NS40Mjg1NzEgNDc1LjQyODU3MSAwIDEgMC05NTAuODU3MTQyIDBaIiBmaWxsPSIjN0U0RkZGIiBwLWlkPSI0NDE0Ij48L3BhdGg+PHBhdGggZD0iTTY1Ni4wOTE0MjkgNDIyLjc2NTcxNGExNi43NDk3MTQgMTYuNzQ5NzE0IDAgMCAxIDE3LjE4ODU3MSAxNS43OTg4NTd2MzA0LjM0NzQyOWE2LjU4Mjg1NyA2LjU4Mjg1NyAwIDAgMS0zLjUxMDg1NyA1LjQ4NTcxNCA3LjE2OCA3LjE2OCAwIDAgMS02LjcyOTE0MyAwYy0zLjgwMzQyOS0yLjQxMzcxNC02NC4yMTk0MjktMzcuODE0ODU3LTY0LjIxOTQyOS0zNy44MTQ4NTdhMTQuNDA5MTQzIDE0LjQwOTE0MyAwIDAgMC0xNC4xMTY1NzEgMGwtNjUuMTcwMjg2IDM3LjUyMjI4NmExNy41NTQyODYgMTcuNTU0Mjg2IDAgMCAxLTcuNjggMS4yNDM0MjggMjAuMjYwNTcxIDIwLjI2MDU3MSAwIDAgMS04LjA0NTcxNC0xLjI0MzQyOGwtNjEuOTUyLTM2Ljg2NGExNC40MDkxNDMgMTQuNDA5MTQzIDAgMCAwLTE0LjExNjU3MSAwbC0yMy40MDU3MTUgMTMuNDU4Mjg2LTE1Ljc5ODg1NyA5LjA2OTcxNC0yNi42MjQgMTUuMjg2ODU3YTguMjY1MTQzIDguMjY1MTQzIDAgMCAxLTcuMzE0Mjg2LTAuMzY1NzE0IDcuNjA2ODU3IDcuNjA2ODU3IDAgMCAxLTMuODc2NTcxLTUuNzc4Mjg2VjQzOS4wNzY1NzFhMTYuMDkxNDI5IDE2LjA5MTQyOSAwIDAgMSA1LjEyLTExLjYyOTcxNCAxNy42Mjc0MjkgMTcuNjI3NDI5IDAgMCAxIDEyLjE0MTcxNC00Ljc1NDI4NnogbS00Ny4wMzA4NTggMTQ4LjE4NzQyOUg0MTQuOTM5NDI5YTE1Ljk0NTE0MyAxNS45NDUxNDMgMCAwIDAtMTYuMDkxNDI5IDE1LjUwNjI4NmMwIDguNTU3NzE0IDcuMjQxMTQzIDE1LjQzMzE0MyAxNi4wOTE0MjkgMTUuNTc5NDI4aDE5NC4xMjExNDJjNS44NTE0MjkgMC4wNzMxNDMgMTEuMzM3MTQzLTIuODUyNTcxIDE0LjMzNi03LjY4YTE0LjkyMTE0MyAxNC45MjExNDMgMCAwIDAgMC0xNS43MjU3MTQgMTYuNDU3MTQzIDE2LjQ1NzE0MyAwIDAgMC0xNC4zMzYtNy42OHogbTAtNzAuNDM2NTcySDQxNC45Mzk0MjlhMTYuNDU3MTQzIDE2LjQ1NzE0MyAwIDAgMC0xNC4zMzYgNy42OCAxNC45MjExNDMgMTQuOTIxMTQzIDAgMCAwIDAgMTUuNzI1NzE1YzIuOTk4ODU3IDQuODI3NDI5IDguNDg0NTcxIDcuNzUzMTQzIDE0LjMzNiA3LjY4aDE5NC4xMjExNDJjNS44NTE0MjkgMC4wNzMxNDMgMTEuMzM3MTQzLTIuOTI1NzE0IDE0LjMzNi03LjY4YTE0LjkyMTE0MyAxNC45MjExNDMgMCAwIDAgMC0xNS43MjU3MTUgMTYuNDU3MTQzIDE2LjQ1NzE0MyAwIDAgMC0xNC4zMzYtNy42OHpNNzI0LjExNDI4NiAzNDIuMjM1NDI5YzE0LjExNjU3MSAwIDI1LjYgMTAuOTcxNDI5IDI1LjYgMjQuMzU2NTcxdjExMS45MDg1NzFhMjUuNTI2ODU3IDI1LjUyNjg1NyAwIDAgMS0yNS42IDI0LjQyOTcxNWgtMzMuNTcyNTcyVjQ0Mi41MTQyODZoMS45NzQ4NTdhMjAuMzMzNzE0IDIwLjMzMzcxNCAwIDAgMCAyMC40OC0xOS43NDg1NzIgMjAuMzMzNzE0IDIwLjMzMzcxNCAwIDAgMC0yMC40OC0xOS44OTQ4NTdIMzMxLjQ4MzQyOWEyMC45OTIgMjAuOTkyIDAgMCAwLTE4LjIxMjU3MiA5Ljg3NDI4NiAxOS4wMTcxNDMgMTkuMDE3MTQzIDAgMCAwIDAgMTkuOTY4IDIwLjk5MiAyMC45OTIgMCAwIDAgMTguMjg1NzE0IDkuODAxMTQzaDEuOTAxNzE1djYwLjQxNmgtMzMuNjQ1NzE1YTI1LjA4OCAyNS4wODggMCAwIDEtMjUuNTI2ODU3LTI0LjQyOTcxNXYtMTExLjkwODU3MWMwLTEzLjQ1ODI4NiAxMS40ODM0MjktMjQuMzU2NTcxIDI1LjYtMjQuMzU2NTcxeiIgZmlsbD0iI0ZGRkZGRiIgcC1pZD0iNDQxNSI+PC9wYXRoPjwvc3ZnPg==');
background-repeat: no-repeat;
background-size: cover;
width: 24px;
height: 24px;
}
.ic-unbind { .ic-unbind {
background-image: url('data:image/svg+xml;charset=utf-8;base64,PHN2ZyB0PSIxNzQ1NDAwMzc2MjkxIiBjbGFzcz0iaWNvbiIgdmlld0JveD0iMCAwIDEwMjQgMTAyNCIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHAtaWQ9IjYwMTgiIHdpZHRoPSIzMiIgaGVpZ2h0PSIzMiI+PHBhdGggZD0iTTUxMiA5ODRDMjUxLjc1IDk4NCAzOS45OSA3NzIuMjYgMzkuOTkgNTEyUzI1MS43NSA0MCA1MTIgNDBzNDcyLjAxIDIxMS43NCA0NzIuMDEgNDcyUzc3Mi4yNSA5ODQgNTEyIDk4NHoiIGZpbGw9IiNGRkY4RUYiIHAtaWQ9IjYwMTkiPjwvcGF0aD48cGF0aCBkPSJNNTEyIDgwQzI3My44MiA4MCA3OS45NyAyNzMuNzkgNzkuOTcgNTEyczE5My44NCA0MzIgNDMyLjAyIDQzMiA0MzIuMDMtMTkzLjc5IDQzMi4wMy00MzJDOTQ0LjAzIDI3My43OSA3NTAuMTggODAgNTEyIDgweiBtMC04MGMyODIuNzggMCA1MTIgMjI5LjIzIDUxMiA1MTJzLTIyOS4yMiA1MTItNTEyIDUxMlMwIDc5NC43NyAwIDUxMiAyMjkuMjIgMCA1MTIgMHoiIGZpbGw9IiNGRkE3MzgiIHAtaWQ9IjYwMjAiPjwvcGF0aD48cGF0aCBkPSJNMjc4LjYzIDI3OC42NmMyNy4zNC0yNy4yOSA3MS43My0yNy4yOSA5OS4wMiAwbDM2Ny43MiAzNjcuNjljMjcuMjkgMjcuMjkgMjcuMjkgNzEuNyAwIDk5LTI3LjM0IDI3LjI5LTcxLjczIDI3LjI5LTk5LjAyIDBsLTM2Ny43Mi0zNjcuN2MtMjcuMjktMjcuMjktMjcuMjktNzEuNyAwLTk4Ljk5eiIgZmlsbD0iI0ZGRkZGRiIgcC1pZD0iNjAyMSI+PC9wYXRoPjxwYXRoIGQ9Ik03MTcuMDYgNzE3LjA2YzExLjcyLTExLjY5IDExLjcyLTMwLjczIDAtNDIuNDJsLTM2Ny42Ny0zNjcuN2MtMTEuNzMtMTEuNy0zMC43Ny0xMS43LTQyLjQ1IDAtMTEuNjcgMTEuNy0xMS43MyAzMC43MyAwIDQyLjQzbDM2Ny42NyAzNjcuNjljMTEuNzMgMTEuNyAzMC43NyAxMS43IDQyLjQ1IDB6IG01Ni41NyA1Ni41N2MtNDIuOTYgNDIuOTYtMTEyLjU5IDQyLjk2LTE1NS41NSAwbC0zNjcuNzItMzY3LjdjLTQyLjk2LTQyLjk2LTQyLjk2LTExMi42MSAwLTE1NS41NiA0Mi45Ni00Mi45NiAxMTIuNTktNDIuOTYgMTU1LjU1IDBsMzY3LjcyIDM2Ny42OWM0Mi45NiA0Mi45NyA0Mi45NiAxMTIuNjIgMCAxNTUuNTd6IiBmaWxsPSIjRkZBNzM4IiBwLWlkPSI2MDIyIj48L3BhdGg+PHBhdGggZD0iTTczMC41MiAzOTguNzZsLTMzOS40IDMzOS40MWMtNy41MyA3LjUtMTcuNjYgMTEuNzEtMjguMzEgMTEuNzEtMTAuNiAwLTIwLjc5LTQuMjEtMjguMjYtMTEuNzFsLTQyLjQ1LTQyLjQyYy0zLjY5LTMuNzEtNi42Ni04LjEzLTguNjUtMTIuOTgtMi00Ljg1LTMuMDctMTAuMDUtMy4wNy0xNS4zczEuMDgtMTAuNDYgMy4wNy0xNS4zMWMyLTQuODUgNC45Ny05LjI2IDguNjUtMTIuOThsMzM5LjQtMzM5LjQxYzMuNzQtMy43MSA4LjE0LTYuNjYgMTMtOC42N2EzOS45NzQgMzkuOTc0IDAgMCAxIDE1LjMxLTMuMDRjNS4yMiAwIDEwLjQ0IDEuMDMgMTUuMzEgMy4wNCA0Ljg2IDIuMDEgOS4yNyA0Ljk2IDEyLjk1IDguNjdsNDIuNDUgNDIuNDNjNy40OCA3LjUgMTEuNzMgMTcuNjggMTEuNzMgMjguMjggMCAxMC42MS00LjI1IDIwLjc4LTExLjczIDI4LjI4eiIgZmlsbD0iI0ZGRjhFRiIgcC1pZD0iNjAyMyI+PC9wYXRoPjxwYXRoIGQ9Ik03MTMuMTYgMzcxLjQxbC0zMzkuNCAzMzkuNDFjLTcuNTMgNy41MS0xNy42NiAxMS43Mi0yOC4zMSAxMS43Mi0xMC42IDAtMjAuNzktNC4yMi0yOC4yNi0xMS43MmEzOS44OCAzOS44OCAwIDAgMS0xMS43My0yOC4yOGMwLTEwLjYxIDQuMi0yMC43OCAxMS43My0yOC4yOGwzMzkuNC0zMzkuNDFjNy41My03LjQ1IDE3LjY2LTExLjYyIDI4LjI2LTExLjU5IDEwLjU1IDAuMDIgMjAuNjggNC4yNCAyOC4yMSAxMS43MmEzOS45MDUgMzkuOTA1IDAgMCAxIDExLjY3IDI4LjJjMC4wNiAxMC41Ni00LjE0IDIwLjcyLTExLjU3IDI4LjIzeiIgZmlsbD0iI0ZGQTczOCIgcC1pZD0iNjAyNCI+PC9wYXRoPjwvc3ZnPg=='); background-image: url('data:image/svg+xml;charset=utf-8;base64,PHN2ZyB0PSIxNzQ1NDAwMzc2MjkxIiBjbGFzcz0iaWNvbiIgdmlld0JveD0iMCAwIDEwMjQgMTAyNCIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHAtaWQ9IjYwMTgiIHdpZHRoPSIzMiIgaGVpZ2h0PSIzMiI+PHBhdGggZD0iTTUxMiA5ODRDMjUxLjc1IDk4NCAzOS45OSA3NzIuMjYgMzkuOTkgNTEyUzI1MS43NSA0MCA1MTIgNDBzNDcyLjAxIDIxMS43NCA0NzIuMDEgNDcyUzc3Mi4yNSA5ODQgNTEyIDk4NHoiIGZpbGw9IiNGRkY4RUYiIHAtaWQ9IjYwMTkiPjwvcGF0aD48cGF0aCBkPSJNNTEyIDgwQzI3My44MiA4MCA3OS45NyAyNzMuNzkgNzkuOTcgNTEyczE5My44NCA0MzIgNDMyLjAyIDQzMiA0MzIuMDMtMTkzLjc5IDQzMi4wMy00MzJDOTQ0LjAzIDI3My43OSA3NTAuMTggODAgNTEyIDgweiBtMC04MGMyODIuNzggMCA1MTIgMjI5LjIzIDUxMiA1MTJzLTIyOS4yMiA1MTItNTEyIDUxMlMwIDc5NC43NyAwIDUxMiAyMjkuMjIgMCA1MTIgMHoiIGZpbGw9IiNGRkE3MzgiIHAtaWQ9IjYwMjAiPjwvcGF0aD48cGF0aCBkPSJNMjc4LjYzIDI3OC42NmMyNy4zNC0yNy4yOSA3MS43My0yNy4yOSA5OS4wMiAwbDM2Ny43MiAzNjcuNjljMjcuMjkgMjcuMjkgMjcuMjkgNzEuNyAwIDk5LTI3LjM0IDI3LjI5LTcxLjczIDI3LjI5LTk5LjAyIDBsLTM2Ny43Mi0zNjcuN2MtMjcuMjktMjcuMjktMjcuMjktNzEuNyAwLTk4Ljk5eiIgZmlsbD0iI0ZGRkZGRiIgcC1pZD0iNjAyMSI+PC9wYXRoPjxwYXRoIGQ9Ik03MTcuMDYgNzE3LjA2YzExLjcyLTExLjY5IDExLjcyLTMwLjczIDAtNDIuNDJsLTM2Ny42Ny0zNjcuN2MtMTEuNzMtMTEuNy0zMC43Ny0xMS43LTQyLjQ1IDAtMTEuNjcgMTEuNy0xMS43MyAzMC43MyAwIDQyLjQzbDM2Ny42NyAzNjcuNjljMTEuNzMgMTEuNyAzMC43NyAxMS43IDQyLjQ1IDB6IG01Ni41NyA1Ni41N2MtNDIuOTYgNDIuOTYtMTEyLjU5IDQyLjk2LTE1NS41NSAwbC0zNjcuNzItMzY3LjdjLTQyLjk2LTQyLjk2LTQyLjk2LTExMi42MSAwLTE1NS41NiA0Mi45Ni00Mi45NiAxMTIuNTktNDIuOTYgMTU1LjU1IDBsMzY3LjcyIDM2Ny42OWM0Mi45NiA0Mi45NyA0Mi45NiAxMTIuNjIgMCAxNTUuNTd6IiBmaWxsPSIjRkZBNzM4IiBwLWlkPSI2MDIyIj48L3BhdGg+PHBhdGggZD0iTTczMC41MiAzOTguNzZsLTMzOS40IDMzOS40MWMtNy41MyA3LjUtMTcuNjYgMTEuNzEtMjguMzEgMTEuNzEtMTAuNiAwLTIwLjc5LTQuMjEtMjguMjYtMTEuNzFsLTQyLjQ1LTQyLjQyYy0zLjY5LTMuNzEtNi42Ni04LjEzLTguNjUtMTIuOTgtMi00Ljg1LTMuMDctMTAuMDUtMy4wNy0xNS4zczEuMDgtMTAuNDYgMy4wNy0xNS4zMWMyLTQuODUgNC45Ny05LjI2IDguNjUtMTIuOThsMzM5LjQtMzM5LjQxYzMuNzQtMy43MSA4LjE0LTYuNjYgMTMtOC42N2EzOS45NzQgMzkuOTc0IDAgMCAxIDE1LjMxLTMuMDRjNS4yMiAwIDEwLjQ0IDEuMDMgMTUuMzEgMy4wNCA0Ljg2IDIuMDEgOS4yNyA0Ljk2IDEyLjk1IDguNjdsNDIuNDUgNDIuNDNjNy40OCA3LjUgMTEuNzMgMTcuNjggMTEuNzMgMjguMjggMCAxMC42MS00LjI1IDIwLjc4LTExLjczIDI4LjI4eiIgZmlsbD0iI0ZGRjhFRiIgcC1pZD0iNjAyMyI+PC9wYXRoPjxwYXRoIGQ9Ik03MTMuMTYgMzcxLjQxbC0zMzkuNCAzMzkuNDFjLTcuNTMgNy41MS0xNy42NiAxMS43Mi0yOC4zMSAxMS43Mi0xMC42IDAtMjAuNzktNC4yMi0yOC4yNi0xMS43MmEzOS44OCAzOS44OCAwIDAgMS0xMS43My0yOC4yOGMwLTEwLjYxIDQuMi0yMC43OCAxMS43My0yOC4yOGwzMzkuNC0zMzkuNDFjNy41My03LjQ1IDE3LjY2LTExLjYyIDI4LjI2LTExLjU5IDEwLjU1IDAuMDIgMjAuNjggNC4yNCAyOC4yMSAxMS43MmEzOS45MDUgMzkuOTA1IDAgMCAxIDExLjY3IDI4LjJjMC4wNiAxMC41Ni00LjE0IDIwLjcyLTExLjU3IDI4LjIzeiIgZmlsbD0iI0ZGQTczOCIgcC1pZD0iNjAyNCI+PC9wYXRoPjwvc3ZnPg==');
background-repeat: no-repeat; background-repeat: no-repeat;

View File

@ -5,5 +5,5 @@
"compileHotReLoad": true, "compileHotReLoad": true,
"urlCheck": false "urlCheck": false
}, },
"libVersion": "3.7.12" "libVersion": "3.5.8"
} }

View File

@ -96,4 +96,10 @@
background-image: url('data:image/svg+xml;charset=utf-8;base64,PHN2ZyB0PSIxNzQ1MzcxOTM5MTMzIiBjbGFzcz0iaWNvbiIgdmlld0JveD0iMCAwIDEwMjQgMTAyNCIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHAtaWQ9IjM2OTciIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiI+PHBhdGggZD0iTTk2MCA1MTJhNDQ4IDQ0OCAwIDEgMC00NDggNDQ4IDQ0OCA0NDggMCAwIDAgNDQ4LTQ0OHogbS00OTcuMjggMjEwLjI0YTcyOS42IDcyOS42IDAgMCAxLTIyNC0yMjQgOTYgOTYgMCAxIDEgMTY0LjQ4LTk4Ljg4IDQ5NiA0OTYgMCAwIDAgMTA4LjggMTIyLjU2IDU2NC44IDU2NC44IDAgMCAwIDEwOS4xMi0xMjMuNTIgOTYgOTYgMCAxIDEgMTY0LjQ4IDk4Ljg4IDcyOS42IDcyOS42IDAgMCAxLTIyNCAyMjQgOTYgOTYgMCAwIDEtOTguODggMC45NnoiIGZpbGw9IiNGRTk5NDQiIHAtaWQ9IjM2OTgiPjwvcGF0aD48L3N2Zz4='); background-image: url('data:image/svg+xml;charset=utf-8;base64,PHN2ZyB0PSIxNzQ1MzcxOTM5MTMzIiBjbGFzcz0iaWNvbiIgdmlld0JveD0iMCAwIDEwMjQgMTAyNCIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHAtaWQ9IjM2OTciIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiI+PHBhdGggZD0iTTk2MCA1MTJhNDQ4IDQ0OCAwIDEgMC00NDggNDQ4IDQ0OCA0NDggMCAwIDAgNDQ4LTQ0OHogbS00OTcuMjggMjEwLjI0YTcyOS42IDcyOS42IDAgMCAxLTIyNC0yMjQgOTYgOTYgMCAxIDEgMTY0LjQ4LTk4Ljg4IDQ5NiA0OTYgMCAwIDAgMTA4LjggMTIyLjU2IDU2NC44IDU2NC44IDAgMCAwIDEwOS4xMi0xMjMuNTIgOTYgOTYgMCAxIDEgMTY0LjQ4IDk4Ljg4IDcyOS42IDcyOS42IDAgMCAxLTIyNCAyMjQgOTYgOTYgMCAwIDEtOTguODggMC45NnoiIGZpbGw9IiNGRTk5NDQiIHAtaWQ9IjM2OTgiPjwvcGF0aD48L3N2Zz4=');
background-size: cover; background-size: cover;
background-repeat: no-repeat; background-repeat: no-repeat;
}
.icon-yellow-location {
background-image: url('data:image/svg+xml;charset=utf-8;base64,PHN2ZyB0PSIxNzQ1NzQzODkzOTMwIiBjbGFzcz0iaWNvbiIgdmlld0JveD0iMCAwIDEwMjQgMTAyNCIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHAtaWQ9IjUxMzEiIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiI+PHBhdGggZD0iTTUzNi4yMTcgOTAuNjljLTE2OC4wMjcgMC0zMDIuNTI0IDEzNC40OTctMzAyLjUyNCAzMDIuNTI0IDAgMTIwLjk2MSA4Ny4wNTYgMjE1LjA5NSAxODEuMTkxIDMzNi4wNTUgMzIuNzg2IDQ1Ljk0OSA1OC44NjYgOTEuOSA5Mi4wMjMgMTUwLjI2OCAxLjc0IDMuMTA1IDMuOTc0IDUuOTYxIDYuNTgyIDguMzIxIDUuNTg4IDUuMDkxIDEyLjA0NyA5LjQzOCAyMi43MjYgOS40Mzh2MGMxMS40MjUgMCAxOC4wMDctNC44NDQgMjMuODQ0LTEwLjQzMiAxLjk4Ni0xLjg2MiAzLjcyNi00LjA5OCA1LjIxNy02LjMzNCAzMy4xNTgtNTIuNDA5IDU5LjM2Mi05OC40ODEgOTIuMjczLTE0NC41NTYgOTQuMTM1LTEyNy42NjYgMTgxLjE5MS0yMjEuODAxIDE4MS4xOTEtMzQyLjc2MSAwLTE2OC4wMjctMTM0LjQ5Ny0zMDIuNTI0LTMwMi41MjQtMzAyLjUyNHYwek01MzYuMjE3IDQ5NC4wNTVjLTUzLjc3NCAwLTEwMC44NDItNDAuMzYyLTEwMC44NDItMTAwLjg0MnM0MC4zNjItMTAwLjg0MiAxMDAuODQyLTEwMC44NDJjNTMuNzc0IDAgMTAwLjg0MiA0MC4zNjIgMTAwLjg0MiAxMDAuODQyIDAgNTMuNzc0LTQwLjM2MiAxMDAuODQyLTEwMC44NDIgMTAwLjg0MnYweiIgcC1pZD0iNTEzMiIgZmlsbD0iI0ZFOTk0NCI+PC9wYXRoPjxwYXRoIGQ9Ik01MzYuMjE3IDc3MC42MjRjLTE0MC4zMzQgMC0yNTQuMDkxIDUzLjUyNS0yNTQuMDkxIDExOS40N3MxMTMuNzU3IDExOS40NyAyNTQuMDkxIDExOS40NyAyNTQuMDkxLTUzLjUyNSAyNTQuMDkxLTExOS40Ny0xMTMuNzU3LTExOS40Ny0yNTQuMDkxLTExOS40N3pNNTM2LjIxNyA5MzguNjUxYy0xMDUuNTYxIDAtMTkxLjAwMy0zNy41MDUtMTkxLjAwMy03OC43MzVzODUuNTY2LTc0Ljg4NiAxOTEuMDAzLTc0Ljg4NiAxOTEuMDAzIDMzLjUzMiAxOTEuMDAzIDc0Ljg4Ni04NS41NjYgNzguNzM1LTE5MS4wMDMgNzguNzM1eiIgcC1pZD0iNTEzMyIgZmlsbD0iI0ZFOTk0NCI+PC9wYXRoPjwvc3ZnPg==');
background-size: cover;
background-repeat: no-repeat;
} }

View File

@ -36,6 +36,10 @@ var payTypeSign = function (type) {
} }
return typeStr return typeStr
} }
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 payType = function (type) { var payType = function (type) {
// 充值1|支出2|提现3|系统扣款4|订单收入5|付款6) // 充值1|支出2|提现3|系统扣款4|订单收入5|付款6)
var typeStr = '支出' var typeStr = '支出'
@ -236,5 +240,6 @@ module.exports = {
payType: payType, payType: payType,
payTypeColor: payTypeColor, payTypeColor: payTypeColor,
payTypeSign: payTypeSign, payTypeSign: payTypeSign,
payTypeFontSize: payTypeFontSize payTypeFontSize: payTypeFontSize,
coverTxt: coverTxt
}; };

View File

@ -1,6 +1,16 @@
// 手机号验证 // 手机号验证
const isValidPhone = (phone) => { const isValidPhone = (phone) => {
return /^1[3-9]\d{9}$/.test(phone); // 手机号码正则
const mobilePattern = /^1[3-9]\d{9}$/;
// 固定电话正则
const landlinePattern = /^(0\d{2,3})[- ]?\d{7,8}$/;
if (mobilePattern.test(phone)) {
return true
} else if (landlinePattern.test(phone)) {
return true
} else {
return false
}
}; };
// 邮箱验证 // 邮箱验证