From 268d49ec3c71268df1f5659f8d48f588e166df7d Mon Sep 17 00:00:00 2001 From: itgaojian163 Date: Sun, 27 Apr 2025 18:07:06 +0800 Subject: [PATCH] =?UTF-8?q?=E5=8F=91=E7=A5=A8=E4=BF=A1=E6=81=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app.json | 99 ++--- app.wxss | 4 + components/ad-popup/ad-popup.js | 26 +- components/ad-popup/ad-popup.wxml | 49 +-- components/ad-popup/ad-popup.wxss | 157 +++++++- net/api/invoiceApi.js | 61 ++++ net/api/userApi.js | 2 +- net/http.js | 3 + pages/index/index.js | 24 +- pages/index/index.wxml | 2 +- .../mineAccount/invoiceInfo/invoiceInfo.js | 337 ++++++++++++++++++ .../mineAccount/invoiceInfo/invoiceInfo.json | 8 + .../mineAccount/invoiceInfo/invoiceInfo.wxml | 77 ++++ .../mineAccount/invoiceInfo/invoiceInfo.wxss | 261 ++++++++++++++ .../mineAccount/mineContact/mineContact.js | 2 +- .../mineAccount/mineInvoice/mineInvoice.js | 102 ++++++ .../mineAccount/mineInvoice/mineInvoice.json | 8 + .../mineAccount/mineInvoice/mineInvoice.wxml | 69 ++++ .../mineAccount/mineInvoice/mineInvoice.wxss | 251 +++++++++++++ pages/mine/mineIndex/mine.js | 47 ++- pages/mine/mineIndex/mine.wxss | 8 + project.private.config.json | 2 +- static/style/icon.wxss | 6 + utils/comm.wxs | 7 +- utils/validator.js | 12 +- 25 files changed, 1491 insertions(+), 133 deletions(-) create mode 100644 net/api/invoiceApi.js create mode 100644 pages/mine/mineAccount/invoiceInfo/invoiceInfo.js create mode 100644 pages/mine/mineAccount/invoiceInfo/invoiceInfo.json create mode 100644 pages/mine/mineAccount/invoiceInfo/invoiceInfo.wxml create mode 100644 pages/mine/mineAccount/invoiceInfo/invoiceInfo.wxss create mode 100644 pages/mine/mineAccount/mineInvoice/mineInvoice.js create mode 100644 pages/mine/mineAccount/mineInvoice/mineInvoice.json create mode 100644 pages/mine/mineAccount/mineInvoice/mineInvoice.wxml create mode 100644 pages/mine/mineAccount/mineInvoice/mineInvoice.wxss diff --git a/app.json b/app.json index 9a4cc33..505e685 100644 --- a/app.json +++ b/app.json @@ -1,50 +1,53 @@ { - "pages": [ - "pages/mainPage/mainPage", - "pages/login/login", - "pages/index/index", - "pages/mine/mineIndex/mine", - "pages/copyright/createProjectInfo/createProjectInfo", - "pages/copyright/createBuy/createBuy", - "pages/copyright/payment/payment", - "pages/mine/mineAccount/mineCoupons/mineCoupons", - "pages/copyright/publicPay/publicPay", - "pages/copyright/common/payState", - "pages/readTxt/readTxt", - "pages/mine/mineAccount/mineInfo/mineInfo", - "pages/mine/mineAccount/mineOrder/mineOrder", - "pages/mine/mineAccount/mineContact/mineContact", - "pages/treaty/rule/rule", - "pages/mine/mineAccount/minePayRecord/minePayRecord" - ], - "window": { - "navigationBarTextStyle": "black", - "navigationBarTitleText": "AI喵著", - "navigationBarBackgroundColor": "#ffffff" - }, - "tabBar": { - "custom": true, - "color": "#515151", - "selectedColor": "#FE9944", - "list": [{ - "pagePath": "pages/index/index", - "text": "首页", - "iconPath": "/static/images/ic_home_normal.png", - "selectedIconPath": "/static/images/ic_home_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", - "useExtendedLib": { - "weui": true - } + "pages": [ + "pages/mainPage/mainPage", + "pages/login/login", + "pages/index/index", + "pages/mine/mineIndex/mine", + "pages/copyright/createProjectInfo/createProjectInfo", + "pages/copyright/createBuy/createBuy", + "pages/copyright/payment/payment", + "pages/mine/mineAccount/mineCoupons/mineCoupons", + "pages/copyright/publicPay/publicPay", + "pages/copyright/common/payState", + "pages/readTxt/readTxt", + "pages/mine/mineAccount/mineInfo/mineInfo", + "pages/mine/mineAccount/mineOrder/mineOrder", + "pages/mine/mineAccount/mineContact/mineContact", + "pages/treaty/rule/rule", + "pages/mine/mineAccount/minePayRecord/minePayRecord", + "pages/mine/mineAccount/mineInvoice/mineInvoice", + "pages/mine/mineAccount/invoiceInfo/invoiceInfo" + ], + "window": { + "navigationBarTextStyle": "black", + "navigationBarTitleText": "AI喵著", + "navigationBarBackgroundColor": "#ffffff" + }, + "tabBar": { + "custom": true, + "color": "#515151", + "selectedColor": "#FE9944", + "list": [ + { + "pagePath": "pages/index/index", + "text": "首页", + "iconPath": "/static/images/ic_home_normal.png", + "selectedIconPath": "/static/images/ic_home_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", + "useExtendedLib": { + "weui": true + } } \ No newline at end of file diff --git a/app.wxss b/app.wxss index 8d165fd..7d880da 100644 --- a/app.wxss +++ b/app.wxss @@ -47,6 +47,10 @@ page { margin-right: 10rpx; } +.ml-5 { + margin-left: 5rpx; +} + .ml-10 { margin-left: 10rpx; } diff --git a/components/ad-popup/ad-popup.js b/components/ad-popup/ad-popup.js index fcae4a7..5849c3b 100644 --- a/components/ad-popup/ad-popup.js +++ b/components/ad-popup/ad-popup.js @@ -14,6 +14,10 @@ Component({ coupons: { type: Object, value: null + }, + couponsList: { + type: Array, + value: null } }, data: { @@ -36,17 +40,17 @@ Component({ }, lifetimes: { ready() { - const _self = this - const systemInfo = wx.getWindowInfo() - this.setData({ - screenHeight: systemInfo.windowHeight, - screenWidth: systemInfo.windowWidth - }) - var phoneHeight = Math.floor(systemInfo.screenWidth / 750 * 100) / 100 //1rpx 是0.52px - this.setData({ - 'content.top': _self.data.top * phoneHeight, - 'content.left': _self.data.left * phoneHeight - }) + // const _self = this + // const systemInfo = wx.getWindowInfo() + // this.setData({ + // screenHeight: systemInfo.windowHeight, + // screenWidth: systemInfo.windowWidth + // }) + // var phoneHeight = Math.floor(systemInfo.screenWidth / 750 * 100) / 100 //1rpx 是0.52px + // this.setData({ + // 'content.top': _self.data.top * phoneHeight, + // 'content.left': _self.data.left * phoneHeight + // }) } }, methods: { diff --git a/components/ad-popup/ad-popup.wxml b/components/ad-popup/ad-popup.wxml index 884c6ba..4ef8db2 100644 --- a/components/ad-popup/ad-popup.wxml +++ b/components/ad-popup/ad-popup.wxml @@ -2,28 +2,35 @@ - - - - ¥ - {{coupons.amount/100}} + + + + + + + + + + + + + {{item.title}} + {{item.useGmtStart}}至{{item.useGmtEnd}} + + + + + + + + + + + 今日不再显示 - - {{coupons.title}} - 期限:{{coupons.useGmtStart}}至{{coupons.useGmtEnd}} - - + 收下优惠卷 - - - - - 今日不再显示 - - 收下优惠卷 - \ No newline at end of file + + \ No newline at end of file diff --git a/components/ad-popup/ad-popup.wxss b/components/ad-popup/ad-popup.wxss index ac49f99..7d3d17f 100644 --- a/components/ad-popup/ad-popup.wxss +++ b/components/ad-popup/ad-popup.wxss @@ -63,12 +63,7 @@ } -.image-box { - position: relative; - display: flex; - justify-content: center; - align-items: center; -} + .ad-content { position: absolute; @@ -85,6 +80,116 @@ 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 { display: flex; flex-direction: row; @@ -137,15 +242,15 @@ } .btn { - border-radius: 14px; + border-radius: 50rpx; background-color: rgba(255, 169, 0, 1); color: rgba(255, 255, 255, 1); - font-size: 14px; + font-size: 28rpx; text-align: center; - font-family: PingFangSC-regular; - margin-top: 20px; - padding: 10px; + margin-top: 20rpx; + padding: 10rpx; width: 55vw; + align-self: center; } .close-btn { @@ -187,11 +292,27 @@ justify-content: space-between; } -.ad-bg { - width: 600rpx; - height: 600rpx; - background-position: center; - background-size: contain; - background-repeat: no-repeat; - background-image: url('https://www.aimzhu.com/miniapp-assets/ad_bg.png'); +.image-box { + position: relative; + display: flex; + flex-direction: column; + justify-content: center; + align-items: center; + 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; } \ No newline at end of file diff --git a/net/api/invoiceApi.js b/net/api/invoiceApi.js new file mode 100644 index 0000000..281b787 --- /dev/null +++ b/net/api/invoiceApi.js @@ -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; \ No newline at end of file diff --git a/net/api/userApi.js b/net/api/userApi.js index 4401328..11a637b 100644 --- a/net/api/userApi.js +++ b/net/api/userApi.js @@ -19,7 +19,7 @@ const apiPath = { delContact: '/api/proj-contact/remove/{ids}', //删除联系人 canClaimsCoupons: '/api/coupon/list-can-claim', //获取可以申领的优惠卷 saveCoupons: '/api/coupon/user/save', //领取优惠卷 - minePayRecord: '/api/account/listpage-item/self' + minePayRecord: '/api/account/listpage-item/self', } class UserService { static doLogin(data) { diff --git a/net/http.js b/net/http.js index 6cdd013..2478207 100644 --- a/net/http.js +++ b/net/http.js @@ -2,6 +2,7 @@ const Cache = require('../utils/storage'); // 定义api服务地址 // const baseUrl = 'https://www.xzszwhy.cn/daqi/app'; const operatorUrl = 'https://www.aimzhu.com/operator'; +const operatorPlug = 'https://www.aimzhu.com/operator-plugin' // const operatorUrl = 'https://www.aimzhu.com/operator'; const copyrightUrl = 'https://www.aimzhu.com/copyright'; const uploadImgUrl = copyrightUrl + '/api/file/v2/upload-image' @@ -33,6 +34,8 @@ function request(url, method = "GET", data = {}, params = {}, project = "copyrig baseUrl = copyrightUrl } else if (project == 'online') { baseUrl = 'https://www.aimzhu.com/operator' + } else if (project == 'plug') { + baseUrl = operatorPlug } return new Promise(function (resolve, reject) { wx.request({ diff --git a/pages/index/index.js b/pages/index/index.js index af3979e..fb89887 100644 --- a/pages/index/index.js +++ b/pages/index/index.js @@ -117,6 +117,17 @@ Page({ _self.doGetClaimsCoupons() } this.countViewHeight() + this.getMineInfo() + }, + //获取我的个人信息 + getMineInfo() { + UserApi.doGetMineAccount() + .then(res => { + Cache.set('userId', res.userId) + }) + .catch(err => { + console.log(err) + }) }, onShow() { const pages = getCurrentPages(); @@ -157,7 +168,7 @@ Page({ .then(res => { if (res && res.length > 0) { _self.setData({ - tempCoupons: res[0], + tempCoupons: res, showAd: true }) } @@ -540,10 +551,13 @@ Page({ wx.showLoading({ title: '领取中...', }) - const coupons = { - couponId: _self.data.tempCoupons.couponId - } - UserApi.doSaveCoupons(coupons) + const requests = _self.data.tempCoupons.map(item => { + const coupons = { + couponId: _self.data.tempCoupons.couponId + } + return UserApi.doSaveCoupons(coupons) + }) + Promise.all(requests) .then(res => { wx.hideLoading() _self.setData({ diff --git a/pages/index/index.wxml b/pages/index/index.wxml index fa83f3d..8412c28 100644 --- a/pages/index/index.wxml +++ b/pages/index/index.wxml @@ -162,5 +162,5 @@ - + \ No newline at end of file diff --git a/pages/mine/mineAccount/invoiceInfo/invoiceInfo.js b/pages/mine/mineAccount/invoiceInfo/invoiceInfo.js new file mode 100644 index 0000000..9fec4f1 --- /dev/null +++ b/pages/mine/mineAccount/invoiceInfo/invoiceInfo.js @@ -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 + } +}) \ No newline at end of file diff --git a/pages/mine/mineAccount/invoiceInfo/invoiceInfo.json b/pages/mine/mineAccount/invoiceInfo/invoiceInfo.json new file mode 100644 index 0000000..67284f6 --- /dev/null +++ b/pages/mine/mineAccount/invoiceInfo/invoiceInfo.json @@ -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" + } +} \ No newline at end of file diff --git a/pages/mine/mineAccount/invoiceInfo/invoiceInfo.wxml b/pages/mine/mineAccount/invoiceInfo/invoiceInfo.wxml new file mode 100644 index 0000000..df4092e --- /dev/null +++ b/pages/mine/mineAccount/invoiceInfo/invoiceInfo.wxml @@ -0,0 +1,77 @@ + + + + + + + 新建 + + + + + + + + + + + {{item.invoiceName}} + + + 编辑 + 删除 + + + 纳税识别号:{{item.invoiceNumber}} + 企业电话:{{item.invoiceOrgtel}} + + + {{item.invoiceOrgaddress}} + + + + + + + + + + + + + {{title}} + + + + 公司名称 + + + + 纳税人识别号 + + + + 公司地址 + + + + 公司电话 + + + + 开户行 + + + + 开户行账号 + + + + + + + + + + + \ No newline at end of file diff --git a/pages/mine/mineAccount/invoiceInfo/invoiceInfo.wxss b/pages/mine/mineAccount/invoiceInfo/invoiceInfo.wxss new file mode 100644 index 0000000..dcf6ff3 --- /dev/null +++ b/pages/mine/mineAccount/invoiceInfo/invoiceInfo.wxss @@ -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; +} \ No newline at end of file diff --git a/pages/mine/mineAccount/mineContact/mineContact.js b/pages/mine/mineAccount/mineContact/mineContact.js index e08d1b3..41e3d7a 100644 --- a/pages/mine/mineAccount/mineContact/mineContact.js +++ b/pages/mine/mineAccount/mineContact/mineContact.js @@ -310,7 +310,7 @@ Page({ _self.setData({ isLoadMore: true, 'pageData.page': ++_self.data.pageData.page, - keywords: _self.data.keywords + 'pageData.keywords': _self.data.keywords }) _self.doGetMineContactList(false) }, diff --git a/pages/mine/mineAccount/mineInvoice/mineInvoice.js b/pages/mine/mineAccount/mineInvoice/mineInvoice.js new file mode 100644 index 0000000..13b13a8 --- /dev/null +++ b/pages/mine/mineAccount/mineInvoice/mineInvoice.js @@ -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 + }) + }) + } +}) \ No newline at end of file diff --git a/pages/mine/mineAccount/mineInvoice/mineInvoice.json b/pages/mine/mineAccount/mineInvoice/mineInvoice.json new file mode 100644 index 0000000..67284f6 --- /dev/null +++ b/pages/mine/mineAccount/mineInvoice/mineInvoice.json @@ -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" + } +} \ No newline at end of file diff --git a/pages/mine/mineAccount/mineInvoice/mineInvoice.wxml b/pages/mine/mineAccount/mineInvoice/mineInvoice.wxml new file mode 100644 index 0000000..6ee53db --- /dev/null +++ b/pages/mine/mineAccount/mineInvoice/mineInvoice.wxml @@ -0,0 +1,69 @@ + + + + + + + 开票信息 + + + + + + + + + + 去开票 + + + + + + + \ No newline at end of file diff --git a/pages/mine/mineAccount/mineInvoice/mineInvoice.wxss b/pages/mine/mineAccount/mineInvoice/mineInvoice.wxss new file mode 100644 index 0000000..ab58181 --- /dev/null +++ b/pages/mine/mineAccount/mineInvoice/mineInvoice.wxss @@ -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; +} \ No newline at end of file diff --git a/pages/mine/mineIndex/mine.js b/pages/mine/mineIndex/mine.js index d1ace7a..cdba7e6 100644 --- a/pages/mine/mineIndex/mine.js +++ b/pages/mine/mineIndex/mine.js @@ -31,29 +31,33 @@ Page({ materialCount: 0, accountInfo: {}, menuList: [{ - "icon": "ic-user", - "title": "个人信息", - "path": "/pages/mine/mineAccount/mineInfo/mineInfo" + icon: "ic-user", + title: "个人信息", + path: "/pages/mine/mineAccount/mineInfo/mineInfo" }, { - "icon": "ic-pay-record", - "title": "资金流水", - "path": "/pages/mine/mineAccount/minePayRecord/minePayRecord" + icon: 'ic-invoice-info', + title: '开票信息', + path: '/pages/mine/mineAccount/invoiceInfo/invoiceInfo' }, { - "icon": "ic-order", - "title": "我的订单", - "path": "/pages/mine/mineAccount/mineOrder/mineOrder" + icon: "ic-pay-record", + title: "资金流水", + path: "/pages/mine/mineAccount/minePayRecord/minePayRecord" }, { - "icon": "ic-invoice", - "title": "发票管理", - "path": "" + icon: "ic-order", + title: "我的订单", + path: "/pages/mine/mineAccount/mineOrder/mineOrder" }, { - "icon": "ic-contact", - "title": "产权联系人", - "path": "/pages/mine/mineAccount/mineContact/mineContact" + icon: "ic-invoice", + title: "发票管理", + path: "/pages/mine/mineAccount/mineInvoice/mineInvoice" }, { - "icon": "ic-unbind", - "title": "微信解绑", - "path": "" + icon: "ic-contact", + title: "产权联系人", + path: "/pages/mine/mineAccount/mineContact/mineContact" + }, { + icon: "ic-unbind", + title: "微信解绑", + path: "" }], buttons: [{ text: '知道了' @@ -314,12 +318,7 @@ Page({ itemClick(e) { const path = e.currentTarget.dataset.path const title = e.currentTarget.dataset.title - if (title == '发票管理') { - this.setData({ - showHint: true, - hintTxt: `鉴于功能特性,需在电脑端完成操作。请打开浏览器,登录网址${copyrightUrl},进行后续操作。` - }) - } else if (title == '微信解绑') { + if (title == '微信解绑') { this.unbindPhone() } else { wx.navigateTo({ diff --git a/pages/mine/mineIndex/mine.wxss b/pages/mine/mineIndex/mine.wxss index ba3c1d6..2a67803 100644 --- a/pages/mine/mineIndex/mine.wxss +++ b/pages/mine/mineIndex/mine.wxss @@ -269,6 +269,14 @@ 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 { background-image: url('data:image/svg+xml;charset=utf-8;base64,PHN2ZyB0PSIxNzQ1NDAwMzc2MjkxIiBjbGFzcz0iaWNvbiIgdmlld0JveD0iMCAwIDEwMjQgMTAyNCIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHAtaWQ9IjYwMTgiIHdpZHRoPSIzMiIgaGVpZ2h0PSIzMiI+PHBhdGggZD0iTTUxMiA5ODRDMjUxLjc1IDk4NCAzOS45OSA3NzIuMjYgMzkuOTkgNTEyUzI1MS43NSA0MCA1MTIgNDBzNDcyLjAxIDIxMS43NCA0NzIuMDEgNDcyUzc3Mi4yNSA5ODQgNTEyIDk4NHoiIGZpbGw9IiNGRkY4RUYiIHAtaWQ9IjYwMTkiPjwvcGF0aD48cGF0aCBkPSJNNTEyIDgwQzI3My44MiA4MCA3OS45NyAyNzMuNzkgNzkuOTcgNTEyczE5My44NCA0MzIgNDMyLjAyIDQzMiA0MzIuMDMtMTkzLjc5IDQzMi4wMy00MzJDOTQ0LjAzIDI3My43OSA3NTAuMTggODAgNTEyIDgweiBtMC04MGMyODIuNzggMCA1MTIgMjI5LjIzIDUxMiA1MTJzLTIyOS4yMiA1MTItNTEyIDUxMlMwIDc5NC43NyAwIDUxMiAyMjkuMjIgMCA1MTIgMHoiIGZpbGw9IiNGRkE3MzgiIHAtaWQ9IjYwMjAiPjwvcGF0aD48cGF0aCBkPSJNMjc4LjYzIDI3OC42NmMyNy4zNC0yNy4yOSA3MS43My0yNy4yOSA5OS4wMiAwbDM2Ny43MiAzNjcuNjljMjcuMjkgMjcuMjkgMjcuMjkgNzEuNyAwIDk5LTI3LjM0IDI3LjI5LTcxLjczIDI3LjI5LTk5LjAyIDBsLTM2Ny43Mi0zNjcuN2MtMjcuMjktMjcuMjktMjcuMjktNzEuNyAwLTk4Ljk5eiIgZmlsbD0iI0ZGRkZGRiIgcC1pZD0iNjAyMSI+PC9wYXRoPjxwYXRoIGQ9Ik03MTcuMDYgNzE3LjA2YzExLjcyLTExLjY5IDExLjcyLTMwLjczIDAtNDIuNDJsLTM2Ny42Ny0zNjcuN2MtMTEuNzMtMTEuNy0zMC43Ny0xMS43LTQyLjQ1IDAtMTEuNjcgMTEuNy0xMS43MyAzMC43MyAwIDQyLjQzbDM2Ny42NyAzNjcuNjljMTEuNzMgMTEuNyAzMC43NyAxMS43IDQyLjQ1IDB6IG01Ni41NyA1Ni41N2MtNDIuOTYgNDIuOTYtMTEyLjU5IDQyLjk2LTE1NS41NSAwbC0zNjcuNzItMzY3LjdjLTQyLjk2LTQyLjk2LTQyLjk2LTExMi42MSAwLTE1NS41NiA0Mi45Ni00Mi45NiAxMTIuNTktNDIuOTYgMTU1LjU1IDBsMzY3LjcyIDM2Ny42OWM0Mi45NiA0Mi45NyA0Mi45NiAxMTIuNjIgMCAxNTUuNTd6IiBmaWxsPSIjRkZBNzM4IiBwLWlkPSI2MDIyIj48L3BhdGg+PHBhdGggZD0iTTczMC41MiAzOTguNzZsLTMzOS40IDMzOS40MWMtNy41MyA3LjUtMTcuNjYgMTEuNzEtMjguMzEgMTEuNzEtMTAuNiAwLTIwLjc5LTQuMjEtMjguMjYtMTEuNzFsLTQyLjQ1LTQyLjQyYy0zLjY5LTMuNzEtNi42Ni04LjEzLTguNjUtMTIuOTgtMi00Ljg1LTMuMDctMTAuMDUtMy4wNy0xNS4zczEuMDgtMTAuNDYgMy4wNy0xNS4zMWMyLTQuODUgNC45Ny05LjI2IDguNjUtMTIuOThsMzM5LjQtMzM5LjQxYzMuNzQtMy43MSA4LjE0LTYuNjYgMTMtOC42N2EzOS45NzQgMzkuOTc0IDAgMCAxIDE1LjMxLTMuMDRjNS4yMiAwIDEwLjQ0IDEuMDMgMTUuMzEgMy4wNCA0Ljg2IDIuMDEgOS4yNyA0Ljk2IDEyLjk1IDguNjdsNDIuNDUgNDIuNDNjNy40OCA3LjUgMTEuNzMgMTcuNjggMTEuNzMgMjguMjggMCAxMC42MS00LjI1IDIwLjc4LTExLjczIDI4LjI4eiIgZmlsbD0iI0ZGRjhFRiIgcC1pZD0iNjAyMyI+PC9wYXRoPjxwYXRoIGQ9Ik03MTMuMTYgMzcxLjQxbC0zMzkuNCAzMzkuNDFjLTcuNTMgNy41MS0xNy42NiAxMS43Mi0yOC4zMSAxMS43Mi0xMC42IDAtMjAuNzktNC4yMi0yOC4yNi0xMS43MmEzOS44OCAzOS44OCAwIDAgMS0xMS43My0yOC4yOGMwLTEwLjYxIDQuMi0yMC43OCAxMS43My0yOC4yOGwzMzkuNC0zMzkuNDFjNy41My03LjQ1IDE3LjY2LTExLjYyIDI4LjI2LTExLjU5IDEwLjU1IDAuMDIgMjAuNjggNC4yNCAyOC4yMSAxMS43MmEzOS45MDUgMzkuOTA1IDAgMCAxIDExLjY3IDI4LjJjMC4wNiAxMC41Ni00LjE0IDIwLjcyLTExLjU3IDI4LjIzeiIgZmlsbD0iI0ZGQTczOCIgcC1pZD0iNjAyNCI+PC9wYXRoPjwvc3ZnPg=='); background-repeat: no-repeat; diff --git a/project.private.config.json b/project.private.config.json index 7e49431..cf6dec3 100644 --- a/project.private.config.json +++ b/project.private.config.json @@ -5,5 +5,5 @@ "compileHotReLoad": true, "urlCheck": false }, - "libVersion": "3.7.12" + "libVersion": "3.5.8" } \ No newline at end of file diff --git a/static/style/icon.wxss b/static/style/icon.wxss index 5ce7d15..9e5499e 100644 --- a/static/style/icon.wxss +++ b/static/style/icon.wxss @@ -96,4 +96,10 @@ background-image: url('data:image/svg+xml;charset=utf-8;base64,PHN2ZyB0PSIxNzQ1MzcxOTM5MTMzIiBjbGFzcz0iaWNvbiIgdmlld0JveD0iMCAwIDEwMjQgMTAyNCIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHAtaWQ9IjM2OTciIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiI+PHBhdGggZD0iTTk2MCA1MTJhNDQ4IDQ0OCAwIDEgMC00NDggNDQ4IDQ0OCA0NDggMCAwIDAgNDQ4LTQ0OHogbS00OTcuMjggMjEwLjI0YTcyOS42IDcyOS42IDAgMCAxLTIyNC0yMjQgOTYgOTYgMCAxIDEgMTY0LjQ4LTk4Ljg4IDQ5NiA0OTYgMCAwIDAgMTA4LjggMTIyLjU2IDU2NC44IDU2NC44IDAgMCAwIDEwOS4xMi0xMjMuNTIgOTYgOTYgMCAxIDEgMTY0LjQ4IDk4Ljg4IDcyOS42IDcyOS42IDAgMCAxLTIyNCAyMjQgOTYgOTYgMCAwIDEtOTguODggMC45NnoiIGZpbGw9IiNGRTk5NDQiIHAtaWQ9IjM2OTgiPjwvcGF0aD48L3N2Zz4='); background-size: cover; 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; } \ No newline at end of file diff --git a/utils/comm.wxs b/utils/comm.wxs index 2c9bbe1..d28f42f 100644 --- a/utils/comm.wxs +++ b/utils/comm.wxs @@ -36,6 +36,10 @@ var payTypeSign = function (type) { } return typeStr } +var coverTxt = function (price) { + // return '' + price + '' + return '' + price +} var payType = function (type) { // 充值1|支出2|提现3|系统扣款4|订单收入5|付款6) var typeStr = '支出' @@ -236,5 +240,6 @@ module.exports = { payType: payType, payTypeColor: payTypeColor, payTypeSign: payTypeSign, - payTypeFontSize: payTypeFontSize + payTypeFontSize: payTypeFontSize, + coverTxt: coverTxt }; \ No newline at end of file diff --git a/utils/validator.js b/utils/validator.js index 4853a11..c1f5230 100644 --- a/utils/validator.js +++ b/utils/validator.js @@ -1,6 +1,16 @@ // 手机号验证 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 + } }; // 邮箱验证