Browse Source

Merge branch 'master' into 会员关联项目

# Conflicts:
#	src/views/member/list.vue
#	src/views/users/user/transfer.vue
Long 13 giờ trước cách đây
mục cha
commit
3d40c0d145
2 tập tin đã thay đổi với 95 bổ sung16 xóa
  1. 73 15
      src/views/member/list.vue
  2. 22 1
      src/views/users/user/transfer.vue

+ 73 - 15
src/views/member/list.vue

@@ -12,6 +12,16 @@
           />
         </el-select>
       </el-form-item>
+      <el-form-item label="会员ID" prop="userId">
+        <el-input
+          style="width: 200px"
+          v-model="queryParams.userId"
+          placeholder="请输入会员ID"
+          clearable
+          size="small"
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
       <el-form-item label="昵称" prop="nickname">
         <el-input
           style="width: 200px"
@@ -189,6 +199,13 @@
       <el-table-column label="所属员工" align="center" prop="companyUserNickName" />
       <el-table-column label="操作" align="center" width="120" class-name="small-padding fixed-width">
         <template slot-scope="scope">
+          <el-button
+            size="mini"
+            type="text"
+            icon="el-icon-edit"
+            @click="handleUpdate(scope.row)"
+            v-hasPermi="['store:user:edit']"
+          >修改</el-button>
           <el-button
             size="mini"
             type="text"
@@ -212,20 +229,38 @@
     <el-dialog :title="title" :visible.sync="open" width="600px" append-to-body>
       <el-form ref="form" :model="form" :rules="rules" label-width="120px">
         <el-form-item label="用户头像" prop="avatar">
-          <el-popover
-            placement="right"
-            title=""
-            trigger="hover"
-          >
-            <img slot="reference" :src="form.avatar" width="80">
-            <img :src="form.avatar" style="max-width: 120px;">
-          </el-popover>
+          <div style="display: flex; align-items: center; gap: 16px;">
+            <el-popover
+              placement="right"
+              title=""
+              trigger="hover"
+            >
+              <img slot="reference" :src="form.avatar" width="80" style="border-radius: 8px; border: 2px solid #ddd;">
+              <img :src="form.avatar" style="max-width: 200px; border-radius: 8px;">
+            </el-popover>
+
+            <div>
+              <el-upload
+                class="avatar-uploader"
+                :action="uploadUrl"
+                :show-file-list="false"
+                :on-success="handleAvatarSuccess"
+                :before-upload="beforeAvatarUpload"
+                :http-request="handleAvatarUpload"
+              >
+                <el-button size="small" type="primary" icon="el-icon-upload">上传头像</el-button>
+              </el-upload>
+              <div style="font-size: 12px; color: #999; margin-top: 4px;">
+                支持 JPG、PNG 格式,建议尺寸 200x200
+              </div>
+            </div>
+          </div>
         </el-form-item>
         <el-form-item label="昵称" prop="nickname">
           <el-input v-model="form.nickname" placeholder="请输入昵称" />
         </el-form-item>
         <el-form-item label="手机号码" prop="phone">
-          <el-input v-model="form.phone" placeholder="请输入手机号码" />
+          <el-input v-model="form.phone" disabled placeholder="请输入手机号码" />
         </el-form-item>
         <el-form-item label="最后登录IP" prop="lastIp" v-if="form.lastIp">
           <el-input v-model="form.lastIp" disabled placeholder="最后一次登录IP" />
@@ -247,7 +282,7 @@
           </el-select>
         </el-form-item>
         <el-form-item label="所属员工" prop="companyUserId">
-          <el-select v-model="form.companyUserId" placeholder="请选择所属员工" clearable>
+          <el-select v-model="form.companyUserId" disabled placeholder="请选择所属员工" clearable>
             <el-option
               v-for="item in salesOptions"
               :key="item.userId"
@@ -276,11 +311,13 @@
 
 <script>
 import { listUser, getUser, addUser, updateUser, delUser, exportUser, auditUser } from "@/api/user/fsUser";
+import {getUserList} from "@/api/company/companyUser";
 
 export default {
   name: "FsUser",
   data() {
     return {
+      uploadUrl:process.env.VUE_APP_BASE_API+"/common/uploadOSS", // 上传的图片服务器地址
       // 遮罩层
       loading: true,
       // 选中数组
@@ -353,6 +390,26 @@ export default {
     this.getSalesOptions();
   },
   methods: {
+    // 头像上传前的校验
+    beforeAvatarUpload(file) {
+      const isJPG = file.type === 'image/jpeg' || file.type === 'image/png' || file.type === 'image/jpg';
+      const isLt2M = file.size / 1024 / 1024 < 2;
+
+      if (!isJPG) {
+        this.$message.error('上传头像图片只能是 JPG/PNG/JPEG 格式!');
+      }
+      if (!isLt2M) {
+        this.$message.error('上传头像图片大小不能超过 2MB!');
+      }
+      return isJPG && isLt2M;
+    },
+
+
+    // 上传成功回调(如果使用服务器上传)
+    handleAvatarSuccess(response, file) {
+      this.form.avatar = response.url; // 假设服务器返回的是 {url: '图片地址'}
+      this.$message.success('头像上传成功');
+    },
     /** 查询用户列表 */
     getList() {
       this.loading = true;
@@ -385,11 +442,12 @@ export default {
 
     /** 获取销售员工选项 */
     getSalesOptions() {
-      this.salesOptions = [
-        { userId: 1, nickName: "销售A" },
-        { userId: 2, nickName: "销售B" },
-        { userId: 3, nickName: "销售C" }
-      ];
+      getUserList().then(res=>{
+        if(res.code === 200) {
+          this.salesOptions = res.data
+        }
+      });
+
     },
 
     /** 获取看课状态类型 */

+ 22 - 1
src/views/users/user/transfer.vue

@@ -12,6 +12,26 @@
           </el-option>
         </el-select>
       </el-form-item>
+      <el-form-item label="会员ID" prop="userId">
+        <el-input
+          style="width: 200px"
+          v-model="queryParams.userId"
+          placeholder="请输入会员ID"
+          clearable
+          size="small"
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="会员昵称" prop="nickname">
+        <el-input
+          style="width: 200px"
+          v-model="queryParams.nickname"
+          placeholder="请输入会员昵称"
+          clearable
+          size="small"
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
       <el-form-item label="手机号码" prop="phone">
         <el-input
           style="width: 220px"
@@ -52,8 +72,9 @@
           <el-tag v-if="scope.row.projectId !== null">{{ getProjectLabel(scope.row.projectId) }}</el-tag>
         </template>
       </el-table-column>
+      <el-table-column label="会员ID" align="center" prop="userId" />
       <el-table-column label="昵称" align="center" prop="nickname" />
-      <el-table-column label="所属销售" align="center" prop="companyUserName" />
+      <el-table-column label="所属销售" align="center" prop="companyUserNickName" />
       <el-table-column label="手机号码" align="center" prop="phone" />
       <el-table-column label="状态" align="center" prop="statusText" >
         <template slot-scope="scope">