Browse Source

1. 【用户管理】增加用户已支付的总金额、已生成的报告数量、关联的所有批次标识

2. 【报告管理】批次标识可以模糊查询
3. 【答题记录】增加电话号码搜索
4. 【答案记录信息】按照题目进行排序(同一个题目放在一起)
5. 【测评报告详情】增加问题和答案列

1. 【报告详情页】报告详情可以下载
2. 【批次标识生成逻辑】调整为:手机号(11位)+生成日期(6位)+2位数
master
Aug 3 weeks ago
parent
commit
105f674385
42 changed files with 395 additions and 203 deletions
  1. +1
    -1
      jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/assessmentAnswerLog/controller/AssessmentAnswerLogController.java
  2. +5
    -1
      jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/assessmentAnswerLog/entity/AssessmentAnswerLog.java
  3. +1
    -1
      jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/assessmentAnswerLog/mapper/AssessmentAnswerLogMapper.java
  4. +1
    -1
      jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/assessmentAnswerLog/service/IAssessmentAnswerLogService.java
  5. +1
    -1
      jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/assessmentAnswerLog/service/impl/AssessmentAnswerLogServiceImpl.java
  6. +27
    -1
      jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/assessmentAnswerLog/vue/AssessmentAnswerLogList.vue
  7. +6
    -1
      jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/assessmentAnswerLog/vue/modules/AssessmentAnswerLogForm.vue
  8. +28
    -3
      jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/assessmentAnswerLog/vue3/AssessmentAnswerLog.data.ts
  9. +1
    -1
      jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/assessmentExamLog/controller/AssessmentExamLogController.java
  10. +5
    -1
      jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/assessmentExamLog/entity/AssessmentExamLog.java
  11. +1
    -1
      jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/assessmentExamLog/mapper/AssessmentExamLogMapper.java
  12. +1
    -1
      jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/assessmentExamLog/service/IAssessmentExamLogService.java
  13. +1
    -1
      jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/assessmentExamLog/service/impl/AssessmentExamLogServiceImpl.java
  14. +26
    -0
      jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/assessmentExamLog/vue/AssessmentExamLogList.vue
  15. +5
    -0
      jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/assessmentExamLog/vue/modules/AssessmentExamLogForm.vue
  16. +25
    -0
      jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/assessmentExamLog/vue3/AssessmentExamLog.data.ts
  17. +1
    -1
      jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/assessmentExamReport/controller/AssessmentExamReportController.java
  18. +9
    -1
      jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/assessmentExamReport/entity/AssessmentExamReport.java
  19. +1
    -1
      jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/assessmentExamReport/mapper/AssessmentExamReportMapper.java
  20. +1
    -1
      jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/assessmentExamReport/service/IAssessmentExamReportService.java
  21. +1
    -1
      jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/assessmentExamReport/service/impl/AssessmentExamReportServiceImpl.java
  22. +32
    -0
      jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/assessmentExamReport/vue/AssessmentExamReportList.vue
  23. +10
    -0
      jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/assessmentExamReport/vue/modules/AssessmentExamReportForm.vue
  24. +35
    -0
      jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/assessmentExamReport/vue3/AssessmentExamReport.data.ts
  25. +1
    -1
      jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/assessmentReportUser/controller/AssessmentReportUserController.java
  26. +1
    -1
      jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/assessmentReportUser/entity/AssessmentReportUser.java
  27. +1
    -1
      jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/assessmentReportUser/mapper/AssessmentReportUserMapper.java
  28. +1
    -1
      jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/assessmentReportUser/service/IAssessmentReportUserService.java
  29. +1
    -1
      jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/assessmentReportUser/service/impl/AssessmentReportUserServiceImpl.java
  30. +20
    -0
      jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/assessmentReportUser/vue/AssessmentReportUserList.vue
  31. +15
    -0
      jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/assessmentReportUser/vue3/AssessmentReportUser.data.ts
  32. +16
    -16
      jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/hanHaiMember/controller/HanHaiMemberController.java
  33. +23
    -8
      jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/hanHaiMember/entity/HanHaiMember.java
  34. +2
    -2
      jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/hanHaiMember/mapper/HanHaiMemberMapper.java
  35. +2
    -2
      jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/hanHaiMember/service/IHanHaiMemberService.java
  36. +2
    -2
      jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/hanHaiMember/service/impl/HanHaiMemberServiceImpl.java
  37. +11
    -55
      jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/hanHaiMember/vue/HanHaiMemberList.vue
  38. +6
    -21
      jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/hanHaiMember/vue/modules/HanHaiMemberForm.vue
  39. +14
    -69
      jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/hanHaiMember/vue3/HanHaiMember.data.ts
  40. +2
    -2
      jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/hanHaiMember/vue3/HanHaiMemberList.vue
  41. +36
    -1
      jeecg-boot-module-system/src/main/java/org/jeecg/modules/api/service/impl/ExamServiceImpl.java
  42. +16
    -0
      jeecg-boot-module-system/src/main/java/org/jeecg/modules/api/service/impl/ReportServiceImpl.java

+ 1
- 1
jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/assessmentAnswerLog/controller/AssessmentAnswerLogController.java View File

@ -39,7 +39,7 @@ import org.jeecg.common.aspect.annotation.AutoLog;
/**
* @Description: 用户测评答案记录表
* @Author: jeecg-boot
* @Date: 2025-09-23
* @Date: 2025-10-17
* @Version: V1.0
*/
@Api(tags="用户测评答案记录表")


+ 5
- 1
jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/assessmentAnswerLog/entity/AssessmentAnswerLog.java View File

@ -20,7 +20,7 @@ import lombok.experimental.Accessors;
/**
* @Description: 用户测评答案记录表
* @Author: jeecg-boot
* @Date: 2025-09-23
* @Date: 2025-10-17
* @Version: V1.0
*/
@Data
@ -51,6 +51,10 @@ public class AssessmentAnswerLog implements Serializable {
@Excel(name = "批次标识", width = 15)
@ApiModelProperty(value = "批次标识")
private java.lang.String batchNo;
/**题目编号*/
@Excel(name = "题目编号", width = 15)
@ApiModelProperty(value = "题目编号")
private java.lang.Integer questionNo;
/**关联题目*/
@Excel(name = "关联题目", width = 15, dictTable = "assessment_question", dicText = "question", dicCode = "id")
@Dict(dictTable = "assessment_question", dicText = "question", dicCode = "id")


+ 1
- 1
jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/assessmentAnswerLog/mapper/AssessmentAnswerLogMapper.java View File

@ -9,7 +9,7 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
/**
* @Description: 用户测评答案记录表
* @Author: jeecg-boot
* @Date: 2025-09-23
* @Date: 2025-10-17
* @Version: V1.0
*/
public interface AssessmentAnswerLogMapper extends BaseMapper<AssessmentAnswerLog> {


+ 1
- 1
jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/assessmentAnswerLog/service/IAssessmentAnswerLogService.java View File

@ -6,7 +6,7 @@ import com.baomidou.mybatisplus.extension.service.IService;
/**
* @Description: 用户测评答案记录表
* @Author: jeecg-boot
* @Date: 2025-09-23
* @Date: 2025-10-17
* @Version: V1.0
*/
public interface IAssessmentAnswerLogService extends IService<AssessmentAnswerLog> {


+ 1
- 1
jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/assessmentAnswerLog/service/impl/AssessmentAnswerLogServiceImpl.java View File

@ -10,7 +10,7 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
/**
* @Description: 用户测评答案记录表
* @Author: jeecg-boot
* @Date: 2025-09-23
* @Date: 2025-10-17
* @Version: V1.0
*/
@Service


+ 27
- 1
jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/assessmentAnswerLog/vue/AssessmentAnswerLogList.vue View File

@ -4,6 +4,26 @@
<div class="table-page-search-wrapper">
<a-form layout="inline" @keyup.enter.native="searchQuery">
<a-row :gutter="24">
<a-col :xl="6" :lg="7" :md="8" :sm="24">
<a-form-item label="批次标识">
<a-input placeholder="请输入批次标识" v-model="queryParam.batchNo"></a-input>
</a-form-item>
</a-col>
<a-col :xl="6" :lg="7" :md="8" :sm="24">
<a-form-item label="关联用户">
<j-search-select-tag placeholder="请选择关联用户" v-model="queryParam.userId" dict="han_hai_member,nick_name,id"/>
</a-form-item>
</a-col>
<a-col :xl="6" :lg="7" :md="8" :sm="24">
<span style="float: left;overflow: hidden;" class="table-page-search-submitButtons">
<a-button type="primary" @click="searchQuery" icon="search">查询</a-button>
<a-button type="primary" @click="searchReset" icon="reload" style="margin-left: 8px">重置</a-button>
<a @click="handleToggleSearch" style="margin-left: 8px">
{{ toggleSearchStatus ? '收起' : '展开' }}
<a-icon :type="toggleSearchStatus ? 'up' : 'down'"/>
</a>
</span>
</a-col>
</a-row>
</a-form>
</div>
@ -127,6 +147,11 @@
align:"center",
dataIndex: 'batchNo'
},
{
title:'题目编号',
align:"center",
dataIndex: 'questionNo'
},
{
title:'关联题目',
align:"center",
@ -177,9 +202,10 @@
getSuperFieldList(){
let fieldList=[];
fieldList.push({type:'string',value:'batchNo',text:'批次标识',dictCode:''})
fieldList.push({type:'int',value:'questionNo',text:'题目编号',dictCode:''})
fieldList.push({type:'string',value:'questionId',text:'关联题目',dictCode:"assessment_question,question,id"})
fieldList.push({type:'string',value:'answerId',text:'关联答案',dictCode:"assessment_answer,answer,id"})
fieldList.push({type:'string',value:'userId',text:'关联用户',dictCode:"han_hai_member,nick_name,id"})
fieldList.push({type:'sel_search',value:'userId',text:'关联用户',dictTable:"han_hai_member", dictText:'nick_name', dictCode:'id'})
this.superFieldList = fieldList
}
}


+ 6
- 1
jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/assessmentAnswerLog/vue/modules/AssessmentAnswerLogForm.vue View File

@ -8,6 +8,11 @@
<a-input v-model="model.batchNo" placeholder="请输入批次标识" ></a-input>
</a-form-model-item>
</a-col>
<a-col :span="24">
<a-form-model-item label="题目编号" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="questionNo">
<a-input-number v-model="model.questionNo" placeholder="请输入题目编号" style="width: 100%" />
</a-form-model-item>
</a-col>
<a-col :span="24">
<a-form-model-item label="关联题目" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="questionId">
<j-dict-select-tag type="list" v-model="model.questionId" dictCode="assessment_question,question,id" placeholder="请选择关联题目" />
@ -20,7 +25,7 @@
</a-col>
<a-col :span="24">
<a-form-model-item label="关联用户" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="userId">
<j-dict-select-tag type="list" v-model="model.userId" dictCode="han_hai_member,nick_name,id" placeholder="请选择关联用户" />
<j-search-select-tag v-model="model.userId" dict="han_hai_member,nick_name,id" />
</a-form-model-item>
</a-col>
</a-row>


+ 28
- 3
jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/assessmentAnswerLog/vue3/AssessmentAnswerLog.data.ts View File

@ -9,6 +9,11 @@ export const columns: BasicColumn[] = [
align:"center",
dataIndex: 'batchNo'
},
{
title: '题目编号',
align:"center",
dataIndex: 'questionNo'
},
{
title: '关联题目',
align:"center",
@ -27,6 +32,21 @@ export const columns: BasicColumn[] = [
];
//查询数据
export const searchFormSchema: FormSchema[] = [
{
label: "批次标识",
field: "batchNo",
component: 'Input',
colProps: {span: 6},
},
{
label: "关联用户",
field: "userId",
component: 'JSearchSelect',
componentProps:{
dict:"han_hai_member,nick_name,id"
},
colProps: {span: 6},
},
];
//表单数据
export const formSchema: FormSchema[] = [
@ -35,6 +55,11 @@ export const formSchema: FormSchema[] = [
field: 'batchNo',
component: 'Input',
},
{
label: '题目编号',
field: 'questionNo',
component: 'InputNumber',
},
{
label: '关联题目',
field: 'questionId',
@ -54,9 +79,9 @@ export const formSchema: FormSchema[] = [
{
label: '关联用户',
field: 'userId',
component: 'JDictSelectTag',
component: 'JSearchSelect',
componentProps:{
dictCode:"han_hai_member,nick_name,id"
},
dict:"han_hai_member,nick_name,id"
},
},
];

+ 1
- 1
jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/assessmentExamLog/controller/AssessmentExamLogController.java View File

@ -39,7 +39,7 @@ import org.jeecg.common.aspect.annotation.AutoLog;
/**
* @Description: 用户测评答题记录表
* @Author: jeecg-boot
* @Date: 2025-09-19
* @Date: 2025-10-17
* @Version: V1.0
*/
@Api(tags="用户测评答题记录表")


+ 5
- 1
jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/assessmentExamLog/entity/AssessmentExamLog.java View File

@ -20,7 +20,7 @@ import lombok.experimental.Accessors;
/**
* @Description: 用户测评答题记录表
* @Author: jeecg-boot
* @Date: 2025-09-19
* @Date: 2025-10-17
* @Version: V1.0
*/
@Data
@ -63,6 +63,10 @@ public class AssessmentExamLog implements Serializable {
@Excel(name = "总题量", width = 15)
@ApiModelProperty(value = "总题量")
private java.lang.Integer allNum;
/**电话号码*/
@Excel(name = "电话号码", width = 15)
@ApiModelProperty(value = "电话号码")
private java.lang.String userPhone;
/**关联用户*/
@Excel(name = "关联用户", width = 15, dictTable = "han_hai_member", dicText = "nick_name", dicCode = "id")
@Dict(dictTable = "han_hai_member", dicText = "nick_name", dicCode = "id")


+ 1
- 1
jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/assessmentExamLog/mapper/AssessmentExamLogMapper.java View File

@ -9,7 +9,7 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
/**
* @Description: 用户测评答题记录表
* @Author: jeecg-boot
* @Date: 2025-09-19
* @Date: 2025-10-17
* @Version: V1.0
*/
public interface AssessmentExamLogMapper extends BaseMapper<AssessmentExamLog> {


+ 1
- 1
jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/assessmentExamLog/service/IAssessmentExamLogService.java View File

@ -6,7 +6,7 @@ import com.baomidou.mybatisplus.extension.service.IService;
/**
* @Description: 用户测评答题记录表
* @Author: jeecg-boot
* @Date: 2025-09-19
* @Date: 2025-10-17
* @Version: V1.0
*/
public interface IAssessmentExamLogService extends IService<AssessmentExamLog> {


+ 1
- 1
jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/assessmentExamLog/service/impl/AssessmentExamLogServiceImpl.java View File

@ -10,7 +10,7 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
/**
* @Description: 用户测评答题记录表
* @Author: jeecg-boot
* @Date: 2025-09-19
* @Date: 2025-10-17
* @Version: V1.0
*/
@Service


+ 26
- 0
jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/assessmentExamLog/vue/AssessmentExamLogList.vue View File

@ -4,6 +4,26 @@
<div class="table-page-search-wrapper">
<a-form layout="inline" @keyup.enter.native="searchQuery">
<a-row :gutter="24">
<a-col :xl="6" :lg="7" :md="8" :sm="24">
<a-form-item label="批次标识">
<a-input placeholder="请输入批次标识" v-model="queryParam.batchNo"></a-input>
</a-form-item>
</a-col>
<a-col :xl="6" :lg="7" :md="8" :sm="24">
<a-form-item label="关联用户">
<j-search-select-tag placeholder="请选择关联用户" v-model="queryParam.userId" dict="han_hai_member,nick_name,id"/>
</a-form-item>
</a-col>
<a-col :xl="6" :lg="7" :md="8" :sm="24">
<span style="float: left;overflow: hidden;" class="table-page-search-submitButtons">
<a-button type="primary" @click="searchQuery" icon="search">查询</a-button>
<a-button type="primary" @click="searchReset" icon="reload" style="margin-left: 8px">重置</a-button>
<a @click="handleToggleSearch" style="margin-left: 8px">
{{ toggleSearchStatus ? '收起' : '展开' }}
<a-icon :type="toggleSearchStatus ? 'up' : 'down'"/>
</a>
</span>
</a-col>
</a-row>
</a-form>
</div>
@ -142,6 +162,11 @@
align:"center",
dataIndex: 'allNum'
},
{
title:'电话号码',
align:"center",
dataIndex: 'userPhone'
},
{
title:'关联用户',
align:"center",
@ -185,6 +210,7 @@
fieldList.push({type:'int',value:'finishNum',text:'已答题数量',dictCode:''})
fieldList.push({type:'int',value:'remainNum',text:'未答题数量',dictCode:''})
fieldList.push({type:'int',value:'allNum',text:'总题量',dictCode:''})
fieldList.push({type:'string',value:'userPhone',text:'电话号码',dictCode:''})
fieldList.push({type:'sel_search',value:'userId',text:'关联用户',dictTable:"han_hai_member", dictText:'nick_name', dictCode:'id'})
this.superFieldList = fieldList
}


+ 5
- 0
jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/assessmentExamLog/vue/modules/AssessmentExamLogForm.vue View File

@ -23,6 +23,11 @@
<a-input-number v-model="model.allNum" placeholder="请输入总题量" style="width: 100%" />
</a-form-model-item>
</a-col>
<a-col :span="24">
<a-form-model-item label="电话号码" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="userPhone">
<a-input v-model="model.userPhone" placeholder="请输入电话号码" ></a-input>
</a-form-model-item>
</a-col>
<a-col :span="24">
<a-form-model-item label="关联用户" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="userId">
<j-search-select-tag v-model="model.userId" dict="han_hai_member,nick_name,id" />


+ 25
- 0
jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/assessmentExamLog/vue3/AssessmentExamLog.data.ts View File

@ -24,6 +24,11 @@ export const columns: BasicColumn[] = [
align:"center",
dataIndex: 'allNum'
},
{
title: '电话号码',
align:"center",
dataIndex: 'userPhone'
},
{
title: '关联用户',
align:"center",
@ -32,6 +37,21 @@ export const columns: BasicColumn[] = [
];
//查询数据
export const searchFormSchema: FormSchema[] = [
{
label: "批次标识",
field: "batchNo",
component: 'Input',
colProps: {span: 6},
},
{
label: "关联用户",
field: "userId",
component: 'JSearchSelect',
componentProps:{
dict:"han_hai_member,nick_name,id"
},
colProps: {span: 6},
},
];
//表单数据
export const formSchema: FormSchema[] = [
@ -55,6 +75,11 @@ export const formSchema: FormSchema[] = [
field: 'allNum',
component: 'InputNumber',
},
{
label: '电话号码',
field: 'userPhone',
component: 'Input',
},
{
label: '关联用户',
field: 'userId',


+ 1
- 1
jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/assessmentExamReport/controller/AssessmentExamReportController.java View File

@ -39,7 +39,7 @@ import org.jeecg.common.aspect.annotation.AutoLog;
/**
* @Description: 用户测评报告表
* @Author: jeecg-boot
* @Date: 2025-09-19
* @Date: 2025-10-17
* @Version: V1.0
*/
@Api(tags="用户测评报告表")


+ 9
- 1
jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/assessmentExamReport/entity/AssessmentExamReport.java View File

@ -20,7 +20,7 @@ import lombok.experimental.Accessors;
/**
* @Description: 用户测评报告表
* @Author: jeecg-boot
* @Date: 2025-09-19
* @Date: 2025-10-17
* @Version: V1.0
*/
@Data
@ -51,6 +51,14 @@ public class AssessmentExamReport implements Serializable {
@Excel(name = "批次标识", width = 15)
@ApiModelProperty(value = "批次标识")
private java.lang.String batchNo;
/**题目*/
@Excel(name = "题目", width = 15)
@ApiModelProperty(value = "题目")
private java.lang.String questionId;
/**答案*/
@Excel(name = "答案", width = 15)
@ApiModelProperty(value = "答案")
private java.lang.String answerId;
/**风险*/
@Excel(name = "风险", width = 15)
@ApiModelProperty(value = "风险")


+ 1
- 1
jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/assessmentExamReport/mapper/AssessmentExamReportMapper.java View File

@ -9,7 +9,7 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
/**
* @Description: 用户测评报告表
* @Author: jeecg-boot
* @Date: 2025-09-19
* @Date: 2025-10-17
* @Version: V1.0
*/
public interface AssessmentExamReportMapper extends BaseMapper<AssessmentExamReport> {


+ 1
- 1
jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/assessmentExamReport/service/IAssessmentExamReportService.java View File

@ -6,7 +6,7 @@ import com.baomidou.mybatisplus.extension.service.IService;
/**
* @Description: 用户测评报告表
* @Author: jeecg-boot
* @Date: 2025-09-19
* @Date: 2025-10-17
* @Version: V1.0
*/
public interface IAssessmentExamReportService extends IService<AssessmentExamReport> {


+ 1
- 1
jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/assessmentExamReport/service/impl/AssessmentExamReportServiceImpl.java View File

@ -10,7 +10,7 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
/**
* @Description: 用户测评报告表
* @Author: jeecg-boot
* @Date: 2025-09-19
* @Date: 2025-10-17
* @Version: V1.0
*/
@Service


+ 32
- 0
jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/assessmentExamReport/vue/AssessmentExamReportList.vue View File

@ -4,6 +4,26 @@
<div class="table-page-search-wrapper">
<a-form layout="inline" @keyup.enter.native="searchQuery">
<a-row :gutter="24">
<a-col :xl="6" :lg="7" :md="8" :sm="24">
<a-form-item label="批次标识">
<a-input placeholder="请输入批次标识" v-model="queryParam.batchNo"></a-input>
</a-form-item>
</a-col>
<a-col :xl="6" :lg="7" :md="8" :sm="24">
<a-form-item label="关联用户">
<j-search-select-tag placeholder="请选择关联用户" v-model="queryParam.userId" dict="han_hai_member,nick_name,id"/>
</a-form-item>
</a-col>
<a-col :xl="6" :lg="7" :md="8" :sm="24">
<span style="float: left;overflow: hidden;" class="table-page-search-submitButtons">
<a-button type="primary" @click="searchQuery" icon="search">查询</a-button>
<a-button type="primary" @click="searchReset" icon="reload" style="margin-left: 8px">重置</a-button>
<a @click="handleToggleSearch" style="margin-left: 8px">
{{ toggleSearchStatus ? '收起' : '展开' }}
<a-icon :type="toggleSearchStatus ? 'up' : 'down'"/>
</a>
</span>
</a-col>
</a-row>
</a-form>
</div>
@ -127,6 +147,16 @@
align:"center",
dataIndex: 'batchNo'
},
{
title:'题目',
align:"center",
dataIndex: 'questionId'
},
{
title:'答案',
align:"center",
dataIndex: 'answerId'
},
{
title:'风险',
align:"center",
@ -187,6 +217,8 @@
getSuperFieldList(){
let fieldList=[];
fieldList.push({type:'string',value:'batchNo',text:'批次标识',dictCode:''})
fieldList.push({type:'string',value:'questionId',text:'题目',dictCode:"assessment_question,question,id"})
fieldList.push({type:'string',value:'answerId',text:'答案',dictCode:"assessment_answer,answer,id"})
fieldList.push({type:'Text',value:'risk',text:'风险',dictCode:''})
fieldList.push({type:'Text',value:'reason',text:'风险原因',dictCode:''})
fieldList.push({type:'string',value:'level',text:'风险等级',dictCode:'risk_level'})


+ 10
- 0
jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/assessmentExamReport/vue/modules/AssessmentExamReportForm.vue View File

@ -8,6 +8,16 @@
<a-input v-model="model.batchNo" placeholder="请输入批次标识" ></a-input>
</a-form-model-item>
</a-col>
<a-col :span="24">
<a-form-model-item label="题目" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="questionId">
<a-input v-model="model.questionId" placeholder="请输入题目" ></a-input>
</a-form-model-item>
</a-col>
<a-col :span="24">
<a-form-model-item label="答案" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="answerId">
<a-input v-model="model.answerId" placeholder="请输入答案" ></a-input>
</a-form-model-item>
</a-col>
<a-col :span="24">
<a-form-model-item label="风险" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="risk">
<a-input v-model="model.risk" placeholder="请输入风险" ></a-input>


+ 35
- 0
jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/assessmentExamReport/vue3/AssessmentExamReport.data.ts View File

@ -9,6 +9,16 @@ export const columns: BasicColumn[] = [
align:"center",
dataIndex: 'batchNo'
},
{
title: '题目',
align:"center",
dataIndex: 'questionId'
},
{
title: '答案',
align:"center",
dataIndex: 'answerId'
},
{
title: '风险',
align:"center",
@ -37,6 +47,21 @@ export const columns: BasicColumn[] = [
];
//查询数据
export const searchFormSchema: FormSchema[] = [
{
label: "批次标识",
field: "batchNo",
component: 'Input',
colProps: {span: 6},
},
{
label: "关联用户",
field: "userId",
component: 'JSearchSelect',
componentProps:{
dict:"han_hai_member,nick_name,id"
},
colProps: {span: 6},
},
];
//表单数据
export const formSchema: FormSchema[] = [
@ -45,6 +70,16 @@ export const formSchema: FormSchema[] = [
field: 'batchNo',
component: 'Input',
},
{
label: '题目',
field: 'questionId',
component: 'Input',
},
{
label: '答案',
field: 'answerId',
component: 'Input',
},
{
label: '风险',
field: 'risk',


+ 1
- 1
jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/assessmentReportUser/controller/AssessmentReportUserController.java View File

@ -39,7 +39,7 @@ import org.jeecg.common.aspect.annotation.AutoLog;
/**
* @Description: 用户测评报告基本信息表
* @Author: jeecg-boot
* @Date: 2025-09-23
* @Date: 2025-10-17
* @Version: V1.0
*/
@Api(tags="用户测评报告基本信息表")


+ 1
- 1
jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/assessmentReportUser/entity/AssessmentReportUser.java View File

@ -20,7 +20,7 @@ import lombok.experimental.Accessors;
/**
* @Description: 用户测评报告基本信息表
* @Author: jeecg-boot
* @Date: 2025-09-23
* @Date: 2025-10-17
* @Version: V1.0
*/
@Data


+ 1
- 1
jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/assessmentReportUser/mapper/AssessmentReportUserMapper.java View File

@ -9,7 +9,7 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
/**
* @Description: 用户测评报告基本信息表
* @Author: jeecg-boot
* @Date: 2025-09-23
* @Date: 2025-10-17
* @Version: V1.0
*/
public interface AssessmentReportUserMapper extends BaseMapper<AssessmentReportUser> {


+ 1
- 1
jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/assessmentReportUser/service/IAssessmentReportUserService.java View File

@ -6,7 +6,7 @@ import com.baomidou.mybatisplus.extension.service.IService;
/**
* @Description: 用户测评报告基本信息表
* @Author: jeecg-boot
* @Date: 2025-09-23
* @Date: 2025-10-17
* @Version: V1.0
*/
public interface IAssessmentReportUserService extends IService<AssessmentReportUser> {


+ 1
- 1
jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/assessmentReportUser/service/impl/AssessmentReportUserServiceImpl.java View File

@ -10,7 +10,7 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
/**
* @Description: 用户测评报告基本信息表
* @Author: jeecg-boot
* @Date: 2025-09-23
* @Date: 2025-10-17
* @Version: V1.0
*/
@Service


+ 20
- 0
jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/assessmentReportUser/vue/AssessmentReportUserList.vue View File

@ -4,6 +4,26 @@
<div class="table-page-search-wrapper">
<a-form layout="inline" @keyup.enter.native="searchQuery">
<a-row :gutter="24">
<a-col :xl="6" :lg="7" :md="8" :sm="24">
<a-form-item label="批次标识">
<a-input placeholder="请输入批次标识" v-model="queryParam.batchNo"></a-input>
</a-form-item>
</a-col>
<a-col :xl="6" :lg="7" :md="8" :sm="24">
<a-form-item label="关联用户">
<j-dict-select-tag placeholder="请选择关联用户" v-model="queryParam.userId" dictCode="han_hai_member,nick_name,id"/>
</a-form-item>
</a-col>
<a-col :xl="6" :lg="7" :md="8" :sm="24">
<span style="float: left;overflow: hidden;" class="table-page-search-submitButtons">
<a-button type="primary" @click="searchQuery" icon="search">查询</a-button>
<a-button type="primary" @click="searchReset" icon="reload" style="margin-left: 8px">重置</a-button>
<a @click="handleToggleSearch" style="margin-left: 8px">
{{ toggleSearchStatus ? '收起' : '展开' }}
<a-icon :type="toggleSearchStatus ? 'up' : 'down'"/>
</a>
</span>
</a-col>
</a-row>
</a-form>
</div>


+ 15
- 0
jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/assessmentReportUser/vue3/AssessmentReportUser.data.ts View File

@ -37,6 +37,21 @@ export const columns: BasicColumn[] = [
];
//查询数据
export const searchFormSchema: FormSchema[] = [
{
label: "批次标识",
field: "batchNo",
component: 'Input',
colProps: {span: 6},
},
{
label: "关联用户",
field: "userId",
component: 'JDictSelectTag',
componentProps:{
dictCode:"han_hai_member,nick_name,id"
},
colProps: {span: 6},
},
];
//表单数据
export const formSchema: FormSchema[] = [


+ 16
- 16
jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/hanHaiMember/controller/HanHaiMemberController.java View File

@ -37,12 +37,12 @@ import io.swagger.annotations.ApiOperation;
import org.jeecg.common.aspect.annotation.AutoLog;
/**
* @Description: 用户表
* @Description: han_hai_member
* @Author: jeecg-boot
* @Date: 2024-07-08
* @Date: 2025-10-17
* @Version: V1.0
*/
@Api(tags="用户表")
@Api(tags="han_hai_member")
@RestController
@RequestMapping("/hanHaiMember/hanHaiMember")
@Slf4j
@ -59,8 +59,8 @@ public class HanHaiMemberController extends JeecgController<HanHaiMember, IHanHa
* @param req
* @return
*/
//@AutoLog(value = "用户表-分页列表查询")
@ApiOperation(value="用户表-分页列表查询", notes="用户表-分页列表查询")
//@AutoLog(value = "han_hai_member-分页列表查询")
@ApiOperation(value="han_hai_member-分页列表查询", notes="han_hai_member-分页列表查询")
@GetMapping(value = "/list")
public Result<IPage<HanHaiMember>> queryPageList(HanHaiMember hanHaiMember,
@RequestParam(name="pageNo", defaultValue="1") Integer pageNo,
@ -78,8 +78,8 @@ public class HanHaiMemberController extends JeecgController<HanHaiMember, IHanHa
* @param hanHaiMember
* @return
*/
@AutoLog(value = "用户表-添加")
@ApiOperation(value="用户表-添加", notes="用户表-添加")
@AutoLog(value = "han_hai_member-添加")
@ApiOperation(value="han_hai_member-添加", notes="han_hai_member-添加")
@PostMapping(value = "/add")
public Result<String> add(@RequestBody HanHaiMember hanHaiMember) {
hanHaiMemberService.save(hanHaiMember);
@ -92,8 +92,8 @@ public class HanHaiMemberController extends JeecgController<HanHaiMember, IHanHa
* @param hanHaiMember
* @return
*/
@AutoLog(value = "用户表-编辑")
@ApiOperation(value="用户表-编辑", notes="用户表-编辑")
@AutoLog(value = "han_hai_member-编辑")
@ApiOperation(value="han_hai_member-编辑", notes="han_hai_member-编辑")
@RequestMapping(value = "/edit", method = {RequestMethod.PUT,RequestMethod.POST})
public Result<String> edit(@RequestBody HanHaiMember hanHaiMember) {
hanHaiMemberService.updateById(hanHaiMember);
@ -106,8 +106,8 @@ public class HanHaiMemberController extends JeecgController<HanHaiMember, IHanHa
* @param id
* @return
*/
@AutoLog(value = "用户表-通过id删除")
@ApiOperation(value="用户表-通过id删除", notes="用户表-通过id删除")
@AutoLog(value = "han_hai_member-通过id删除")
@ApiOperation(value="han_hai_member-通过id删除", notes="han_hai_member-通过id删除")
@DeleteMapping(value = "/delete")
public Result<String> delete(@RequestParam(name="id",required=true) String id) {
hanHaiMemberService.removeById(id);
@ -120,8 +120,8 @@ public class HanHaiMemberController extends JeecgController<HanHaiMember, IHanHa
* @param ids
* @return
*/
@AutoLog(value = "用户表-批量删除")
@ApiOperation(value="用户表-批量删除", notes="用户表-批量删除")
@AutoLog(value = "han_hai_member-批量删除")
@ApiOperation(value="han_hai_member-批量删除", notes="han_hai_member-批量删除")
@DeleteMapping(value = "/deleteBatch")
public Result<String> deleteBatch(@RequestParam(name="ids",required=true) String ids) {
this.hanHaiMemberService.removeByIds(Arrays.asList(ids.split(",")));
@ -134,8 +134,8 @@ public class HanHaiMemberController extends JeecgController<HanHaiMember, IHanHa
* @param id
* @return
*/
//@AutoLog(value = "用户表-通过id查询")
@ApiOperation(value="用户表-通过id查询", notes="用户表-通过id查询")
//@AutoLog(value = "han_hai_member-通过id查询")
@ApiOperation(value="han_hai_member-通过id查询", notes="han_hai_member-通过id查询")
@GetMapping(value = "/queryById")
public Result<HanHaiMember> queryById(@RequestParam(name="id",required=true) String id) {
HanHaiMember hanHaiMember = hanHaiMemberService.getById(id);
@ -153,7 +153,7 @@ public class HanHaiMemberController extends JeecgController<HanHaiMember, IHanHa
*/
@RequestMapping(value = "/exportXls")
public ModelAndView exportXls(HttpServletRequest request, HanHaiMember hanHaiMember) {
return super.exportXls(request, hanHaiMember, HanHaiMember.class, "用户表");
return super.exportXls(request, hanHaiMember, HanHaiMember.class, "han_hai_member");
}
/**


+ 23
- 8
jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/hanHaiMember/entity/HanHaiMember.java View File

@ -18,16 +18,16 @@ import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
/**
* @Description: 用户表
* @Description: han_hai_member
* @Author: jeecg-boot
* @Date: 2024-07-08
* @Date: 2025-10-17
* @Version: V1.0
*/
@Data
@TableName("han_hai_member")
@Accessors(chain = true)
@EqualsAndHashCode(callSuper = false)
@ApiModel(value="han_hai_member对象", description="用户表")
@ApiModel(value="han_hai_member对象", description="han_hai_member")
public class HanHaiMember implements Serializable {
private static final long serialVersionUID = 1L;
@ -39,12 +39,16 @@ public class HanHaiMember implements Serializable {
@ApiModelProperty(value = "创建人")
private java.lang.String createBy;
/**创建日期*/
@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd")
@DateTimeFormat(pattern="yyyy-MM-dd")
@ApiModelProperty(value = "创建日期")
private java.util.Date createTime;
/**更新人*/
@ApiModelProperty(value = "更新人")
private java.lang.String updateBy;
/**更新日期*/
@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd")
@DateTimeFormat(pattern="yyyy-MM-dd")
@ApiModelProperty(value = "更新日期")
private java.util.Date updateTime;
/**所属部门*/
@ -155,14 +159,13 @@ public class HanHaiMember implements Serializable {
@ApiModelProperty(value = "shareId")
private java.lang.String shareId;
/**邀请人*/
@Excel(name = "邀请人", width = 15, dictTable = "han_hai_member", dicText = "nick_name", dicCode = "id")
@Dict(dictTable = "han_hai_member", dicText = "nick_name", dicCode = "id")
@Excel(name = "邀请人", width = 15)
@ApiModelProperty(value = "邀请人")
private java.lang.String vid;
/**邀请时间*/
@Excel(name = "邀请时间", width = 20, format = "yyyy-MM-dd HH:mm:ss")
@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
@DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
@Excel(name = "邀请时间", width = 15, format = "yyyy-MM-dd")
@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd")
@DateTimeFormat(pattern="yyyy-MM-dd")
@ApiModelProperty(value = "邀请时间")
private java.util.Date vtime;
/**兼兼街会员*/
@ -197,4 +200,16 @@ public class HanHaiMember implements Serializable {
@Excel(name = "是否分销商", width = 15)
@ApiModelProperty(value = "是否分销商")
private java.lang.String isDai;
/**已支付金额*/
@Excel(name = "已支付金额", width = 15)
@ApiModelProperty(value = "已支付金额")
private java.math.BigDecimal amount;
/**已生成报告数量*/
@Excel(name = "已生成报告数量", width = 15)
@ApiModelProperty(value = "已生成报告数量")
private java.lang.Integer reportNum;
/**已关联的所有批次号*/
@Excel(name = "已关联的所有批次号", width = 15)
@ApiModelProperty(value = "已关联的所有批次号")
private java.lang.String batchNoNum;
}

+ 2
- 2
jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/hanHaiMember/mapper/HanHaiMemberMapper.java View File

@ -7,9 +7,9 @@ import org.jeecg.modules.hanHaiMember.entity.HanHaiMember;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
/**
* @Description: 用户表
* @Description: han_hai_member
* @Author: jeecg-boot
* @Date: 2024-07-08
* @Date: 2025-10-17
* @Version: V1.0
*/
public interface HanHaiMemberMapper extends BaseMapper<HanHaiMember> {


+ 2
- 2
jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/hanHaiMember/service/IHanHaiMemberService.java View File

@ -4,9 +4,9 @@ import org.jeecg.modules.hanHaiMember.entity.HanHaiMember;
import com.baomidou.mybatisplus.extension.service.IService;
/**
* @Description: 用户表
* @Description: han_hai_member
* @Author: jeecg-boot
* @Date: 2024-07-08
* @Date: 2025-10-17
* @Version: V1.0
*/
public interface IHanHaiMemberService extends IService<HanHaiMember> {


+ 2
- 2
jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/hanHaiMember/service/impl/HanHaiMemberServiceImpl.java View File

@ -8,9 +8,9 @@ import org.springframework.stereotype.Service;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
/**
* @Description: 用户表
* @Description: han_hai_member
* @Author: jeecg-boot
* @Date: 2024-07-08
* @Date: 2025-10-17
* @Version: V1.0
*/
@Service


+ 11
- 55
jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/hanHaiMember/vue/HanHaiMemberList.vue View File

@ -4,26 +4,6 @@
<div class="table-page-search-wrapper">
<a-form layout="inline" @keyup.enter.native="searchQuery">
<a-row :gutter="24">
<a-col :xl="6" :lg="7" :md="8" :sm="24">
<a-form-item label="昵称">
<a-input placeholder="请输入昵称" v-model="queryParam.nickName"></a-input>
</a-form-item>
</a-col>
<a-col :xl="6" :lg="7" :md="8" :sm="24">
<a-form-item label="邀请人">
<j-search-select-tag placeholder="请选择邀请人" v-model="queryParam.vid" dict="han_hai_member,nick_name,id"/>
</a-form-item>
</a-col>
<a-col :xl="6" :lg="7" :md="8" :sm="24">
<span style="float: left;overflow: hidden;" class="table-page-search-submitButtons">
<a-button type="primary" @click="searchQuery" icon="search">查询</a-button>
<a-button type="primary" @click="searchReset" icon="reload" style="margin-left: 8px">重置</a-button>
<a @click="handleToggleSearch" style="margin-left: 8px">
{{ toggleSearchStatus ? '收起' : '展开' }}
<a-icon :type="toggleSearchStatus ? 'up' : 'down'"/>
</a>
</span>
</a-col>
</a-row>
</a-form>
</div>
@ -32,7 +12,7 @@
<!-- 操作按钮区域 -->
<div class="table-operator">
<a-button @click="handleAdd" type="primary" icon="plus">新增</a-button>
<a-button type="primary" icon="download" @click="handleExportXls('用户表')">导出</a-button>
<a-button type="primary" icon="download" @click="handleExportXls('han_hai_member')">导出</a-button>
<a-upload name="file" :showUploadList="false" :multiple="false" :headers="tokenHeader" :action="importExcelUrl" @change="handleImportExcel">
<a-button type="primary" icon="import">导入</a-button>
</a-upload>
@ -119,7 +99,6 @@
import { mixinDevice } from '@/utils/mixin'
import { JeecgListMixin } from '@/mixins/JeecgListMixin'
import HanHaiMemberModal from './modules/HanHaiMemberModal'
import {filterMultiDictText} from '@/components/dict/JDictSelectUtil'
export default {
name: 'HanHaiMemberList',
@ -129,7 +108,7 @@
},
data () {
return {
description: '用户表管理页面',
description: 'han_hai_member管理页面',
//
columns: [
{
@ -142,12 +121,6 @@
return parseInt(index)+1;
}
},
{
title:'创建日期',
align:"center",
sorter: true,
dataIndex: 'createTime'
},
{
title:'昵称',
align:"center",
@ -162,34 +135,22 @@
{
title:'手机号码',
align:"center",
sorter: true,
dataIndex: 'phone'
},
{
title:'公众号openid',
align:"center",
dataIndex: 'officialOpenid'
},
{
title:'邀请人',
align:"center",
dataIndex: 'vid_dictText'
},
{
title:'邀请时间',
title:'已支付金额',
align:"center",
dataIndex: 'vtime'
dataIndex: 'amount'
},
{
title:'性别',
title:'已生成报告数量',
align:"center",
dataIndex: 'sex'
dataIndex: 'reportNum'
},
{
title:'是否分销商',
title:'已关联的所有批次号',
align:"center",
dataIndex: 'isDai',
customRender: (text) => (text ? filterMultiDictText(this.dictOptions['isDai'], text) : ''),
dataIndex: 'batchNoNum'
},
{
title: '操作',
@ -213,7 +174,6 @@
}
},
created() {
this.$set(this.dictOptions, 'isDai', [{text:'是',value:'Y'},{text:'否',value:'N'}])
this.getSuperFieldList();
},
computed: {
@ -226,16 +186,12 @@
},
getSuperFieldList(){
let fieldList=[];
fieldList.push({type:'datetime',value:'createTime',text:'创建日期'})
fieldList.push({type:'string',value:'nickName',text:'昵称',dictCode:''})
fieldList.push({type:'string',value:'headImage',text:'用户头像',dictCode:''})
fieldList.push({type:'string',value:'phone',text:'手机号码',dictCode:''})
fieldList.push({type:'string',value:'token',text:'登录TOEKN',dictCode:''})
fieldList.push({type:'string',value:'officialOpenid',text:'公众号openid',dictCode:''})
fieldList.push({type:'sel_search',value:'vid',text:'邀请人',dictTable:"han_hai_member", dictText:'nick_name', dictCode:'id'})
fieldList.push({type:'datetime',value:'vtime',text:'邀请时间'})
fieldList.push({type:'string',value:'sex',text:'性别',dictCode:''})
fieldList.push({type:'switch',value:'isDai',text:'是否分销商'})
fieldList.push({type:'BigDecimal',value:'amount',text:'已支付金额',dictCode:''})
fieldList.push({type:'int',value:'reportNum',text:'已生成报告数量',dictCode:''})
fieldList.push({type:'Text',value:'batchNoNum',text:'已关联的所有批次号',dictCode:''})
this.superFieldList = fieldList
}
}


+ 6
- 21
jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/hanHaiMember/vue/modules/HanHaiMemberForm.vue View File

@ -19,33 +19,18 @@
</a-form-model-item>
</a-col>
<a-col :span="24">
<a-form-model-item label="登录TOEKN" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="token">
<a-input v-model="model.token" placeholder="请输入登录TOEKN" ></a-input>
<a-form-model-item label="已支付金额" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="amount">
<a-input-number v-model="model.amount" placeholder="请输入已支付金额" style="width: 100%" />
</a-form-model-item>
</a-col>
<a-col :span="24">
<a-form-model-item label="公众号openid" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="officialOpenid">
<a-input v-model="model.officialOpenid" placeholder="请输入公众号openid" ></a-input>
<a-form-model-item label="已生成报告数量" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="reportNum">
<a-input-number v-model="model.reportNum" placeholder="请输入已生成报告数量" style="width: 100%" />
</a-form-model-item>
</a-col>
<a-col :span="24">
<a-form-model-item label="邀请人" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="vid">
<j-search-select-tag v-model="model.vid" dict="han_hai_member,nick_name,id" />
</a-form-model-item>
</a-col>
<a-col :span="24">
<a-form-model-item label="邀请时间" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="vtime">
<j-date placeholder="请选择邀请时间" v-model="model.vtime" :show-time="true" date-format="YYYY-MM-DD HH:mm:ss" style="width: 100%" />
</a-form-model-item>
</a-col>
<a-col :span="24">
<a-form-model-item label="性别" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="sex">
<a-input v-model="model.sex" placeholder="请输入性别" ></a-input>
</a-form-model-item>
</a-col>
<a-col :span="24">
<a-form-model-item label="是否分销商" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="isDai">
<j-switch v-model="model.isDai" ></j-switch>
<a-form-model-item label="已关联的所有批次号" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="batchNoNum">
<a-input v-model="model.batchNoNum" placeholder="请输入已关联的所有批次号" ></a-input>
</a-form-model-item>
</a-col>
</a-row>


+ 14
- 69
jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/hanHaiMember/vue3/HanHaiMember.data.ts View File

@ -5,12 +5,6 @@ import { render } from '/@/utils/common/renderUtils';
//列表数据
export const columns: BasicColumn[] = [
{
title: '创建日期',
align:"center",
sorter: true,
dataIndex: 'createTime'
},
{
title: '昵称',
align:"center",
dataIndex: 'nickName'
@ -24,55 +18,26 @@ export const columns: BasicColumn[] = [
{
title: '手机号码',
align:"center",
sorter: true,
dataIndex: 'phone'
},
{
title: '公众号openid',
align:"center",
dataIndex: 'officialOpenid'
},
{
title: '邀请人',
title: '已支付金额',
align:"center",
dataIndex: 'vid_dictText'
dataIndex: 'amount'
},
{
title: '邀请时间',
title: '已生成报告数量',
align:"center",
dataIndex: 'vtime'
dataIndex: 'reportNum'
},
{
title: '性别',
title: '已关联的所有批次号',
align:"center",
dataIndex: 'sex'
},
{
title: '是否分销商',
align:"center",
dataIndex: 'isDai',
customRender:({text}) => {
return render.renderSwitch(text, [{text:'是',value:'Y'},{text:'否',value:'N'}])
},
dataIndex: 'batchNoNum'
},
];
//查询数据
export const searchFormSchema: FormSchema[] = [
{
label: "昵称",
field: "nickName",
component: 'Input',
colProps: {span: 6},
},
{
label: "邀请人",
field: "vid",
component: 'JSearchSelect',
componentProps:{
dict:"han_hai_member,nick_name,id"
},
colProps: {span: 6},
},
];
//表单数据
export const formSchema: FormSchema[] = [
@ -94,38 +59,18 @@ export const formSchema: FormSchema[] = [
component: 'Input',
},
{
label: '登录TOEKN',
field: 'token',
component: 'Input',
},
{
label: '公众号openid',
field: 'officialOpenid',
component: 'Input',
},
{
label: '邀请人',
field: 'vid',
component: 'JSearchSelect',
componentProps:{
dict:"han_hai_member,nick_name,id"
},
label: '已支付金额',
field: 'amount',
component: 'InputNumber',
},
{
label: '邀请时间',
field: 'vtime',
component: 'Input',
label: '已生成报告数量',
field: 'reportNum',
component: 'InputNumber',
},
{
label: '性别',
field: 'sex',
label: '已关联的所有批次号',
field: 'batchNoNum',
component: 'Input',
},
{
label: '是否分销商',
field: 'isDai',
component: 'JSwitch',
componentProps:{
},
},
];

+ 2
- 2
jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/hanHaiMember/vue3/HanHaiMemberList.vue View File

@ -53,7 +53,7 @@
//table
const { prefixCls,tableContext,onExportXls,onImportXls } = useListPage({
tableProps:{
title: '用户表',
title: 'han_hai_member',
api: list,
columns,
canResize:false,
@ -70,7 +70,7 @@
},
},
exportConfig: {
name:"用户表",
name:"han_hai_member",
url: getExportUrl,
},
importConfig: {


+ 36
- 1
jeecg-boot-module-system/src/main/java/org/jeecg/modules/api/service/impl/ExamServiceImpl.java View File

@ -163,7 +163,8 @@ public class ExamServiceImpl implements ExamService {
map.put("pageList", pageList);
String batchNo = IdWorker.getIdStr();//生成批次标识
//String batchNo = IdWorker.getIdStr();//生成批次标识
String batchNo = getBatchNo(hanHaiMember);
map.put("batchNo", batchNo);
//生成用户测评答题记录
AssessmentExamLog assessmentExamLog = new AssessmentExamLog();
@ -171,6 +172,7 @@ public class ExamServiceImpl implements ExamService {
assessmentExamLog.setAllNum(pageList.size());
assessmentExamLog.setFinishNum(0);
assessmentExamLog.setRemainNum(pageList.size());
assessmentExamLog.setUserPhone(hanHaiMember.getPhone());
assessmentExamLog.setUserId(hanHaiMember.getId());
boolean result1 = assessmentExamLogService.save(assessmentExamLog);
if(!result1){
@ -182,6 +184,7 @@ public class ExamServiceImpl implements ExamService {
for (AssessmentQuestion assessmentQuestion : pageList) {
AssessmentAnswerLog assessmentAnswerLog = new AssessmentAnswerLog();
assessmentAnswerLog.setBatchNo(batchNo);
assessmentAnswerLog.setQuestionNo(assessmentQuestion.getQuestionNo());
assessmentAnswerLog.setQuestionId(assessmentQuestion.getId());
assessmentAnswerLog.setUserId(hanHaiMember.getId());
assessmentAnswerLogList.add(assessmentAnswerLog);
@ -470,6 +473,13 @@ public class ExamServiceImpl implements ExamService {
code.setUserId(assessmentPayLog.getUserId());
assessmentCodeService.updateById(code);
}
//修改用户已支付金额
HanHaiMember member = hanHaiMemberService.getById(assessmentPayLog.getUserId());
BigDecimal oldAmount = member.getAmount();
BigDecimal newAmount = oldAmount.add(assessmentPayLog.getPayAmount());
member.setAmount(newAmount);
hanHaiMemberService.updateById(member);
}
}
@ -480,4 +490,29 @@ public class ExamServiceImpl implements ExamService {
return null;
}
/******************************************************************************************************************/
//生成批次编号
public String getBatchNo(HanHaiMember hanHaiMember){
boolean flag = true;
int num = 1;
String batchNo = hanHaiMember.getPhone() + CommonUtils.getTime("yyMMdd") + "01";
while (flag){
AssessmentExamLog one = assessmentExamLogService.lambdaQuery().eq(AssessmentExamLog::getBatchNo, batchNo).one();
if(null == one){
flag = false;
}else {
num++;
if(num < 10){
batchNo = hanHaiMember.getPhone() + CommonUtils.getTime("yyMMdd") + "0" + num;
}else {
batchNo = hanHaiMember.getPhone() + CommonUtils.getTime("yyMMdd") + num;
}
}
}
return batchNo;
}
}

+ 16
- 0
jeecg-boot-module-system/src/main/java/org/jeecg/modules/api/service/impl/ReportServiceImpl.java View File

@ -225,6 +225,8 @@ public class ReportServiceImpl implements ReportService {
for (AssessmentAnswer assessmentAnswer : answerList) {
AssessmentExamReport report = new AssessmentExamReport();
report.setBatchNo(batchNo);
report.setQuestionId(assessmentAnswer.getQuestionId());
report.setAnswerId(assessmentAnswer.getId());
report.setRisk(assessmentAnswer.getRisk());
report.setReason(assessmentAnswer.getReason());
report.setLevel(assessmentAnswer.getLevel());
@ -235,6 +237,20 @@ public class ReportServiceImpl implements ReportService {
boolean result = assessmentExamReportService.saveBatch(reportList);
if(!result){
log.info("测评报告生成失败");
}else {
//添加用户测评报告数量批次编号
HanHaiMember member = hanHaiMemberService.getById(userId);
int reportNum = member.getReportNum() + 1;
String batchNoNum = "";
if(StringUtils.isEmpty(member.getBatchNoNum())){
batchNoNum = batchNo;
}else {
batchNoNum = member.getBatchNoNum() + ";" + batchNo;
}
member.setReportNum(reportNum);
member.setBatchNoNum(batchNoNum);
hanHaiMemberService.updateById(member);
}
}catch (Exception e){
e.printStackTrace();


Loading…
Cancel
Save