矛盾调解调整

This commit is contained in:
aixianling
2023-03-06 18:16:47 +08:00
parent 4c8766ad94
commit f5f83fc8e9
6 changed files with 364 additions and 51 deletions

View File

@@ -1,9 +1,9 @@
<template>
<div class="AppConflictMediation">
<component v-if="refresh && isGridMember" :is="component" @change="onChange" :params="params"> </component>
<component v-if="refresh && isGridMember" :is="component" @change="onChange" :params="params"></component>
<div v-if="!isGridMember" class="empty">
<img src="./components/no-admin.png" alt="">
<p>没有网格员权限<br />无法查看矛盾调解信息哦~</p>
<p>没有网格员权限<br/>无法查看矛盾调解信息哦~</p>
</div>
</div>
</template>
@@ -21,11 +21,10 @@ export default {
params: {},
refresh: true,
tabIndex: 0,
isTab: true,
}
},
components: {List},
computed:{
computed: {
...mapState(['user']),
isGridMember() {
return this.user.girdCheckType > 0
@@ -39,16 +38,9 @@ export default {
},
onShow() {
document.title = '矛盾调解'
uni.$on('hideTab', () => {
this.isTab = false
})
uni.$on('showTab', () => {
this.isTab = true
})
},
onReachBottom() {
if(!this.tabIndex) {
if (!this.tabIndex) {
uni.$emit('nextList')
}
},
@@ -59,6 +51,7 @@ export default {
.AppConflictMediation {
height: 100%;
}
.tabs {
width: 100%;
height: 98px;
@@ -68,14 +61,17 @@ export default {
bottom: 0;
left: 0;
display: flex;
.item {
flex: 1;
text-align: center;
img {
width: 56px;
height: 56px;
margin-top: 8px;
}
p {
font-size: 22px;
font-family: PingFangSC-Medium, PingFang SC;
@@ -83,19 +79,23 @@ export default {
color: #c4cad4;
line-height: 8px;
}
.color-3267F0 {
color: #3267f0;
}
}
}
.empty{
.empty {
text-align: center;
img{
img {
width: 282px;
height: 306px;
margin: 136px auto 0;
}
p{
p {
font-size: 28px;
font-family: PingFangSC-Regular, PingFang SC;
color: #999;

View File

@@ -4,8 +4,7 @@
<u-form :model="forms" ref="uForm" label-width="auto" :border-bottom="false">
<u-form-item label="转交给" prop="status" required :border-bottom="false" class="first-form" v-if="status == 4">
<div flex class="flexEnd">
<AiPagePicker type="custom" :id="selectObject.id" @select="handleSelectObject"
:ops="{url:'../AppGridManagement/selectGridMember',label: 'name'}">
<AiPagePicker type="gridUser" :id="selectObject.id" @select="handleSelectObject">
<AiMore v-model="forms.name"/>
</AiPagePicker>
</div>
@@ -19,20 +18,15 @@
<u-select v-model="show" :list="myList" value-name="id" label-name="groupName"
@confirm="selectStatus"></u-select>
</u-form-item>
<u-form-item :label="status == 2 ? '办结意见':'办理意见'" prop="content" required :border-bottom="false"
label-position="top" class="contents">
<u-input v-model="forms.content" :placeholder="status == 2 ? '请写下你的办结意见…' : '请写下你的办理意见...'" type="textarea"
auto-height height="100" maxlength="200"/>
</u-form-item>
<div class="limit">{{ forms.content.length }}/200</div>
<div class="line"></div>
<div class="line"/>
<u-form-item label="图片上传(最多9张)" prop="files" :border-bottom="false" class="avatars" label-position="top">
<AiUploader :def.sync="forms.files" multiple placeholder="上传图片" :limit="9"
action="/admin/file/add2"></AiUploader>
<AiUploader :def.sync="forms.files" multiple placeholder="上传图片" :limit="9" action="/admin/file/add2"/>
</u-form-item>
</u-form>

View File

@@ -13,7 +13,9 @@
<!-- 事件列表 -->
<div class="title">
<div class="title-name">事件列表</div>
<div class="title-type" @click="showGird = true">{{ status ? status : '全部类型' }}<u-icon name="arrow-down"></u-icon></div>
<div class="title-type" @click="showGird = true">{{ status ? status : '全部类型' }}
<u-icon name="arrow-down"></u-icon>
</div>
</div>
<template>
@@ -51,14 +53,14 @@
<AiEmpty v-if="!datas.length"></AiEmpty>
</template>
<u-select v-model="showGird" :list="$dict.getDict('clapEventStatusAll')" label-name="dictName" value-name="dictValue" @confirm="changeType" />
<u-select v-model="showGird" :list="$dict.getDict('clapEventStatusAll')" label-name="dictName" value-name="dictValue" @confirm="changeType"/>
<div class="pad-b120" v-if="datas.length"></div>
</div>
</template>
<script>
import { mapState } from 'vuex'
import {mapState} from 'vuex'
export default {
props: {},
@@ -123,9 +125,12 @@ export default {
document.title = '矛盾调解'
},
created() {
this.$dict.load('clapEventStatus', 'clapEventStatusAll', 'clapEventStatusHistory').then(() => {
this.getList()
uni.showLoading({title: "数据加载中...", mask: true})
Promise.all([
this.getList(),
this.getStaticList()
]).finally(() => uni.hideLoading())
this.$dict.load('clapEventStatus', 'clapEventStatusAll', 'clapEventStatusHistory').then(() => {
this.listTypeAll = this.$dict.getDict('clapEventStatusAll')
this.listTypeHistory = this.$dict.getDict('clapEventStatusHistory')
this.listType = this.listTypeAll
@@ -133,26 +138,25 @@ export default {
},
methods: {
getList() {
this.$http
.post(`/app/appconflicteventinfo/listByGirdMember`, null, {
params: {
size: 10,
current: this.current,
searchType: this.currentTabs == 1 ? '1' : '0',
eventStatus: this.eventStatus,
girdId: this.girdId,
},
})
.then((res) => {
if (res?.data) {
this.datas = this.current > 1 ? [...this.datas, ...res.data.records] : res.data.records
this.pages = res.data.pages
this.$forceUpdate()
}
})
return this.$http.post(`/app/appconflicteventinfo/listByGirdMember`, null, {
params: {
size: 10,
current: this.current,
searchType: this.currentTabs == 1 ? '1' : '0',
eventStatus: this.eventStatus,
girdId: this.girdId,
},
})
.then((res) => {
if (res?.data) {
this.datas = this.current > 1 ? [...this.datas, ...res.data.records] : res.data.records
this.pages = res.data.pages
this.$forceUpdate()
}
})
},
getStaticList() {
this.$http.post('/app/appconflicteventinfo/conflictEventStatisticByGirdMember').then((res) => {
return this.$http.post('/app/appconflicteventinfo/conflictEventStatisticByGirdMember').then((res) => {
if (res?.data) {
Object.keys(res.data).forEach(() => {
this.staticName[0].value = res.data['待处理']
@@ -175,11 +179,11 @@ export default {
// 新增事件
addEvent() {
uni.navigateTo({ url: './add' })
uni.navigateTo({url: './add'})
},
goDetail(item) {
uni.navigateTo({ url: `./detail?id=${item.id}` })
uni.navigateTo({url: `./detail?id=${item.id}`})
},
change(index) {
@@ -199,7 +203,7 @@ export default {
},
linkTo(url) {
uni.navigateTo({ url })
uni.navigateTo({url})
},
},
}
@@ -209,6 +213,7 @@ export default {
uni-page-body {
height: 100%;
}
.list-content {
height: 100%;
@@ -251,6 +256,7 @@ uni-page-body {
height: 80px;
line-height: 80px;
padding: 0 30px;
.title-name {
font-size: 38px;
color: #333333;
@@ -267,6 +273,7 @@ uni-page-body {
::v-deep .AiTopFixed .content {
padding: 0;
}
::v-deep .AiCard {
background: #f3f6f9;
padding: 24px 30px 0;
@@ -277,6 +284,7 @@ uni-page-body {
.card-top {
padding: 32px;
.titles {
margin-bottom: 34px;
font-size: 32px;
@@ -290,20 +298,24 @@ uni-page-body {
-webkit-line-clamp: 2;
-webkit-box-orient: vertical;
}
.types,
.gards {
display: flex;
margin-top: 8px;
font-size: 26px;
width: 100%;
.types-right,
.gards-right {
width: calc(100% - 120px);
color: #333333;
}
.label1 {
width: 120px;
}
.label {
width: 120px;
}
@@ -313,6 +325,7 @@ uni-page-body {
.status {
padding: 32px;
border-top: 1px solid #dddddd;
.icon {
display: inline-block;
width: 8px;
@@ -324,6 +337,7 @@ uni-page-body {
.status0 {
color: #ff883c;
.icon {
background: #ff883c;
}
@@ -331,6 +345,7 @@ uni-page-body {
.status1 {
color: #1aaaff;
.icon {
background: #1aaaff;
}
@@ -338,6 +353,7 @@ uni-page-body {
.status2 {
color: #42d784;
.icon {
background: #42d784;
}
@@ -345,6 +361,7 @@ uni-page-body {
.status3 {
color: #ff4466;
.icon {
background: #ff4466;
}
@@ -366,11 +383,13 @@ uni-page-body {
align-items: center;
box-shadow: inset 0px 1px 0px 0px #dddddd;
z-index: 999;
.myreport {
background-color: #ffffff;
width: 40%;
color: #333;
}
.add {
background-color: #3975c6;
width: 60%;