积分整合
This commit is contained in:
@@ -1,84 +0,0 @@
|
||||
<template>
|
||||
<ai-list>
|
||||
<template slot="title">
|
||||
<ai-title title="积分管理" :isShowBottomBorder="false" :instance="instance" :isShowArea="true" v-model="areaId"
|
||||
@change="changeArea"></ai-title>
|
||||
</template>
|
||||
<template slot="tabs">
|
||||
<el-tabs v-model="currIndex">
|
||||
<el-tab-pane v-for="(tab,i) in tabs" :key="i" :label="tab.label">
|
||||
<component :is="tab.comp" v-if="currIndex === String(i)" :bizType="tab.bizType" :ref="tab.name"
|
||||
:areaId="areaId" :instance="instance" :dict="dict" :permissions="permissions"/>
|
||||
</el-tab-pane>
|
||||
</el-tabs>
|
||||
</template>
|
||||
</ai-list>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import pointsDeclaration from "./pointsDeclaration.vue"
|
||||
import pointsDetails from "./pointsDetails.vue"
|
||||
import pointsAppeal from './pointsAppeal'
|
||||
import {mapState} from 'vuex'
|
||||
import scoreChange from "./scoreChange";
|
||||
|
||||
export default {
|
||||
name: 'AppScoreManage',
|
||||
label: "积分管理",
|
||||
components: {pointsDeclaration, pointsDetails, pointsAppeal, scoreChange},
|
||||
props: {
|
||||
instance: Function,
|
||||
dict: Object,
|
||||
permissions: Function
|
||||
},
|
||||
|
||||
computed: {
|
||||
...mapState(['user']),
|
||||
tabs() {
|
||||
return [
|
||||
// {
|
||||
// label: "积分申报",
|
||||
// name: "pointsDeclaration",
|
||||
// comp: pointsDeclaration,
|
||||
// permission: "app_apppartyfee_record",
|
||||
// bizType: '0'
|
||||
// },
|
||||
// { label: "积分申诉", name: "pointsAppeal", comp: pointsAppeal, permission: "app_apppartyfee_config", bizType: '1'},
|
||||
{
|
||||
label: "积分明细",
|
||||
name: "pointsDetails",
|
||||
comp: pointsDetails,
|
||||
permission: "app_apppartyfee_statistics",
|
||||
bizType: '2'
|
||||
},
|
||||
{
|
||||
label: "积分调整",
|
||||
name: "scoreChange",
|
||||
comp: scoreChange,
|
||||
permission: "",
|
||||
},
|
||||
]
|
||||
}
|
||||
},
|
||||
created() {
|
||||
this.areaId = this.user.info.areaId
|
||||
},
|
||||
methods: {
|
||||
changeArea() {
|
||||
this.$nextTick(() => {
|
||||
this.$refs[this.tabs[Number(this.currIndex)].name][0].getList()
|
||||
})
|
||||
}
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
activeName: "pointsDeclaration",
|
||||
currIndex: '0',
|
||||
areaId: ''
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style lang="scss" scoped>
|
||||
</style>
|
||||
@@ -1,176 +0,0 @@
|
||||
<template>
|
||||
<div class="scoreChange">
|
||||
<ai-list isTabs>
|
||||
<template slot="content">
|
||||
<ai-search-bar bottomBorder>
|
||||
<template slot="left">
|
||||
<el-button type="primary" icon="iconfont iconAdd" @click="dialog=true"
|
||||
:disabled="!permissions('app_appvillagerintegraldetail_change')">添加
|
||||
</el-button>
|
||||
<ai-import :instance="instance" :dict="dict" name="积分调整" type="appvillagerintegraldetail"
|
||||
v-if="permissions('app_appvillagerintegraldetail_change')" @success="getList"/>
|
||||
</template>
|
||||
</ai-search-bar>
|
||||
<ai-table
|
||||
:tableData="tableData"
|
||||
:col-configs="colConfigs"
|
||||
:total="page.total"
|
||||
:current.sync="page.current"
|
||||
:size.sync="page.size"
|
||||
@getList="getList">
|
||||
</ai-table>
|
||||
</template>
|
||||
</ai-list>
|
||||
<ai-dialog
|
||||
title="添加积分调整"
|
||||
:visible.sync="dialog"
|
||||
:destroyOnClose="true"
|
||||
width="720px"
|
||||
@onConfirm="onConfirm"
|
||||
@closed="form={}">
|
||||
<el-form ref="form" :model="form" :rules="rules" label-width="80px">
|
||||
<el-form-item label="选择人员" prop="residentId">
|
||||
<ai-person-select :instance="instance" :customClicker="true"
|
||||
:url="'/app/appresident/list?auditType=1areaId=' + user.info.areaId"
|
||||
:isMultiple="false" dialogTitle="选择" @selectPerson="selectPerson">
|
||||
<template name="option" v-slot:option="{ item }">
|
||||
<span class="iconfont iconProlife">{{ item.name }}</span>
|
||||
<ai-id mode="show" :show-eyes="false" :value="item.idNumber"/>
|
||||
</template>
|
||||
</ai-person-select>
|
||||
</el-form-item>
|
||||
<el-form-item label="调整说明" prop="description">
|
||||
<el-input v-model.trim="form.description" placeholder="请输入..." type="textarea" :rows="4" show-word-limit
|
||||
maxlength="100"></el-input>
|
||||
</el-form-item>
|
||||
<el-form-item label="类型" prop="doType">
|
||||
<el-radio-group v-model="form.doType">
|
||||
<el-radio label="0">加分</el-radio>
|
||||
<el-radio label="1">减分</el-radio>
|
||||
</el-radio-group>
|
||||
</el-form-item>
|
||||
<el-form-item label="积分" prop="changeIntegral">
|
||||
<el-input v-model.trim.num="form.changeIntegral" placeholder="请输入正整数" size="small"></el-input>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
</ai-dialog>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import {mapState} from "vuex"
|
||||
|
||||
export default {
|
||||
name: "scoreChange",
|
||||
props: {
|
||||
instance: Function,
|
||||
dict: Object,
|
||||
permissions: Function,
|
||||
areaId: String
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
tableData: [],
|
||||
page: {
|
||||
current: 1,
|
||||
size: 10,
|
||||
total: 10
|
||||
},
|
||||
form: {},
|
||||
dialog: false,
|
||||
personList: [],
|
||||
}
|
||||
},
|
||||
computed: {
|
||||
...mapState(["user"]),
|
||||
rules() {
|
||||
return {
|
||||
residentId: [{required: true, message: '请选择人员', trigger: 'blur'},],
|
||||
description: [{required: true, message: '请输入调整说明', trigger: 'blur'},],
|
||||
doType: [{required: true, message: '请输入调整说明', trigger: 'change'},],
|
||||
changeIntegral: [
|
||||
{
|
||||
required: true, validator: (rule, value, callback) => {
|
||||
if (!/^[1-9]\d*$/.test(value)) {
|
||||
callback(new Error('请输入正整数'))
|
||||
} else {
|
||||
callback();
|
||||
}
|
||||
}, trigger: 'blur'
|
||||
},],
|
||||
}
|
||||
},
|
||||
colConfigs() {
|
||||
return [
|
||||
{prop: "residentName", label: "姓名"},
|
||||
{prop: "description", label: "调整说明"},
|
||||
{
|
||||
prop: "changeIntegral", label: "类型", align: "center",
|
||||
render: (h, {row}) => [< span> {+row.changeIntegral > 0 ? "加分" : '减分'
|
||||
} < /span>]
|
||||
},
|
||||
{
|
||||
prop: "changeIntegral",
|
||||
label: "积分",
|
||||
align: "center",
|
||||
render: (h, {row}) => [
|
||||
<span>{row.changeIntegral > 0 ? `+${row.changeIntegral}` : `${row.changeIntegral}`}</span>]
|
||||
},
|
||||
{prop: "doTime", label: "操作时间"},
|
||||
{prop: "declareObjName", label: "操作人", align: "center"},
|
||||
]
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
selectPerson(val) {
|
||||
if (val) {
|
||||
this.form.residentId = val.id
|
||||
this.personList = [{...val}]
|
||||
} else {
|
||||
this.form.residentId = ""
|
||||
this.personList = []
|
||||
}
|
||||
},
|
||||
onConfirm() {
|
||||
this.$refs['form'].validate(valid => {
|
||||
if (valid) {
|
||||
this.instance.post(`/app/appvillagerintegraldetail/changeIntegral`, {
|
||||
...this.form,
|
||||
changeIntegral: this.form.doType == 0 ? `+${this.form.changeIntegral}` : `-${this.form.changeIntegral}`
|
||||
}).then(res => {
|
||||
if (res.code == 0) {
|
||||
this.$message.success("添加成功")
|
||||
this.dialog = false
|
||||
this.getList()
|
||||
}
|
||||
})
|
||||
}
|
||||
})
|
||||
},
|
||||
getList() {
|
||||
this.instance.post(`/app/appvillagerintegraldetail/list`, null, {
|
||||
params: {
|
||||
...this.page,
|
||||
areaId: this.areaId,
|
||||
doType: 2
|
||||
}
|
||||
}).then(res => {
|
||||
if (res?.data) {
|
||||
this.tableData = res.data.records
|
||||
this.page.total = res.data.total
|
||||
}
|
||||
})
|
||||
}
|
||||
},
|
||||
created() {
|
||||
this.getList()
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style lang="scss" scoped>
|
||||
.scoreChange {
|
||||
height: 100%;
|
||||
overflow: auto;
|
||||
}
|
||||
</style>
|
||||
@@ -1,611 +0,0 @@
|
||||
<template>
|
||||
<section class="pointsDeclaration">
|
||||
<ai-list isTabs>
|
||||
<template slot="content">
|
||||
<ai-search-bar bottomBorder>
|
||||
<template slot="left">
|
||||
<el-button type="primary" icon="iconfont iconAdd" @click="onAdd" v-if="$permissions('app_appvillagerintegraldeclare_edit')">代申诉</el-button>
|
||||
<el-button icon="iconfont iconEdit" @click="batchAduit()" :disabled="!Boolean(selectionList.length)" v-if="$permissions('app_appvillagerintegraldeclare_edit')">批量审核</el-button>
|
||||
<ai-select
|
||||
v-model="search.status"
|
||||
@change="page.current = 1, getList()"
|
||||
placeholder="发布状态"
|
||||
:selectList="dict.getDict('integralDeclareStatus')">
|
||||
</ai-select>
|
||||
<div class="times_div">
|
||||
<p class="times">申诉时间</p>
|
||||
<el-date-picker
|
||||
v-model="search.declareTimeStart"
|
||||
type="date"
|
||||
size="small"
|
||||
@change="page.current = 1,getList()"
|
||||
value-format="yyyy-MM-dd HH:mm:ss"
|
||||
placeholder="开始日期">
|
||||
</el-date-picker>
|
||||
<el-date-picker
|
||||
v-model="search.declareTimeEnd"
|
||||
type="date"
|
||||
size="small"
|
||||
@change="page.current = 1,getList()"
|
||||
value-format="yyyy-MM-dd HH:mm:ss"
|
||||
placeholder="结束日期">
|
||||
</el-date-picker>
|
||||
</div>
|
||||
</template>
|
||||
<template slot="right">
|
||||
<el-input
|
||||
v-model="search.familyName"
|
||||
class="search-input"
|
||||
size="mini"
|
||||
placeholder="申诉人/申诉对象/..."
|
||||
clearable
|
||||
v-throttle="() => {page.current = 1, getList()}"
|
||||
@clear="page.current = 1, getList()"
|
||||
suffix-icon="iconfont iconSearch" />
|
||||
</template>
|
||||
</ai-search-bar>
|
||||
<ai-table
|
||||
:tableData="tableData"
|
||||
:col-configs="colConfigs"
|
||||
:total="page.total"
|
||||
:current.sync="page.current"
|
||||
:size.sync="page.size"
|
||||
@getList="getList"
|
||||
@selection-change="handleSelectionChange"
|
||||
>
|
||||
<el-table-column slot="selection" type="selection" width="55" :selectable="(row, index)=>{
|
||||
if(row.status==0){
|
||||
return true
|
||||
}else{
|
||||
return false
|
||||
}
|
||||
}"></el-table-column>
|
||||
<el-table-column slot="options" label="操作" align="center">
|
||||
<template slot-scope="{ row }">
|
||||
<span
|
||||
class="iconfont iconEdit icon-color89B"
|
||||
v-if="row.status === '0'&&$permissions('app_appvillagerintegraldeclare_edit')"
|
||||
title="编辑"
|
||||
@click="toEdit(row)"
|
||||
></span>
|
||||
<span
|
||||
class="iconfont iconShow icon-color89B"
|
||||
v-if="row.status !== '0'&&$permissions('app_appvillagerintegraldeclare_detail')"
|
||||
title="详情"
|
||||
@click="toEdit(row)"
|
||||
></span>
|
||||
<!-- <span
|
||||
class="iconfont iconDelete icon-color89B"
|
||||
v-if="$permissions('app_appofficialdocumentinfo_del')"
|
||||
title="删除"
|
||||
@click="remove(row.id)"
|
||||
></span> -->
|
||||
</template>
|
||||
</el-table-column>
|
||||
</ai-table>
|
||||
</template>
|
||||
</ai-list>
|
||||
<ai-dialog
|
||||
title="积分代申诉"
|
||||
:visible.sync="dialog.visibleAdd"
|
||||
:customFooter="true"
|
||||
:destroyOnClose="true"
|
||||
width="720px"
|
||||
@close="init('ruleForm')"
|
||||
>
|
||||
<div class="form_div">
|
||||
<el-form
|
||||
ref="ruleForm"
|
||||
:model="dialogInfo"
|
||||
:rules="formRules"
|
||||
size="small"
|
||||
label-suffix=":"
|
||||
label-width="140px"
|
||||
>
|
||||
<el-form-item label="代申诉家庭" prop="users">
|
||||
<ai-person-select :customClicker="true" :isMultiple="true" :chooseUserList.sync="dialogInfo.users" :instance="instance" url="/app/appvillagerintegralfamilymember/list" >
|
||||
<template name="option" v-slot:option="{ item }">
|
||||
<span class="iconfont iconProlife">{{ item.name }}</span>
|
||||
<ai-id mode="show" :show-eyes="false" :value="item.idNumber" />
|
||||
</template>
|
||||
</ai-person-select>
|
||||
</el-form-item>
|
||||
<el-form-item label="代申诉说明" prop="declareDescription">
|
||||
<el-input type="textarea" :rows="3" placeholder="请输入…" maxlength="100" show-word-limit v-model="dialogInfo.declareDescription"></el-input>
|
||||
</el-form-item>
|
||||
<el-form-item label="照片" prop="fileList">
|
||||
<div class="upload">
|
||||
<ai-uploader :instance="instance" v-model="dialogInfo.fileList" :limit="9" ></ai-uploader>
|
||||
</div>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
</div>
|
||||
<div class="dialog-footer" slot="footer">
|
||||
<el-button @click="dialog.visibleAdd=false" size="medium">取消</el-button>
|
||||
<el-button @click="declare('ruleForm')" type="primary" size="medium">提交</el-button>
|
||||
</div>
|
||||
</ai-dialog>
|
||||
<ai-dialog
|
||||
title="申诉审核"
|
||||
:visible.sync="dialog.visibleDetail"
|
||||
:customFooter="true"
|
||||
:destroyOnClose="true"
|
||||
width="720px"
|
||||
@close="init('rules')"
|
||||
>
|
||||
<div class="form_content" v-if="!isBatch">
|
||||
<div class="form_flex form_info">
|
||||
<div>
|
||||
<span class="form_label">申诉人:</span>
|
||||
<span class="form_value">{{rowInfo.declareName}}</span>
|
||||
</div>
|
||||
<div>
|
||||
<span class="form_label">申诉对象:</span>
|
||||
<span class="form_value">{{rowInfo.declareObjName}}</span>
|
||||
</div>
|
||||
<div>
|
||||
<span class="form_label">户主:</span>
|
||||
<span class="form_value">{{rowInfo.familyName}}</span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form_info">
|
||||
<span class="form_label">申诉说明:</span>
|
||||
<span class="form_value">{{rowInfo.declareDescription}}</span>
|
||||
</div>
|
||||
<div class="form_info">
|
||||
<span class="form_label">申诉时间:</span>
|
||||
<span class="form_value">{{rowInfo.declareTime}}</span>
|
||||
</div>
|
||||
<div class="form_info">
|
||||
<span class="form_label">照片:</span>
|
||||
<span class="form_value">
|
||||
<ai-uploader :disabled="true" :instance="instance" v-model="rowInfo.fileList" :limit="9" ></ai-uploader>
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form_div">
|
||||
<el-form
|
||||
ref="rules"
|
||||
:model="dialogDetail"
|
||||
:rules="formRules"
|
||||
size="small"
|
||||
label-suffix=":"
|
||||
v-show="rowInfo.status==0"
|
||||
label-width="90px"
|
||||
>
|
||||
<el-form-item label="类型" prop="doType">
|
||||
<el-radio-group v-model="dialogDetail.doType" @change="changeDoType">
|
||||
<el-radio label="1">加分</el-radio>
|
||||
<el-radio label="0">扣分</el-radio>
|
||||
<el-radio label="2">拒绝</el-radio>
|
||||
</el-radio-group>
|
||||
</el-form-item>
|
||||
<el-form-item label="事项" prop="ruleId" v-if='dialogDetail.doType!=2'>
|
||||
<el-select v-model="dialogDetail.ruleId" placeholder="请选择..." @change="ruleChange">
|
||||
<el-option
|
||||
v-for="(item,i) in rulesList"
|
||||
:key="i"
|
||||
:label="item.ruleName"
|
||||
:value="item.id"
|
||||
></el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item label="积分" prop="doIntegral" v-if='dialogDetail.doType!=2'>
|
||||
<el-col :span="1.5" style="margin-right: 8px;">{{dialogDetail.doType==0? '减少' :'增加'}}</el-col>
|
||||
<el-col :span="6" style="margin-right: 8px;width:120px;"><el-input type="number" v-model="dialogDetail.doIntegral" :placeholder="placeholder" :disabled="integralEdit"></el-input></el-col>
|
||||
<el-col :span="1" style="margin-right: 8px;">分</el-col>
|
||||
</el-form-item>
|
||||
<el-form-item label="备注说明">
|
||||
<el-input type="textarea" :rows="3" maxlength="100" placeholder="请输入…" show-word-limit v-model="dialogDetail.remark"></el-input>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
<ai-wrapper
|
||||
label-width="70px"
|
||||
v-if="rowInfo.status!=0"
|
||||
:columnsNumber="1">
|
||||
<ai-info-item label="类型:"><span :style="{color:colorList[rowInfo.status]}" >{{dict.getLabel('integralDeclareStatus', rowInfo.status)}}</span></ai-info-item>
|
||||
<ai-info-item label="事项:" v-if='rowInfo.doType!=2'><span >{{rowInfo.ruleName}}</span></ai-info-item>
|
||||
<ai-info-item label="积分:" v-if='rowInfo.doType!=2'>{{rowInfo.doType==0? '减少' :'增加'}}<span style="color:#2266FF">{{Math.abs(rowInfo.doIntegral)}}</span>分</ai-info-item>
|
||||
<ai-info-item label="备注说明:"><span>{{rowInfo.remark||'-'}}</span></ai-info-item>
|
||||
</ai-wrapper>
|
||||
</div>
|
||||
<div class="dialog-footer" slot="footer" v-if="rowInfo.status==0">
|
||||
<el-button @click="dialog.visibleDetail=false" size="medium">取消</el-button>
|
||||
<el-button @click="onConfirm('rules')" type="primary" size="medium">提交</el-button>
|
||||
</div>
|
||||
</ai-dialog>
|
||||
</section>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import {mapState} from 'vuex';
|
||||
export default {
|
||||
name: "pointsAppeal",
|
||||
|
||||
props: {
|
||||
instance: Function,
|
||||
dict: Object,
|
||||
bizType:String,
|
||||
areaId:String
|
||||
},
|
||||
|
||||
data() {
|
||||
var integral = (rule, value, callback) => {
|
||||
if (value) {
|
||||
if (/^[1-9]\d*$/.test(value)) {
|
||||
if(!this.integralEdit){
|
||||
if(Number(value)>=this.sectionNum.min&&Number(value)<=this.sectionNum.max){
|
||||
callback();
|
||||
}else{
|
||||
callback(new Error(`请输入${this.sectionNum.min}至${this.sectionNum.max}之间的正整数积分`));
|
||||
}
|
||||
}else{
|
||||
callback();
|
||||
}
|
||||
|
||||
} else {
|
||||
callback(new Error('请输入正整数'));
|
||||
}
|
||||
} else {
|
||||
callback(new Error('请输入正整数'));
|
||||
}
|
||||
};
|
||||
return {
|
||||
search: {
|
||||
status:'',
|
||||
familyName:'',
|
||||
declareTimeStart:null,
|
||||
declareTimeEnd:null
|
||||
},
|
||||
page:{
|
||||
current: 1,
|
||||
size: 10,
|
||||
total:0
|
||||
},
|
||||
colConfigs: [
|
||||
{ slot: "selection", label: "", align: "center" },
|
||||
{ prop: "declareName", label: "申诉人", align: "center" },
|
||||
{ prop: "declareObjName", label: "申诉对象", align: "center",hide:this.bizType==1 },
|
||||
{
|
||||
prop: "familyName",
|
||||
label: "户主",
|
||||
},
|
||||
{
|
||||
prop: "declareDescription",
|
||||
label: "申诉说明",
|
||||
align: "left",
|
||||
width:300
|
||||
},
|
||||
{
|
||||
prop: "declareTime",
|
||||
label: "申诉时间",
|
||||
align: "left",
|
||||
width:150
|
||||
},
|
||||
{
|
||||
prop: "declareName",
|
||||
label: "操作人",
|
||||
align: "center",
|
||||
},
|
||||
{
|
||||
prop: "status",
|
||||
label: "状态",
|
||||
align: "center",
|
||||
render: (h, {row}) => {
|
||||
return h('span', {style: {color: this.dict.getColor('integralDeclareStatus', row.status)}}, this.dict.getLabel('integralDeclareStatus', row.status))
|
||||
},
|
||||
},
|
||||
{ slot: "options", label: "操作", align: "center" },
|
||||
],
|
||||
tableData: [],
|
||||
dialog: {
|
||||
visibleAdd: false,
|
||||
visibleDetail: false,
|
||||
title:'积分代申诉'
|
||||
},
|
||||
dialogInfo: {
|
||||
users: [],
|
||||
reportIds:[],
|
||||
declareDescription: "",
|
||||
fileList: [],
|
||||
},
|
||||
dialogDetail: {
|
||||
doType: '1',
|
||||
ruleId: '',
|
||||
doIntegral: '',
|
||||
remark: '',
|
||||
aduitIds:[],
|
||||
ruleName:''
|
||||
},
|
||||
isBatch:false,
|
||||
rulesList:[],
|
||||
rowInfo:{},
|
||||
formRules: {
|
||||
users: [{ required: true, message: "请选择人员", trigger: "change" },],
|
||||
declareDescription: [{ required: true, message: "代申诉说明", trigger: "blur" }],
|
||||
// fileList: [{ required: true, message: "请上传照片", trigger: "blur" },],
|
||||
ruleId: [{ required: true, message: "请选择事项", trigger: "blur" }],
|
||||
doIntegral: [{ required: true, validator: integral, trigger: "blur" }],
|
||||
doType:[{ required: true, message: "请选择类型", trigger: "change" }]
|
||||
},
|
||||
selectionList:[],
|
||||
integralEdit:false,
|
||||
sectionNum:{
|
||||
min:null,
|
||||
max:null
|
||||
},
|
||||
placeholder:'请输入...'
|
||||
};
|
||||
},
|
||||
computed:{
|
||||
colorList(){
|
||||
return {
|
||||
'0':'#FF8822',
|
||||
'1':'#2EA222',
|
||||
'2':'#FF4466'
|
||||
}
|
||||
}
|
||||
},
|
||||
created() {
|
||||
this.dict
|
||||
.load([
|
||||
'integralDeclareStatus',
|
||||
'integralDeclareDoType'
|
||||
]).then(() => {
|
||||
this.getList();
|
||||
});
|
||||
},
|
||||
|
||||
methods: {
|
||||
getList() {
|
||||
this.instance.post(`/app/appvillagerintegraldeclare/list`, null, {
|
||||
params: {
|
||||
...this.search,
|
||||
...this.page,
|
||||
bizType:this.bizType,
|
||||
areaId:this.areaId
|
||||
},
|
||||
})
|
||||
.then((res) => {
|
||||
if (res.code == 0) {
|
||||
this.tableData = res.data.records;
|
||||
this.page.total = res.data.total;
|
||||
}
|
||||
});
|
||||
},
|
||||
handleSelectionChange(val){
|
||||
this.selectionList=val
|
||||
this.dialogDetail.aduitIds=[];
|
||||
val.forEach(e=>{
|
||||
this.dialogDetail.aduitIds.push(e.id);
|
||||
})
|
||||
},
|
||||
// getSelect(val){
|
||||
// for(let e of val){
|
||||
// this.dialogInfo.reportIds.push(e.id)
|
||||
// }
|
||||
// },
|
||||
getColor(status){
|
||||
return this.dict.getColor('integralDeclareStatus', status)
|
||||
},
|
||||
onChange(val){
|
||||
|
||||
},
|
||||
declare(formName){
|
||||
this.dialogInfo.reportIds=[];
|
||||
for(let e of this.dialogInfo.users){
|
||||
this.dialogInfo.reportIds.push(e.id)
|
||||
};
|
||||
this.$refs[formName].validate((valid) => {
|
||||
if (valid) {
|
||||
this.instance.post("/app/appvillagerintegraldeclare/addOrUpdate", {
|
||||
...this.dialogInfo,
|
||||
bizType:this.bizType
|
||||
}, null).then(res => {
|
||||
if (res.code==0) {
|
||||
this.dialog.visibleAdd=false;
|
||||
this.getList();
|
||||
}
|
||||
})
|
||||
} else {
|
||||
return false;
|
||||
}
|
||||
});
|
||||
},
|
||||
init(formName){
|
||||
this.$refs[formName].clearValidate();
|
||||
this.dialogDetail = {
|
||||
doType: '1',
|
||||
ruleId: '',
|
||||
doIntegral: '',
|
||||
remark: '',
|
||||
aduitIds:[],
|
||||
ruleName:''
|
||||
}
|
||||
this.dialogInfo= {
|
||||
users: [],
|
||||
reportIds:[],
|
||||
declareDescription: "",
|
||||
fileList: [],
|
||||
};
|
||||
this.rulesList = [];
|
||||
},
|
||||
//批量审核
|
||||
batchAduit(){
|
||||
this.isBatch=true;
|
||||
this.rowInfo.status=0;
|
||||
this.dialog.visibleDetail = true;
|
||||
this.getRules('1')
|
||||
},
|
||||
getRowDetail(row){
|
||||
this.instance.post(`/app/appvillagerintegraldeclare/queryDetailById`, null, {
|
||||
params: {
|
||||
id:row.id
|
||||
},
|
||||
}).then((res) => {
|
||||
if (res.code == 0) {
|
||||
this.rowInfo = {...res.data}
|
||||
this.dialog.visibleDetail = true;
|
||||
this.dialogDetail.aduitIds=[];
|
||||
this.dialogDetail.aduitIds.push(row.id);
|
||||
|
||||
}
|
||||
});
|
||||
},
|
||||
toEdit(row) {
|
||||
this.isBatch=false;
|
||||
this.getRowDetail(row);
|
||||
this.getRules('1')
|
||||
},
|
||||
changeDoType(val){
|
||||
this.dialogDetail.ruleId="";
|
||||
this.dialogDetail.ruleName = "";
|
||||
this.dialogDetail.doIntegral = "";
|
||||
this.placeholder = '请输入...';
|
||||
this.$refs.rules.clearValidate();
|
||||
this.getRules(val)
|
||||
},
|
||||
ruleChange(val){
|
||||
let item = this.rulesList.find(e => e.id == val);
|
||||
this.dialogDetail.doIntegral='';
|
||||
this.$refs.rules.clearValidate();
|
||||
if(item){
|
||||
//固定区间
|
||||
this.dialogDetail.ruleName = item.ruleName;
|
||||
if(item.integralValueType==0){
|
||||
this.dialogDetail.doIntegral = Math.abs(item.integral);
|
||||
this.integralEdit = true;
|
||||
}else{
|
||||
this.integralEdit = false;
|
||||
if(Math.abs(item.integralEnd)>Math.abs(item.integralStart)){
|
||||
this.sectionNum.min = Math.abs(item.integralStart);
|
||||
this.sectionNum.max = Math.abs(item.integralEnd);
|
||||
}else{
|
||||
this.sectionNum.max = Math.abs(item.integralStart);
|
||||
this.sectionNum.min = Math.abs(item.integralEnd);
|
||||
}
|
||||
this.placeholder = `${this.sectionNum.min}~${this.sectionNum.max}`
|
||||
}
|
||||
}
|
||||
},
|
||||
//事项查询
|
||||
getRules(integralType){
|
||||
this.instance.post(`/app/appvillagerintegralrule/list`, null, {
|
||||
params: {
|
||||
integralType,
|
||||
size:10000000
|
||||
},
|
||||
}).then((res) => {
|
||||
if (res.code == 0) {
|
||||
this.rulesList = res.data.records.filter(e=> e.ruleStatus == 1);
|
||||
}
|
||||
});
|
||||
},
|
||||
remove(id) {
|
||||
this.$confirm("确定删除该公文及其相关的流转信息?").then(() => {
|
||||
this.instance
|
||||
.post(`/app/appofficialdocumentinfo/delete?ids=${id}`)
|
||||
.then((res) => {
|
||||
if (res.code == 0) {
|
||||
this.$message.success("删除成功!");
|
||||
this.getList();
|
||||
}
|
||||
});
|
||||
});
|
||||
},
|
||||
onReset() {
|
||||
Object.keys(this.search).forEach(e => {
|
||||
this.search[e] = "";
|
||||
});
|
||||
this.search.declareTimeStart = null;
|
||||
this.search.declareTimeEnd = null;
|
||||
this.getList();
|
||||
},
|
||||
|
||||
onAdd() {
|
||||
this.dialog.visibleAdd = true;
|
||||
},
|
||||
|
||||
onConfirm(formName) {
|
||||
this.$refs[formName].validate(v =>{
|
||||
if(v){
|
||||
this.instance.post("/app/appvillagerintegraldeclare/aduit", {
|
||||
...this.dialogDetail,
|
||||
}, null).then(res => {
|
||||
if (res.code==0) {
|
||||
this.dialog.visibleDetail=false;
|
||||
this.$message.success("提交成功!");
|
||||
this.dialogDetail.aduitIds=[];
|
||||
this.getList();
|
||||
}
|
||||
})
|
||||
}else{
|
||||
return false
|
||||
}
|
||||
})
|
||||
},
|
||||
|
||||
|
||||
},
|
||||
};
|
||||
</script>
|
||||
|
||||
<style lang="scss">
|
||||
.pointsDeclaration {
|
||||
height: 100%;
|
||||
overflow: auto;
|
||||
background: #f3f6f9;
|
||||
.times_div{
|
||||
display: flex;
|
||||
align-items: center;
|
||||
.times{
|
||||
display: block;
|
||||
width: 72px;
|
||||
height: 30px;
|
||||
line-height: 30px;
|
||||
text-align: center;
|
||||
background: #F5F5F5;
|
||||
border-radius: 2px 0px 0px 2px;
|
||||
border: 1px solid #D0D4DC;
|
||||
font-size: 14px;
|
||||
color:#666666;
|
||||
}
|
||||
}
|
||||
.form_content{
|
||||
border-bottom:1px solid #eee;
|
||||
.form_flex{
|
||||
display: flex;
|
||||
div{
|
||||
flex: 1;
|
||||
}
|
||||
}
|
||||
.form_info{
|
||||
margin-bottom: 8px;
|
||||
}
|
||||
.form_label{
|
||||
display: inline-block;
|
||||
color: #999;
|
||||
vertical-align: top;
|
||||
}
|
||||
.form_value{
|
||||
display: inline-block;
|
||||
color: #333;
|
||||
width: calc(100% - 80px);
|
||||
}
|
||||
}
|
||||
.form_div{
|
||||
padding-top:24px;
|
||||
}
|
||||
.status-0 {
|
||||
color: #ff8822;
|
||||
}
|
||||
|
||||
.status-1 {
|
||||
color: #2266ff;
|
||||
}
|
||||
|
||||
.status-2 {
|
||||
color: #999999;
|
||||
}
|
||||
}
|
||||
</style>
|
||||
@@ -1,603 +0,0 @@
|
||||
<template>
|
||||
<section class="pointsDeclaration">
|
||||
<ai-list isTabs>
|
||||
<template slot="content">
|
||||
<ai-search-bar bottomBorder>
|
||||
<template slot="left">
|
||||
<el-button type="primary" icon="iconfont iconAdd" @click="onAdd" v-if="$permissions('app_appvillagerintegraldeclare_edit')">代申报</el-button>
|
||||
<el-button icon="iconfont iconEdit" @click="batchAduit()" :disabled="!Boolean(selectionList.length)"v-if="$permissions('app_appvillagerintegraldeclare_edit')">批量审核</el-button>
|
||||
<ai-select
|
||||
v-model="search.status"
|
||||
@change="page.current = 1, getList()"
|
||||
placeholder="发布状态"
|
||||
:selectList="dict.getDict('integralDeclareStatus')">
|
||||
</ai-select>
|
||||
<div class="times_div">
|
||||
<p class="times">申报时间</p>
|
||||
<el-date-picker
|
||||
v-model="search.declareTimeStart"
|
||||
type="date"
|
||||
size="small"
|
||||
@change="page.current = 1,getList()"
|
||||
value-format="yyyy-MM-dd HH:mm:ss"
|
||||
placeholder="开始日期">
|
||||
</el-date-picker>
|
||||
<el-date-picker
|
||||
v-model="search.declareTimeEnd"
|
||||
type="date"
|
||||
size="small"
|
||||
@change="page.current = 1,getList()"
|
||||
value-format="yyyy-MM-dd HH:mm:ss"
|
||||
placeholder="结束日期">
|
||||
</el-date-picker>
|
||||
</div>
|
||||
</template>
|
||||
<template slot="right">
|
||||
<el-input
|
||||
v-model="search.familyName"
|
||||
class="search-input"
|
||||
size="mini"
|
||||
placeholder="申诉人/申诉对象/..."
|
||||
clearable
|
||||
v-throttle="() => {page.current = 1, getList()}"
|
||||
@clear="page.current = 1, getList()"
|
||||
suffix-icon="iconfont iconSearch" />
|
||||
</template>
|
||||
</ai-search-bar>
|
||||
<ai-table
|
||||
:tableData="tableData"
|
||||
:col-configs="colConfigs"
|
||||
:total="page.total"
|
||||
:current.sync="page.current"
|
||||
:size.sync="page.size"
|
||||
@getList="getList"
|
||||
@selection-change="handleSelectionChange">
|
||||
<el-table-column slot="selection" type="selection" width="55" :selectable="(row, index)=>{
|
||||
if(row.status==0){
|
||||
return true
|
||||
}else{
|
||||
return false
|
||||
}
|
||||
}"></el-table-column>
|
||||
<el-table-column slot="options" label="操作" align="center">
|
||||
<template slot-scope="{ row }">
|
||||
<div class="table-options">
|
||||
<el-button
|
||||
type="text"
|
||||
:disabled="row.status === '0' || $permissions('app_appvillagerintegraldeclare_edit')"
|
||||
title="编辑"
|
||||
@click="toEdit(row)">
|
||||
编辑
|
||||
</el-button>
|
||||
<el-button
|
||||
type="text"
|
||||
:disabled="$permissions('app_appvillagerintegraldeclare_detail')"
|
||||
title="详情"
|
||||
@click="toEdit(row)">
|
||||
详情
|
||||
</el-button>
|
||||
</div>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</ai-table>
|
||||
</template>
|
||||
</ai-list>
|
||||
<ai-dialog
|
||||
title="积分代申报"
|
||||
:visible.sync="dialog.visibleAdd"
|
||||
:customFooter="true"
|
||||
:destroyOnClose="true"
|
||||
width="720px"
|
||||
@close="init('ruleForm')">
|
||||
<div class="form_div">
|
||||
<el-form
|
||||
ref="ruleForm"
|
||||
:model="dialogInfo"
|
||||
:rules="formRules"
|
||||
size="small"
|
||||
label-suffix=":"
|
||||
label-width="140px">
|
||||
<el-form-item label="代申报家庭" prop="users">
|
||||
<ai-person-select :customClicker="true" :isMultiple="true" :chooseUserList.sync="dialogInfo.users" :instance="instance" url="/app/appvillagerintegralfamilymember/list" >
|
||||
<template name="option" v-slot:option="{ item }">
|
||||
<span class="iconfont iconProlife">{{ item.name }}</span>
|
||||
<ai-id mode="show" :show-eyes="false" :value="item.idNumber" />
|
||||
</template>
|
||||
</ai-person-select>
|
||||
</el-form-item>
|
||||
<el-form-item label="代申报说明" prop="declareDescription">
|
||||
<el-input type="textarea" :rows="3" placeholder="请输入…" maxlength="100" show-word-limit v-model="dialogInfo.declareDescription"></el-input>
|
||||
</el-form-item>
|
||||
<el-form-item label="照片" prop="fileList">
|
||||
<div class="upload">
|
||||
<ai-uploader :instance="instance" v-model="dialogInfo.fileList" :limit="9" ></ai-uploader>
|
||||
</div>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
</div>
|
||||
<div class="dialog-footer" slot="footer">
|
||||
<el-button @click="dialog.visibleAdd=false" size="medium">取消</el-button>
|
||||
<el-button @click="declare('ruleForm')" type="primary" size="medium">提交</el-button>
|
||||
</div>
|
||||
</ai-dialog>
|
||||
<ai-dialog
|
||||
title="申报审核"
|
||||
:visible.sync="dialog.visibleDetail"
|
||||
:customFooter="true"
|
||||
:destroyOnClose="true"
|
||||
width="720px"
|
||||
@close="init('rules')">
|
||||
<div class="form_content" v-if="!isBatch">
|
||||
<div class="form_flex form_info">
|
||||
<div>
|
||||
<span class="form_label">申报人:</span>
|
||||
<span class="form_value">{{rowInfo.declareName}}</span>
|
||||
</div>
|
||||
<div>
|
||||
<span class="form_label">申报对象:</span>
|
||||
<span class="form_value">{{rowInfo.declareObjName}}</span>
|
||||
</div>
|
||||
<div>
|
||||
<span class="form_label">户主:</span>
|
||||
<span class="form_value">{{rowInfo.familyName}}</span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form_info">
|
||||
<span class="form_label">申报说明:</span>
|
||||
<span class="form_value">{{rowInfo.declareDescription}}</span>
|
||||
</div>
|
||||
<div class="form_info">
|
||||
<span class="form_label">申报时间:</span>
|
||||
<span class="form_value">{{rowInfo.declareTime}}</span>
|
||||
</div>
|
||||
<div class="form_info">
|
||||
<span class="form_label">照片:</span>
|
||||
<span class="form_value">
|
||||
<ai-uploader :disabled="true" :instance="instance" v-model="rowInfo.fileList" :limit="9" ></ai-uploader>
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form_div">
|
||||
<el-form
|
||||
ref="rules"
|
||||
:model="dialogDetail"
|
||||
:rules="formRules"
|
||||
size="small"
|
||||
label-suffix=":"
|
||||
v-show="rowInfo.status==0"
|
||||
label-width="90px"
|
||||
>
|
||||
<el-form-item label="类型" prop="doType">
|
||||
<el-radio-group v-model="dialogDetail.doType" @change="changeDoType">
|
||||
<el-radio label="1">加分</el-radio>
|
||||
<el-radio label="0">扣分</el-radio>
|
||||
<el-radio label="2">拒绝</el-radio>
|
||||
</el-radio-group>
|
||||
</el-form-item>
|
||||
<el-form-item label="事项" prop="ruleId" v-if='dialogDetail.doType!=2'>
|
||||
<el-select v-model="dialogDetail.ruleId" placeholder="请选择..." @change="ruleChange">
|
||||
<el-option
|
||||
v-for="(item,i) in rulesList"
|
||||
:key="i"
|
||||
:label="item.ruleName"
|
||||
:value="item.id"
|
||||
></el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item label="积分" prop="doIntegral" v-if='dialogDetail.doType!=2'>
|
||||
<el-col :span="1.5" style="margin-right: 8px;">{{dialogDetail.doType==0? '减少' :'增加'}}</el-col>
|
||||
<el-col :span="6" style="margin-right: 8px;width:120px;"><el-input type="number" v-model="dialogDetail.doIntegral" :placeholder="placeholder" :disabled="integralEdit"></el-input></el-col>
|
||||
<el-col :span="1" style="margin-right: 8px;">分</el-col>
|
||||
</el-form-item>
|
||||
<el-form-item label="备注说明">
|
||||
<el-input type="textarea" :rows="3" maxlength="100" placeholder="请输入…" show-word-limit v-model="dialogDetail.remark"></el-input>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
<ai-wrapper
|
||||
label-width="70px"
|
||||
v-if="rowInfo.status!=0"
|
||||
:columnsNumber="1">
|
||||
<ai-info-item label="类型:"><span :style="{color:colorList[rowInfo.status]}" >{{dict.getLabel('integralDeclareStatus', rowInfo.status)}}</span></ai-info-item>
|
||||
<ai-info-item label="事项:" v-if='rowInfo.doType!=2'><span >{{rowInfo.ruleName}}</span></ai-info-item>
|
||||
<ai-info-item label="积分:" v-if='rowInfo.doType!=2'>{{rowInfo.doType==0? '减少' :'增加'}}<span style="color:#2266FF">{{Math.abs(rowInfo.doIntegral)}}</span>分</ai-info-item>
|
||||
<ai-info-item label="备注说明:"><span>{{rowInfo.remark||'-'}}</span></ai-info-item>
|
||||
</ai-wrapper>
|
||||
</div>
|
||||
<div class="dialog-footer" slot="footer" v-if="rowInfo.status==0">
|
||||
<el-button @click="dialog.visibleDetail=false" size="medium">取消</el-button>
|
||||
<el-button @click="onConfirm('rules')" type="primary" size="medium">提交</el-button>
|
||||
</div>
|
||||
</ai-dialog>
|
||||
</section>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import {mapState} from 'vuex';
|
||||
export default {
|
||||
name: "pointsDeclaration",
|
||||
|
||||
props: {
|
||||
instance: Function,
|
||||
dict: Object,
|
||||
bizType:String,
|
||||
areaId:String
|
||||
},
|
||||
|
||||
data() {
|
||||
var integral = (rule, value, callback) => {
|
||||
if (value) {
|
||||
if (/^[1-9]\d*$/.test(value)) {
|
||||
if(!this.integralEdit){
|
||||
if(Number(value)>=this.sectionNum.min&&Number(value)<=this.sectionNum.max){
|
||||
callback();
|
||||
}else{
|
||||
callback(new Error(`请输入${this.sectionNum.min}至${this.sectionNum.max}之间的正整数积分`));
|
||||
}
|
||||
}else{
|
||||
callback();
|
||||
}
|
||||
|
||||
} else {
|
||||
callback(new Error('请输入正整数'));
|
||||
}
|
||||
} else {
|
||||
callback(new Error('请输入正整数'));
|
||||
}
|
||||
};
|
||||
return {
|
||||
search: {
|
||||
status:'',
|
||||
familyName:'',
|
||||
declareTimeStart:null,
|
||||
declareTimeEnd:null
|
||||
},
|
||||
page:{
|
||||
current: 1,
|
||||
size: 10,
|
||||
total:0
|
||||
},
|
||||
colConfigs: [
|
||||
{ slot: "selection", label: "" },
|
||||
{ prop: "declareName", label: "申报人", align: "center" },
|
||||
{ prop: "declareObjName", label: "申报对象", align: "center",hide:this.bizType==1 },
|
||||
{
|
||||
prop: "familyName",
|
||||
label: "户主",
|
||||
},
|
||||
{
|
||||
prop: "declareDescription",
|
||||
label: "申诉说明",
|
||||
align: "left",
|
||||
width:300
|
||||
},
|
||||
{
|
||||
prop: "declareTime",
|
||||
label: "申报时间",
|
||||
align: "left",
|
||||
width:150
|
||||
},
|
||||
{
|
||||
prop: "declareName",
|
||||
label: "操作人",
|
||||
align: "center",
|
||||
},
|
||||
{
|
||||
prop: "status",
|
||||
label: "状态",
|
||||
align: "center",
|
||||
render: (h, {row}) => {
|
||||
return h('span', {style: {color: this.dict.getColor('integralDeclareStatus', row.status)}}, this.dict.getLabel('integralDeclareStatus', row.status))
|
||||
},
|
||||
},
|
||||
{ slot: "options", label: "操作", align: "center" },
|
||||
],
|
||||
tableData: [],
|
||||
dialog: {
|
||||
visibleAdd: false,
|
||||
visibleDetail: false,
|
||||
title:'积分代申报'
|
||||
},
|
||||
dialogInfo: {
|
||||
users: [],
|
||||
reportIds:[],
|
||||
declareDescription: "",
|
||||
fileList: [],
|
||||
},
|
||||
dialogDetail: {
|
||||
doType: '1',
|
||||
ruleId: '',
|
||||
doIntegral: '',
|
||||
remark: '',
|
||||
aduitIds:[],
|
||||
ruleName:''
|
||||
},
|
||||
isBatch:false,
|
||||
rulesList:[],
|
||||
rowInfo:{},
|
||||
formRules: {
|
||||
users: [{ required: true, message: "请选择人员", trigger: "change" },],
|
||||
declareDescription: [{ required: true, message: "代申报说明", trigger: "blur" }],
|
||||
// fileList: [{ required: true, message: "请上传照片", trigger: "blur" },],
|
||||
ruleId: [{ required: true, message: "请选择事项", trigger: "blur" }],
|
||||
doIntegral: [{ required: true, validator: integral, trigger: "blur" }],
|
||||
doType:[{ required: true, message: "请选择类型", trigger: "change" }]
|
||||
},
|
||||
selectionList:[],
|
||||
integralEdit:false,
|
||||
sectionNum:{
|
||||
min:null,
|
||||
max:null
|
||||
},
|
||||
placeholder:'请输入...'
|
||||
};
|
||||
},
|
||||
computed:{
|
||||
colorList(){
|
||||
return {
|
||||
'0':'#FF8822',
|
||||
'1':'#2EA222',
|
||||
'2':'#FF4466'
|
||||
}
|
||||
}
|
||||
},
|
||||
created() {
|
||||
this.dict
|
||||
.load([
|
||||
'integralDeclareStatus',
|
||||
'integralDeclareDoType'
|
||||
]).then(() => {
|
||||
this.getList();
|
||||
});
|
||||
},
|
||||
|
||||
methods: {
|
||||
getList() {
|
||||
this.instance.post(`/app/appvillagerintegraldeclare/list`, null, {
|
||||
params: {
|
||||
...this.search,
|
||||
...this.page,
|
||||
bizType:this.bizType,
|
||||
areaId:this.areaId
|
||||
},
|
||||
})
|
||||
.then((res) => {
|
||||
if (res.code == 0) {
|
||||
this.tableData = res.data.records;
|
||||
this.page.total = res.data.total;
|
||||
}
|
||||
});
|
||||
},
|
||||
handleSelectionChange(val){
|
||||
this.selectionList=val
|
||||
this.dialogDetail.aduitIds=[];
|
||||
val.forEach(e=>{
|
||||
this.dialogDetail.aduitIds.push(e.id);
|
||||
})
|
||||
},
|
||||
// getSelect(val){
|
||||
// for(let e of val){
|
||||
// this.dialogInfo.reportIds.push(e.id)
|
||||
// }
|
||||
// },
|
||||
getColor(status){
|
||||
return this.dict.getColor('integralDeclareStatus', status)
|
||||
},
|
||||
onChange(val){
|
||||
|
||||
},
|
||||
declare(formName){
|
||||
this.dialogInfo.reportIds=[];
|
||||
for(let e of this.dialogInfo.users){
|
||||
this.dialogInfo.reportIds.push(e.id)
|
||||
};
|
||||
this.$refs[formName].validate((valid) => {
|
||||
if (valid) {
|
||||
this.instance.post("/app/appvillagerintegraldeclare/addOrUpdate", {
|
||||
...this.dialogInfo,
|
||||
bizType:this.bizType
|
||||
}, null).then(res => {
|
||||
if (res.code==0) {
|
||||
this.dialog.visibleAdd=false;
|
||||
this.getList();
|
||||
}
|
||||
})
|
||||
} else {
|
||||
return false;
|
||||
}
|
||||
});
|
||||
},
|
||||
init(formName){
|
||||
this.$refs[formName].clearValidate();
|
||||
this.dialogDetail = {
|
||||
doType: '1',
|
||||
ruleId: '',
|
||||
doIntegral: '',
|
||||
remark: '',
|
||||
aduitIds:[],
|
||||
ruleName:''
|
||||
}
|
||||
this.dialogInfo= {
|
||||
users: [],
|
||||
reportIds:[],
|
||||
declareDescription: "",
|
||||
fileList: [],
|
||||
};
|
||||
this.rulesList = [];
|
||||
},
|
||||
//批量审核
|
||||
batchAduit(){
|
||||
this.isBatch=true;
|
||||
this.rowInfo.status=0;
|
||||
this.dialog.visibleDetail = true;
|
||||
this.getRules('1')
|
||||
},
|
||||
getRowDetail(row){
|
||||
this.instance.post(`/app/appvillagerintegraldeclare/queryDetailById`, null, {
|
||||
params: {
|
||||
id:row.id
|
||||
},
|
||||
}).then((res) => {
|
||||
if (res.code == 0) {
|
||||
this.rowInfo = {...res.data}
|
||||
this.dialog.visibleDetail = true;
|
||||
this.dialogDetail.aduitIds=[];
|
||||
this.dialogDetail.aduitIds.push(row.id);
|
||||
|
||||
}
|
||||
});
|
||||
},
|
||||
toEdit(row) {
|
||||
this.isBatch=false;
|
||||
this.getRowDetail(row);
|
||||
this.getRules('1')
|
||||
},
|
||||
changeDoType(val){
|
||||
this.dialogDetail.ruleId="";
|
||||
this.dialogDetail.ruleName = "";
|
||||
this.dialogDetail.doIntegral = "";
|
||||
this.placeholder = '请输入...';
|
||||
this.$refs.rules.clearValidate();
|
||||
this.getRules(val)
|
||||
},
|
||||
ruleChange(val){
|
||||
let item = this.rulesList.find(e => e.id == val);
|
||||
this.dialogDetail.doIntegral='';
|
||||
this.$refs.rules.clearValidate();
|
||||
if(item){
|
||||
//固定区间
|
||||
this.dialogDetail.ruleName = item.ruleName;
|
||||
if(item.integralValueType==0){
|
||||
this.dialogDetail.doIntegral = Math.abs(item.integral);
|
||||
this.integralEdit = true;
|
||||
}else{
|
||||
this.integralEdit = false;
|
||||
if(Math.abs(item.integralEnd)>Math.abs(item.integralStart)){
|
||||
this.sectionNum.min = Math.abs(item.integralStart);
|
||||
this.sectionNum.max = Math.abs(item.integralEnd);
|
||||
}else{
|
||||
this.sectionNum.max = Math.abs(item.integralStart);
|
||||
this.sectionNum.min = Math.abs(item.integralEnd);
|
||||
}
|
||||
this.placeholder = `${this.sectionNum.min}~${this.sectionNum.max}`
|
||||
}
|
||||
}
|
||||
},
|
||||
//事项查询
|
||||
getRules(integralType){
|
||||
this.instance.post(`/app/appvillagerintegralrule/list`, null, {
|
||||
params: {
|
||||
integralType,
|
||||
size:10000000
|
||||
},
|
||||
}).then((res) => {
|
||||
if (res.code == 0) {
|
||||
this.rulesList = res.data.records.filter(e=> e.ruleStatus == 1);
|
||||
}
|
||||
});
|
||||
},
|
||||
remove(id) {
|
||||
this.$confirm("确定删除该公文及其相关的流转信息?").then(() => {
|
||||
this.instance
|
||||
.post(`/app/appofficialdocumentinfo/delete?ids=${id}`)
|
||||
.then((res) => {
|
||||
if (res.code == 0) {
|
||||
this.$message.success("删除成功!");
|
||||
this.getList();
|
||||
}
|
||||
});
|
||||
});
|
||||
},
|
||||
onReset() {
|
||||
Object.keys(this.search).forEach(e => {
|
||||
this.search[e] = "";
|
||||
});
|
||||
this.search.declareTimeStart = null;
|
||||
this.search.declareTimeEnd = null;
|
||||
this.getList();
|
||||
},
|
||||
|
||||
onAdd() {
|
||||
this.dialog.visibleAdd = true;
|
||||
},
|
||||
|
||||
onConfirm(formName) {
|
||||
this.$refs[formName].validate(v =>{
|
||||
if(v){
|
||||
this.instance.post("/app/appvillagerintegraldeclare/aduit", {
|
||||
...this.dialogDetail,
|
||||
}, null).then(res => {
|
||||
if (res.code==0) {
|
||||
this.dialog.visibleDetail=false;
|
||||
this.$message.success("提交成功!");
|
||||
this.dialogDetail.aduitIds=[];
|
||||
this.getList();
|
||||
}
|
||||
})
|
||||
}else{
|
||||
return false
|
||||
}
|
||||
})
|
||||
},
|
||||
|
||||
|
||||
},
|
||||
};
|
||||
</script>
|
||||
|
||||
<style lang="scss">
|
||||
.pointsDeclaration {
|
||||
height: 100%;
|
||||
overflow: auto;
|
||||
background: #f3f6f9;
|
||||
.times_div{
|
||||
.times{
|
||||
display: block;
|
||||
width: 72px;
|
||||
height: 30px;
|
||||
line-height: 30px;
|
||||
text-align: center;
|
||||
background: #F5F5F5;
|
||||
border-radius: 2px 0px 0px 2px;
|
||||
border: 1px solid #D0D4DC;
|
||||
font-size: 14px;
|
||||
color:#666666;
|
||||
}
|
||||
}
|
||||
.form_content{
|
||||
border-bottom:1px solid #eee;
|
||||
.form_flex{
|
||||
display: flex;
|
||||
div{
|
||||
flex: 1;
|
||||
}
|
||||
}
|
||||
.form_info{
|
||||
margin-bottom: 8px;
|
||||
}
|
||||
.form_label{
|
||||
display: inline-block;
|
||||
color: #999;
|
||||
vertical-align: top;
|
||||
}
|
||||
.form_value{
|
||||
display: inline-block;
|
||||
color: #333;
|
||||
width: calc(100% - 80px);
|
||||
}
|
||||
}
|
||||
.form_div{
|
||||
padding-top:24px;
|
||||
}
|
||||
.status-0 {
|
||||
color: #ff8822;
|
||||
}
|
||||
|
||||
.status-1 {
|
||||
color: #2266ff;
|
||||
}
|
||||
|
||||
.status-2 {
|
||||
color: #999999;
|
||||
}
|
||||
}
|
||||
</style>
|
||||
@@ -1,265 +0,0 @@
|
||||
<template>
|
||||
<section class="pointsDetails">
|
||||
<ai-list isTabs>
|
||||
<template slot="content">
|
||||
<ai-search-bar bottomBorder>
|
||||
<template slot="left">
|
||||
<el-date-picker size="small" v-model="searchDotime" type="daterange" range-separator="至" @change="timeChange"
|
||||
start-placeholder="开始日期" end-placeholder="结束日期" value-format="yyyy-MM-dd HH:mm:ss" format="yyyy-MM-dd"></el-date-picker>
|
||||
</template>
|
||||
<template slot="right">
|
||||
<el-input
|
||||
v-model="search.familyName"
|
||||
class="search-input"
|
||||
size="small"
|
||||
placeholder="对象、户主、事件类型"
|
||||
clearable
|
||||
v-throttle="() => {search.current = 1, getList()}"
|
||||
@clear="search.current = 1, getList()"
|
||||
suffix-icon="iconfont iconSearch" />
|
||||
</template>
|
||||
</ai-search-bar>
|
||||
<ai-table
|
||||
:tableData="tableData"
|
||||
:col-configs="colConfigs"
|
||||
:total="total"
|
||||
ref="aitableex"
|
||||
:current.sync="search.current"
|
||||
:size.sync="search.size"
|
||||
@getList="getList">
|
||||
<el-table-column slot="changeIntegral" label="积分" align= "center">
|
||||
<template slot-scope="{ row }">
|
||||
<span>{{row.changeIntegral > 0 ? '+' : ''}}{{row.changeIntegral}}</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column slot="doType" label="类型" align= "center">
|
||||
<template slot-scope="{ row }">
|
||||
<span>{{ dict.getLabel('integralDetailType', row.bizType) }}</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column slot="options" label="操作" align="center" fixed="right" width="120">
|
||||
<template slot-scope="{ row }">
|
||||
<el-button
|
||||
type="text"
|
||||
title="详情"
|
||||
:disabled="!$permissions('app_appvillagerintegraldetail_detail')"
|
||||
@click="viewItem(row)">
|
||||
详情
|
||||
</el-button>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</ai-table>
|
||||
</template>
|
||||
</ai-list>
|
||||
<ai-dialog
|
||||
title="详情"
|
||||
:visible.sync="dialog.visible"
|
||||
:customFooter="true"
|
||||
:destroyOnClose="true"
|
||||
width="720px"
|
||||
>
|
||||
<div class="form_content">
|
||||
<div class="form_info">
|
||||
<span class="form_label">户主:</span>
|
||||
<span class="form_value">{{dialogInfo.familyName}}</span>
|
||||
</div>
|
||||
<div class="form_info">
|
||||
<span class="form_label">事项:</span>
|
||||
<span class="form_value">{{dialogInfo.ruleName}}</span>
|
||||
</div>
|
||||
<div class="form_flex form_info">
|
||||
<div>
|
||||
<span class="form_label">积分:</span>
|
||||
<span class="form_value">{{dialogInfo.changeIntegral >= 0 ? '增加' : '减少'}}<span style="color:#2266FF">{{Math.abs(dialogInfo.changeIntegral)}}</span>分</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="dialog-footer" slot="footer">
|
||||
<el-button @click="dialog.visible=false" size="medium">关闭</el-button>
|
||||
</div>
|
||||
</ai-dialog>
|
||||
</section>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
export default {
|
||||
name: "pointsDeclaration",
|
||||
|
||||
props: {
|
||||
instance: Function,
|
||||
dict: Object,
|
||||
areaId:String
|
||||
},
|
||||
|
||||
data() {
|
||||
return {
|
||||
searchDotime: [],
|
||||
search: {
|
||||
current: 1,
|
||||
size: 10,
|
||||
familyName: '',
|
||||
doTimeStart: null,
|
||||
doTimeEnd: null
|
||||
},
|
||||
total: 10,
|
||||
colConfigs: [
|
||||
{ prop: "residentName", label: "对象", width:160 },
|
||||
{ prop: "familyName", label: "户主", align: "center", width:160 },
|
||||
{
|
||||
prop: "ruleName",
|
||||
label: "事件类型",
|
||||
"show-overflow-tooltip": true,
|
||||
width:420
|
||||
},
|
||||
{
|
||||
prop: "doTime",
|
||||
label: "时间",
|
||||
width:200
|
||||
},
|
||||
// {
|
||||
// prop: "doType",
|
||||
// label: "类型",
|
||||
// align: "center",
|
||||
// width: 100,
|
||||
// render: (h, params) => {
|
||||
// return h(
|
||||
// "span",
|
||||
// {
|
||||
// class: "status-" + params.row.doType,
|
||||
// },
|
||||
// this.$dict.getLabel("integralIntegralType", params.row.doType)
|
||||
// );
|
||||
// },
|
||||
// },
|
||||
{ slot: "doType", label: "类型", width: 100},
|
||||
{ slot: "changeIntegral", label: "积分", width: 100},
|
||||
// {
|
||||
// prop: "bizType",
|
||||
// label: "途径",
|
||||
// align: "center",
|
||||
// width: 100,
|
||||
// formart: (bizType) =>
|
||||
// this.$dict.getLabel("integralDetailBizType", bizType) || '-',
|
||||
// },
|
||||
{ slot: "options", label: "操作", align: "center" },
|
||||
],
|
||||
tableData: [],
|
||||
dialog: {
|
||||
visible: false,
|
||||
},
|
||||
dialogInfo: {},
|
||||
};
|
||||
},
|
||||
|
||||
mounted() {
|
||||
this.$dict
|
||||
.load([
|
||||
"integralDeclareDoType",
|
||||
"integralDetailType",
|
||||
])
|
||||
.then(() => {
|
||||
this.getList();
|
||||
});
|
||||
},
|
||||
|
||||
methods: {
|
||||
getList() {
|
||||
this.instance
|
||||
.post(`/app/appvillagerintegraldetail/list`, null, {
|
||||
params: {
|
||||
...this.search,
|
||||
areaId: this.areaId,
|
||||
},
|
||||
})
|
||||
.then((res) => {
|
||||
if (res.code == 0) {
|
||||
this.tableData = res.data.records;
|
||||
this.total = res.data.total;
|
||||
}
|
||||
});
|
||||
},
|
||||
|
||||
timeChange() {
|
||||
if(this.searchDotime) {
|
||||
this.search.doTimeStart = this.searchDotime[0]
|
||||
this.search.doTimeEnd = this.searchDotime[1]
|
||||
}else {
|
||||
this.search.doTimeStart = null
|
||||
this.search.doTimeEnd = null
|
||||
}
|
||||
this.search.current = 1
|
||||
this.getList()
|
||||
},
|
||||
|
||||
viewItem(row) {
|
||||
this.dialog.visible = true
|
||||
this.instance.post(`/app/appvillagerintegraldetail/queryDetailById?id=${row.id}`, null, {}).then((res) => {
|
||||
if (res.code == 0) {
|
||||
this.dialogInfo = res.data
|
||||
console.log(this.dialogInfo)
|
||||
}
|
||||
});
|
||||
},
|
||||
|
||||
onReset() {
|
||||
this.search.current = 1
|
||||
this.search.doTimeStart = null
|
||||
this.search.doTimeEnd = null
|
||||
this.search.familyName = ''
|
||||
this.searchDotime = []
|
||||
this.getList();
|
||||
},
|
||||
},
|
||||
};
|
||||
</script>
|
||||
|
||||
<style lang="scss">
|
||||
.pointsDetails {
|
||||
height: 100%;
|
||||
background: #f3f6f9;
|
||||
overflow: auto;
|
||||
.form_content {
|
||||
.form_flex {
|
||||
display: flex;
|
||||
div {
|
||||
flex: 1;
|
||||
}
|
||||
}
|
||||
.form_info {
|
||||
margin-bottom: 8px;
|
||||
}
|
||||
.form_label {
|
||||
display: inline-block;
|
||||
color: #999;
|
||||
vertical-align: top;
|
||||
width: 70px;
|
||||
text-align: right;
|
||||
}
|
||||
.form_value {
|
||||
display: inline-block;
|
||||
color: #333;
|
||||
width: calc(100% - 70px);
|
||||
// img {
|
||||
// width: 100px;
|
||||
// height: 100px;
|
||||
// margin: 0 8px 8px 0;
|
||||
// }
|
||||
}
|
||||
}
|
||||
.form_div {
|
||||
padding-top: 24px;
|
||||
border-top: 1px solid #eee;
|
||||
}
|
||||
.status-0 {
|
||||
color: #FF4466;
|
||||
}
|
||||
|
||||
.status-1 {
|
||||
color: #2EA222;
|
||||
}
|
||||
|
||||
.status-2 {
|
||||
color: #999999;
|
||||
}
|
||||
}
|
||||
</style>
|
||||
Reference in New Issue
Block a user