diff --git a/miniprogram/api/login.ts b/miniprogram/api/login.ts index ffb5cd0..2148fcc 100644 --- a/miniprogram/api/login.ts +++ b/miniprogram/api/login.ts @@ -11,7 +11,10 @@ export const login = (data: LoginForm) => data, }); -export const getInfo = () => +export const getInfo = (token?: string) => httpClient.request({ url: "/getInfo", + header: { + Authorization: token ? `Bearer ${token}` : undefined, + }, }); diff --git a/miniprogram/app.json b/miniprogram/app.json index 504a097..60d1943 100644 --- a/miniprogram/app.json +++ b/miniprogram/app.json @@ -1,7 +1,6 @@ { "pages": [ "pages/index/index", - "pages/logs/logs", "pages/add-finance/add-finance", "pages/login/login", "pages/stock/stock", @@ -45,5 +44,6 @@ "t-tab-panel": "tdesign-miniprogram/tab-panel/tab-panel", "t-cell-group": "tdesign-miniprogram/cell-group/cell-group" }, + "lazyCodeLoading": "requiredComponents", "sitemapLocation": "sitemap.json" } \ No newline at end of file diff --git a/miniprogram/app.ts b/miniprogram/app.ts index 7dd2bd4..a6b76b8 100644 --- a/miniprogram/app.ts +++ b/miniprogram/app.ts @@ -1,17 +1,26 @@ -import { getToken } from "./utils/settings"; +import { getInfo } from "./api/login"; +import { getToken, getUserInfo } from "./utils/settings"; // app.ts App({ globalData: { authToken: undefined, - permissions:[] + permissions: undefined, + user: undefined, + }, + + loadUserInfo(token: string) { + getInfo(token).then((resp: any) => { + const { user, permissions } = resp; + this.globalData.user = user; + this.globalData.permissions = permissions; + console.log(this.globalData); + }); }, onLaunch() { - // 展示本地存储能力 - const logs = wx.getStorageSync("logs") || []; - logs.unshift(Date.now()); - wx.setStorageSync("logs", logs); - this.globalData.authToken = getToken(); + const token = getToken(); + this.globalData.authToken = token; + this.loadUserInfo(token); // 登录 wx.login({ success: (res) => { diff --git a/miniprogram/assets/login_bg.jpg b/miniprogram/assets/login_bg.jpg new file mode 100644 index 0000000..847285a Binary files /dev/null and b/miniprogram/assets/login_bg.jpg differ diff --git a/miniprogram/components/statistics-card/index.wxml b/miniprogram/components/statistics-card/index.wxml index bbdb252..50a291b 100644 --- a/miniprogram/components/statistics-card/index.wxml +++ b/miniprogram/components/statistics-card/index.wxml @@ -1,7 +1,9 @@ + - {{value.value}} + {{number.formatAmount(value.value)}}万元 + {{value.value}} {{value.label}} \ No newline at end of file diff --git a/miniprogram/pages/add-finance/add-finance.ts b/miniprogram/pages/add-finance/add-finance.ts index 61cea22..bd28520 100644 --- a/miniprogram/pages/add-finance/add-finance.ts +++ b/miniprogram/pages/add-finance/add-finance.ts @@ -1,6 +1,7 @@ import Message from "tdesign-miniprogram/message/index"; import { getDict } from "../../api/dict"; import { addFinance, getFinanceInfo, updateFinance } from "../../api/finance"; +import { getInfo } from "../../api/login"; // pages/add-affairs/add-affairs.ts const dayjs = require("dayjs"); @@ -9,6 +10,7 @@ Page({ * 页面的初始数据 */ data: { + permissions: [], defaultTime: dayjs(dayjs().format("YYYY-MM-DD")).valueOf(), types: [], form: { @@ -56,6 +58,23 @@ Page({ [`form.date`]: e.detail.value, }); }, + loadUserInfo() { + const permissions = getApp().globalData.permissions; + + if (permissions) { + this.setData({ + permissions, + }); + } else { + const token = getApp().globalData.authToken; + getInfo(token).then((resp: any) => { + this.setData({ + permissions: resp.permissions, + }); + getApp().globalData.permissions = resp.permissions; + }); + } + }, getTypeLabel(dictValue: string) { // @ts-ignore return this.data.types.find((item: any) => item.value === dictValue)?.label; @@ -117,6 +136,7 @@ Page({ } } }, + handleSubmitFinance() { const { form } = this.data; const result = this.validate(); @@ -208,6 +228,7 @@ Page({ this.getFinanceDetail(option.financeId); } this.getTypeOptions(); + this.loadUserInfo(); }, /** diff --git a/miniprogram/pages/add-finance/add-finance.wxml b/miniprogram/pages/add-finance/add-finance.wxml index 3f4d0e2..e855435 100644 --- a/miniprogram/pages/add-finance/add-finance.wxml +++ b/miniprogram/pages/add-finance/add-finance.wxml @@ -2,6 +2,7 @@ + @@ -10,14 +11,13 @@ - + 确认提交 - diff --git a/miniprogram/pages/add-stock/add-stock.json b/miniprogram/pages/add-stock/add-stock.json index 4f9b502..683496d 100644 --- a/miniprogram/pages/add-stock/add-stock.json +++ b/miniprogram/pages/add-stock/add-stock.json @@ -1,11 +1,8 @@ { "usingComponents": { - "t-popup": "tdesign-miniprogram/popup/popup", "t-input": "tdesign-miniprogram/input/input", "t-upload": "tdesign-miniprogram/upload/upload", "t-picker": "tdesign-miniprogram/picker/picker", - "t-cascader": "tdesign-miniprogram/cascader/cascader", - "t-tree-select": "tdesign-miniprogram/tree-select/tree-select", "t-picker-item": "tdesign-miniprogram/picker-item/picker-item", "t-date-time-picker": "tdesign-miniprogram/date-time-picker/date-time-picker" } diff --git a/miniprogram/pages/add-stock/add-stock.ts b/miniprogram/pages/add-stock/add-stock.ts index 5e28c3d..8083d97 100644 --- a/miniprogram/pages/add-stock/add-stock.ts +++ b/miniprogram/pages/add-stock/add-stock.ts @@ -70,6 +70,8 @@ Page({ [`form.${field}`]: e.detail.value, }); if (field === "total") { + console.log(e.detail); + if ( parseInt(e.detail.value) > this.data.stockLimit && this.data.form.type == 2 diff --git a/miniprogram/pages/add-stock/add-stock.wxml b/miniprogram/pages/add-stock/add-stock.wxml index 28ba19f..c0571b5 100644 --- a/miniprogram/pages/add-stock/add-stock.wxml +++ b/miniprogram/pages/add-stock/add-stock.wxml @@ -24,7 +24,7 @@ - + 确认提交 diff --git a/miniprogram/pages/index/index.json b/miniprogram/pages/index/index.json index 6a2698a..56bea81 100644 --- a/miniprogram/pages/index/index.json +++ b/miniprogram/pages/index/index.json @@ -1,9 +1,9 @@ { "usingComponents": { "t-fab": "tdesign-miniprogram/fab/fab", - "t-collapse": "tdesign-miniprogram/collapse/collapse", - "t-collapse-panel": "tdesign-miniprogram/collapse-panel/collapse-panel", - "statistics-card": "/components/statistics-card" + "t-swipe-cell": "tdesign-miniprogram/swipe-cell/swipe-cell", + "statistics-card": "/components/statistics-card", + "t-dialog": "tdesign-miniprogram/dialog/dialog" }, "enablePullDownRefresh": true } \ No newline at end of file diff --git a/miniprogram/pages/index/index.scss b/miniprogram/pages/index/index.scss index 1c16786..2cf8998 100644 --- a/miniprogram/pages/index/index.scss +++ b/miniprogram/pages/index/index.scss @@ -85,6 +85,37 @@ page { animation: shake-crazy 1s infinite linear; } } + .t-swipe-cell__right { + view { + height: 100%; + } + } + .finance-list { + .left-icon { + width: 48rpx; + height: 48rpx; + border-radius: 50%; + display: flex; + justify-content: center; + align-items: center; + color: #fff; + } + .btn-wrapper { + // height: 100%; + .btn { + display: inline-flex; + justify-content: center; + align-items: center; + width: 140rpx; + height: 100%; + color: white; + } + + .delete-btn { + background-color: #e34d59; + } + } + } .to-login { height: 40vh; display: flex; diff --git a/miniprogram/pages/index/index.ts b/miniprogram/pages/index/index.ts index 9ec46dc..6452138 100644 --- a/miniprogram/pages/index/index.ts +++ b/miniprogram/pages/index/index.ts @@ -4,6 +4,7 @@ import { getFinanceList, getStatistics, } from "../../api/finance"; +import { getInfo } from "../../api/login"; // pages/index/index.ts Page({ @@ -11,29 +12,35 @@ Page({ * 页面的初始数据 */ data: { + showConfirmDelete: false, + permissions: [], queryParams: { pageNum: 1, pageSize: 10, }, - authToken: undefined, + authToken: null, statistics: { amount: { label: "账户余额", value: 0, + type: "money", }, income: { label: "当月入账", value: 0, + type: "money", }, expenditure: { label: "当月出账", value: 0, + type: "money", }, }, loading: false, total: 0, completed: false, deleteIndex: -1, + deleteId: null, list: [], types: [], }, @@ -71,9 +78,9 @@ Page({ async getStatisticsDetail() { const resp: any = await getStatistics(); this.setData({ - ['statistics.amount.value']: resp.data.amount, - ['statistics.income.value']: resp.data.income, - ['statistics.expenditure.value']: resp.data.expenditure, + ["statistics.amount.value"]: resp.data.amount, + ["statistics.income.value"]: resp.data.income, + ["statistics.expenditure.value"]: resp.data.expenditure, }); }, handleAddAffairs() { @@ -102,9 +109,26 @@ Page({ }); }); }, + showDeleteDialog(e: any) { + console.log(e.currentTarget.dataset); + + const { financeId } = e.currentTarget.dataset; + this.setData({ + showConfirmDelete: true, + deleteId: financeId, + }); + }, + closeDialog() { + this.setData({ + showConfirmDelete: false, + }); + }, handleLongTap(e: any) { - console.log(e); - const { deleteIndex } = this.data; + const { deleteIndex, permissions } = this.data; + // @ts-ignore + if (!permissions.includes("finance:detail:remove")) { + return; + } const index = parseInt(e.currentTarget.dataset.index); let resultIndex; @@ -117,12 +141,14 @@ Page({ deleteIndex: resultIndex, }); }, - handleDeleteFinance(e: any) { - const { financeId } = e.currentTarget.dataset; - deleteFinance(financeId).then(() => { + handleDeleteFinance() { + const { deleteId } = this.data; + if (!deleteId) return; + // @ts-ignore + deleteFinance(deleteId).then(() => { const { list } = this.data; this.setData({ - list: list.filter((el: any) => el.financeId !== financeId), + list: list.filter((el: any) => el.financeId !== deleteId), deleteIndex: -1, }); }); @@ -140,6 +166,23 @@ Page({ url: "/pages/login/login", }); }, + loadUserInfo() { + const permissions = getApp().globalData.permissions; + + if (permissions) { + this.setData({ + permissions, + }); + } else { + const token = getApp().globalData.authToken; + getInfo(token).then((resp: any) => { + this.setData({ + permissions: resp.permissions, + }); + getApp().globalData.permissions = resp.permissions; + }); + } + }, loadPageData() { const authToken = getApp().globalData.authToken; this.setData({ @@ -165,6 +208,7 @@ Page({ */ onShow() { this.loadPageData(); + this.loadUserInfo(); }, /** diff --git a/miniprogram/pages/index/index.wxml b/miniprogram/pages/index/index.wxml index d926794..2e9a617 100644 --- a/miniprogram/pages/index/index.wxml +++ b/miniprogram/pages/index/index.wxml @@ -2,11 +2,28 @@ + - + - + + + + + + {{item.type=='finance_type_income'?'入':item.type=='finance_type_expenditure'?'出':''}} + + {{times.formatDate(item.date) || "-"}} | {{item.oppositeCompany}} + {{item.type=='finance_type_income'?'+':item.type=='finance_type_expenditure'?'-':''}}{{item.amount}} + + + 删除 + + + + + + + \ No newline at end of file diff --git a/miniprogram/pages/login/login.json b/miniprogram/pages/login/login.json index 8835af0..f0b924a 100644 --- a/miniprogram/pages/login/login.json +++ b/miniprogram/pages/login/login.json @@ -1,3 +1,9 @@ { - "usingComponents": {} + "usingComponents": { + "t-navbar": "tdesign-miniprogram/navbar/navbar", + "t-image": "tdesign-miniprogram/image/image", + "t-avatar": "tdesign-miniprogram/avatar/avatar" + }, + "navigationBarTitleText": "个人中心", + "navigationStyle": "custom" } \ No newline at end of file diff --git a/miniprogram/pages/login/login.scss b/miniprogram/pages/login/login.scss index 1f481a9..808cb05 100644 --- a/miniprogram/pages/login/login.scss +++ b/miniprogram/pages/login/login.scss @@ -1,11 +1,56 @@ /* pages/login/login.wxss */ -.login{ - height: 100vh; +.t-navbar__placeholder { + --td-navbar-padding-top: 0; + --td-navbar-height: 0; +} +.t-navbar__content { + --td-navbar-bg-color: rgba(0, 0, 0, 0); +} +.nav-title { + color: #ffffff; +} +.login-container { display: flex; - flex-direction: column; - justify-content: center; align-items: center; - .login-button{ - margin-top: 60rpx; + width: 100%; + aspect-ratio: 3/2; + position: relative; + overflow: hidden; + border-radius: 0 0 50% 50% / 0 0 4% 4%; + .login-bg { + position: absolute; + left: 0; + top: 0; } -} \ No newline at end of file + .avatar_login { + margin-left: 64rpx; + display: flex; + align-items: center; + + .login-button { + margin-left: 24rpx; + &.t-button--primary { + --td-button-primary-text-color: #ffffff; + } + } + } + .vip-card { + position: absolute; + left: 50%; + bottom: 0; + transform: translateX(-50%); + width: 80%; + height: 80rpx; + background-color: #ccb88d; + border-radius: 24rpx 24rpx 0 0; + color: #ffffff; + display: flex; + align-items: center; + text { + margin-left: 32rpx; + } + } +} +.options-container { + margin-top: 32rpx; +} diff --git a/miniprogram/pages/login/login.ts b/miniprogram/pages/login/login.ts index af32198..272b752 100644 --- a/miniprogram/pages/login/login.ts +++ b/miniprogram/pages/login/login.ts @@ -1,4 +1,4 @@ -import { login } from "../../api/login"; +import { getInfo, login } from "../../api/login"; import { setToken } from "../../utils/settings"; // pages/login/login.ts @@ -7,25 +7,28 @@ Page({ * 页面的初始数据 */ data: { - authToken: undefined, + authToken: null, }, loginWithWeChat(e: any) { login({ code: e.detail.code, }).then((response: any) => { + this.setData({ + authToken: response.token, + }); setToken(response.token); - // setToken(response.token); - wx.switchTab({ - url: "/pages/index/index", + getInfo(response.token).then((resp: any) => { + getApp().globalData.permissions = resp.permissions; }); }); }, - handleLogout(){ + handleLogout() { this.setData({ - authToken: undefined - }) - setToken(undefined) + authToken: null, + }); + getApp().globalData.permissions = undefined; + setToken(undefined); }, /** * 生命周期函数--监听页面加载 diff --git a/miniprogram/pages/login/login.wxml b/miniprogram/pages/login/login.wxml index 2460ae0..33caa13 100644 --- a/miniprogram/pages/login/login.wxml +++ b/miniprogram/pages/login/login.wxml @@ -1,7 +1,22 @@ -