Browse Source

信用相关、用户行为相关模块关联,以及前端输入内容校验

main
GhubCy 2 months ago
parent
commit
6d04a90b03
  1. 175
      src/views/business/userBehaviorLog/index.vue
  2. 32
      src/views/business/userBehaviorRuleAction/index.vue
  3. 16
      src/views/business/userBehaviorRuleRisk/index.vue
  4. 118
      src/views/business/userBehaviorStats/index.vue
  5. 24
      src/views/business/userCredit/index.vue
  6. 28
      src/views/business/userCreditRecord/index.vue

175
src/views/business/userBehaviorLog/index.vue

@ -9,22 +9,6 @@
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item label="动作标识" prop="action">
<el-input
v-model="queryParams.action"
placeholder="请输入具体动作标识"
clearable
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item label="目标ID" prop="targetId">
<el-input
v-model="queryParams.targetId"
placeholder="请输入目标对象ID"
clearable
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item label="IP地址" prop="ip">
<el-input
v-model="queryParams.ip"
@ -33,6 +17,26 @@
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item label="行为类型" prop="behaviorType">
<el-select v-model="queryParams.behaviorType" placeholder="请选择行为类型" clearable>
<el-option
v-for="dict in behaviorTypeOptions"
:key="dict.dictValue"
:label="dict.dictLabel"
:value="dict.dictValue"
/>
</el-select>
</el-form-item>
<el-form-item label="设备类型" prop="deviceType">
<el-select v-model="queryParams.deviceType" placeholder="请选择设备类型" clearable>
<el-option
v-for="dict in deviceTypeOptions"
:key="dict.dictValue"
:label="dict.dictLabel"
:value="dict.dictValue"
/>
</el-select>
</el-form-item>
<el-form-item label="平台类型" prop="platform">
<el-select v-model="queryParams.platform" placeholder="请选择平台类型" clearable>
<el-option
@ -44,7 +48,10 @@
</el-select>
</el-form-item>
<el-form-item>
<el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">{{ $t('common.button.search') }}</el-button>
<el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">{{
$t('common.button.search')
}}
</el-button>
<el-button icon="el-icon-refresh" size="mini" @click="resetQuery">{{ $t('common.button.reset') }}</el-button>
</el-form-item>
</el-form>
@ -103,16 +110,29 @@
<el-table-column type="selection" width="55" align="center"/>
<el-table-column label="ID" align="center" prop="id" v-if="true"/>
<el-table-column label="用户ID" align="center" prop="userId"/>
<el-table-column label="行为类型" align="center" prop="behaviorType"/>
<el-table-column label="动作标识" align="center" prop="action"/>
<el-table-column label="目标ID" align="center" prop="targetId"/>
<el-table-column label="目标对象类型" align="center" prop="targetType"/>
<el-table-column label="用户名" align="center" prop="userName"/>
<el-table-column label="行为类型" align="center" prop="behaviorType">
<template slot-scope="scope">
<span>{{ getBehaviorTypeLabel(scope.row.behaviorType) }}</span>
</template>
</el-table-column>
<!-- <el-table-column label="动作标识" align="center" prop="action"/> -->
<!-- <el-table-column label="目标ID" align="center" prop="targetId"/>
<el-table-column label="目标对象类型" align="center" prop="targetType"/> -->
<el-table-column label="IP地址" align="center" prop="ip"/>
<el-table-column label="浏览器" align="center" prop="ua"/>
<el-table-column label="设备类型" align="center" prop="deviceType"/>
<el-table-column label="平台类型" align="center" prop="platform"/>
<el-table-column label="地理位置" align="center" prop="location"/>
<!-- <el-table-column label="扩展字段,用于存储额外信息" align="center" prop="extraInfo"/>-->
<el-table-column label="设备类型" align="center" prop="deviceType">
<template slot-scope="scope">
<span>{{ getDeviceTypeLabel(scope.row.deviceType) }}</span>
</template>
</el-table-column>
<el-table-column label="平台类型" align="center" prop="platform">
<template slot-scope="scope">
<span>{{ getPlatformLabel(scope.row.platform) }}</span>
</template>
</el-table-column>
<!-- <el-table-column label="地理位置" align="center" prop="location"/> -->
<!-- <el-table-column label="扩展字段,用于存储额外信息" align="center" prop="extraInfo"/> -->
<el-table-column label="操作" align="center" width="200" class-name="small-padding fixed-width">
<template slot-scope="scope">
<el-button
@ -156,24 +176,54 @@
<el-form-item label="关联用户ID" prop="userId">
<el-input v-model="form.userId" placeholder="请输入关联用户ID"/>
</el-form-item>
<el-form-item label="具体动作标识" prop="action">
<!-- <el-form-item label="具体动作标识" prop="action">
<el-input v-model="form.action" placeholder="请输入具体动作标识"/>
</el-form-item>
<el-form-item label="目标对象ID" prop="targetId">
</el-form-item> -->
<!-- <el-form-item label="目标对象ID" prop="targetId">
<el-input v-model="form.targetId" placeholder="请输入目标对象ID"/>
</el-form-item>
</el-form-item> -->
<el-form-item label="客户端IP地址" prop="ip">
<el-input v-model="form.ip" placeholder="请输入客户端IP地址"/>
</el-form-item>
<el-form-item label="浏览器" prop="ua">
<el-input v-model="form.ua" type="textarea" placeholder="请输入内容"/>
<el-input v-model="form.ua" placeholder="请输入内容"/>
</el-form-item>
<el-form-item label="行为类型" prop="behaviorType">
<el-select v-model="form.behaviorType" placeholder="请选择行为类型">
<el-option
v-for="dict in behaviorTypeOptions"
:key="dict.dictValue"
:label="dict.dictLabel"
:value="dict.dictValue"
/>
</el-select>
</el-form-item>
<el-form-item label="设备类型" prop="deviceType">
<el-select v-model="form.deviceType" placeholder="请选择设备类型">
<el-option
v-for="dict in deviceTypeOptions"
:key="dict.dictValue"
:label="dict.dictLabel"
:value="dict.dictValue"
/>
</el-select>
</el-form-item>
<el-form-item label="平台类型" prop="platform">
<el-input v-model="form.platform" placeholder="请输入平台类型"/>
<el-select v-model="form.platform" placeholder="请选择平台类型">
<el-option
v-for="dict in platformOptions"
:key="dict.dictValue"
:label="dict.dictLabel"
:value="dict.dictValue"
/>
</el-select>
</el-form-item>
</el-form>
<div slot="footer" class="dialog-footer">
<el-button :loading="buttonLoading" type="primary" @click="submitForm">{{ $t('common.button.confirm') }}</el-button>
<el-button :loading="buttonLoading" type="primary" @click="submitForm">{{
$t('common.button.confirm')
}}
</el-button>
<el-button @click="cancel">{{ $t('common.button.cancel') }}</el-button>
</div>
</el-dialog>
@ -184,20 +234,29 @@
<el-form-item label="关联用户ID:">
{{ form.userId }}
</el-form-item>
<el-form-item label="具体动作标识:">
{{ form.action }}
<el-form-item label="用户名:">
{{ form.userName }}
</el-form-item>
<el-form-item label="目标对象ID:">
<!-- <el-form-item label="具体动作标识:">
{{ form.action }}
</el-form-item> -->
<!-- <el-form-item label="目标对象ID:">
{{ form.targetId }}
</el-form-item>
</el-form-item> -->
<el-form-item label="客户端IP地址:">
{{ form.ip }}
</el-form-item>
<el-form-item label="浏览器:">
{{ form.ua }}
</el-form-item>
<el-form-item label="行为类型:">
{{ getBehaviorTypeLabel(form.behaviorType) }}
</el-form-item>
<el-form-item label="设备类型:">
{{ getDeviceTypeLabel(form.deviceType) }}
</el-form-item>
<el-form-item label="平台类型:">
{{ form.platform }}
{{ getPlatformLabel(form.platform) }}
</el-form-item>
</el-form>
<div slot="footer" class="dialog-footer">
@ -261,15 +320,29 @@ export default {
//
form: {},
platformOptions: [
{dictValue: 'PC', dictLabel: 'PC'},
{dictValue: 'Mobile', dictLabel: 'Mobile'},
{dictValue: 'Tablet', dictLabel: 'Tablet'},
{dictValue: 'WebApp', dictLabel: 'WebApp'},
{dictValue: 'Other', dictLabel: 'Other'}
{dictValue: '1', dictLabel: 'Web'},
{dictValue: '2', dictLabel: 'iOS'},
{dictValue: '3', dictLabel: 'Android'},
],
behaviorTypeOptions: [
{dictValue: '1', dictLabel: '登录'},
{dictValue: '2', dictLabel: '支付'},
{dictValue: '3', dictLabel: '实名认证'},
{dictValue: '4', dictLabel: '点击操作'},
{dictValue: '5', dictLabel: '访问页面'},
{dictValue: '6', dictLabel: '登出'}
],
deviceTypeOptions: [
{dictValue: '1', dictLabel: 'PC'},
{dictValue: '2', dictLabel: '移动设备'},
{dictValue: '3', dictLabel: '平板设备'}
],
//
rules: {
}
userId: [
{ required: true, message: "用户关联ID不能为空", trigger: "blur" },
{ pattern: /^\d+$/, message: "用户关联ID必须为数字", trigger: "blur" }
],}
};
},
created() {
@ -400,7 +473,23 @@ export default {
this.download('business/userBehaviorLog/export', {
...this.queryParams
}, `userBehaviorLog_${new Date().getTime()}.xlsx`)
},
//
getBehaviorTypeLabel(value) {
const item = this.behaviorTypeOptions.find(dict => dict.dictValue == value);
return item ? item.dictLabel : value;
},
//
getDeviceTypeLabel(value) {
const item = this.deviceTypeOptions.find(dict => dict.dictValue == value);
return item ? item.dictLabel : value;
},
//
getPlatformLabel(value) {
const item = this.platformOptions.find(dict => dict.dictValue == value);
return item ? item.dictLabel : value;
}
}
};
</script>

32
src/views/business/userBehaviorRuleAction/index.vue

@ -9,6 +9,17 @@
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item label="行动类型" prop="actionType">
<el-select
v-model="queryParams.actionType"
placeholder="请选择"
clearable
>
<el-option label="通知用户" value="1" />
<el-option label="暂停操作并联系用户" value="2" />
<el-option label="增强身份验证" value="3" />
</el-select>
</el-form-item>
<el-form-item label="行动描述" prop="description">
<el-input
v-model="queryParams.description"
@ -80,7 +91,14 @@
<el-table-column type="selection" width="55" align="center"/>
<el-table-column label="ID" align="center" prop="id" v-if="true"/>
<el-table-column label="风险识别ID" align="center" prop="riskRuleId"/>
<el-table-column label="行动类型" align="center" prop="actionType"/>
<el-table-column label="行动类型" align="center">
<template slot-scope="scope">
<span v-if="scope.row.actionType === '1'">通知用户</span>
<span v-else-if="scope.row.actionType === '2'">暂停操作并联系用户</span>
<span v-else-if="scope.row.actionType === '3'">增强身份验证</span>
<span v-else>{{ scope.row.actionType }}</span>
</template>
</el-table-column>
<el-table-column label="行动描述" align="center" prop="description"/>
<el-table-column label="操作" align="center" width="200" class-name="small-padding fixed-width">
<template slot-scope="scope">
@ -125,12 +143,11 @@
<el-form-item label="风险Id" prop="riskRuleId">
<el-input v-model="form.riskRuleId" placeholder="请输入"/>
</el-form-item>
<!-- 下拉框选项 ('BLOCK_USER', 'ALERT_ADMIN', 'CAPTCHA_REQUIRED')-->
<el-form-item label="行动类型" prop="actionType">
<el-select v-model="form.actionType" placeholder="请选择">
<el-option label="用户冻结" value="BLOCK_USER"/>
<el-option label="向管理员告警" value="ALERT_ADMIN"/>
<el-option label="发送验证码" value="CAPTCHA_REQUIRED"/>
<el-option label="通知用户" value="1" />
<el-option label="暂停操作并联系用户" value="2" />
<el-option label="增强身份验证" value="3" />
</el-select>
</el-form-item>
<el-form-item label="行动描述" prop="description">
@ -212,10 +229,15 @@ export default {
actionType: undefined,
description: undefined,
},
//
form: {},
//
rules: {
riskRuleId: [
{required: true, message: "行动类型不能为空", trigger: "change"},
{ pattern: /^\d+$/, message: "风险ID必须为数字", trigger: "blur" }
],
actionType: [
{required: true, message: "行动类型不能为空", trigger: "change"}
],

16
src/views/business/userBehaviorRuleRisk/index.vue

@ -94,8 +94,12 @@
<el-table-column label="触发条件" align="center" prop="triggerCondition"/>
<el-table-column label="规则优先级" align="center" prop="priority"/>
<el-table-column label="规则描述" align="center" prop="description"/>
<el-table-column label="是否启用" align="center" prop="isEnabled"/>
<el-table-column label="规则状态" align="center" prop="status"/>
<el-table-column label="是否启用" align="center" prop="isEnabled">
<template slot-scope="scope">
{{ scope.row.isEnabled == '1' ? '是' : '否' }}
</template>
</el-table-column>
<!-- <el-table-column label="规则状态" align="center" prop="status"/> -->
<el-table-column label="操作" align="center" width="200" class-name="small-padding fixed-width">
<template slot-scope="scope">
<el-button
@ -146,7 +150,10 @@
<el-input v-model="form.description" type="textarea" placeholder="请输入内容"/>
</el-form-item>
<el-form-item label="是否启用" prop="isEnabled">
<el-input v-model="form.isEnabled" placeholder="请输入是否启用"/>
<el-radio-group v-model="form.isEnabled">
<el-radio label="1"></el-radio>
<el-radio label="0"></el-radio>
</el-radio-group>
</el-form-item>
</el-form>
<div slot="footer" class="dialog-footer">
@ -166,10 +173,9 @@
</el-form-item>
<el-form-item label="规则描述:">
{{ form.description }}
</el-form-item>
<el-form-item label="是否启用:">
{{ form.isEnabled }}
{{ form.isEnabled == '1' ? '是' : '否' }}
</el-form-item>
</el-form>
<div slot="footer" class="dialog-footer">

118
src/views/business/userBehaviorStats/index.vue

@ -9,14 +9,14 @@
placeholder="请选择统计日期">
</el-date-picker>
</el-form-item>
<el-form-item label="动作标识" prop="action">
<!-- <el-form-item label="动作标识" prop="action">
<el-input
v-model="queryParams.action"
placeholder="请输入具体动作标识符"
clearable
@keyup.enter.native="handleQuery"
/>
</el-form-item>
</el-form-item> -->
<el-form-item label="维度值" prop="dimensionValue">
<el-input
v-model="queryParams.dimensionValue"
@ -33,14 +33,14 @@
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item label="独立用户" prop="uniqueUsers">
<!-- <el-form-item label="独立用户" prop="uniqueUsers">
<el-input
v-model="queryParams.uniqueUsers"
placeholder="请输入独立用户数"
clearable
@keyup.enter.native="handleQuery"
/>
</el-form-item>
</el-form-item> -->
<el-form-item label="停留时间" prop="avgDuration">
<el-input
v-model="queryParams.avgDuration"
@ -49,6 +49,16 @@
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item label="行为类型" prop="behaviorType">
<el-select v-model="queryParams.behaviorType" placeholder="请选择行为类型" clearable>
<el-option
v-for="dict in behaviorTypeOptions"
:key="dict.dictValue"
:label="dict.dictLabel"
:value="dict.dictValue"
/>
</el-select>
</el-form-item>
<el-form-item>
<el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">{{ $t('common.button.search') }}</el-button>
<el-button icon="el-icon-refresh" size="mini" @click="resetQuery">{{ $t('common.button.reset') }}</el-button>
@ -104,12 +114,16 @@
<el-table v-loading="loading" :data="userBehaviorStatsList" @selection-change="handleSelectionChange">
<el-table-column type="selection" width="55" align="center" />
<el-table-column label="ID" align="center" prop="id" v-if="true"/>
<el-table-column label="行为类型" align="center" prop="behaviorType" />
<el-table-column label="动作标识符" align="center" prop="action" />
<el-table-column label="行为类型" align="center" prop="behaviorType">
<template slot-scope="scope">
<span>{{ getBehaviorTypeLabel(scope.row.behaviorType) }}</span>
</template>
</el-table-column>
<!-- <el-table-column label="动作标识符" align="center" prop="action" /> -->
<el-table-column label="维度类型" align="center" prop="dimensionType" />
<el-table-column label="维度值" align="center" prop="dimensionValue" />
<el-table-column label="行为总数" align="center" prop="total" />
<el-table-column label="独立用户数" align="center" prop="uniqueUsers" />
<!-- <el-table-column label="独立用户数" align="center" prop="uniqueUsers" /> -->
<el-table-column label="平均停留时间" align="center" prop="avgDuration" />
<el-table-column label="扩展统计数据" align="center" prop="extraData" />
<el-table-column label="统计日期" align="center" prop="statDate" width="180">
@ -154,29 +168,39 @@
<!-- 添加或修改用户行为统计聚合对话框 -->
<el-dialog :title="title" :visible.sync="open" width="700px" append-to-body>
<el-form ref="form" :model="form" :rules="rules" label-width="auto">
<el-form-item label="统计日期" prop="statDate">
<el-date-picker clearable
v-model="form.statDate"
type="datetime"
value-format="yyyy-MM-dd HH:mm:ss"
placeholder="请选择统计日期">
</el-date-picker>
</el-form-item>
<el-form-item label="具体动作标识符" prop="action">
<el-input v-model="form.action" placeholder="请输入具体动作标识符" />
</el-form-item>
<el-form-item label="行为类型" prop="behaviorType">
<el-select v-model="form.behaviorType" placeholder="请选择行为类型">
<el-option
v-for="dict in behaviorTypeOptions"
:key="dict.dictValue"
:label="dict.dictLabel"
:value="dict.dictValue"
/>
</el-select>
</el-form-item>
<!-- <el-form-item label="具体动作标识符" prop="action">
<el-input v-model="form.action" placeholder="请输入具体动作标识符" />
</el-form-item> -->
<el-form-item label="维度值" prop="dimensionValue">
<el-input v-model="form.dimensionValue" placeholder="请输入维度值" />
</el-form-item>
<el-form-item label="行为总次数" prop="total">
<el-input v-model="form.total" placeholder="请输入行为总次数" />
</el-form-item>
<el-form-item label="独立用户数" prop="uniqueUsers">
<!-- <el-form-item label="独立用户数" prop="uniqueUsers">
<el-input v-model="form.uniqueUsers" placeholder="请输入独立用户数" />
</el-form-item>
</el-form-item> -->
<el-form-item label="平均停留时间" prop="avgDuration">
<el-input v-model="form.avgDuration" placeholder="请输入平均停留时间" />
</el-form-item>
<el-form-item label="统计日期" prop="statDate">
<el-date-picker clearable
v-model="form.statDate"
type="datetime"
value-format="yyyy-MM-dd HH:mm:ss"
placeholder="请选择统计日期">
</el-date-picker>
</el-form-item>
</el-form>
<div slot="footer" class="dialog-footer">
<el-button :loading="buttonLoading" type="primary" @click="submitForm">{{ $t('common.button.confirm') }}</el-button>
@ -195,8 +219,11 @@
placeholder="请选择统计日期">
</el-date-picker>
</el-form-item>
<el-form-item label="具体动作标识符:">
<!-- <el-form-item label="具体动作标识符:">
{{form.action}}
</el-form-item> -->
<el-form-item label="行为类型:">
{{ getBehaviorTypeLabel(form.behaviorType) }}
</el-form-item>
<el-form-item label="维度值:">
{{form.dimensionValue}}
@ -204,9 +231,9 @@
<el-form-item label="行为总次数:">
{{form.total}}
</el-form-item>
<el-form-item label="独立用户数:">
<!-- <el-form-item label="独立用户数:">
{{form.uniqueUsers}}
</el-form-item>
</el-form-item> -->
<el-form-item label="平均停留时间:">
{{form.avgDuration}}
</el-form-item>
@ -225,6 +252,15 @@ export default {
name: "UserBehaviorStats",
data() {
return {
//
behaviorTypeOptions: [
{dictValue: '1', dictLabel: '登录'},
{dictValue: '2', dictLabel: '支付'},
{dictValue: '3', dictLabel: '实名认证'},
{dictValue: '4', dictLabel: '点击操作'},
{dictValue: '5', dictLabel: '访问页面'},
{dictValue: '6', dictLabel: '登出'}
],
// loading
buttonLoading: false,
//
@ -265,36 +301,7 @@ export default {
form: {},
//
rules: {
id: [
{ required: true, message: "不能为空", trigger: "blur" }
],
statDate: [
{ required: true, message: "统计日期不能为空", trigger: "blur" }
],
behaviorType: [
{ required: true, message: "行为类型不能为空", trigger: "change" }
],
action: [
{ required: true, message: "具体动作标识符不能为空", trigger: "blur" }
],
dimensionType: [
{ required: true, message: "维度类型不能为空", trigger: "change" }
],
dimensionValue: [
{ required: true, message: "维度值不能为空", trigger: "blur" }
],
total: [
{ required: true, message: "行为总次数不能为空", trigger: "blur" }
],
uniqueUsers: [
{ required: true, message: "独立用户数不能为空", trigger: "blur" }
],
avgDuration: [
{ required: true, message: "平均停留时间不能为空", trigger: "blur" }
],
extraData: [
{ required: true, message: "扩展统计数据不能为空", trigger: "blur" }
],
}
};
},
@ -303,6 +310,11 @@ export default {
},
methods: {
/** 查询用户行为统计聚合列表 */
getBehaviorTypeLabel(value) {
if (!value) return '';
const item = this.behaviorTypeOptions.find(dict => dict.dictValue == value);
return item ? item.dictLabel : value;
},
getList() {
this.loading = true;
listUserBehaviorStats(this.queryParams).then(response => {

24
src/views/business/userCredit/index.vue

@ -141,16 +141,16 @@
<el-dialog :title="title" :visible.sync="open" width="700px" append-to-body>
<el-form ref="form" :model="form" :rules="rules" label-width="auto">
<el-form-item label="用户ID" prop="userId">
<el-input v-model="form.userId" placeholder="请输入用户ID"/>
<el-input v-model.number="form.userId" placeholder="请输入用户ID" />
</el-form-item>
<el-form-item label="用户的信用评分" prop="score">
<el-input v-model="form.score" placeholder="请输入用户的信用评分"/>
<el-input v-model.number="form.score" placeholder="请输入用户的信用评分"/>
</el-form-item>
<el-form-item label="累计违规次数" prop="violationNum">
<el-input v-model="form.violationNum" placeholder="请输入累计违规次数"/>
<el-input v-model.number="form.violationNum" placeholder="请输入累计违规次数" />
</el-form-item>
<el-form-item label="违规次数比例(%)" prop="violationPro">
<el-input v-model="form.violationPro" placeholder="请输入违规次数比例"/>
<el-input v-model.number="form.violationPro" placeholder="请输入违规次数比例" />
</el-form-item>
</el-form>
<div slot="footer" class="dialog-footer">
@ -230,14 +230,24 @@ export default {
form: {},
//
rules: {
userId: [
{required: true, message: "用户ID不能为空", trigger: "blur"},
{type: "number", message: "用户ID必须为数字", trigger: "blur"}
],
score: [
{required: true, message: "用户的信用评分不能为空", trigger: "blur"}
{required: true, message: "用户的信用评分不能为空", trigger: "blur"},
{type: "number", message: "信用评分必须为数字", trigger: "blur"},
{type: "number", min: 0, max: 100, message: "信用评分必须在0到100之间", trigger: "blur"}
],
violationNum: [
{required: true, message: "累计违规次数不能为空", trigger: "blur"}
{required: true, message: "累计违规次数不能为空", trigger: "blur"},
{type: "number", message: "累计违规次数必须为数字", trigger: "blur"},
{type: "number", min: 0, message: "累计违规次数不能小于0", trigger: "blur"}
],
violationPro: [
{required: true, message: "违规次数比例不能为空", trigger: "blur"}
{required: true, message: "违规次数比例不能为空", trigger: "blur"},
{type: "number", message: "违规次数比例必须为数字", trigger: "blur"},
{type: "number", min: 0, max: 100, message: "违规次数比例必须在0到100之间", trigger: "blur"}
],
}
};

28
src/views/business/userCreditRecord/index.vue

@ -105,7 +105,7 @@
<el-table-column label="用户Id" align="center" prop="userId"/>
<el-table-column label="用户名" align="center" prop="userName"/>
<el-table-column label="违规订单号" align="center" prop="violationOrd"/>
<el-table-column label="规则Id" align="center" prop="creditRuleId"/>
<el-table-column label="信用规则Id" align="center" prop="creditRuleId"/>
<!-- <el-table-column label="违规类型" align="center" prop="violationType"/>-->
<el-table-column label="订单金额" align="center" prop="violationSum"/>
<!-- <el-table-column label="违规级别" align="center" prop="violationLevel"/>-->
@ -150,16 +150,16 @@
<el-dialog :title="title" :visible.sync="open" width="700px" append-to-body>
<el-form ref="form" :model="form" :rules="rules" label-width="auto">
<el-form-item label="用户Id" prop="userId">
<el-input v-model="form.userId" placeholder="请输入用户Id"/>
<el-input v-model.number="form.userId" placeholder="请输入用户Id"/>
</el-form-item>
<el-form-item label="规则触发Id" prop="violationBus">
<el-input v-model="form.creditRuleId" placeholder="请输入违规业务"/>
<el-form-item label="信用规则Id" prop="creditRuleId">
<el-input v-model.number="form.creditRuleId" placeholder="请输入触发规则Id"/>
</el-form-item>
<el-form-item label="违规订单号" prop="violationOrd">
<el-input v-model="form.violationOrd" placeholder="请输入违规订单号"/>
<el-input v-model.number="form.violationOrd" placeholder="请输入违规订单号"/>
</el-form-item>
<el-form-item label="订单金额" prop="violationSum">
<el-input v-model="form.violationSum" placeholder="请输入订单金额"/>
<el-input v-model.number="form.violationSum" placeholder="请输入订单金额"/>
</el-form-item>
</el-form>
<div slot="footer" class="dialog-footer">
@ -186,7 +186,7 @@
<el-form-item label="违规订单号:">
{{ form.violationOrd }}
</el-form-item>
<el-form-item label="违规订单号:">
<el-form-item label="信用规则Id:">
{{ form.creditRuleId }}
</el-form-item>
<el-form-item label="订单金额:">
@ -258,13 +258,21 @@ export default {
//
rules: {
userId: [
{required: true, message: "用户Id不能为空", trigger: "blur"}
{required: true, message: "用户Id不能为空", trigger: "blur"},
{type: "number", message: "用户Id必须为数字", trigger: "blur"}
],
creditRuleId: [
{required: true, message: "触发规则 Id 不能为空", trigger: "blur"},
{type: "number", message: "触发规则 Id必须为数字", trigger: "blur"}
],
violationOrd: [
{required: true, message: "违规订单号不能为空", trigger: "blur"}
{required: true, message: "违规订单号不能为空", trigger: "blur"},
{type: "number", message: "违规订单号必须为数字", trigger: "blur"}
],
violationSum: [
{required: true, message: "订单金额不能为空", trigger: "blur"}
{required: true, message: "订单金额不能为空", trigger: "blur"},
{type: "number", message: "订单金额必须为数字", trigger: "blur"},
{type: "number", min: 0, message: "订单金额不能小于0", trigger: "blur"}
],
}
};

Loading…
Cancel
Save