@@ -32,16 +35,65 @@ const linkList = ref([
{
path: '/pages/index/index',
name: '商城首页',
- type: LinkTypeEnum.SHOP_PAGES
+ type: LinkTypeEnum.SHOP_PAGES,
+ isTab: true
},
{
path: '/pages/news/news',
name: '文章资讯',
- type: LinkTypeEnum.SHOP_PAGES
+ type: LinkTypeEnum.SHOP_PAGES,
+ isTab: true
},
{
path: '/pages/user/user',
name: '个人中心',
+ type: LinkTypeEnum.SHOP_PAGES,
+ isTab: true
+ },
+ {
+ path: '/pages/collection/collection',
+ name: '我的收藏',
+ type: LinkTypeEnum.SHOP_PAGES
+ },
+ {
+ path: '/pages/customer_service/customer_service',
+ name: '联系客服',
+ type: LinkTypeEnum.SHOP_PAGES
+ },
+ {
+ path: '/pages/user_set/user_set',
+ name: '个人设置',
+ type: LinkTypeEnum.SHOP_PAGES
+ },
+ {
+ path: '/pages/as_us/as_us',
+ name: '关于我们',
+ type: LinkTypeEnum.SHOP_PAGES
+ },
+ {
+ path: '/pages/user_data/user_data',
+ name: '个人资料',
+ type: LinkTypeEnum.SHOP_PAGES
+ },
+ {
+ path: '/pages/agreement/agreement',
+ name: '隐私政策',
+ query: {
+ type: 'privacy'
+ },
+ type: LinkTypeEnum.SHOP_PAGES
+ },
+ {
+ path: '/pages/agreement/agreement',
+ name: '服务协议',
+ query: {
+ type: 'service'
+ },
+ type: LinkTypeEnum.SHOP_PAGES
+ },
+ {
+ path: '/pages/search/search',
+ name: '搜索',
type: LinkTypeEnum.SHOP_PAGES
}
])
diff --git a/admin/src/utils/util.ts b/admin/src/utils/util.ts
index 119b60bc..d553beb3 100644
--- a/admin/src/utils/util.ts
+++ b/admin/src/utils/util.ts
@@ -16,7 +16,7 @@ export const addUnit = (value: string | number, unit = 'px') => {
* @return {Boolean}
*/
export const isEmpty = (value: unknown) => {
- return value !== null && value !== '' && typeof value !== 'undefined'
+ return value == null && typeof value == 'undefined'
}
/**
diff --git a/app/src/api/news.ts b/app/src/api/news.ts
index c26c5a86..cddb8364 100644
--- a/app/src/api/news.ts
+++ b/app/src/api/news.ts
@@ -2,7 +2,7 @@ import request from '@/utils/request'
/**
* @description 获取文章分类
- * @return { Promise }
+ * @return { Promise }
*/
export function getArticleCate() {
return request.get({ url: '/article/category' })
@@ -10,7 +10,7 @@ export function getArticleCate() {
/**
* @description 获取文章列表
- * @return { Promise }
+ * @return { Promise }
*/
export function getArticleList(data: Record
) {
return request.get({ url: '/article/list', data: data })
@@ -18,8 +18,8 @@ export function getArticleList(data: Record) {
/**
* @description 获取文章详情
- * @param { number } id
- * @return { Promise }
+ * @param { number } id
+ * @return { Promise }
*/
export function getArticleDetail(data: { id: number }) {
return request.get({ url: '/article/detail', data: data })
@@ -27,25 +27,25 @@ export function getArticleDetail(data: { id: number }) {
/**
* @description 加入收藏
- * @param { number } articleId
- * @return { Promise }
+ * @param { number } articleId
+ * @return { Promise }
*/
export function addCollect(data: { articleId: number }) {
- return request.post({ url: '/article/addCollect', data: data })
+ return request.post({ url: '/article/addCollect', data: data }, { isAuth: true })
}
/**
* @description 取消收藏
- * @param { number } id
- * @return { Promise }
+ * @param { number } id
+ * @return { Promise }
*/
export function cancelCollect(data: { articleId: number }) {
- return request.post({ url: '/article/cancelCollect', data: data })
+ return request.post({ url: '/article/cancelCollect', data: data }, { isAuth: true })
}
/**
* @description 获取收藏列表
- * @return { Promise }
+ * @return { Promise }
*/
export function getCollect() {
return request.get({ url: '/article/collect' })
diff --git a/app/src/components/widgets/banner/banner.vue b/app/src/components/widgets/banner/banner.vue
index 4cb00c18..0a27a787 100644
--- a/app/src/components/widgets/banner/banner.vue
+++ b/app/src/components/widgets/banner/banner.vue
@@ -9,7 +9,11 @@
indicator-active-color="#4173ff"
:autoplay="true"
>
-
+
import { useAppStore } from '@/stores/app'
+import { navigateTo } from '@/utils/util'
const props = defineProps({
content: {
@@ -35,6 +40,9 @@ const props = defineProps({
}
})
const { getImageUrl } = useAppStore()
+const handleClick = (link: any) => {
+ navigateTo(link)
+}
diff --git a/app/src/components/widgets/my-service/my-service.vue b/app/src/components/widgets/my-service/my-service.vue
index 28dec2cc..9e4f583b 100644
--- a/app/src/components/widgets/my-service/my-service.vue
+++ b/app/src/components/widgets/my-service/my-service.vue
@@ -11,6 +11,7 @@
v-for="(item, index) in content.data"
:key="index"
class="flex flex-col items-center w-1/4 mb-[15px]"
+ @click="handleClick(item.link)"
>
{{ item.name }}
@@ -21,6 +22,7 @@
v-for="(item, index) in content.data"
:key="index"
class="flex items-center border-light border-solid border-0 border-b h-[100rpx] px-[24rpx]"
+ @click="handleClick(item.link)"
>
{{ item.name }}
@@ -33,6 +35,7 @@
diff --git a/app/src/components/widgets/nav/nav.vue b/app/src/components/widgets/nav/nav.vue
index f8d596a2..b348f22c 100644
--- a/app/src/components/widgets/nav/nav.vue
+++ b/app/src/components/widgets/nav/nav.vue
@@ -5,6 +5,7 @@
v-for="(item, index) in content.data"
:key="index"
class="flex flex-col items-center w-1/5 mb-[30rpx]"
+ @click="handleClick(item.link)"
>
{{ item.name }}
@@ -15,6 +16,7 @@
diff --git a/app/src/components/widgets/user-banner/user-banner.vue b/app/src/components/widgets/user-banner/user-banner.vue
index 95647f8a..aac52319 100644
--- a/app/src/components/widgets/user-banner/user-banner.vue
+++ b/app/src/components/widgets/user-banner/user-banner.vue
@@ -9,7 +9,11 @@
indicator-active-color="#4173ff"
:autoplay="true"
>
-
+
import { useAppStore } from '@/stores/app'
+import { navigateTo } from '@/utils/util'
const props = defineProps({
content: {
@@ -35,6 +40,9 @@ const props = defineProps({
default: () => ({})
}
})
+const handleClick = (link: any) => {
+ navigateTo(link)
+}
const { getImageUrl } = useAppStore()
diff --git a/app/src/components/widgets/user-info/user-info.vue b/app/src/components/widgets/user-info/user-info.vue
index 0813bf65..40319566 100644
--- a/app/src/components/widgets/user-info/user-info.vue
+++ b/app/src/components/widgets/user-info/user-info.vue
@@ -1,10 +1,10 @@
-
+
{{ user.nickname }}
@@ -13,6 +13,9 @@
未登录
+
+
+
+
+
diff --git a/app/src/router/index.ts b/app/src/router/index.ts
index 45a26e36..47114414 100644
--- a/app/src/router/index.ts
+++ b/app/src/router/index.ts
@@ -1,31 +1,27 @@
import { getToken } from '@/utils/auth'
import { generateRoutes } from './transformPages'
-const routes = generateRoutes()
-
-export default async function () {
- const list = ['navigateTo', 'redirectTo', 'reLaunch', 'switchTab']
- list.forEach((item) => {
- uni.addInterceptor(item, {
- invoke(e) {
- // 获取要跳转的页面路径(url去掉"?"和"?"后的参数)
- const url = e.url.split('?')[0]
- const currentRoute = routes.find((item) => {
- return url === item.path
+export const routes = generateRoutes()
+const list = ['navigateTo', 'redirectTo', 'reLaunch', 'switchTab']
+list.forEach((item) => {
+ uni.addInterceptor(item, {
+ invoke(e) {
+ // 获取要跳转的页面路径(url去掉"?"和"?"后的参数)
+ const url = e.url.split('?')[0]
+ const currentRoute = routes.find((item) => {
+ return url === item.path
+ })
+ // 需要登录并且没有token
+ if (currentRoute?.auth && !getToken()) {
+ uni.navigateTo({
+ url: '/pages/login/login'
})
-
- // 需要登录并且没有token
- if (currentRoute?.isAuth && !getToken()) {
- uni.navigateTo({
- url: '/pages/login/login'
- })
- return false
- }
- return e
- },
- fail(err) {
- // 失败回调拦截
- console.log(err)
+ return false
}
- })
+ return e
+ },
+ fail(err) {
+ // 失败回调拦截
+ console.log(err)
+ }
})
-}
+})
diff --git a/app/src/utils/request/index.ts b/app/src/utils/request/index.ts
index 1dc211e3..e0b9a8cf 100644
--- a/app/src/utils/request/index.ts
+++ b/app/src/utils/request/index.ts
@@ -23,7 +23,7 @@ const requestHooks: RequestHooks = {
return options
},
responseInterceptorsHook(response, config) {
- const { isTransformResponse, isReturnDefaultResponse } = config
+ const { isTransformResponse, isReturnDefaultResponse, isAuth } = config
//返回默认响应,当需要获取响应头及其他数据时可使用
if (isReturnDefaultResponse) {
@@ -54,6 +54,11 @@ const requestHooks: RequestHooks = {
case RequestCodeEnum.TOKEN_INVALID:
case RequestCodeEnum.TOKEN_EMPTY:
logout()
+ if (isAuth && !getToken()) {
+ uni.navigateTo({
+ url: '/pages/login/login'
+ })
+ }
return Promise.reject()
default:
@@ -77,6 +82,7 @@ const defaultOptions: HttpRequestOptions = {
ignoreCancel: false,
// 是否携带token
withToken: true,
+ isAuth: false,
requestHooks: requestHooks
}
diff --git a/app/src/utils/request/type.d.ts b/app/src/utils/request/type.d.ts
index fb127e42..f18665a6 100644
--- a/app/src/utils/request/type.d.ts
+++ b/app/src/utils/request/type.d.ts
@@ -14,6 +14,7 @@ export interface RequestConfig {
urlPrefix: string
ignoreCancel: boolean
withToken: boolean
+ isAuth: boolean
}
export interface RequestHooks {
diff --git a/app/src/utils/util.ts b/app/src/utils/util.ts
index f77a3ef0..3010ae56 100644
--- a/app/src/utils/util.ts
+++ b/app/src/utils/util.ts
@@ -1,3 +1,5 @@
+import { isObject } from '@vue/shared'
+
/**
* @description 获取元素节点信息(在组件中的元素必须要传ctx)
* @param { String } selector 选择器 '.app' | '#app'
@@ -23,3 +25,82 @@ export const getRect = (selector: string, all = false, context?: any) => {
.exec()
})
}
+
+/**
+ * @description 获取当前页面实例
+ */
+export function currentPage() {
+ const pages = getCurrentPages()
+ const currentPage = pages[pages.length - 1]
+ return currentPage || {}
+}
+
+/**
+ * @description 后台选择链接专用跳转
+ */
+interface Link {
+ path: string
+ name?: string
+ type: string
+ isTab: boolean
+ query?: Record
+}
+
+export enum LinkTypeEnum {
+ 'SHOP_PAGES' = 'shop',
+ 'CUSTOM_LINK' = 'custom'
+}
+export function navigateTo(link: Link) {
+ console.log(objectToQuery(link.query), link)
+ let url: string
+ switch (link.type) {
+ case LinkTypeEnum.SHOP_PAGES:
+ url = link.query ? `${link.path}?${objectToQuery(link.query)}` : link.path
+ if (link.isTab) {
+ uni.switchTab({ url })
+ } else {
+ uni.navigateTo({ url })
+ }
+ break
+ case LinkTypeEnum.CUSTOM_LINK:
+ uni.navigateTo({ url: `/pages/webview/webview?url=${link.path}` })
+ }
+}
+
+/**
+ * @description 是否为空
+ * @param {unknown} value
+ * @return {Boolean}
+ */
+export const isEmpty = (value: unknown) => {
+ return value == null && typeof value == 'undefined'
+}
+
+/**
+ * @description 对象格式化为Query语法
+ * @param { Object } params
+ * @return {string} Query语法
+ */
+export function objectToQuery(params: Record): string {
+ let query = ''
+ for (const props of Object.keys(params)) {
+ const value = params[props]
+ const part = encodeURIComponent(props) + '='
+ if (!isEmpty(value)) {
+ console.log(encodeURIComponent(props), isObject(value))
+ if (isObject(value)) {
+ for (const key of Object.keys(value)) {
+ if (!isEmpty(value[key])) {
+ const params = props + '[' + key + ']'
+ const subPart = encodeURIComponent(params) + '='
+ query += subPart + encodeURIComponent(value[key]) + '&'
+ }
+ }
+ } else {
+ console.log(part + encodeURIComponent(value), '####')
+ query += part + encodeURIComponent(value) + '&'
+ }
+ }
+ }
+ return query.slice(0, -1)
+}
From 2f272503a639f4a0b8899dd297f1383be97cfa88 Mon Sep 17 00:00:00 2001
From: Jason <5340635+wen-jason@user.noreply.gitee.com>
Date: Fri, 9 Sep 2022 15:19:08 +0800
Subject: [PATCH 03/17] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E5=A4=B4=E5=83=8F?=
=?UTF-8?q?=E6=88=AA=E5=8F=96?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
app/src/pages.json | 7 +++++++
.../components/u-avatar-cropper/weCropper.js | 10 +++-------
2 files changed, 10 insertions(+), 7 deletions(-)
diff --git a/app/src/pages.json b/app/src/pages.json
index 537d691c..79f04345 100644
--- a/app/src/pages.json
+++ b/app/src/pages.json
@@ -93,6 +93,13 @@
},
{
"path": "pages/webview/webview"
+ },
+ {
+ "path": "uni_modules/vk-uview-ui/components/u-avatar-cropper/u-avatar-cropper",
+ "style": {
+ "navigationBarTitleText": "头像裁剪",
+ "navigationBarBackgroundColor": "#000000"
+ }
}
],
"globalStyle": {
diff --git a/app/src/uni_modules/vk-uview-ui/components/u-avatar-cropper/weCropper.js b/app/src/uni_modules/vk-uview-ui/components/u-avatar-cropper/weCropper.js
index 7402f8d4..3ef0e318 100644
--- a/app/src/uni_modules/vk-uview-ui/components/u-avatar-cropper/weCropper.js
+++ b/app/src/uni_modules/vk-uview-ui/components/u-avatar-cropper/weCropper.js
@@ -3,11 +3,7 @@
* (c) 2020 dlhandsome
* @license MIT
*/
-(function(global, factory) {
- typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :
- typeof define === 'function' && define.amd ? define(factory) :
- (global.WeCropper = factory());
-}(this, (function() {
+
'use strict';
var device = void 0;
@@ -1260,6 +1256,6 @@
WeCropper.prototype.cutt = cut;
WeCropper.prototype.update = update;
- return WeCropper;
+ export default WeCropper
+
-})));
From 0a1cf3fb1adc76ac1e914d5c254ffb317792b76c Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E6=B4=AA=E6=A0=91=E6=B3=BD?= <2393354236@qq.com>
Date: Fri, 9 Sep 2022 15:51:52 +0800
Subject: [PATCH 04/17] =?UTF-8?q?=E3=80=90=E7=A7=BB=E5=8A=A8=E7=AB=AF?=
=?UTF-8?q?=E3=80=91=E4=B8=AA=E4=BA=BA=E8=B5=84=E6=96=99=E9=A1=B5=E9=9D=A2?=
=?UTF-8?q?=E8=B0=83=E6=95=B4?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
app/src/pages/user_data/user_data.vue | 105 ++++++++++++--------------
app/src/utils/util.ts | 9 ---
2 files changed, 49 insertions(+), 65 deletions(-)
diff --git a/app/src/pages/user_data/user_data.vue b/app/src/pages/user_data/user_data.vue
index 006eded4..0273b602 100644
--- a/app/src/pages/user_data/user_data.vue
+++ b/app/src/pages/user_data/user_data.vue
@@ -133,11 +133,7 @@
onShow,
onUnload
} from '@dcloudio/uni-app'
- import {
- // apiUserInfoGet,
- // apiUserInfoSet,
- // apiWechatMobileGet,
- // apiHasPassword,
+ import {
getUserInfo,
userEdit,
userBindMobile,
@@ -151,38 +147,42 @@
import {
uploadFile
} from '@/utils/util.ts'
- import {
- getWxCode
- } from '@/utils/util'
- let wxCode = ref < any | null > ('')
// 用户信息
let userInfo = ref < any | null > (null)
// 用户信息的枚举
- const fieldType = ref(FieldType.NONE)
- //显示昵称输入框
- const showNickName = ref < boolean | null > (false)
- //显示昵称输入框
- const showUserName = ref < boolean | null > (false)
+ const fieldType = ref(FieldType.NONE)
+ //选择性别数据
+ const sexList = ref < Array < string > | null > (['男', '女'])
+
+ //显示昵称弹窗
+ const showNickName = ref < boolean | null >(false)
+ //显示账户弹窗
+ const showUserName = ref < boolean | null >(false)
+ //显示性别选择弹窗
+ const showPicker = ref < boolean | null >(false)
+ // 显示手机号验证码调整弹窗 非小程序才需要
+ const showMobilePop = ref < boolean | null > (false)
+
//新昵称
const newNickname = ref < string > ('')
//新账号
- const newUsername = ref < string > ('')
- //手机号码
- const mobile = ref < string > ('')
- //显示性别选择
- const showPicker = ref < boolean | null > (false)
- //选择性别数据
- const sexList = ref < Array < string > | null > (['男', '女'])
-
- //显示昵称输入框
- const showMobilePop = ref < boolean | null > (true)
+ const newUsername = ref < string > ('')
//新的手机号码
const newMobile = ref < string > ('')
+
//修改手机验证码
const mobileCode = ref ('')
const codeTips = ref('')
const uCodeRef = shallowRef()
+
+
+ // 获取用户信息
+ const getUser = async (): Promise < void > => {
+ userInfo.value = await getUserInfo()
+ }
+
+ // 获取验证码显示字段
const codeChange = (text: string) => {
codeTips.value = text
}
@@ -200,7 +200,7 @@
}
}
- // 验证码修改手机号
+ // 验证码修改手机号-非微信小程序
const changeCodeMobile = async () => {
await userBindMobile({
type: userInfo.mobile ? 'change' : 'bind',
@@ -211,11 +211,6 @@
}
- // 获取用户信息
- const getUser = async (): Promise < void > => {
- userInfo.value = await getUserInfo()
- }
-
// 修改用户信息
const setUserInfoFun = async (value: string): Promise < void > => {
await userEdit({
@@ -229,17 +224,20 @@
const uploaderAvatar = () => {
fieldType.value = FieldType.AVATAR
uni.navigateTo({
- url: '/uni_modules/uview-ui/components/u-avatar-cropper/u-avatar-cropper?destWidth=300&rectWidth=200&fileType=jpg',
+ url: '/uni_modules/vk-uview-ui/components/u-avatar-cropper/u-avatar-cropper?destWidth=300&rectWidth=200&fileType=jpg',
})
}
-
- // 修改用户昵称
- const changeNameConfirm = () => {
- if (newNickname.value == '') return toast('昵称不能为空')
- if (newNickname.value.length > 10) return toast('昵称长度不得超过十位数')
- showNickName.value = false
- fieldType.value = FieldType.NICKNAME
- setUserInfoFun(newNickname.value)
+
+ // 显示修改用户性别弹窗
+ const changeSex = () => {
+ showPicker.value = true
+ fieldType.value = FieldType.SEX
+ }
+
+ // 修改用户性别
+ const changeSexConfirm = (value) => {
+ setUserInfoFun(value[0] + 1)
+ showPicker.value = false
}
// 修改用户账号
@@ -252,29 +250,25 @@
showUserName.value = false
}
- // 显示修改用户性别弹窗
- const changeSex = () => {
- showPicker.value = true
- fieldType.value = FieldType.SEX
+ // 修改用户昵称
+ const changeNameConfirm = () => {
+ if (newNickname.value == '') return toast('昵称不能为空')
+ if (newNickname.value.length > 10) return toast('昵称长度不得超过十位数')
+ showNickName.value = false
+ fieldType.value = FieldType.NICKNAME
+ setUserInfoFun(newNickname.value)
}
- // 修改用户性别
- const changeSexConfirm = (value) => {
- setUserInfoFun(value[0] + 1)
- showPicker.value = false
- }
-
- // 绑定||修改用户手机号
+ // 微信小程序 绑定||修改用户手机号
const getPhoneNumber = async (e): Promise < void > => {
- // wxCode.value = await getWxCode()
- console.log('wxCode.value', wxCode.value)
fieldType.value = FieldType.MOBILE
const {
encryptedData,
- iv
+ iv,
+ code,
} = e.detail
- let data = {
- code: wxCode.value,
+ let data = {
+ code,
encrypted_data: encryptedData,
iv,
}
@@ -311,7 +305,6 @@
onShow(async () => {
getUser()
- wxCode.value = await getWxCode()
})
onUnload(() => {
diff --git a/app/src/utils/util.ts b/app/src/utils/util.ts
index d2e9e3ab..55d92038 100644
--- a/app/src/utils/util.ts
+++ b/app/src/utils/util.ts
@@ -136,12 +136,3 @@ export function uploadFile(path: any) {
})
})
}
-
-export const getWxCode = (): Promise => {
- return new Promise((resolve, reject) => {
- uni.login({
- desc: '获取用户信息,完善用户资料',
- success: (res: Event) => resolve(res.code)
- })
- })
-}
From f1a80f7c5e438d3710748279f1d139271534b450 Mon Sep 17 00:00:00 2001
From: Jason <5340635+wen-jason@user.noreply.gitee.com>
Date: Fri, 9 Sep 2022 15:59:18 +0800
Subject: [PATCH 05/17] =?UTF-8?q?=E4=B8=AA=E4=BA=BA=E4=B8=AD=E5=BF=83?=
=?UTF-8?q?=E5=8F=8A=E6=B3=A8=E5=86=8C=E9=A1=B5=E9=9D=A2=E8=B7=B3=E8=BD=AC?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../components/widgets/user-info/user-info.vue | 11 +++++++----
app/src/pages/login/login.vue | 16 ++++++++++++++--
app/src/pages/register/register.vue | 18 ++++++++++++++++--
.../vk-uview-ui/components/u-image/u-image.vue | 1 -
4 files changed, 37 insertions(+), 9 deletions(-)
diff --git a/app/src/components/widgets/user-info/user-info.vue b/app/src/components/widgets/user-info/user-info.vue
index 40319566..c6c1e9c1 100644
--- a/app/src/components/widgets/user-info/user-info.vue
+++ b/app/src/components/widgets/user-info/user-info.vue
@@ -1,5 +1,5 @@
-
+
- {{ user.nickname }}
+
+ {{ user.nickname }}
+ 账号:{{ user.username }}
+
- 未登录
+ 未登录
-
+
-
-
diff --git a/app/src/pages/forget_pwd/forget_pwd.vue b/app/src/pages/forget_pwd/forget_pwd.vue
index f91dce5f..c2ffbb4b 100644
--- a/app/src/pages/forget_pwd/forget_pwd.vue
+++ b/app/src/pages/forget_pwd/forget_pwd.vue
@@ -3,7 +3,7 @@
class="register bg-white min-h-full flex flex-col items-center px-[40rpx] pt-[100rpx] box-border"
>
- 忘记登录密码
+ 忘记登录密码
{
state.pages = JSON.parse(data.pages)
state.article = data.article
}
+
getData()
diff --git a/app/src/pages/login/login.vue b/app/src/pages/login/login.vue
index 6244292d..8b08b2a5 100644
--- a/app/src/pages/login/login.vue
+++ b/app/src/pages/login/login.vue
@@ -137,6 +137,7 @@ import { SMSEnum } from '@/enums/appEnums'
import { useLockFn } from '@/hooks/useLockFn'
import { useAppStore } from '@/stores/app'
import { useUserStore } from '@/stores/user'
+import { currentPage } from '@/utils/util'
import { reactive, ref, shallowRef } from 'vue'
enum LoginTypeEnum {
MOBILE = 'mobile',
@@ -197,7 +198,14 @@ const loginFun = async (scene: LoginTypeEnum, code?: string) => {
await userStore.getUser()
uni.$u.toast('登录成功')
uni.hideLoading()
- uni.navigateBack()
+ uni.navigateBack({
+ success: () => {
+ // @ts-ignore
+ const { onLoad, options } = currentPage()
+ // 刷新上一个页面
+ onLoad && onLoad(options)
+ }
+ })
} catch (error: any) {
uni.hideLoading()
throw new Error(error)
diff --git a/app/src/pages/user_data/user_data.vue b/app/src/pages/user_data/user_data.vue
index 47a5eb39..88da3072 100644
--- a/app/src/pages/user_data/user_data.vue
+++ b/app/src/pages/user_data/user_data.vue
@@ -1,353 +1,350 @@
-
-
-
+
+
+
-
-
- 账号
- {{ userInfo?.username }}
-
-
+
+
+ 账号
+ {{ userInfo?.username }}
+
+
-
-
- 昵称
- {{ userInfo?.nickname }}
-
-
+
+
+ 昵称
+ {{ userInfo?.nickname }}
+
+
-
-
- 性别
- {{ userInfo?.sex }}
-
-
+
+
+ 性别
+ {{ userInfo?.sex }}
+
+
-
-
- 手机号
- {{ userInfo?.mobile == '' ? '未绑定手机号' : userInfo?.mobile }}
+
+
+ 手机号
+ {{
+ userInfo?.mobile == '' ? '未绑定手机号' : userInfo?.mobile
+ }}
-
-
- {{ userInfo?.mobile == '' ? '绑定手机号' : '更换手机号' }}
-
-
-
-
- {{ userInfo?.mobile == '' ? '绑定手机号' : '更换手机号' }}
-
-
-
+
+
+ {{ userInfo?.mobile == '' ? '绑定手机号' : '更换手机号' }}
+
+
+
+
+ {{ userInfo?.mobile == '' ? '绑定手机号' : '更换手机号' }}
+
+
+
-
-
- 注册时间
- {{ userInfo?.createTime }}
-
+
+
+ 注册时间
+ {{ userInfo?.createTime }}
+
-
-
-
- 修改昵称
-
-
-
- 确定
-
-
-
-
-
-
-
-
- 修改账号
-
-
-
- 确定
-
-
-
-
+
+
+
+ 修改昵称
+
+
+ 确定
+
+
+
-
-
-
-
-
-
- 修改手机号码
-
-
-
-
-
-
-
- {{ codeTips }}
-
-
-
-
- 确定
-
-
-
-
+
+
+
+ 修改账号
+
+
+
+ 确定
+
+
+
+
+
+
+
+
+
+
+
+ 修改手机号码
+
+
+
+
+
+
+
+ {{ codeTips }}
+
+
+
+ 确定
+
+
+
+.license {
+ margin-top: 80rpx;
+ color: #a7a7a7;
+}
+
diff --git a/app/src/pages/user_set/user_set.vue b/app/src/pages/user_set/user_set.vue
index 59a5e291..5a8a5920 100644
--- a/app/src/pages/user_set/user_set.vue
+++ b/app/src/pages/user_set/user_set.vue
@@ -1,97 +1,108 @@
-
-
-
-
-
-
- {{ userInfo.nickname }}
- 账号:{{ userInfo.username }}
-
-
-
-
-
-
- 登录密码
-
-
-
- 绑定微信
-
-
- {{ userInfo.isBindMnp ? '已绑定' : '未绑定' }}
-
-
-
-
+
+
+
+
+
+
+ {{ userInfo.nickname }}
+ 账号:{{ userInfo.username }}
+
+
+
+
+
+
+ 登录密码
+
+
+
+ 绑定微信
+
+
+ {{ userInfo.isBindMnp ? '已绑定' : '未绑定' }}
+
+
+
+
-
-
- 隐私政策
-
-
-
-
-
- 服务协议
-
-
-
-
- 关于我们
-
-
- {{ appStore.config.version }}
-
-
-
-
-
+
+
+ 隐私政策
+
+
+
+
+
+ 服务协议
+
+
+
+
+ 关于我们
+
+
+ {{ appStore.config.version }}
+
+
+
+
+
+
+ .btn-border {
+ border-bottom: 1rpx solid $u-form-item-border-color;
+ }
+}
+
From b7b87d406cbdf7bbc31f3081b0aa6b4c0833802d Mon Sep 17 00:00:00 2001
From: windy <544889826@qq.com>
Date: Fri, 9 Sep 2022 18:25:24 +0800
Subject: [PATCH 11/17] =?UTF-8?q?=E5=A4=84=E7=90=86=E5=B0=8F=E7=A8=8B?=
=?UTF-8?q?=E5=BA=8F=E7=99=BB=E5=BD=95=E9=97=AE=E9=A2=98?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../java/com/mdd/front/service/impl/LoginServiceImpl.java | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/server/like-front/src/main/java/com/mdd/front/service/impl/LoginServiceImpl.java b/server/like-front/src/main/java/com/mdd/front/service/impl/LoginServiceImpl.java
index 7e4f412a..67382d45 100644
--- a/server/like-front/src/main/java/com/mdd/front/service/impl/LoginServiceImpl.java
+++ b/server/like-front/src/main/java/com/mdd/front/service/impl/LoginServiceImpl.java
@@ -97,9 +97,9 @@ public class LoginServiceImpl implements ILoginService {
try {
WxMaJscode2SessionResult sessionResult = wxMaService.getUserService().getSessionInfo(code);
- String openId = sessionResult.getOpenid();
+ String openId = sessionResult.getOpenid();
String uniId = sessionResult.getUnionid();
- String unionId = uniId == null ? "" : uniId;
+ String unionId = uniId == null ? "0" : uniId;
UserAuth userAuth = userAuthMapper.selectOne(new QueryWrapper()
.eq("client", client)
From 29febf427b5d8e89feafe3fad7f029aa2ae9451f Mon Sep 17 00:00:00 2001
From: Jason <5340635+wen-jason@user.noreply.gitee.com>
Date: Fri, 9 Sep 2022 18:42:41 +0800
Subject: [PATCH 12/17] =?UTF-8?q?lint=20=E4=BB=A3=E7=A0=81?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
app/src/api/shop.ts | 6 +-
app/src/components/news-card/news-card.vue | 108 +--
app/src/components/tab/tab.vue | 146 ++--
app/src/components/tabs/tabs.vue | 780 +++++++++++----------
app/src/enums/agreementEnums.ts | 1 -
app/src/enums/appEnums.ts | 10 +-
app/src/enums/cacheEnums.ts | 2 +-
app/src/hooks/useTouch.ts | 53 +-
app/src/main.ts | 1 +
app/src/pages/agreement/agreement.vue | 69 +-
app/src/pages/as_us/as_us.vue | 40 +-
app/src/pages/collection/collection.vue | 111 +--
app/src/pages/news/component/news-list.vue | 115 +--
app/src/pages/news/news.vue | 105 ++-
app/src/pages/news_detail/news_detail.vue | 183 ++---
app/src/pages/search/component/suggest.vue | 123 ++--
app/src/pages/search/search.vue | 248 +++----
app/src/pages/user_data/user_data.vue | 700 +++++++++---------
app/src/pages/user_set/user_set.vue | 216 +++---
app/src/utils/util.ts | 2 +-
20 files changed, 1543 insertions(+), 1476 deletions(-)
diff --git a/app/src/api/shop.ts b/app/src/api/shop.ts
index 246444df..78208e54 100644
--- a/app/src/api/shop.ts
+++ b/app/src/api/shop.ts
@@ -12,7 +12,7 @@ export function getDecorate(data: any) {
/**
* @description 热门搜索
- * @return { Promise }
+ * @return { Promise }
*/
export function getHotSearch() {
return request.get({ url: '/hotSearch' })
@@ -21,8 +21,8 @@ export function getHotSearch() {
/**
* @description 搜索
* @param { string } keyword 关键词
- * @return { Promise }
+ * @return { Promise }
*/
-export function getSearch(data: { keyword: string, pageNo: number, pageSize: number }) {
+export function getSearch(data: { keyword: string; pageNo: number; pageSize: number }) {
return request.get({ url: '/search', data })
}
diff --git a/app/src/components/news-card/news-card.vue b/app/src/components/news-card/news-card.vue
index 29c88202..0e332066 100644
--- a/app/src/components/news-card/news-card.vue
+++ b/app/src/components/news-card/news-card.vue
@@ -1,57 +1,65 @@
-
-
-
-
-
-
- {{ item.title }}
- {{ item.intro }}
-
-
- {{ item.createTime }}
-
-
- {{ item.visit }}
-
-
-
-
-
+
+
+
+
+
+
+ {{ item.title }}
+ {{
+ item.intro
+ }}
+
+
+ {{ item.createTime }}
+
+
+ {{ item.visit }}
+
+
+
+
+
\ No newline at end of file
+.news-card {
+ border-bottom: 1px solid #f8f8f8;
+ &-content {
+ &-title {
+ -webkit-line-clamp: 2;
+ overflow: hidden;
+ word-break: break-all;
+ text-overflow: ellipsis;
+ display: -webkit-box;
+ -webkit-box-orient: vertical;
+ }
+ &-intro {
+ -webkit-line-clamp: 1;
+ overflow: hidden;
+ word-break: break-all;
+ text-overflow: ellipsis;
+ display: -webkit-box;
+ -webkit-box-orient: vertical;
+ }
+ }
+}
+
diff --git a/app/src/components/tab/tab.vue b/app/src/components/tab/tab.vue
index 0d752bdc..4c7ae53c 100644
--- a/app/src/components/tab/tab.vue
+++ b/app/src/components/tab/tab.vue
@@ -1,79 +1,83 @@
-
-
-
-
-
-
+
+
+
+
+
+
-
-
diff --git a/app/src/components/tabs/tabs.vue b/app/src/components/tabs/tabs.vue
index 8b5f1890..9a4c4ad9 100644
--- a/app/src/components/tabs/tabs.vue
+++ b/app/src/components/tabs/tabs.vue
@@ -1,71 +1,106 @@
-
-
-
-
-
-
-
-
- {{ item[name] || item['name']}}
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/app/src/enums/agreementEnums.ts b/app/src/enums/agreementEnums.ts
index a49c4f1c..7a717f45 100644
--- a/app/src/enums/agreementEnums.ts
+++ b/app/src/enums/agreementEnums.ts
@@ -3,4 +3,3 @@ export enum AgreementEnum {
PRIVACY = 'privacy',
SERVICE = 'service'
}
-
diff --git a/app/src/enums/appEnums.ts b/app/src/enums/appEnums.ts
index ad412d5a..c399d6ab 100644
--- a/app/src/enums/appEnums.ts
+++ b/app/src/enums/appEnums.ts
@@ -21,14 +21,14 @@ export enum SMSEnum {
}
export enum SearchTypeEnum {
- HISTORY = 'history'
+ HISTORY = 'history'
}
// 用户资料
export enum FieldType {
NONE = '',
- AVATAR = 'avatar',
- USERNAME = 'username',
+ AVATAR = 'avatar',
+ USERNAME = 'username',
NICKNAME = 'nickname',
- SEX = 'sex',
-}
\ No newline at end of file
+ SEX = 'sex'
+}
diff --git a/app/src/enums/cacheEnums.ts b/app/src/enums/cacheEnums.ts
index 9cb6d9e0..6e22a14b 100644
--- a/app/src/enums/cacheEnums.ts
+++ b/app/src/enums/cacheEnums.ts
@@ -4,4 +4,4 @@
export const TOKEN_KEY = 'token'
// 搜索历史记录
-export const HISTORY = 'history'
\ No newline at end of file
+export const HISTORY = 'history'
diff --git a/app/src/hooks/useTouch.ts b/app/src/hooks/useTouch.ts
index 509764a9..acd5bca1 100644
--- a/app/src/hooks/useTouch.ts
+++ b/app/src/hooks/useTouch.ts
@@ -1,13 +1,13 @@
-import { reactive } from "vue"
+import { reactive } from 'vue'
/**
* @description 触碰屏幕钩子函数
* @return { Function } 暴露钩子
*/
-export function useTouch () {
+export function useTouch() {
// 最小移动距离
- const MIN_DISTANCE = 10;
-
+ const MIN_DISTANCE = 10
+
const touch = reactive({
direction: '',
deltaX: 0,
@@ -22,48 +22,47 @@ export function useTouch () {
*/
const getDirection = (x: number, y: number) => {
if (x > y && x > MIN_DISTANCE) {
- return 'horizontal';
+ return 'horizontal'
}
if (y > x && y > MIN_DISTANCE) {
- return 'vertical';
+ return 'vertical'
}
- return '';
+ return ''
}
-
+
/**
* @description 重置参数
*/
const resetTouchStatus = () => {
- touch.direction = '';
- touch.deltaX = 0;
- touch.deltaY = 0;
- touch.offsetX = 0;
- touch.offsetY = 0;
+ touch.direction = ''
+ touch.deltaX = 0
+ touch.deltaY = 0
+ touch.offsetX = 0
+ touch.offsetY = 0
}
-
+
/**
* @description 触发
*/
const touchStart = (event: any) => {
- resetTouchStatus();
- const events = event.touches[0];
- touch.startX = events.clientX;
- touch.startY = events.clientY;
+ resetTouchStatus()
+ const events = event.touches[0]
+ touch.startX = events.clientX
+ touch.startY = events.clientY
}
-
+
/**
* @description 移动
*/
const touchMove = (event: any) => {
- const events = event.touches[0];
- touch.deltaX = events.clientX - touch.startX;
- touch.deltaY = events.clientY - touch.startY;
- touch.offsetX = Math.abs(touch.deltaX);
- touch.offsetY = Math.abs(touch.deltaY);
- touch.direction =
- touch.direction || getDirection(touch.offsetX, touch.offsetY);
+ const events = event.touches[0]
+ touch.deltaX = events.clientX - touch.startX
+ touch.deltaY = events.clientY - touch.startY
+ touch.offsetX = Math.abs(touch.deltaX)
+ touch.offsetY = Math.abs(touch.deltaY)
+ touch.direction = touch.direction || getDirection(touch.offsetX, touch.offsetY)
}
-
+
return {
touch,
resetTouchStatus,
diff --git a/app/src/main.ts b/app/src/main.ts
index 5351a99b..93da3003 100644
--- a/app/src/main.ts
+++ b/app/src/main.ts
@@ -5,6 +5,7 @@ import './router'
import './styles/index.scss'
export function createApp() {
const app = createSSRApp(App)
+
app.use(plugins)
return {
app
diff --git a/app/src/pages/agreement/agreement.vue b/app/src/pages/agreement/agreement.vue
index 7a646e23..f0f6fab7 100644
--- a/app/src/pages/agreement/agreement.vue
+++ b/app/src/pages/agreement/agreement.vue
@@ -1,36 +1,35 @@
-
-
-
-
-
-
+
+
+
+
+
+
-
-
+import { reactive, ref } from 'vue'
+import { onLoad } from '@dcloudio/uni-app'
+import { AgreementEnum } from '@/enums/agreementEnums'
+import { getPolicy } from '@/api/app'
+
+let agreementType = ref('') // 协议类型
+const agreementContent = ref('') // 协议内容
+
+const getData = async (type) => {
+ const res = await getPolicy({ type })
+ console.log(res, 'res')
+
+ agreementContent.value = res.content
+
+ uni.setNavigationBarTitle({
+ title: res.name
+ })
+}
+
+onLoad((options: any) => {
+ if (options.type) {
+ agreementType = options.type
+ getData(agreementType)
+ }
+})
+
+
+
diff --git a/app/src/pages/as_us/as_us.vue b/app/src/pages/as_us/as_us.vue
index 43f4988c..22ee329a 100644
--- a/app/src/pages/as_us/as_us.vue
+++ b/app/src/pages/as_us/as_us.vue
@@ -1,22 +1,22 @@
-
-
-
- 当前版本{{ appStore.config.version }}
-
-
-
+
+
+
+ 当前版本{{ appStore.config.version }}
+
+
+
-
-
diff --git a/app/src/pages/collection/collection.vue b/app/src/pages/collection/collection.vue
index c824c28a..a6c1c8f3 100644
--- a/app/src/pages/collection/collection.vue
+++ b/app/src/pages/collection/collection.vue
@@ -1,50 +1,61 @@
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
diff --git a/app/src/pages/news/component/news-list.vue b/app/src/pages/news/component/news-list.vue
index 6175a21f..e09a92c0 100644
--- a/app/src/pages/news/component/news-list.vue
+++ b/app/src/pages/news/component/news-list.vue
@@ -1,50 +1,65 @@
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
diff --git a/app/src/pages/news/news.vue b/app/src/pages/news/news.vue
index fb3b0c56..698d6c9c 100644
--- a/app/src/pages/news/news.vue
+++ b/app/src/pages/news/news.vue
@@ -1,63 +1,58 @@
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
-
+
-
-
-
-
-
- const tabList = ref< any >([])
- const current = ref(0)
-
- const handleChange = (index: number) => {
- console.log(index)
- current.value = Number(index)
- }
-
- const getData = async () => {
- tabList.value = await getArticleCate()
- }
-
- onLoad((options) => {
- getData()
- })
-
-
diff --git a/app/src/pages/news_detail/news_detail.vue b/app/src/pages/news_detail/news_detail.vue
index 0ed5b231..265f536b 100644
--- a/app/src/pages/news_detail/news_detail.vue
+++ b/app/src/pages/news_detail/news_detail.vue
@@ -1,95 +1,96 @@
-
-
-
-
-
-
-
-
- 摘要: {{ newsData.summary }}
-
-
-
-
-
-
-
-
-
-
-
-
-
- 收藏
-
-
-
-
-
-
- const newsData = ref< any >({})
- let newsId = ''
-
-
- const getData = async (id) => {
- newsData.value = await getArticleDetail({ id })
- }
-
- const handleAddCollect = async (articleId: number) => {
- try{
- if( newsData.value.collect ) {
- await cancelCollect({ articleId })
- } else await addCollect({ articleId })
- getData(newsId)
- }catch(e){
- //TODO handle the exception
- }
- }
-
- onLoad((options: any) => {
- newsId = options.id
- getData(newsId)
- })
-
-
diff --git a/app/src/pages/search/component/suggest.vue b/app/src/pages/search/component/suggest.vue
index 32386223..cb808eb7 100644
--- a/app/src/pages/search/component/suggest.vue
+++ b/app/src/pages/search/component/suggest.vue
@@ -1,67 +1,70 @@
-
-
-
-
- 热门搜索
-
-
-
- {{ hotItem }}
-
-
-
-
-
-
-
-
-
- 历史搜索
- emit('clear')">清空
-
-
-
-
- {{ hisItem }}
-
-
-
-
+
+
+
+ 热门搜索
+
+
+
+ {{ hotItem }}
+
+
+
+
+
+
+
+
+
+ 历史搜索
+ emit('clear')">清空
+
+
+
+
+ {{ hisItem }}
+
+
+
+
-
-
\ No newline at end of file
+.suggest {
+ height: 100%;
+ .keyword {
+ display: inline-block;
+ margin: 24rpx 16rpx 0 0;
+ padding: 8rpx 24rpx;
+ border-radius: 26rpx;
+ background-color: #f4f4f4;
+ }
+}
+
diff --git a/app/src/pages/search/search.vue b/app/src/pages/search/search.vue
index ceac229c..b50878d5 100644
--- a/app/src/pages/search/search.vue
+++ b/app/src/pages/search/search.vue
@@ -1,127 +1,127 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/app/src/pages/user_data/user_data.vue b/app/src/pages/user_data/user_data.vue
index 88da3072..78717ff7 100644
--- a/app/src/pages/user_data/user_data.vue
+++ b/app/src/pages/user_data/user_data.vue
@@ -1,350 +1,350 @@
-
-
-
-
-
-
-
- 账号
- {{ userInfo?.username }}
-
-
-
-
-
- 昵称
- {{ userInfo?.nickname }}
-
-
-
-
-
- 性别
- {{ userInfo?.sex }}
-
-
-
-
-
- 手机号
- {{
- userInfo?.mobile == '' ? '未绑定手机号' : userInfo?.mobile
- }}
-
-
-
- {{ userInfo?.mobile == '' ? '绑定手机号' : '更换手机号' }}
-
-
-
-
- {{ userInfo?.mobile == '' ? '绑定手机号' : '更换手机号' }}
-
-
-
-
-
-
- 注册时间
- {{ userInfo?.createTime }}
-
-
-
-
-
- 修改昵称
-
-
- 确定
-
-
-
-
-
-
-
- 修改账号
-
-
-
- 确定
-
-
-
-
-
-
-
-
-
-
-
- 修改手机号码
-
-
-
-
-
-
-
- {{ codeTips }}
-
-
-
- 确定
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+ 账号
+ {{ userInfo?.username }}
+
+
+
+
+
+ 昵称
+ {{ userInfo?.nickname }}
+
+
+
+
+
+ 性别
+ {{ userInfo?.sex }}
+
+
+
+
+
+ 手机号
+ {{
+ userInfo?.mobile == '' ? '未绑定手机号' : userInfo?.mobile
+ }}
+
+
+
+ {{ userInfo?.mobile == '' ? '绑定手机号' : '更换手机号' }}
+
+
+
+
+ {{ userInfo?.mobile == '' ? '绑定手机号' : '更换手机号' }}
+
+
+
+
+
+
+ 注册时间
+ {{ userInfo?.createTime }}
+
+
+
+
+
+ 修改昵称
+
+
+ 确定
+
+
+
+
+
+
+
+ 修改账号
+
+
+
+ 确定
+
+
+
+
+
+
+
+
+
+
+
+ 修改手机号码
+
+
+
+
+
+
+
+ {{ codeTips }}
+
+
+
+ 确定
+
+
+
+
+
+
+
+
diff --git a/app/src/pages/user_set/user_set.vue b/app/src/pages/user_set/user_set.vue
index 5a8a5920..29d9c498 100644
--- a/app/src/pages/user_set/user_set.vue
+++ b/app/src/pages/user_set/user_set.vue
@@ -1,108 +1,108 @@
-
-
-
-
-
-
-
- {{ userInfo.nickname }}
- 账号:{{ userInfo.username }}
-
-
-
-
-
-
- 登录密码
-
-
-
- 绑定微信
-
-
- {{ userInfo.isBindMnp ? '已绑定' : '未绑定' }}
-
-
-
-
-
-
-
- 隐私政策
-
-
-
-
-
- 服务协议
-
-
-
-
- 关于我们
-
-
- {{ appStore.config.version }}
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+ {{ userInfo.nickname }}
+ 账号:{{ userInfo.username }}
+
+
+
+
+
+
+ 登录密码
+
+
+
+ 绑定微信
+
+
+ {{ userInfo.isBindMnp ? '已绑定' : '未绑定' }}
+
+
+
+
+
+
+
+ 隐私政策
+
+
+
+
+
+ 服务协议
+
+
+
+
+ 关于我们
+
+
+ {{ appStore.config.version }}
+
+
+
+
+
+
+
+
+
+
+
diff --git a/app/src/utils/util.ts b/app/src/utils/util.ts
index 155b8f60..1bfe679f 100644
--- a/app/src/utils/util.ts
+++ b/app/src/utils/util.ts
@@ -123,7 +123,7 @@ export function uploadFile(path: any) {
success: (res) => {
console.log('uploadFile res ==> ', res)
const data = JSON.parse(res.data)
- console.log('data.code', data.code)
+ console.log('data.code', data.code)
if (data.code == 200) {
resolve(data.data)
} else {
From 7a97610ca93746f21971e9e5b02ddc0eef1fa11f Mon Sep 17 00:00:00 2001
From: windy <544889826@qq.com>
Date: Fri, 9 Sep 2022 18:45:00 +0800
Subject: [PATCH 13/17] =?UTF-8?q?=E8=B0=83=E6=95=B4=E4=BF=AE=E6=94=B9?=
=?UTF-8?q?=E5=AF=86=E7=A0=81=E6=8E=A5=E5=8F=A3?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../mdd/front/controller/UserController.java | 3 ++-
.../com/mdd/front/service/IUserService.java | 3 ++-
.../front/service/impl/UserServiceImpl.java | 26 ++++++++++++++-----
3 files changed, 24 insertions(+), 8 deletions(-)
diff --git a/server/like-front/src/main/java/com/mdd/front/controller/UserController.java b/server/like-front/src/main/java/com/mdd/front/controller/UserController.java
index 4a5bd481..e881890c 100644
--- a/server/like-front/src/main/java/com/mdd/front/controller/UserController.java
+++ b/server/like-front/src/main/java/com/mdd/front/controller/UserController.java
@@ -73,12 +73,13 @@ public class UserController {
*/
@PostMapping("/changePwd")
public Object changePwd(@RequestBody Map params) {
+ Assert.notNull(params.get("oldPassword"), "oldPassword参数缺失");
Assert.notNull(params.get("password"), "password参数缺失");
if(!Pattern.matches("^(?![0-9]+$)(?![a-zA-Z]+$)[0-9A-Za-z]{6,20}$", params.get("password"))){
throw new OperateException("密码必须是6-20字母+数字组合!");
}
Integer userId = LikeFrontThreadLocal.getUserId();
- iUserService.changePwd(params.get("password"), userId);
+ iUserService.changePwd(params.get("password"), params.get("oldPassword"), userId);
return AjaxResult.success();
}
diff --git a/server/like-front/src/main/java/com/mdd/front/service/IUserService.java b/server/like-front/src/main/java/com/mdd/front/service/IUserService.java
index bb7f987c..e29fe41f 100644
--- a/server/like-front/src/main/java/com/mdd/front/service/IUserService.java
+++ b/server/like-front/src/main/java/com/mdd/front/service/IUserService.java
@@ -42,9 +42,10 @@ public interface IUserService {
*
* @author fzr
* @param password 新密码
+ * @param oldPassword 旧密码
* @param userId 用户ID
*/
- void changePwd(String password, Integer userId);
+ void changePwd(String password, String oldPassword, Integer userId);
/**
* 绑定手机
diff --git a/server/like-front/src/main/java/com/mdd/front/service/impl/UserServiceImpl.java b/server/like-front/src/main/java/com/mdd/front/service/impl/UserServiceImpl.java
index f2cff5d7..c622cd88 100644
--- a/server/like-front/src/main/java/com/mdd/front/service/impl/UserServiceImpl.java
+++ b/server/like-front/src/main/java/com/mdd/front/service/impl/UserServiceImpl.java
@@ -23,6 +23,7 @@ import com.mdd.front.vo.user.UserInfoVo;
import me.chanjar.weixin.common.error.WxErrorException;
import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Service;
+import org.springframework.util.Assert;
import javax.annotation.Resource;
import java.util.LinkedHashMap;
@@ -172,15 +173,28 @@ public class UserServiceImpl implements IUserService {
* @param userId 用户ID
*/
@Override
- public void changePwd(String password, Integer userId) {
+ public void changePwd(String password, String oldPassword, Integer userId) {
+ User user = userMapper.selectOne(new QueryWrapper()
+ .select("id,password,salt")
+ .eq("id", userId)
+ .eq("is_delete", 0)
+ .last("limit 1"));
+
+ Assert.notNull(user, "用户不存在");
+ String oldPwd = ToolsUtil.makeMd5(oldPassword.trim()+user.getSalt());
+ if (!oldPwd.equals(user.getPassword())) {
+ throw new OperateException("原密码不正确!");
+ }
+
String salt = ToolsUtil.randomString(5);
String pwd = ToolsUtil.makeMd5(password.trim()+salt);
- User user = new User();
- user.setPassword(pwd);
- user.setSalt(salt);
- user.setUpdateTime(System.currentTimeMillis() / 1000);
- userMapper.updateById(user);
+ User u = new User();
+ u.setId(userId);
+ u.setPassword(pwd);
+ u.setSalt(salt);
+ u.setUpdateTime(System.currentTimeMillis() / 1000);
+ userMapper.updateById(u);
}
/**
From 301dd7c3ea0842e6fd773dbf5c9ff5aa7148bf86 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E6=B4=AA=E6=A0=91=E6=B3=BD?= <2393354236@qq.com>
Date: Tue, 13 Sep 2022 10:13:26 +0800
Subject: [PATCH 14/17] =?UTF-8?q?=E3=80=90=E5=B0=8F=E7=A8=8B=E5=BA=8F?=
=?UTF-8?q?=E3=80=91=E4=B8=AA=E4=BA=BA=E8=AE=BE=E7=BD=AE=E6=A0=B7=E5=BC=8F?=
=?UTF-8?q?=E8=B0=83=E6=95=B4=EF=BC=8C=E5=8E=BB=E9=99=A4=E6=97=A0=E7=94=A8?=
=?UTF-8?q?=E4=BB=A3=E7=A0=81?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
app/src/pages/user_data/user_data.vue | 33 ++++++++++++++-------------
1 file changed, 17 insertions(+), 16 deletions(-)
diff --git a/app/src/pages/user_data/user_data.vue b/app/src/pages/user_data/user_data.vue
index 78717ff7..21340317 100644
--- a/app/src/pages/user_data/user_data.vue
+++ b/app/src/pages/user_data/user_data.vue
@@ -73,7 +73,14 @@
修改昵称
-
+
+
+
确定
@@ -84,7 +91,14 @@
修改账号
-
+
+
+
确定
@@ -312,7 +326,6 @@ onUnload(() => {
.header {
width: 100%;
height: 240rpx;
- // border-radius: 14rpx;
image {
width: 120rpx;
@@ -323,8 +336,7 @@ onUnload(() => {
.item {
margin-top: 2rpx;
- padding: 30rpx 20rpx;
- // border-radius: 14rpx;
+ padding: 30rpx;
background-color: #ffffff;
.label {
@@ -335,16 +347,5 @@ onUnload(() => {
flex: 1;
width: 80%;
}
-
- .bind {
- height: 56rpx;
- border-width: 1rpx;
- border-style: solid;
- }
-}
-
-.license {
- margin-top: 80rpx;
- color: #a7a7a7;
}
From 77b2b5ccb95c41bb9c9b233311eb8c485d70fa6a Mon Sep 17 00:00:00 2001
From: Jason <5340635+wen-jason@user.noreply.gitee.com>
Date: Tue, 13 Sep 2022 10:23:33 +0800
Subject: [PATCH 15/17] =?UTF-8?q?=E5=90=8E=E5=8F=B0=E6=89=93=E5=8C=85?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../views/decoration/component/widgets/my-service/content.vue | 2 +-
frontend/assets/{403.e4f3c918.js => 403.de4e3f31.js} | 2 +-
frontend/assets/{404.9786a379.js => 404.377f1d7c.js} | 2 +-
frontend/assets/{add-nav.3ce1bab1.js => add-nav.9aee5f4e.js} | 2 +-
... => add-nav.vue_vue_type_script_setup_true_lang.c1cec697.js} | 2 +-
frontend/assets/article.83af4cc1.js | 1 +
frontend/assets/article.99eb0f9b.js | 1 -
.../{attr-setting.e37998ca.js => attr-setting.cee2daa2.js} | 2 +-
...ttr-setting.vue_vue_type_script_setup_true_lang.c086565f.js} | 2 +-
frontend/assets/{attr.171d319e.js => attr.15cd3970.js} | 2 +-
frontend/assets/{attr.33354c52.js => attr.484656d5.js} | 2 +-
frontend/assets/{attr.10cfc8c2.js => attr.49f1a472.js} | 2 +-
frontend/assets/{attr.f14c9c46.js => attr.7944fe9e.js} | 2 +-
frontend/assets/{attr.ef36576b.js => attr.fa0f47c2.js} | 2 +-
....js => attr.vue_vue_type_script_setup_true_lang.2a1b1b18.js} | 2 +-
....js => attr.vue_vue_type_script_setup_true_lang.920d9401.js} | 2 +-
....js => attr.vue_vue_type_script_setup_true_lang.a4d005a2.js} | 2 +-
....js => attr.vue_vue_type_script_setup_true_lang.be11ffff.js} | 2 +-
....js => attr.vue_vue_type_script_setup_true_lang.ee163012.js} | 2 +-
frontend/assets/{auth.b12faf5b.js => auth.e57238e3.js} | 2 +-
....js => auth.vue_vue_type_script_setup_true_lang.80191698.js} | 2 +-
frontend/assets/{cache.84d3f588.js => cache.3e97438c.js} | 2 +-
.../{code-preview.000c18e8.js => code-preview.6c33b572.js} | 2 +-
...ode-preview.vue_vue_type_script_setup_true_lang.15a5c65d.js} | 2 +-
frontend/assets/{code.c9ce80f0.js => code.3cf40a70.js} | 2 +-
frontend/assets/{config.e193244c.js => config.4f0b069d.js} | 2 +-
frontend/assets/{consumer.7d123ee3.js => consumer.38a56cd4.js} | 2 +-
frontend/assets/content.0444bd3e.js | 1 -
frontend/assets/content.10c5ef91.js | 1 +
frontend/assets/{content.f81b935d.js => content.279cc4b8.js} | 2 +-
frontend/assets/content.36eb2157.css | 1 -
frontend/assets/{content.be9a8727.js => content.38542add.js} | 2 +-
frontend/assets/{content.f0e3062b.js => content.7ebe44c2.js} | 2 +-
frontend/assets/{content.6731c988.js => content.8e4748da.js} | 2 +-
frontend/assets/{content.b1a283df.js => content.b6235baf.js} | 2 +-
frontend/assets/{content.de37368d.js => content.b9fdf952.js} | 2 +-
frontend/assets/content.c4421dd6.css | 1 +
... => content.vue_vue_type_script_setup_true_lang.2c4c92b3.js} | 2 +-
... => content.vue_vue_type_script_setup_true_lang.a3e925ac.js} | 2 +-
.../assets/{data-table.ed54bc77.js => data-table.52b6010f.js} | 2 +-
... data-table.vue_vue_type_script_setup_true_lang.13faadd0.js} | 2 +-
.../assets/{decoration.2abda6d2.js => decoration.3e5b07ec.js} | 2 +-
.../assets/{department.9406e6bc.js => department.e46fc6ed.js} | 2 +-
frontend/assets/{detail.2219538e.js => detail.916c9e0d.js} | 2 +-
frontend/assets/{dict.25b3b485.js => dict.e61ac0ab.js} | 2 +-
frontend/assets/{edit.8404748b.js => edit.02870cdf.js} | 2 +-
frontend/assets/{edit.76e2fd3f.js => edit.3108f075.js} | 2 +-
frontend/assets/{edit.88801a2a.js => edit.688442b1.js} | 2 +-
frontend/assets/{edit.00fac06d.js => edit.6dd21900.js} | 2 +-
frontend/assets/{edit.c3ab3060.js => edit.85e2c473.js} | 2 +-
frontend/assets/{edit.891ad818.js => edit.9a6d872c.js} | 2 +-
frontend/assets/{edit.73859b48.js => edit.b8af9f56.js} | 2 +-
frontend/assets/{edit.8f8ffbf6.js => edit.ba33bd0b.js} | 2 +-
frontend/assets/edit.c69b54b5.js | 1 +
frontend/assets/{edit.ca586e36.js => edit.e6304b22.js} | 2 +-
frontend/assets/{edit.bee712b3.js => edit.ecd2816c.js} | 2 +-
frontend/assets/edit.f3f245b1.js | 1 -
frontend/assets/{edit.80c74cc4.js => edit.fbdf40f6.js} | 2 +-
frontend/assets/{edit.b6a5ced9.js => edit.fede8366.js} | 2 +-
....js => edit.vue_vue_type_script_setup_true_lang.0d4b0bdf.js} | 2 +-
....js => edit.vue_vue_type_script_setup_true_lang.2ddf59bd.js} | 2 +-
....js => edit.vue_vue_type_script_setup_true_lang.3597711b.js} | 2 +-
....js => edit.vue_vue_type_script_setup_true_lang.3c27164b.js} | 2 +-
....js => edit.vue_vue_type_script_setup_true_lang.7d0c4811.js} | 2 +-
....js => edit.vue_vue_type_script_setup_true_lang.9e6f8458.js} | 2 +-
....js => edit.vue_vue_type_script_setup_true_lang.afd65d73.js} | 2 +-
....js => edit.vue_vue_type_script_setup_true_lang.cfb685b3.js} | 2 +-
....js => edit.vue_vue_type_script_setup_true_lang.eb1a840d.js} | 2 +-
....js => edit.vue_vue_type_script_setup_true_lang.fa755942.js} | 2 +-
.../assets/{environment.9c028147.js => environment.31988482.js} | 2 +-
frontend/assets/{error.bbecbd19.js => error.44f50702.js} | 2 +-
frontend/assets/{filing.c0128427.js => filing.8c860d69.js} | 2 +-
frontend/assets/{h5.bf33caf0.js => h5.45c2f189.js} | 2 +-
frontend/assets/{index.22684f2d.js => index.11e79e97.js} | 2 +-
frontend/assets/{index.be7557e1.js => index.1f6589be.js} | 2 +-
frontend/assets/{index.8ed21860.js => index.250c57ef.js} | 2 +-
frontend/assets/{index.51257dbf.js => index.2c0b17e2.js} | 2 +-
frontend/assets/{index.f8ce0dd6.js => index.3caec0d2.js} | 2 +-
frontend/assets/{index.80114ba1.js => index.443250ff.js} | 2 +-
frontend/assets/{index.47a9b05c.js => index.509bd33a.js} | 2 +-
frontend/assets/{index.1b118508.js => index.564e8918.js} | 2 +-
frontend/assets/{index.69e9c3d2.js => index.579fae68.js} | 2 +-
frontend/assets/{index.c5fc6e86.js => index.6f5e57de.js} | 2 +-
frontend/assets/{index.ea69f3d7.js => index.78e6f421.js} | 2 +-
frontend/assets/{index.18363a4b.js => index.82c66995.js} | 2 +-
frontend/assets/index.86c64501.js | 1 +
frontend/assets/{index.e14f68ca.js => index.8c4e7c10.js} | 2 +-
frontend/assets/{index.ac11c01a.js => index.9292be19.js} | 2 +-
frontend/assets/{index.e286ab25.js => index.93572373.js} | 2 +-
frontend/assets/{index.ccaa307e.js => index.a410ce81.js} | 2 +-
frontend/assets/index.ab5c8d8d.js | 1 -
frontend/assets/{index.2438fdf3.js => index.bd33a06b.js} | 2 +-
frontend/assets/{index.214bda01.js => index.bd7d87a4.js} | 2 +-
frontend/assets/{index.0d41654c.js => index.ccf61b69.js} | 2 +-
frontend/assets/{index.18e2b75c.js => index.de5d91e3.js} | 2 +-
frontend/assets/{index.25042873.js => index.ebabd122.js} | 2 +-
frontend/assets/{index.bbfa15b9.js => index.efbd00d8.js} | 2 +-
frontend/assets/{index.4e13152f.js => index.f610e3eb.js} | 2 +-
...js => index.vue_vue_type_script_setup_true_lang.70ec2c3d.js} | 2 +-
.../assets/{information.4073d5d6.js => information.3c551277.js} | 2 +-
frontend/assets/{journal.89b419d1.js => journal.9ec1ca1c.js} | 2 +-
frontend/assets/{login.60357f49.js => login.01c99bfd.js} | 2 +-
.../{login_register.e7af7f4b.js => login_register.71c3be54.js} | 2 +-
frontend/assets/{menu.9fdfcc4b.js => menu.8455a8d1.js} | 2 +-
frontend/assets/{menu.b5bc16bc.js => menu.b0ab4c9d.js} | 2 +-
frontend/assets/{menu.41e9d271.js => menu.cc69cc73.js} | 2 +-
frontend/assets/{message.22e9789c.js => message.e116a72b.js} | 2 +-
frontend/assets/{oa-phone.447561f1.js => oa-phone.0616c4f8.js} | 2 +-
frontend/assets/{picker.29f42532.js => picker.99919d7c.js} | 2 +-
.../picker.vue_vue_type_script_setup_true_lang.51278156.js | 1 -
.../picker.vue_vue_type_script_setup_true_lang.a54c417b.js | 1 +
frontend/assets/{post.58b0c96b.js => post.a69d1775.js} | 2 +-
frontend/assets/{preview.e32fae3c.js => preview.22432b8c.js} | 2 +-
frontend/assets/{protocol.a9c2913d.js => protocol.67d51dd2.js} | 2 +-
frontend/assets/{role.2bbcee68.js => role.60797ac7.js} | 2 +-
frontend/assets/{setting.7c608996.js => setting.2bb77880.js} | 2 +-
frontend/assets/{setup.3231b85d.js => setup.ad7e5238.js} | 2 +-
frontend/assets/{system.1922c702.js => system.f9c5c5ff.js} | 2 +-
frontend/assets/{tabbar.e23ab654.js => tabbar.2051945e.js} | 2 +-
.../{useDictOptions.254b0f8d.js => useDictOptions.7e2891d1.js} | 2 +-
frontend/assets/{user.389ea963.js => user.93efd8d1.js} | 2 +-
frontend/assets/{weapp.6cfabf95.js => weapp.bbf86f87.js} | 2 +-
frontend/assets/{website.c51a60f8.js => website.74c1813c.js} | 2 +-
frontend/assets/{wx_dev.35766af9.js => wx_dev.151204ae.js} | 2 +-
frontend/index.html | 2 +-
125 files changed, 119 insertions(+), 119 deletions(-)
rename frontend/assets/{403.e4f3c918.js => 403.de4e3f31.js} (84%)
rename frontend/assets/{404.9786a379.js => 404.377f1d7c.js} (84%)
rename frontend/assets/{add-nav.3ce1bab1.js => add-nav.9aee5f4e.js} (69%)
rename frontend/assets/{add-nav.vue_vue_type_script_setup_true_lang.1cb09cc7.js => add-nav.vue_vue_type_script_setup_true_lang.c1cec697.js} (90%)
create mode 100644 frontend/assets/article.83af4cc1.js
delete mode 100644 frontend/assets/article.99eb0f9b.js
rename frontend/assets/{attr-setting.e37998ca.js => attr-setting.cee2daa2.js} (50%)
rename frontend/assets/{attr-setting.vue_vue_type_script_setup_true_lang.1fae1728.js => attr-setting.vue_vue_type_script_setup_true_lang.c086565f.js} (91%)
rename frontend/assets/{attr.171d319e.js => attr.15cd3970.js} (70%)
rename frontend/assets/{attr.33354c52.js => attr.484656d5.js} (70%)
rename frontend/assets/{attr.10cfc8c2.js => attr.49f1a472.js} (69%)
rename frontend/assets/{attr.f14c9c46.js => attr.7944fe9e.js} (68%)
rename frontend/assets/{attr.ef36576b.js => attr.fa0f47c2.js} (69%)
rename frontend/assets/{attr.vue_vue_type_script_setup_true_lang.b011bc50.js => attr.vue_vue_type_script_setup_true_lang.2a1b1b18.js} (94%)
rename frontend/assets/{attr.vue_vue_type_script_setup_true_lang.741d6988.js => attr.vue_vue_type_script_setup_true_lang.920d9401.js} (94%)
rename frontend/assets/{attr.vue_vue_type_script_setup_true_lang.1b6e0b72.js => attr.vue_vue_type_script_setup_true_lang.a4d005a2.js} (89%)
rename frontend/assets/{attr.vue_vue_type_script_setup_true_lang.1a7dc398.js => attr.vue_vue_type_script_setup_true_lang.be11ffff.js} (89%)
rename frontend/assets/{attr.vue_vue_type_script_setup_true_lang.acb50d99.js => attr.vue_vue_type_script_setup_true_lang.ee163012.js} (95%)
rename frontend/assets/{auth.b12faf5b.js => auth.e57238e3.js} (61%)
rename frontend/assets/{auth.vue_vue_type_script_setup_true_lang.358a1248.js => auth.vue_vue_type_script_setup_true_lang.80191698.js} (92%)
rename frontend/assets/{cache.84d3f588.js => cache.3e97438c.js} (97%)
rename frontend/assets/{code-preview.000c18e8.js => code-preview.6c33b572.js} (77%)
rename frontend/assets/{code-preview.vue_vue_type_script_setup_true_lang.6ad1d693.js => code-preview.vue_vue_type_script_setup_true_lang.15a5c65d.js} (95%)
rename frontend/assets/{code.c9ce80f0.js => code.3cf40a70.js} (91%)
rename frontend/assets/{config.e193244c.js => config.4f0b069d.js} (95%)
rename frontend/assets/{consumer.7d123ee3.js => consumer.38a56cd4.js} (73%)
delete mode 100644 frontend/assets/content.0444bd3e.js
create mode 100644 frontend/assets/content.10c5ef91.js
rename frontend/assets/{content.f81b935d.js => content.279cc4b8.js} (95%)
delete mode 100644 frontend/assets/content.36eb2157.css
rename frontend/assets/{content.be9a8727.js => content.38542add.js} (96%)
rename frontend/assets/{content.f0e3062b.js => content.7ebe44c2.js} (95%)
rename frontend/assets/{content.6731c988.js => content.8e4748da.js} (88%)
rename frontend/assets/{content.b1a283df.js => content.b6235baf.js} (95%)
rename frontend/assets/{content.de37368d.js => content.b9fdf952.js} (88%)
create mode 100644 frontend/assets/content.c4421dd6.css
rename frontend/assets/{content.vue_vue_type_script_setup_true_lang.ef2a15e8.js => content.vue_vue_type_script_setup_true_lang.2c4c92b3.js} (88%)
rename frontend/assets/{content.vue_vue_type_script_setup_true_lang.d03661f0.js => content.vue_vue_type_script_setup_true_lang.a3e925ac.js} (89%)
rename frontend/assets/{data-table.ed54bc77.js => data-table.52b6010f.js} (72%)
rename frontend/assets/{data-table.vue_vue_type_script_setup_true_lang.710e99ff.js => data-table.vue_vue_type_script_setup_true_lang.13faadd0.js} (94%)
rename frontend/assets/{decoration.2abda6d2.js => decoration.3e5b07ec.js} (82%)
rename frontend/assets/{department.9406e6bc.js => department.e46fc6ed.js} (84%)
rename frontend/assets/{detail.2219538e.js => detail.916c9e0d.js} (97%)
rename frontend/assets/{dict.25b3b485.js => dict.e61ac0ab.js} (91%)
rename frontend/assets/{edit.8404748b.js => edit.02870cdf.js} (63%)
rename frontend/assets/{edit.76e2fd3f.js => edit.3108f075.js} (70%)
rename frontend/assets/{edit.88801a2a.js => edit.688442b1.js} (62%)
rename frontend/assets/{edit.00fac06d.js => edit.6dd21900.js} (95%)
rename frontend/assets/{edit.c3ab3060.js => edit.85e2c473.js} (62%)
rename frontend/assets/{edit.891ad818.js => edit.9a6d872c.js} (97%)
rename frontend/assets/{edit.73859b48.js => edit.b8af9f56.js} (63%)
rename frontend/assets/{edit.8f8ffbf6.js => edit.ba33bd0b.js} (63%)
create mode 100644 frontend/assets/edit.c69b54b5.js
rename frontend/assets/{edit.ca586e36.js => edit.e6304b22.js} (61%)
rename frontend/assets/{edit.bee712b3.js => edit.ecd2816c.js} (58%)
delete mode 100644 frontend/assets/edit.f3f245b1.js
rename frontend/assets/{edit.80c74cc4.js => edit.fbdf40f6.js} (63%)
rename frontend/assets/{edit.b6a5ced9.js => edit.fede8366.js} (70%)
rename frontend/assets/{edit.vue_vue_type_script_setup_true_lang.e1d8ecd9.js => edit.vue_vue_type_script_setup_true_lang.0d4b0bdf.js} (92%)
rename frontend/assets/{edit.vue_vue_type_script_setup_true_lang.332e6c44.js => edit.vue_vue_type_script_setup_true_lang.2ddf59bd.js} (92%)
rename frontend/assets/{edit.vue_vue_type_script_setup_true_lang.4a41cfb9.js => edit.vue_vue_type_script_setup_true_lang.3597711b.js} (93%)
rename frontend/assets/{edit.vue_vue_type_script_setup_true_lang.1f146d0a.js => edit.vue_vue_type_script_setup_true_lang.3c27164b.js} (98%)
rename frontend/assets/{edit.vue_vue_type_script_setup_true_lang.95237981.js => edit.vue_vue_type_script_setup_true_lang.7d0c4811.js} (90%)
rename frontend/assets/{edit.vue_vue_type_script_setup_true_lang.85afe771.js => edit.vue_vue_type_script_setup_true_lang.9e6f8458.js} (94%)
rename frontend/assets/{edit.vue_vue_type_script_setup_true_lang.6383396b.js => edit.vue_vue_type_script_setup_true_lang.afd65d73.js} (97%)
rename frontend/assets/{edit.vue_vue_type_script_setup_true_lang.29312fb0.js => edit.vue_vue_type_script_setup_true_lang.cfb685b3.js} (93%)
rename frontend/assets/{edit.vue_vue_type_script_setup_true_lang.7b1d4669.js => edit.vue_vue_type_script_setup_true_lang.eb1a840d.js} (93%)
rename frontend/assets/{edit.vue_vue_type_script_setup_true_lang.23109308.js => edit.vue_vue_type_script_setup_true_lang.fa755942.js} (91%)
rename frontend/assets/{environment.9c028147.js => environment.31988482.js} (97%)
rename frontend/assets/{error.bbecbd19.js => error.44f50702.js} (96%)
rename frontend/assets/{filing.c0128427.js => filing.8c860d69.js} (93%)
rename frontend/assets/{h5.bf33caf0.js => h5.45c2f189.js} (96%)
rename frontend/assets/{index.22684f2d.js => index.11e79e97.js} (95%)
rename frontend/assets/{index.be7557e1.js => index.1f6589be.js} (99%)
rename frontend/assets/{index.8ed21860.js => index.250c57ef.js} (85%)
rename frontend/assets/{index.51257dbf.js => index.2c0b17e2.js} (93%)
rename frontend/assets/{index.f8ce0dd6.js => index.3caec0d2.js} (99%)
rename frontend/assets/{index.80114ba1.js => index.443250ff.js} (94%)
rename frontend/assets/{index.47a9b05c.js => index.509bd33a.js} (93%)
rename frontend/assets/{index.1b118508.js => index.564e8918.js} (95%)
rename frontend/assets/{index.69e9c3d2.js => index.579fae68.js} (94%)
rename frontend/assets/{index.c5fc6e86.js => index.6f5e57de.js} (76%)
rename frontend/assets/{index.ea69f3d7.js => index.78e6f421.js} (96%)
rename frontend/assets/{index.18363a4b.js => index.82c66995.js} (93%)
create mode 100644 frontend/assets/index.86c64501.js
rename frontend/assets/{index.e14f68ca.js => index.8c4e7c10.js} (89%)
rename frontend/assets/{index.ac11c01a.js => index.9292be19.js} (94%)
rename frontend/assets/{index.e286ab25.js => index.93572373.js} (97%)
rename frontend/assets/{index.ccaa307e.js => index.a410ce81.js} (96%)
delete mode 100644 frontend/assets/index.ab5c8d8d.js
rename frontend/assets/{index.2438fdf3.js => index.bd33a06b.js} (97%)
rename frontend/assets/{index.214bda01.js => index.bd7d87a4.js} (90%)
rename frontend/assets/{index.0d41654c.js => index.ccf61b69.js} (67%)
rename frontend/assets/{index.18e2b75c.js => index.de5d91e3.js} (92%)
rename frontend/assets/{index.25042873.js => index.ebabd122.js} (89%)
rename frontend/assets/{index.bbfa15b9.js => index.efbd00d8.js} (85%)
rename frontend/assets/{index.4e13152f.js => index.f610e3eb.js} (91%)
rename frontend/assets/{index.vue_vue_type_script_setup_true_lang.08d677b4.js => index.vue_vue_type_script_setup_true_lang.70ec2c3d.js} (90%)
rename frontend/assets/{information.4073d5d6.js => information.3c551277.js} (92%)
rename frontend/assets/{journal.89b419d1.js => journal.9ec1ca1c.js} (97%)
rename frontend/assets/{login.60357f49.js => login.01c99bfd.js} (98%)
rename frontend/assets/{login_register.e7af7f4b.js => login_register.71c3be54.js} (97%)
rename frontend/assets/{menu.9fdfcc4b.js => menu.8455a8d1.js} (84%)
rename frontend/assets/{menu.b5bc16bc.js => menu.b0ab4c9d.js} (95%)
rename frontend/assets/{menu.41e9d271.js => menu.cc69cc73.js} (85%)
rename frontend/assets/{message.22e9789c.js => message.e116a72b.js} (86%)
rename frontend/assets/{oa-phone.447561f1.js => oa-phone.0616c4f8.js} (95%)
rename frontend/assets/{picker.29f42532.js => picker.99919d7c.js} (95%)
delete mode 100644 frontend/assets/picker.vue_vue_type_script_setup_true_lang.51278156.js
create mode 100644 frontend/assets/picker.vue_vue_type_script_setup_true_lang.a54c417b.js
rename frontend/assets/{post.58b0c96b.js => post.a69d1775.js} (86%)
rename frontend/assets/{preview.e32fae3c.js => preview.22432b8c.js} (62%)
rename frontend/assets/{protocol.a9c2913d.js => protocol.67d51dd2.js} (86%)
rename frontend/assets/{role.2bbcee68.js => role.60797ac7.js} (86%)
rename frontend/assets/{setting.7c608996.js => setting.2bb77880.js} (93%)
rename frontend/assets/{setup.3231b85d.js => setup.ad7e5238.js} (85%)
rename frontend/assets/{system.1922c702.js => system.f9c5c5ff.js} (72%)
rename frontend/assets/{tabbar.e23ab654.js => tabbar.2051945e.js} (93%)
rename frontend/assets/{useDictOptions.254b0f8d.js => useDictOptions.7e2891d1.js} (84%)
rename frontend/assets/{user.389ea963.js => user.93efd8d1.js} (80%)
rename frontend/assets/{weapp.6cfabf95.js => weapp.bbf86f87.js} (95%)
rename frontend/assets/{website.c51a60f8.js => website.74c1813c.js} (86%)
rename frontend/assets/{wx_dev.35766af9.js => wx_dev.151204ae.js} (95%)
diff --git a/admin/src/views/decoration/component/widgets/my-service/content.vue b/admin/src/views/decoration/component/widgets/my-service/content.vue
index 6f360b83..a43ceebe 100644
--- a/admin/src/views/decoration/component/widgets/my-service/content.vue
+++ b/admin/src/views/decoration/component/widgets/my-service/content.vue
@@ -9,7 +9,7 @@
:key="index"
class="flex flex-col items-center w-1/4 mb-[15px]"
>
-
+
{{ item.name }}
diff --git a/frontend/assets/403.e4f3c918.js b/frontend/assets/403.de4e3f31.js
similarity index 84%
rename from frontend/assets/403.e4f3c918.js
rename to frontend/assets/403.de4e3f31.js
index 9d16921f..e0431306 100644
--- a/frontend/assets/403.e4f3c918.js
+++ b/frontend/assets/403.de4e3f31.js
@@ -1 +1 @@
-import o from"./error.bbecbd19.js";import{d as r,o as t,c as m,V as p}from"./@vue.cab01781.js";import"./element-plus.f93fd622.js";import"./@vueuse.724ed0af.js";import"./@element-plus.92b4185f.js";import"./lodash-es.29c53eac.js";import"./dayjs.66926594.js";import"./axios.2d915936.js";import"./async-validator.fb49d0f5.js";import"./@ctrl.82a509e0.js";import"./@popperjs.36402333.js";import"./escape-html.e5dfadb9.js";import"./normalize-wheel-es.8aeb3683.js";import"./vue-router.5046cc50.js";import"./index.ab5c8d8d.js";import"./lodash.b68d77aa.js";import"./pinia.e85e8286.js";import"./vue-demi.bfae2336.js";import"./css-color-function.a8f9466d.js";import"./color.903ca10f.js";import"./clone.9d64bb7a.js";import"./color-convert.69e17089.js";import"./color-string.e356f5de.js";import"./color-name.e7a4e1d3.js";import"./nprogress.a96d99f2.js";import"./echarts.6ad8c478.js";import"./zrender.f91f2f01.js";import"./highlight.js.4ebdf9a4.js";import"./@highlightjs.0ab41b7b.js";const i={class:"error404"},J=r({__name:"403",setup(u){return(e,s)=>(t(),m("div",i,[p(o,{code:"403",title:"\u60A8\u7684\u8D26\u53F7\u6743\u9650\u4E0D\u8DB3\uFF0C\u8BF7\u8054\u7CFB\u7BA1\u7406\u5458\u6DFB\u52A0\u6743\u9650\uFF01","show-btn":!1})]))}});export{J as default};
+import o from"./error.44f50702.js";import{d as r,o as t,c as m,V as p}from"./@vue.cab01781.js";import"./element-plus.f93fd622.js";import"./@vueuse.724ed0af.js";import"./@element-plus.92b4185f.js";import"./lodash-es.29c53eac.js";import"./dayjs.66926594.js";import"./axios.2d915936.js";import"./async-validator.fb49d0f5.js";import"./@ctrl.82a509e0.js";import"./@popperjs.36402333.js";import"./escape-html.e5dfadb9.js";import"./normalize-wheel-es.8aeb3683.js";import"./vue-router.5046cc50.js";import"./index.86c64501.js";import"./lodash.b68d77aa.js";import"./pinia.e85e8286.js";import"./vue-demi.bfae2336.js";import"./css-color-function.a8f9466d.js";import"./color.903ca10f.js";import"./clone.9d64bb7a.js";import"./color-convert.69e17089.js";import"./color-string.e356f5de.js";import"./color-name.e7a4e1d3.js";import"./nprogress.a96d99f2.js";import"./echarts.6ad8c478.js";import"./zrender.f91f2f01.js";import"./highlight.js.4ebdf9a4.js";import"./@highlightjs.0ab41b7b.js";const i={class:"error404"},J=r({__name:"403",setup(u){return(e,s)=>(t(),m("div",i,[p(o,{code:"403",title:"\u60A8\u7684\u8D26\u53F7\u6743\u9650\u4E0D\u8DB3\uFF0C\u8BF7\u8054\u7CFB\u7BA1\u7406\u5458\u6DFB\u52A0\u6743\u9650\uFF01","show-btn":!1})]))}});export{J as default};
diff --git a/frontend/assets/404.9786a379.js b/frontend/assets/404.377f1d7c.js
similarity index 84%
rename from frontend/assets/404.9786a379.js
rename to frontend/assets/404.377f1d7c.js
index 2c5949ce..e57e7a77 100644
--- a/frontend/assets/404.9786a379.js
+++ b/frontend/assets/404.377f1d7c.js
@@ -1 +1 @@
-import o from"./error.bbecbd19.js";import{d as r,o as t,c as m,V as p}from"./@vue.cab01781.js";import"./element-plus.f93fd622.js";import"./@vueuse.724ed0af.js";import"./@element-plus.92b4185f.js";import"./lodash-es.29c53eac.js";import"./dayjs.66926594.js";import"./axios.2d915936.js";import"./async-validator.fb49d0f5.js";import"./@ctrl.82a509e0.js";import"./@popperjs.36402333.js";import"./escape-html.e5dfadb9.js";import"./normalize-wheel-es.8aeb3683.js";import"./vue-router.5046cc50.js";import"./index.ab5c8d8d.js";import"./lodash.b68d77aa.js";import"./pinia.e85e8286.js";import"./vue-demi.bfae2336.js";import"./css-color-function.a8f9466d.js";import"./color.903ca10f.js";import"./clone.9d64bb7a.js";import"./color-convert.69e17089.js";import"./color-string.e356f5de.js";import"./color-name.e7a4e1d3.js";import"./nprogress.a96d99f2.js";import"./echarts.6ad8c478.js";import"./zrender.f91f2f01.js";import"./highlight.js.4ebdf9a4.js";import"./@highlightjs.0ab41b7b.js";const i={class:"error404"},J=r({__name:"404",setup(e){return(u,c)=>(t(),m("div",i,[p(o,{code:"404",title:"\u54CE\u5440\uFF0C\u51FA\u9519\u4E86\uFF01\u60A8\u8BBF\u95EE\u7684\u9875\u9762\u4E0D\u5B58\u5728\u2026"})]))}});export{J as default};
+import o from"./error.44f50702.js";import{d as r,o as t,c as m,V as p}from"./@vue.cab01781.js";import"./element-plus.f93fd622.js";import"./@vueuse.724ed0af.js";import"./@element-plus.92b4185f.js";import"./lodash-es.29c53eac.js";import"./dayjs.66926594.js";import"./axios.2d915936.js";import"./async-validator.fb49d0f5.js";import"./@ctrl.82a509e0.js";import"./@popperjs.36402333.js";import"./escape-html.e5dfadb9.js";import"./normalize-wheel-es.8aeb3683.js";import"./vue-router.5046cc50.js";import"./index.86c64501.js";import"./lodash.b68d77aa.js";import"./pinia.e85e8286.js";import"./vue-demi.bfae2336.js";import"./css-color-function.a8f9466d.js";import"./color.903ca10f.js";import"./clone.9d64bb7a.js";import"./color-convert.69e17089.js";import"./color-string.e356f5de.js";import"./color-name.e7a4e1d3.js";import"./nprogress.a96d99f2.js";import"./echarts.6ad8c478.js";import"./zrender.f91f2f01.js";import"./highlight.js.4ebdf9a4.js";import"./@highlightjs.0ab41b7b.js";const i={class:"error404"},J=r({__name:"404",setup(e){return(u,c)=>(t(),m("div",i,[p(o,{code:"404",title:"\u54CE\u5440\uFF0C\u51FA\u9519\u4E86\uFF01\u60A8\u8BBF\u95EE\u7684\u9875\u9762\u4E0D\u5B58\u5728\u2026"})]))}});export{J as default};
diff --git a/frontend/assets/add-nav.3ce1bab1.js b/frontend/assets/add-nav.9aee5f4e.js
similarity index 69%
rename from frontend/assets/add-nav.3ce1bab1.js
rename to frontend/assets/add-nav.9aee5f4e.js
index 622413dd..81059543 100644
--- a/frontend/assets/add-nav.3ce1bab1.js
+++ b/frontend/assets/add-nav.9aee5f4e.js
@@ -1 +1 @@
-import"./add-nav.vue_vue_type_script_setup_true_lang.1cb09cc7.js";import{_ as Q}from"./add-nav.vue_vue_type_script_setup_true_lang.1cb09cc7.js";import"./element-plus.f93fd622.js";import"./@vue.cab01781.js";import"./@vueuse.724ed0af.js";import"./@element-plus.92b4185f.js";import"./lodash-es.29c53eac.js";import"./dayjs.66926594.js";import"./axios.2d915936.js";import"./async-validator.fb49d0f5.js";import"./@ctrl.82a509e0.js";import"./@popperjs.36402333.js";import"./escape-html.e5dfadb9.js";import"./normalize-wheel-es.8aeb3683.js";import"./index.e14f68ca.js";import"./index.ab5c8d8d.js";import"./lodash.b68d77aa.js";import"./vue-router.5046cc50.js";import"./pinia.e85e8286.js";import"./vue-demi.bfae2336.js";import"./css-color-function.a8f9466d.js";import"./color.903ca10f.js";import"./clone.9d64bb7a.js";import"./color-convert.69e17089.js";import"./color-string.e356f5de.js";import"./color-name.e7a4e1d3.js";import"./nprogress.a96d99f2.js";import"./echarts.6ad8c478.js";import"./zrender.f91f2f01.js";import"./highlight.js.4ebdf9a4.js";import"./@highlightjs.0ab41b7b.js";import"./picker.vue_vue_type_script_setup_true_lang.51278156.js";import"./index.ea69f3d7.js";import"./picker.29f42532.js";import"./index.be7557e1.js";import"./usePaging.226fac59.js";import"./index.vue_vue_type_script_setup_true_lang.6f61ba2e.js";import"./vue3-video-play.05975c53.js";import"./vuedraggable.a5db575d.js";import"./vue.de4be77f.js";import"./sortablejs.cd7e2c7e.js";export{Q as default};
+import"./add-nav.vue_vue_type_script_setup_true_lang.c1cec697.js";import{_ as Q}from"./add-nav.vue_vue_type_script_setup_true_lang.c1cec697.js";import"./element-plus.f93fd622.js";import"./@vue.cab01781.js";import"./@vueuse.724ed0af.js";import"./@element-plus.92b4185f.js";import"./lodash-es.29c53eac.js";import"./dayjs.66926594.js";import"./axios.2d915936.js";import"./async-validator.fb49d0f5.js";import"./@ctrl.82a509e0.js";import"./@popperjs.36402333.js";import"./escape-html.e5dfadb9.js";import"./normalize-wheel-es.8aeb3683.js";import"./index.8c4e7c10.js";import"./index.86c64501.js";import"./lodash.b68d77aa.js";import"./vue-router.5046cc50.js";import"./pinia.e85e8286.js";import"./vue-demi.bfae2336.js";import"./css-color-function.a8f9466d.js";import"./color.903ca10f.js";import"./clone.9d64bb7a.js";import"./color-convert.69e17089.js";import"./color-string.e356f5de.js";import"./color-name.e7a4e1d3.js";import"./nprogress.a96d99f2.js";import"./echarts.6ad8c478.js";import"./zrender.f91f2f01.js";import"./highlight.js.4ebdf9a4.js";import"./@highlightjs.0ab41b7b.js";import"./picker.vue_vue_type_script_setup_true_lang.a54c417b.js";import"./index.78e6f421.js";import"./picker.99919d7c.js";import"./index.1f6589be.js";import"./usePaging.226fac59.js";import"./index.vue_vue_type_script_setup_true_lang.6f61ba2e.js";import"./vue3-video-play.05975c53.js";import"./vuedraggable.a5db575d.js";import"./vue.de4be77f.js";import"./sortablejs.cd7e2c7e.js";export{Q as default};
diff --git a/frontend/assets/add-nav.vue_vue_type_script_setup_true_lang.1cb09cc7.js b/frontend/assets/add-nav.vue_vue_type_script_setup_true_lang.c1cec697.js
similarity index 90%
rename from frontend/assets/add-nav.vue_vue_type_script_setup_true_lang.1cb09cc7.js
rename to frontend/assets/add-nav.vue_vue_type_script_setup_true_lang.c1cec697.js
index d6e29295..186681f4 100644
--- a/frontend/assets/add-nav.vue_vue_type_script_setup_true_lang.1cb09cc7.js
+++ b/frontend/assets/add-nav.vue_vue_type_script_setup_true_lang.c1cec697.js
@@ -1 +1 @@
-import{y as b,u as v}from"./element-plus.f93fd622.js";import{_ as y}from"./index.e14f68ca.js";import{_ as F}from"./picker.vue_vue_type_script_setup_true_lang.51278156.js";import{_ as A}from"./picker.29f42532.js";import{f as _,b as B}from"./index.ab5c8d8d.js";import{d as E,o as u,c as r,a as e,W as D,a8 as C,L as U,M as m,V as t,T as $}from"./@vue.cab01781.js";const w={class:"bg-fill-light flex items-center w-full p-4 mb-4"},N={class:"upload-btn w-[60px] h-[60px]"},z={class:"ml-3 flex-1"},L={class:"flex"},T=e("span",{class:"text-tx-regular flex-none mr-3"},"\u540D\u79F0",-1),I={class:"flex mt-[18px]"},M=e("span",{class:"text-tx-regular flex-none mr-3"},"\u94FE\u63A5",-1),P=$("\u6DFB\u52A0"),K=E({__name:"add-nav",props:{modelValue:{type:Array,default:()=>[]},max:{type:Number,default:10},min:{type:Number,default:1}},setup(d){const l=d,p=()=>{var n;((n=l.modelValue)==null?void 0:n.length)