소스 검색

优化:增加一些字段和逻辑的处理

jhy 7 달 전
부모
커밋
9cf8cf7a19
4개의 변경된 파일74개의 추가작업 그리고 48개의 파일을 삭제
  1. 11 0
      src/api/member/user/index.ts
  2. 1 1
      src/views/member/tag/components/MemberTagSelect.vue
  3. 38 19
      src/views/member/user/UserForm.vue
  4. 24 28
      src/views/member/user/index.vue

+ 11 - 0
src/api/member/user/index.ts

@@ -46,3 +46,14 @@ export const updateUserLevel = async (data: any) => {
 export const updateUserPoint = async (data: any) => {
   return await request.put({ url: `/member/user/update-point`, data })
 }
+
+// 新增用户
+export const createUser = async (data: UserVO) => {
+  return await request.put({ url: `/member/user/create`, data })
+}
+
+// 获取用户套餐
+export const getComboList = async () => {
+  return await request.get({ url: `/member/combo/list` })
+}
+

+ 1 - 1
src/views/member/tag/components/MemberTagSelect.vue

@@ -1,5 +1,5 @@
 <template>
-  <el-select v-model="tagIds" placeholder="请选择用户标签" clearable multiple class="!w-240px">
+  <el-select v-model="tagIds" placeholder="请选择用户标签" clearable multiple>
     <el-option v-for="tag in tags" :key="tag.id" :label="tag.name" :value="tag.id" />
   </el-select>
   <el-button

+ 38 - 19
src/views/member/user/UserForm.vue

@@ -10,7 +10,7 @@
       <el-form-item label="手机号" prop="mobile">
         <el-input v-model="formData.mobile" placeholder="请输入手机号" />
       </el-form-item>
-      <el-form-item label="状态" prop="status">
+      <!-- <el-form-item label="状态" prop="status">
         <el-radio-group v-model="formData.status">
           <el-radio
             v-for="dict in getIntDictOptions(DICT_TYPE.COMMON_STATUS)"
@@ -20,13 +20,13 @@
             {{ dict.label }}
           </el-radio>
         </el-radio-group>
-      </el-form-item>
+      </el-form-item> -->
       <el-form-item label="用户昵称" prop="nickname">
         <el-input v-model="formData.nickname" placeholder="请输入用户昵称" />
       </el-form-item>
-      <el-form-item label="头像" prop="avatar">
+      <!-- <el-form-item label="头像" prop="avatar">
         <UploadImg v-model="formData.avatar" :limit="1" :is-show-tip="false" />
-      </el-form-item>
+      </el-form-item> -->
       <el-form-item label="真实名字" prop="name">
         <el-input v-model="formData.name" placeholder="请输入真实名字" />
       </el-form-item>
@@ -44,6 +44,7 @@
       <el-form-item label="出生日期" prop="birthday">
         <el-date-picker
           v-model="formData.birthday"
+          style="width:100%;"
           type="date"
           value-format="x"
           placeholder="选择出生日期"
@@ -58,11 +59,26 @@
         />
       </el-form-item>
       <el-form-item label="用户标签" prop="tagIds">
-        <MemberTagSelect v-model="formData.tagIds" show-add />
+        <MemberTagSelect style="width:100%;" v-model="formData.tagIds"/>
       </el-form-item>
-      <el-form-item label="用户分组" prop="groupId">
-        <MemberGroupSelect v-model="formData.groupId" />
+      <el-form-item label="用户套餐" prop="comboId">
+        <el-select
+          v-model="formData.comboId"
+          placeholder="Select"
+          size="large"
+          style="width: 240px"
+        >
+          <el-option
+            v-for="item in comboData"
+            :key="item.id"
+            :label="item.name"
+            :value="item.id"
+          />
+        </el-select>
       </el-form-item>
+      <!-- <el-form-item label="用户分组" prop="groupId">
+        <MemberGroupSelect v-model="formData.groupId" />
+      </el-form-item> -->
       <el-form-item label="会员备注" prop="mark">
         <el-input type="textarea" v-model="formData.mark" placeholder="请输入会员备注" />
       </el-form-item>
@@ -92,30 +108,34 @@ const formData = ref({
   id: undefined,
   mobile: undefined,
   password: undefined,
-  status: undefined,
+  status: 0,
   nickname: undefined,
-  avatar: undefined,
   name: undefined,
   sex: undefined,
   areaId: undefined,
   birthday: undefined,
   mark: undefined,
-  tagIds: [],
-  groupId: undefined
+  comboId:undefined,
+  tagIds: []
 })
 const formRules = reactive({
   mobile: [{ required: true, message: '手机号不能为空', trigger: 'blur' }],
-  status: [{ required: true, message: '状态不能为空', trigger: 'blur' }]
+  name: [{ required: true, message: '真实姓名不能为空', trigger: 'blur' }],
+  nickname: [{ required: true, message: '昵称不能为空', trigger: 'blur' }],
+  sex: [{ required: true, message: '性别不能为空', trigger: 'blur' }],
+  tagIds: [{ required: true, message: '用户标签', trigger: 'blur' }],
+  comboId:[{ required: true, message: '用户套餐', trigger: 'blur' }]
 })
 const formRef = ref() // 表单 Ref
 const areaList = ref([]) // 地区列表
-
+const comboData=ref([])
 /** 打开弹窗 */
 const open = async (type: string, id?: number) => {
   dialogVisible.value = true
-  dialogTitle.value = t('action.' + type)
+  dialogTitle.value = id?'编辑':'新增'
   formType.value = type
   resetForm()
+  comboData.value=await UserApi.getComboList()
   // 修改时,设置数据
   if (id) {
     formLoading.value = true
@@ -143,7 +163,7 @@ const submitForm = async () => {
     const data = formData.value as unknown as UserApi.UserVO
     if (formType.value === 'create') {
       // 说明:目前暂时没有新增操作。如果自己业务需要,可以进行扩展
-      // await UserApi.createUser(data)
+      await UserApi.createUser(data)
       message.success(t('common.createSuccess'))
     } else {
       await UserApi.updateUser(data)
@@ -163,16 +183,15 @@ const resetForm = () => {
     id: undefined,
     mobile: undefined,
     password: undefined,
-    status: undefined,
+    status: 0,
     nickname: undefined,
-    avatar: undefined,
     name: undefined,
     sex: undefined,
     areaId: undefined,
     birthday: undefined,
     mark: undefined,
-    tagIds: [],
-    groupId: undefined
+    comboId:undefined,
+    tagIds: []
   }
   formRef.value?.resetFields()
 }

+ 24 - 28
src/views/member/user/index.vue

@@ -68,7 +68,10 @@
           <Icon class="mr-5px" icon="ep:refresh" />
           重置
         </el-button>
-        <el-button v-hasPermi="['promotion:coupon:send']" @click="openCoupon">发送优惠券</el-button>
+        <el-button @click="addInfo" v-hasPermi="['member:user:create']">
+          <Icon class="mr-5px" icon="eq:add" />
+          新增
+        </el-button>
         <el-button plain type="danger" @click="toggleExpandAll">
           <Icon class="mr-5px" icon="ep:sort" />
           展开/折叠
@@ -89,14 +92,14 @@
       row-key="id"
     >
       <el-table-column :show-overflow-tooltip="true"  align="center" label="用户编号" prop="id" width="120px" />
-      <el-table-column align="center" label="头像" prop="avatar" width="80px">
+      <!-- <el-table-column align="center" label="头像" prop="avatar" width="80px">
         <template #default="scope">
           <img :src="scope.row.avatar" style="width: 40px" />
         </template>
-      </el-table-column>
-      <el-table-column align="center" label="手机号" prop="mobile" width="120px" />
+      </el-table-column> -->
+      <el-table-column align="center" label="手机号" prop="mobile" width="160px" />
       <el-table-column align="center" label="昵称" prop="nickname" width="180px" />
-      <el-table-column align="center" label="套餐" prop="comboName" width="180px" />
+      <el-table-column align="center" label="套餐" prop="comboName" width="200px" />
       <el-table-column align="center" label="等级" prop="levelName" width="100px" />
       <el-table-column align="center" label="分组" prop="groupName" width="100px" />
       <el-table-column
@@ -104,6 +107,7 @@
         align="center"
         label="用户标签"
         prop="tagNames"
+        width="120px"
       >
         <template #default="scope">
           <el-tag v-for="(tagName, index) in scope.row.tagNames" :key="index" class="mr-3px">
@@ -111,7 +115,7 @@
           </el-tag>
         </template>
       </el-table-column>
-      <el-table-column align="center" label="积分" prop="point" width="100px" />
+      <!-- <el-table-column align="center" label="积分" prop="point" width="100px" /> -->
       <el-table-column align="center" label="状态" prop="status" width="100px">
         <template #default="scope">
           <dict-tag :type="DICT_TYPE.COMMON_STATUS" :value="scope.row.status" />
@@ -141,7 +145,8 @@
         <template #default="scope">
           <div class="flex items-center justify-center">
             <el-button link type="primary" @click="openDetail(scope.row.id)">详情</el-button>
-            <el-dropdown
+            <el-button v-if="checkPermi(['member:user:update'])" link type="primary" @click="handleCommand('handleUpdate',scope.row)">编辑</el-button>
+            <!-- <el-dropdown
               v-hasPermi="[
                 'member:user:update',
                 'member:user:update-level',
@@ -182,18 +187,11 @@
                   </el-dropdown-item>
                 </el-dropdown-menu>
               </template>
-            </el-dropdown>
+            </el-dropdown> -->
           </div>
         </template>
       </el-table-column>
     </el-table>
-    <!-- 分页 -->
-<!--    <Pagination-->
-<!--      v-model:limit="queryParams.pageSize"-->
-<!--      v-model:page="queryParams.pageNo"-->
-<!--      :total="total"-->
-<!--      @pagination="getList"-->
-<!--    />-->
   </ContentWrap>
 
   <!-- 表单弹窗:添加/修改 -->
@@ -204,8 +202,6 @@
   <UserPointUpdateForm ref="updatePointFormRef" @success="getList" />
   <!-- 修改用户余额弹窗 -->
   <UserBalanceUpdateForm ref="UpdateBalanceFormRef" @success="getList" />
-  <!-- 发送优惠券弹窗 -->
-  <CouponSendForm ref="couponSendFormRef" />
 </template>
 <script lang="ts" setup>
 import { dateFormatter } from '@/utils/formatTime'
@@ -213,12 +209,9 @@ import * as UserApi from '@/api/member/user'
 import { DICT_TYPE } from '@/utils/dict'
 import UserForm from './UserForm.vue'
 import MemberTagSelect from '@/views/member/tag/components/MemberTagSelect.vue'
-// import MemberLevelSelect from '@/views/member/level/components/MemberLevelSelect.vue'
 import MemberGroupSelect from '@/views/member/group/components/MemberGroupSelect.vue'
-// import UserLevelUpdateForm from './components/UserLevelUpdateForm.vue'
 import UserPointUpdateForm from './components/UserPointUpdateForm.vue'
 import UserBalanceUpdateForm from './components/UserBalanceUpdateForm.vue'
-import { CouponSendForm } from '@/views/mall/promotion/coupon/components'
 import { checkPermi } from '@/utils/permission'
 import {handleTree} from "@/utils/tree";
 
@@ -283,15 +276,18 @@ const openForm = (type: string, id?: number) => {
 }
 
 /** 发送优惠券 */
-const couponSendFormRef = ref()
-const openCoupon = () => {
-  if (selectedIds.value.length === 0) {
-    message.warning('请选择要发送优惠券的用户')
-    return
-  }
-  couponSendFormRef.value.open(selectedIds.value)
+// const couponSendFormRef = ref()
+// const openCoupon = () => {
+//   if (selectedIds.value.length === 0) {
+//     message.warning('请选择要发送优惠券的用户')
+//     return
+//   }
+//   couponSendFormRef.value.open(selectedIds.value)
+// }
+/**新增 */
+const addInfo = ()=>{
+  openForm('create')
 }
-
 /** 操作分发 */
 const handleCommand = (command: string, row: UserApi.UserVO) => {
   switch (command) {