Browse Source

小程序用户管理页面增加赠送功能

htc 4 ngày trước cách đây
mục cha
commit
3a7236a157
2 tập tin đã thay đổi với 114 bổ sung23 xóa
  1. 7 0
      src/api/agent/indexTwo.js
  2. 107 23
      src/views/modules/wechatUser.vue

+ 7 - 0
src/api/agent/indexTwo.js

@@ -130,6 +130,13 @@ export function getPayRecoedList(query) {
     params: query
   })
 }
+export function saveBatch(data) {
+  return request({
+    url: '/core.v2/queorder/saveBatch',
+    method: 'post',
+    data
+  })
+}
 // ---end 小程序用户管理
 
 // ---start 商业模式管理

+ 107 - 23
src/views/modules/wechatUser.vue

@@ -1,17 +1,9 @@
 <template>
     <div class="agent_page adffc">
         <div class="ap_title">{{ title }}</div>
-        
         <el-form :model="queryParams" ref="queryRef" label-width="118px" style="margin-top: 20px;">
           <el-row>
-            <el-col :span="6" style="padding-right: 20px;">
-                <el-form-item label="渠道类型">
-                    <el-select v-model="queryParams.channelType" placeholder="请选择渠道类型" clearable>
-                        <el-option v-for="item in channel_type" :label="item.label" :value="item.value"></el-option>
-                    </el-select>
-                </el-form-item>
-            </el-col>
-            <el-col :span="6" style="padding-right: 20px;">
+            <el-col :span="8" style="padding-right: 20px;">
                 <el-form-item label="用户昵称/手机号">
                     <el-input v-model="queryParams.keyword" placeholder="请输入用户昵称/手机号" style="width: 100%;"></el-input>
                 </el-form-item>
@@ -27,15 +19,38 @@
                     </el-date-picker>
                 </el-form-item>
             </el-col>
-            <el-col :span="4">
-              <el-form-item style="display: flex;align-items: center;">
-                <el-button icon="Refresh" @click="resetQuery">重置</el-button>
-                <el-button type="primary" @click="getList">查询</el-button>
+          </el-row>
+          <el-row>
+            <el-col :span="8" style="padding-right: 20px;">
+                <el-form-item label="渠道类型">
+                    <el-select v-model="queryParams.channelType" placeholder="请选择渠道类型" clearable style="width: 100%">
+                        <el-option v-for="item in channel_type" :label="item.label" :value="item.value"></el-option>
+                    </el-select>
+                </el-form-item>
+            </el-col>
+            <el-col :span="8" style="padding-right: 20px;">
+                <el-form-item label="用户标签">
+                    <el-select v-model="queryParams.userBrief" placeholder="请选择用户标签" clearable style="width: 100%">
+                        <el-option v-for="item in user_brief" :label="item.label" :value="item.value"></el-option>
+                    </el-select>
+                </el-form-item>
+            </el-col>
+            <el-col :span="8">
+              <el-form-item>
+                <div style="margin-left: -118px;">
+                    <el-button icon="Refresh" @click="resetQuery">重置</el-button>
+                    <el-button type="primary" @click="getList">查询</el-button>
+                    <el-button type="primary" @click="handleGive" v-hasPermi="['core:wechatuser:give']">赠送</el-button>
+                </div>
               </el-form-item>
             </el-col>
           </el-row>
         </el-form>
-        <el-table :data="dataList" border cell-class-name="vertical-top-cell" v-loading="loading" empty-text="暂无小程序用户" max-height="578px" style="margin-top: 5px;">
+        <el-table :data="dataList" border @selection-change="handleSelectionChange" cell-class-name="vertical-top-cell" v-loading="loading" empty-text="暂无小程序用户" max-height="578px" style="margin-top: 5px;">
+            <el-table-column
+                type="selection"
+                width="55">
+            </el-table-column>
             <el-table-column label="序号" width="50">
                 <template #default="scope">
                     {{ scope.$index + 1 }}
@@ -46,7 +61,7 @@
                 <template #default="{ row }">{{ user_brief.find(u=>u.value===row.userBrief)?.label||'/' }}</template>
             </el-table-column>
             <el-table-column label="手机号码" prop="mobile"></el-table-column>
-            <el-table-column label="注册编号" prop="registerId"></el-table-column>
+            <el-table-column label="注册编号" prop="registerId" width="180"></el-table-column>
             <el-table-column label="用户类型" prop="xx">
                 <template #default="{ row }">{{ typeCfg[row.type] }}</template>
             </el-table-column>
@@ -88,13 +103,30 @@
                 <el-button @click="cancel" style="margin-right: 5%;">取 消</el-button>
             </div>
         </el-dialog>
+        <el-dialog width="30%" :visible.sync="giveShow" title="赠送" @close="cancelGive">
+            <el-form ref="giveRef" :model="giveForm" :rules="giveRules" label-width="100px" style="width: 90%;margin: 0 auto;">
+                <el-form-item label="赠送类型" prop="type">
+                    <el-radio-group v-model="giveForm.type">
+                        <el-radio :label="1">个人版</el-radio>
+                        <el-radio :label="2">团队版</el-radio>
+                    </el-radio-group>
+                </el-form-item>
+                <el-form-item label="赠送次数" prop="orderCount">
+                    <el-input-number v-model="giveForm.orderCount" :min="1" :max="9999999" label="请输入赠送次数" style="width: 100%;"></el-input-number>
+                </el-form-item>
+            </el-form>
+            <div class="demo-drawer__footer" style="display: flex;justify-content: end;">
+                <el-button :loading="buttonLoadingGive" type="primary" @click="submitFormGive">保 存</el-button>
+                <el-button @click="cancelGive" style="margin-right: 5%;">取 消</el-button>
+            </div>
+        </el-dialog>
     </div>
 </template>
 
 <script setup name="">
     import { ref, getCurrentInstance, onMounted } from 'vue'
     import { 
-        getWechatUserList,updateBrief
+        getWechatUserList,updateBrief,saveBatch
     } from '@/api/agent/indexTwo.js'
     const { proxy } = getCurrentInstance();
     const { channel_type,user_brief } = proxy.useDict("channel_type","user_brief");
@@ -103,6 +135,7 @@
         page:1,
         limit:10,
         channelType:'',
+        userBrief:'',
         keyword:'',
         startEndTime:'',
         beginTime:'',
@@ -128,22 +161,47 @@
     const tagRules = ref({
         userBrief:[{ required: true, message: '请选择用户标签', trigger: 'change' }],
     })
+    const multipleSelection = ref([])
+    const giveRef = ref(null)
+    const giveShow = ref(false)
+    const giveForm = ref({
+        userIds:[],
+        type:1,
+        orderCount:1
+    })
+    const giveRules = ref({
+        type:[{ required: true, message: '请选择赠送类型', trigger: 'change' }],
+        orderCount:[{ required: true, message: '请输入赠送次数', trigger: 'blur' }],
+    })
+    const buttonLoadingGive = ref(false)
 
+    const handleSelectionChange = (val) => {
+        multipleSelection.value = val;
+    }
     
     const resetQuery = () => {
+        // 重置表单字段
         proxy.$refs.queryRef.resetFields();
+        // 重置查询参数到初始状态
         queryParams.value = {
-            page:1,
-            limit:10,
-            channelType:'',
-            keyword:'',
-            startEndTime:'',
-            beginTime:'',
-            endTime:''
+            page:1,            // 重置页码为1
+            limit:10,          // 重置每页显示数量为10
+            channelType:'',    // 清空渠道类型筛选
+            keyword:'',        // 清空关键字搜索
+            startEndTime:'',   // 清空时间范围选择
+            beginTime:'',      // 清空开始时间
+            endTime:''        // 清空结束时间
         }
+        // 重新获取数据列表
         getList();
     }
 
+    const handleGive = () => {
+        if(multipleSelection.value.length === 0) return proxy.$message.warning('请选择需要赠送的用户!')
+        giveForm.value.userIds = multipleSelection.value.map(item => item.id);
+        giveShow.value = true;
+    }
+
     const getList = async () => {
         let query = JSON.parse(JSON.stringify(queryParams.value));
         if(query.startEndTime && query.startEndTime.length > 0) {
@@ -208,6 +266,32 @@
         reset();
     }
 
+    const submitFormGive = () => {
+        proxy.$refs.giveRef.validate((valid) => {
+            if (valid) {
+                buttonLoadingGive.value = true;
+                saveBatch(giveForm.value).then((res)=>{
+                    if(res.code!==0) return proxy.$message.error(res.msg);
+                    proxy.$message.success('赠送成功!');
+                    buttonLoadingGive.value = false;
+                    giveShow.value = false;
+                    getList();
+                })
+            } else {
+                return false;
+            }
+        });
+    }
+    const cancelGive = () => {
+        giveShow.value = false;
+        giveForm.value = {
+            userIds:[],
+            type:1,
+            orderCount:1
+        };
+        proxy.resetForm("giveRef");
+    }
+
     onMounted(()=>{
         getList();
     })