diff --git a/docker-compose.yml b/docker-compose.yml
index eb76d4fe..c491797d 100644
--- a/docker-compose.yml
+++ b/docker-compose.yml
@@ -29,6 +29,8 @@ services:
DB_USER: root
DB_PASSWORD: jewelry123
DB_NAME: jewelry_mall
+ WX_APPID: wx58b02b73d9c26c10
+ WX_SECRET: 3b6cdaffa9ef92d877f79ebd739b47b0
JWT_SECRET: jewelry-mall-jwt-secret
PORT: 3000
volumes:
diff --git a/miniprogram/App.vue b/miniprogram/App.vue
index 6a144b7b..6bb79f1d 100644
--- a/miniprogram/App.vue
+++ b/miniprogram/App.vue
@@ -1,16 +1,7 @@
+
+
diff --git a/miniprogram/pages/mine/index.vue b/miniprogram/pages/mine/index.vue
index 2dff3e8d..19023967 100644
--- a/miniprogram/pages/mine/index.vue
+++ b/miniprogram/pages/mine/index.vue
@@ -1,40 +1,46 @@
-
-
+
+
- {{ userStore.user?.nickname || '未登录' }}
+ {{ isLoggedIn ? (userStore.user?.nickname || '微信用户') : '点击注册/登录' }}
+ ›
-
+
+
+
+ 我的订单 {{ orderCount }}
+ ›
+
+
+
-
-
@@ -54,25 +60,50 @@
\r\n\r\n\r\n","import App from './App'\n\n// #ifndef VUE3\nimport Vue from 'vue'\nimport './uni.promisify.adaptor'\nVue.config.productionTip = false\nApp.mpType = 'app'\nconst app = new Vue({\n ...App\n})\napp.$mount()\n// #endif\n\n// #ifdef VUE3\nimport { createSSRApp } from 'vue'\nimport { createPinia } from 'pinia'\nexport function createApp() {\n const app = createSSRApp(App)\n const pinia = createPinia()\n app.use(pinia)\n return {\n app\n }\n}\n// #endif"],"names":["uni","autoLogin","createSSRApp","App","createPinia"],"mappings":";;;;;;;;;;;;;;;;AAGA,MAAe,YAAA;AAAA,EACb,WAAW;AACLA,kBAAAA,MAAA,MAAM,OAAM,gBAAe,YAAY;AAErC,UAAA,QAAQA,cAAAA,MAAI,eAAe,OAAO;AACxC,QAAI,CAAC,OAAO;AACAC,8BAAA,EAAE,MAAM,CAAC,QAAQ;AACzBD,sBAAA,MAAI,MAAM,SAAQ,iBAAgB,WAAW,GAAG;AAAA,MAAA,CACjD;AAAA,IACH;AAAA,EACF;AAAA,EACA,SAAS;AACHA,kBAAAA,MAAA,MAAM,OAAM,iBAAgB,UAAU;AAAA,EAC5C;AAAA,EACA,SAAS;AACHA,kBAAAA,MAAA,MAAM,OAAM,iBAAgB,UAAU;AAAA,EAC5C;AACF;ACJO,SAAS,YAAY;AAC1B,QAAM,MAAME,cAAY,aAACC,SAAG;AAC5B,QAAM,QAAQC,cAAAA,YAAa;AAC3B,MAAI,IAAI,KAAK;AACb,SAAO;AAAA,IACL;AAAA,EACD;AACH;;;"}
\ No newline at end of file
+{"version":3,"file":"app.js","sources":["App.vue","main.js"],"sourcesContent":["\r\n\r\n\r\n","import App from './App'\n\n// #ifndef VUE3\nimport Vue from 'vue'\nimport './uni.promisify.adaptor'\nVue.config.productionTip = false\nApp.mpType = 'app'\nconst app = new Vue({\n ...App\n})\napp.$mount()\n// #endif\n\n// #ifdef VUE3\nimport { createSSRApp } from 'vue'\nimport { createPinia } from 'pinia'\nexport function createApp() {\n const app = createSSRApp(App)\n const pinia = createPinia()\n app.use(pinia)\n return {\n app\n }\n}\n// #endif"],"names":["uni","createSSRApp","App","createPinia"],"mappings":";;;;;;;;;;;;;;;;AACA,MAAe,YAAA;AAAA,EACb,WAAW;AACLA,kBAAAA,MAAA,MAAM,OAAM,gBAAe,YAAY;AAAA,EAC7C;AAAA,EACA,SAAS;AACHA,kBAAAA,MAAA,MAAM,OAAM,gBAAe,UAAU;AAAA,EAC3C;AAAA,EACA,SAAS;AACHA,kBAAAA,MAAA,MAAM,OAAM,iBAAgB,UAAU;AAAA,EAC5C;AACF;ACKO,SAAS,YAAY;AAC1B,QAAM,MAAMC,cAAY,aAACC,SAAG;AAC5B,QAAM,QAAQC,cAAAA,YAAa;AAC3B,MAAI,IAAI,KAAK;AACb,SAAO;AAAA,IACL;AAAA,EACD;AACH;;;"}
\ No newline at end of file
diff --git a/miniprogram/unpackage/dist/dev/.sourcemap/mp-weixin/common/assets.js.map b/miniprogram/unpackage/dist/dev/.sourcemap/mp-weixin/common/assets.js.map
index 81c5d3fa..7971432a 100644
--- a/miniprogram/unpackage/dist/dev/.sourcemap/mp-weixin/common/assets.js.map
+++ b/miniprogram/unpackage/dist/dev/.sourcemap/mp-weixin/common/assets.js.map
@@ -1 +1 @@
-{"version":3,"file":"assets.js","sources":["static/logo.png"],"sourcesContent":["export default \"__VITE_ASSET__46719607__\""],"names":[],"mappings":";AAAA,MAAe,aAAA;;"}
\ No newline at end of file
+{"version":3,"file":"assets.js","sources":["static/tab/me_s.png","static/ic_address.png","static/ic_customer.png","static/ic_about.png","static/ic_agreement1.png","static/ic_agreement2.png","static/logo.png"],"sourcesContent":["export default \"__VITE_ASSET__0724ec6f__\"","export default \"__VITE_ASSET__2fa96069__\"","export default \"__VITE_ASSET__834c867b__\"","export default \"__VITE_ASSET__53f234dc__\"","export default \"__VITE_ASSET__a736f8f4__\"","export default \"__VITE_ASSET__a25b5e1b__\"","export default \"__VITE_ASSET__46719607__\""],"names":[],"mappings":";AAAA,MAAe,eAAA;ACAf,MAAe,aAAA;ACAf,MAAe,aAAA;ACAf,MAAe,aAAA;ACAf,MAAe,aAAA;ACAf,MAAe,aAAA;ACAf,MAAe,aAAA;;;;;;;;"}
\ No newline at end of file
diff --git a/miniprogram/unpackage/dist/dev/.sourcemap/mp-weixin/pages/cart/index.js.map b/miniprogram/unpackage/dist/dev/.sourcemap/mp-weixin/pages/cart/index.js.map
index c4e381f1..310a85e3 100644
--- a/miniprogram/unpackage/dist/dev/.sourcemap/mp-weixin/pages/cart/index.js.map
+++ b/miniprogram/unpackage/dist/dev/.sourcemap/mp-weixin/pages/cart/index.js.map
@@ -1 +1 @@
-{"version":3,"file":"index.js","sources":["pages/cart/index.vue","../../../../Software/HBuilderX.4.76.2025082103/HBuilderX/plugins/uniapp-cli-vite/uniPage:/cGFnZXMvY2FydC9pbmRleC52dWU"],"sourcesContent":["\r\n \r\n \r\n 0\" class=\"cart-list\">\r\n \r\n \r\n ✓\r\n \r\n \r\n \r\n {{ item.product.name }}\r\n {{ item.specData.fineness }} / {{ item.specData.mainStone }} / {{ item.specData.ringSize }}\r\n \r\n ¥{{ item.specData.totalPrice }}\r\n \r\n -\r\n {{ item.quantity }}\r\n +\r\n \r\n \r\n \r\n 删除\r\n \r\n \r\n\r\n \r\n \r\n 购物车是空的\r\n 去逛逛\r\n \r\n\r\n \r\n 0\" class=\"settle-bar\">\r\n \r\n ✓\r\n 全选\r\n \r\n \r\n 合计:¥{{ cartStore.totalAmount.toFixed(2) }}\r\n \r\n 下单({{ cartStore.checkedItems.length }})\r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n\r\n\r\n\r\n\r\n\r\n","import MiniProgramPage from 'F:/gitCode/uniapp/JewelryMall/miniprogram/pages/cart/index.vue'\nwx.createPage(MiniProgramPage)"],"names":["useCartStore","ref","computed","uni","onMounted"],"mappings":";;;;;;AAyDA,MAAA,qBAA+B,MAAA;;;;AAG/B,UAAM,YAAYA,WAAAA;AACZ,UAAA,aAAaC,kBAAI,KAAK;AAE5B,UAAM,eAAeC,cAAA;AAAA,MAAS,MAC5B,UAAU,MAAM,SAAS,KAAK,UAAU,MAAM,MAAM,CAAC,SAAS,KAAK,OAAO;AAAA,IAAA;AAG5E,aAAS,YAAY,MAAgB;AAC/B,UAAA,KAAK,WAAW,GAAG;AACrB,kBAAU,eAAe,KAAK,IAAI,KAAK,WAAW,CAAC;AAAA,MACrD;AAAA,IACF;AAEA,aAAS,eAAe;AAClB,UAAA,UAAU,aAAa,WAAW,GAAG;AACvCC,sBAAA,MAAI,UAAU,EAAE,OAAO,UAAU,MAAM,QAAQ;AAC/C;AAAA,MACF;AACAA,oBAAAA,MAAI,WAAW,EAAE,KAAK,sBAAuB,CAAA;AAAA,IAC/C;AAEA,aAAS,SAAS;AAChBA,oBAAAA,MAAI,UAAU,EAAE,KAAK,qBAAsB,CAAA;AAAA,IAC7C;AAEAC,kBAAAA,UAAU,MAAM;AACd,gBAAU,UAAU;AAAA,IAAA,CACrB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACtFD,GAAG,WAAW,eAAe;"}
\ No newline at end of file
+{"version":3,"file":"index.js","sources":["pages/cart/index.vue","../../../../Software/HBuilderX.4.76.2025082103/HBuilderX/plugins/uniapp-cli-vite/uniPage:/cGFnZXMvY2FydC9pbmRleC52dWU"],"sourcesContent":["\r\n \r\n \r\n 0\" class=\"cart-list\">\r\n \r\n \r\n ✓\r\n \r\n \r\n \r\n {{ item.product.name }}\r\n {{ item.specData.fineness }} / {{ item.specData.mainStone }} / {{ item.specData.ringSize }}\r\n \r\n ¥{{ item.specData.totalPrice }}\r\n \r\n -\r\n {{ item.quantity }}\r\n +\r\n \r\n \r\n \r\n 删除\r\n \r\n \r\n\r\n \r\n \r\n 购物车是空的\r\n 去逛逛\r\n \r\n\r\n \r\n 0\" class=\"settle-bar\">\r\n \r\n ✓\r\n 全选\r\n \r\n \r\n 合计:¥{{ cartStore.totalAmount.toFixed(2) }}\r\n \r\n 下单({{ cartStore.checkedItems.length }})\r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n\r\n\r\n\r\n\r\n\r\n","import MiniProgramPage from 'F:/gitCode/uniapp/JewelryMall/miniprogram/pages/cart/index.vue'\nwx.createPage(MiniProgramPage)"],"names":["useCartStore","ref","computed","uni","onMounted"],"mappings":";;;;;;AAyDA,MAAA,qBAA+B,MAAA;;;;AAG/B,UAAM,YAAYA,WAAAA;AACZ,UAAA,aAAaC,kBAAI,KAAK;AAE5B,UAAM,eAAeC,cAAA;AAAA,MAAS,MAC5B,UAAU,MAAM,SAAS,KAAK,UAAU,MAAM,MAAM,CAAC,SAAS,KAAK,OAAO;AAAA,IAAA;AAG5E,aAAS,YAAY,MAAgB;AAC/B,UAAA,KAAK,WAAW,GAAG;AACrB,kBAAU,eAAe,KAAK,IAAI,KAAK,WAAW,CAAC;AAAA,MACrD;AAAA,IACF;AAEA,aAAS,eAAe;AAClB,UAAA,UAAU,aAAa,WAAW,GAAG;AACvCC,sBAAA,MAAI,UAAU,EAAE,OAAO,UAAU,MAAM,QAAQ;AAC/C;AAAA,MACF;AACM,YAAA,QAAQA,cAAAA,MAAI,eAAe,OAAO;AACxC,UAAI,CAAC,OAAO;AACVA,sBAAAA,MAAI,WAAW,EAAE,KAAK,qBAAsB,CAAA;AAC5C;AAAA,MACF;AACAA,oBAAAA,MAAI,WAAW,EAAE,KAAK,sBAAuB,CAAA;AAAA,IAC/C;AAEA,aAAS,SAAS;AAChBA,oBAAAA,MAAI,UAAU,EAAE,KAAK,qBAAsB,CAAA;AAAA,IAC7C;AAEAC,kBAAAA,UAAU,MAAM;AACd,gBAAU,UAAU;AAAA,IAAA,CACrB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AC3FD,GAAG,WAAW,eAAe;"}
\ No newline at end of file
diff --git a/miniprogram/unpackage/dist/dev/.sourcemap/mp-weixin/pages/login/index.js.map b/miniprogram/unpackage/dist/dev/.sourcemap/mp-weixin/pages/login/index.js.map
new file mode 100644
index 00000000..1f85c6cf
--- /dev/null
+++ b/miniprogram/unpackage/dist/dev/.sourcemap/mp-weixin/pages/login/index.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"index.js","sources":["pages/login/index.vue","../../../../Software/HBuilderX.4.76.2025082103/HBuilderX/plugins/uniapp-cli-vite/uniPage:/cGFnZXMvbG9naW4vaW5kZXgudnVl"],"sourcesContent":["\r\n \r\n \r\n\r\n \r\n \r\n \r\n 暂不登录,先逛逛\r\n \r\n \r\n \r\n\r\n\r\n\r\n\r\n\r\n","import MiniProgramPage from 'F:/gitCode/uniapp/JewelryMall/miniprogram/pages/login/index.vue'\nwx.createPage(MiniProgramPage)"],"names":["ref","useUserStore","autoLogin","uni"],"mappings":";;;;;;;;AAwBM,UAAA,UAAUA,kBAAI,KAAK;AACzB,UAAM,YAAYC,WAAAA;AAElB,mBAAe,cAAc;AAC3B,UAAI,QAAQ;AAAO;AACnB,cAAQ,QAAQ;AACZ,UAAA;AACF,cAAMC,cAAU,UAAA;AAChB,cAAM,UAAU;AAChBC,sBAAA,MAAI,UAAU,EAAE,OAAO,QAAQ,MAAM,WAAW;AAChD,mBAAW,MAAM;AACfA,wBAAAA,MAAI,aAAa,EAAE,OAAO,GAAG,MAAM,MAAM;AACvCA,0BAAAA,MAAI,UAAU,EAAE,KAAK,qBAAsB,CAAA;AAAA,aAC3C;AAAA,WACD,GAAG;AAAA,MAAA,QACA;AACNA,sBAAA,MAAI,UAAU,EAAE,OAAO,YAAY,MAAM,QAAQ;AAAA,MAAA,UACjD;AACA,gBAAQ,QAAQ;AAAA,MAClB;AAAA,IACF;AAEA,aAAS,SAAS;AAChBA,oBAAAA,MAAI,aAAa,EAAE,OAAO,GAAG,MAAM,MAAM;AACvCA,sBAAAA,MAAI,UAAU,EAAE,KAAK,qBAAsB,CAAA;AAAA,SAC3C;AAAA,IACJ;;;;;;;;;;;;ACjDA,GAAG,WAAW,eAAe;"}
\ No newline at end of file
diff --git a/miniprogram/unpackage/dist/dev/.sourcemap/mp-weixin/pages/mine/index.js.map b/miniprogram/unpackage/dist/dev/.sourcemap/mp-weixin/pages/mine/index.js.map
index 02c14e62..2ab659fd 100644
--- a/miniprogram/unpackage/dist/dev/.sourcemap/mp-weixin/pages/mine/index.js.map
+++ b/miniprogram/unpackage/dist/dev/.sourcemap/mp-weixin/pages/mine/index.js.map
@@ -1 +1 @@
-{"version":3,"file":"index.js","sources":["pages/mine/index.vue","../../../../Software/HBuilderX.4.76.2025082103/HBuilderX/plugins/uniapp-cli-vite/uniPage:/cGFnZXMvbWluZS9pbmRleC52dWU"],"sourcesContent":["\r\n \r\n \r\n \r\n \r\n \r\n {{ userStore.user?.nickname || '未登录' }}\r\n \r\n \r\n\r\n \r\n \r\n\r\n \r\n\r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n\r\n\r\n\r\n\r\n\r\n","import MiniProgramPage from 'F:/gitCode/uniapp/JewelryMall/miniprogram/pages/mine/index.vue'\nwx.createPage(MiniProgramPage)"],"names":["useUserStore","ref","onMounted","uni"],"mappings":";;;;;;AA0DA,MAAA,qBAA+B,MAAA;;;;AAE/B,UAAM,YAAYA,WAAAA;AACZ,UAAA,aAAaC,kBAAI,KAAK;AACtB,UAAA,YAAYA,kBAAI,KAAK;AAE3BC,kBAAAA,UAAU,MAAM;AAEd,gBAAU,aAAa;AAAA,IAAA,CACxB;AAED,aAAS,WAAW,KAAa;AAC3BC,oBAAAA,MAAA,WAAW,EAAE,IAAA,CAAK;AAAA,IACxB;AAEA,aAAS,cAAc,MAA0B;AACzC,YAAA,QAAQ,SAAS,SAAS,SAAS;AACzCA,oBAAAA,MAAI,UAAU;AAAA,QACZ;AAAA,QACA,SAAS,SAAS,SACd,sCACA;AAAA,QACJ,YAAY;AAAA,QACZ,aAAa;AAAA,MAAA,CACd;AAAA,IACH;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AClFA,GAAG,WAAW,eAAe;"}
\ No newline at end of file
+{"version":3,"file":"index.js","sources":["pages/mine/index.vue","../../../../Software/HBuilderX.4.76.2025082103/HBuilderX/plugins/uniapp-cli-vite/uniPage:/cGFnZXMvbWluZS9pbmRleC52dWU"],"sourcesContent":["\r\n \r\n \r\n \r\n \r\n \r\n {{ isLoggedIn ? (userStore.user?.nickname || '微信用户') : '点击注册/登录' }}\r\n \r\n ›\r\n \r\n\r\n \r\n \r\n \r\n 我的订单 {{ orderCount }}\r\n ›\r\n \r\n\r\n \r\n \r\n\r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n\r\n\r\n\r\n\r\n\r\n","import MiniProgramPage from 'F:/gitCode/uniapp/JewelryMall/miniprogram/pages/mine/index.vue'\nwx.createPage(MiniProgramPage)"],"names":["useUserStore","ref","uni","getOrderList","onShow"],"mappings":";;;;;;;;AAkEA,MAAA,qBAA+B,MAAA;;;;AAE/B,UAAM,YAAYA,WAAAA;AACZ,UAAA,aAAaC,kBAAI,KAAK;AACtB,UAAA,YAAYA,kBAAI,KAAK;AACrB,UAAA,aAAaA,kBAAI,CAAC;AAClB,UAAA,aAAaA,kBAAI,KAAK;AAE5B,aAAS,cAAc;AACf,YAAA,QAAQC,cAAAA,MAAI,eAAe,OAAO;AAC7B,iBAAA,QAAQ,CAAC,CAAC;AACrB,UAAI,OAAO;AACT,kBAAU,aAAa;AACVC,+BAAA,EAAE,KAAK,CAAC,SAAc;AACtB,qBAAA,QAAQ,MAAM,QAAQ,IAAI,IAAI,KAAK,UAAU,6BAAM,UAAS;AAAA,QAAA,CACxE,EAAE,MAAM,MAAM;AAAA,QAAA,CAAE;AAAA,MACnB;AAAA,IACF;AAEAC,kBAAAA,OAAO,MAAM;AACC;IAAA,CACb;AAED,aAAS,sBAAsB;AACzB,UAAA,CAAC,WAAW,OAAO;AACrBF,sBAAAA,MAAI,WAAW,EAAE,KAAK,qBAAsB,CAAA;AAAA,MAC9C;AAAA,IACF;AAEA,aAAS,WAAW,KAAa;AACzB,YAAA,QAAQA,cAAAA,MAAI,eAAe,OAAO;AACxC,UAAI,CAAC,OAAO;AACVA,sBAAAA,MAAI,WAAW,EAAE,KAAK,qBAAsB,CAAA;AAC5C;AAAA,MACF;AACIA,oBAAAA,MAAA,WAAW,EAAE,IAAA,CAAK;AAAA,IACxB;AAEA,aAAS,cAAc,MAA0B;AACzC,YAAA,QAAQ,SAAS,SAAS,SAAS;AACzCA,oBAAAA,MAAI,UAAU;AAAA,QACZ;AAAA,QACA,SAAS,SAAS,SACd,sCACA;AAAA,QACJ,YAAY;AAAA,QACZ,aAAa;AAAA,MAAA,CACd;AAAA,IACH;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACjHA,GAAG,WAAW,eAAe;"}
\ No newline at end of file
diff --git a/miniprogram/unpackage/dist/dev/mp-weixin/app.js b/miniprogram/unpackage/dist/dev/mp-weixin/app.js
index d05b8a98..9b414eed 100644
--- a/miniprogram/unpackage/dist/dev/mp-weixin/app.js
+++ b/miniprogram/unpackage/dist/dev/mp-weixin/app.js
@@ -1,7 +1,6 @@
"use strict";
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
const common_vendor = require("./common/vendor.js");
-const utils_request = require("./utils/request.js");
if (!Math) {
"./pages/index/index.js";
"./pages/product/detail.js";
@@ -13,22 +12,17 @@ if (!Math) {
"./pages/calculator/index.js";
"./pages/mine/index.js";
"./pages/address/index.js";
+ "./pages/login/index.js";
}
const _sfc_main = {
onLaunch() {
- common_vendor.index.__f__("log", "at App.vue:6", "App Launch");
- const token = common_vendor.index.getStorageSync("token");
- if (!token) {
- utils_request.autoLogin().catch((err) => {
- common_vendor.index.__f__("error", "at App.vue:11", "自动登录失败:", err);
- });
- }
+ common_vendor.index.__f__("log", "at App.vue:4", "App Launch");
},
onShow() {
- common_vendor.index.__f__("log", "at App.vue:16", "App Show");
+ common_vendor.index.__f__("log", "at App.vue:7", "App Show");
},
onHide() {
- common_vendor.index.__f__("log", "at App.vue:19", "App Hide");
+ common_vendor.index.__f__("log", "at App.vue:10", "App Hide");
}
};
function createApp() {
diff --git a/miniprogram/unpackage/dist/dev/mp-weixin/app.json b/miniprogram/unpackage/dist/dev/mp-weixin/app.json
index 8dc54694..66bb47eb 100644
--- a/miniprogram/unpackage/dist/dev/mp-weixin/app.json
+++ b/miniprogram/unpackage/dist/dev/mp-weixin/app.json
@@ -9,7 +9,8 @@
"pages/mold/index",
"pages/calculator/index",
"pages/mine/index",
- "pages/address/index"
+ "pages/address/index",
+ "pages/login/index"
],
"window": {
"navigationBarTextStyle": "black",
diff --git a/miniprogram/unpackage/dist/dev/mp-weixin/common/assets.js b/miniprogram/unpackage/dist/dev/mp-weixin/common/assets.js
index be03fa9c..9f73d75f 100644
--- a/miniprogram/unpackage/dist/dev/mp-weixin/common/assets.js
+++ b/miniprogram/unpackage/dist/dev/mp-weixin/common/assets.js
@@ -1,4 +1,16 @@
"use strict";
+const _imports_0$1 = "/static/tab/me_s.png";
+const _imports_1 = "/static/ic_address.png";
+const _imports_2 = "/static/ic_customer.png";
+const _imports_3 = "/static/ic_about.png";
+const _imports_4 = "/static/ic_agreement1.png";
+const _imports_5 = "/static/ic_agreement2.png";
const _imports_0 = "/static/logo.png";
-exports._imports_0 = _imports_0;
+exports._imports_0 = _imports_0$1;
+exports._imports_0$1 = _imports_0;
+exports._imports_1 = _imports_1;
+exports._imports_2 = _imports_2;
+exports._imports_3 = _imports_3;
+exports._imports_4 = _imports_4;
+exports._imports_5 = _imports_5;
//# sourceMappingURL=../../.sourcemap/mp-weixin/common/assets.js.map
diff --git a/miniprogram/unpackage/dist/dev/mp-weixin/common/vendor.js b/miniprogram/unpackage/dist/dev/mp-weixin/common/vendor.js
index 0cbaf722..0cc6420b 100644
--- a/miniprogram/unpackage/dist/dev/mp-weixin/common/vendor.js
+++ b/miniprogram/unpackage/dist/dev/mp-weixin/common/vendor.js
@@ -7041,7 +7041,7 @@ function isConsoleWritable() {
function initRuntimeSocketService() {
const hosts = "172.31.144.1,192.168.21.7,192.168.195.32,127.0.0.1";
const port = "8090";
- const id = "mp-weixin_oR94fT";
+ const id = "mp-weixin_ucp1tM";
const lazy = typeof swan !== "undefined";
let restoreError = lazy ? () => {
} : initOnError();
diff --git a/miniprogram/unpackage/dist/dev/mp-weixin/components/CustomerServiceBtn.js b/miniprogram/unpackage/dist/dev/mp-weixin/components/CustomerServiceBtn.js
index e90a4b84..f9c5f314 100644
--- a/miniprogram/unpackage/dist/dev/mp-weixin/components/CustomerServiceBtn.js
+++ b/miniprogram/unpackage/dist/dev/mp-weixin/components/CustomerServiceBtn.js
@@ -12,7 +12,7 @@ const _sfc_main = /* @__PURE__ */ common_vendor.defineComponent({
return common_vendor.e({
a: _ctx.mode === "qrcode"
}, _ctx.mode === "qrcode" ? {
- b: common_assets._imports_0,
+ b: common_assets._imports_0$1,
c: common_vendor.o(($event) => _ctx.$emit("close")),
d: common_vendor.o(() => {
}),
diff --git a/miniprogram/unpackage/dist/dev/mp-weixin/pages/cart/index.js b/miniprogram/unpackage/dist/dev/mp-weixin/pages/cart/index.js
index 0cb9468a..8f7184a8 100644
--- a/miniprogram/unpackage/dist/dev/mp-weixin/pages/cart/index.js
+++ b/miniprogram/unpackage/dist/dev/mp-weixin/pages/cart/index.js
@@ -23,6 +23,11 @@ const _sfc_main = /* @__PURE__ */ common_vendor.defineComponent({
common_vendor.index.showToast({ title: "请先选择商品", icon: "none" });
return;
}
+ const token = common_vendor.index.getStorageSync("token");
+ if (!token) {
+ common_vendor.index.navigateTo({ url: "/pages/login/index" });
+ return;
+ }
common_vendor.index.navigateTo({ url: "/pages/order/submit" });
}
function goHome() {
diff --git a/miniprogram/unpackage/dist/dev/mp-weixin/pages/login/index.js b/miniprogram/unpackage/dist/dev/mp-weixin/pages/login/index.js
new file mode 100644
index 00000000..b97d543b
--- /dev/null
+++ b/miniprogram/unpackage/dist/dev/mp-weixin/pages/login/index.js
@@ -0,0 +1,47 @@
+"use strict";
+const common_vendor = require("../../common/vendor.js");
+const common_assets = require("../../common/assets.js");
+const utils_request = require("../../utils/request.js");
+const store_user = require("../../store/user.js");
+const _sfc_main = /* @__PURE__ */ common_vendor.defineComponent({
+ __name: "index",
+ setup(__props) {
+ const loading = common_vendor.ref(false);
+ const userStore = store_user.useUserStore();
+ async function handleLogin() {
+ if (loading.value)
+ return;
+ loading.value = true;
+ try {
+ await utils_request.autoLogin();
+ await userStore.fetchProfile();
+ common_vendor.index.showToast({ title: "登录成功", icon: "success" });
+ setTimeout(() => {
+ common_vendor.index.navigateBack({ delta: 1, fail: () => {
+ common_vendor.index.switchTab({ url: "/pages/index/index" });
+ } });
+ }, 500);
+ } catch {
+ common_vendor.index.showToast({ title: "登录失败,请重试", icon: "none" });
+ } finally {
+ loading.value = false;
+ }
+ }
+ function goBack() {
+ common_vendor.index.navigateBack({ delta: 1, fail: () => {
+ common_vendor.index.switchTab({ url: "/pages/index/index" });
+ } });
+ }
+ return (_ctx, _cache) => {
+ return {
+ a: common_assets._imports_0$1,
+ b: loading.value,
+ c: common_vendor.o(handleLogin),
+ d: common_vendor.o(goBack)
+ };
+ };
+ }
+});
+const MiniProgramPage = /* @__PURE__ */ common_vendor._export_sfc(_sfc_main, [["__scopeId", "data-v-d08ef7d4"]]);
+wx.createPage(MiniProgramPage);
+//# sourceMappingURL=../../../.sourcemap/mp-weixin/pages/login/index.js.map
diff --git a/miniprogram/unpackage/dist/dev/mp-weixin/pages/login/index.json b/miniprogram/unpackage/dist/dev/mp-weixin/pages/login/index.json
new file mode 100644
index 00000000..e301e431
--- /dev/null
+++ b/miniprogram/unpackage/dist/dev/mp-weixin/pages/login/index.json
@@ -0,0 +1,4 @@
+{
+ "navigationBarTitleText": "登录",
+ "usingComponents": {}
+}
\ No newline at end of file
diff --git a/miniprogram/unpackage/dist/dev/mp-weixin/pages/login/index.wxml b/miniprogram/unpackage/dist/dev/mp-weixin/pages/login/index.wxml
new file mode 100644
index 00000000..8e6ba6c0
--- /dev/null
+++ b/miniprogram/unpackage/dist/dev/mp-weixin/pages/login/index.wxml
@@ -0,0 +1 @@
+暂不登录,先逛逛
\ No newline at end of file
diff --git a/miniprogram/unpackage/dist/dev/mp-weixin/pages/login/index.wxss b/miniprogram/unpackage/dist/dev/mp-weixin/pages/login/index.wxss
new file mode 100644
index 00000000..bd23d7fa
--- /dev/null
+++ b/miniprogram/unpackage/dist/dev/mp-weixin/pages/login/index.wxss
@@ -0,0 +1,53 @@
+
+.login-page.data-v-d08ef7d4 {
+ min-height: 100vh;
+ display: flex;
+ flex-direction: column;
+ align-items: center;
+ justify-content: center;
+ background: #fff;
+ padding: 0 60rpx;
+}
+.login-header.data-v-d08ef7d4 {
+ display: flex;
+ flex-direction: column;
+ align-items: center;
+ margin-bottom: 120rpx;
+}
+.login-logo.data-v-d08ef7d4 {
+ width: 160rpx;
+ height: 160rpx;
+ margin-bottom: 30rpx;
+}
+.login-title.data-v-d08ef7d4 {
+ font-size: 40rpx;
+ font-weight: bold;
+ color: #333;
+ margin-bottom: 16rpx;
+}
+.login-desc.data-v-d08ef7d4 {
+ font-size: 26rpx;
+ color: #999;
+}
+.login-actions.data-v-d08ef7d4 {
+ width: 100%;
+ display: flex;
+ flex-direction: column;
+ align-items: center;
+}
+.login-btn.data-v-d08ef7d4 {
+ width: 100%;
+ height: 88rpx;
+ line-height: 88rpx;
+ background: #e4393c;
+ color: #fff;
+ font-size: 32rpx;
+ border-radius: 44rpx;
+ border: none;
+ text-align: center;
+}
+.login-skip.data-v-d08ef7d4 {
+ margin-top: 32rpx;
+ font-size: 26rpx;
+ color: #999;
+}
diff --git a/miniprogram/unpackage/dist/dev/mp-weixin/pages/mine/index.js b/miniprogram/unpackage/dist/dev/mp-weixin/pages/mine/index.js
index 29e9fba6..dcfdf207 100644
--- a/miniprogram/unpackage/dist/dev/mp-weixin/pages/mine/index.js
+++ b/miniprogram/unpackage/dist/dev/mp-weixin/pages/mine/index.js
@@ -1,6 +1,8 @@
"use strict";
const common_vendor = require("../../common/vendor.js");
+const common_assets = require("../../common/assets.js");
const store_user = require("../../store/user.js");
+const api_order = require("../../api/order.js");
if (!Math) {
CustomerServiceBtn();
}
@@ -11,14 +13,37 @@ const _sfc_main = /* @__PURE__ */ common_vendor.defineComponent({
const userStore = store_user.useUserStore();
const showQrCode = common_vendor.ref(false);
const showAbout = common_vendor.ref(false);
- common_vendor.onMounted(() => {
- userStore.fetchProfile();
+ const orderCount = common_vendor.ref(0);
+ const isLoggedIn = common_vendor.ref(false);
+ function refreshData() {
+ const token = common_vendor.index.getStorageSync("token");
+ isLoggedIn.value = !!token;
+ if (token) {
+ userStore.fetchProfile();
+ api_order.getOrderList().then((data) => {
+ orderCount.value = Array.isArray(data) ? data.length : (data == null ? void 0 : data.total) || 0;
+ }).catch(() => {
+ });
+ }
+ }
+ common_vendor.onShow(() => {
+ refreshData();
});
+ function handleUserCardClick() {
+ if (!isLoggedIn.value) {
+ common_vendor.index.navigateTo({ url: "/pages/login/index" });
+ }
+ }
function navigateTo(url) {
+ const token = common_vendor.index.getStorageSync("token");
+ if (!token) {
+ common_vendor.index.navigateTo({ url: "/pages/login/index" });
+ return;
+ }
common_vendor.index.navigateTo({ url });
}
function showAgreement(type) {
- const title = type === "user" ? "用户协议" : "隐私政策";
+ const title = type === "user" ? "用户协议" : "隐私协议";
common_vendor.index.showModal({
title,
content: type === "user" ? "欢迎使用珠宝商城小程序。使用本小程序即表示您同意遵守相关服务条款。" : "我们重视您的隐私保护。我们仅收集必要的信息以提供服务,不会向第三方泄露您的个人信息。",
@@ -30,26 +55,34 @@ const _sfc_main = /* @__PURE__ */ common_vendor.defineComponent({
var _a, _b;
return common_vendor.e({
a: ((_a = common_vendor.unref(userStore).user) == null ? void 0 : _a.avatar) || "/static/logo.png",
- b: common_vendor.t(((_b = common_vendor.unref(userStore).user) == null ? void 0 : _b.nickname) || "未登录"),
- c: common_vendor.o(($event) => navigateTo("/pages/order/list")),
- d: common_vendor.o(($event) => navigateTo("/pages/address/index")),
- e: common_vendor.o(($event) => showQrCode.value = true),
- f: common_vendor.o(($event) => showAbout.value = true),
- g: common_vendor.o(($event) => showAgreement("user")),
- h: common_vendor.o(($event) => showAgreement("privacy")),
- i: showQrCode.value
+ b: common_vendor.t(isLoggedIn.value ? ((_b = common_vendor.unref(userStore).user) == null ? void 0 : _b.nickname) || "微信用户" : "点击注册/登录"),
+ c: common_vendor.o(handleUserCardClick),
+ d: common_assets._imports_0,
+ e: common_vendor.t(orderCount.value),
+ f: common_vendor.o(($event) => navigateTo("/pages/order/list")),
+ g: common_assets._imports_1,
+ h: common_vendor.o(($event) => navigateTo("/pages/address/index")),
+ i: common_assets._imports_2,
+ j: common_vendor.o(($event) => showQrCode.value = true),
+ k: common_assets._imports_3,
+ l: common_vendor.o(($event) => showAbout.value = true),
+ m: common_assets._imports_4,
+ n: common_vendor.o(($event) => showAgreement("user")),
+ o: common_assets._imports_5,
+ p: common_vendor.o(($event) => showAgreement("privacy")),
+ q: showQrCode.value
}, showQrCode.value ? {
- j: common_vendor.o(($event) => showQrCode.value = false),
- k: common_vendor.p({
+ r: common_vendor.o(($event) => showQrCode.value = false),
+ s: common_vendor.p({
mode: "qrcode"
})
} : {}, {
- l: showAbout.value
+ t: showAbout.value
}, showAbout.value ? {
- m: common_vendor.o(($event) => showAbout.value = false),
- n: common_vendor.o(() => {
+ v: common_vendor.o(($event) => showAbout.value = false),
+ w: common_vendor.o(() => {
}),
- o: common_vendor.o(($event) => showAbout.value = false)
+ x: common_vendor.o(($event) => showAbout.value = false)
} : {});
};
}
diff --git a/miniprogram/unpackage/dist/dev/mp-weixin/pages/mine/index.wxml b/miniprogram/unpackage/dist/dev/mp-weixin/pages/mine/index.wxml
index d5390f2c..f0efcc34 100644
--- a/miniprogram/unpackage/dist/dev/mp-weixin/pages/mine/index.wxml
+++ b/miniprogram/unpackage/dist/dev/mp-weixin/pages/mine/index.wxml
@@ -1 +1 @@
-{{b}}
\ No newline at end of file
+{{b}}›我的订单 {{e}}›
\ No newline at end of file
diff --git a/miniprogram/unpackage/dist/dev/mp-weixin/pages/mine/index.wxss b/miniprogram/unpackage/dist/dev/mp-weixin/pages/mine/index.wxss
index 5106c39a..ef661267 100644
--- a/miniprogram/unpackage/dist/dev/mp-weixin/pages/mine/index.wxss
+++ b/miniprogram/unpackage/dist/dev/mp-weixin/pages/mine/index.wxss
@@ -2,43 +2,87 @@
.mine-page.data-v-569e925a {
min-height: 100vh;
background: #f5f5f5;
+ padding-top: 20rpx;
}
+
+/* 用户卡片 */
.user-card.data-v-569e925a {
display: flex;
align-items: center;
- background: #e4393c;
- padding: 60rpx 32rpx 40rpx;
+ background: #fff;
+ margin: 0 24rpx;
+ padding: 32rpx;
+ border-radius: 16rpx;
}
.user-card__avatar.data-v-569e925a {
- width: 120rpx;
- height: 120rpx;
+ width: 96rpx;
+ height: 96rpx;
border-radius: 50%;
- border: 4rpx solid rgba(255, 255, 255, 0.5);
- background: #fff;
+ background: #f0f0f0;
+ flex-shrink: 0;
}
.user-card__info.data-v-569e925a {
+ flex: 1;
margin-left: 24rpx;
}
.user-card__name.data-v-569e925a {
- font-size: 34rpx;
- color: #fff;
+ font-size: 32rpx;
+ color: #333;
font-weight: bold;
}
+.user-card__arrow.data-v-569e925a {
+ font-size: 36rpx;
+ color: #ccc;
+}
+
+/* 我的订单入口 */
+.order-entry.data-v-569e925a {
+ display: flex;
+ align-items: center;
+ margin: 20rpx 24rpx 0;
+ padding: 24rpx 32rpx;
+ background: linear-gradient(135deg, #fce4ec, #f8bbd0);
+ border-radius: 16rpx;
+}
+.order-entry__icon.data-v-569e925a {
+ width: 40rpx;
+ height: 40rpx;
+ margin-right: 16rpx;
+}
+.order-entry__text.data-v-569e925a {
+ flex: 1;
+ font-size: 28rpx;
+ color: #333;
+ font-weight: bold;
+}
+.order-entry__arrow.data-v-569e925a {
+ font-size: 32rpx;
+ color: #999;
+}
+
+/* 功能菜单 */
.menu-group.data-v-569e925a {
background: #fff;
- margin-top: 16rpx;
+ margin: 20rpx 24rpx 0;
+ border-radius: 16rpx;
+ overflow: hidden;
}
.menu-item.data-v-569e925a {
display: flex;
- justify-content: space-between;
align-items: center;
- padding: 28rpx 32rpx;
- border-bottom: 1rpx solid #f0f0f0;
+ padding: 30rpx 32rpx;
+ border-bottom: 1rpx solid #f5f5f5;
}
.menu-item.data-v-569e925a:last-child {
border-bottom: none;
}
+.menu-item__icon.data-v-569e925a {
+ width: 40rpx;
+ height: 40rpx;
+ margin-right: 20rpx;
+}
.menu-item__label.data-v-569e925a {
+ flex: 1;
font-size: 28rpx;
color: #333;
}
@@ -46,6 +90,8 @@
font-size: 32rpx;
color: #ccc;
}
+
+/* 弹窗 */
.modal-mask.data-v-569e925a {
position: fixed;
top: 0;
diff --git a/miniprogram/unpackage/dist/dev/mp-weixin/project.config.json b/miniprogram/unpackage/dist/dev/mp-weixin/project.config.json
index 3398aad3..eac7e035 100644
--- a/miniprogram/unpackage/dist/dev/mp-weixin/project.config.json
+++ b/miniprogram/unpackage/dist/dev/mp-weixin/project.config.json
@@ -9,12 +9,11 @@
"postcss": false,
"minified": true,
"newFeature": true,
- "bigPackageSizeSupport": true,
- "minifyWXML": true
+ "bigPackageSizeSupport": true
},
"compileType": "miniprogram",
"libVersion": "",
- "appid": "touristappid",
+ "appid": "wx58b02b73d9c26c10",
"projectname": "miniprogram",
"condition": {
"search": {
diff --git a/miniprogram/unpackage/dist/dev/mp-weixin/project.private.config.json b/miniprogram/unpackage/dist/dev/mp-weixin/project.private.config.json
new file mode 100644
index 00000000..b32aafab
--- /dev/null
+++ b/miniprogram/unpackage/dist/dev/mp-weixin/project.private.config.json
@@ -0,0 +1,5 @@
+{
+ "setting": {
+ "urlCheck": false
+ }
+}
\ No newline at end of file
diff --git a/miniprogram/unpackage/dist/dev/mp-weixin/static/ic_about.png b/miniprogram/unpackage/dist/dev/mp-weixin/static/ic_about.png
new file mode 100644
index 00000000..b5330e9c
Binary files /dev/null and b/miniprogram/unpackage/dist/dev/mp-weixin/static/ic_about.png differ
diff --git a/miniprogram/unpackage/dist/dev/mp-weixin/static/ic_address.png b/miniprogram/unpackage/dist/dev/mp-weixin/static/ic_address.png
new file mode 100644
index 00000000..6f053070
Binary files /dev/null and b/miniprogram/unpackage/dist/dev/mp-weixin/static/ic_address.png differ
diff --git a/miniprogram/unpackage/dist/dev/mp-weixin/static/ic_agreement1.png b/miniprogram/unpackage/dist/dev/mp-weixin/static/ic_agreement1.png
new file mode 100644
index 00000000..5987085d
Binary files /dev/null and b/miniprogram/unpackage/dist/dev/mp-weixin/static/ic_agreement1.png differ
diff --git a/miniprogram/unpackage/dist/dev/mp-weixin/static/ic_agreement2.png b/miniprogram/unpackage/dist/dev/mp-weixin/static/ic_agreement2.png
new file mode 100644
index 00000000..045086c7
Binary files /dev/null and b/miniprogram/unpackage/dist/dev/mp-weixin/static/ic_agreement2.png differ
diff --git a/miniprogram/unpackage/dist/dev/mp-weixin/static/ic_customer.png b/miniprogram/unpackage/dist/dev/mp-weixin/static/ic_customer.png
new file mode 100644
index 00000000..5ed80093
Binary files /dev/null and b/miniprogram/unpackage/dist/dev/mp-weixin/static/ic_customer.png differ
diff --git a/server/src/controllers/auth.ts b/server/src/controllers/auth.ts
index d384e100..d318e305 100644
--- a/server/src/controllers/auth.ts
+++ b/server/src/controllers/auth.ts
@@ -25,9 +25,10 @@ export async function wxLogin(req: Request, res: Response): Promise {
},
})
- const { openid } = wxRes.data
+ const { openid, errcode, errmsg } = wxRes.data
if (!openid) {
- res.status(400).json({ code: 400, message: '微信登录失败,请重试' })
+ console.error('WeChat jscode2session failed:', { errcode, errmsg })
+ res.status(400).json({ code: 400, message: errmsg || '微信登录失败,请重试' })
return
}