Quellcode durchsuchen

修改家族成员管理

Alex vor 4 Jahren
Ursprung
Commit
a2385c833b

+ 9 - 0
src/api/system/appUser.js

@@ -1,5 +1,14 @@
 import request from '@/utils/request'
 
+// 查询会员分页列表
+export function pageUser(query) {
+  return request({
+    url: '/system/appUser/memberPage',
+    method: 'get',
+    params: query
+  })
+}
+
 // 查询会员列表
 export function listUser(query) {
   return request({

+ 3 - 3
src/api/system/member.js

@@ -12,7 +12,7 @@ export function listMember(query) {
 // 查询家族成员详细
 export function getMember(id) {
   return request({
-    url: '/system/member/' + id,
+    url: '/system/member/get/' + id,
     method: 'get'
   })
 }
@@ -36,9 +36,9 @@ export function updateMember(data) {
 }
 
 // 删除家族成员
-export function delMember(id) {
+export function delMember(familyId,id) {
   return request({
-    url: '/system/member/' + id,
+    url: '/system/member/'+familyId+'/' + id,
     method: 'delete'
   })
 }

+ 17 - 2
src/views/system/appUser/index.vue

@@ -238,7 +238,7 @@
 </template>
 
 <script>
-import { listUser, getUser, delUser, addUser, updateUser, exportUser } from "@/api/system/appUser";
+import { listUser,pageUser, getUser, delUser, addUser, updateUser, exportUser } from "@/api/system/appUser";
 import appUserAvatar from "./detail/appUserAvatar";
 import { listFriends } from "@/api/system/friends";
 import { listFamilyByUid } from "@/api/system/family";
@@ -287,6 +287,7 @@ export default {
       queryParams: {
         pageNum: 1,
         pageSize: 10,
+        enable: 0,
         searchValue: null,
       },
       friendsOpen: false,
@@ -308,6 +309,20 @@ export default {
       form: {},
       // 表单校验
       rules: {
+        nickName: [
+          { required: true, message: "昵称不能为空", trigger: "blur" },
+        ],
+        gender: [
+          { required: true, message: "性别不能为空", trigger: "blur" },
+        ],
+        mobile: [
+          { required: true, message: "手机号码不能为空", trigger: "blur" },
+          {
+            pattern: /^1[3|4|5|6|7|8|9][0-9]\d{8}$/,
+            message: "请输入正确的手机号码",
+            trigger: "blur",
+          },
+        ],
       }
     };
   },
@@ -335,7 +350,7 @@ export default {
     /** 查询会员列表 */
     getList() {
       this.loading = true;
-      listUser(this.addDateRange(this.queryParams, this.dateRange)).then(response => {
+      pageUser(this.addDateRange(this.queryParams, this.dateRange)).then(response => {
         this.userList = response.rows;
         this.total = response.total;
         this.loading = false;

+ 139 - 67
src/views/system/family/detail/member.vue

@@ -1,30 +1,13 @@
 <template>
   <div class="app-container">
-    <span><i class="el-icon-house"></i> 家族 - {{ nickName }}</span>
+    <span><i class="el-icon-house"></i> 家族 - {{ familyName }}</span>
     <el-divider></el-divider>
     <el-form :model="queryParams" ref="queryForm" :inline="true" v-show="showSearch" label-width="68px">
-      <el-form-item label="姓名" prop="name">
+      
+      <el-form-item label="模糊条件" prop="searchValue">
         <el-input
-          v-model="queryParams.name"
-          placeholder="请输入姓名"
-          clearable
-          size="small"
-          @keyup.enter.native="handleQuery"
-        />
-      </el-form-item>
-      <el-form-item label="性别:1-男,2-女,0-未知" prop="gender">
-        <el-input
-          v-model="queryParams.gender"
-          placeholder="请输入性别:1-男,2-女,0-未知"
-          clearable
-          size="small"
-          @keyup.enter.native="handleQuery"
-        />
-      </el-form-item>
-      <el-form-item label="状态" prop="state">
-        <el-input
-          v-model="queryParams.state"
-          placeholder="请输入状态:1读书、2工作、3退休、4过世"
+          v-model="queryParams.searchValue"
+          placeholder="请输入姓名/手机号"
           clearable
           size="small"
           @keyup.enter.native="handleQuery"
@@ -72,16 +55,16 @@
     <el-table v-loading="loading" :data="memberList" @selection-change="handleSelectionChange">
       <el-table-column type="selection" width="55" align="center" />
       <el-table-column label="主键ID" align="center" prop="memberId" v-if="false"/>
-      <el-table-column label="姓名" align="center" prop="name" />
-      <el-table-column label="性别" align="center" prop="gender" :formatter="genderFormat"/>
-      <el-table-column label="配偶" align="center" prop="spouse" />
-      <el-table-column label="生日" align="center" prop="birthday" width="180">
+      <el-table-column label="姓名" align="center" prop="name" width="100" />
+      <el-table-column label="手机号" align="center" prop="mobile" width="200" />
+      <el-table-column label="性别" align="center" prop="gender" :formatter="genderFormat" width="50" />
+      <el-table-column label="配偶" align="center" prop="spouse" width="100" />
+      <el-table-column label="生日" align="center" prop="birthday" width="200">
         <template slot-scope="scope">
           <span>{{ parseTime(scope.row.birthday, '{y}-{m}-{d}') }}</span>
         </template>
       </el-table-column>
-      <el-table-column label="手机号" align="center" prop="mobile" />
-      <el-table-column label="状态:1读书、2工作、3退休、4过世" align="center" prop="state" />
+      <el-table-column label="状态" align="center" prop="state" :formatter="stateFormat" width="50" />
       <el-table-column label="操作" align="center" class-name="small-padding fixed-width">
         <template slot-scope="scope">
           <el-button
@@ -111,34 +94,69 @@
     />
 
     <!-- 添加或修改家族成员对话框 -->
-    <el-dialog :title="title" :visible.sync="open" width="500px" append-to-body>
+    <el-dialog :title="title" :visible.sync="open" width="500px" append-to-body :close-on-click-modal=false>
       <el-form ref="form" :model="form" :rules="rules" label-width="80px">
-        <el-form-item label="会员id" prop="appUserId">
-          <el-input v-model="form.appUserId" placeholder="请输入会员id" />
-        </el-form-item>
-        <el-form-item label="配偶id" prop="spouseId">
-          <el-input v-model="form.spouseId" placeholder="请输入配偶id" />
-        </el-form-item>
-        <el-form-item label="姓名" prop="name">
-          <el-input v-model="form.name" placeholder="请输入姓名" />
-        </el-form-item>
-        <el-form-item label="生日" prop="birthday">
-          <el-date-picker clearable size="small" style="width: 200px"
-            v-model="form.birthday"
-            type="date"
-            value-format="yyyy-MM-dd"
-            placeholder="选择生日">
-          </el-date-picker>
-        </el-form-item>
-        <el-form-item label="性别:1-男,2-女,0-未知" prop="gender">
-          <el-input v-model="form.gender" placeholder="请输入性别:1-男,2-女,0-未知" />
-        </el-form-item>
-        <el-form-item label="文化程度" prop="education">
-          <el-input v-model="form.education" placeholder="请输入文化程度" />
-        </el-form-item>
-        <el-form-item label="状态:1读书、2工作、3退休、4过世" prop="state">
-          <el-input v-model="form.state" placeholder="请输入状态:1读书、2工作、3退休、4过世" />
-        </el-form-item>
+
+        <el-row :gutter="0" type="flex" justify="start">
+          <el-col :span="12">
+            <el-form-item label="姓名" prop="name">
+              <el-input v-model="form.name" placeholder="请输入姓名" />
+            </el-form-item>
+          </el-col>
+          <el-col :span="12">
+            <el-form-item label="性别" prop="gender">
+              <el-select v-model="form.gender" placeholder="请选择">
+                <el-option v-for="dict in genderOptions" :key="dict.dictValue" :label="dict.dictLabel" :value="dict.dictValue"></el-option>
+              </el-select>
+            </el-form-item>
+          </el-col>
+        </el-row>
+
+        <el-row :gutter="0" type="flex" justify="start">
+          <el-col :span="12">
+            <el-form-item label="生日" prop="birthday">
+              <el-date-picker clearable size="small" style="width: 150px"
+                v-model="form.birthday"
+                type="date"
+                value-format="yyyy-MM-dd"
+                placeholder="选择生日">
+              </el-date-picker>
+            </el-form-item>
+          </el-col>
+          <el-col :span="12">
+            <el-form-item label="配偶" prop="spouseUserId">
+              <!-- <el-input v-model="form.spouseUserId" placeholder="请输入配偶id" /> -->
+              <el-select
+                v-model="form.spouse"
+                filterable
+                remote
+                clearable
+                placeholder="请输入名字/手机号"
+                :remote-method="findSpouse"
+                @change="spouseChange"
+                :loading="loadings">
+                <el-option
+                  v-for="item in spouseOptions"
+                  :key="item.userId"
+                  :label="item.nickName"
+                  :value="item.userId">
+                </el-option>
+              </el-select>
+            </el-form-item>
+          </el-col>
+        </el-row>
+        <el-row :gutter="0" type="flex" justify="start"><el-col :span="12">
+            <el-form-item label="手机号" prop="mobile">
+              <el-input v-model="form.mobile" placeholder="请输入手机号" />
+            </el-form-item>
+          </el-col>
+          <el-col :span="12">
+            <el-form-item label="状态" prop="state">
+              <el-input v-model="form.state" placeholder="请输入状态" />
+            </el-form-item>
+          </el-col>
+        </el-row>
+
         <el-form-item label="备注" prop="remark">
           <el-input v-model="form.remark" type="textarea" placeholder="请输入内容" />
         </el-form-item>
@@ -154,6 +172,7 @@
 <script>
 import { getFamily } from "@/api/system/family";
 import { listMember, getMember, delMember, addMember, updateMember, exportMember } from "@/api/system/member";
+import { listUser } from "@/api/system/appUser";
 
 export default {
   name: "Member",
@@ -161,6 +180,7 @@ export default {
     return {
       // 遮罩层
       loading: true,
+      loadings: false,
       // 选中数组
       ids: [],
       // 非单个禁用
@@ -179,12 +199,22 @@ export default {
       open: false,
       // 性别 数据字典
       genderOptions: [],
+      // 状态 数据字典
+      stateOptions: [],
+      // 配偶
+      spouseOptions:[],
+      spouseValues:[],
+      spouseList:[],
+      spouseStates:[],// 查询参数
+      spouseParams: {
+        enable: 0,
+        searchValue: null,
+      },
       // 查询参数
       queryParams: {
         pageNum: 1,
         pageSize: 10,
         familyId: null,
-        appUserId: null,
         spouseId: null,
         name: null,
         birthday: null,
@@ -196,11 +226,25 @@ export default {
       form: {},
       // 表单校验
       rules: {
+        name: [
+          { required: true, message: "姓名不能为空", trigger: "blur" },
+        ],
+        gender: [
+          { required: true, message: "性别不能为空", trigger: "blur" },
+        ],
+        mobile: [
+          { required: true, message: "手机号码不能为空", trigger: "blur" },
+          {
+            pattern: /^1[3|4|5|6|7|8|9][0-9]\d{8}$/,
+            message: "请输入正确的手机号码",
+            trigger: "blur",
+          },
+        ],
       },
       familyName: null,
     };
   },
-  created() {
+  activated() {
     const fid = this.$route.query.fid;
     this.queryParams.familyId = fid;
     this.getFamily(fid);
@@ -208,8 +252,25 @@ export default {
     this.getDicts("sys_user_sex").then((response) => {
       this.genderOptions = response.data;
     });
+    this.getDicts("app_member_state").then((response) => {
+      this.stateOptions = response.data;
+    });
   },
   methods: {
+    findSpouse(query){
+      if (query.length > 1) {
+        this.loadings = true;
+        this.spouseParams.searchValue = query;
+        listUser(this.spouseParams).then(response => {
+          this.loadings = false;
+          debugger
+          this.spouseOptions = response.data;
+        });
+      }
+    },
+    spouseChange(value){
+      this.form.spouseUserId = value;
+    },
     getFamily(id){
       getFamily(id).then(response => {
         this.familyName = response.data.fullName;
@@ -228,6 +289,10 @@ export default {
     genderFormat(row, column) {
       return this.selectDictLabel(this.genderOptions, row.gender);
     },
+    // 状态 字典翻译
+    stateFormat(row, column) {
+      return this.selectDictLabel(this.stateOptions, row.state);
+    },
     // 取消按钮
     cancel() {
       this.open = false;
@@ -236,9 +301,9 @@ export default {
     // 表单重置
     reset() {
       this.form = {
-        id: null,
-        appUserId: null,
-        spouseId: null,
+        memberId: null,
+        userId: null,
+        spouseUserId: null,
         name: null,
         birthday: null,
         gender: null,
@@ -248,7 +313,8 @@ export default {
         createTime: null,
         updateBy: null,
         updateTime: null,
-        remark: null
+        remark: null,
+        spouseOptions: null
       };
       this.resetForm("form");
     },
@@ -264,7 +330,7 @@ export default {
     },
     // 多选框选中数据
     handleSelectionChange(selection) {
-      this.ids = selection.map(item => item.id)
+      this.ids = selection.map(item => item.memberId)
       this.single = selection.length!==1
       this.multiple = !selection.length
     },
@@ -277,18 +343,23 @@ export default {
     /** 修改按钮操作 */
     handleUpdate(row) {
       this.reset();
-      const id = row.id || this.ids
+      const id = row.memberId || this.ids
       getMember(id).then(response => {
         this.form = response.data;
+        this.form.familyId = this.queryParams.familyId;
         this.open = true;
         this.title = "修改家族成员";
+        if(this.form.spouseUserId !== ''){
+          this.findSpouse(this.form.spouseUserId)
+        }
       });
     },
     /** 提交按钮 */
     submitForm() {
       this.$refs["form"].validate(valid => {
         if (valid) {
-          if (this.form.id != null) {
+          this.form.familyId = this.queryParams.familyId;
+          if (this.form.memberId != null) {
             updateMember(this.form).then(response => {
               if (response.code === 200) {
                 this.msgSuccess("修改成功");
@@ -310,13 +381,14 @@ export default {
     },
     /** 删除按钮操作 */
     handleDelete(row) {
-      const ids = row.id || this.ids;
-      this.$confirm('是否确认删除家族成员编号为"' + ids + '"的数据项?', "警告", {
+      const ids = row.memberId || this.ids;
+      var familyId = this.queryParams.familyId;
+      this.$confirm('是否确认删除?', "警告", {
           confirmButtonText: "确定",
           cancelButtonText: "取消",
           type: "warning"
         }).then(function() {
-          return delMember(ids);
+          return delMember(familyId,ids);
         }).then(() => {
           this.getList();
           this.msgSuccess("删除成功");