党员积分
This commit is contained in:
@@ -4,15 +4,24 @@
|
||||
<p><span>积分申请:</span>通过民主程序,将基层治理和服务各项事务转化为数量化指标,对个人日常行为进行评价。申请积分需管理员审核通过后系统自动发放积分。</p>
|
||||
</div>
|
||||
<div class="list">
|
||||
<div class="item" @click="toAdd">
|
||||
<div class="item" v-for="(item, index) in list" :key="index" @click="toAdd(item)">
|
||||
<div class="left">
|
||||
<h2>积分申报</h2>
|
||||
<p>08-31 13:45</p>
|
||||
<h2>{{item.eventName}}</h2>
|
||||
<p>{{item.eventDesc}}</p>
|
||||
</div>
|
||||
<div class="right">
|
||||
<h2 class="color-E6736E">+20<u-icon name="arrow-right" color="#ddd" size="24" style="margin-left: 4px" ></u-icon></h2>
|
||||
<h2 class="color-E6736E">
|
||||
<span v-if="item.ruleType == 0">+{{item.integral}}</span>
|
||||
<span v-if="item.ruleType == 1">+{{item.ladderRule[0].integral}}-{{item.ladderRule[1].integral}}</span>
|
||||
<span v-if="item.ruleType == 2">+{{item.integralMin}}-{{item.integralMax}}</span>
|
||||
<u-icon name="arrow-right" color="#ddd" size="24" style="margin-left: 4px" ></u-icon>
|
||||
</h2>
|
||||
</div>
|
||||
</div>
|
||||
<AiEmpty v-if="!list.length"/>
|
||||
</div>
|
||||
<div class="footer" @click="linkTo(`./list`)">
|
||||
<div class="btn">申请记录</div>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
@@ -27,16 +36,41 @@ export default {
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
|
||||
current: 1,
|
||||
pages: 2,
|
||||
list: []
|
||||
};
|
||||
},
|
||||
onLoad() {
|
||||
|
||||
this.getList()
|
||||
},
|
||||
methods: {
|
||||
toAdd() {
|
||||
uni.navigateTo({url: `./add?id=1&name=111`})
|
||||
toAdd(row) {
|
||||
uni.navigateTo({url: `./add?integralRuleId=${row.id}&integralRuleName=${row.eventName}`})
|
||||
},
|
||||
getList() {
|
||||
if(this.current > this.pages) return
|
||||
this.$instance.post(`/app/apppartyintegralrule/list?classify=0&size=20¤t=${this.current}`).then(res => {
|
||||
if (res.code == 0) {
|
||||
this.pages = res.data.pages
|
||||
res.data.records.map((item) => {
|
||||
item.ladderRule = JSON.parse(item.ladderRule)
|
||||
})
|
||||
if (this.current > 1) {
|
||||
this.list = [...this.list, ...res.data.records]
|
||||
} else {
|
||||
this.list = res.data.records
|
||||
}
|
||||
}
|
||||
})
|
||||
},
|
||||
linkTo(url) {
|
||||
uni.navigateTo({url})
|
||||
}
|
||||
},
|
||||
onReachBottom() {
|
||||
this.current ++
|
||||
this.getList()
|
||||
}
|
||||
};
|
||||
</script>
|
||||
@@ -63,7 +97,7 @@ export default {
|
||||
}
|
||||
}
|
||||
.list{
|
||||
padding-top: 172px;
|
||||
padding: 172px 0 120px 0;
|
||||
.item{
|
||||
padding: 32px;
|
||||
border-bottom: 1px solid #ddd;
|
||||
@@ -88,10 +122,10 @@ export default {
|
||||
text-overflow: ellipsis;
|
||||
}
|
||||
.left{
|
||||
width: calc(100% - 480px);
|
||||
width: 480px;
|
||||
}
|
||||
.right{
|
||||
width: 480px;
|
||||
width: calc(100% - 480px);
|
||||
text-align: right;
|
||||
h2{
|
||||
font-family: PingFangSC-Semibold, PingFang SC;
|
||||
@@ -106,5 +140,25 @@ export default {
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.footer{
|
||||
position: fixed;
|
||||
bottom: 0;
|
||||
left: 0;
|
||||
width: 100%;
|
||||
padding: 16px 32px;
|
||||
background-color: #f3f6f9;
|
||||
z-index: 99;
|
||||
.btn{
|
||||
width: 686px;
|
||||
height: 88px;
|
||||
line-height: 88px;
|
||||
text-align: center;
|
||||
background: #E76056;
|
||||
border-radius: 16px;
|
||||
font-size: 34px;
|
||||
font-family: PingFangSC-Medium, PingFang SC;
|
||||
font-weight: 500;
|
||||
color: #FFF;
|
||||
}
|
||||
}
|
||||
</style>
|
||||
|
||||
@@ -5,11 +5,13 @@
|
||||
<div class="label">
|
||||
<span class="tips">*</span>积分类型
|
||||
</div>
|
||||
<div class="value" @click="showTypeSelect=true">{{typeName}}<u-icon name="arrow-right" color="#ddd" size="24" style="margin-left: 4px" ></u-icon></div>
|
||||
<div class="value">{{integralRuleName}}
|
||||
<!-- <u-icon name="arrow-right" color="#ddd" size="24" style="margin-left: 4px" ></u-icon> -->
|
||||
</div>
|
||||
</div>
|
||||
<div class="text-area">
|
||||
<div class="title"><span class="tips">*</span>申请描述</div>
|
||||
<u-input v-model="value" type="textarea" :height="200" placeholder="请输入描述信息" placeholder-style="font-size:20px;color:#999;" maxlength="500" />
|
||||
<u-input v-model="description" type="textarea" :height="200" placeholder="请输入描述信息" placeholder-style="font-size:20px;color:#999;" maxlength="500" />
|
||||
</div>
|
||||
</div>
|
||||
<div class="upload">
|
||||
@@ -21,7 +23,7 @@
|
||||
<div class="footer" @click="confirmAdd">
|
||||
<div class="btn">提交</div>
|
||||
</div>
|
||||
<u-select v-model="showTypeSelect" :list="typeList" @confirm="confirmType" value-name="id" label-name="name"></u-select>
|
||||
<u-select v-model="showTypeSelect" :list="typeList" @confirm="confirmType" value-name="id" label-name="eventName"></u-select>
|
||||
</div>
|
||||
</template>
|
||||
<script>
|
||||
@@ -35,27 +37,33 @@ export default {
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
value: '',
|
||||
description: '',
|
||||
fileList: [],
|
||||
typeId: '',
|
||||
typeName: '',
|
||||
typeList: [{id: '1', name: '111'}, {id: '2', name: '222'}],
|
||||
integralRuleId: '',
|
||||
integralRuleName: '',
|
||||
|
||||
typeList: [],
|
||||
showTypeSelect: false
|
||||
};
|
||||
},
|
||||
onLoad(options) {
|
||||
if(options.id) {
|
||||
this.typeId = options.id
|
||||
this.typeName = options.name
|
||||
}
|
||||
this.integralRuleId = options.integralRuleId
|
||||
this.integralRuleName = options.integralRuleName
|
||||
},
|
||||
methods: {
|
||||
confirmAdd() {
|
||||
if(!this.value) {
|
||||
if(!this.description) {
|
||||
this.$u.toast('请输入申请描述')
|
||||
}
|
||||
this.$instance.post(`/app/partyOrganization/queryPartyOrganizationListByName`).then((res) => {
|
||||
if(res?.data) {
|
||||
var params = {
|
||||
integralRuleId: this.integralRuleId,
|
||||
integralRuleName: this.integralRuleName,
|
||||
description: this.description,
|
||||
files: this.fileList,
|
||||
partyId: this.user.partyId
|
||||
}
|
||||
this.$instance.post(`/app/apppartyintegraldeclare/addOrUpdate`, params).then((res) => {
|
||||
if(res.code == 0) {
|
||||
this.$u.toast('申请成功')
|
||||
setTimeout(() => {
|
||||
uni.navigateBack()
|
||||
@@ -64,9 +72,16 @@ export default {
|
||||
})
|
||||
},
|
||||
confirmType(e) {
|
||||
this.typeId = e[0].value
|
||||
this.typeName = e[0].label
|
||||
}
|
||||
this.integralRuleId = e[0].value
|
||||
this.integralRuleName = e[0].label
|
||||
},
|
||||
getTypeList() {
|
||||
this.$instance.post(`/app/apppartyintegralrule/list?classify=0&size=1000`).then(res => {
|
||||
if (res.code == 0) {
|
||||
this.typeList = res.data.records
|
||||
}
|
||||
})
|
||||
},
|
||||
}
|
||||
};
|
||||
</script>
|
||||
|
||||
@@ -4,60 +4,58 @@
|
||||
<p class="title">填报信息</p>
|
||||
<div class="info">
|
||||
<div class="label">申请人</div>
|
||||
<div class="value">陶白白</div>
|
||||
<div class="value">{{info.partyName}}</div>
|
||||
</div>
|
||||
<div class="info">
|
||||
<div class="label">申请时间</div>
|
||||
<div class="value">2021-12-06 13:23</div>
|
||||
<div class="value" v-if="info.createTime">{{info.createTime.substring(0, 16)}}</div>
|
||||
</div>
|
||||
<div class="info">
|
||||
<div class="label">积分类型</div>
|
||||
<div class="value">陶白白</div>
|
||||
<div class="value">{{info.integralRuleName}}</div>
|
||||
</div>
|
||||
<div class="info">
|
||||
<div class="label">申请描述</div>
|
||||
<div class="value">2022.1.1上午11:00搭乘D5478次动车;座位号E56</div>
|
||||
<div class="value">{{info.description}}</div>
|
||||
</div>
|
||||
<div class="info border-none">
|
||||
<div class="info border-none" v-if="info.files.length">
|
||||
<div class="label">图片资料</div>
|
||||
</div>
|
||||
<div class="img-list">
|
||||
<img src="https://gimg2.baidu.com/image_search/src=http%3A%2F%2Fimg.jj20.com%2Fup%2Fallimg%2F4k%2Fs%2F02%2F2109242306111155-0-lp.jpg&refer=http%3A%2F%2Fimg.jj20.com&app=2002&size=f9999,10000&q=a80&n=0&g=0n&fmt=auto?sec=1658307867&t=bdf3d5fa8f718c772521f9ba71ba062b" alt="">
|
||||
<img src="https://gimg2.baidu.com/image_search/src=http%3A%2F%2Fimg.jj20.com%2Fup%2Fallimg%2F4k%2Fs%2F02%2F2109242306111155-0-lp.jpg&refer=http%3A%2F%2Fimg.jj20.com&app=2002&size=f9999,10000&q=a80&n=0&g=0n&fmt=auto?sec=1658307867&t=bdf3d5fa8f718c772521f9ba71ba062b" alt="">
|
||||
<img src="https://gimg2.baidu.com/image_search/src=http%3A%2F%2Fimg.jj20.com%2Fup%2Fallimg%2F4k%2Fs%2F02%2F2109242306111155-0-lp.jpg&refer=http%3A%2F%2Fimg.jj20.com&app=2002&size=f9999,10000&q=a80&n=0&g=0n&fmt=auto?sec=1658307867&t=bdf3d5fa8f718c772521f9ba71ba062b" alt="">
|
||||
<img src="https://gimg2.baidu.com/image_search/src=http%3A%2F%2Fimg.jj20.com%2Fup%2Fallimg%2F4k%2Fs%2F02%2F2109242306111155-0-lp.jpg&refer=http%3A%2F%2Fimg.jj20.com&app=2002&size=f9999,10000&q=a80&n=0&g=0n&fmt=auto?sec=1658307867&t=bdf3d5fa8f718c772521f9ba71ba062b" alt="">
|
||||
<img src="https://gimg2.baidu.com/image_search/src=http%3A%2F%2Fimg.jj20.com%2Fup%2Fallimg%2F4k%2Fs%2F02%2F2109242306111155-0-lp.jpg&refer=http%3A%2F%2Fimg.jj20.com&app=2002&size=f9999,10000&q=a80&n=0&g=0n&fmt=auto?sec=1658307867&t=bdf3d5fa8f718c772521f9ba71ba062b" alt="">
|
||||
<div class="img-list" v-if="info.files.length">
|
||||
<img v-for="(item,index) in info.files" :key="index" :src="item.url" alt="" @click="preview(index)">
|
||||
</div>
|
||||
</div>
|
||||
<div class="bg-ff">
|
||||
<p class="title">审核详情</p>
|
||||
<div class="info">
|
||||
<div class="label">审核结果</div>
|
||||
<div class="value status0">通过</div>
|
||||
<div class="value" :class="`status`+info.auditStatus">{{ $dict.getLabel('integralDeclareStatus', info.auditStatus) }}</div>
|
||||
</div>
|
||||
|
||||
<div class="info">
|
||||
<div class="label">加分项</div>
|
||||
<div class="value">街道荣誉</div>
|
||||
<div v-if="info.auditStatus == 1">
|
||||
<div class="info">
|
||||
<div class="label">加分项</div>
|
||||
<div class="value">{{info.auditType}}</div>
|
||||
</div>
|
||||
<div class="info">
|
||||
<div class="label">积分调整</div>
|
||||
<div class="value">+{{info.auditIntegral}}分</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="info">
|
||||
<div class="label">积分调整</div>
|
||||
<div class="value">+10分</div>
|
||||
</div>
|
||||
|
||||
<div class="info">
|
||||
<div class="info" v-if="info.auditStatus == 2">
|
||||
<div class="label">驳回理由</div>
|
||||
<div class="value">2022.1.1上午11:00搭乘D5478次动车;座位号E56</div>
|
||||
<div class="value">{{info.auditOpinion}}</div>
|
||||
</div>
|
||||
|
||||
<div class="info">
|
||||
<div class="label">审核人</div>
|
||||
<div class="value">张三</div>
|
||||
</div>
|
||||
<div class="info">
|
||||
<div class="label">审核时间</div>
|
||||
<div class="value">2021-12-06 13:23</div>
|
||||
<div v-if="info.auditStatus != 0">
|
||||
<div class="info">
|
||||
<div class="label">审核人</div>
|
||||
<div class="value">{{info.auditUserName}}</div>
|
||||
</div>
|
||||
<div class="info">
|
||||
<div class="label">审核时间</div>
|
||||
<div class="value">{{info.auditTime.substring(0, 16)}}</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
@@ -72,15 +70,26 @@ export default {
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
|
||||
id: '',
|
||||
info: {}
|
||||
};
|
||||
},
|
||||
onLoad() {
|
||||
|
||||
onLoad(options) {
|
||||
this.id = options.id
|
||||
this.$dict.load("integralDeclareStatus").then(() => {
|
||||
this.getDetail()
|
||||
})
|
||||
},
|
||||
methods: {
|
||||
getDetail() {
|
||||
this.$instance.post(`/app/apppartyintegraldeclare/queryDetailById?id=${this.id}`).then(res => {
|
||||
if (res.code == 0) {
|
||||
this.info = res.data
|
||||
}
|
||||
})
|
||||
},
|
||||
preview(index) {
|
||||
// this.$previewImage(this.detail.files, index, "url");
|
||||
this.$previewImage(this.info.files, index, "url");
|
||||
},
|
||||
}
|
||||
};
|
||||
|
||||
@@ -7,27 +7,29 @@
|
||||
</div>
|
||||
</div>
|
||||
<div class="select-content">
|
||||
<div class="select" @click="showTypeSelect=true">{{typeId ? typeName : '全部类型'}}<u-icon name="arrow-down" color="#333" size="24" style="margin-left: 4px" ></u-icon></div>
|
||||
<div class="select" @click="showTypeSelect=true">{{integralRuleId ? '已选择' : '全部类型'}}<u-icon name="arrow-down" color="#333" size="24" style="margin-left: 4px" ></u-icon></div>
|
||||
<div class="search">
|
||||
<u-search placeholder="请输入党组织" v-model="name" :show-action="false" @search="getListInit" @clear="name='', getListInit()"></u-search>
|
||||
<u-search placeholder="请输入搜索内容" v-model="partyName" :show-action="false" @search="getListInit" @clear="partyName='', getListInit()" bg-color="#ffffff"></u-search>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="list">
|
||||
<div class="item" @click="toDetail()">
|
||||
<div class="item" v-for="(item, index) in list" :key="index" @click="toDetail(item)">
|
||||
<div class="top">
|
||||
<p class="title">本人与2021年11月12日,在紫荆医院接种第三针新冠疫苗。本人与2021年11月12日,在紫荆医院接种第三针新21年11月12日,在紫荆医院接种第三针新</p>
|
||||
<p class="title">{{item.description}}</p>
|
||||
<div class="flex">
|
||||
<div>新冠疫苗接种</div>
|
||||
<p>2021-12-06 13:23</p>
|
||||
<div>{{item.integralRuleName}}</div>
|
||||
<p>{{item.createTime.substring(0, 16)}}</p>
|
||||
</div>
|
||||
</div>
|
||||
<div class="bottom status0">
|
||||
<span></span>审核通过+10分
|
||||
<div class="bottom" :class="`status`+item.auditStatus">
|
||||
<span class="tips"></span>{{ $dict.getLabel('integralDeclareStatus', item.auditStatus) }}
|
||||
<span v-if="item.auditStatus == 1">+{{item.auditIntegral}}分</span>
|
||||
</div>
|
||||
</div>
|
||||
<AiEmpty v-if="!list.length"/>
|
||||
</div>
|
||||
<u-select v-model="showTypeSelect" :list="typeList" @confirm="confirmType" value-name="id" label-name="name"></u-select>
|
||||
<u-select v-model="showTypeSelect" :list="typeList" @confirm="confirmType" value-name="id" label-name="eventName"></u-select>
|
||||
</div>
|
||||
</template>
|
||||
<script>
|
||||
@@ -43,10 +45,10 @@ export default {
|
||||
return {
|
||||
tabList: ['全部', '待审核', '已审核'],
|
||||
tabIndex: 0,
|
||||
name: '',
|
||||
typeId: '',
|
||||
typeName: '',
|
||||
typeList: [{id: '1', name: '111'}, {id: '2', name: '222'}],
|
||||
partyName: '',
|
||||
integralRuleId: '',
|
||||
integralRuleName: '',
|
||||
typeList: [],
|
||||
showTypeSelect: false,
|
||||
current: 1,
|
||||
pages: 2,
|
||||
@@ -54,7 +56,10 @@ export default {
|
||||
};
|
||||
},
|
||||
onLoad() {
|
||||
|
||||
this.getTypeList()
|
||||
this.$dict.load("integralDeclareStatus").then(() => {
|
||||
this.getList()
|
||||
})
|
||||
},
|
||||
methods: {
|
||||
getListInit() {
|
||||
@@ -65,25 +70,44 @@ export default {
|
||||
},
|
||||
getList() {
|
||||
if (this.current > this.pages) return;
|
||||
// this.$instance.post(`/app/apppartyeducation/list?current=${this.current}`).then((res) => {
|
||||
// if (res.code == 0) {
|
||||
// const list = this.current > 1 ? [...this.list, ...res.data.records] : res.data.records
|
||||
// this.pages = Math.ceil(res.data.total / 10)
|
||||
// this.list = list
|
||||
// }
|
||||
// });
|
||||
this.$instance.post(`/app/apppartyintegraldeclare/list`, null, {
|
||||
params: {
|
||||
current: this.current,
|
||||
partyName: this.partyName,
|
||||
auditType: ['', 0, 1][this.tabIndex],
|
||||
integralRuleId: this.integralRuleId
|
||||
}
|
||||
}).then((res) => {
|
||||
if (res.code == 0) {
|
||||
const list = this.current > 1 ? [...this.list, ...res.data.records] : res.data.records
|
||||
this.pages = Math.ceil(res.data.total / 10)
|
||||
this.list = list
|
||||
}
|
||||
});
|
||||
},
|
||||
tabClick(index) {
|
||||
this.tabIndex = index
|
||||
this.getListInit()
|
||||
},
|
||||
confirmType(e) {
|
||||
this.typeId = e[0].value
|
||||
this.typeName = e[0].label
|
||||
this.integralRuleId = e[0].value
|
||||
this.integralRuleName = e[0].label
|
||||
this.getListInit()
|
||||
},
|
||||
toDetail(row) {
|
||||
uni.navigateTo({ url: `./detail?id=${row.id}` })
|
||||
},
|
||||
getTypeList() {
|
||||
this.$instance.post(`/app/apppartyintegralrule/list?classify=0&size=1000`).then(res => {
|
||||
if (res.code == 0) {
|
||||
this.typeList = res.data.records
|
||||
this.typeList.unshift({
|
||||
eventName: '全部类型',
|
||||
id: ''
|
||||
})
|
||||
}
|
||||
})
|
||||
},
|
||||
toDetail() {
|
||||
uni.navigateTo({ url: `./detail` })
|
||||
}
|
||||
},
|
||||
onReachBottom() {
|
||||
this.current ++
|
||||
@@ -125,6 +149,7 @@ export default {
|
||||
.select-content{
|
||||
display: flex;
|
||||
padding: 48px 32px 32px;
|
||||
background-color: #f3f6f9;
|
||||
.select{
|
||||
width: calc(100% - 460px);
|
||||
font-size: 38px;
|
||||
@@ -184,7 +209,7 @@ export default {
|
||||
font-size: 28px;
|
||||
font-family: PingFangSC-Regular, PingFang SC;
|
||||
line-height: 40px;
|
||||
span{
|
||||
.tips{
|
||||
display: inline-block;
|
||||
margin-right: 8px;
|
||||
width: 8px;
|
||||
@@ -195,19 +220,19 @@ export default {
|
||||
}
|
||||
.status0{
|
||||
color: #FF883C;
|
||||
span{
|
||||
.tips{
|
||||
background: #FF883C;
|
||||
}
|
||||
}
|
||||
.status1{
|
||||
color: #42D784;
|
||||
span{
|
||||
.tips{
|
||||
background: #42D784;
|
||||
}
|
||||
}
|
||||
.status2{
|
||||
color: #f46;
|
||||
span{
|
||||
.tips{
|
||||
background: #f46;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user