diff --git a/app.js b/app.js index e4bc428..64ce063 100644 --- a/app.js +++ b/app.js @@ -1,10 +1,40 @@ // app.js import api from './utils/api.js'; +import utils from './utils/util.js'; App({ onLaunch() { }, - globalData: { + billIcon : [ + {label: '度假', icon: '/image/bill/0.png'}, + {label: '电影', icon: '/image/bill/1.png'}, + {label: '聚餐', icon: '/image/bill/2.png'}, + {label: '网购', icon: '/image/bill/3.png'}, + {label: '医疗', icon: '/image/bill/4.png'}, + {label: '游戏', icon: '/image/bill/5.png'}, + {label: '孩子', icon: '/image/bill/6.png'}, + {label: '化妆品', icon: '/image/bill/7.png'}, + {label: '生日', icon: '/image/bill/8.png'}, + {label: '车票', icon: '/image/bill/9.png'}, + {label: '水果', icon: '/image/bill/10.png'}, + {label: '红包', icon: '/image/bill/11.png'}, + {label: '借钱', icon: '/image/bill/11.png'} + ], + accountIcon : [ + {label: '工商银行', icon: '/image/account/0.png'}, + {label: '基金', icon: '/image/account/1.png'}, + {label: '交通银行', icon: '/image/account/2.png'}, + {label: '农信社', icon: '/image/account/3.png'}, + {label: '农业银行', icon: '/image/account/4.png'}, + {label: '建设银行', icon: '/image/account/5.png'}, + {label: '招商银行', icon: '/image/account/6.png'}, + {label: '中国银行', icon: '/image/account/7.png'}, + {label: '现金', icon: '/image/account/8.png'}, + {label: '微信', icon: '/image/account/9.png'}, + {label: '负债', icon: '/image/account/10.png'}, + {label: '支付宝', icon: '/image/account/11.png'} + ] }, $api: api, + $utils: utils }) diff --git a/app.json b/app.json index 0ec14ae..9d7630f 100644 --- a/app.json +++ b/app.json @@ -1,9 +1,20 @@ { "pages": [ - "pages/index/index", - "pages/chart/index", - "pages/account/index", - "pages/myself/index" + "pages/index/index", + "pages/chart/index", + "pages/account/index", + "pages/myself/index", + "pages/budget/index", + "pages/settings/account/index", + "pages/settings/expend/index", + "pages/settings/income/index", + "pages/about/about", + "pages/bill/index", + "pages/bill/edit/index", + "pages/bill/add/index", + "pages/account/detail/index", + "pages/settings/edit/index", + "pages/chart/group/index" ], "usingComponents": { "foot-tab" : "pages/foot-tab/foot-tab", @@ -17,7 +28,15 @@ "t-tabs": "miniprogram_npm/tdesign-miniprogram/tabs/tabs", "t-tab-panel": "miniprogram_npm/tdesign-miniprogram/tabs/tab-panel", "t-empty": "miniprogram_npm/tdesign-miniprogram/empty/empty", - "t-progress": "miniprogram_npm/tdesign-miniprogram/progress/progress" + "t-progress": "miniprogram_npm/tdesign-miniprogram/progress/progress", + "t-dialog": "miniprogram_npm/tdesign-miniprogram/dialog/dialog", + "t-input": "miniprogram_npm/tdesign-miniprogram/input/input", + "t-fab": "miniprogram_npm/tdesign-miniprogram/fab/fab", + "t-action-sheet": "miniprogram_npm/tdesign-miniprogram/action-sheet/action-sheet", + "t-tag": "miniprogram_npm/tdesign-miniprogram/tag/tag", + "t-textarea": "miniprogram_npm/tdesign-miniprogram/textarea/textarea", + "t-radio": "miniprogram_npm/tdesign-miniprogram/radio/radio", + "t-radio-group": "miniprogram_npm/tdesign-miniprogram/radio-group/radio-group" }, "window": { "backgroundTextStyle": "dark", diff --git a/app.wxss b/app.wxss index c5f32be..0957497 100644 --- a/app.wxss +++ b/app.wxss @@ -17,6 +17,7 @@ page { --td-bg-color-fade: red; --td-bg-color-block: #2B2B2B; --td-color-block-check: #777777; + --td-dialog-title-color: none; } /* 记账类型颜色 */ .t-color-income { @@ -32,6 +33,9 @@ page { color: yellow; } /* 记账类型颜色 */ +t-cell { + --td-cell-note-color: orange; +} .t-cell-income { --td-cell-note-color: red; } @@ -45,6 +49,9 @@ page { --td-cell-note-color: yellow; } /* 字体大小 */ +.font_large { + font-size: 50rpx; +} .font_big { font-size: 35rpx; } @@ -56,15 +63,80 @@ page { display: flex; justify-content: flex-start; } -.space_box { +.space_box_no_padding { padding: 0 20rpx; display: flex; justify-content: space-between; } +.space_box { + padding: 20rpx; + display: flex; + justify-content: space-between; +} .padding_box { padding: 0 20rpx; } +.bottom_box { + width: 100%; + position: absolute; + bottom:50rpx; +} /* 占位置 */ .placeholder { height: 168rpx; } +/* 日历 */ +.t-calendar__dates-item--centre { + --td-calendar-item-centre-color:lightsalmon; +} +/* 标签 */ +.t-tabs__item { + --td-tab-item-color:none; +} +/* 对话框输入框 */ +.t-dialog input { + color: whitesmoke; + --td-dialog-input-bg-color: #111111 +} +.t-dialog__body { + --td-dialog-content-color: red; +} +/* 输入框 */ +.t-input__control { + --td-input-default-text-color: orange; +} +.t-input__tips { + --td-input-default-tips-color: red +} +.t-input__wrap--suffix { + --td-input-suffix-text-color: whitesmoke +} +.t-input__label { + --td-input-label-text-color: whitesmoke +} +.t-input__placeholder { + --td-input-placeholder-text-color: #777777 +} +/* 宫格 */ +.t-grid-item__text { + color: whitesmoke !important; +} +/*文本域*/ +.t-textarea__label { + --td-font-size-base: 32rpx; + --td-textarea-label-color:none +} +.t-textarea__wrapper-inner { + --td-textarea-text-color: orange +} +.t-textarea__placeholder { + --td-textarea-placeholder-color: #777777 +} +.t-textarea__indicator { + --td-textarea-indicator-text-color : none +} +/* 下拉框 */ +.t-collapse-panel__content { + --td-collapse-content-text-color: none; + --td-collapse-content-padding: 0; +} diff --git a/image/account/0.png b/image/account/0.png new file mode 100644 index 0000000..6950c93 Binary files /dev/null and b/image/account/0.png differ diff --git a/image/account/1.png b/image/account/1.png new file mode 100644 index 0000000..2eb8348 Binary files /dev/null and b/image/account/1.png differ diff --git a/image/account/10.png b/image/account/10.png new file mode 100644 index 0000000..4168cc9 Binary files /dev/null and b/image/account/10.png differ diff --git a/image/account/11.png b/image/account/11.png new file mode 100644 index 0000000..80a741c Binary files /dev/null and b/image/account/11.png differ diff --git a/image/account/2.png b/image/account/2.png new file mode 100644 index 0000000..ff9a756 Binary files /dev/null and b/image/account/2.png differ diff --git a/image/account/3.png b/image/account/3.png new file mode 100644 index 0000000..4e0a85a Binary files /dev/null and b/image/account/3.png differ diff --git a/image/account/4.png b/image/account/4.png new file mode 100644 index 0000000..2c28d28 Binary files /dev/null and b/image/account/4.png differ diff --git a/image/account/5.png b/image/account/5.png new file mode 100644 index 0000000..76b0e6c Binary files /dev/null and b/image/account/5.png differ diff --git a/image/account/6.png b/image/account/6.png new file mode 100644 index 0000000..d3d5fb9 Binary files /dev/null and b/image/account/6.png differ diff --git a/image/account/7.png b/image/account/7.png new file mode 100644 index 0000000..e4301c5 Binary files /dev/null and b/image/account/7.png differ diff --git a/image/account/8.png b/image/account/8.png new file mode 100644 index 0000000..f5ba7e0 Binary files /dev/null and b/image/account/8.png differ diff --git a/image/account/9.png b/image/account/9.png new file mode 100644 index 0000000..92e5a2d Binary files /dev/null and b/image/account/9.png differ diff --git a/miniprogram_npm/tdesign-miniprogram/cell/cell.wxss b/miniprogram_npm/tdesign-miniprogram/cell/cell.wxss index 3cfac8d..22d95ac 100644 --- a/miniprogram_npm/tdesign-miniprogram/cell/cell.wxss +++ b/miniprogram_npm/tdesign-miniprogram/cell/cell.wxss @@ -30,7 +30,7 @@ display: flex; box-sizing: border-box; width: 100%; - padding: var(--td-cell-vertical-padding, 32rpx) var(--td-cell-horizontal-padding, 32rpx); + padding: var(--td-cell-vertical-padding, 20rpx) var(--td-cell-horizontal-padding, 20rpx); font-size: var(--td-cell-font-size, var(--td-font-size-m, 32rpx)); line-height: var(--td-cell-line-height, 48rpx); /*color: var(--td-cell-text-color, var(--td-font-gray-1, rgba(0, 0, 0, 0.9)));*/ diff --git a/miniprogram_npm/tdesign-miniprogram/input/input.wxss b/miniprogram_npm/tdesign-miniprogram/input/input.wxss index e1f18f2..a6f059a 100644 --- a/miniprogram_npm/tdesign-miniprogram/input/input.wxss +++ b/miniprogram_npm/tdesign-miniprogram/input/input.wxss @@ -41,8 +41,8 @@ color: var(--td-input-prefix-icon-color, var(--td-font-gray-1, rgba(0, 0, 0, 0.9))); } .t-input__label:not(:empty) { - min-width: 96rpx; - max-width: 162rpx; + min-width: 150rpx; + max-width: 150rpx; font-size: var(--td-font-size-m, 32rpx); line-height: 48rpx; color: var(--td-input-label-text-color, var(--td-font-gray-1, rgba(0, 0, 0, 0.9))); diff --git a/miniprogram_npm/tdesign-miniprogram/tabs/tab-panel.wxss b/miniprogram_npm/tdesign-miniprogram/tabs/tab-panel.wxss index 076ba02..cdefac3 100644 --- a/miniprogram_npm/tdesign-miniprogram/tabs/tab-panel.wxss +++ b/miniprogram_npm/tdesign-miniprogram/tabs/tab-panel.wxss @@ -32,7 +32,7 @@ box-sizing: border-box; } .t-tab-panel { - background: var(--td-bg-color,#fff); + background: var(--td-bg-color); height: inherit; width: inherit; } diff --git a/miniprogram_npm/tdesign-miniprogram/tabs/tabs.js b/miniprogram_npm/tdesign-miniprogram/tabs/tabs.js index 42ae7e3..a25eac7 100644 --- a/miniprogram_npm/tdesign-miniprogram/tabs/tabs.js +++ b/miniprogram_npm/tdesign-miniprogram/tabs/tabs.js @@ -160,18 +160,20 @@ let Tabs = class Tabs extends SuperComponent { return offset + targetLeft - (1 / 2) * containerWidth + targetWidth / 2; } getTrackSize() { - // return new Promise((resolve) => { - // if (this.trackWidth) { - // resolve(this.trackWidth); - // return; - // } - // getRect(this, `.${prefix}-tabs__track`).then((res) => { - // if (res) { - // this.trackWidth = res.width; - // resolve(this.trackWidth); - // } - // }); - // }); + return new Promise((resolve) => { + if (this.trackWidth) { + resolve(this.trackWidth); + return; + } + getRect(this, `.${prefix}-tabs__track`).then((res) => { + if (res) { + this.trackWidth = res.width; + resolve(this.trackWidth); + } + }).catch(reason => { + console.log(reason) + }); + }); } setTrack() { return __awaiter(this, void 0, void 0, function* () { diff --git a/pages/about/about.js b/pages/about/about.js new file mode 100644 index 0000000..c498f70 --- /dev/null +++ b/pages/about/about.js @@ -0,0 +1,6 @@ +Page({ + data: {}, + onLoad: function (options) { + + } +}); diff --git a/pages/about/about.json b/pages/about/about.json new file mode 100644 index 0000000..c77dc7a --- /dev/null +++ b/pages/about/about.json @@ -0,0 +1,4 @@ +{ + "usingComponents": { + } +} diff --git a/pages/about/about.wxml b/pages/about/about.wxml new file mode 100644 index 0000000..f0508fc --- /dev/null +++ b/pages/about/about.wxml @@ -0,0 +1,13 @@ + + + Quinn记账 + + + 千里之行,始于足下 + release 1.0 + 感谢TDesign组件框架 + + + + 联系我们 + diff --git a/pages/about/about.wxss b/pages/about/about.wxss new file mode 100644 index 0000000..038f5d5 --- /dev/null +++ b/pages/about/about.wxss @@ -0,0 +1,20 @@ +.main_look { + font-weight: bold; +} +.pay_look { + margin-top: 50rpx; + display: flex; + flex-direction: row; + justify-content: center; + font-size: 50rpx; +} +.detail_look { + margin-top: 100rpx; + padding: 0 30rpx; + display: flex; + flex-direction: column; + justify-content: flex-start; +} +.padding_box { + margin-top: 100rpx; +} diff --git a/pages/account/detail/index.js b/pages/account/detail/index.js new file mode 100644 index 0000000..beee79e --- /dev/null +++ b/pages/account/detail/index.js @@ -0,0 +1,72 @@ +const app = getApp(); +Page({ + data: { + showSetMoney: false, + currentMoney: 0.00, + currentMoneyText: "8754.09", + priceError: false, + visible : false, + dateRangeText : '请选择日期区间', + dateRange : [new Date().getTime()- 24 * 60 * 60 * 1000,new Date().getTime()], + minDate: new Date().getTime() - 365 * 24 * 60 * 60 * 1000, + maxDate: new Date().getTime(), + incomeList : [ + {"title":"电脑","type":"income","dateTime":"01-06","from":"银行卡","money":"+4500.00"} + ], + payList : [ + {"title":"狗粮","type":"expend","dateTime":"01-06","from":"支付宝","money":"-35.00"}, + {"title":"狗粮","type":"expend","dateTime":"01-06","from":"支付宝","money":"-35.00"}, + {"title":"狗粮","type":"expend","dateTime":"01-06","from":"支付宝","money":"-35.00"}, + {"title":"狗粮","type":"expend","dateTime":"01-06","from":"支付宝","money":"-35.00"}, + {"title":"狗粮","type":"expend","dateTime":"01-06","from":"支付宝","money":"-35.00"}, + {"title":"狗粮","type":"expend","dateTime":"01-06","from":"支付宝","money":"-35.00"} + ] + }, + onLoad: function (options) { + }, + handleCalendar() { + this.setData({ visible: true }); + }, + handleConfirm(e) { + const { value } = e.detail; + console.log(value); + let valueText = app.$utils.formatDate(new Date(value[0])) + '至' + + (value[1] ? app.$utils.formatDate(new Date(value[1])) : app.$utils.formatDate(new Date())); + this.setData({ + visible: false, + dateRange: value, + dateRangeText: valueText + }); + }, + + showDialog() { + this.setData({ + showSetMoney: true, + currentMoney: this.data.currentMoneyText + }) + }, + onPriceInput(e) { + this.setData({ + currentMoney: e.detail.value + }) + }, + onConfirm () { + const isNumber = /^\d+(\.\d+)?$/.test(this.data.currentMoney); + if (!isNumber) { + this.setData({ + priceError: true + }) + return; + } + this.setData({ + currentMoneyText: this.data.currentMoney, + priceError: false + }) + this.closeDialog() + }, + closeDialog() { + this.setData({ + showSetMoney: false + }) + } +}); diff --git a/pages/account/detail/index.json b/pages/account/detail/index.json new file mode 100644 index 0000000..a00fa1d --- /dev/null +++ b/pages/account/detail/index.json @@ -0,0 +1,7 @@ +{ + "usingComponents": { + "t-collapse": "/miniprogram_npm/tdesign-miniprogram/collapse/collapse", + "t-collapse-panel": "/miniprogram_npm/tdesign-miniprogram/collapse/collapse-panel", + "t-calendar": "/miniprogram_npm/tdesign-miniprogram/calendar/calendar" + } +} diff --git a/pages/account/detail/index.wxml b/pages/account/detail/index.wxml new file mode 100644 index 0000000..5ad0a5a --- /dev/null +++ b/pages/account/detail/index.wxml @@ -0,0 +1,57 @@ + + + + + 账户余额 + + + + {{ currentMoneyText }} + + + + + 支出{{1203.00}} + 收入{{1203.00}} + + + + + + + + + + + + + + + + + + diff --git a/pages/account/detail/index.wxss b/pages/account/detail/index.wxss new file mode 100644 index 0000000..fc496ad --- /dev/null +++ b/pages/account/detail/index.wxss @@ -0,0 +1,18 @@ +.main_look { + padding: 0 20rpx; +} +.look_content { + display: flex; + flex-direction: column; + justify-content: center; + height: 200rpx; + background-color: #111111; + background-size:100% 100%; + font-weight: bold; +} +.pay_look { + padding: 0 20rpx; + display: flex; + flex-direction: row; + justify-content: center; +} diff --git a/pages/account/index.js b/pages/account/index.js index b85d036..07d8ef4 100644 --- a/pages/account/index.js +++ b/pages/account/index.js @@ -6,17 +6,9 @@ Page({ {"name":"现金","money":"2000.00"}, {"name":"银行卡","money":"30500.03"} ], - visualAccountList : [ - {"name":"支付宝","money":"200.00"}, - {"name":"微信","money":"00.03"} - ], oweAccountList : [ {"name":"信用卡","money":"-200.00"}, - ], - payAccountList : [ - {"name":"基金","money":"31200.00"}, - {"name":"长江证券","money":"200.00"}, - ], + ] }, onLoad: function (options) { diff --git a/pages/account/index.wxml b/pages/account/index.wxml index 68823bd..ea81a60 100644 --- a/pages/account/index.wxml +++ b/pages/account/index.wxml @@ -12,34 +12,28 @@ - - - - - - - - - + + + + + + + + + + + diff --git a/pages/account/index.wxss b/pages/account/index.wxss index 4c73007..785de57 100644 --- a/pages/account/index.wxss +++ b/pages/account/index.wxss @@ -21,6 +21,3 @@ .t-divider__content { --td-divider-content-font-size:25rpx; } -t-cell { - --td-cell-note-color: orange; -} diff --git a/pages/bill/add/index.js b/pages/bill/add/index.js new file mode 100644 index 0000000..c498f70 --- /dev/null +++ b/pages/bill/add/index.js @@ -0,0 +1,6 @@ +Page({ + data: {}, + onLoad: function (options) { + + } +}); diff --git a/pages/bill/add/index.json b/pages/bill/add/index.json new file mode 100644 index 0000000..dd92d45 --- /dev/null +++ b/pages/bill/add/index.json @@ -0,0 +1,6 @@ +{ + "usingComponents": { + "expenses": "../types/expenses", + "transfer": "../types/transfer" + } +} diff --git a/pages/bill/add/index.wxml b/pages/bill/add/index.wxml new file mode 100644 index 0000000..0fbcbf4 --- /dev/null +++ b/pages/bill/add/index.wxml @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/pages/bill/add/index.wxss b/pages/bill/add/index.wxss new file mode 100644 index 0000000..e69de29 diff --git a/pages/bill/edit/index.js b/pages/bill/edit/index.js new file mode 100644 index 0000000..c498f70 --- /dev/null +++ b/pages/bill/edit/index.js @@ -0,0 +1,6 @@ +Page({ + data: {}, + onLoad: function (options) { + + } +}); diff --git a/pages/bill/edit/index.json b/pages/bill/edit/index.json new file mode 100644 index 0000000..dd92d45 --- /dev/null +++ b/pages/bill/edit/index.json @@ -0,0 +1,6 @@ +{ + "usingComponents": { + "expenses": "../types/expenses", + "transfer": "../types/transfer" + } +} diff --git a/pages/bill/edit/index.wxml b/pages/bill/edit/index.wxml new file mode 100644 index 0000000..5634392 --- /dev/null +++ b/pages/bill/edit/index.wxml @@ -0,0 +1,4 @@ + + + + diff --git a/pages/bill/edit/index.wxss b/pages/bill/edit/index.wxss new file mode 100644 index 0000000..e69de29 diff --git a/pages/bill/index.js b/pages/bill/index.js new file mode 100644 index 0000000..48be91f --- /dev/null +++ b/pages/bill/index.js @@ -0,0 +1,29 @@ +Page({ + data: { + showDeleteConfirm: false, + title : "账单名称", + money : "2000" + }, + onLoad: function (options) { + + }, + editBill() { + wx.navigateTo({ + url: './edit/index' + }) + }, + deleteBill() { + this.setData({ + showDeleteConfirm: true + }) + }, + onConfirm (e) { + wx.navigateBack(); + this.closeDialog() + }, + closeDialog() { + this.setData({ + showDeleteConfirm: false + }) + } +}); diff --git a/pages/bill/index.json b/pages/bill/index.json new file mode 100644 index 0000000..c77dc7a --- /dev/null +++ b/pages/bill/index.json @@ -0,0 +1,4 @@ +{ + "usingComponents": { + } +} diff --git a/pages/bill/index.wxml b/pages/bill/index.wxml new file mode 100644 index 0000000..5162195 --- /dev/null +++ b/pages/bill/index.wxml @@ -0,0 +1,37 @@ + + + + {{title}} + + {{money > 0 ? "+" + money : money}} + + + + + + + + + + + + + + + + + + + 删除 + 编辑 + + + + diff --git a/pages/bill/index.wxss b/pages/bill/index.wxss new file mode 100644 index 0000000..3176de1 --- /dev/null +++ b/pages/bill/index.wxss @@ -0,0 +1,17 @@ +.view_bg { + background: #2B2B2B; +} +image { + width: 68rpx; + height: 68rpx; +} +.bottom_button { + position: absolute; + width: 96%; + bottom:66rpx; + left: 50%; + transform: translateX(-50%); +} +t-button { + width: 50%; +} diff --git a/pages/bill/types/expenses.js b/pages/bill/types/expenses.js new file mode 100644 index 0000000..1099aea --- /dev/null +++ b/pages/bill/types/expenses.js @@ -0,0 +1,171 @@ +const app = getApp(); +import ActionSheet, { ActionSheetTheme } from '../../../miniprogram_npm/tdesign-miniprogram/action-sheet/index'; +let handler = null; +const firstGrid = [ + { + label: '红包', + icon: 'star', + }, + { + label: '数码', + icon: 'star', + }, + { + label: '虚拟', + icon: 'star', + }, + { + label: '游戏', + icon: 'star', + }, + { + label: '包包', + icon: 'star', + }, + { + label: '手机', + icon: 'refresh', + }, + { + label: '话费', + icon: 'download', + }, + { + label: '技术', + icon: 'queue', + }, +]; +const secondGrid = [ + { + label: '银行卡', + icon: 'star', + }, + { + label: '支付宝', + icon: 'star', + }, + { + label: '微信', + icon: 'star', + }, + { + label: '信用卡', + icon: 'star', + } +]; +Component({ + properties: { + /* income & out */ + changeType: { + type: String, + value: 'income' + }, + }, + data: { + price: '10.2', + priceError: false, + grid: '', + outText: '', + inText: '', + mode: '', + dateVisible: false, + date: new Date().getTime(), // 支持时间戳传入 + dateText: '', + // 指定选择区间起始值 + start: '2000-01-01 00:00:00', + end: '2030-09-09 12:12:12', + }, + methods: { + onPriceInput(e) { + const { priceError } = this.data; + const isNumber = /^\d+(\.\d+)?$/.test(e.detail.value); + if (priceError === isNumber) { + this.setData({ + priceError: !isNumber, + }); + } + }, + handleMultiAction(e) { + const { grid } = e.currentTarget.dataset; + this.setData({ + grid + }) + if (grid == 'type') { + handler = ActionSheet.show({ + theme: ActionSheetTheme.Grid, + selector: '#t-action-sheet', + context: this, + items: firstGrid.concat( + new Array(8).fill({ + label: '标题文字', + icon: 'star', + }), + ), + }); + }else { + handler = ActionSheet.show({ + theme: ActionSheetTheme.Grid, + selector: '#t-action-sheet', + context: this, + items: secondGrid.concat( + new Array(8).fill({ + label: '标题文字', + icon: 'star', + }), + ), + }); + } + }, + onCancel(){ + handler.close(); + }, + handleSelected(e) { + const {grid} = this.data + this.setData({ + [`${grid}Text`]: e.detail.selected.label, + }); + }, + showPicker(e) { + const { mode } = e.currentTarget.dataset; + this.setData({ + mode, + [`${mode}Visible`]: true, + }); + }, + hidePicker() { + const { mode } = this.data; + this.setData({ + [`${mode}Visible`]: false, + }); + }, + onConfirm(e) { + const { value } = e.detail; + const { mode } = this.data; + this.setData({ + [mode]: value, + [`${mode}Text`]: value, + }); + this.hidePicker(); + }, + bYesterday () { + let preDate = new Date(new Date().getTime() - 24 * 60 * 60 * 1000 * 2); + this.setData({ + dateText: app.$utils.formatDate(preDate) + }) + }, + yesterday() { + let preDate = new Date(new Date().getTime() - 24 * 60 * 60 * 1000); + this.setData({ + dateText: app.$utils.formatDate(preDate) + }) + }, + today () { + this.setData({ + dateText: app.$utils.formatDate(new Date()) + }) + }, + saveBill () { + wx.navigateBack(); + } + } +}); diff --git a/pages/bill/types/expenses.json b/pages/bill/types/expenses.json new file mode 100644 index 0000000..ac34bd7 --- /dev/null +++ b/pages/bill/types/expenses.json @@ -0,0 +1,5 @@ +{ + "component": true, + "usingComponents": { + } +} diff --git a/pages/bill/types/expenses.wxml b/pages/bill/types/expenses.wxml new file mode 100644 index 0000000..230ca69 --- /dev/null +++ b/pages/bill/types/expenses.wxml @@ -0,0 +1,44 @@ + + + {{typeText ? typeText : '请选择分类'}} + + + {{accountText ? accountText : '请选择账户'}} + + + {{dateText ? dateText : '请选择日期'}} + + + 前天 + + 昨天 + + 今天 + + + + 保存 + + + + diff --git a/pages/bill/types/expenses.wxss b/pages/bill/types/expenses.wxss new file mode 100644 index 0000000..e6664fb --- /dev/null +++ b/pages/bill/types/expenses.wxss @@ -0,0 +1,15 @@ +.view_button { + margin-top: 20rpx; +} +.placeholder_line { + width: 20rpx; +} +.right_box { + margin: 20rpx 0; + width: 100%; + display: flex; + justify-content: flex-end; +} +.t-color-input { + color: orange; +} diff --git a/pages/bill/types/transfer.js b/pages/bill/types/transfer.js new file mode 100644 index 0000000..0af4ddc --- /dev/null +++ b/pages/bill/types/transfer.js @@ -0,0 +1,154 @@ +const app = getApp(); +import ActionSheet, { ActionSheetTheme } from '../../../miniprogram_npm/tdesign-miniprogram/action-sheet/index'; +let handler = null; +const firstGrid = [ + { + label: '银行卡', + icon: 'star', + }, + { + label: '支付宝', + icon: 'star', + }, + { + label: '微信', + icon: 'star', + }, + { + label: '信用卡', + icon: 'star', + } +]; +const secondGrid = [ + { + label: '银行卡', + icon: 'star', + }, + { + label: '支付宝', + icon: 'star', + }, + { + label: '微信', + icon: 'star', + }, + { + label: '信用卡', + icon: 'star', + } +]; +Component({ + properties: { + /* normal & repayment */ + changeType: { + type: String, + value: 'normal' + }, + }, + data: { + priceError: false, + grid: '', + typeText: '', + accountText: '', + mode: '', + dateVisible: false, + date: new Date().getTime(), // 支持时间戳传入 + dateText: '', + // 指定选择区间起始值 + start: '2000-01-01 00:00:00', + end: '2030-09-09 12:12:12' + }, + methods: { + onPriceInput(e) { + const { priceError } = this.data; + const isNumber = /^\d+(\.\d+)?$/.test(e.detail.value); + if (priceError === isNumber) { + this.setData({ + priceError: !isNumber, + }); + } + }, + handleMultiAction(e) { + const { grid } = e.currentTarget.dataset; + this.setData({ + grid + }) + if (grid == 'out') { + handler = ActionSheet.show({ + theme: ActionSheetTheme.Grid, + selector: '#t-action-sheet', + context: this, + items: firstGrid.concat( + new Array(8).fill({ + label: '标题文字', + icon: 'star', + }), + ), + }); + }else { + handler = ActionSheet.show({ + theme: ActionSheetTheme.Grid, + selector: '#t-action-sheet', + context: this, + items: secondGrid.concat( + new Array(8).fill({ + label: '标题文字', + icon: 'star', + }), + ), + }); + } + }, + onCancel(){ + handler.close(); + }, + handleSelected(e) { + const {grid} = this.data + this.setData({ + [`${grid}Text`]: e.detail.selected.label, + }); + }, + showPicker(e) { + const { mode } = e.currentTarget.dataset; + this.setData({ + mode, + [`${mode}Visible`]: true, + }); + }, + hidePicker() { + const { mode } = this.data; + this.setData({ + [`${mode}Visible`]: false, + }); + }, + onConfirm(e) { + const { value } = e.detail; + const { mode } = this.data; + this.setData({ + [mode]: value, + [`${mode}Text`]: value, + }); + this.hidePicker(); + }, + bYesterday () { + let preDate = new Date(new Date().getTime() - 24 * 60 * 60 * 1000 * 2); + this.setData({ + dateText: app.$utils.formatDate(preDate) + }) + }, + yesterday() { + let preDate = new Date(new Date().getTime() - 24 * 60 * 60 * 1000); + this.setData({ + dateText: app.$utils.formatDate(preDate) + }) + }, + today () { + this.setData({ + dateText: app.$utils.formatDate(new Date()) + }) + }, + saveBill () { + wx.navigateBack(); + } + } +}); diff --git a/pages/bill/types/transfer.json b/pages/bill/types/transfer.json new file mode 100644 index 0000000..ac34bd7 --- /dev/null +++ b/pages/bill/types/transfer.json @@ -0,0 +1,5 @@ +{ + "component": true, + "usingComponents": { + } +} diff --git a/pages/bill/types/transfer.wxml b/pages/bill/types/transfer.wxml new file mode 100644 index 0000000..206b963 --- /dev/null +++ b/pages/bill/types/transfer.wxml @@ -0,0 +1,44 @@ + + + {{outText ? outText : '请选择账户'}} + + + {{inText ? inText : '请选择账户'}} + + + {{dateText ? dateText : '请选择日期'}} + + + 前天 + + 昨天 + + 今天 + + + + 保存 + + + + diff --git a/pages/bill/types/transfer.wxss b/pages/bill/types/transfer.wxss new file mode 100644 index 0000000..e6664fb --- /dev/null +++ b/pages/bill/types/transfer.wxss @@ -0,0 +1,15 @@ +.view_button { + margin-top: 20rpx; +} +.placeholder_line { + width: 20rpx; +} +.right_box { + margin: 20rpx 0; + width: 100%; + display: flex; + justify-content: flex-end; +} +.t-color-input { + color: orange; +} diff --git a/pages/budget/index.js b/pages/budget/index.js new file mode 100644 index 0000000..6f07827 --- /dev/null +++ b/pages/budget/index.js @@ -0,0 +1,73 @@ +Page({ + data: { + showSetBudget : false, + mainMoney: "200.00", + changeType: "main", + changeItem: 0, + currentMoney: "0.00", + priceError: false, + payTypeList : [ + {"id":1,"name":"娱乐","money":"2000.00"}, + {"id":2,"name":"干饭","money":""}, + {"id":3,"name":"游戏","money":"2000.00"}, + {"id":4,"name":"其它","money":"400"} + ], + }, + onLoad: function (options) { + + }, + changeBudget(e) { + let {type,id} = e.currentTarget.dataset + let tCurrentMoney = 0.00; + if (type == 'count'){ + tCurrentMoney = this.data.mainMoney + }else { + tCurrentMoney = this.data.payTypeList[id - 1].money; + } + this.setData({ + showSetBudget: true, + changeType: type, + changeItem: id, + currentMoney: tCurrentMoney + }) + }, + onPriceInput(e) { + this.setData({ + currentMoney: e.detail.value + }) + }, + onConfirm (e) { + const { priceError } = this.data; + const isNumber = /^\d+(\.\d+)?$/.test(this.data.currentMoney); + if (priceError === isNumber) { + this.setData({ + priceError: !isNumber, + }); + } + if (this.data.priceError) { + this.setData({ + currentMoney: "0.00", + priceError: false + }) + return; + } + if (this.data.changeType == 'count') { + this.setData({ + mainMoney: this.data.currentMoney + }) + }else { + let cPayTypeList = this.data.payTypeList + let cPayType = cPayTypeList[this.data.changeItem - 1] + cPayType.money = this.data.currentMoney; + this.setData({ + payTypeList : cPayTypeList + }) + } + this.closeDialog() + }, + closeDialog() { + this.setData({ + showSetBudget: false + }) + } +}); diff --git a/pages/budget/index.json b/pages/budget/index.json new file mode 100644 index 0000000..c77dc7a --- /dev/null +++ b/pages/budget/index.json @@ -0,0 +1,4 @@ +{ + "usingComponents": { + } +} diff --git a/pages/budget/index.wxml b/pages/budget/index.wxml new file mode 100644 index 0000000..5fcfd7c --- /dev/null +++ b/pages/budget/index.wxml @@ -0,0 +1,36 @@ + + + + 总预算 + + + {{ mainMoney }} + + + 当月使用: {{ 900.00 }} + 预算剩余: {{ 1200.00 }} + + + + + + 未设置预算 + + + + diff --git a/pages/budget/index.wxss b/pages/budget/index.wxss new file mode 100644 index 0000000..1d3a0e9 --- /dev/null +++ b/pages/budget/index.wxss @@ -0,0 +1,28 @@ +.main_look { + display: flex; + flex-direction: column; + justify-content: flex-end; + height: 200rpx; + background-color: #111111; + background-size:100% 100%; +} +.look_content { + font-weight: bold; +} +.pay_look { + padding: 0 20rpx; + display: flex; + flex-direction: row; + justify-content: center; +} +.balance_look { + padding: 20rpx; + display: flex; + justify-content: space-evenly; +} +.t-progress__info { + --td-progress-info-dark-color: whitesmoke +} +.error_msg { + color: #777777; +} diff --git a/pages/chart/group/index.js b/pages/chart/group/index.js new file mode 100644 index 0000000..c498f70 --- /dev/null +++ b/pages/chart/group/index.js @@ -0,0 +1,6 @@ +Page({ + data: {}, + onLoad: function (options) { + + } +}); diff --git a/pages/chart/group/index.json b/pages/chart/group/index.json new file mode 100644 index 0000000..c77dc7a --- /dev/null +++ b/pages/chart/group/index.json @@ -0,0 +1,4 @@ +{ + "usingComponents": { + } +} diff --git a/pages/chart/group/index.wxml b/pages/chart/group/index.wxml new file mode 100644 index 0000000..e69de29 diff --git a/pages/chart/group/index.wxss b/pages/chart/group/index.wxss new file mode 100644 index 0000000..e69de29 diff --git a/pages/chart/index.js b/pages/chart/index.js index f2fd507..e8ac99d 100644 --- a/pages/chart/index.js +++ b/pages/chart/index.js @@ -19,7 +19,8 @@ function initPieChart(canvas, width, height, dpr) { radius: ['0%', '70%'], data: [{ value: 55, - name: '数码产品' + name: '数码产品', + id: 1 }, { value: 20, name: '零食' @@ -35,8 +36,10 @@ function initPieChart(canvas, width, height, dpr) { }] }] }; - chart.setOption(option); + chart.on('click', 'series.pie', function(param) { + console.log(param.data) + }); return chart; } diff --git a/pages/chart/index.wxml b/pages/chart/index.wxml index 44cd8c7..524cc52 100644 --- a/pages/chart/index.wxml +++ b/pages/chart/index.wxml @@ -11,19 +11,21 @@ - - - - - - + + + + + + + + @@ -31,15 +33,14 @@ - + - + - + - + - @@ -49,20 +50,22 @@ - - - + + + + - - + + + diff --git a/pages/chart/index.wxss b/pages/chart/index.wxss index c8080ac..e50e881 100644 --- a/pages/chart/index.wxss +++ b/pages/chart/index.wxss @@ -11,15 +11,14 @@ ec-canvas { width: 100%; height: 100%; } -.test .t-progress--plump { +.tabs_crevice { + height: 30rpx; +} +.big_progress .t-progress--plump { height: 100rpx !important; - border-bottom: 2rpx solid orange; border-radius: 0 !important; /*--td-font-size-s: 28rpx;*/ } -.test .t-progress__inner { +.big_progress .t-progress__inner { --td-radius-round: 0; } -.test .t-progress__bar { - --td-progress-track-bg-color: --td-bg-color; -} diff --git a/pages/index/index.js b/pages/index/index.js index 9511e5c..c1972a7 100644 --- a/pages/index/index.js +++ b/pages/index/index.js @@ -22,9 +22,19 @@ Page({ } let isRun = wx.getStorageSync("isRun"); if (!isRun) { - this.startInter(); + // this.startInter(); } }, + modifyBudget (){ + wx.navigateTo({ + url : '/pages/budget/index' + }) + }, + addBill() { + wx.navigateTo({ + url : '/pages/bill/add/index' + }) + }, /** * 启动定时器 */ diff --git a/pages/index/index.wxml b/pages/index/index.wxml index ba41642..593e72f 100644 --- a/pages/index/index.wxml +++ b/pages/index/index.wxml @@ -12,7 +12,7 @@ 当月预算消费情况 - 调整 + 调整 @@ -22,22 +22,25 @@ 已消费:777.80 - 记一笔 + 记一笔 - - - - - - - + + + + + + + + + diff --git a/pages/myself/index.wxml b/pages/myself/index.wxml index 2682ddc..e58f505 100644 --- a/pages/myself/index.wxml +++ b/pages/myself/index.wxml @@ -1,26 +1,25 @@ - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/pages/myself/index.wxss b/pages/myself/index.wxss index 3488993..2b5059c 100644 --- a/pages/myself/index.wxss +++ b/pages/myself/index.wxss @@ -4,3 +4,6 @@ border-radius: 50%; overflow: hidden; } +.my_look { + margin-top: 100rpx; +} diff --git a/pages/settings/account/index.js b/pages/settings/account/index.js new file mode 100644 index 0000000..11cc7fd --- /dev/null +++ b/pages/settings/account/index.js @@ -0,0 +1,19 @@ +Page({ + data: { + cashAccountList : [ + {"name":"现金","money":"2000.00"}, + {"name":"银行卡","money":"30500.03"} + ], + oweAccountList : [ + {"name":"信用卡","money":"-200.00"}, + ], + }, + onLoad: function (options) { + + }, + handleClick() { + wx.navigateTo({ + url : "../edit/index?isAccount=1&isIncome=0&isAdd=1" + }) + } +}); diff --git a/pages/settings/account/index.json b/pages/settings/account/index.json new file mode 100644 index 0000000..c77dc7a --- /dev/null +++ b/pages/settings/account/index.json @@ -0,0 +1,4 @@ +{ + "usingComponents": { + } +} diff --git a/pages/settings/account/index.wxml b/pages/settings/account/index.wxml new file mode 100644 index 0000000..1872dc4 --- /dev/null +++ b/pages/settings/account/index.wxml @@ -0,0 +1,23 @@ + + + + + + + + + + + + + diff --git a/pages/settings/account/index.wxss b/pages/settings/account/index.wxss new file mode 100644 index 0000000..e69de29 diff --git a/pages/settings/edit/index.js b/pages/settings/edit/index.js new file mode 100644 index 0000000..52024fb --- /dev/null +++ b/pages/settings/edit/index.js @@ -0,0 +1,60 @@ +import ActionSheet, { ActionSheetTheme } from '../../../miniprogram_npm/tdesign-miniprogram/action-sheet/index'; +let handler = null; +const app = getApp(); +Page({ + data: { + isAccount: 0, + isIncome: 0, + isAdd: 0, + showDeleteConfirm: false, + icon : null + }, + onLoad: function (options) { + this.setData({ + isAccount : options.isAccount, + isIncome : options.isIncome, + isAdd : options.isAdd + }) + }, + handleMultiAction(e) { + if (this.data.isAccount == 1) { + handler = ActionSheet.show({ + theme: ActionSheetTheme.Grid, + selector: '#t-action-sheet', + context: this, + items: app.globalData.accountIcon + }); + }else { + handler = ActionSheet.show({ + theme: ActionSheetTheme.Grid, + selector: '#t-action-sheet', + context: this, + items: app.globalData.billIcon + }); + } + }, + onCancel(){ + handler.close(); + }, + handleSelected(e) { + let {icon} = e.detail.selected + this.setData({icon}) + }, + saveSetting () { + wx.navigateBack(); + }, + deleteSetting() { + this.setData({ + showDeleteConfirm: true + }) + }, + onConfirm (e) { + wx.navigateBack(); + this.closeDialog() + }, + closeDialog() { + this.setData({ + showDeleteConfirm: false + }) + } +}); diff --git a/pages/settings/edit/index.json b/pages/settings/edit/index.json new file mode 100644 index 0000000..c77dc7a --- /dev/null +++ b/pages/settings/edit/index.json @@ -0,0 +1,4 @@ +{ + "usingComponents": { + } +} diff --git a/pages/settings/edit/index.wxml b/pages/settings/edit/index.wxml new file mode 100644 index 0000000..7969425 --- /dev/null +++ b/pages/settings/edit/index.wxml @@ -0,0 +1,33 @@ + + + + + + + + + + {{'请选择图标'}} + + + + 删除 + 保存 + + + + + diff --git a/pages/settings/edit/index.wxss b/pages/settings/edit/index.wxss new file mode 100644 index 0000000..b03206f --- /dev/null +++ b/pages/settings/edit/index.wxss @@ -0,0 +1,16 @@ +.bottom_box { + width: 100%; + position: absolute; + bottom:50rpx; +} +.space_box { + padding: 20rpx; + display: flex; + justify-content: space-between; +} +t-button { + width: 100%; +} +.t-color-input { + color: orange; +} diff --git a/pages/settings/expend/index.js b/pages/settings/expend/index.js new file mode 100644 index 0000000..a51f099 --- /dev/null +++ b/pages/settings/expend/index.js @@ -0,0 +1,17 @@ +Page({ + data: { + payList: [ + {"name":"数码产品","money":"5000.00"}, + {"name":"虚拟产品","money":"2000.00"}, + {"name":"红包","money":"0.23"} + ] + }, + onLoad: function (options) { + + }, + handleClick() { + wx.navigateTo({ + url : "../edit/index?isAccount=0&isIncome=0&isAdd=1" + }) + } +}); diff --git a/pages/settings/expend/index.json b/pages/settings/expend/index.json new file mode 100644 index 0000000..c77dc7a --- /dev/null +++ b/pages/settings/expend/index.json @@ -0,0 +1,4 @@ +{ + "usingComponents": { + } +} diff --git a/pages/settings/expend/index.wxml b/pages/settings/expend/index.wxml new file mode 100644 index 0000000..8c252af --- /dev/null +++ b/pages/settings/expend/index.wxml @@ -0,0 +1,20 @@ + + + + 年度总支出 + + + {{ 7000.23 }} + + + + + + + diff --git a/pages/settings/expend/index.wxss b/pages/settings/expend/index.wxss new file mode 100644 index 0000000..bec9606 --- /dev/null +++ b/pages/settings/expend/index.wxss @@ -0,0 +1,19 @@ +.main_look { + padding: 0 30rpx; + margin-bottom: 20rpx; +} +.look_content { + display: flex; + flex-direction: column; + justify-content: center; + height: 200rpx; + background-color: #111111; + background-size:100% 100%; + font-weight: bold; +} +.pay_look { + padding: 0 20rpx; + display: flex; + flex-direction: row; + justify-content: center; +} diff --git a/pages/settings/income/index.js b/pages/settings/income/index.js new file mode 100644 index 0000000..f60dd8c --- /dev/null +++ b/pages/settings/income/index.js @@ -0,0 +1,16 @@ +Page({ + data: { + incomeList: [ + {"name":"薪资","money":"89310.00"}, + {"name":"红包","money":"0.23"} + ] + }, + onLoad: function (options) { + + }, + handleClick() { + wx.navigateTo({ + url : "../edit/index?isAccount=0&isIncome=1&isAdd=1" + }) + } +}); diff --git a/pages/settings/income/index.json b/pages/settings/income/index.json new file mode 100644 index 0000000..c77dc7a --- /dev/null +++ b/pages/settings/income/index.json @@ -0,0 +1,4 @@ +{ + "usingComponents": { + } +} diff --git a/pages/settings/income/index.wxml b/pages/settings/income/index.wxml new file mode 100644 index 0000000..9d1010b --- /dev/null +++ b/pages/settings/income/index.wxml @@ -0,0 +1,20 @@ + + + + 年度总收入 + + + {{ 89310.23 }} + + + + + + + diff --git a/pages/settings/income/index.wxss b/pages/settings/income/index.wxss new file mode 100644 index 0000000..bec9606 --- /dev/null +++ b/pages/settings/income/index.wxss @@ -0,0 +1,19 @@ +.main_look { + padding: 0 30rpx; + margin-bottom: 20rpx; +} +.look_content { + display: flex; + flex-direction: column; + justify-content: center; + height: 200rpx; + background-color: #111111; + background-size:100% 100%; + font-weight: bold; +} +.pay_look { + padding: 0 20rpx; + display: flex; + flex-direction: row; + justify-content: center; +} diff --git a/project.config.json b/project.config.json index c751401..4d675be 100644 --- a/project.config.json +++ b/project.config.json @@ -39,7 +39,7 @@ "showES6CompileOption": false }, "compileType": "miniprogram", - "libVersion": "2.28.1", + "libVersion": "2.29.1", "appid": "wxb1f499f0a173865b", "projectname": "quinn-accounts", "editorSetting": { diff --git a/utils/util.js b/utils/util.js index 764bc2c..f7427ad 100644 --- a/utils/util.js +++ b/utils/util.js @@ -6,7 +6,14 @@ const formatTime = date => { const minute = date.getMinutes() const second = date.getSeconds() - return `${[year, month, day].map(formatNumber).join('/')} ${[hour, minute, second].map(formatNumber).join(':')}` + return `${[year, month, day].map(formatNumber).join('-')} ${[hour, minute, second].map(formatNumber).join(':')}` +} + +const formatDate = date => { + const year = date.getFullYear() + const month = date.getMonth() + 1 + const day = date.getDate() + return `${[year, month, day].map(formatNumber).join('-')}` } const formatNumber = n => { @@ -15,5 +22,6 @@ const formatNumber = n => { } module.exports = { - formatTime + formatTime, + formatDate }