diff --git a/src/components/geek-xd/components/geek-qrcode/README.md b/src/components/geek-xd/components/geek-qrcode/README.md
index 4a2ce84..91da4f9 100644
--- a/src/components/geek-xd/components/geek-qrcode/README.md
+++ b/src/components/geek-xd/components/geek-qrcode/README.md
@@ -1,90 +1,78 @@
-# uni-app 二维码生成器
-
-改自作者诗小柒的tki-qrcode二维码生成器
-
-### 作者:董玉可
-
-1. H5、微信小程序、支付宝小程序、APP,其它平台的小程序没有测试
-2. 使用canvas生成
-3. 可设置二维码背景色,前景色,角标色
-4. 可设置二维码logo
-
-## 重要的事情说3遍 重要的事情说3遍 重要的事情说3遍
-
-1. IOS、Android真机都可以正常生成二维码
-2. 使用的时候出现无法生成二维码或空白的请先github直接打包下载,问题依旧,请github上直接提出问题并配图
-3. 有问题请说明问题原因,这样我才好定位,否则我也无法解决
-4. 如果此插件有帮助到你请打5分或赞赏我,你的支持是我更新的动力
-
-+ 图片1 是微信小程序真机实测
-+ 图片2 是微信小程序模拟实测
-+ 图片3 是支付宝小程序模拟器实测
-+ 图片4 是安卓真机实测
-+ 图片5 H5
-
-### 使用方法
-
-在 `template` 中使用
-
-```javascript
-
-
-
-```
-
-### 属性
-
-| 属性名 | 类型 | 默认值 | 可选值 | 说明 |
-| :-------------- | :-----: | :---------------: | :----: | :-------------------------------------------------------------------------------------------------- |
-| cid | String | tki-qrcode-canvas | | canvasId,页面存在多个二维码组件时需设置不同的ID |
-| size | Number | 200 | | 生成的二维码大小 |
-| unit | String | upx | px | 大小单位尺寸 |
-| show | Boolean | true | | 默认使用组件中的image标签显示二维码 |
-| val | String | 二维码 | | 要生成的内容 |
-| background | String | #000000 | | 二维码背景色 |
-| foreground | String | #ffffff | | 二维码前景色 |
-| pdground | String | #ffffff | | 二维码角标色 |
-| icon | String | | | 二维码图标URL(必须是本地图片,网络图需要先下载至本地) |
-| iconSize | Number | 40 | | 二维码图标大小(注意此大小不会跟随二维码size 动态变化,设置时需要注意大小,不要太大,以免无法识别) |
-| lv | Number | 3 | | 容错级别(一般不用设置) |
-| onval | Boolean | false | | 监听val值变化自动重新生成二维码 |
-| loadMake | Boolean | false | | 组件初始化完成后自动生成二维码,val需要有值 |
-| usingComponents | Boolean | true | false | 是否使用了自定义组件模式(主要是为了修复非自定义组件模式时 v-if 无法生成二维码的问题) |
-| showLoading | Boolean | true | false | 是否显示loading |
-| loadingText | String | 二维码生成中 | | loading文字 |
-
-### 方法
-
-| 方法名 | 参数 | 默认值 | 说明 |
-| :----------- | :--: | :----: | :-------------------------------------------------- |
-| _makeCode() | | | 生成二维码 |
-| _clearCode() | | | 清空二维码(清空二维码会触发result回调 返回值为空) |
-| _saveCode() | | | 保存二维码到图库 |
-
-### 事件
-
-| 事件名 | 返回值 | 说明 |
-| :----- | :----------------------------: | --------------------------------------: |
-| result | 生成的图片base64或图片临时地址 | 返回二维码路径 注:_clearCode()后返回空 |
-
-### 感谢
-
-[uni-app](https://uniapp.dcloud.io/ "uni-app")
-[qrcode](https://github.com/aralejs/qrcode "qrcode")
+# uni-app 二维码生成器
+
+改自作者诗小柒的tki-qrcode二维码生成器
+
+### 作者:Dftre
+
+1. H5、微信小程序、支付宝小程序、APP,其它平台的小程序没有测试
+2. 使用canvas生成
+3. 可设置二维码背景色,前景色,角标色
+4. 可设置二维码logo
+
+### 使用方法
+
+在 `template` 中使用
+
+```javascript
+
+
+
+```
+
+### 属性
+
+| 属性名 | 类型 | 默认值 | 可选值 | 说明 |
+| :-------------- | :-----: | :---------------: | :----: | :-------------------------------------------------------------------------------------------------- |
+| cid | String | tki-qrcode-canvas | | canvasId,页面存在多个二维码组件时需设置不同的ID |
+| size | Number | 200 | | 生成的二维码大小 |
+| unit | String | upx | px | 大小单位尺寸 |
+| show | Boolean | true | | 默认使用组件中的image标签显示二维码 |
+| val | String | 二维码 | | 要生成的内容 |
+| background | String | #000000 | | 二维码背景色 |
+| foreground | String | #ffffff | | 二维码前景色 |
+| pdground | String | #ffffff | | 二维码角标色 |
+| icon | String | | | 二维码图标URL(必须是本地图片,网络图需要先下载至本地) |
+| iconSize | Number | 40 | | 二维码图标大小(注意此大小不会跟随二维码size 动态变化,设置时需要注意大小,不要太大,以免无法识别) |
+| lv | Number | 3 | | 容错级别(一般不用设置) |
+| onval | Boolean | false | | 监听val值变化自动重新生成二维码 |
+| loadMake | Boolean | false | | 组件初始化完成后自动生成二维码,val需要有值 |
+| usingComponents | Boolean | true | false | 是否使用了自定义组件模式(主要是为了修复非自定义组件模式时 v-if 无法生成二维码的问题) |
+| showLoading | Boolean | true | false | 是否显示loading |
+| loadingText | String | 二维码生成中 | | loading文字 |
+
+### 方法
+
+| 方法名 | 参数 | 默认值 | 说明 |
+| :----------- | :--: | :----: | :-------------------------------------------------- |
+| _makeCode() | | | 生成二维码 |
+| _clearCode() | | | 清空二维码(清空二维码会触发result回调 返回值为空) |
+| _saveCode() | | | 保存二维码到图库 |
+
+### 事件
+
+| 事件名 | 返回值 | 说明 |
+| :----- | :----------------------------: | --------------------------------------: |
+| result | 生成的图片base64或图片临时地址 | 返回二维码路径 注:_clearCode()后返回空 |
+
+### 感谢
+
+[uni-app](https://uniapp.dcloud.io/ "uni-app")
+[qrcode](https://github.com/aralejs/qrcode "qrcode")
+tki-qrcode
diff --git a/src/components/geek-xd/components/geek-qrcode/geek-qrcode.vue b/src/components/geek-xd/components/geek-qrcode/geek-qrcode.vue
index 3fdfe05..d21eca0 100644
--- a/src/components/geek-xd/components/geek-qrcode/geek-qrcode.vue
+++ b/src/components/geek-xd/components/geek-qrcode/geek-qrcode.vue
@@ -1,205 +1,205 @@
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
diff --git a/src/pages/index.vue b/src/pages/index.vue
index 2b5d2ab..4db994b 100644
--- a/src/pages/index.vue
+++ b/src/pages/index.vue
@@ -1,75 +1,73 @@
-
-
-
-
- RuoYi-Geek-App
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+ RuoYi-Geek-App
+
+
+
+
+
+
+
+
+
+
diff --git a/src/pages/login.vue b/src/pages/login.vue
index 620bdaa..ef93b31 100644
--- a/src/pages/login.vue
+++ b/src/pages/login.vue
@@ -1,208 +1,206 @@
-
-
-
-
-
- 若依移动端登录
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 登录即代表同意
- 《用户协议》
- 《隐私协议》
-
-
-
-
-
-
-
+
+
+
+
+
+
+ 若依移动端登录
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 登录即代表同意
+ 《用户协议》
+ 《隐私协议》
+
+
+
+
diff --git a/src/pages/mine.vue b/src/pages/mine.vue
index a483660..99bce9e 100644
--- a/src/pages/mine.vue
+++ b/src/pages/mine.vue
@@ -1,97 +1,8 @@
-
-
-
-
-
-
-
-
-
- 交流群
-
-
-
- 在线客服
-
-
-
- 反馈社区
-
-
-
- 点赞我们
-
-
-
-
-
-
-
-
-
-
+
+
+
+
-
-
-
-
\ No newline at end of file
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/pages/work.vue b/src/pages/work.vue
index cc065f0..3e5e227 100644
--- a/src/pages/work.vue
+++ b/src/pages/work.vue
@@ -1,184 +1,179 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 用户管理
-
-
-
-
-
- 角色管理
-
-
-
-
-
- 菜单管理
-
-
-
-
-
- 部门管理
-
-
-
-
-
- 岗位管理
-
-
-
-
-
- 字典管理
-
-
-
-
-
- 参数设置
-
-
-
-
-
- 通知公告
-
-
-
-
-
- 日志管理
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 用户管理
+
+
+
+
+
+ 角色管理
+
+
+
+
+
+ 菜单管理
+
+
+
+
+
+ 部门管理
+
+
+
+
+
+ 岗位管理
+
+
+
+
+
+ 字典管理
+
+
+
+
+
+ 参数设置
+
+
+
+
+
+ 通知公告
+
+
+
+
+
+ 日志管理
+
+
+
+
+
+
+
+
+
+
diff --git a/src/pages_template/pages/coupon/components/jingdong-coupon.vue b/src/pages_template/pages/coupon/components/jingdong-coupon.vue
new file mode 100644
index 0000000..1c5e41d
--- /dev/null
+++ b/src/pages_template/pages/coupon/components/jingdong-coupon.vue
@@ -0,0 +1,136 @@
+
+
+
+
+ ¥
+ 100
+
+ 满149元可用
+
+
+
+
+ 限品类东券
+ 仅可购买个人护理部分商品
+
+
+ 2020.01.01-2020.01.31
+ 立即使用
+
+
+
+
+
+ 可赠送
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/pages_template/pages/coupon/components/meituan-coupon.vue b/src/pages_template/pages/coupon/components/meituan-coupon.vue
new file mode 100644
index 0000000..0e0f3c2
--- /dev/null
+++ b/src/pages_template/pages/coupon/components/meituan-coupon.vue
@@ -0,0 +1,127 @@
+
+
+
+
+
+ ¥8
+
+ 抵用券
+
+
+ 【洗牙】8元无门槛红包
+ 今日到期
+
+
+ 立即使用
+
+
+
+
+
+ 满8.1元可用、限最新版本客户端使用
+
+ 使用规则
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/pages_template/pages/coupon/components/taobao-coupon.vue b/src/pages_template/pages/coupon/components/taobao-coupon.vue
new file mode 100644
index 0000000..25154b4
--- /dev/null
+++ b/src/pages_template/pages/coupon/components/taobao-coupon.vue
@@ -0,0 +1,140 @@
+
+
+
+
+
+
+ 袜子精保护协会
+
+ 进店
+
+
+
+
+
+
+ ¥
+ 3
+ 满88减3
+
+ 店铺优惠券
+ 2019.11.28-2020.1.24
+
+
+
+ 去使用
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/pages_template/pages/coupon/index.vue b/src/pages_template/pages/coupon/index.vue
index 5807c62..9b5dd16 100644
--- a/src/pages_template/pages/coupon/index.vue
+++ b/src/pages_template/pages/coupon/index.vue
@@ -1,413 +1,23 @@
-
-
-
-
-
-
-
- ¥
- 8
-
- 抵用券
-
-
- 【洗牙】8元无门槛红包
- 今日到期
-
-
- 立即使用
-
-
-
-
-
- 满8.1元可用、限最新版本客户端使用
-
- 使用规则
-
-
-
-
-
-
-
- ¥
- 100
-
- 满149元可用
-
-
-
-
- 限品类东券
- 仅可购买个人护理部分商品
-
-
- 2020.01.01-2020.01.31
- 立即使用
-
-
-
-
-
- 可赠送
-
-
-
-
-
-
-
-
- 袜子精保护协会
-
- 进店
-
-
-
-
-
-
- ¥
- 3
- 满88减3
-
- 店铺优惠券
- 2019.11.28-2020.1.24
-
-
-
- 去使用
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
diff --git a/src/pages_template/pages/keyboardPay/index.vue b/src/pages_template/pages/keyboardPay/index.vue
index 1637ec6..c928adb 100644
--- a/src/pages_template/pages/keyboardPay/index.vue
+++ b/src/pages_template/pages/keyboardPay/index.vue
@@ -1,106 +1,99 @@
-
-
-
-
-
-
- 发送1.00元红包
-
-
-
-
-
- 1.00
- 元
-
-
-
-
-
-
-
- 支付键盘
-
-
-
-
-
-
\ No newline at end of file
diff --git a/src/static/scss/global.scss b/src/static/scss/global.scss
index ac636bd..2de8476 100644
--- a/src/static/scss/global.scss
+++ b/src/static/scss/global.scss
@@ -1,90 +1,89 @@
-.text-center {
- text-align: center;
-}
-
-.font-13 {
- font-size: 13px;
-}
-
-.font-12 {
- font-size: 12px;
-}
-
-.font-11 {
- font-size: 11px;
-}
-
-.text-grey1 {
- color: #888;
-}
-.text-grey2 {
- color: #aaa;
-}
-
-.list-cell-arrow::before {
- content: ' ';
- height: 10px;
- width: 10px;
- border-width: 2px 2px 0 0;
- border-color: #c0c0c0;
- border-style: solid;
- -webkit-transform: matrix(0.5, 0.5, -0.5, 0.5, 0, 0);
- transform: matrix(0.5, 0.5, -0.5, 0.5, 0, 0);
- position: absolute;
- top: 50%;
- margin-top: -6px;
- right: 30rpx;
- }
-
- .list-cell {
- position: relative;
- width: 100%;
- box-sizing: border-box;
- background-color: #fff;
- color: #333;
- padding: 26rpx 30rpx;
- }
-
- .list-cell:first-child {
- border-radius: 8rpx 8rpx 0 0;
- }
-
- .list-cell:last-child {
- border-radius: 0 0 8rpx 8rpx;
- }
-
- .list-cell::after {
- content: '';
- position: absolute;
- border-bottom: 1px solid #eaeef1;
- -webkit-transform: scaleY(0.5) translateZ(0);
- transform: scaleY(0.5) translateZ(0);
- transform-origin: 0 100%;
- bottom: 0;
- right: 0;
- left: 0;
- pointer-events: none;
- }
-
-
- .menu-list {
- margin: 15px 15px;
-
- .menu-item-box {
- width: 100%;
- display: flex;
- align-items: center;
-
- .menu-icon {
- color: #007AFF;
- font-size: 16px;
- margin-right: 5px;
- }
-
- .text-right {
- margin-left: auto;
- margin-right: 34rpx;
- color: #999;
- }
- }
- }
+.text-center {
+ text-align: center;
+}
+
+.font-13 {
+ font-size: 13px;
+}
+
+.font-12 {
+ font-size: 12px;
+}
+
+.font-11 {
+ font-size: 11px;
+}
+
+.text-grey1 {
+ color: #888;
+}
+.text-grey2 {
+ color: #aaa;
+}
+
+.list-cell-arrow::before {
+ content: " ";
+ height: 10px;
+ width: 10px;
+ border-width: 2px 2px 0 0;
+ border-color: #c0c0c0;
+ border-style: solid;
+ -webkit-transform: matrix(0.5, 0.5, -0.5, 0.5, 0, 0);
+ transform: matrix(0.5, 0.5, -0.5, 0.5, 0, 0);
+ position: absolute;
+ top: 50%;
+ margin-top: -6px;
+ right: 30rpx;
+}
+
+.list-cell {
+ position: relative;
+ width: 100%;
+ box-sizing: border-box;
+ background-color: #fff;
+ color: #333;
+ padding: 26rpx 30rpx;
+}
+
+.list-cell:first-child {
+ border-radius: 8rpx 8rpx 0 0;
+}
+
+.list-cell:last-child {
+ border-radius: 0 0 8rpx 8rpx;
+}
+
+.list-cell::after {
+ content: "";
+ position: absolute;
+ border-bottom: 1px solid #eaeef1;
+ -webkit-transform: scaleY(0.5) translateZ(0);
+ transform: scaleY(0.5) translateZ(0);
+ transform-origin: 0 100%;
+ bottom: 0;
+ right: 0;
+ left: 0;
+ pointer-events: none;
+}
+
+.menu-list {
+ margin: 15px 15px;
+
+ .menu-item-box {
+ width: 100%;
+ display: flex;
+ align-items: center;
+
+ .menu-icon {
+ color: #007aff;
+ font-size: 16px;
+ margin-right: 5px;
+ }
+
+ .text-right {
+ margin-left: auto;
+ margin-right: 34rpx;
+ color: #999;
+ }
+ }
+}
diff --git a/src/store/modules/user.ts b/src/store/modules/user.ts
index b63c5f5..fba8ff5 100644
--- a/src/store/modules/user.ts
+++ b/src/store/modules/user.ts
@@ -1,88 +1,88 @@
-import { login, logout, getInfo } from "@/api/login";
-import { getToken, setToken, removeToken } from "@/utils/auth";
-import defAva from "@/static/images/profile.jpg";
-import { defineStore } from "pinia";
-
-export interface LoginForm {
- username: string;
- password: string;
- code: string;
- uuid: string;
-}
-
-const useUserStore = defineStore("user", {
- state: () => ({
- token: getToken(),
- name: "",
- avatar: "",
- roles: Array(),
- permissions: [],
- }),
- actions: {
- // 登录
- login(userInfo: LoginForm) {
- const username = userInfo.username.trim();
- const password = userInfo.password;
- const code = userInfo.code;
- const uuid = userInfo.uuid;
- return new Promise((resolve, reject) => {
- login(username, password, code, uuid)
- .then((res: any) => {
- setToken(res.token);
- this.token = res.token;
- resolve(null);
- })
- .catch((error) => {
- reject(error);
- });
- });
- },
- // 获取用户信息
- getInfo() {
- return new Promise((resolve, reject) => {
- getInfo()
- .then((res: any) => {
- const user = res.user;
- const avatar =
- user.avatar == "" || user.avatar == null
- ? defAva
- : import.meta.env.VITE_APP_BASE_API + user.avatar;
-
- if (res.roles && res.roles.length > 0) {
- // 验证返回的roles是否是一个非空数组
- this.roles = res.roles;
- this.permissions = res.permissions;
- } else {
- this.roles = ["ROLE_DEFAULT"];
- }
- this.name = user.userName;
- this.avatar = avatar;
- resolve(res);
- })
- .catch((error) => {
- reject(error);
- });
- });
- },
- // 退出系统
- logOut() {
- return new Promise((resolve, reject) => {
- logout()
- .then(() => {
- this.token = "";
- this.roles = [];
- this.permissions = [];
- this.name = "";
- this.avatar = "";
- removeToken();
- resolve(null);
- })
- .catch((error) => {
- reject(error);
- });
- });
- },
- },
-});
-
-export default useUserStore;
+import { login, logout, getInfo } from "@/api/login";
+import { getToken, setToken, removeToken } from "@/utils/auth";
+import defAva from "@/static/images/profile.jpg";
+import { defineStore } from "pinia";
+
+export interface LoginForm {
+ username: string;
+ password: string;
+ code: string;
+ uuid: string;
+}
+
+const useUserStore = defineStore("user", {
+ state: () => ({
+ token: getToken(),
+ name: "",
+ avatar: "",
+ roles: Array(),
+ permissions: [],
+ }),
+ actions: {
+ // 登录
+ login(userInfo: LoginForm) {
+ const username = userInfo.username.trim();
+ const password = userInfo.password;
+ const code = userInfo.code;
+ const uuid = userInfo.uuid;
+ return new Promise((resolve, reject) => {
+ login(username, password, code, uuid)
+ .then((res: any) => {
+ setToken(res.token);
+ this.token = res.token;
+ resolve(null);
+ })
+ .catch((error) => {
+ reject(error);
+ });
+ });
+ },
+ // 获取用户信息
+ getInfo() {
+ return new Promise((resolve, reject) => {
+ getInfo()
+ .then((res: any) => {
+ const user = res.user;
+ const avatar =
+ user.avatar == "" || user.avatar == null
+ ? defAva
+ : user.avatar;
+
+ if (res.roles && res.roles.length > 0) {
+ // 验证返回的roles是否是一个非空数组
+ this.roles = res.roles;
+ this.permissions = res.permissions;
+ } else {
+ this.roles = ["ROLE_DEFAULT"];
+ }
+ this.name = user.userName;
+ this.avatar = avatar;
+ resolve(res);
+ })
+ .catch((error) => {
+ reject(error);
+ });
+ });
+ },
+ // 退出系统
+ logOut() {
+ return new Promise((resolve, reject) => {
+ logout()
+ .then(() => {
+ this.token = "";
+ this.roles = [];
+ this.permissions = [];
+ this.name = "";
+ this.avatar = "";
+ removeToken();
+ resolve(null);
+ })
+ .catch((error) => {
+ reject(error);
+ });
+ });
+ },
+ },
+});
+
+export default useUserStore;