Merge remote-tracking branch 'origin/dev' into dev
This commit is contained in:
@@ -5,12 +5,12 @@
|
|||||||
<ai-search-bar>
|
<ai-search-bar>
|
||||||
<template #left>
|
<template #left>
|
||||||
<el-button type="primary" size="small" icon="iconfont iconAdd" @click="changeIntegral('',0)"> 批量调整积分</el-button>
|
<el-button type="primary" size="small" icon="iconfont iconAdd" @click="changeIntegral('',0)"> 批量调整积分</el-button>
|
||||||
<el-cascader ref="cascader1" clearable v-model="search.girdId" :options="girdOptions" placeholder="所属网格" size="small"
|
<el-cascader ref="cascader1" clearable v-model="girdIdList" :options="girdOptions" placeholder="所属网格" size="small"
|
||||||
:props="defaultProps" :show-all-levels="false" @change="gridChange"></el-cascader>
|
:props="defaultProps" :show-all-levels="false" @change="gridChange"></el-cascader>
|
||||||
</template>
|
</template>
|
||||||
<template #right>
|
<template #right>
|
||||||
<el-input size="small" placeholder="姓名" v-model="search.name" clearable
|
<el-input size="small" placeholder="姓名" v-model="search.userName" clearable
|
||||||
@clear="current = 1, search.name = '', getTableData()" suffix-icon="iconfont iconSearch"
|
@clear="current = 1, search.userName = '', getTableData()" suffix-icon="iconfont iconSearch"
|
||||||
v-throttle="() => {(current = 1), getTableData();}"/>
|
v-throttle="() => {(current = 1), getTableData();}"/>
|
||||||
<ai-download :instance="instance" url="`/app/appintegraluser/girdIntegralExport" :params="search" fileName="网格员积分"
|
<ai-download :instance="instance" url="`/app/appintegraluser/girdIntegralExport" :params="search" fileName="网格员积分"
|
||||||
:disabled="tableData.length == 0">
|
:disabled="tableData.length == 0">
|
||||||
@@ -20,21 +20,6 @@
|
|||||||
</ai-search-bar>
|
</ai-search-bar>
|
||||||
<ai-table :tableData="tableData" :total="page.total" :current.sync="current" :size.sync="page.size"
|
<ai-table :tableData="tableData" :total="page.total" :current.sync="current" :size.sync="page.size"
|
||||||
@getList="getTableData()" :col-configs="colConfigs" :dict="dict" @sort-change="changeTableSort">
|
@getList="getTableData()" :col-configs="colConfigs" :dict="dict" @sort-change="changeTableSort">
|
||||||
<el-table-column slot="integral" label="积分余额" align="center" prop="integral" :sortable="'custom'">
|
|
||||||
<template slot-scope="{ row }">
|
|
||||||
<span>{{ row.integral }}</span>
|
|
||||||
</template>
|
|
||||||
</el-table-column>
|
|
||||||
<el-table-column slot="totalIntegral" label="累计积分" align="center" prop="totalIntegral" :sortable="'custom'">
|
|
||||||
<template slot-scope="{ row }">
|
|
||||||
<span>{{ row.totalIntegral }}</span>
|
|
||||||
</template>
|
|
||||||
</el-table-column>
|
|
||||||
<el-table-column slot="usedIntegral" label="已用积分" align="center" prop="usedIntegral" :sortable="'custom'">
|
|
||||||
<template slot-scope="{ row }">
|
|
||||||
<span>{{ row.usedIntegral }}</span>
|
|
||||||
</template>
|
|
||||||
</el-table-column>
|
|
||||||
<el-table-column slot="options" label="操作" align="center">
|
<el-table-column slot="options" label="操作" align="center">
|
||||||
<template slot-scope="{ row }">
|
<template slot-scope="{ row }">
|
||||||
<el-button type="text" @click="changeIntegral(row,1)">调整积分</el-button>
|
<el-button type="text" @click="changeIntegral(row,1)">调整积分</el-button>
|
||||||
@@ -52,27 +37,27 @@
|
|||||||
@onConfirm="onConfirm"
|
@onConfirm="onConfirm"
|
||||||
@closed="form={},chooseUserList=[]">
|
@closed="form={},chooseUserList=[]">
|
||||||
<el-form ref="form" :model="form" :rules="rules" label-width="80px">
|
<el-form ref="form" :model="form" :rules="rules" label-width="80px">
|
||||||
<el-form-item label="选择人员" prop="ids" required>
|
<el-form-item label="选择人员" prop="ids">
|
||||||
<!-- <ai-person-select :instance="instance" :customClicker="true" :chooseUserList="chooseUserList"
|
<ai-person-select :instance="instance" :customClicker="true" :chooseUserList="chooseUserList"
|
||||||
:url="'/app/appgirdmemberinfo/list?size=10'"
|
:url="'/app/appgirdmemberinfo/list?size=10'" headerTitle="网格员列表"
|
||||||
:isMultiple="true" dialogTitle="选择" @selectPerson="selectPerson">
|
:isMultiple="true" dialogTitle="选择" @selectPerson="selectPerson" class="aipersonselect">
|
||||||
<template name="option" v-slot:option="{ item }">
|
<template name="option" v-slot:option="{ item }">
|
||||||
<span class="iconfont iconProlife">{{ item.name }}</span>
|
<span class="iconfont iconProlife">{{ item.name }}</span>
|
||||||
<ai-id mode="show" :show-eyes="false" :value="item.idNumber"/>
|
<ai-id mode="show" :show-eyes="false" :value="item.idNumber"/>
|
||||||
</template>
|
</template>
|
||||||
</ai-person-select> -->
|
</ai-person-select>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="调整说明" prop="eventDesc" required>
|
<el-form-item label="调整说明" prop="eventDesc">
|
||||||
<el-input v-model.trim="form.eventDesc" placeholder="请输入..." type="textarea" :rows="4" show-word-limit
|
<el-input v-model.trim="form.eventDesc" placeholder="请输入..." type="textarea" :rows="4" show-word-limit
|
||||||
maxlength="100"></el-input>
|
maxlength="100"></el-input>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="上传凭证">
|
<el-form-item label="上传凭证">
|
||||||
<ai-uploader :instance="instance" fileType="file" v-model="form.file" :limit="1"></ai-uploader>
|
<ai-uploader :instance="instance" fileType="file" v-model="form.file" :limit="1"></ai-uploader>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="类型" prop="integralCalcType" required>
|
<el-form-item label="类型" prop="integralCalcType">
|
||||||
<ai-select v-model="form.integralCalcType" :selectList="dict.getDict('integralCalcType')"/>
|
<ai-select v-model="form.integralCalcType" :selectList="dict.getDict('integralCalcType')"/>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="积分" prop="integral" required>
|
<el-form-item label="积分" prop="integral">
|
||||||
<el-input v-model.trim="form.integral" placeholder="请输入正数" size="small"></el-input>
|
<el-input v-model.trim="form.integral" placeholder="请输入正数" size="small"></el-input>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-form>
|
</el-form>
|
||||||
@@ -94,13 +79,14 @@ export default {
|
|||||||
data() {
|
data() {
|
||||||
return {
|
return {
|
||||||
search: {
|
search: {
|
||||||
name: '',
|
userName: '',
|
||||||
girdId: '',
|
girdId: '',
|
||||||
current: 1,
|
current: 1,
|
||||||
size: 10,
|
size: 10,
|
||||||
sortFiled: '',
|
sortFiled: '',
|
||||||
sortRule: '',
|
sortRule: '',
|
||||||
},
|
},
|
||||||
|
girdIdList: [],
|
||||||
tableData: [],
|
tableData: [],
|
||||||
page: {size: 10, total: 0},
|
page: {size: 10, total: 0},
|
||||||
current: 1,
|
current: 1,
|
||||||
@@ -135,10 +121,10 @@ export default {
|
|||||||
colConfigs() {
|
colConfigs() {
|
||||||
return [
|
return [
|
||||||
{ prop: "userName", label: '姓名', align: "left", },
|
{ prop: "userName", label: '姓名', align: "left", },
|
||||||
{ prop: "girdName", label: '所属网格', align: "center", },
|
{ prop: "girdName", label: '所属网格' },
|
||||||
{ slot: "integral", label: '积分余额', align: "center", },
|
{ prop: "integral", label: '积分余额', align: "center", sortable: true },
|
||||||
{ slot: "totalIntegral", label: '累计积分', align: "center", },
|
{ prop: "totalIntegral", label: '累计积分', align: "center", sortable: true },
|
||||||
{ slot: "usedIntegral", label: '已用积分', align: "center", },
|
{ prop: "usedIntegral", label: '已用积分', align: "center", sortable: true },
|
||||||
{ slot: "options" },
|
{ slot: "options" },
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
@@ -147,7 +133,8 @@ export default {
|
|||||||
ids: [{required: true, message: '请选择人员', trigger: 'blur'}],
|
ids: [{required: true, message: '请选择人员', trigger: 'blur'}],
|
||||||
eventDesc: [{required: true, message: '请输入调整说明', trigger: 'blur'}],
|
eventDesc: [{required: true, message: '请输入调整说明', trigger: 'blur'}],
|
||||||
integralCalcType: [{required: true, message: '请选择类型', trigger: 'change'}],
|
integralCalcType: [{required: true, message: '请选择类型', trigger: 'change'}],
|
||||||
integral: [{required: true, validator: (r, v, cb) => v > 0 ? cb() : cb("请输入正数")}],
|
integral: [{required: true, message: '请输入积分', trigger: 'blur' },
|
||||||
|
{pattern: /^([1-9]\d*|0)(\.\d{1,2})?$/, message: '请输入正数且最多只能保留两位小数'}],
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
@@ -218,6 +205,7 @@ export default {
|
|||||||
},
|
},
|
||||||
|
|
||||||
gridChange(val) {
|
gridChange(val) {
|
||||||
|
this.girdIdList = val
|
||||||
this.search.girdId = val?.[val.length - 1]
|
this.search.girdId = val?.[val.length - 1]
|
||||||
this.$refs.cascader1.dropDownVisible = false;
|
this.$refs.cascader1.dropDownVisible = false;
|
||||||
this.getTableData()
|
this.getTableData()
|
||||||
@@ -225,36 +213,30 @@ export default {
|
|||||||
|
|
||||||
changeTableSort(col) {
|
changeTableSort(col) {
|
||||||
if(col.prop === 'integral') { // 剩余积分
|
if(col.prop === 'integral') { // 剩余积分
|
||||||
|
this.search.sortFiled = 0
|
||||||
if(col.order === 'ascending') {
|
if(col.order === 'ascending') {
|
||||||
this.search.sortFiled = 0
|
|
||||||
this.search.sortRule = true
|
this.search.sortRule = true
|
||||||
} else if(col.order === 'descending') {
|
} else if(col.order === 'descending') {
|
||||||
this.search.sortFiled = 0
|
|
||||||
this.search.sortRule = false
|
this.search.sortRule = false
|
||||||
} else if(col.order === null) {
|
} else if(col.order === null) {
|
||||||
this.search.sortFiled = ''
|
|
||||||
this.search.sortRule = ''
|
this.search.sortRule = ''
|
||||||
}
|
}
|
||||||
} else if(col.prop === 'totalIntegral') { // 累计积分
|
} else if(col.prop === 'totalIntegral') { // 累计积分
|
||||||
|
this.search.sortFiled = 1
|
||||||
if(col.order === 'ascending') {
|
if(col.order === 'ascending') {
|
||||||
this.search.sortFiled = 1
|
|
||||||
this.search.sortRule = true
|
this.search.sortRule = true
|
||||||
} else if(col.order === 'descending') {
|
} else if(col.order === 'descending') {
|
||||||
this.search.sortFiled = 1
|
|
||||||
this.search.sortRule = false
|
this.search.sortRule = false
|
||||||
} else if(col.order === null) {
|
} else if(col.order === null) {
|
||||||
this.search.sortFiled = ''
|
|
||||||
this.search.sortRule = ''
|
this.search.sortRule = ''
|
||||||
}
|
}
|
||||||
} else if(col.prop === 'usedIntegral') { // 已用积分
|
} else if(col.prop === 'usedIntegral') { // 已用积分
|
||||||
|
this.search.sortFiled = 2
|
||||||
if(col.order === 'ascending') {
|
if(col.order === 'ascending') {
|
||||||
this.search.sortFiled = 2
|
|
||||||
this.search.sortRule = true
|
this.search.sortRule = true
|
||||||
} else if(col.order === 'descending') {
|
} else if(col.order === 'descending') {
|
||||||
this.search.sortFiled = 2
|
|
||||||
this.search.sortRule = false
|
this.search.sortRule = false
|
||||||
} else if(col.order === null) {
|
} else if(col.order === null) {
|
||||||
this.search.sortFiled = ''
|
|
||||||
this.search.sortRule = ''
|
this.search.sortRule = ''
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -277,12 +259,15 @@ export default {
|
|||||||
integralCalcType: this.form.integralCalcType,
|
integralCalcType: this.form.integralCalcType,
|
||||||
integral: this.form.integral,
|
integral: this.form.integral,
|
||||||
}).then(res => {
|
}).then(res => {
|
||||||
if(res.code == 0) {
|
if(res?.code == 0) {
|
||||||
this.$message.success('调整积分成功')
|
this.$message.success('调整积分成功')
|
||||||
setTimeout(() =>{
|
setTimeout(() =>{
|
||||||
this.getTableData()
|
|
||||||
this.dialog = false
|
this.dialog = false
|
||||||
})
|
this.getTableData()
|
||||||
|
this.flag = false
|
||||||
|
}, 600)
|
||||||
|
} else {
|
||||||
|
this.flag = false
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
@@ -309,5 +294,65 @@ export default {
|
|||||||
::v-deep .ai-dialog .ai-dialog__content {
|
::v-deep .ai-dialog .ai-dialog__content {
|
||||||
overflow-y: hidden;
|
overflow-y: hidden;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
.userlist {
|
||||||
|
display: inline-block;
|
||||||
|
}
|
||||||
|
|
||||||
|
.userlist, .user {
|
||||||
|
display: inline-block;
|
||||||
|
}
|
||||||
|
|
||||||
|
.user {
|
||||||
|
position: relative;
|
||||||
|
width: 70px;
|
||||||
|
text-align: center;
|
||||||
|
|
||||||
|
.remove-icon {
|
||||||
|
position: absolute;
|
||||||
|
right: 7px;
|
||||||
|
top: -4px;
|
||||||
|
line-height: 1;
|
||||||
|
padding: 6px 0;
|
||||||
|
font-size: 16px;
|
||||||
|
cursor: pointer;
|
||||||
|
|
||||||
|
&:hover {
|
||||||
|
color: crimson;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
img, h2 {
|
||||||
|
display: block;
|
||||||
|
width: 40px;
|
||||||
|
height: 40px;
|
||||||
|
line-height: 40px;
|
||||||
|
text-align: center;
|
||||||
|
margin: 0 auto 4px;
|
||||||
|
font-size: 14px;
|
||||||
|
color: #fff;
|
||||||
|
border-radius: 50%;
|
||||||
|
}
|
||||||
|
|
||||||
|
h2 {
|
||||||
|
background-color: $primaryColor;
|
||||||
|
}
|
||||||
|
|
||||||
|
span {
|
||||||
|
color: #666;
|
||||||
|
font-size: 14px;
|
||||||
|
white-space: nowrap;
|
||||||
|
overflow: hidden;
|
||||||
|
word-break: break-all;
|
||||||
|
text-overflow: ellipsis;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
::v-deep .selectCont .pagination {
|
||||||
|
width: 100%!important;
|
||||||
|
background: pink;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
</style>
|
</style>
|
||||||
@@ -7,7 +7,7 @@
|
|||||||
<ai-search-bar>
|
<ai-search-bar>
|
||||||
<template #left>
|
<template #left>
|
||||||
<el-button type="primary" icon="iconfont iconAdd" @click="dialog = true"> 添加</el-button>
|
<el-button type="primary" icon="iconfont iconAdd" @click="dialog = true"> 添加</el-button>
|
||||||
<el-cascader size="small" v-model="search.systemRuleId" :options="rulesOps" placeholder="请选择事件/类型" clearable :props="rulesProps" @change="handleTypeSearch" ref="eventTypeSearch"/>
|
<el-cascader size="small" v-model="systemRuleIdList" :options="rulesOps" placeholder="请选择事件/类型" clearable :props="rulesProps" @change="handleTypeSearch" ref="eventTypeSearch"/>
|
||||||
<ai-select v-model="search.status" @change="(page.current = 1), getList()" placeholder="请选择状态" :selectList="$dict.getDict('integralRuleStatus')">
|
<ai-select v-model="search.status" @change="(page.current = 1), getList()" placeholder="请选择状态" :selectList="$dict.getDict('integralRuleStatus')">
|
||||||
</ai-select>
|
</ai-select>
|
||||||
</template>
|
</template>
|
||||||
@@ -42,8 +42,8 @@
|
|||||||
<el-cascader v-model="form.systemRuleId" ref="cascaderArr" :props="etOps" clearable placeholder="请选择" @change="handleTypeForm" :options="rulesOps"/>
|
<el-cascader v-model="form.systemRuleId" ref="cascaderArr" :props="etOps" clearable placeholder="请选择" @change="handleTypeForm" :options="rulesOps"/>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
|
|
||||||
<el-form-item label="自定义事件" v-if="form.systemRuleId == '自定义'">
|
<el-form-item label="自定义事件" v-if="form.systemRuleId == '自定义'" prop="ruleName" :required="form.systemRuleId == '自定义'">
|
||||||
<el-input placeholder="请输入,周期范围内,不填写表示不限制" v-model="form.ruleName" clearable/>
|
<el-input placeholder="请输入,周期范围内,不填写表示不限制" v-model="form.ruleName" clearable maxlength="10" show-word-limit />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
|
|
||||||
<el-form-item label="规则">
|
<el-form-item label="规则">
|
||||||
@@ -82,7 +82,7 @@
|
|||||||
</el-form-item>
|
</el-form-item>
|
||||||
|
|
||||||
<el-form-item label="奖励次数">
|
<el-form-item label="奖励次数">
|
||||||
<el-input placeholder="请输入,周期范围内,不填写表示不限制" v-model.number="form.numberLimit" clearable/>
|
<el-input type="number" placeholder="请输入,周期范围内,不填写表示不限制" v-model.number="form.numberLimit" clearable/>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
|
|
||||||
<el-form-item label="积分分值" prop="integral">
|
<el-form-item label="积分分值" prop="integral">
|
||||||
@@ -97,13 +97,18 @@
|
|||||||
</el-form-item>
|
</el-form-item>
|
||||||
|
|
||||||
<el-form-item label="生效网格" :prop="form.validRangeType == 1 ? 'validRangeData' : ''" :rules="[{ required: true, message: '请选择生效网格', trigger: 'change' }, ]" v-if="form.validRangeType == 1">
|
<el-form-item label="生效网格" :prop="form.validRangeType == 1 ? 'validRangeData' : ''" :rules="[{ required: true, message: '请选择生效网格', trigger: 'change' }, ]" v-if="form.validRangeType == 1">
|
||||||
<el-button type="text" @click="(showGrid = true), beforeSelectTree()" >{{ girdInfoList.length ? "已选择" : "请选择" }}</el-button>
|
<el-button type="text" @click="(showGrid = true), beforeSelectTree()" >{{ girdInfoList.length ? "重新选择" : "请选择" }}</el-button>
|
||||||
|
<div v-if="girdInfoList.length">
|
||||||
|
<span v-for="(e,index) in girdNameList" :key="index" style="margin-right: 8px;">{{e}}</span>
|
||||||
|
</div>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-form>
|
</el-form>
|
||||||
</div>
|
</div>
|
||||||
<ai-dialog title="选择网格" :visible.sync="showGrid" :customFooter="true" :destroyOnClose="true" border width="720px" append-to-body>
|
<ai-dialog title="选择网格" :visible.sync="showGrid" :customFooter="true" :destroyOnClose="true" border width="720px" append-to-body>
|
||||||
<div class="grid">
|
<div class="grid">
|
||||||
<el-tree :data="treeObj.treeList" :props="treeObj.defaultProps" node-key="id" ref="tree" :check-strictly="true" show-checkbox default-expand-all :default-checked-keys="currCheckedKeys" @check="onCheckChange">
|
<el-tree :data="treeObj.treeList" :props="treeObj.defaultProps" node-key="id" ref="tree"
|
||||||
|
show-checkbox lazy :check-strictly="true" :load="loadNode" :default-expanded-keys="currCheckedKeys"
|
||||||
|
:default-checked-keys="currCheckedKeys" @check="onCheckChange">
|
||||||
</el-tree>
|
</el-tree>
|
||||||
</div>
|
</div>
|
||||||
<div class="dialog-footer" slot="footer">
|
<div class="dialog-footer" slot="footer">
|
||||||
@@ -125,12 +130,28 @@ export default {
|
|||||||
permissions: Function,
|
permissions: Function,
|
||||||
},
|
},
|
||||||
data() {
|
data() {
|
||||||
|
var validcode = (rule, value, callback) => {
|
||||||
|
if(value) {
|
||||||
|
if (value != 0) {
|
||||||
|
if(!/^([+-]?([1-9]{1}\d*)|(0{1}))(\.\d{1,2})?$/.test(value)) {
|
||||||
|
callback(new Error('请输入积分分值,可输入正数、负数、最多保留两位小数'))
|
||||||
|
}else{
|
||||||
|
callback();
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
callback(new Error('请输入有效的积分分值'));
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
callback(new Error('请输入积分分值'));
|
||||||
|
}
|
||||||
|
}
|
||||||
return {
|
return {
|
||||||
search: {
|
search: {
|
||||||
status: "",
|
status: "",
|
||||||
systemRuleId: "",
|
systemRuleId: "",
|
||||||
ruleName: ""
|
ruleName: ""
|
||||||
},
|
},
|
||||||
|
systemRuleIdList: [],
|
||||||
page: { current: 1, size: 10, total: 0 },
|
page: { current: 1, size: 10, total: 0 },
|
||||||
colConfigs: [
|
colConfigs: [
|
||||||
{
|
{
|
||||||
@@ -187,16 +208,13 @@ export default {
|
|||||||
systemRuleId: [
|
systemRuleId: [
|
||||||
{ required: true, message: "请选择事件/类型", trigger: "change" },
|
{ required: true, message: "请选择事件/类型", trigger: "change" },
|
||||||
],
|
],
|
||||||
|
ruleName: [
|
||||||
|
{ required: true, message: "请输入自定义事件", trigger: "change" },
|
||||||
|
],
|
||||||
scoringCycle: [
|
scoringCycle: [
|
||||||
{ required: true, message: "请选择周期范围", trigger: "change" },
|
{ required: true, message: "请选择周期范围", trigger: "change" },
|
||||||
],
|
],
|
||||||
integral: [
|
integral: [{required: true, validator: validcode, trigger: "blur"},],
|
||||||
{
|
|
||||||
required: true,
|
|
||||||
pattern: /^\d*[.\d]\d?$/,
|
|
||||||
message: "请输入积分分值,最多保留一位小数",
|
|
||||||
},
|
|
||||||
],
|
|
||||||
validRangeType: [
|
validRangeType: [
|
||||||
{ required: true, message: "请选择有效范围", trigger: "change" },
|
{ required: true, message: "请选择有效范围", trigger: "change" },
|
||||||
],
|
],
|
||||||
@@ -214,19 +232,24 @@ export default {
|
|||||||
defaultProps: {
|
defaultProps: {
|
||||||
label: "girdName",
|
label: "girdName",
|
||||||
value: "id",
|
value: "id",
|
||||||
|
children: 'children',
|
||||||
|
isLeaf: 'leaf'
|
||||||
},
|
},
|
||||||
checkedKeys: [],
|
checkedKeys: [],
|
||||||
},
|
},
|
||||||
girdInfoList: [],
|
girdInfoList: [],
|
||||||
currCheckedKeys: [],
|
currCheckedKeys: [],
|
||||||
rulueType: "0",
|
rulueType: "0",
|
||||||
|
girdNameList: [],
|
||||||
};
|
};
|
||||||
},
|
},
|
||||||
created() {
|
created() {
|
||||||
this.$dict.load("integralRuleStatus","integralRuleRuleType","integralRuleScoringCycle","integralRuleEvent","integralRuleEventType").then(() => {
|
this.$dict.load("integralRuleStatus","integralRuleRuleType","integralRuleScoringCycle",
|
||||||
|
"integralRuleEvent","integralRuleEventType").then(() => {
|
||||||
this.getList();
|
this.getList();
|
||||||
this.getRulesList();
|
this.getRulesList();
|
||||||
this.beforeSelectTree();
|
this.beforeSelectTree();
|
||||||
|
// this.getList12()
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
@@ -256,16 +279,22 @@ export default {
|
|||||||
validRangeType: "0",
|
validRangeType: "0",
|
||||||
validRangeData: "",
|
validRangeData: "",
|
||||||
};
|
};
|
||||||
|
if(!this.isEdit) {
|
||||||
|
this.girdInfoList = []
|
||||||
|
}
|
||||||
},
|
},
|
||||||
toEdit(row) {
|
toEdit(row) {
|
||||||
this.form = {...row}
|
this.form = {...row}
|
||||||
this.girdInfoList = this.form?.validRangeData?.split(",");
|
if(this.form?.validRangeData) {
|
||||||
|
this.girdInfoList = JSON.parse(this.form.validRangeData)
|
||||||
|
this.girdNameList = this.girdInfoList.map(e=>e.girdName)
|
||||||
|
}
|
||||||
this.$nextTick(() => {
|
this.$nextTick(() => {
|
||||||
this.dialog = true;
|
this.dialog = true;
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
remove(id) {
|
remove(id) {
|
||||||
this.$confirm("删除后不可恢复,是否要删除该事项?", {
|
this.$confirm("删除后不可恢复,是否要删除该规则?", {
|
||||||
type: "error",
|
type: "error",
|
||||||
}).then(() => {
|
}).then(() => {
|
||||||
this.instance
|
this.instance
|
||||||
@@ -299,9 +328,6 @@ export default {
|
|||||||
this.getList();
|
this.getList();
|
||||||
},
|
},
|
||||||
onConfirm() {
|
onConfirm() {
|
||||||
// if(this.form.ruleType==1 && !this.form.ladderRule.length) {
|
|
||||||
// return this.$message.error('请添加规则')
|
|
||||||
// }
|
|
||||||
this.$refs.DialogForm.validate((valid) => {
|
this.$refs.DialogForm.validate((valid) => {
|
||||||
if (valid) {
|
if (valid) {
|
||||||
let formData = this.$copy(this.form);
|
let formData = this.$copy(this.form);
|
||||||
@@ -324,6 +350,7 @@ export default {
|
|||||||
});
|
});
|
||||||
},
|
},
|
||||||
handleTypeSearch(v) {
|
handleTypeSearch(v) {
|
||||||
|
this.systemRuleIdList = v
|
||||||
this.search.systemRuleId = v?.[v.length - 1];
|
this.search.systemRuleId = v?.[v.length - 1];
|
||||||
this.search.ruleName = this.$refs.eventTypeSearch.getCheckedNodes()[0]?.label
|
this.search.ruleName = this.$refs.eventTypeSearch.getCheckedNodes()[0]?.label
|
||||||
this.page.current = 1;
|
this.page.current = 1;
|
||||||
@@ -403,58 +430,85 @@ export default {
|
|||||||
if (!this.$refs.tree.getCheckedNodes().length) {
|
if (!this.$refs.tree.getCheckedNodes().length) {
|
||||||
return this.$message.error("请选择网格");
|
return this.$message.error("请选择网格");
|
||||||
}
|
}
|
||||||
// console.log(this.girdInfoList, this.$refs.tree.getCheckedNodes());
|
|
||||||
this.girdInfoList = this.$refs.tree.getCheckedNodes().map((item) => {
|
this.girdInfoList = this.$refs.tree.getCheckedNodes().map((item) => {
|
||||||
return { ...item, checkType: true };
|
return { ...item, checkType: true };
|
||||||
});
|
});
|
||||||
// this.$set(this.girdInfoList, this.currIndex, {
|
|
||||||
// ...this.$refs.tree.getCheckedNodes(),
|
|
||||||
// checkType: true
|
|
||||||
// })
|
let validRangeData = this.$refs.tree.getCheckedNodes().map((e) => {
|
||||||
this.form.validRangeData = this.$refs.tree
|
return {
|
||||||
.getCheckedNodes()
|
id: e.id,
|
||||||
.map((e) => e.id)
|
girdName: e.girdName
|
||||||
.toString();
|
}
|
||||||
|
}
|
||||||
|
)
|
||||||
|
this.girdNameList = validRangeData.map(e=>e.girdName)
|
||||||
|
this.form.validRangeData = JSON.stringify(validRangeData)
|
||||||
|
|
||||||
this.showGrid = false;
|
this.showGrid = false;
|
||||||
},
|
},
|
||||||
|
|
||||||
beforeSelectTree() {
|
beforeSelectTree() {
|
||||||
this.treeObj.checkedKeys = [];
|
this.treeObj.checkedKeys = [];
|
||||||
this.instance
|
this.instance.post(`/app/appgirdinfo/listAll3`, null, null).then((res) => {
|
||||||
.post(`/app/appgirdinfo/listAll3`, null, null)
|
|
||||||
.then((res) => {
|
|
||||||
if (res.code == 0) {
|
if (res.code == 0) {
|
||||||
// res.data.forEach((item)=>{
|
let tree = this.girdToTree(res.data);
|
||||||
// const isChecked = this.girdInfoList.find((checkedId)=>{
|
this.treeObj.treeList = this.addKey(tree)
|
||||||
// return item.id === checkedId
|
|
||||||
// })
|
|
||||||
// if(isChecked) item.checkType = true
|
|
||||||
// })
|
|
||||||
// console.log(res.data)
|
|
||||||
|
|
||||||
this.treeObj.treeList = this.girdToTree(res.data);
|
|
||||||
this.girdInfoList.map((e) => {
|
this.girdInfoList.map((e) => {
|
||||||
this.treeObj.checkedKeys.push(e.id);
|
this.treeObj.checkedKeys.push(e.id);
|
||||||
});
|
});
|
||||||
|
|
||||||
this.$nextTick(() => {
|
this.$nextTick(() => {
|
||||||
this.currCheckedKeys = this.girdInfoList;
|
this.currCheckedKeys = this.girdInfoList.map(v=>v.id)
|
||||||
this.$nextTick(() => {
|
this.$nextTick(() => {
|
||||||
this.$refs.tree?.getCheckedKeys(this.currCheckedKeys);
|
this.$refs.tree?.setCheckedKeys(this.currCheckedKeys);
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
|
|
||||||
|
// 最后一级追加属性
|
||||||
|
addKey(arr) {
|
||||||
|
for (let index = 0; index < arr.length; index++) {
|
||||||
|
const item = arr[index]
|
||||||
|
if (!item.children || !item.children.length) {
|
||||||
|
item.leaf = true
|
||||||
|
} else {
|
||||||
|
this.addKey(item.children)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return arr
|
||||||
|
},
|
||||||
|
|
||||||
|
// el-tree懒加载
|
||||||
|
loadNode(node, resolve) {
|
||||||
|
if (node.level === 0) {
|
||||||
|
return resolve(this.treeObj.treeList);
|
||||||
|
}
|
||||||
|
if (node.level >= 1 || node.data.children && node.data.children.length) {
|
||||||
|
return resolve(node.data.children)
|
||||||
|
} else {
|
||||||
|
return resolve({
|
||||||
|
name: 'girdName',
|
||||||
|
isLeaf: true
|
||||||
|
})
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
onCheckChange(e) {
|
onCheckChange(e) {
|
||||||
// this.$nextTick(() => {
|
this.girdInfoList.forEach((item) => {
|
||||||
// this.$refs.tree.getCheckedKeys().forEach(v => {
|
if(item.id == e.id) {
|
||||||
// this.$refs.tree.setChecked(v, false)
|
console.log(111);
|
||||||
// })
|
this.$refs.tree.setChecked(e.id, false);
|
||||||
// this.$refs.tree.setChecked(e.id, true)
|
} else {
|
||||||
// })
|
console.log(222);
|
||||||
// console.log(e);
|
this.$refs.tree.setChecked(e.id, true);
|
||||||
this.$refs.tree.setChecked(e.id, true);
|
}
|
||||||
|
})
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
computed: {
|
computed: {
|
||||||
|
|||||||
@@ -8,7 +8,7 @@
|
|||||||
<span v-for="(item,index) in timeCheck" :key="index" :class="type == index? 'active':''"
|
<span v-for="(item,index) in timeCheck" :key="index" :class="type == index? 'active':''"
|
||||||
@click="timeChange(index)">{{ item }}</span>
|
@click="timeChange(index)">{{ item }}</span>
|
||||||
</div>
|
</div>
|
||||||
<el-cascader ref="cascader1" v-model="girdId" :options="girdOptions" placeholder="所属网格" size="small"
|
<el-cascader ref="cascader1" v-model="girdArr" :options="girdOptions" placeholder="所属网格" size="small"
|
||||||
:props="defaultProps" :show-all-levels="false" @change="gridChange" clearable></el-cascader>
|
:props="defaultProps" :show-all-levels="false" @change="gridChange" clearable></el-cascader>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@@ -56,7 +56,7 @@
|
|||||||
<template #content>
|
<template #content>
|
||||||
<ai-search-bar>
|
<ai-search-bar>
|
||||||
<template #left>
|
<template #left>
|
||||||
<el-cascader ref="cascader2" v-model="search.girdId" :options="girdOptions" placeholder="所属网格" size="small"
|
<el-cascader ref="cascader2" v-model="girdIdArr" :options="girdOptions" placeholder="所属网格" size="small"
|
||||||
:props="defaultProps" :show-all-levels="false" clearable @change="gridChangeOpt"></el-cascader>
|
:props="defaultProps" :show-all-levels="false" clearable @change="gridChangeOpt"></el-cascader>
|
||||||
<ai-select v-model="search.integralType" placeholder="请选择类型" @change="current=1, getTableData()"
|
<ai-select v-model="search.integralType" placeholder="请选择类型" @change="current=1, getTableData()"
|
||||||
:selectList="dict.getDict('integralType')"/>
|
:selectList="dict.getDict('integralType')"/>
|
||||||
@@ -103,7 +103,7 @@
|
|||||||
</template>
|
</template>
|
||||||
</ai-detail>
|
</ai-detail>
|
||||||
<span slot="footer" class="dialog-footer" center>
|
<span slot="footer" class="dialog-footer" center>
|
||||||
<el-button @click="dialog = false">关闭</el-button>
|
<el-button @click="dialog = false" style="width: 92px">关闭</el-button>
|
||||||
</span>
|
</span>
|
||||||
</el-dialog>
|
</el-dialog>
|
||||||
|
|
||||||
@@ -140,6 +140,7 @@ export default {
|
|||||||
startTime: '',
|
startTime: '',
|
||||||
endTime: '',
|
endTime: '',
|
||||||
},
|
},
|
||||||
|
girdIdArr:[],
|
||||||
page: {
|
page: {
|
||||||
size: 10,
|
size: 10,
|
||||||
total: 0,
|
total: 0,
|
||||||
@@ -156,10 +157,12 @@ export default {
|
|||||||
endTime: '',
|
endTime: '',
|
||||||
data: {},
|
data: {},
|
||||||
girdId: '',
|
girdId: '',
|
||||||
|
girdArr: [],
|
||||||
girdOptions: [],
|
girdOptions: [],
|
||||||
defaultProps: {
|
defaultProps: {
|
||||||
label: 'girdName',
|
label: 'girdName',
|
||||||
value: 'id',
|
value: 'id',
|
||||||
|
children: 'children',
|
||||||
checkStrictly: true,
|
checkStrictly: true,
|
||||||
},
|
},
|
||||||
details: {},
|
details: {},
|
||||||
@@ -247,6 +250,7 @@ export default {
|
|||||||
},
|
},
|
||||||
|
|
||||||
gridChangeOpt(val) {
|
gridChangeOpt(val) {
|
||||||
|
this.girdIdArr = val
|
||||||
this.search.girdId = val?.[val.length - 1]
|
this.search.girdId = val?.[val.length - 1]
|
||||||
this.$refs.cascader2.dropDownVisible = false;
|
this.$refs.cascader2.dropDownVisible = false;
|
||||||
this.getTableData()
|
this.getTableData()
|
||||||
@@ -387,6 +391,7 @@ export default {
|
|||||||
this.myChart2.resize()
|
this.myChart2.resize()
|
||||||
},
|
},
|
||||||
gridChange(val) {
|
gridChange(val) {
|
||||||
|
this.girdArr = val
|
||||||
this.girdId = val?.[val.length - 1]
|
this.girdId = val?.[val.length - 1]
|
||||||
this.$refs.cascader1.dropDownVisible = false;
|
this.$refs.cascader1.dropDownVisible = false;
|
||||||
this.getStatistics()
|
this.getStatistics()
|
||||||
|
|||||||
@@ -103,10 +103,8 @@ export default {
|
|||||||
return [
|
return [
|
||||||
{prop: 'doTime', label: '时间', width: 200},
|
{prop: 'doTime', label: '时间', width: 200},
|
||||||
{prop: "type", label: "类型", dict: "integralDetailType", align: 'center'},
|
{prop: "type", label: "类型", dict: "integralDetailType", align: 'center'},
|
||||||
{
|
{prop: 'changeIntegral', align: 'center', label: '变动积分',render:
|
||||||
prop: 'changeIntegral', align: 'center', label: '变动积分',
|
(h, {row}) => h('p', `${row.integralCalcType == 1 ? '+' : '-'}${row.changeIntegral}`)},
|
||||||
render: (h, {row}) => h('p', `${row.integralCalcType == 1 ? '+' : '-'}${row.changeIntegral}`)
|
|
||||||
},
|
|
||||||
{prop: 'nowIntegral', align: 'center', label: '剩余积分'},
|
{prop: 'nowIntegral', align: 'center', label: '剩余积分'},
|
||||||
{prop: 'eventDesc', label: '事件', width: 500}
|
{prop: 'eventDesc', label: '事件', width: 500}
|
||||||
]
|
]
|
||||||
|
|||||||
Reference in New Issue
Block a user