Преглед изворни кода

优化;会员添加更改标签功能

htc пре 1 недеља
родитељ
комит
8077bb5483

+ 47 - 1
src/api/agent/indexTwo.js

@@ -168,6 +168,13 @@ export function deleteCommodity(data) {
     data
   })
 }
+export function updateBrief(data) {
+  return request({
+    url: '/core/user/updateBrief',
+    method: 'post',
+    data
+  })
+}
 // ------end 商品管理
 // ------start 订单管理
 export function getOrderList(query) {
@@ -231,4 +238,43 @@ export function deleteAdvert(data) {
     data
   })
 }
-// ---end 广告位管理
+// ---end 广告位管理
+
+
+// ---start 商品活动
+export function getGoodActivityList(query) {
+  return request({
+    url: `/core/event/manage/page`,
+    method: 'get',
+    params: query
+  })
+}
+
+export function addGoodActivity(data) {
+  return request({
+    url: '/core/event/manage',
+    method: 'post',
+    data
+  })
+}
+export function updateGoodActivity(data) {
+  return request({
+    url: '/core/event/manage',
+    method: 'put',
+    data
+  })
+}
+export function getGoodActivityInfo(id) {
+  return request({
+    url: `/core/event/manage/${id}`,
+    method: 'get'
+  })
+}
+export function deleteGoodActivity(data) {
+  return request({
+    url: `/core/event/manage`,
+    method: 'delete',
+    data
+  })
+}
+// ---end 商品活动

BIN
src/assets/images/agent/intenet3.png


BIN
src/assets/images/agent/think3.png


+ 7 - 8
src/views/modules/agent/dialog.vue

@@ -129,11 +129,11 @@
             <div class="a_bottom adfacjb">
                 <div class="ab_l adfac">
                     <div class="abl_pre adfac active">
-                        <img src="@/assets/images/agent/think2.png">
+                        <img src="@/assets/images/agent/think3.png">
                         <span>创衡增强</span>
                     </div>
                     <div class="abl_pre adfac active">
-                        <img src="@/assets/images/agent/intenet2.png">
+                        <img src="@/assets/images/agent/intenet3.png">
                         <span>联网搜索</span>
                     </div>
                     <!-- <div class="abl_pre adfac" :class="{'active':isScwd}" @click="isScwd=!isScwd">
@@ -668,7 +668,7 @@
                     .abl_pre{
                         background: #FFFFFF;
                         border-radius: 18px;
-                        border: 1px solid #E0E0E0;
+                        border: 1px solid #009191;
                         padding: 10px 13px;
                         margin-left: 16px;
                         //cursor: pointer;
@@ -676,21 +676,20 @@
                             margin-left: 0;
                         }
                         img{
-                            width: 16px;
-                            height: 16px;
+                            width: 20px;
+                            height: 20px;
                         }
                         span{
                             font-family: PingFangSC, PingFang SC;
                             font-weight: 400;
                             font-size: 15px;
                             color: #393939;
-                            line-height: 15px;
                             margin-left: 7px;
                         }
                         &.active{
-                            background: rgba(118,30,106,0.06);
+                            background: #F0F9F9;
                             span{
-                                color: #33A7A7;
+                                color: #393939;
                             }
                         }
                     }

+ 3 - 1
src/views/modules/agent/questionnaire.vue

@@ -11,7 +11,7 @@
         </div>
         <div class="query adfacjb">
             <el-select v-model="queryParams.questionnaireId" placeholder="问卷" style="width: calc(100% - 324px);" @change="getList" clearable>
-                <el-option v-for="item in useAgentStore().questionnaireList" :key="item.id" :label="item.title" :value="item.id"/>
+                <el-option v-for="item in questionnaireList" :key="item.id" :label="item.title" :value="item.id"/>
             </el-select>
             <el-select v-model="queryParams.status" placeholder="全部状态" style="width: 300px;" @change="getList" clearable>
                 <el-option label="待发送" :value="-1"></el-option>
@@ -189,6 +189,7 @@
     const { proxy } = getCurrentInstance();
     useAgentStore().getQuestionnaireData();
     
+    const questionnaireList = ref([])
     const queryParams = ref({
         page:1,
         limit:2,
@@ -392,6 +393,7 @@
     }
 
     onMounted(()=>{
+        questionnaireList.value = useAgentStore().questionnaireList?.filter(l=>l.type>=3) || []
         getList()
     })
 </script>

+ 4 - 1
src/views/modules/agent/questionnaire/detail.vue

@@ -53,7 +53,10 @@
     const typecfg = {
         1: '基础版',
         2: '专业版',
-        3: '专家版'
+        0:'专家版',
+        3:'高级',
+        4:'中级',
+        5:'初级',
     }
     const assessmentMethodCfg = {
         '1':'您对团队当前在此项陈述上所描述的实际表现的同意程度为:',

+ 4 - 1
src/views/modules/agent/questionnaire/publish.vue

@@ -122,7 +122,10 @@
     const typecfg = {
         1: '基础版',
         2: '专业版',
-        3: '专家版'
+        0:'专家版',
+        3:'高级',
+        4:'中级',
+        5:'初级',
     }
     const userShow = ref(false)
     const checkShow = ref(false)

+ 12 - 3
src/views/modules/agent/questionnaireList.vue

@@ -12,9 +12,12 @@
         <div class="query adfacjb">
             <el-input placeholder="搜索问卷" prefix-icon="el-icon-search" v-model="queryParams.title" style="width: calc(100% - 424px);" @keyup.enter.native="getList"></el-input>
             <el-select v-model="queryParams.type" placeholder="全部类型" style="width: 400px;" @change="getList">
+                <el-option label="初级" :value="5"></el-option>
+                <el-option label="中级" :value="4"></el-option>
+                <el-option label="高级" :value="3"></el-option>
                 <el-option label="基础版" :value="1"></el-option>
                 <el-option label="专业版" :value="2"></el-option>
-                <el-option label="专家版" :value="3"></el-option>
+                <el-option label="专家版" :value="0"></el-option>
             </el-select>
         </div>
         <div class="list">
@@ -60,9 +63,12 @@
                 </el-form-item>
                 <el-form-item label="问卷类型" prop="type">
                     <el-select v-model="form.type" placeholder="请选择问卷类型" style="width: 100%;">
+                        <el-option label="初级" :value="5"></el-option>
+                        <el-option label="中级" :value="4"></el-option>
+                        <el-option label="高级" :value="3"></el-option>
                         <el-option label="基础版" :value="1"></el-option>
                         <el-option label="专业版" :value="2"></el-option>
-                        <el-option label="专家版" :value="3"></el-option>
+                        <el-option label="专家版" :value="0"></el-option>
                     </el-select>
                 </el-form-item>
                 <el-form-item label="评估方法" prop="assessmentMethod">
@@ -112,7 +118,10 @@
     const typecfg = {
         1: '基础版',
         2: '专业版',
-        3: '专家版'
+        0: '专家版',
+        3: '高级',
+        4: '中级',
+        5: '初级'
     }
     const dataList = ref([])
     const total = ref(0)

+ 4 - 2
src/views/modules/agent/report.vue

@@ -16,7 +16,7 @@
         <template v-if="tidx===1">
             <div class="query adfacjb">
                 <el-select v-model="queryParams.questionnaireId" placeholder="问卷" style="width: 100%" @change="getTeamList(callback)" clearable>
-                    <el-option v-for="item in useAgentStore().questionnaireList" :key="item.id" :label="item.title" :value="item.id"/>
+                    <el-option v-for="item in questionnaireList" :key="item.id" :label="item.title" :value="item.id"/>
                 </el-select>
             </div>
             <div class="list">
@@ -45,7 +45,7 @@
         <template v-else-if="tidx===2">
             <div class="query adfacjb">
                 <el-select v-model="queryParams.questionnaireId" placeholder="问卷" style="width: 100%" @change="getTeamList(callback)" clearable>
-                    <el-option v-for="item in useAgentStore().questionnaireList" :key="item.id" :label="item.title" :value="item.id"/>
+                    <el-option v-for="item in questionnaireList" :key="item.id" :label="item.title" :value="item.id"/>
                 </el-select>
             </div>
             <div class="list">
@@ -107,6 +107,7 @@
     useAgentStore().getQuestionnaireData();
     useAgentStore().getTeamData();
 
+    const questionnaireList = ref([])
     const setShow = ref(false)
     const reportUsers = ref([])
     const checkedUsers = ref([])
@@ -305,6 +306,7 @@
     }
 
     onMounted(async ()=>{
+        questionnaireList.value = useAgentStore().questionnaireList?.filter(l=>l.type>=3) || []
         let type = proxy.$route.query?.type;
         let relationId = proxy.$route.query?.relationId;
         if(!type) return getTeamList()

+ 311 - 0
src/views/modules/business/activity.vue

@@ -0,0 +1,311 @@
+<template>
+    <div class="agent_page">
+        <div class="ap_title">{{ title }}</div>
+        <div class="add adf">
+            <el-button type="primary" icon="el-icon-plus" @click="handleAdd">新增活动</el-button>
+        </div>
+        <el-table :data="dataList" border cell-class-name="vertical-top-cell" v-loading="loading" empty-text="暂无广告" max-height="578px" style="margin-top: 18px;">
+            <el-table-column label="序号" width="50">
+                <template #default="scope">
+                    {{ scope.$index + 1 }}
+                </template>
+            </el-table-column>
+            <el-table-column label="活动名称" prop="eventName"></el-table-column>
+            <el-table-column label="问卷类型" prop="queType">
+                <template #default="{ row }">{{ queTypeDict[row.queType]||'' }}</template>
+            </el-table-column>
+            <el-table-column label="优惠类型" prop="discountMode">
+                <template #default="{ row }">{{ discountModeDict[row.discountMode]||'' }}</template>
+            </el-table-column>
+            <el-table-column label="优惠价格" prop="title">
+                <template #default="{ row }">{{ row.discountValue||0 }}{{ row.discountMode==1?'%':'元' }}</template>
+            </el-table-column>
+            <el-table-column label="活动开始时间" prop="beginAt"></el-table-column>
+            <el-table-column label="活动结束时间" prop="endAt"></el-table-column>
+            <el-table-column label="对应用户标签" prop="userBrief">
+                <template #default="{ row }">{{ user_brief.find(u=>u.value==row.userBrief)?.label||'' }}</template>
+            </el-table-column>
+            <el-table-column label="上架状态" prop="enable">
+                <template #default="{ row }">
+                    <el-switch v-model="row.enable" active-color="#33A7A7" inactive-color="#B9C0C8" @change="e=>statusChange(e,row)"></el-switch>
+                </template>
+            </el-table-column>
+            <el-table-column label="活动说明" prop="remark" show-overflow-tooltip></el-table-column>
+            <el-table-column label="创建时间" prop="createDate" width="160"></el-table-column>
+            <el-table-column label="操作" width="200">
+                <template #default="scope">
+                    <el-button link type="text" size="mini" @click="handleEdit(scope.row)">编辑</el-button>
+                    <el-button link type="text" size="mini" @click="handleDelete(scope.row)">删除</el-button>
+                </template>
+            </el-table-column>
+        </el-table>
+        <el-row style="display: flex;justify-content: center;">
+            <el-pagination
+                @size-change="handleSizeChange"
+                @current-change="handleCurrentChange"
+                :current-page="queryParams.page"
+                :page-sizes="[5, 10, 20, 50]"
+                :page-size="10"
+                layout="total, sizes, prev, pager, next, jumper"
+                :total="total"
+                v-show="total > 0">
+            </el-pagination>
+        </el-row>
+        <el-dialog width="40%" :visible.sync="show" :title="dialogTitle" @close="cancel">
+            <el-form ref="goodActivityRef" :model="goodActivityForm" :rules="goodActivityRules" label-width="120px" style="width: 90%;margin: 0 auto;">
+                <el-form-item label="活动名称" prop="eventName">
+                    <el-input v-model="goodActivityForm.eventName" placeholder="请输入活动名称"></el-input>
+                </el-form-item>
+                <el-form-item label="问卷类型" prop="queType">
+                    <el-select v-model="goodActivityForm.queType" placeholder="请选择问卷类型" style="width:100%">
+                        <el-option label="初级" :value="5"></el-option>
+                        <el-option label="中级" :value="4"></el-option>
+                        <el-option label="高级" :value="3"></el-option>
+                        <el-option label="基础版" :value="1"></el-option>
+                        <el-option label="专业版" :value="2"></el-option>
+                        <el-option label="专家版" :value="0"></el-option>
+                    </el-select>
+                </el-form-item>
+                <el-form-item label="优惠类型" prop="discountMode">
+                    <el-select v-model="goodActivityForm.discountMode" placeholder="请选择优惠类型" style="width:100%">
+                        <el-option label="折扣" :value="1"></el-option>
+                        <el-option label="抵扣" :value="0"></el-option>
+                    </el-select>
+                </el-form-item>
+                <el-form-item label="优惠值" prop="discountValue" v-if="goodActivityForm.discountMode===0||goodActivityForm.discountMode===1">
+                    <div v-if="goodActivityForm.discountMode===1" class="adfac">
+                        <span>实际价格的</span><el-input style="margin: 0 10px;flex: 1;" type="number" max="100" min="0" v-model="goodActivityForm.discountValue" placeholder="请输入优惠值"></el-input><span>%</span>
+                    </div>
+                    <div v-else-if="goodActivityForm.discountMode===0" class="adfac">
+                        <span>在实际价格上减去</span><el-input style="margin: 0 10px;flex: 1;" type="number" v-model="goodActivityForm.discountValue" placeholder="请输入优惠值"></el-input><span>元</span>
+                    </div>
+                </el-form-item>
+                <el-form-item label="活动开始时间" prop="beginAt">
+                    <el-date-picker style="width: 100%;" @change="e=>handleChangeDate(e,'beginAt')"
+                        v-model="goodActivityForm.beginAt"
+                        type="datetime"
+                        format="yyyy-MM-dd HH:mm"
+                        placeholder="请选择活动开始时间">
+                    </el-date-picker>
+                </el-form-item>
+                <el-form-item label="活动结束时间" prop="endAt">
+                    <el-date-picker style="width: 100%;" @change="e=>handleChangeDate(e,'endAt')"
+                        v-model="goodActivityForm.endAt"
+                        type="datetime"
+                        format="yyyy-MM-dd HH:mm"
+                        placeholder="请选择活动结束时间">
+                    </el-date-picker>
+                </el-form-item>
+                <el-form-item label="对应用户标签" prop="userBrief">
+                    <el-select v-model="goodActivityForm.userBrief" placeholder="请选择对应用户标签" style="width:100%">
+                        <el-option v-for="item in user_brief" :value="item.value" :label="item.label" :key="item.value"></el-option>
+                    </el-select>
+                </el-form-item>
+                <el-form-item label="活动说明" prop="remark">
+                    <el-input type="textarea" :rows="3" v-model="goodActivityForm.remark" placeholder="请输入活动说明"></el-input>
+                </el-form-item>
+                <el-form-item label="活动状态" prop="enable">
+                    <el-radio-group v-model="goodActivityForm.enable">
+                        <el-radio :label="1">上架</el-radio>
+                        <el-radio :label="0">下架</el-radio>
+                    </el-radio-group>
+                </el-form-item>
+            </el-form>
+            <div class="demo-drawer__footer" style="display: flex;justify-content: end;">
+                <el-button :loading="buttonLoading" type="primary" @click="submitForm">保 存</el-button>
+                <el-button @click="cancel" style="margin-right: 5%;">取 消</el-button>
+            </div>
+        </el-dialog>
+    </div>
+</template>
+
+<script setup name="">
+    import { ref, getCurrentInstance, onMounted } from 'vue'
+    const { proxy } = getCurrentInstance();
+    const { user_brief } = proxy.useDict("user_brief");
+    import {
+        getGoodActivityList,
+        addGoodActivity,
+        updateGoodActivity,
+        getGoodActivityInfo,
+        deleteGoodActivity
+    } from '@/api/agent/indexTwo.js'
+    const title = proxy.$route.meta.title;
+    const fileList = ref([]);
+    const queryParams = ref({
+        page:1,
+        limit:10
+    })
+    const queTypeDict = ref({
+        '1': '基础版',
+        '2': '专业版',
+        0:'专家版',
+        3:'高级',
+        4:'中级',
+        5:'初级',
+    })
+    const discountModeDict = ref({
+        '1': '折扣',
+        '0': '抵扣'
+    })
+    const dataList = ref([])
+    const total = ref(0)
+    const loading = ref(false)
+    const buttonLoading = ref(false)
+    const show = ref(false)
+    const dialogTitle = ref('新增商品活动')
+    const goodActivityRef = ref(null)
+    const goodActivityForm = ref({
+        id:'',
+        eventName:'',
+        queType:'',
+        discountMode:'',
+        discountValue:0,
+        beginAt:'',
+        endAt:'',
+        userBrief:'',
+        remark:'',
+        enable:1
+    })
+    const goodActivityRules = ref({
+        eventName: [
+            { required: true, message: '请输入活动名称', trigger: 'blur' },
+        ],
+        queType: [
+            { required: true, message: '请选择问卷类型', trigger: 'change' }
+        ],
+        discountMode: [
+            { required: true, message: '请选择优惠类型', trigger: 'change' }
+        ],
+        discountValue: [
+            { required: true, message: '请输入优惠值', trigger: 'blur' },
+        ],
+        beginAt: [
+            { required: true, message: '请选择活动开始时间', trigger: 'change' }
+        ],
+        endAt: [
+            { required: true, message: '请选择活动结束时间', trigger: 'change' }
+        ],
+        userBrief: [
+            { required: true, message: '请选择对应用户标签', trigger: 'change' }
+        ],
+        remark: [
+            { required: true, message: '请输入活动说明', trigger: 'blur' }
+        ]
+    })
+
+    const getList = async () => {
+        let query = {...queryParams.value};
+        loading.value = true;
+        const res = await getGoodActivityList(query);
+        dataList.value = res.data.list;
+        dataList.value.forEach(item=>{
+            item.enable = item.enable==1?true:false;
+        })
+        total.value = res.data.total;
+        loading.value = false;
+    }
+    const handleSizeChange = (e)=>{
+        queryParams.value.limit = e;
+        getList();
+    }
+    const handleCurrentChange = (e)=>{
+        queryParams.value.page = e;
+        getList();
+    }
+
+    const reset = () => {
+        goodActivityForm.value = {
+            id:'',
+            eventName:'',
+            queType:'',
+            discountMode:'',
+            discountValue:0,
+            beginAt:'',
+            endAt:'',
+            userBrief:'',
+            remark:'',
+            enable:1
+        };
+        fileList.value = [];
+        proxy.resetForm("goodActivityRef");
+    }
+    const handleAdd = () => {
+        reset();
+        dialogTitle.value = "新增商品活动";
+        show.value = true;
+    }
+    const handleEdit = (row) => {
+        reset();
+        getGoodActivityInfo(row.id).then(response => {
+            goodActivityForm.value = response.data;
+            goodActivityForm.value.queType = Number(goodActivityForm.value.queType);
+            dialogTitle.value = "编辑商品活动";
+            show.value = true;
+        });
+    }
+
+    const submitForm = () => {
+        proxy.$refs.goodActivityRef.validate((valid) => {
+            if (valid) {
+                buttonLoading.value = true;
+                if(goodActivityForm.value.id){
+                    updateGoodActivity(goodActivityForm.value).then((res)=>{
+                        if(res.code!==0) return proxy.$message.error(res.msg);
+                        buttonLoading.value = false;
+                        show.value = false;
+                        getList();
+                    })
+                }else{
+                    addGoodActivity(goodActivityForm.value).then((res)=>{
+                        if(res.code!==0) return proxy.$message.error(res.msg);
+                        buttonLoading.value = false;
+                        show.value = false;
+                        getList();
+                    })
+                }
+            } else {
+                return false;
+            }
+        });
+    }
+    const cancel = () => {
+        show.value = false;
+        reset();
+    }
+    async function handleDelete(row) {
+        await proxy?.$modal.confirm(`确认删除商品活动【${row.eventName}】吗?`).finally(() => loading.value = false);
+        let res = await deleteGoodActivity([row.id]);
+        if (res.code === 0) proxy?.$modal.msgSuccess("删除成功");
+        else return proxy?.$modal.msgError(res.msg);
+        await getList();
+    }
+
+    function statusChange(e,row) {
+        let data = JSON.parse(JSON.stringify(row));
+        data.enable = data.enable?1:0;
+        updateGoodActivity(data).then((res)=>{
+            if(res.code!==0) return proxy.$message.error(res.msg);
+            getList();
+        })
+    }
+
+    function handleChangeDate (e,key) {
+        goodActivityForm.value[key] = proxy.parseTime(new Date(e), '{yy}-{mm}-{dd} {hh}:{ii}');
+    }
+
+    onMounted(()=>{
+        getList();
+    })
+</script>
+
+<style scoped lang="scss">
+    .agent_page{
+        padding: 24px 16px;
+
+        .add{
+            margin-top: -10px;
+            justify-content: flex-end;
+        }
+    }
+</style>

+ 4 - 1
src/views/modules/business/bill.vue

@@ -78,7 +78,10 @@
     const typeCfg = ref({
         1:'基础版',
         2:'专业版',
-        3:'专家版'
+        0:'专家版',
+        3:'高级',
+        4:'中级',
+        5:'初级',
     })
     const queryRef = ref(null)
     const dataList = ref([])

+ 5 - 29
src/views/modules/business/commodity.vue

@@ -41,14 +41,8 @@
             <el-table-column label="商品类型" prop="xx">
                 <template #default="{ row }">{{ typeCfg[row.type] }}</template>
             </el-table-column>
-            <el-table-column label="问卷次数" prop="frequency">
-                <template #default="{ row }">{{ row.frequency==11?'10次以上':(row.frequency+'次') }}</template>
-            </el-table-column>
             <el-table-column label="价格(元)" prop="price">
-                <template #default="{ row }">{{ row.frequency==11?(row.price+'/次'):row.price }}</template>
-            </el-table-column>
-            <el-table-column label="有效期" prop="valid">
-                <template #default="{ row }">{{ row.valid }}年</template>
+                <template #default="{ row }">¥{{ row.price||0 }}</template>
             </el-table-column>
             <el-table-column label="创建时间" prop="createDate"></el-table-column>
             <el-table-column label="销量" prop="sales"></el-table-column>
@@ -90,24 +84,9 @@
                         </div>
                     </div>
                 </el-form-item>
-                <el-form-item label="问卷次数" prop="frequency">
-                    <el-select v-model="goodForm.frequency" placeholder="请选择问卷次数" style="width:100%">
-                        <el-option label="1次" value="1"></el-option>
-                        <el-option label="5次" value="5"></el-option>
-                        <el-option label="10次" value="10"></el-option>
-                        <el-option label="10次以上" value="11"></el-option>
-                    </el-select>
-                </el-form-item>
                 <el-form-item label="价格" prop="price">
                     <el-input type="number" v-model="goodForm.price" placeholder="请输入次数价格"></el-input>
                 </el-form-item>
-                <el-form-item label="有效期" prop="valid">
-                    <el-select v-model="goodForm.valid" placeholder="请选择有效期" style="width:100%">
-                        <el-option label="购买成功后,1年内有效" value="1"></el-option>
-                        <el-option label="购买成功后,2年内有效" value="2"></el-option>
-                        <el-option label="购买成功后,3年内有效" value="3"></el-option>
-                    </el-select>
-                </el-form-item>
                 <el-form-item label="商品状态" prop="status">
                     <el-radio-group v-model="goodForm.status">
                         <el-radio :label="1">上架</el-radio>
@@ -143,7 +122,10 @@
     const typeCfg = ref({
         1:'基础版',
         2:'专业版',
-        3:'专家版'
+        0:'专家版',
+        3:'高级',
+        4:'中级',
+        5:'初级',
     })
     const queryRef = ref(null)
     const dataList = ref([])
@@ -163,15 +145,9 @@
     })
     const goodRef = ref(null)
     const goodRules = ref({
-        frequency: [
-            { required: true, message: '请选择问卷次数', trigger: 'change' },
-        ],
         price: [
             { required: true, message: '请输入价格', trigger: 'blur' },
         ],
-        valid: [
-            { required: true, message: '请选择有效期', trigger: 'change' },
-        ],
         status: [
             { required: true, message: '请选择商品状态', trigger: 'change' },
         ],

+ 4 - 1
src/views/modules/business/order.vue

@@ -88,7 +88,10 @@
     const typeCfg = ref({
         1:'基础版',
         2:'专业版',
-        3:'专家版'
+        0:'专家版',
+        3:'高级',
+        4:'中级',
+        5:'初级',
     })
     const queryRef = ref(null)
     const dataList = ref([])

+ 9 - 5
src/views/modules/home.vue

@@ -178,7 +178,10 @@
   const typeName = {
     1:'基础版问卷',
     2:'专业版问卷',
-    3:'专家版问卷'
+    0:'专家版问卷',
+    3:'高级问卷',
+    4:'中级问卷',
+    5:'初级问卷',
   }
 
   const handleChangeTime = (idx) => {
@@ -515,21 +518,22 @@
             .hr_btn{
               width: 68px;
               height: 28px;
+              border: 1px solid #009191;
               background: #E1F0F0;
               border-radius: 14px;
               font-family: PingFangSC, PingFang SC;
               font-weight: 400;
               font-size: 14px;
-              color: #009191;
-              line-height: 28px;
+              color: #393939;
+              line-height: 24px;
               text-align: center;
               &.jxz{
                 background: #FCECB6;
                 color: #864F10;
               }
               &.ck{
-                background: rgba(118,30,106,0.16);
-                color: #33A7A7;
+                background: F0F9F9;
+                color: #393939;
                 cursor: pointer;
               }
             }

+ 82 - 3
src/views/modules/wechatUser.vue

@@ -42,6 +42,9 @@
                 </template>
             </el-table-column>
             <el-table-column label="用户昵称" prop="realName"></el-table-column>
+            <el-table-column label="用户标签" prop="userBrief">
+                <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="xx">
@@ -56,6 +59,7 @@
             <el-table-column label="操作" width="150">
                 <template #default="scope">
                     <el-button link type="text" size="mini" @click="handleReview(scope.row)">查看</el-button>
+                    <el-button link type="text" size="mini" @click="handleTag(scope.row)">更改标签</el-button>
                 </template>
             </el-table-column>
         </el-table>
@@ -71,16 +75,29 @@
                 v-show="total > 0">
             </el-pagination>
         </el-row>
+        <el-dialog width="40%" :visible.sync="show" title="更改用户标签" @close="cancel">
+            <el-form ref="tagRef" :model="tagForm" :rules="tagRules" label-width="100px" style="width: 90%;margin: 0 auto;">
+                <el-form-item label="用户标签" prop="userBrief">
+                    <el-select v-model="tagForm.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-form>
+            <div class="demo-drawer__footer" style="display: flex;justify-content: end;">
+                <el-button :loading="buttonLoading" type="primary" @click="submitForm">保 存</el-button>
+                <el-button @click="cancel" style="margin-right: 5%;">取 消</el-button>
+            </div>
+        </el-dialog>
     </div>
 </template>
 
 <script setup name="">
     import { ref, getCurrentInstance, onMounted } from 'vue'
     import { 
-        getWechatUserList
+        getWechatUserList,updateBrief
     } from '@/api/agent/indexTwo.js'
     const { proxy } = getCurrentInstance();
-    const { channel_type } = proxy.useDict("channel_type");
+    const { channel_type,user_brief } = proxy.useDict("channel_type","user_brief");
     const title = proxy.$route.meta.title;
     const queryParams = ref({
         page:1,
@@ -94,11 +111,24 @@
     const typeCfg = ref({
         1:'基础版',
         2:'专业版',
-        3:'专家版'
+        0:'专家版',
+        3:'高级',
+        4:'中级',
+        5:'初级',
     })
     const dataList = ref([])
     const total = ref(0)
     const loading = ref(false)
+    const show = ref(false)
+    const buttonLoading = ref(false)
+    const tagForm = ref({
+        id:'',
+        userBrief:''
+    })
+    const tagRules = ref({
+        userBrief:[{ required: true, message: '请选择用户标签', trigger: 'change' }],
+    })
+
     
     const resetQuery = () => {
         proxy.$refs.queryRef.resetFields();
@@ -144,6 +174,39 @@
             }
         })
     }
+    const handleTag = (row) => {
+        tagForm.value.id = row.id;
+        tagForm.value.userBrief = row.userBrief;
+        show.value = true;
+    }
+
+    const reset = () => {
+        tagForm.value = {
+            id:'',
+            userBrief:''
+        };
+        proxy.resetForm("tagRef");
+    }
+
+    const submitForm = () => {
+        proxy.$refs.tagRef.validate((valid) => {
+            if (valid) {
+                buttonLoading.value = true;
+                updateBrief(tagForm.value).then((res)=>{
+                    if(res.code!==0) return proxy.$message.error(res.msg);
+                    buttonLoading.value = false;
+                    show.value = false;
+                    getList();
+                })
+            } else {
+                return false;
+            }
+        });
+    }
+    const cancel = () => {
+        show.value = false;
+        reset();
+    }
 
     onMounted(()=>{
         getList();
@@ -151,6 +214,22 @@
 </script>
 
 <style scoped lang="scss">
+    :v-deep .el-dialog__wrapper{
+        background: rgba(0,0,0,.3) !important;
+    }
+    ::v-deep .el-dialog__title{
+        font-weight: bold !important;
+    }
+    ::v-deep .el-dialog{
+        margin-top: 20vh !important;
+    }
+    ::v-deep .el-drawer__header span{
+        font-weight: bold;
+        font-size: 16px;
+        color: #1D2129;
+        line-height: 22px;
+    }
+
     .agent_page{
         padding: 24px 16px;
     }

+ 4 - 1
src/views/modules/wechatUser/payRecord.vue

@@ -53,7 +53,10 @@
     const typeCfg = ref({
         1: '基础版',
         2: '专业版',
-        3: '专家版'
+        0:'专家版',
+        3:'高级',
+        4:'中级',
+        5:'初级',
     })
     const dataList = ref([])
     const total = ref(0)

+ 5 - 2
src/views/modules/wechatUser/reportRecord.vue

@@ -18,7 +18,7 @@
             <el-table-column label="创建时间" prop="createDate"></el-table-column>
             <el-table-column label="操作" width="150">
                 <template #default="scope">
-                    <el-button link type="text" size="mini" @click="handleReview(scope.row)">查看</el-button>
+                    <el-button link type="text" size="mini" @click="handleReview(scope.row)">查看报告</el-button>
                 </template>
             </el-table-column>
         </el-table>
@@ -59,7 +59,10 @@
     const typeDict = ref({
         1:'基础版',
         2:'专业版',
-        3:'专家版'
+        0:'专家版',
+        3:'高级',
+        4:'中级',
+        5:'初级',
     })
     const dataList = ref([])
     const total = ref(0)

+ 4 - 1
src/views/modules/wechatUserDetail.vue

@@ -115,7 +115,10 @@
     const typeCfg = ref({
         1:'基础版',
         2:'专业版',
-        3:'专家版'
+        0:'专家版',
+        3:'高级',
+        4:'中级',
+        5:'初级',
     })
     const reportData = ref({})
     const pdfShow = ref(false)

+ 4 - 4
src/views/pages/login.vue

@@ -39,9 +39,9 @@
                 <el-checkbox v-model="checked">记住密码</el-checkbox>
             </div>
             <div class="l_btn" :class="{'active':((tidx===1&&accountForm.username&&accountForm.password)||(tidx===2&&codeForm.phone&&codeForm.code))}" @click="handleLogin">立即登录</div>
-            <div class="l_check">
+            <!-- <div class="l_check">
                 <el-checkbox v-model="agree">已阅读并同意 <span class="lcs">隐私协议</span> 和 <span class="lcs">服务条款</span></el-checkbox>
-            </div>
+            </div> -->
         </div>
     </div>
 </template>
@@ -86,7 +86,7 @@
         ]
     })
     const checked = ref(false);
-    const agree = ref(false);
+    const agree = ref(true);
 
     
     const handleChangeTab = (idx) => {
@@ -243,7 +243,7 @@
 
         .login{
             width: 514px;
-            height: 614px;
+            height: 554px;
             background: #FFFFFF;
             box-shadow: 0px 2px 16px 0px rgba(0,0,0,0.08);
             border-radius: 16px;