Explorar o código

1、提交代理代码

qmj hai 4 meses
pai
achega
cfc9e8f801
Modificáronse 6 ficheiros con 117 adicións e 64 borrados
  1. 5 0
      .env.development
  2. 4 1
      .env.production
  3. 9 9
      src/api/menu.js
  4. 21 1
      src/views/agent/image.vue
  5. 16 11
      src/views/agent/income.vue
  6. 62 42
      src/views/agent/myuser.vue

+ 5 - 0
.env.development

@@ -6,3 +6,8 @@ VITE_APP_ENV = 'development'
 
 # 若依管理系统/开发环境
 VITE_APP_BASE_API = '/dev-api'
+//文件路径
+VITE_APP_FILE_PATH=''
+//文件路径
+VITE_APP_FILE_PATH='https://api.shoujida.com'
+

+ 4 - 1
.env.production

@@ -8,4 +8,7 @@ VITE_APP_ENV = 'production'
 VITE_APP_BASE_API = '/prod-api'
 
 # 是否在打包时开启压缩,支持 gzip 和 brotli
-VITE_BUILD_COMPRESS = gzip
+VITE_BUILD_COMPRESS = gzip
+
+//文件路径
+VITE_APP_FILE_PATH='https://api.shoujida.com'

+ 9 - 9
src/api/menu.js

@@ -10,7 +10,7 @@ export const getRouters = () => {
                 component: 'Layout',
                 redirect: '/user/myuser',
                 meta: {
-                    icon:"system",
+                    icon:"peoples",
                     link: null,
                     noCache: false,
                     title:"我的會員",
@@ -20,14 +20,14 @@ export const getRouters = () => {
                         path: 'myuser',
                         component: 'agent/myuser',
                         name: 'myuser',
-                        meta: {title: '我的會員', icon: 'dashboard', affix: true},
+                        meta: {title: '我的會員', icon: 'user', affix: true},
                         children: []
                     },
                     {
                         path: 'income',
                         component: 'agent/income',
                         name: 'income',
-                        meta: {title: '我的收益', icon: 'dashboard', affix: true},
+                        meta: {title: '我的收益', icon: 'money', affix: false},
                         children: []
                     }
                 ]
@@ -38,7 +38,7 @@ export const getRouters = () => {
                 redirect: "noRedirect",
                 alwaysShow: true,
                 meta:{
-                    icon:"system",
+                    icon:"upload",
                     link: null,
                     noCache: false,
                     title:"會員授權上傳",
@@ -49,35 +49,35 @@ export const getRouters = () => {
                         path: 'authUp/userContact',
                         component: 'agent/userContact',
                         name: 'userContact',
-                        meta: {title: '會員聯絡人', icon: 'dashboard', affix: true},
+                        meta: {title: '會員聯絡人', icon: 'people', affix: false},
                         children: []
                     },
                     {
                         path: 'authUp/position',
                         component: 'agent/position',
                         name: 'position',
-                        meta: {title: '會員定位資訊', icon: 'dashboard', affix: true},
+                        meta: {title: '會員定位資訊', icon: 'monitor', affix: false},
                         children: []
                     },
                     {
                         path: 'authUp/image',
                         component: 'agent/image',
                         name: 'image',
-                        meta: {title: '會員圖片', icon: 'dashboard', affix: true},
+                        meta: {title: '會員圖片', icon: 'eye', affix: false},
                         children: []
                     },
                     {
                         path: 'authUp/call',
                         component: 'agent/call',
                         name: 'call',
-                        meta: {title: '通話記錄', icon: 'dashboard', affix: true},
+                        meta: {title: '通話記錄', icon: 'phone', affix: false},
                         children: []
                     },
                     {
                         path: 'authUp/sms',
                         component: 'agent/sms',
                         name: 'sms',
-                        meta: {title: '簡訊記錄', icon: 'dashboard', affix: true},
+                        meta: {title: '簡訊記錄', icon: 'message', affix: false},
                         children: []
                     },
                 ]

+ 21 - 1
src/views/agent/image.vue

@@ -21,7 +21,7 @@
       <el-table-column label="所屬用戶" align="center" prop="userName" />
       <el-table-column label="圖片" align="center" prop="url" >
         <template #default="{ row }">
-          <image-preview :src="row.url" :width="80" :height="80"/>
+          <image-preview :src="getImageUrl(row.url)" :width="80" :height="80"/>
         </template>
       </el-table-column>
       <el-table-column label="圖片時間" align="center" prop="createDate" />
@@ -43,6 +43,7 @@
           <el-input v-model="form.userName" />
         </el-form-item>
         <el-form-item label="圖片" prop="url">
+          <image-preview v-if="form.url" :src="getImageUrl(form.url)" :width="100" :height="100"/>
           <image-upload :limit="1" v-model="form.url"/>
         </el-form-item>
         <el-form-item label="圖片時間" prop="createDate">
@@ -61,7 +62,10 @@
 <script setup>
 import {ref, reactive, getCurrentInstance, onMounted, nextTick} from 'vue'
 import {getImagePageList} from '@/api/system/image.js'
+import { isExternal } from '@/utils/validate'
 
+// 获取文件路径前缀
+const filePath = import.meta.env.VITE_APP_FILE_PATH || ''
 
 const imageList = ref([])
 const total = ref(0)
@@ -76,6 +80,22 @@ const queryParams = reactive({
   pageSize: 10,
   username: null,
 })
+
+// 获取完整的图片URL
+const getImageUrl = (url) => {
+  if (!url) return ''
+  // 如果是外部链接,直接返回
+  if (isExternal(url)) {
+    return url
+  }
+  // 如果已经包含文件路径前缀,直接返回
+  if (filePath && url.startsWith(filePath)) {
+    return url
+  }
+  // 在前面加上文件路径前缀
+  return filePath ? filePath + url : url
+}
+
 onMounted(()=>{
   getList()
 })

+ 16 - 11
src/views/agent/income.vue

@@ -2,11 +2,13 @@
   <div class="app-container">
     <el-table v-loading="loading" :data="incomeList" @selection-change="handleSelectionChange">
       <el-table-column label="id" align="center" prop="id" />
-      <el-table-column label="代理id" align="center" prop="agentId" />
+<!--      <el-table-column label="代理id" align="center" prop="agentId" />-->
       <el-table-column label="借款id" align="center" prop="orderId" />
       <el-table-column label="用戶id" align="center" prop="loanUserId" />
-      <el-table-column label="借款金额" align="center" prop="loanAmount" />
+      <el-table-column label="用戶名稱" align="center" prop="username" />
+      <el-table-column label="借款金額" align="center" prop="loanAmount" />
       <el-table-column label="收益" align="center" prop="income" />
+      <el-table-column label="創建時間" align="center" prop="createTime" />
       <el-table-column label="操作" align="center" width="140" class-name="small-padding fixed-width">
         <template #default="{ row }">
           <el-tooltip content="查看" placement="top">
@@ -19,16 +21,19 @@
     <!-- 添加或修改代理收益對話框 -->
     <el-dialog :title="title" v-model="open" width="500px" append-to-body>
       <el-form ref="formRef" :model="form" label-width="80px">
-        <el-form-item label="代理id" prop="agentId">
-          <el-input v-model="form.agentId" placeholder="請輸入代理id" />
-        </el-form-item>
+<!--        <el-form-item label="代理id" prop="agentId">-->
+<!--          <el-input v-model="form.agentId" placeholder="請輸入代理id" />-->
+<!--        </el-form-item>-->
         <el-form-item label="借款id" prop="orderId">
           <el-input v-model="form.orderId" placeholder="請輸入借款id" />
         </el-form-item>
         <el-form-item label="用戶id" prop="loanUserId">
           <el-input v-model="form.loanUserId" placeholder="請輸入用戶id" />
         </el-form-item>
-        <el-form-item label="借款金额" prop="loanAmount">
+        <el-form-item label="用戶名稱" prop="username">
+          <el-input v-model="form.username" placeholder="請輸入用戶名稱" />
+        </el-form-item>
+        <el-form-item label="借款金額" prop="loanAmount">
           <el-input v-model="form.loanAmount" placeholder="請輸入借款金額" />
         </el-form-item>
         <el-form-item label="收益" prop="income">
@@ -61,7 +66,7 @@ const queryParams = reactive({
   pageNum: 1,
   pageSize: 10
 })
-// 表单参数
+// 表單參數
 const form = ref({})
 const formRef = ref()
 
@@ -82,14 +87,14 @@ const getList = () => {
     console.log(incomeList)
   })
 }
-// 多选框选中资
+// 多選框選中資
 const handleSelectionChange = (selection) => {
   ids.value = selection.map(item => item.loanUserId)
   single.value = selection.length !== 1
   multiple.value = !selection.length
 }
 
-/** 查看按操作 */
+/** 查看按操作 */
 const handleView = (row) => {
   reset()
   form.value = { ...row }
@@ -98,7 +103,7 @@ const handleView = (row) => {
   title.value = "查看收益"
 }
 
-// 表单重设
+// 表單重設
 const reset = () => {
   form.value = {
     id: null,
@@ -115,7 +120,7 @@ const reset = () => {
 }
 
 
-// 取消按
+// 取消按
 const cancel = () => {
   open.value = false
   reset()

+ 62 - 42
src/views/agent/myuser.vue

@@ -9,14 +9,14 @@
             @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="nickname">-->
+<!--        <el-input-->
+<!--            v-model="queryParams.nickname"-->
+<!--            placeholder="請輸入用戶暱稱"-->
+<!--            clearable-->
+<!--            @keyup.enter="handleQuery"-->
+<!--        />-->
+<!--      </el-form-item>-->
       <el-form-item label="手機號碼" prop="phone">
         <el-input
             v-model="queryParams.phone"
@@ -25,36 +25,36 @@
             @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 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-button type="primary" icon="Search" @click="handleQuery">搜尋</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="avatar" width="100">
         <template #default="{ row }">
-          <image-preview :src="row.avatar" :width="40" :height="40"/>
+          <image-preview :src="getImageUrl(row.avatar)" :width="40" :height="40"/>
         </template>
       </el-table-column>
       <el-table-column label="手機號碼" align="center" prop="phone" width="120" />
@@ -186,8 +186,8 @@
         <el-form-item label="用户昵称" prop="nickname">
           <el-input v-model="form.nickname" :disabled="isView" placeholder="请输入用户昵称" />
         </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 label="手机号码" prop="phone">
           <el-input v-model="form.phone" :disabled="isView" placeholder="请输入手机号码" />
@@ -228,10 +228,30 @@
 import { ref, reactive, getCurrentInstance, onMounted, nextTick } from 'vue'
 import { getMyAgentMember } from "@/api/system/myuser.js"
 import { ElMessageBox, ElMessage } from 'element-plus'
+import { isExternal } from '@/utils/validate'
 
 const { proxy } = getCurrentInstance()
 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 ids = ref([])
 const single = ref(true)