Browse Source

居民详情页面实现,还差关系图谱

work_tab_bar
mk 2 years ago
parent
commit
d6b580d51d
  1. 5
      pages/resiAndHouse/resiAndHouse.js
  2. 2
      pages/resiAndHouse/resiAndHouse.wxml
  3. 1
      subpages/addResi/pages/addResi/addResi.wxss
  4. 843
      subpages/searchResult/pages/punchCard/punchCard.js
  5. 114
      subpages/searchResult/pages/punchCard/punchCard.wxml
  6. 346
      subpages/searchResult/pages/punchCard/punchCard.wxss
  7. 8
      utils/api.js

5
pages/resiAndHouse/resiAndHouse.js

@ -215,6 +215,11 @@ Page({
console.log(err);
})
},
toResiDetail(){
wx.navigateTo({
url: `/subpages/searchResult/pages/punchCard/punchCard?resiId=${'1765976717767618562'}`,
})
},
onFinish(e){
console.log(e);
},

2
pages/resiAndHouse/resiAndHouse.wxml

@ -46,7 +46,7 @@
</view>
</view>
<view class="form_item" wx:for="{{resiList}}" :wx:key="{{index}}">
<view class="form_item" wx:for="{{resiList}}" :wx:key="{{index}}" bind:tap="toResiDetail">
<view class="box_18">
<text lines="1" class="text_16">{{item.name}}</text>
<view class="resi_tag">

1
subpages/addResi/pages/addResi/addResi.wxss

@ -168,7 +168,6 @@ page {
box-sizing: border-box;
padding-bottom: constant(safe-area-inset-bottom);
padding-bottom: env(safe-area-inset-bottom);
}
.bot_btn .bottom_btn{
width: 240rpx;

843
subpages/searchResult/pages/punchCard/punchCard.js

@ -1,31 +1,561 @@
// subpages/searchResult/pages/punchCard/punchCard.js
import api from "../../../../utils/api"
var http = require('../../../../utils/request.js')
const QQMapWX = require('../../../../utils/qqmap-wx-jssdk')
const app = getApp()
var timerId= null;
var timerId = null;
Page({
/**
* 页面的初始数据
*/
data: {
form:{
name:"",
birthday:"",
mobile:"",
gridName:"",
homeName:"",
genderName:"",
},
resiId:"",
punchFlag:null,
currentTime:'',
address:'',
longitude:'',
latitude:'',
form: {},
resiId: "",
punchFlag: null,
currentTime: '',
address: '',
longitude: '',
latitude: '',
agencyLevel: '',
recentTime: '',
lastLog: {}
lastLog: {},
tabList: [{
name: '基础信息',
filledQty: "0",
totalQty: '1'
}, {
name: '基础信息',
filledQty: "0",
totalQty: '1'
}, {
name: '基础信息',
filledQty: "0",
totalQty: '1'
}],
originalExpandList: [{
id: "healthDto",
title: "残疾信息",
scrollId: "disability",
children: [{
label: "残疾类别",
itemType: "select1",
formName: "disabilityCategoryCode",
opctionUrl: "sys/dict/data/dictlist",
opctionParams: {
dictType: "disability_category_code"
},
opction: [],
},
{
label: "残疾等级",
itemType: "select1",
formName: "disabilityLevel",
opctionUrl: "sys/dict/data/dictlist",
opctionParams: {
dictType: "disability_level"
},
opction: [],
},
{
label: "残疾证号",
itemType: "input1",
formName: "disabilityNum",
},
{
label: "残疾说明",
itemType: "input1",
formName: "disabilityDesc",
},
{
label: "监护人",
itemType: "radio1",
formName: "guardianFlag",
opction: [{
label: "有",
formName: "",
value: 1
},
{
label: "无",
formName: "",
value: 0
},
],
},
{
label: "监护人姓名",
itemType: "input1",
formName: "guardianName",
},
{
label: "监护人联系电话",
itemType: "input1",
formName: "guardianMobile",
},
{
label: "技能特长",
itemType: "radio1",
formName: "specialSkillFlag",
opction: [{
label: "有",
formName: "",
value: 1
},
{
label: "无",
formName: "",
value: 0
},
],
},
{
label: "劳动能力",
itemType: "radio1",
formName: "workCapacityFlag",
opction: [{
label: "有",
formName: "",
value: 1
},
{
label: "无",
formName: "",
value: 0
},
],
},
],
},
{
id: "seriousIllnessDto",
title: "大病信息",
scrollId: "serious_illness",
children: [{
label: "所患大病",
itemType: "checkbox",
formName: "illnessCodes",
opctionUrl: "sys/dict/data/dictlist",
opctionParams: {
dictType: "illness_code"
},
opction: [],
}, ],
},
{
id: "chronicDiseaseDto",
title: "慢病信息",
scrollId: "chronic_disease",
children: [{
label: "所患慢病",
itemType: "checkbox",
formName: "chronicDiseaseCodes",
opctionUrl: "sys/dict/data/dictlist",
opctionParams: {
dictType: "chronic_disease_code"
},
opction: [],
}, ],
},
{
id: "deathDto",
title: "死亡信息",
scrollId: "death",
children: [{
label: "死亡时间",
itemType: "datepicker1",
formName: "deathTime",
}, ],
},
{
id: "oldPeopleDto",
title: "老年人信息",
scrollId: "old_people",
children: [{
label: "老年人分类",
itemType: "checkbox",
multiple: true,
formName: "oldPeopleCategories",
opctionUrl: "sys/dict/data/dictlist",
opctionParams: {
dictType: "oldPeople_categories"
},
},
{
label: "居住情况",
itemType: "select1",
formName: "resideSituation",
opctionUrl: "sys/dict/data/dictlist",
opctionParams: {
dictType: "reside_situation"
},
},
{
label: "高龄补助",
itemType: "inputNum",
formName: "oldSubsidy",
},
],
},
{
id: "subsistenceAllowanceDto",
title: "低保信息",
scrollId: "subsistence_allowance",
children: [{
label: "低保类别",
itemType: "select1",
formName: "category",
opctionUrl: "sys/dict/data/dictlist",
opctionParams: {
dictType: "subsistence_allowance_category"
},
},
{
label: "低保享受原因",
itemType: "checkbox",
formName: "reasons",
opctionUrl: "sys/dict/data/dictlist",
opctionParams: {
dictType: "subsistence_allowance_reasons"
},
opction: [],
},
],
},
{
id: "parymemberInfoDto",
title: "党员信息",
scrollId: "party_member",
children: [{
label: "入党时间",
itemType: "datepicker1",
formName: "joinTime",
opction: [],
},
{
label: "转正时间",
itemType: "datepicker1",
formName: "positiveTime",
opction: [],
},
{
label: "所属党组织",
itemType: "cascader1",
formName: "partyOrgId",
opction: [],
},
{
label: "流动党员",
itemType: "radio1",
formName: "flowFlag",
opction: [{
label: "是",
value: 1
},
{
label: "否",
value: 0
},
],
},
{
label: "流动党员活动证号",
itemType: "input1",
formName: "flowActNum",
},
{
label: "职务",
itemType: "select1",
formName: "partyJob",
opctionUrl: "sys/dict/data/dictlist",
opctionParams: {
dictType: "party_job"
},
opction: [],
},
{
label: "工作职责",
itemType: "input1",
formName: "duty",
},
{
label: "是否退休",
itemType: "radio1",
formName: "retiredFlag",
opction: [{
label: "是",
value: 1
},
{
label: "否",
value: 0
},
],
},
{
label: "党员中心户",
itemType: "radio1",
formName: "centerFlag",
opction: [{
label: "是",
value: 1
},
{
label: "否",
value: 0
},
],
},
{
label: "免学习",
itemType: "radio1",
formName: "studyNotNeed",
opction: [{
label: "是",
value: 1
},
{
label: "否",
value: 0
},
],
},
{
label: "入党时所在党支部",
itemType: "input1",
formName: "joinBranchName",
},
{
label: "组织关系转入社区时间",
itemType: "datepicker1",
formName: "joinCommunityTime",
opction: [],
},
],
},
{
id: "ensureHouseDto",
title: "保障房信息",
scrollId: "ensure_house",
children: [{
label: "所在社区",
itemType: "input1",
formName: "liveCommunity",
},
{
label: "住房性质",
itemType: "select1",
formName: "housingNature",
opctionUrl: "sys/dict/data/house",
opctionParams: {
formCode: "resi_base_info"
},
opction: [],
},
],
},
{
id: "veteranDto",
title: "退役军人信息",
scrollId: "veteran",
children: [{
label: "入伍时间",
itemType: "datepicker1",
formName: "joinArmyTime",
opction: [],
},
{
label: "退伍时间",
itemType: "datepicker1",
formName: "leaveArmyTime",
opction: [],
},
{
label: "服役单位",
itemType: "input1",
formName: "serviceUnit",
},
{
label: "接收单位",
itemType: "input1",
formName: "receiveUnit",
},
{
label: "待安置补助金",
itemType: "inputNum",
formName: "settlementAmount",
opction: [],
},
{
label: "培训状况",
itemType: "input1",
formName: "trainDesc",
},
{
label: "现就业情况",
itemType: "input1",
formName: "employmentSituation",
},
{
label: "是否办理公益性岗位",
itemType: "radio1",
formName: "pubWelfareJobFlag",
opction: [{
label: "是",
value: 1
},
{
label: "否",
value: 0
},
],
},
],
},
{
id: "unitedFrontDto",
title: "统战人员信息",
scrollId: "united_front",
children: [{
label: "统战类型",
itemType: "input1",
formName: "unitedFrontType",
}, ],
},
{
id: "volunteerDto",
title: "志愿者信息",
children: [{
label: "志愿者类别",
itemType: "checkbox",
formName: "volunteerCategory",
opctionUrl: "sys/dict/data/dictlist",
opctionParams: {
dictType: "VOLUNTEER_CATEGORY"
},
opction: [],
}, ],
},
{
id: "specialSupportDto",
title: "特扶人员信息",
scrollId: "special_support",
children: [{
//0
label: "特扶类别",
itemType: "select1",
formName: "specialSupportType",
opction: [{
value: "1",
label: "失独",
},
{
value: "2",
label: "伤残",
},
],
},
{
//1
label: "子女姓名",
itemType: "input1",
formName: "childName",
opction: [],
},
{
//2
label: "子女性别",
itemType: "select1",
formName: "childGender",
opction: [{
value: "1",
label: "男",
},
{
value: "2",
label: "女",
},
],
},
{
label: "子女死亡日期",
itemType: "datepicker1",
formName: "childDeathDate",
opction: [],
},
{
label: "子女伤残类别",
itemType: "select1",
formName: "childDisabilityCategoryCode",
opctionUrl: "sys/dict/data/dictlist",
opctionParams: {
dictType: "disability_category_code"
},
opction: [],
},
{
label: "子女伤残等级",
itemType: "select1",
formName: "childDisabilityLevel",
opctionUrl: "sys/dict/data/dictlist",
opctionParams: {
dictType: "disability_level"
},
opction: [],
},
],
},
],
expandList: [],
activeType: 0,
tagList: [],
idTypeList: [{
label: '其他',
value: 0
},
{
label: '身份证',
value: 1
},
{
label: '护照',
value: 2
},
{
label: '港澳通行证',
value: 3
},
{
label: '军人证',
value: 4
},
{
label: '台胞证',
value: 5
}
],
marriageList:[
{
label:"未婚",
value:'weihun'
},
{
label:"初婚",
value:'chuhun'
},
{
label:"离婚",
value:'lihun'
},
{
label:"再婚",
value:'zaihun'
},
{
label:"复婚",
value:'fuhun'
}
]
},
/**
@ -36,20 +566,20 @@ Page({
this.updateTime();
timerId = setInterval(this.updateTime, 1000);
console.log(timerId);
if(options.resiId){
if (options.resiId) {
this.setData({
resiId:options.resiId
resiId: options.resiId
})
this.getResiDetail()
this.getResiInfo()
}
this.data.qqMapWX = new QQMapWX({
key: 'CMJBZ-4DECI-JXGGN-5B4WU-QLV2H-B5BEJ'
})
this.reverseLocation()
// this.data.qqMapWX = new QQMapWX({
// key: 'CMJBZ-4DECI-JXGGN-5B4WU-QLV2H-B5BEJ'
// })
// this.reverseLocation()
this.setData({
agencyLevel: app.globalData.user.level
agencyLevel: app.globalData.user.level
})
this.getLastLogs()
// this.getLastLogs()
},
updateTime() {
let date = new Date();
@ -60,93 +590,207 @@ Page({
currentTime: `${hours}:${minutes}:${seconds}`
});
},
getResiDetail: async function() {
getResiInfo: async function () {
try {
let res = await api.getResiDetail(this.data.resiId);
const {birthday,mobile,name,houseInfo,genderName} = res.data;
this.setData({
'form.name':name|| '--',
'form.birthday':birthday|| '--',
'form.mobile':mobile|| '--',
'form.gridName' :'--',
'form.homeName' : '--',
'form.genderName' :genderName|| '--',
});
console.log(this.data.form);
} catch(err) {
let res = await api.getResiInfo(this.data.resiId);
let marriageName = '--'
if (res.data.baseInfoDto.categoryInfo.categoryNames) {
res.data.baseInfoDto.categoryInfo.categoryNames = res.data.baseInfoDto.categoryInfo.categoryNames.join(',')
}
if(res.data.familyInfoDto.marriage){
marriageName = this.data.marriageList.filter(item=>item.value == res.data.familyInfoDto.marriage)[0].label
}
// 处理tab
this.setData({
form: res.data,
marriageName:marriageName
});
await this.updateTabList(res.data.integrityData.integrityQtyMap)
} catch (err) {
console.log(err);
}
},
handlePunch(){
updateTabList: async function (value) {
const nameMap = {
reside: "居住信息",
ext: "拓展信息",
united_front: "统战人员信息",
party_member: "党员信息",
death: "死亡信息",
disability: "残疾信息",
subsistence_allowance: "低保信息",
serious_illness: "大病信息",
veteran: "退役军人信息",
special_support: "特扶人员信息",
old_people: "老年人信息",
ensure_house: "保障房信息",
chronic_disease: "慢病信息",
base: "基本信息",
};
let list = Object.entries(
value
)
.map(([key, value]) => ({
name: nameMap[key],
id: key,
filledQty: value.filledQty,
totalQty: value.totalQty,
}))
.reverse();
this.setData({
tabList: list
})
let arr = this.data.tabList.filter(
(item) =>
item.filledQty > 0 || (
item.name == "拓展信息" ||
item.name == "基本信息")
);
let arrs = []
arrs = this.data.originalExpandList.filter((itemA) => {
return arr.some((itemB) => itemB.name === itemA.title);
});
await Promise.all(
arrs.map(async (item) => {
await Promise.all(
item.children.map(async (child) => {
const key = child.formName;
if (this.data.form[item.id].hasOwnProperty(key)) {
child.value = await this.getDictName(
child.opctionUrl,
child.opctionParams,
this.data.form[item.id][
key == "partyOrgId" ? "branchId" : key
],
child.itemType,
child.opction
);
}
})
);
})
);
this.setData({
expandList: arrs
})
console.log(arrs);
console.log(arr);
},
getDictName: async function (url, params, value, itemType, opction) {
try {
if (url) {
const {
data
} = await http.post(url, params);
if (itemType == "checkbox") {
const matchedLabels = value
.map((item) => {
const matchedItems = data.filter(
(obj) => obj.value === item
);
if (matchedItems.length > 0) {
return matchedItems
.map((matchedItem) => matchedItem.label)
.join(",");
} else {
return "";
}
})
.join(",");
return matchedLabels ? matchedLabels : "--";
} else if (itemType == "select1") {
const matchedItem = data.find((item) => item.value === value);
return matchedItem ? matchedItem.label : "--";
}
} else {
if (itemType == "radio1") {
const matchedItem = opction.find((item) => item.value === value);
return matchedItem ? matchedItem.label : "--";
} else if (
itemType == "input1" ||
itemType == "datepicker1" ||
itemType == "cascader1"
) {
return value ? value : "--";
}
}
} catch (error) {
console.log(error);
}
},
handlePunch() {
this.setData({
// punchFlag:!this.data.punchFlag,
animationClass:'animate'
animationClass: 'animate'
})
setTimeout(() => {
this.setData({ animationClass: '' });
this.setData({
animationClass: ''
});
this.clockRecords()
}, 1500);
}, 1500);
},
clockRecords(){
clockRecords() {
let currentDate = new Date().toISOString().split('T')[0]; // 会得到形如 "2023-09-27" 的日期
let obj = {
resiId:this.data.resiId,
resiId: this.data.resiId,
clockTime: currentDate + " " + this.data.currentTime,
clockAddress: this.data.address,
longitude:this.data.longitude ,
latitude:this.data.latitude
longitude: this.data.longitude,
latitude: this.data.latitude
}
api.clockRecords(obj).then(res=>{
wx.showToast({
// title: this.data.punchFlag?'打卡成功':'更新成功',
title: '打卡成功',
icon:'none'
})
}).catch(err=>{
api.clockRecords(obj).then(res => {
wx.showToast({
// title: this.data.punchFlag?'打卡成功':'更新成功',
title: '打卡成功',
icon: 'none'
})
}).catch(err => {
console.log(err);
})
},
toAddResi(){
wx.navigateTo({
url: `/subpages/addResi/pages/editResi/editResi?type=edit&resiId=${this.data.resiId}`,
})
toAddResi() {
wx.navigateTo({
url: `/subpages/addResi/pages/editResi/editResi?type=edit&resiId=${this.data.resiId}`,
})
},
toWebView(){
toWebView() {
console.log(app.globalData);
if(app.globalData.questionnaireUrl) {
if (app.globalData.questionnaireUrl) {
wx.navigateTo({
url: '/pages/webView/webView?url=' + app.globalData.questionnaireUrl,
})
} else {
wx.showToast({
icon: "none",
title: '未创建满意度调查问卷',
})
}
},
toEvent(){
let obj ={
resiId : this.data.resiId,
resiMobile : this.data.form.mobile,
resiName:this.data.form.name
wx.navigateTo({
url: '/pages/webView/webView?url=' + app.globalData.questionnaireUrl,
})
} else {
wx.showToast({
icon: "none",
title: '未创建满意度调查问卷',
})
}
wx.setStorageSync('resiDetail',obj)
},
toEvent() {
let obj = {
resiId: this.data.resiId,
resiMobile: this.data.form.mobile,
resiName: this.data.form.name
}
wx.setStorageSync('resiDetail', obj)
wx.navigateTo({
url: '/subpages/demandCheck/pages/dissatisfied/demandCheck/demandCheck',
url: '/subpages/demandCheck/pages/dissatisfied/demandCheck/demandCheck',
})
},
reverseLocation() {
const _this = this
this.data.qqMapWX.reverseGeocoder({
success(res) {
console.log(res);
_this.setData({
addressContent:res.result.address,
addressContent: res.result.address,
address: res.result.address,
longitude:res.result.location.lng,
latitude:res.result.location.lat,
longitude: res.result.location.lng,
latitude: res.result.location.lat,
})
},
fail(err) {
@ -184,7 +828,6 @@ Page({
timerId = null;
}
},
/**
* 页面相关事件处理函数--监听用户下拉动作
*/
@ -206,20 +849,32 @@ Page({
},
gotopage(e) {
wx.navigateTo({
url: e.currentTarget.dataset.url,
})
},
getLastLogs() {
api.getLastLog({resiId:this.data.resiId}).then(res => {
this.setData({
lastLog: res.data
wx.navigateTo({
url: e.currentTarget.dataset.url,
})
})
},
// getLastLogs() {
// api.getLastLog({
// resiId: this.data.resiId
// }).then(res => {
// this.setData({
// lastLog: res.data
// })
// })
// },
goResidentPortrait2() {
wx.navigateTo({
url: '/subpages/statistics/pages/residentPortrait2/residentPortrait?id='+this.data.resiId,
})
wx.navigateTo({
url: '/subpages/statistics/pages/residentPortrait2/residentPortrait?id=' + this.data.resiId,
})
},
handelClickTab: function(e) {
wx.pageScrollTo({
selector: `#${e.currentTarget.dataset.item.id}`,
duration:300
});
this.setData({
activeType: e.currentTarget.dataset.index
})
}
})

114
subpages/searchResult/pages/punchCard/punchCard.wxml

@ -1,52 +1,116 @@
<!--subpages/searchResult/pages/punchCard/punchCard.wxml-->
<!-- 基本信息 -->
<view class="card">
<view class="top">
<view class="left">
<view class="name">
<view style="font-size: 32rpx;margin-right: 35rpx;">{{form.baseInfoDto.name}}</view>
<view style="font-size: 28rpx;color:#999999 ;">信息完整度:</view>
<view style="color:#04b8ad;">{{form.integrityData.score}}%</view>
</view>
<view class="tags">
<view class="tag" wx:for="{{form.baseInfoDto.categoryInfo.categoryNames}}" wx:key="index">{{item}}</view>
</view>
</view>
<view class="right">
<view class="jm-btn" bind:tap="toAddResi">编辑</view>
</view>
</view>
<view class="form">
<view class="form_label">地址:</view>
<view class="form_value">{{form
.resideInfoDtos[0].agencyName + form.resideInfoDtos[0].homeName}}</view>
</view>
<view class="form">
<view class="form_label">创建时间:</view>
<view class="form_value">{{form.baseInfoDto.createdTime}}</view>
</view>
<view class="form">
<view class="form_label">最近更新时间:</view>
<view class="form_value">{{form.baseInfoDto.updatedTime}}</view>
</view>
<view class="tabs">
<view class="tab_item {{activeType === index ? 'border_bto' : ''}}" wx:for="{{tabList}}" bind:tap="handelClickTab" data-item="{{item}}" data-index="{{index}}" wx:key="index">
{{item.name}} <text style="color:{{item.filledQty!==item.totalQty?'#f27225':'#1ebfb5'}}">({{ item.filledQty }}/{{ item.totalQty }})</text>
</view>
</view>
</view>
<view class="card">
<view class="title">基础信息</view>
<view class="info">
<view class="item">
<view class="label">姓名:</view>
<View class="value">{{form.name}}</View>
<view class="label">国籍:</view>
<View class="value">{{form.baseInfoDto.nationalityName|| '--' }}</View>
</view>
<view class="item">
<view class="label">证件类型:</view>
<View class="value">{{idTypeList[form.baseInfoDto.idType].label}}</View>
</view>
<view class="item">
<view class="label">证件号:</view>
<View class="value">{{form.baseInfoDto.idNum}}</View>
</view>
<view class="item">
<view class="label">联系电话:</view>
<View class="value">{{form.baseInfoDto.mobile}}</View>
</view>
<view class="item">
<view class="label">文化程度:</view>
<View class="value">{{form.eduInfoDto.cultureLevelName}}</View>
</view>
<view class="item">
<view class="label">性别:</view>
<View class="value">{{form.genderName}}</View>
<View class="value">{{form.baseInfoDto.genderName}}</View>
</view>
<view class="item">
<view class="label">出生日期:</view>
<View class="value">{{form.birthday}}</View>
<View class="value">{{form.baseInfoDto.birthday}}</View>
</view>
<view class="item">
<view class="label">民族:</view>
<View class="value">{{form.baseInfoDto.nationName}}</View>
</view>
<view class="item">
<view class="label">住宅:</view>
<View class="value">{{form.homeName}}</View>
<view class="label">婚姻状况:</view>
<View class="value"> {{marriageName}}</View>
</view>
<view class="item">
<view class="label">电话:</view>
<View class="value">{{form.mobile}}</View>
<view class="label">籍贯:</view>
<View class="value">{{form.baseInfoDto.nativePlace}}</View>
</view>
</view>
<view class="jm-btn" bind:tap="goResidentPortrait2">居民画像</view>
</view>
<!-- 走访打卡 -->
<view class="card ">
<view class="flex-sb">
<view class="title">走访打卡</view>
<view class="view" bind:tap="gotopage" data-url="/subpages/searchResult/pages/checkLog/checkLog?resiId={{resiId}}">打卡记录</view>
<view class="card" wx:for="{{expandList}}" wx:key="index" id="{{item.scrollId}}">
<view class="title">{{item.title}}</view>
<view class="info" wx:for="{{item.children}}" wx:for-index="indexC" wx:key="indexC" wx:for-item="itemC">
<view class="item">
<view class="label">{{itemC.label}}:</view>
<View class="value">{{itemC.value|| '--' }}</View>
</view>
</view>
</view>
<!-- 走访打卡 -->
<!-- <view class="card ">
<view class="flex-sb">
<view class="title">走访打卡</view>
<view class="view" bind:tap="gotopage" data-url="/subpages/searchResult/pages/checkLog/checkLog?resiId={{resiId}}">打卡记录</view>
</view>
<view class="punch {{animationClass}}" bind:tap="handlePunch">
<!-- <view class="{{animationClass}}" style="font-size: 36rpx;">{{!punchFlag ? '打卡' : '更新打卡'}}</view> -->
<view class="{{animationClass}}" style="font-size: 36rpx;">打卡</view>
<view class="{{animationClass}}" style="font-family:PingFang-SC-Regular;font-size: 28rpx;opacity: 0.72;">{{currentTime}}</view>
</view>
<view class="address">当前位置:{{addressContent}}</view>
<view class="address" style="margin-top: 0;" wx:if="{{lastLog.clockInTime}}">最近打卡时间:{{lastLog.clockInTime}}</view>
</view>
<!-- 相关操作 -->
<view class="card">
<view class="title">相关操作</view>
<view class="blue btn" bind:tap="toAddResi" style="margin-top: 40rpx ; ">修改居民信息</view>
<view class="yellow btn" bind:tap="toWebView" wx:if="{{agencyLevel!=='street'}}">满意度调查</view>
<view class="green btn" bind:tap="toEvent">上报居民诉求</view>
</view> -->
<view class="bto_btn">
<button class="btn" hover-class="blue" bind:tap="toEvent">上报诉求</button>
<button class="btn" hover-class="blue" bind:tap="toWebView" wx:if="{{agencyLevel!=='street'}}">
满意度调查</button>
<!-- -->
<button class="btn blue">走访打卡</button>
</view>

346
subpages/searchResult/pages/punchCard/punchCard.wxss

@ -1,127 +1,235 @@
/* subpages/searchResult/pages/punchCard/punchCard.wxss */
/**index.wxss**/
page {
width: 100%;
min-height: 100vh;
overflow: hidden;
overflow-y: scroll;
background-color: #f7f7f7;
padding: 0 20rpx;
box-sizing: border-box;
}
.card{
background-color: #fff;
border-radius: 20rpx;
display: flex;
flex-direction: column;
min-height: 350rpx;
margin-top: 20rpx;
padding: 30rpx 30rpx 40rpx;
}
.card .title{
position: relative;
font-size: 34rpx;
}
.card .title::after{
position: absolute;
left: -30rpx;
top: 8rpx;
content: " ";
width: 10rpx;
height: 28rpx;
background-color: #3A80E7;
}
.info{
margin-top: 6rpx;
}
.info .item{
display: flex;
margin-top: 28rpx;
}
.info .item .label{
width: fit-content;
}
.punch{
width: 260rpx;
height: 260rpx;
background: linear-gradient(180deg,#5E9FFF, #3A80E7);
box-shadow: 0rpx 4rpx 35rpx 0rpx rgba(61,139,248,0.48);
color: #fff;
display: flex;
flex-direction: column;
justify-content: center;
align-items: center;
border-radius: 50%;
margin: 50rpx auto 0;
}
.address{
color: #666666;
font-size: 28rpx ;
margin: 0 auto;
margin: 40rpx auto 30rpx;
}
background-color: #f7f7f7;
height: auto;
overflow-y: scroll;
padding: 0 20rpx 160rpx ;
box-sizing: border-box;
}
.form {
display: flex;
margin-top: 20rpx;
}
.form .form_label {
font-size: 30rpx;
color: #999999;
}
.form .form_value {
color: #333333;
text-align: left;
font-weight: 500;
flex: 1;
}
.card {
background-color: #fff;
border-radius: 20rpx;
display: flex;
flex-direction: column;
margin-top: 20rpx;
padding: 30rpx 30rpx 40rpx;
box-sizing: border-box;
position: relative;
overflow: hidden;
}
.card .title {
position: relative;
font-size: 34rpx;
}
.card .title::after {
position: absolute;
left: -30rpx;
top: 8rpx;
content: " ";
width: 10rpx;
height: 28rpx;
background-color: #3A80E7;
}
.info {
margin-top: 6rpx;
}
.info .item {
display: flex;
margin-top: 28rpx;
}
.info .item .label {
width: fit-content;
}
.punch {
width: 260rpx;
height: 260rpx;
background: linear-gradient(180deg, #5E9FFF, #3A80E7);
box-shadow: 0rpx 4rpx 35rpx 0rpx rgba(61, 139, 248, 0.48);
color: #fff;
display: flex;
flex-direction: column;
justify-content: center;
align-items: center;
border-radius: 50%;
margin: 50rpx auto 0;
}
.address {
color: #666666;
font-size: 28rpx;
margin: 0 auto;
margin: 40rpx auto 30rpx;
}
@keyframes rotateAnimation {
0% {
transform: rotateY(0deg);
}
100% {
transform: rotateY(180deg);
}
}
.animate {
animation: rotateAnimation 2s forwards;
0% {
transform: rotateY(0deg);
}
.btn{
padding: 0 85rpx;
box-sizing: border-box;
min-width: 364rpx;
text-align: center;
height: 76rpx;
border-radius: 38rpx;
margin: 30rpx auto 0;
line-height: 76rpx;
border-radius: 76rpx;
}
.blue{
color:#3A80E7 ;
border: 2rpx solid #3A80E7;
100% {
transform: rotateY(180deg);
}
.yellow{
color: #FF783C;
border: 2rpx solid #FF783C;
}
.green{
color: #13C8BD;
border: 2rpx solid #13C8BD;
}
}
.flex-sb {
display: flex;
justify-content: space-between;
}
.view {
color: #999;
font-size: 24rpx;
}
.jm-btn {
position: absolute;
top: 30rpx;
right: 20rpx;
width: 146rpx;
height: 56rpx;
line-height: 56rpx;
background: #3A80E7;
border-radius: 28rpx;
color: #fff;
text-align: center;
font-size: 28rpx;
}
.card {
position: relative;
}
.animate {
animation: rotateAnimation 2s forwards;
}
.btn {
box-sizing: border-box;
text-align: center;
height: 76rpx;
border-radius: 38rpx;
margin: 30rpx 0;
line-height: 76rpx;
border-radius: 76rpx;
border: 2rpx solid #999999;
}
.blue{
background-color:#3974f6;
color: #fff;
border-color: #3974f6;
}
.flex-sb {
display: flex;
justify-content: space-between;
}
.view {
color: #999;
font-size: 24rpx;
}
.jm-btn {
position: absolute;
top: 30rpx;
right: 20rpx;
width: fit-content;
height: 56rpx;
padding: 0 20rpx;
box-sizing: border-box;
line-height: 56rpx;
background: #3974f6;
border-radius: 28rpx;
color: #fff;
text-align: center;
font-size: 28rpx;
}
.tabs {
display: flex;
justify-content: start;
flex-wrap: wrap;
border-top: 1px solid #EAEAEA;
margin-top: 30rpx;
}
.tabs .tab_item {
display: flex;
margin-right: 20rpx;
padding-bottom: 10rpx;
width: auto;
margin-top: 20rpx;
justify-content: center;
}
.tabs .tab_item .num {
font-weight: 400;
font-size: 36rpx;
}
.tabs .tab_item .name {
font-size: 26rpx;
padding-bottom: 6rpx;
box-sizing: border-box;
color: #666666;
}
.top {
display: flex;
align-items: center;
}
.top .left {
flex: 1;
}
.top .right {
width: 130rpx;
}
.top .left .name {
display: flex;
}
.top .left .tags {
display: flex;
flex-grow: 0;
justify-content: start;
max-width: 645rpx;
overflow-x: scroll;
margin-top: 20rpx;
box-sizing: border-box;
}
.top .left .tags .tag {
background-color: rgba(236, 236, 236, 0.500000);
border-radius: 4rpx;
margin-right: 6rpx;
white-space: nowrap;
padding: 7rpx 8rpx;
width: auto;
box-sizing: border-box;
font-weight: 500;
font-size: 24rpx;
color: #999999;
}
.border_bto{
color: #3974f6 !important;
border-bottom: solid 6rpx #3974f6;
}
.bto_btn{
position: fixed;
bottom: 0;
display: flex;
justify-content: space-between;
align-items: center;
left: 0;
right: 0;
padding:0 20rpx;
box-sizing: border-box;
background: #fff;
padding-bottom: constant(safe-area-inset-bottom);
padding-bottom: env(safe-area-inset-bottom);
}

8
utils/api.js

@ -63,7 +63,8 @@ module.exports = {
icEventOldDelete,
updateEvent,
submitResi,
getAllOrgCategoryCount
getAllOrgCategoryCount,
getResiInfo
}
// 获取公钥
@ -121,6 +122,11 @@ function getStaffbasicinfo(para) {
function resiAdd(para) {
return fly.post('actual/base/residentBaseInfo/save', para)
}
//居民详情
function getResiInfo(resiId) {
return fly.get(`actual/base/residentIntegratedInfo/detail/masked/${resiId}`)
}
// 民族字典
function getNationDictList() {
return fly.post('sys/dict/data/nation', { formCode: "resi_base_info" })

Loading…
Cancel
Save