添加积分规则

This commit is contained in:
shijingjing
2022-06-20 16:59:20 +08:00
parent 5f208c4510
commit 25b4572ec8

View File

@@ -6,6 +6,7 @@
</template>
<template slot="content">
<ai-search-bar bottomBorder>
<template slot="left">
<el-cascader size="small" v-model="search.eventType" placeholder="请选择事件/类型" clearable
:props="{...etOps,checkStrictly:true}" @change="handleTypeSearch" ref="eventTypeSearch"/>
@@ -16,14 +17,20 @@
:selectList="dict.getDict('integralRuleStatus')">
</ai-select>
</template>
<template slot="right">
</template>
</ai-search-bar>
<ai-search-bar style="margin-top: 16px;">
<template #left>
<el-button type="primary" icon="iconfont iconAdd" @click="dialog=true">添加</el-button>
</template>
</ai-search-bar>
<ai-table
:tableData="tableData"
:col-configs="colConfigs"
@@ -53,55 +60,103 @@
</template>
</el-table-column>
</ai-table>
</template>
</ai-list>
<ai-empty v-else>暂无应用权限</ai-empty>
<ai-dialog :title="dialogTitle" :visible.sync="dialog" @onConfirm="onConfirm" @closed="form={ladderRule: []}" width="700px">
<ai-dialog :title="dialogTitle" :visible.sync="dialog" @onConfirm="onConfirm" @closed="form={ladderRule: []}" width="800px">
<div class="form_div">
<el-form ref="DialogForm" :model="form" :rules="formRules" size="small" label-suffix="" label-width="100px">
<el-form-item label="事件/类型" prop="eventType">
<!-- <el-form-item label="事件/类型" prop="eventType">
<el-cascader v-model="form.eventType" :props="etOps" clearable placeholder="请选择" @change="handleTypeForm"
:options="cacheOps"/>
</el-form-item> -->
<el-form-item label="事件名称" prop="eventType">
<el-input v-model="form.name" clearable placeholder="请输入事件名称" type="text" maxlength="30" show-word-limit/>
</el-form-item>
<el-form-item label="规则" prop="ruleType" v-if="form.ruleType>-1" required>
<el-row type="flex" justify="space-between">
<div v-text="dict.getLabel('integralRuleRuleType',form.ruleType)"/>
<el-button v-if="form.ruleType==1" type="text" icon="iconfont iconAdd"
@click="form.ladderRule.push({viewCount:null,integral:null})">添加
</el-button>
</el-row>
<el-table v-if="form.ruleType==1" :data="form.ladderRule" size="mini" border stripe>
<el-table-column label="查看人数(人)" align="center">
<template slot-scope="{row}">
<el-input class="tableInput" v-model.number="row.viewCount" clearable placeholder="请输入"/>
</template>
</el-table-column>
<el-table-column label="获得积分(分)" align="center">
<template slot-scope="{row}">
<el-input class="tableInput" v-model="row.integral" clearable placeholder="请输入" type="number"
@keyup.native="row.integral=checkIntegral(row.integral)"/>
</template>
</el-table-column>
<el-table-column label="操作" align="center">
<template slot-scope="{row,$index}">
<el-button type="text" @click="handleDelete($index)">删除</el-button>
</template>
</el-table-column>
</el-table>
<el-form-item label="简介说明" prop="eventType">
<el-input v-model="form.name" clearable placeholder="请输入简介说明" type="text" maxlength="100" show-word-limit/>
</el-form-item>
<el-form-item label="规则" prop="ruleType" required>
<el-radio-group v-model="form.pass" @change="typeChange">
<el-radio label="0">常规</el-radio>
<el-radio label="1">区间</el-radio>
<el-radio label="2">阶梯</el-radio>
</el-radio-group>
</el-form-item>
<el-form-item label="周期范围" prop="scoringCycle">
<ai-select v-model="form.scoringCycle" :selectList="dict.getDict('integralRuleScoringCycle')"/>
</el-form-item>
<template v-if="form.ruleType==0">
<el-form-item label="奖励次数" prop="numberLimit">
<el-input placeholder="请输入,周期范围内,不填写表示不限制" v-model.number="form.numberLimit" clearable/>
</el-form-item>
<el-form-item label="积分分值" prop="integral">
<el-input placeholder="请输入" v-model="form.integral" clearable/>
</el-form-item>
</template>
<el-form-item label="奖励次数">
<el-input placeholder="请输入,周期范围内,不填写表示不限制" v-model.number="form.numberLimit" clearable/>
</el-form-item>
<el-form-item label="积分分值" prop="integral" v-if="form.pass == 0">
<el-input placeholder="请输入" v-model="form.integral" clearable/>
</el-form-item>
<el-form-item label="积分分值" prop="integral" v-if="form.pass == 1">
<div class="flex">
<div class="from">
<el-input
ref="input_from"
v-model="integralFrom"
placeholder="最小值"
@input="handleInputFrom"
></el-input>
</div>
<div class="center">
<span></span>
</div>
<div class="to">
<el-input
ref="input_to"
v-model="integralTo"
placeholder="最大值"
@input="handleInputTo"
></el-input>
</div>
</div>
</el-form-item>
<el-form-item label="积分分值" prop="integral" v-if="form.pass == 2">
<el-button type="text" @click="innerVisible = true" style="float: right;">添加</el-button>
<ai-table :tableData="integralData" :isShowPagination="false" :col-configs="integralConfigs" :dict="dict">
<!-- @selection-change="v=>ids=v.filter(e=>e.sysUserId).map(e=>e.sysUserId)" -->
<el-table-column slot="options" align="center" label="操作" fixed="right" width="160px">
<el-row type="flex" justify="center" align="middle" slot-scope="{row}">
<el-button v-if="$permissions('admin_sysuser_distribute')&&!!row.sysUserId"
type="text" @click="appAllot(row)">删除
</el-button>
</el-row>
</el-table-column>
</ai-table>
</el-form-item>
<el-dialog width="30%" title="添加积分分值" :visible.sync="innerVisible" append-to-body>
<el-form ref="DialogForm" :model="forms" :rules="formRules" size="small" label-suffix="" label-width="100px">
<el-form-item label="加分项" prop="integral">
<el-input placeholder="请输入" v-model="form.integral" clearable/>
</el-form-item>
<el-form-item label="获得积分" prop="integral">
<el-input placeholder="请输入" v-model="form.integral" clearable/>
</el-form-item>
</el-form>
<div slot="footer" class="dialog-footer">
<el-button @click="innerVisible = false"> </el-button>
<el-button type="primary" @click="innerVisible = false">提交</el-button>
</div>
</el-dialog>
</el-form>
</div>
</ai-dialog>
</section>
</template>
@@ -152,6 +207,11 @@ export default {
{prop: "status", label: "状态", align: "center", width: 96, dict: "integralRuleStatus"},
{slot: "options", label: "操作", align: "center"},
],
integralConfigs: [
{prop: "event", label: "加分项", dict: "integralRuleEvent"},
{prop: "event", label: "获得积分", dict: "integralRuleEvent"},
{slot: "options", label: "操作", align: "center"},
],
tableData: [],
dialog: false,
form: {ladderRule: []},
@@ -161,7 +221,12 @@ export default {
integral: [{required: true, pattern: /^\d*[.\d]\d?$/, message: "请输入积分分值,最多保留一位小数"}],
numberLimit: [{pattern: /^\d*$/, message: "请输入正整数"}]
},
cacheOps: []
cacheOps: [],
integralFrom: '',
integralTo: '',
integralData: [],
innerVisible: false,
forms: {},
};
},
created() {
@@ -198,6 +263,19 @@ export default {
})
})
},
typeChange() {
this.form.integral = ''
},
handleInputFrom(event) {
this.$emit('focusfrom', event)
},
handleInputTo(event) {
this.$emit('blurto', event)
},
remove(id) {
this.$confirm("删除后不可恢复,是否要删除该事项?", {
type: 'error'
@@ -299,5 +377,38 @@ export default {
}
}
}
::v-deep .el-input--mini .el-input__inner {
border: 0px;
margin: 0;
padding: 0 15px;
background-color: transparent;
}
.input-number-range {
background-color: #fff;
border: 1px solid #dcdfe6;
border-radius: 4px;
}
.flex {
display: flex;
flex-direction: row;
width: 100%;
// justify-content: space-between;
align-items: center;
.center {
margin: 0 20px;
margin-top: 1px;
}
}
.is-disabled {
background-color: #eef0f6;
border-color: #e4e7ed;
color: #c0c4cc;
cursor: not-allowed;
}
}
</style>