|
@@ -9,14 +9,14 @@
|
|
|
@keyup.enter="handleQuery"
|
|
@keyup.enter="handleQuery"
|
|
|
/>
|
|
/>
|
|
|
</el-form-item>
|
|
</el-form-item>
|
|
|
- <el-form-item label="用戶暱稱" prop="nickname">
|
|
|
|
|
- <el-input
|
|
|
|
|
- v-model="queryParams.nickname"
|
|
|
|
|
- placeholder="請輸入用戶暱稱"
|
|
|
|
|
- clearable
|
|
|
|
|
- @keyup.enter="handleQuery"
|
|
|
|
|
- />
|
|
|
|
|
- </el-form-item>
|
|
|
|
|
|
|
+<!-- <el-form-item label="用戶暱稱" prop="nickname">-->
|
|
|
|
|
+<!-- <el-input-->
|
|
|
|
|
+<!-- v-model="queryParams.nickname"-->
|
|
|
|
|
+<!-- placeholder="請輸入用戶暱稱"-->
|
|
|
|
|
+<!-- clearable-->
|
|
|
|
|
+<!-- @keyup.enter="handleQuery"-->
|
|
|
|
|
+<!-- />-->
|
|
|
|
|
+<!-- </el-form-item>-->
|
|
|
<el-form-item label="手機號碼" prop="phone">
|
|
<el-form-item label="手機號碼" prop="phone">
|
|
|
<el-input
|
|
<el-input
|
|
|
v-model="queryParams.phone"
|
|
v-model="queryParams.phone"
|
|
@@ -25,36 +25,36 @@
|
|
|
@keyup.enter="handleQuery"
|
|
@keyup.enter="handleQuery"
|
|
|
/>
|
|
/>
|
|
|
</el-form-item>
|
|
</el-form-item>
|
|
|
- <el-form-item label="是否為代理" prop="isAgent">
|
|
|
|
|
- <el-select v-model="queryParams.isAgent" placeholder="請選擇是否為代理" clearable style="width: 240px">
|
|
|
|
|
- <el-option
|
|
|
|
|
- label="是"
|
|
|
|
|
- :value="true"
|
|
|
|
|
- />
|
|
|
|
|
- <el-option
|
|
|
|
|
- label="否"
|
|
|
|
|
- :value="false"
|
|
|
|
|
- />
|
|
|
|
|
- </el-select>
|
|
|
|
|
- </el-form-item>
|
|
|
|
|
- <el-form-item label="狀態" prop="status">
|
|
|
|
|
- <el-select v-model="queryParams.status" placeholder="用戶狀態" clearable style="width: 240px">
|
|
|
|
|
- <el-option
|
|
|
|
|
- v-for="dict in sys_normal_disable"
|
|
|
|
|
- :key="dict.value"
|
|
|
|
|
- :label="dict.label"
|
|
|
|
|
- :value="dict.value"
|
|
|
|
|
- />
|
|
|
|
|
- </el-select>
|
|
|
|
|
- </el-form-item>
|
|
|
|
|
- <el-form-item label="所屬代理ID" prop="agentId">
|
|
|
|
|
- <el-input
|
|
|
|
|
- v-model="queryParams.agentId"
|
|
|
|
|
- placeholder="請輸入所屬代理ID"
|
|
|
|
|
- clearable
|
|
|
|
|
- @keyup.enter="handleQuery"
|
|
|
|
|
- />
|
|
|
|
|
- </el-form-item>
|
|
|
|
|
|
|
+<!-- <el-form-item label="是否為代理" prop="isAgent">-->
|
|
|
|
|
+<!-- <el-select v-model="queryParams.isAgent" placeholder="請選擇是否為代理" clearable style="width: 240px">-->
|
|
|
|
|
+<!-- <el-option-->
|
|
|
|
|
+<!-- label="是"-->
|
|
|
|
|
+<!-- :value="true"-->
|
|
|
|
|
+<!-- />-->
|
|
|
|
|
+<!-- <el-option-->
|
|
|
|
|
+<!-- label="否"-->
|
|
|
|
|
+<!-- :value="false"-->
|
|
|
|
|
+<!-- />-->
|
|
|
|
|
+<!-- </el-select>-->
|
|
|
|
|
+<!-- </el-form-item>-->
|
|
|
|
|
+<!-- <el-form-item label="狀態" prop="status">-->
|
|
|
|
|
+<!-- <el-select v-model="queryParams.status" placeholder="用戶狀態" clearable style="width: 240px">-->
|
|
|
|
|
+<!-- <el-option-->
|
|
|
|
|
+<!-- v-for="dict in sys_normal_disable"-->
|
|
|
|
|
+<!-- :key="dict.value"-->
|
|
|
|
|
+<!-- :label="dict.label"-->
|
|
|
|
|
+<!-- :value="dict.value"-->
|
|
|
|
|
+<!-- />-->
|
|
|
|
|
+<!-- </el-select>-->
|
|
|
|
|
+<!-- </el-form-item>-->
|
|
|
|
|
+<!-- <el-form-item label="所屬代理ID" prop="agentId">-->
|
|
|
|
|
+<!-- <el-input-->
|
|
|
|
|
+<!-- v-model="queryParams.agentId"-->
|
|
|
|
|
+<!-- placeholder="請輸入所屬代理ID"-->
|
|
|
|
|
+<!-- clearable-->
|
|
|
|
|
+<!-- @keyup.enter="handleQuery"-->
|
|
|
|
|
+<!-- />-->
|
|
|
|
|
+<!-- </el-form-item>-->
|
|
|
<el-form-item>
|
|
<el-form-item>
|
|
|
<el-button type="primary" icon="Search" @click="handleQuery">搜尋</el-button>
|
|
<el-button type="primary" icon="Search" @click="handleQuery">搜尋</el-button>
|
|
|
<el-button icon="Refresh" @click="resetQuery">重設</el-button>
|
|
<el-button icon="Refresh" @click="resetQuery">重設</el-button>
|
|
@@ -110,7 +110,7 @@
|
|
|
<el-table-column label="使用者暱稱" align="center" prop="nickname" :show-overflow-tooltip="true" />
|
|
<el-table-column label="使用者暱稱" align="center" prop="nickname" :show-overflow-tooltip="true" />
|
|
|
<el-table-column label="頭像" align="center" prop="avatar" width="100">
|
|
<el-table-column label="頭像" align="center" prop="avatar" width="100">
|
|
|
<template #default="{ row }">
|
|
<template #default="{ row }">
|
|
|
- <image-preview :src="row.avatar" :width="40" :height="40"/>
|
|
|
|
|
|
|
+ <image-preview :src="getImageUrl(row.avatar)" :width="40" :height="40"/>
|
|
|
</template>
|
|
</template>
|
|
|
</el-table-column>
|
|
</el-table-column>
|
|
|
<el-table-column label="手機號碼" align="center" prop="phone" width="120" />
|
|
<el-table-column label="手機號碼" align="center" prop="phone" width="120" />
|
|
@@ -186,8 +186,8 @@
|
|
|
<el-form-item label="用户昵称" prop="nickname">
|
|
<el-form-item label="用户昵称" prop="nickname">
|
|
|
<el-input v-model="form.nickname" :disabled="isView" placeholder="请输入用户昵称" />
|
|
<el-input v-model="form.nickname" :disabled="isView" placeholder="请输入用户昵称" />
|
|
|
</el-form-item>
|
|
</el-form-item>
|
|
|
- <el-form-item label="头像" prop="avatar">
|
|
|
|
|
- <image-preview :src="form.avatar" :width="80" :height="80" />
|
|
|
|
|
|
|
+ <el-form-item label="頭像" prop="avatar">
|
|
|
|
|
+ <image-preview :src="getImageUrl(form.avatar)" :width="80" :height="80" />
|
|
|
</el-form-item>
|
|
</el-form-item>
|
|
|
<el-form-item label="手机号码" prop="phone">
|
|
<el-form-item label="手机号码" prop="phone">
|
|
|
<el-input v-model="form.phone" :disabled="isView" placeholder="请输入手机号码" />
|
|
<el-input v-model="form.phone" :disabled="isView" placeholder="请输入手机号码" />
|
|
@@ -228,10 +228,30 @@
|
|
|
import { ref, reactive, getCurrentInstance, onMounted, nextTick } from 'vue'
|
|
import { ref, reactive, getCurrentInstance, onMounted, nextTick } from 'vue'
|
|
|
import { getMyAgentMember } from "@/api/system/myuser.js"
|
|
import { getMyAgentMember } from "@/api/system/myuser.js"
|
|
|
import { ElMessageBox, ElMessage } from 'element-plus'
|
|
import { ElMessageBox, ElMessage } from 'element-plus'
|
|
|
|
|
+import { isExternal } from '@/utils/validate'
|
|
|
|
|
|
|
|
const { proxy } = getCurrentInstance()
|
|
const { proxy } = getCurrentInstance()
|
|
|
const { sys_show_hide, sys_normal_disable } = proxy.useDict("sys_show_hide", "sys_normal_disable")
|
|
const { sys_show_hide, sys_normal_disable } = proxy.useDict("sys_show_hide", "sys_normal_disable")
|
|
|
-// 响应式数据
|
|
|
|
|
|
|
+
|
|
|
|
|
+// 獲取文件路徑前綴
|
|
|
|
|
+const filePath = import.meta.env.VITE_APP_FILE_PATH || ''
|
|
|
|
|
+
|
|
|
|
|
+// 獲取完整的圖片URL
|
|
|
|
|
+const getImageUrl = (url) => {
|
|
|
|
|
+ if (!url) return ''
|
|
|
|
|
+ // 如果是外部鏈接,直接返回
|
|
|
|
|
+ if (isExternal(url)) {
|
|
|
|
|
+ return url
|
|
|
|
|
+ }
|
|
|
|
|
+ // 如果已經包含文件路徑前綴,直接返回
|
|
|
|
|
+ if (filePath && url.startsWith(filePath)) {
|
|
|
|
|
+ return url
|
|
|
|
|
+ }
|
|
|
|
|
+ // 在前面加上文件路徑前綴
|
|
|
|
|
+ return filePath ? filePath + url : url
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+// 響應式數據
|
|
|
const loading = ref(true)
|
|
const loading = ref(true)
|
|
|
const ids = ref([])
|
|
const ids = ref([])
|
|
|
const single = ref(true)
|
|
const single = ref(true)
|