setNavigationBarTitle

This commit is contained in:
花有清香月有阴
2021-12-24 11:38:05 +08:00
parent 8a4d9446f4
commit dc86715241
9 changed files with 150 additions and 131 deletions

View File

@@ -182,6 +182,7 @@ export default {
}, },
watch: {}, watch: {},
onLoad() { onLoad() {
uni.setNavigationBarTitle({ title: '居民信息管理' })
this.getEchart1() this.getEchart1()
this.areaId = this.user.areaId this.areaId = this.user.areaId
}, },

View File

@@ -74,7 +74,6 @@
</template> </template>
<TagManage v-if="showTagManage" /> <TagManage v-if="showTagManage" />
</div> </div>
</template> </template>
@@ -101,6 +100,9 @@ export default {
showTagManage: false, showTagManage: false,
} }
}, },
onLoad() {
uni.setNavigationBarTitle({ title: '添加标签' })
},
computed: { computed: {
tagsList() { tagsList() {
let obj = {} let obj = {}

View File

@@ -2,97 +2,97 @@
<section class="document"> <section class="document">
<div class="card"> <div class="card">
<div class="info"> <div class="info">
<u-image border-radius="4" :src="top.detail.avatar" width="118" height="118"/> <u-image border-radius="4" :src="top.detail.avatar" width="118" height="118" />
<div class="fill"> <div class="fill">
<b>{{ top.detail.realName || top.detail.name }}</b> <b>{{ top.detail.realName || top.detail.name }}</b>
<u-row> <u-row>
<span class="idNumber" v-html="IDObj.id"/> <span class="idNumber" v-html="IDObj.id" />
<a @tap="showID=!showID">{{ IDObj.btn }}</a> <a @tap="showID = !showID">{{ IDObj.btn }}</a>
</u-row> </u-row>
</div> </div>
</div> </div>
<AiCell label="性别">{{ $dict.getLabel("sex", resident.sex) || "-" }}</AiCell> <AiCell label="性别">{{ $dict.getLabel('sex', resident.sex) || '-' }}</AiCell>
<AiCell label="出生日期">{{ resident.birthDate }}</AiCell> <AiCell label="出生日期">{{ resident.birthDate }}</AiCell>
<AiCell label="年龄">{{ resident.age }}</AiCell> <AiCell label="年龄">{{ resident.age }}</AiCell>
<AiCell label="籍贯">{{ resident.birthplaceAreaName }}</AiCell> <AiCell label="籍贯">{{ resident.birthplaceAreaName }}</AiCell>
<AiCell label="民族">{{ $dict.getLabel("nation", resident.nation) || "-" }}</AiCell> <AiCell label="民族">{{ $dict.getLabel('nation', resident.nation) || '-' }}</AiCell>
<AiCell label="文化程度">{{ $dict.getLabel("education", resident.education) || "-" }}</AiCell> <AiCell label="文化程度">{{ $dict.getLabel('education', resident.education) || '-' }}</AiCell>
<AiCell label="兵役状况">{{ $dict.getLabel("militaryStatus", resident.militaryStatus) || "-" }}</AiCell> <AiCell label="兵役状况">{{ $dict.getLabel('militaryStatus', resident.militaryStatus) || '-' }}</AiCell>
<AiCell label="政治面貌">{{ $dict.getLabel("politicsStatus", resident.politicsStatus) || "-" }}</AiCell> <AiCell label="政治面貌">{{ $dict.getLabel('politicsStatus', resident.politicsStatus) || '-' }}</AiCell>
<AiCell label="职业">{{ $dict.getLabel("job", resident.job) || "-" }}</AiCell> <AiCell label="职业">{{ $dict.getLabel('job', resident.job) || '-' }}</AiCell>
<AiCell label="宗教信仰">{{ $dict.getLabel("faithType", resident.faithType) || "-" }}</AiCell> <AiCell label="宗教信仰">{{ $dict.getLabel('faithType', resident.faithType) || '-' }}</AiCell>
</div> </div>
<div class="card"> <div class="card">
<AiCell title label="联络信息"/> <AiCell title label="联络信息" />
<AiCell label="联系方式">{{ resident.phone }}</AiCell> <AiCell label="联系方式">{{ resident.phone }}</AiCell>
<AiCell label="现住址">{{ resident.currentAreaName + resident.currentAddress }}</AiCell> <AiCell label="现住址">{{ resident.currentAreaName + resident.currentAddress }}</AiCell>
</div> </div>
<div class="card"> <div class="card">
<AiCell title label="家庭信息"/> <AiCell title label="家庭信息" />
<AiCell label="是否户主">{{ $dict.getLabel("householdName", resident.householdName) || "-" }}</AiCell> <AiCell label="是否户主">{{ $dict.getLabel('householdName', resident.householdName) || '-' }}</AiCell>
<AiCell label="与户主关系">{{ $dict.getLabel("householdRelation", resident.householdRelation) || "-" }}</AiCell> <AiCell label="与户主关系">{{ $dict.getLabel('householdRelation', resident.householdRelation) || '-' }}</AiCell>
<AiCell label="现住址">{{ resident.householdAreaName + resident.householdAddress }}</AiCell> <AiCell label="现住址">{{ resident.householdAreaName + resident.householdAddress }}</AiCell>
</div> </div>
<div class="card"> <div class="card">
<AiCell title label="家庭成员"/> <AiCell title label="家庭成员" />
<AiTable :data="family" :colConfigs="colConfigs"/> <AiTable :data="family" :colConfigs="colConfigs" />
</div> </div>
</section> </section>
</template> </template>
<script> <script>
export default { export default {
name: "document", name: 'document',
inject: ['top'], inject: ['top'],
computed: { computed: {
IDObj() { IDObj() {
return this.showID ? { return this.showID
id: this.resident?.idNumber, ? {
btn: '隐藏' id: this.resident?.idNumber,
} : { btn: '隐藏',
id: this.resident?.idNumber?.replace(/(\d{10}).+/g, '$1******'), }
btn: '显示' : {
} id: this.resident?.idNumber?.replace(/(\d{10}).+/g, '$1******'),
btn: '显示',
}
}, },
colConfigs() { colConfigs() {
return [ return [
{label: "与户主关系", prop: "householdRelation", width: '160rpx', dict: "householdRelation"}, { label: '与户主关系', prop: 'householdRelation', width: '160rpx', dict: 'householdRelation' },
{label: "姓名", prop: "name", width: '120rpx'}, { label: '姓名', prop: 'name', width: '120rpx' },
{label: "性别", prop: "sex", dict: "sex"}, { label: '性别', prop: 'sex', dict: 'sex' },
{label: "年龄", prop: "age"}, { label: '年龄', prop: 'age' },
{label: "身份证号", prop: "idNumber", width: '320rpx'}, { label: '身份证号', prop: 'idNumber', width: '320rpx' },
] ]
}, },
resident() { resident() {
let obj = {} let obj = {}
Object.keys(this.top.detail?.residentInfo?.resident || {}).map(e => { Object.keys(this.top.detail?.residentInfo?.resident || {}).map((e) => {
obj[e] = this.top.detail?.residentInfo?.resident[e] || "" obj[e] = this.top.detail?.residentInfo?.resident[e] || ''
}) })
return obj return obj
}, },
family() { family() {
return this.top.detail?.residentInfo?.family?.map(e => ({...e, householdRelation: e.householdRelation || "户主"})) return this.top.detail?.residentInfo?.family?.map((e) => ({ ...e, householdRelation: e.householdRelation || '户主' }))
} },
}, },
data() { data() {
return { return {
showID: false, showID: false,
familyList: [] familyList: [],
} }
}, },
created() { onLoad() {
this.$dict.load("sex", "nation", "education", "job", uni.setNavigationBarTitle({ title: '居民详情' })
"faithType", "politicsStatus", "militaryStatus", "householdRelation", this.$dict.load('sex', 'nation', 'education', 'job', 'faithType', 'politicsStatus', 'militaryStatus', 'householdRelation', 'householdName')
"householdName") },
}
} }
</script> </script>
<style lang="scss" scoped> <style lang="scss" scoped>
.document { .document {
overflow-y: auto; overflow-y: auto;
background: #F5F5F5; background: #f5f5f5;
.info { .info {
height: 186px; height: 186px;
@@ -101,7 +101,7 @@ export default {
align-items: center; align-items: center;
.fill { .fill {
color: #3C7FC8; color: #3c7fc8;
margin-left: 24px; margin-left: 24px;
font-size: 28px; font-size: 28px;
line-height: 40px; line-height: 40px;

View File

@@ -2,58 +2,57 @@
<section class="info"> <section class="info">
<div class="card"> <div class="card">
<div class="baseInfo"> <div class="baseInfo">
<u-image border-radius="4" :src="top.detail.avatar" width="118" height="118"/> <u-image border-radius="4" :src="top.detail.avatar" width="118" height="118" />
<div class="fill"> <div class="fill">
<b>{{ top.detail.name }}</b> <b>{{ top.detail.name }}</b>
<div v-if="top.detail.type==1" class="wx">@微信</div> <div v-if="top.detail.type == 1" class="wx">@微信</div>
<div v-if="top.detail.type==2">@企业微信</div> <div v-if="top.detail.type == 2">@企业微信</div>
</div> </div>
<div class="certBtn" @tap="handleCert">{{ !isCert ? "实名认证" : "解绑" }}</div> <div class="certBtn" @tap="handleCert">{{ !isCert ? '实名认证' : '解绑' }}</div>
</div> </div>
<u-row> <u-row>
<AiCell class="half" top-label label="来源">{{ $dict.getLabel("wxCustomerAddWay", top.detail.addWay) }}</AiCell> <AiCell class="half" top-label label="来源">{{ $dict.getLabel('wxCustomerAddWay', top.detail.addWay) }}</AiCell>
<AiCell class="half" top-label label="添加时间">{{ top.detail.createTime }}</AiCell> <AiCell class="half" top-label label="添加时间">{{ top.detail.createTime }}</AiCell>
<AiCell class="half" top-label label="真实姓名">{{ top.detail.realName }}</AiCell> <AiCell class="half" top-label label="真实姓名">{{ top.detail.realName }}</AiCell>
<AiCell class="half" top-label label="手机号码">{{ resident.phone || "-" }}</AiCell> <AiCell class="half" top-label label="手机号码">{{ resident.phone || '-' }}</AiCell>
<AiCell class="half" top-label label="家庭积分">{{ resident.familyIntegral }}</AiCell> <AiCell class="half" top-label label="家庭积分">{{ resident.familyIntegral }}</AiCell>
<AiCell class="half" top-label label="个人积分">{{ resident.personalIntegral }}</AiCell> <AiCell class="half" top-label label="个人积分">{{ resident.personalIntegral }}</AiCell>
</u-row> </u-row>
</div> </div>
<div class="card"> <div class="card">
<AiCell title label="公共标签"> <AiCell title label="公共标签">
<u-icon label="添加" size="38" name="iconAdd" custom-prefix="iconfont" color="#1365DD" <u-icon label="添加" size="38" name="iconAdd" custom-prefix="iconfont" color="#1365DD" label-color="#1365DD" @tap="top.showTagManage = true" />
label-color="#1365DD" @tap="top.showTagManage=true"/>
</AiCell> </AiCell>
<AiCell top-label v-for="(op,name) in tagsList" :label="name" :key="name"> <AiCell top-label v-for="(op, name) in tagsList" :label="name" :key="name">
<u-row> <u-row>
<div class="tag" v-for="(tag,j) in op" :key="j">{{ tag }}</div> <div class="tag" v-for="(tag, j) in op" :key="j">{{ tag }}</div>
</u-row> </u-row>
</AiCell> </AiCell>
</div> </div>
<div class="card"> <div class="card">
<AiCell title label="动态"/> <AiCell title label="动态" />
<AiCell top-label> <AiCell top-label>
<div class="logItem" v-for="item in customLogs" :key="item.id"> <div class="logItem" v-for="item in customLogs" :key="item.id">
<div flex class="column" shrink> <div flex class="column" shrink>
<div class="dot"/> <div class="dot" />
<div class="line fill"/> <div class="line fill" />
</div> </div>
<div flex class="start column"> <div flex class="start column">
<b>{{ $dict.getLabel('wxCustomerLogType', item.type) }}</b> <b>{{ $dict.getLabel('wxCustomerLogType', item.type) }}</b>
<span>{{ item.createTime }}</span> <span>{{ item.createTime }}</span>
<div v-html="item.content"/> <div v-html="item.content" />
</div> </div>
</div> </div>
</AiCell> </AiCell>
</div> </div>
<u-mask :show="dialog" @tap="dialog=false"> <u-mask :show="dialog" @tap="dialog = false">
<div class="bindCert" @tap.stop> <div class="bindCert" @tap.stop>
<b class="title">实名认证</b> <b class="title">实名认证</b>
<u-input class="searchInput" v-model="search" clearable placeholder="请输入姓名或身份证号" @input="handleSearch"/> <u-input class="searchInput" v-model="search" clearable placeholder="请输入姓名或身份证号" @input="handleSearch" />
<div class="residents"> <div class="residents">
<div flex class="spb" v-for="(op,i) in result" :key="i" @tap="bindCert(op.id)"> <div flex class="spb" v-for="(op, i) in result" :key="i" @tap="bindCert(op.id)">
<div v-html="op.name"/> <div v-html="op.name" />
<div v-html="op.idNumber"/> <div v-html="op.idNumber" />
</div> </div>
</div> </div>
</div> </div>
@@ -66,10 +65,10 @@
</template> </template>
<script> <script>
import {mapActions} from "vuex"; import { mapActions } from 'vuex'
export default { export default {
name: "info", name: 'info',
inject: ['top'], inject: ['top'],
computed: { computed: {
resident() { resident() {
@@ -77,7 +76,7 @@ export default {
}, },
tagsList() { tagsList() {
let obj = {} let obj = {}
this.top.detail?.tags?.map(e => { this.top.detail?.tags?.map((e) => {
if (e.type == 1 && e?.groupName) { if (e.type == 1 && e?.groupName) {
if (obj?.[e.groupName]) { if (obj?.[e.groupName]) {
obj[e.groupName].push(e.tagName) obj[e.groupName].push(e.tagName)
@@ -92,33 +91,34 @@ export default {
return !!this.top?.detail?.residentInfo return !!this.top?.detail?.residentInfo
}, },
isMobile() { isMobile() {
return ["Android", "iPhone", "SymbianOS", "Windows Phone", "iPad", "iPod"] return ['Android', 'iPhone', 'SymbianOS', 'Windows Phone', 'iPad', 'iPod'].some((e) => navigator.userAgent.indexOf(e) > -1)
.some(e => navigator.userAgent.indexOf(e) > -1) },
}
}, },
data() { data() {
return { return {
dialog: false, dialog: false,
search: "", search: '',
result: [], result: [],
customLogs: [] customLogs: [],
} }
}, },
methods: { methods: {
...mapActions(['injectJWeixin', 'wxInvoke']), ...mapActions(['injectJWeixin', 'wxInvoke']),
searchResident() { searchResident() {
this.$http.post("/app/appresident/check-name", null, { this.$http
params: {name: this.search} .post('/app/appresident/check-name', null, {
}).then(res => { params: { name: this.search },
if (res?.data) { })
let reg = new RegExp(this.search, 'g') .then((res) => {
this.result = res.data?.map(e => ({ if (res?.data) {
...e, let reg = new RegExp(this.search, 'g')
name: e.name.replace(reg, `<b>${this.search}</b>`), this.result = res.data?.map((e) => ({
idNumber: e.idNumber.replace(reg, `<b>${this.search}</b>`), ...e,
})) name: e.name.replace(reg, `<b>${this.search}</b>`),
} idNumber: e.idNumber.replace(reg, `<b>${this.search}</b>`),
}) }))
}
})
}, },
handleSearch() { handleSearch() {
if (this.search?.length >= 2) { if (this.search?.length >= 2) {
@@ -129,58 +129,73 @@ export default {
}, },
handleCert() { handleCert() {
if (this.isCert) { if (this.isCert) {
this.$confirm("是否要解绑当前实名认证?").then(() => { this.$confirm('是否要解绑当前实名认证?').then(() => {
this.$http.post("/app/wxcp/wxcustomer/unBindCustomer2Resident", null, { this.$http
params: {residentId: this.resident.id, customerId: this.top.custom} .post('/app/wxcp/wxcustomer/unBindCustomer2Resident', null, {
}).then(res => { params: { residentId: this.resident.id, customerId: this.top.custom },
if (res?.code == 0) { })
this.$u.toast("解除绑定成功!") .then((res) => {
this.top.getContact() if (res?.code == 0) {
} this.$u.toast('解除绑定成功!')
}) this.top.getContact()
}
})
}) })
} else this.dialog = true } else this.dialog = true
}, },
bindCert(residentId) { bindCert(residentId) {
this.dialog = false this.dialog = false
this.$confirm("是否要绑定该居民?").then(() => { this.$confirm('是否要绑定该居民?')
this.$http.post("/app/wxcp/wxcustomer/bindCustomer2Resident", null, { .then(() => {
params: {residentId, customerId: this.top.custom} this.$http
}).then(res => { .post('/app/wxcp/wxcustomer/bindCustomer2Resident', null, {
if (res?.code == 0) { params: { residentId, customerId: this.top.custom },
this.$u.toast("绑定成功!") })
this.top.getContact() .then((res) => {
} if (res?.code == 0) {
}).catch(err => { this.$u.toast('绑定成功!')
this.$u.toast(err) this.top.getContact()
setTimeout(() => this.dialog = true, 1000) }
})
.catch((err) => {
this.$u.toast(err)
setTimeout(() => (this.dialog = true), 1000)
})
}) })
}).catch(() => this.dialog = true) .catch(() => (this.dialog = true))
}, },
getCustomLog(customerId) { getCustomLog(customerId) {
customerId && this.$http.post("/app/wxcp/wxcustomerlog/listAll", null, { customerId &&
params: {customerId} this.$http
}).then(res => { .post('/app/wxcp/wxcustomerlog/listAll', null, {
if (res?.data) { params: { customerId },
this.customLogs = res.data })
} .then((res) => {
}) if (res?.data) {
this.customLogs = res.data
}
})
}, },
handleTel() { handleTel() {
location.href = "tel:" + this.resident.phone location.href = 'tel:' + this.resident.phone
}, },
handleWechat() { handleWechat() {
this.wxInvoke(['openUserProfile', { this.wxInvoke([
type: 2, 'openUserProfile',
userid: this.top.custom {
}, () => 0]) type: 2,
} userid: this.top.custom,
},
() => 0,
])
},
}, },
created() { onLoad() {
this.$dict.load("wxCustomerAddWay", 'wxCustomerLogType') uni.setNavigationBarTitle({ title: '居民详情' })
this.$dict.load('wxCustomerAddWay', 'wxCustomerLogType')
this.getCustomLog(this.top.custom) this.getCustomLog(this.top.custom)
this.injectJWeixin('openUserProfile') this.injectJWeixin('openUserProfile')
} },
} }
</script> </script>
@@ -203,7 +218,7 @@ export default {
align-items: center; align-items: center;
.fill { .fill {
color: #3C7FC8; color: #3c7fc8;
margin-left: 24px; margin-left: 24px;
font-size: 28px; font-size: 28px;
line-height: 40px; line-height: 40px;
@@ -216,7 +231,7 @@ export default {
} }
.wx { .wx {
color: #2EA222; color: #2ea222;
} }
} }
} }
@@ -269,7 +284,7 @@ export default {
.searchInput { .searchInput {
margin: 16px 0; margin: 16px 0;
border: 1px solid #D0D4DC; border: 1px solid #d0d4dc;
border-radius: 8px; border-radius: 8px;
padding: 0 16px !important; padding: 0 16px !important;
flex: 0; flex: 0;
@@ -309,7 +324,7 @@ export default {
width: 16px; width: 16px;
height: 16px; height: 16px;
background: $uni-color-primary; background: $uni-color-primary;
border: 8px solid #FFFFFF; border: 8px solid #ffffff;
border-radius: 50%; border-radius: 50%;
margin: 8px 0; margin: 8px 0;
} }
@@ -346,7 +361,6 @@ export default {
& > div { & > div {
margin-top: 16px; margin-top: 16px;
} }
} }
} }
} }

View File

@@ -11,7 +11,6 @@
<component :is="currentTab.comp" /> <component :is="currentTab.comp" />
</template> </template>
</template> </template>
</section> </section>
</template> </template>
@@ -30,6 +29,9 @@ export default {
id: '', id: '',
} }
}, },
onLoad() {
uni.setNavigationBarTitle({ title: '居民详情' })
},
computed: { computed: {
tabs() { tabs() {
return [ return [

View File

@@ -108,6 +108,7 @@ export default {
...mapState(['user']), ...mapState(['user']),
}, },
onLoad() { onLoad() {
uni.setNavigationBarTitle({ title: '走访慰问' })
this.areaId = this.user.areaId this.areaId = this.user.areaId
this.$dict.load('realityStatus').then(() => { this.$dict.load('realityStatus').then(() => {
this.getList() this.getList()

View File

@@ -44,8 +44,6 @@
</div> </div>
<div class="btn" @click="submit">保存</div> <div class="btn" @click="submit">保存</div>
</div> </div>
<component v-else :is="comp" :paramss="params" @back="backlist"></component> <component v-else :is="comp" :paramss="params" @back="backlist"></component>
@@ -88,6 +86,7 @@ export default {
}, },
computed: { ...mapState(['user']) }, computed: { ...mapState(['user']) },
created() { created() {
uni.setNavigationBarTitle({ title: '新建走访' })
this.areaIdProps = this.user.areaId this.areaIdProps = this.user.areaId
this.forms.areaId = this.user.areaId this.forms.areaId = this.user.areaId
this.$dict.load('realityStatus').then(() => { this.$dict.load('realityStatus').then(() => {

View File

@@ -31,8 +31,6 @@
<img :src="item.url" alt="" v-for="(item, index) in data.images" :key="index" /> <img :src="item.url" alt="" v-for="(item, index) in data.images" :key="index" />
</div> </div>
</div> </div>
</div> </div>
</template> </template>
@@ -49,7 +47,8 @@ export default {
} }
}, },
computed: {}, computed: {},
created() { onLoad() {
uni.setNavigationBarTitle({ title: '走访详情' })
this.$dict.load('realityStatus').then(() => { this.$dict.load('realityStatus').then(() => {
this.getDetail() this.getDetail()
}) })

View File

@@ -71,7 +71,8 @@ export default {
} }
}, },
computed: {}, computed: {},
created() { onLoad() {
uni.setNavigationBarTitle({ title: '选择走访慰问对象' })
this.getDiyList() this.getDiyList()
}, },
mounted() {}, mounted() {},