Merge remote-tracking branch 'origin/dev' into dev

This commit is contained in:
aixianling
2022-08-17 08:44:17 +08:00
4 changed files with 202 additions and 100 deletions

View File

@@ -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)">&nbsp;批量调整积分</el-button> <el-button type="primary" size="small" icon="iconfont iconAdd" @click="changeIntegral('',0)">&nbsp;批量调整积分</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>

View File

@@ -7,7 +7,7 @@
<ai-search-bar> <ai-search-bar>
<template #left> <template #left>
<el-button type="primary" icon="iconfont iconAdd" @click="dialog = true">&nbsp;添加</el-button> <el-button type="primary" icon="iconfont iconAdd" @click="dialog = true">&nbsp;添加</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: {

View File

@@ -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()

View File

@@ -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}
] ]