diff --git a/src/api/modules/profile/personalCenter.ts b/src/api/modules/profile/personalCenter.ts new file mode 100644 index 0000000..07df0d3 --- /dev/null +++ b/src/api/modules/profile/personalCenter.ts @@ -0,0 +1,40 @@ +import { request } from '@/api'; + +// 获取用户信息 +export async function getUserInfoApi() { + return request.get('/user/getUserInfo'); +} + +// 修改语言类型 +export async function editLangTypeApi(lang_type: number) { + return request.post('/user/editLangType', { lang_type }); +} + +// 绑定手机号 +export async function bindMobileApi(data: { mobile: string; code: string }) { + return request.post('/user/bindMobile', data); +} + +// 绑定邮箱 +export async function bindEmailApi(data: { email: string; code: string }) { + return request.post('/user/bindEmail', data); +} + +// 修改用户名 +export async function editUsernameApi(data: { user_id: number; username: string }) { + return request.post('/user/editUser', data); +} + + +// 短信验证码修改密码 +// 验证码修改密码(统一接口) +export async function updatePwdByCaptchaApi(data: { + reg_type: number; + email?: string; + mobile?: string; + code: string; + login_password1: string; + login_password2: string; +}) { + return request.post('/user/editLoginPass', data); +} \ No newline at end of file diff --git a/src/stores/modules/user.ts b/src/stores/modules/user.ts index 2879d53..29cc06c 100644 --- a/src/stores/modules/user.ts +++ b/src/stores/modules/user.ts @@ -176,6 +176,7 @@ return { sideMenu, // 方法(箭头函数) login, + setUserInfo, register, logout, forgotPassword, diff --git a/src/views/agent/user/default.vue b/src/views/agent/user/default.vue new file mode 100644 index 0000000..1f4bfc3 --- /dev/null +++ b/src/views/agent/user/default.vue @@ -0,0 +1,322 @@ + + + + + \ No newline at end of file diff --git a/src/views/agent/user/index.vue b/src/views/agent/user/index.vue index 07900fd..92e7b96 100644 --- a/src/views/agent/user/index.vue +++ b/src/views/agent/user/index.vue @@ -7,6 +7,7 @@ @search="handleSearch" @reset="handleReset" > + + + - + + + + @@ -99,6 +110,10 @@ import CustomerListTable from '@/components/common/Table.vue' import CustomerListPagination from '@/components/common/Pagination.vue' import CustomerListDialog from '@/components/common/Dialog.vue' import CustomerListForm from '@/components/common/Form.vue' + +// 👇 引入同目录的抽屉组件(default.vue) +import CustomerDetailDrawer from './default.vue' + // 配置以及表单验证 import { search, tableColumns, marginRatioTableColumns, commissionRatioFormItem } from './options' @@ -112,6 +127,7 @@ import { // 公用方法 import { getStorage } from '@/utils/storage' const router = useRouter() + /** * @description: 获取用户id */ @@ -151,6 +167,11 @@ const dialogTitle = ref('') const dialogType = ref('') const dialogFullscreen = ref(false) +// ===================== 【新增】详情抽屉状态 ===================== +const detailDrawerVisible = ref(false) +const detailQueryId = ref('') // 传给抽屉的查询ID +const detailDrawerTitle = ref('') // 传给抽屉的标题 + /** * @description: 定义点差表格数据 */ @@ -309,9 +330,18 @@ const handleReset = () => { /** * @description: 定义表格方法 */ + +// ===================== 【新增】打开详情抽屉(把ID传过去) ===================== +const openDetailDrawer = (row: any) => { + detailQueryId.value = row.userId + detailDrawerTitle.value = `${row.accountName} - 客户详情` + detailDrawerVisible.value = true +} + +// 👇 旧的路由跳转可以删掉或保留 const handleDetail = (row: any) => { - console.log('查看详情', row) - router.push(`/agent/customerDetail/${row.userId}`) + console.log('查看详情(旧路由)', row) + // router.push(`/agent/customerDetail/${row.userId}`) } // 修改点差 @@ -443,15 +473,13 @@ const handleCancel = () => { const handleClose = () => { dialogVisible.value = false } -/** - * @description: 定义弹窗表格方法 - */ + + + \ No newline at end of file diff --git a/src/views/capital/transfer/index.vue b/src/views/capital/transfer/index.vue index 60fd60a..ad3f515 100644 --- a/src/views/capital/transfer/index.vue +++ b/src/views/capital/transfer/index.vue @@ -111,6 +111,7 @@ placeholder="请输入验证码" > + {{ sendState.isCounting ? `${sendState.countdown}s后重新获取` : '发送验证码' }} diff --git a/src/views/profile/personalCenter/index.vue b/src/views/profile/personalCenter/index.vue new file mode 100644 index 0000000..b9c7702 --- /dev/null +++ b/src/views/profile/personalCenter/index.vue @@ -0,0 +1,552 @@ + + + + + \ No newline at end of file diff --git a/vite.config.ts b/vite.config.ts index e8c97d2..e5ba6a7 100644 --- a/vite.config.ts +++ b/vite.config.ts @@ -1,5 +1,6 @@ import { fileURLToPath, URL } from 'node:url' -import { loadEnv, defineConfig, ConfigEnv, ViteConfig } from 'vite' +import { loadEnv, defineConfig, ConfigEnv } from 'vite' +import type { UserConfig } from 'vite' import vue from '@vitejs/plugin-vue' import vueDevTools from 'vite-plugin-vue-devtools' @@ -11,10 +12,16 @@ import Components from 'unplugin-vue-components/vite' import { ElementPlusResolver } from 'unplugin-vue-components/resolvers' // https://vite.dev/config/ -export default defineConfig(({ mode }: ConfigEnv): ViteConfig => { +export default defineConfig(({ mode }: ConfigEnv): UserConfig => { const isProduction = mode === 'production' const env = loadEnv(mode, process.cwd()) return { + esbuild: { + drop: isProduction ? ['console', 'debugger'] : [], + // minifyIdentifiers: true, + minifySyntax: true, + minifyWhitespace: true, + }, plugins: [ vue(), // 生产环境移除 devTools 插件(减少产物体积) @@ -63,12 +70,6 @@ export default defineConfig(({ mode }: ConfigEnv): ViteConfig => { // 压缩配置 minify: 'esbuild', - esbuild: { - drop: isProduction ? ['console', 'debugger'] : [], - minifyIdentifiers: true, - minifySyntax: true, - minifyWhitespace: true, - }, // 大文件警告阈值(默认500KB,可调整) chunkSizeWarningLimit: 1000, @@ -82,7 +83,6 @@ export default defineConfig(({ mode }: ConfigEnv): ViteConfig => { server: { host: true, port: 9999, - https: false, open: true, proxy: { '/api': {