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

This commit is contained in:
aixianling
2022-02-11 17:11:34 +08:00
21 changed files with 578 additions and 347 deletions

View File

@@ -171,12 +171,17 @@ uni-page-body {
font-family: PingFang-SC-Heavy, PingFang-SC; font-family: PingFang-SC-Heavy, PingFang-SC;
font-weight: 800; font-weight: 800;
color: #333333; color: #333333;
display: inline-block;
width: 140px;
vertical-align: top;
} }
.boxesRight { .boxesRight {
margin-left: 40px; margin-left: 40px;
font-size: 28px; font-size: 28px;
font-family: PingFangSC-Regular, PingFang SC; font-family: PingFangSC-Regular, PingFang SC;
color: #666666; color: #666666;
display: inline-block;
width: calc(100% - 200px);
} }
} }
} }

View File

@@ -550,12 +550,13 @@ export default {
this.flag = false; this.flag = false;
if (res.code == 0) { if (res.code == 0) {
uni.$emit("update"); uni.$emit("update");
this.$u.toast("提交成功");
setTimeout(() => { setTimeout(() => {
uni.navigateBack(); uni.navigateTo({url: './Success?status=1'})
}, 400); }, 400);
} }
}); }).catch(() => {
uni.navigateTo({url: './Success?status=0'})
})
}, },
}, },
}; };

View File

@@ -0,0 +1,68 @@
<template>
<div class="success">
<img src="./components/img/success.png" alt="" v-if="status">
<img src="./components/img/fail.png" alt="" v-else>
<p>{{status ? '上报成功!' : '上报失败!'}}</p>
<div class="footer">{{status ? '确定' : '我知道了'}}</div>
</div>
</template>
<script>
import { mapState } from 'vuex'
export default {
data() {
return {
status: 1
}
},
onShow() {
document.title = '返乡登记'
},
onLoad(option) {
this.status = option.status
},
methods: {
back() {
uni.navigateBack({delta: 2})
}
},
}
</script>
<style lang="scss" scoped>
uni-page-body{
height: 100%;
background-color: #fff;
}
.success {
text-align: center;
img{
width: 192px;
height: 192px;
margin: 96px 0 16px 0;
}
p{
line-height: 50px;
color: #333;
font-size: 36px;
font-weight: 500;
text-align: center;
margin-bottom: 72px;
}
.footer{
width: calc(100% - 96px);
height: 88px;
line-height: 88px;
background: #1365DD;
box-shadow: inset 0px 1px 0px 0px #EEEEEE;
font-size: 32px;
font-family: PingFangSC-Medium, PingFang SC;
font-weight: 500;
color: #FFF;
text-align: center;
border-radius: 8px;
margin-left: 48px;
}
}
</style>

View File

@@ -281,7 +281,7 @@ export default {
color: #f46; color: #f46;
} }
.color-2{ .color-2{
color: #1365DD; color: #f46;
} }
} }
.img-list{ .img-list{

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 18 KiB

View File

@@ -3,7 +3,7 @@
<search-map v-if="show && isAdmin"/> <search-map v-if="show && isAdmin"/>
<div v-if="!isAdmin" class="empty"> <div v-if="!isAdmin" class="empty">
<img src="https://cdn.cunwuyun.cn/dvcp/h5/no-data.png" alt=""> <img src="https://cdn.cunwuyun.cn/dvcp/h5/no-data.png" alt="">
<p>没有网格员/网格长权限<br/>无法查看楼栋信息哦~</p> <p>没有网格员权限<br/>无法查看楼栋信息哦~</p>
</div> </div>
</div> </div>
</template> </template>
@@ -35,7 +35,7 @@ export default {
this.isAdmin = false this.isAdmin = false
this.$http.post('/app/appgirdmemberinfo/checkLogOnUser').then((res) => { this.$http.post('/app/appgirdmemberinfo/checkLogOnUser').then((res) => {
if (res.code == 0) { if (res.code == 0) {
if (res.data.checkType == '2') { if (res.data.checkType != '0') {
this.isAdmin = true this.isAdmin = true
} }
} }

View File

@@ -47,13 +47,13 @@
</div> </div>
<div class="info-flex"> <div class="info-flex">
<span class="label">所属网格</span> <span class="label">所属网格</span>
<span class="value" v-if="detailInfo.gird && detailInfo.gird.girdName">{{ detailInfo.gird.girdName || '' }}</span> <span class="value" v-if="detailInfo.build && detailInfo.build.appGirdInfo">{{ detailInfo.build.appGirdInfo.girdName || '' }}</span>
</div> </div>
<div class="info-flex"> <div class="info-flex">
<span class="label">网格管理员</span> <span class="label">网格管理员</span>
<span class="value" v-if="detailInfo.gird && detailInfo.gird.girdMemberNames && detailInfo.gird.girdMemberNames.length"> <span class="value" v-if="detailInfo.build.appGirdInfo && detailInfo.build.appGirdInfo.girdMemberNames && detailInfo.build.appGirdInfo.girdMemberNames.length">
<span v-for="(item, index) in detailInfo.gird.girdMemberNames" :key="index"> <span v-for="(item, index) in detailInfo.build.appGirdInfo.girdMemberNames" :key="index">
<AiOpenData v-if="item" type="userName" :openid="item" style="display:inline-block;" /><span v-if="index<detailInfo.gird.girdMemberNames.length-1">,</span> <AiOpenData v-if="item" type="userName" :openid="item" style="display:inline-block;" /><span v-if="index<detailInfo.build.appGirdInfo.girdMemberNames.length-1">,</span>
</span> </span>
</span> </span>
</div> </div>
@@ -337,12 +337,15 @@ export default {
getBuildingInfo(item) { getBuildingInfo(item) {
this.$http.post(`/app/appcommunityhouseinfo/queryDetailByIdWithBuilding?buildId=${item.buildingId}&houseId=${item.id}`).then(res => { this.$http.post(`/app/appcommunityhouseinfo/queryDetailByIdWithBuilding?buildId=${item.buildingId}&houseId=${item.id}`).then(res => {
if (res?.data) { if (res?.data) {
this.detailInfo = {...res.data}
console.log(this.detailInfo)
if(this.detailInfo.build.appGirdInfo.girdMemberNames && this.detailInfo.build.appGirdInfo.girdMemberNames) {
this.detailInfo.build.appGirdInfo.girdMemberNames = this.detailInfo.build.appGirdInfo.girdMemberNames.split(',')
}
this.show = false this.show = false
this.showPop = true this.showPop = true
this.detailInfo = {...res.data}
if(this.detailInfo.gird && this.detailInfo.gird.girdMemberNames) {
this.detailInfo.gird.girdMemberNames = this.detailInfo.gird.girdMemberNames.split(',')
}
} }
}) })
}, },

View File

@@ -13,7 +13,7 @@
<!-- 事件列表 --> <!-- 事件列表 -->
<div class="title"> <div class="title">
<div class="title-name">事件列表</div> <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> </div>
<template> <template>
@@ -23,13 +23,13 @@
<div class="titles">{{ item.content }}</div> <div class="titles">{{ item.content }}</div>
<div class="types"> <div class="types">
<span>事件类型</span> <span class="label label1">事件类型</span>
<span class="types-right">{{ item.groupName }}</span> <span class="types-right">{{ item.groupName }}</span>
</div> </div>
<div class="gards"> <div class="gards gird">
<span>所属网格</span> <div class="label">所属网格</div>
<span class="gards-right">{{ item.girdName }}</span> <div class="gards-right">{{ item.girdName }}</div>
</div> </div>
</div> </div>
@@ -45,8 +45,7 @@
<AiEmpty v-if="!datas.length"></AiEmpty> <AiEmpty v-if="!datas.length"></AiEmpty>
</template> </template>
<u-select v-model="showGird" :list="$dict.getDict('clapEventStatusAll')" label-name="dictName" value-name="dictValue" <u-select v-model="showGird" :list="$dict.getDict('clapEventStatusAll')" label-name="dictName" value-name="dictValue" @confirm="changeType" />
@confirm="changeType"/>
<div class="pad-b120" v-if="datas.length"></div> <div class="pad-b120" v-if="datas.length"></div>
</div> </div>
@@ -80,22 +79,22 @@ export default {
staticName: [ staticName: [
{ {
label: '待处理', label: '待处理',
value: 0 value: 0,
}, },
{ {
label: '上报数', label: '上报数',
value: 0 value: 0,
}, },
{ {
label: '已办数', label: '已办数',
value: 0 value: 0,
}, },
{ {
label: '今日办结', label: '今日办结',
value: 0 value: 0,
} },
], ],
statisticsList: [] statisticsList: [],
} }
}, },
computed: { computed: {
@@ -109,15 +108,14 @@ export default {
this.current = 1 this.current = 1
this.girdList() this.girdList()
this.getList() this.getList()
uni.$on('nextList', ()=>{ uni.$on('nextList', () => {
this.current ++ this.current++
this.getList() this.getList()
}) })
uni.$on('getListInit', ()=>{ uni.$on('getListInit', () => {
this.current = 1 this.current = 1
this.getList() this.getList()
}) })
}, },
onShow() { onShow() {
document.title = '矛盾调解' document.title = '矛盾调解'
@@ -141,7 +139,8 @@ export default {
current: this.current, current: this.current,
searchType: this.currentTabs == 1 ? '1' : '0', searchType: this.currentTabs == 1 ? '1' : '0',
eventStatus: this.eventStatus, eventStatus: this.eventStatus,
girdId: this.girdId girdId: this.girdId,
openId: this.eventStatus == 4 ? this.user.openId : '',
}, },
}) })
.then((res) => { .then((res) => {
@@ -154,8 +153,8 @@ export default {
}, },
getStaticList() { getStaticList() {
this.$http.post('/app/appclapeventinfo/clapEventStatisticByGirdMember').then((res) => { this.$http.post('/app/appclapeventinfo/clapEventStatisticByGirdMember').then((res) => {
if (res.code == 0){ if (res.code == 0) {
Object.keys(res.data).forEach(( ) => { Object.keys(res.data).forEach(() => {
// var info = { // var info = {
// label: key, // label: key,
// value: res.data[key] // value: res.data[key]
@@ -171,33 +170,39 @@ export default {
}, },
// 切换类型 // 切换类型
changeType(e) { changeType(e) {
// if (e[0].value != 1) {
this.status = e[0].label this.status = e[0].label
this.datas = []
this.eventStatus = e[0].value this.eventStatus = e[0].value
// } else {
// this.eventStatus = 4
// }
this.current = 1
this.datas = []
this.getList() this.getList()
}, },
// 新增事件 // 新增事件
addEvent() { addEvent() {
uni.navigateTo({url: './add'}) uni.navigateTo({ url: './add' })
}, },
girdList() { girdList() {
this.$http.post(`/app/appgirdmemberinfo/queryMyGirdListWithOut01`, null, { this.$http
params: { .post(`/app/appgirdmemberinfo/queryMyGirdListWithOut01`, null, {
size: 9999, params: {
}, size: 9999,
}) },
.then((res) => { })
if (res.code == 0) { .then((res) => {
this.myGirdList = res.data if (res.code == 0) {
var all = { this.myGirdList = res.data
id: '', var all = {
girdName: '全部' id: '',
girdName: '全部',
}
this.myGirdList.unshift(all)
} }
this.myGirdList.unshift(all) })
}
})
}, },
confirm(e) { confirm(e) {
@@ -226,9 +231,9 @@ export default {
this.girdNameText = '所属网格' this.girdNameText = '所属网格'
this.eventStatusText = '办件状态' this.eventStatusText = '办件状态'
this.currentTabs = index this.currentTabs = index
if(index == 0) { if (index == 0) {
this.listType = this.listTypeAll this.listType = this.listTypeAll
}else { } else {
this.listType = this.listTypeHistory this.listType = this.listTypeHistory
} }
this.getList() this.getList()
@@ -254,7 +259,7 @@ uni-page-body {
.content-list { .content-list {
display: flex; display: flex;
background: #FFFFFF; background: #ffffff;
border-radius: 16px; border-radius: 16px;
margin-bottom: 20px; margin-bottom: 20px;
width: 100%; width: 100%;
@@ -269,7 +274,7 @@ uni-page-body {
h3 { h3 {
font-size: 64px; font-size: 64px;
color: #1E88E8; color: #1e88e8;
} }
p { p {
@@ -277,7 +282,7 @@ uni-page-body {
color: #999999; color: #999999;
} }
} }
} }
} }
.title { .title {
@@ -291,7 +296,7 @@ uni-page-body {
color: #333333; color: #333333;
font-weight: 800; font-weight: 800;
} }
.title-type { .title-type {
font-size: 26px; font-size: 26px;
color: #666666; color: #666666;
@@ -334,6 +339,9 @@ uni-page-body {
margin-left: 32px; margin-left: 32px;
color: #333333; color: #333333;
} }
.label1 {
margin-right: 12px;
}
} }
} }
@@ -378,7 +386,19 @@ uni-page-body {
} }
} }
} }
.gird {
display: flex;
.label {
width: 120px;
vertical-align: top;
}
.gards-right {
width: calc(100% - 120px);
}
}
.addbtn { .addbtn {
position: fixed; position: fixed;
left: 0; left: 0;
@@ -387,9 +407,9 @@ uni-page-body {
height: 120px; height: 120px;
line-height: 120px; line-height: 120px;
text-align: center; text-align: center;
background-color: #3975C6; background-color: #3975c6;
font-size: 32px; font-size: 32px;
color: #FFFFFF; color: #ffffff;
} }
.pad-b120 { .pad-b120 {

View File

@@ -1,10 +1,9 @@
<template> <template>
<div class="SelectUser"> <div class="SelectUser">
<div class="header-middle"> <div class="header-middle">
<!-- 去掉网格名称 --> <div class="hint">
<!-- <div class="hint">
<span v-for="(item, index) in slectList" :key="index"><span v-if="index" style="margin:0 4px;">/</span><span style="color:#3F8DF5" @click="girdNameClick(item, index)">{{item.girdName}}</span></span> <span v-for="(item, index) in slectList" :key="index"><span v-if="index" style="margin:0 4px;">/</span><span style="color:#3F8DF5" @click="girdNameClick(item, index)">{{item.girdName}}</span></span>
</div> --> </div>
<div class="showTypes" v-if="!userList.length"> <div class="showTypes" v-if="!userList.length">
<div v-if="treeList.length > 0"> <div v-if="treeList.length > 0">
@@ -37,7 +36,7 @@
</div> </div>
<div class="rights"> <div class="rights">
<div class="applicationNames">{{ e.name }}</div> <div class="applicationNames"><AiOpenData v-if="e.name" type="userName" :openid="e.name" style="display: block;"/></div>
<div class="idNumbers">{{ e.phone }}</div> <div class="idNumbers">{{ e.phone }}</div>
</div> </div>
</div> </div>
@@ -209,7 +208,10 @@ export default {
box-shadow: 0px 1px 0px 0px #e4e5e6; box-shadow: 0px 1px 0px 0px #e4e5e6;
font-size: 30px; font-size: 30px;
font-weight: 500; font-weight: 500;
word-break: break-all; // word-break: break-all;
overflow: hidden;
white-space: nowrap;
text-overflow: ellipsis;
} }
.showTypes { .showTypes {
@@ -223,13 +225,12 @@ export default {
align-items: center; align-items: center;
height: 120px; height: 120px;
line-height: 120px; line-height: 120px;
// background: pink;
padding: 0 0 0 32px; padding: 0 0 0 32px;
.imges { .imges {
display: flex; display: flex;
align-items: center; align-items: center;
// width: 200px;
.imgselect { .imgselect {
width: 48px; width: 48px;
height: 48px; height: 48px;
@@ -249,16 +250,21 @@ export default {
border-radius: 8px; border-radius: 8px;
} }
.rightes { .rightes {
width: 100%; width: calc(100% - 160px);
display: flex; display: flex;
justify-content: space-between; justify-content: space-between;
align-items: center; align-items: center;
margin-left: 32px; margin-left: 32px;
border-bottom: 1px solid #e4e5e6; border-bottom: 1px solid #e4e5e6;
.applicationNames { .applicationNames {
max-width: calc(100% - 80px);
font-size: 36px; font-size: 36px;
font-weight: 500; font-weight: 500;
color: #333333; color: #333333;
overflow: hidden;
white-space: nowrap;
text-overflow: ellipsis;
} }
.imgs { .imgs {
width: 40px; width: 40px;
@@ -275,7 +281,6 @@ export default {
align-items: center; align-items: center;
height: 120px; height: 120px;
line-height: 120px; line-height: 120px;
// background: pink;
padding: 0 0 0 32px; padding: 0 0 0 32px;
.imges { .imges {
@@ -296,7 +301,7 @@ export default {
} }
.rights { .rights {
width: 100%; width: 70%;
display: flex; display: flex;
justify-content: space-between; justify-content: space-between;
align-items: center; align-items: center;
@@ -307,6 +312,9 @@ export default {
font-size: 36px; font-size: 36px;
font-weight: 500; font-weight: 500;
color: #333333; color: #333333;
overflow: hidden;
white-space: nowrap;
text-overflow: ellipsis;
} }
.idNumbers { .idNumbers {
color: #666; color: #666;

View File

@@ -18,7 +18,7 @@
<div class="form-item form-item__imgs"> <div class="form-item form-item__imgs">
<div class="form-item__wrapper"> <div class="form-item__wrapper">
<div class="form-item__title"> <div class="form-item__title">
<i style="opacity: 0;">*</i> <i style="opacity: 0">*</i>
<h2>图片上传</h2> <h2>图片上传</h2>
<span>(最多9张)</span> <span>(最多9张)</span>
</div> </div>
@@ -60,7 +60,7 @@
<i>*</i> <i>*</i>
<h2>上报网格</h2> <h2>上报网格</h2>
</div> </div>
<div class="form-item__right" @click="showSelect= true"> <div class="form-item__right" @click="showSelect = true">
<span v-if="form.girdName">{{ form.girdName }}</span> <span v-if="form.girdName">{{ form.girdName }}</span>
<i v-else>请选择</i> <i v-else>请选择</i>
<u-icon name="arrow-right" color="#ddd" /> <u-icon name="arrow-right" color="#ddd" />
@@ -75,8 +75,8 @@
</div> </div>
</div> </div>
<div class="flow-option"> <div class="flow-option">
<div class="byself" :class="!form.opts? 'current': ''" @click="form.opts = 0">自己办结</div> <div class="byself" :class="!form.opts ? 'current' : ''" @click="form.opts = 0">自己办结</div>
<div class="report" :class="form.opts? 'current': ''" @click="form.opts = 1">上报处理</div> <div class="report" :class="form.opts ? 'current' : ''" @click="form.opts = 1">上报处理</div>
</div> </div>
</div> </div>
</div> </div>
@@ -90,7 +90,7 @@
<h2>办理结果</h2> <h2>办理结果</h2>
</div> </div>
<div class="form-item__right"> <div class="form-item__right">
<textarea v-model="form.result" :maxlength="500" placeholder="请简要描述事件…"></textarea> <textarea v-model="form.result" :maxlength="500" placeholder="请输入办理结果信息"></textarea>
</div> </div>
</div> </div>
</div> </div>
@@ -99,7 +99,7 @@
<div class="form-item form-item__imgs"> <div class="form-item form-item__imgs">
<div class="form-item__wrapper"> <div class="form-item__wrapper">
<div class="form-item__title"> <div class="form-item__title">
<i style="opacity: 0;">*</i> <i style="opacity: 0">*</i>
<h2>图片上传</h2> <h2>图片上传</h2>
<span>(最多9张)</span> <span>(最多9张)</span>
</div> </div>
@@ -112,305 +112,305 @@
</div> </div>
<div class="btn" @click="submit">上报</div> <div class="btn" @click="submit">上报</div>
<u-select v-model="showSelect" :list="girdList" label-name="girdName" value-name="id" @confirm="confirmSelect"/> <u-select v-model="showSelect" :list="girdList" label-name="girdName" value-name="id" @confirm="confirmSelect" />
</div> </div>
</template> </template>
<script> <script>
import { mapState } from 'vuex' import { mapState } from 'vuex'
export default { export default {
appName: '矛盾调解', appName: '矛盾调解',
data () { data() {
return { return {
isShowType: false, isShowType: false,
form: { form: {
content: '', content: '',
files: [], files: [],
groupId: '', groupId: '',
address: '', address: '',
girdName: '', girdName: '',
flow: '', flow: '',
girdId: '', girdId: '',
flag: false, flag: false,
result: '', result: '',
resultFiles: [], resultFiles: [],
opts: 1, opts: 1,
name: '' name: '',
lat: '',
lng: '',
},
dictList: [],
arr: [],
showSelect: false,
girdList: [],
}
},
computed: {
...mapState(['user']),
},
onLoad() {
this.getDict()
this.form.phone = this.user.phone
this.form.name = this.user.name || ''
this.getGirdList()
},
methods: {
chooseAddress() {
uni.chooseLocation({
success: (res) => {
this.form.address = res.address
this.form.lat = res.latitude
this.form.lng = res.longitude
}, },
dictList: [], })
arr: [], },
showSelect: false,
girdList: [], confirmSelect(e) {
this.form.girdId = e[0].value
this.girdList.map((item) => {
if (item.id == this.form.girdId) {
this.form.girdName = item.girdName
}
})
},
getDict() {
this.$http.post(`/app/appclapeventgroup/list`).then((res) => {
if (res.code == 0) {
this.dictList = res.data.records.map((v) => {
return {
value: v.id,
label: v.groupName,
}
})
}
})
},
getGirdData(x) {
if (x > -1) {
this.$set(this.gridList, '1', this.arr[0].girdList[x].girdList)
} }
}, },
computed: { getGirdList() {
...mapState(['user']) this.$http.post(`/app/appgirdmemberinfo/queryMyGirdListByLevel2AndUser`).then((res) => {
if (res.code == 0) {
this.arr = res.data
this.girdList = res.data
}
})
}, },
onLoad () { onColumnChange(e) {
this.getDict() const column = e.detail.column
this.form.phone = this.user.phone const value = e.detail.value
this.form.name = this.user.name || ''
this.getGirdList() if (column === column) {
this.getGirdData(value)
}
}, },
methods: { onChange(e) {
chooseAddress () { const v = e.detail.value[1]
uni.chooseLocation({ if (this.gridList[1][v]) {
success: (res) => { this.form.girdName = this.gridList[1][v].girdName
this.form.address = res.address this.form.girdId = this.gridList[1][v].id
} } else {
}); return this.$u.toast('所属网格必须选第三级网格')
}, }
},
confirmSelect(e) { submit() {
this.form.girdId = e[0].value if (!this.form.content) {
this.girdList.map((item) => { return this.$u.toast('请输入事件描述')
if(item.id == this.form.girdId) { }
this.form.girdName = item.girdName if (!this.form.groupId) {
} return this.$u.toast('请选择事件类型')
}) }
}, if (!this.form.address) {
return this.$u.toast('请选择发生地点')
getDict () { }
this.$http.post(`/app/appclapeventgroup/list`).then(res => { if (!this.form.girdName) {
if (res.code == 0) { return this.$u.toast('请选择上报网格')
this.dictList = res.data.records.map(v => { }
return { if (this.form.opts == 0) {
value: v.id, if (!this.form.result) {
label: v.groupName return this.$u.toast('请输入事件办理结果')
}
})
}
})
},
getGirdData (x) {
if (x > -1) {
this.$set(this.gridList, '1', this.arr[0].girdList[x].girdList)
} }
}, }
getGirdList () { if (this.flag) return
this.$http.post(`/app/appgirdmemberinfo/queryMyGirdListByLevel2AndUser`).then(res => { this.flag = true
if (res.code == 0) {
this.arr = res.data
this.girdList = res.data
}
})
},
onColumnChange (e) { this.$http
const column = e.detail.column .post(`/app/appclapeventinfo/addOrUpdate?`, {
const value = e.detail.value
if (column === column) {
this.getGirdData(value)
}
},
onChange (e) {
const v = e.detail.value[1]
if (this.gridList[1][v]) {
this.form.girdName = this.gridList[1][v].girdName
this.form.girdId = this.gridList[1][v].id
} else {
return this.$u.toast('所属网格必须选第三级网格')
}
},
submit () {
if (!this.form.content) {
return this.$u.toast('请输入事件描述')
}
if (!this.form.groupId) {
return this.$u.toast('请选择事件类型')
}
if (!this.form.address) {
return this.$u.toast('请选择发生地点')
}
if (!this.form.girdName) {
return this.$u.toast('请选择上报网格')
}
if (this.form.opts == 0) {
if (!this.form.result) {
return this.$u.toast('请输入事件办理结果')
}
}
if(this.flag) return
this.flag = true
this.$loading()
this.$http.post(`/app/appclapeventinfo/addOrUpdate`, {
...this.form, ...this.form,
files: this.form.files, files: this.form.files,
groupName: this.dictList.filter(v => v.value === this.form.groupId)[0].label groupName: this.dictList.filter((v) => v.value === this.form.groupId)[0].label,
}).then(res => { eventStatus: this.form.opts == 0 ? '2' : '0',
this.$hideLoading() })
.then((res) => {
this.$u.toast('上报成功') this.$u.toast('上报成功')
this.flag = false this.flag = false
if (res.code == 0) { if (res.code == 0) {
uni.$emit('update') uni.$emit('update')
setTimeout(() => { setTimeout(() => {
uni.navigateTo({ uni.navigateBack()
url: './List'
})
}, 600) }, 600)
} }
this.$hideLoading()
}) })
} },
} },
} }
</script> </script>
<style lang="scss"> <style lang="scss">
.album { .album {
padding-bottom: 140px; padding-bottom: 140px;
.form-item__group { .form-item__group {
margin-bottom: 24px; margin-bottom: 24px;
background: #fff; background: #fff;
} }
.limit { .limit {
text-align: right; text-align: right;
font-size: 28px; font-size: 28px;
color: #999; color: #999;
} }
.form-item { .form-item {
padding-left: 32px; padding-left: 32px;
.form-item__wrapper { .form-item__wrapper {
display: flex; display: flex;
align-items: center; align-items: center;
justify-content: space-between; justify-content: space-between;
height: 128px; height: 128px;
padding-right: 28px; padding-right: 28px;
border-bottom: 1px solid #DDDDDD; border-bottom: 1px solid #dddddd;
input { input {
flex: 1; flex: 1;
height: 100%; height: 100%;
text-align: right; text-align: right;
padding-right: 10px; padding-right: 10px;
}
.form-item__right {
display: flex;
align-items: center;
font-size: 32px;
span {
max-width: 400px;
margin-right: 8px;
color: #333333;
overflow: hidden;
white-space: nowrap;
text-overflow: ellipsis;
}
i {
font-style: normal;
margin-right: 8px;
color: #999999;
font-size: 30px;
}
}
} }
&:last-child { .form-item__right {
.form-item__wrapper { display: flex;
border-bottom: none; align-items: center;
font-size: 32px;
span {
max-width: 400px;
margin-right: 8px;
color: #333333;
overflow: hidden;
white-space: nowrap;
text-overflow: ellipsis;
} }
i {
font-style: normal;
margin-right: 8px;
color: #999999;
font-size: 30px;
}
}
}
&:last-child {
.form-item__wrapper {
border-bottom: none;
}
}
.form-item__title {
display: flex;
align-items: center;
i {
font-size: 30px;
color: #ff4466;
}
span {
font-size: 28px;
color: #999999;
}
h2 {
padding: 0 4px;
font-weight: 600;
font-size: 32px;
color: #333333;
}
}
&.form-item__imgs,
&.form-item__textarea {
.form-item__wrapper {
display: block;
height: auto;
padding-bottom: 32px;
}
textarea {
width: 100%;
height: 160px;
} }
.form-item__title { .form-item__title {
display: flex; padding: 32px 0;
align-items: center;
i {
font-size: 30px;
color: #FF4466;
}
span {
font-size: 28px;
color: #999999;
}
h2 {
padding: 0 4px;
font-weight: 600;
font-size: 32px;
color: #333333;
}
} }
.form-item__right {
&.form-item__imgs, &.form-item__textarea { padding-left: 18px;
.form-item__wrapper {
display: block;
height: auto;
padding-bottom: 32px;
}
textarea {
width: 100%;
height: 160px;
}
.form-item__title {
padding: 32px 0;
}
.form-item__right {
padding-left: 18px;
}
} }
} }
.form-flow {
height: 280px;
padding-right: 40px;
}
.flow-option {
display: flex;
justify-content: space-between;
.byself,
.report {
height: 112px;
width: 45%;
background: #F5F5F5;
line-height: 112px;
text-align: center;
font-size: 30px;
color: #333333;
}
.current {
color: #1174fe;
background: #e7f1fe !important;
position: relative;
}
}
.btn {
position: fixed;
bottom: 0;
width: 100%;
height: 120px;
background: #3975C6;
line-height: 120px;
text-align: center;
color: #FFFFFF;
}
} }
.form-flow {
height: 280px;
padding-right: 40px;
}
.flow-option {
display: flex;
justify-content: space-between;
.byself,
.report {
height: 112px;
width: 45%;
background: #f5f5f5;
line-height: 112px;
text-align: center;
font-size: 30px;
color: #333333;
}
.current {
color: #1174fe;
background: #e7f1fe !important;
position: relative;
}
}
.btn {
position: fixed;
bottom: 0;
width: 100%;
height: 120px;
background: #3975c6;
line-height: 120px;
text-align: center;
color: #ffffff;
}
}
</style> </style>

View File

@@ -4,7 +4,8 @@
<div class="avatars" v-if="data.name">{{ data.name.substring(data.name.length, data.name.length - 2) }}</div> <div class="avatars" v-if="data.name">{{ data.name.substring(data.name.length, data.name.length - 2) }}</div>
<div class="right"> <div class="right">
<div class="names">{{ data.name }}的上报</div> <!-- {{ data.name }} -->
<div class="names"><AiOpenData v-if="data.name" type="userName" :openid="data.name" />的上报</div>
<div class="times">{{ data.createTime }}</div> <div class="times">{{ data.createTime }}</div>
</div> </div>
@@ -41,10 +42,10 @@
</div> </div>
<div class="cards"> <div class="cards">
<span class="card-left" style="color:#999">照片</span> <span class="card-left" style="color: #999">照片</span>
</div> </div>
<img :src="item.url" alt="" v-for="(item, i) in data.files" :key="i" @click="previewImage(data.files, item.url)" /> <img :src="item.url" alt="" v-for="(item, i) in data.files" :key="i" @click="previewImage(data.files, item.url)" />
</div> </div>
<div class="header-bottom"> <div class="header-bottom">
@@ -70,7 +71,8 @@
<div class="cardss-right"> <div class="cardss-right">
<div class="cardsss-right-left"> <div class="cardsss-right-left">
<div class="cardssss-right-left-top"> <div class="cardssss-right-left-top">
<span>{{ item.systemExplain }}</span> <!-- <span>{{ item.systemExplain }}</span> -->
<AiOpenData v-if="item.systemExplain" type="userName" :openid="item.systemExplain" />
<div style="color: #2ea222; font-size: 16px; margin-top: 5px"> <div style="color: #2ea222; font-size: 16px; margin-top: 5px">
{{ $dict.getLabel('clapDoStatus', item.doStatus) }} {{ $dict.getLabel('clapDoStatus', item.doStatus) }}
</div> </div>
@@ -86,7 +88,7 @@
<div class="cardes-msg-top" v-if="item.doExplain">{{ item.doExplain }}</div> <div class="cardes-msg-top" v-if="item.doExplain">{{ item.doExplain }}</div>
<div class="imgs"> <div class="imgs">
<img :src="e.url" alt="" v-for="(e, index) in item.files" :key="index" @click="previewImage(item.files, e.url)" /> <img :src="e.url" alt="" v-for="(e, index) in item.files" :key="index" @click="previewImage(item.files, e.url)" />
</div> </div>
</div> </div>
</div> </div>
@@ -108,6 +110,8 @@
</template> </template>
<script> <script>
import { mapState } from 'vuex'
export default { export default {
name: 'Detail', name: 'Detail',
components: {}, components: {},
@@ -120,7 +124,9 @@ export default {
showPage: false, showPage: false,
} }
}, },
computed: {}, computed: {
...mapState(['user']),
},
watch: {}, watch: {},
onLoad(o) { onLoad(o) {
this.$dict.load('realityStatus', 'clapDoStatus').then(() => { this.$dict.load('realityStatus', 'clapDoStatus').then(() => {
@@ -154,8 +160,8 @@ export default {
}, },
previewImage(images, img) { previewImage(images, img) {
uni.previewImage({ uni.previewImage({
urls: images.map(v => v.url), urls: images.map((v) => v.url),
current: img current: img,
}) })
}, },
}, },
@@ -314,7 +320,7 @@ uni-page-body {
} }
} }
.cardss-right { .cardss-right {
width: calc(100% - 110px); width: calc(100% - 184px);
display: flex; display: flex;
justify-content: space-between; justify-content: space-between;
.cardsss-right-left { .cardsss-right-left {

View File

@@ -0,0 +1,25 @@
<template>
<div class="myReply">1</div>
</template>
<script>
export default {
name: 'myReply',
components: {},
props: {},
data() {
return {}
},
computed: {},
watch: {},
onLoad() {},
onShow() {},
methods: {},
}
</script>
<style scoped lang="scss">
.myReply {
height: 100%;
}
</style>

View File

@@ -174,12 +174,17 @@ uni-page-body {
font-family: PingFang-SC-Heavy, PingFang-SC; font-family: PingFang-SC-Heavy, PingFang-SC;
font-weight: 800; font-weight: 800;
color: #333333; color: #333333;
display: inline-block;
width: 140px;
vertical-align: top;
} }
.boxesRight { .boxesRight {
margin-left: 40px; margin-left: 40px;
font-size: 28px; font-size: 28px;
font-family: PingFangSC-Regular, PingFang SC; font-family: PingFangSC-Regular, PingFang SC;
color: #666666; color: #666666;
display: inline-block;
width: calc(100% - 200px);
} }
} }
} }

View File

@@ -207,11 +207,13 @@ export default {
health: this.form.health.join(',') health: this.form.health.join(',')
}).then((res) => { }).then((res) => {
if (res.code == 0) { if (res.code == 0) {
this.$u.toast("上报成功");
this.getCheckTodayReport() this.getCheckTodayReport()
this.getStatis() this.getStatis()
uni.navigateTo({url: './Success?status=1'})
} }
}); }).catch(() => {
uni.navigateTo({url: './Success?status=0'})
})
}, },
getCheckTodayReport() { getCheckTodayReport() {
this.$http.post(`/app/appepidemichealthreport/checkTodayReport`).then((res) => { this.$http.post(`/app/appepidemichealthreport/checkTodayReport`).then((res) => {
@@ -631,7 +633,7 @@ uni-page-body {
color: #f46; color: #f46;
} }
.color-2{ .color-2{
color: #1365DD; color: #f46;
} }
} }
</style> </style>

View File

@@ -113,7 +113,11 @@ export default {
}, },
getStatis() { getStatis() {
this.dayList = [] this.dayList = []
this.$http.post(`/app/appepidemichealthreport/statistic?userId=${this.userId}`).then((res) => { this.$http.post(`/app/appepidemichealthreport/statistic`, this.userId, {
headers: {
'Content-Type': 'text/plain'
}
}).then((res) => {
if (res.code == 0) { if (res.code == 0) {
Object.keys(res.data).forEach((key) => { Object.keys(res.data).forEach((key) => {
var info = { var info = {

View File

@@ -0,0 +1,68 @@
<template>
<div class="success">
<img src="./components/img/success.png" alt="" v-if="status">
<img src="./components/img/fail.png" alt="" v-else>
<p>{{status ? '上报成功!' : '上报失败!'}}</p>
<div class="footer">{{status ? '确定' : '我知道了'}}</div>
</div>
</template>
<script>
import { mapState } from 'vuex'
export default {
data() {
return {
status: 1
}
},
onShow() {
document.title = '健康上报'
},
onLoad(option) {
this.status = option.status
},
methods: {
back() {
uni.navigateBack()
}
},
}
</script>
<style lang="scss" scoped>
uni-page-body{
height: 100%;
background-color: #fff;
}
.success {
text-align: center;
img{
width: 192px;
height: 192px;
margin: 96px 0 16px 0;
}
p{
line-height: 50px;
color: #333;
font-size: 36px;
font-weight: 500;
text-align: center;
margin-bottom: 72px;
}
.footer{
width: calc(100% - 96px);
height: 88px;
line-height: 88px;
background: #1365DD;
box-shadow: inset 0px 1px 0px 0px #EEEEEE;
font-size: 32px;
font-family: PingFangSC-Medium, PingFang SC;
font-weight: 500;
color: #FFF;
text-align: center;
border-radius: 8px;
margin-left: 48px;
}
}
</style>

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 18 KiB

View File

@@ -52,7 +52,7 @@
<span class="label"><span class="tips">*</span>所属区域</span> <span class="label"><span class="tips">*</span>所属区域</span>
<div class="value"> <div class="value">
<AiAreaPicker v-model="form.areaId" @select="areaSelect" :fullName.sync="form.areaName" mode="custom" all> <AiAreaPicker v-model="form.areaId" @select="areaSelect" :fullName.sync="form.areaName" mode="custom" all>
<span class="label" v-if="form.areaName" >{{ form.areaName }}</span> <span class="label" v-if="form.areaName" style="font-size: 16px">{{ form.areaName }}</span>
<span v-else :class="form.areaName === '' ? 'color-999' : ''" >请选择</span> <span v-else :class="form.areaName === '' ? 'color-999' : ''" >请选择</span>
<u-icon name="arrow-right" color="#cccccc" size="24" style="margin-left:4px;"/> <u-icon name="arrow-right" color="#cccccc" size="24" style="margin-left:4px;"/>
</AiAreaPicker> </AiAreaPicker>
@@ -62,7 +62,7 @@
<span class="label"><span class="tips"></span>详细地址</span> <span class="label"><span class="tips"></span>详细地址</span>
<div class="value"> <div class="value">
<u-input type="textarea" placeholder="请输入" v-model="form.address" <u-input type="textarea" placeholder="请输入" v-model="form.address"
placeholder-style="color:#999;font-size:16px;" :maxlength="20" auto-height/> placeholder-style="color:#999;font-size:16px;" :maxlength="20" auto-height style="font-size: 16px"/>
</div> </div>
</div> </div>
@@ -95,6 +95,14 @@
</div> </div>
</div> </div>
<div class="item" v-if="item.type == 'money'">
<span class="label"><span class="tips"></span>{{ item.label }}</span>
<div class="value">
<u-input type="number" placeholder="请输入" v-model="form[item.formDbName]" input-align="right"
placeholder-style="color:#999;font-size:16px;" height="48" :maxlength="item.maxlength" :clearable="false" @input="changeMoney"/>
</div>
</div>
<div class="item" v-if="item.type == 'select'"> <div class="item" v-if="item.type == 'select'">
<span class="label"><span class="tips"></span>{{ item.label }}</span> <span class="label"><span class="tips"></span>{{ item.label }}</span>
<div class="value" @click="selectClick(item.dict, item.formDbName)"> <div class="value" @click="selectClick(item.dict, item.formDbName)">
@@ -197,7 +205,7 @@ export default {
list: [ // 精神病人 list: [ // 精神病人
{ {
label: '家庭年收入', label: '家庭年收入',
type: 'number', type: 'money',
formDbName: 'income', formDbName: 'income',
maxlength: 9 maxlength: 9
}, },
@@ -442,6 +450,13 @@ export default {
} }
}, },
changeMoney() {
let moneyReg = /^([0-9]{1,5})(\.[0-9]{1,3}){0,1}$/
if (!moneyReg.test(this.form.income)) {
return this.$u.toast('输入的数字不能超过10万')
}
},
confirmGirdSelect(e) { confirmGirdSelect(e) {
this.form.girdId = e[0].value this.form.girdId = e[0].value
this.form.girdName = e[0].label this.form.girdName = e[0].label
@@ -536,6 +551,7 @@ export default {
<style lang="scss" scoped> <style lang="scss" scoped>
.add { .add {
padding-bottom: 112px; padding-bottom: 112px;
font-size: 32px;
.item { .item {
width: 100%; width: 100%;

View File

@@ -51,7 +51,7 @@
</div> </div>
<div class="user-info"> <div class="user-info">
<p class="name">{{e.name}} <p class="name">{{e.name}}
<span class="btn-icon" v-if="userGird != 0"> <span class="btn-icon" v-if="userGird != 0 && user.wxUserId == e.createUserId">
<img src="./img/edit-icon.png" alt="" @click="toEdit(e,item.dictValue)"> <img src="./img/edit-icon.png" alt="" @click="toEdit(e,item.dictValue)">
<img src="./img/del-icon.png" alt="" @click="del(e,item.dictValue)"> <img src="./img/del-icon.png" alt="" @click="del(e,item.dictValue)">
</span> </span>