diff --git a/epdc-resident-mp-yushan/subpages/family/images/arrow-right.png b/epdc-resident-mp-yushan/subpages/family/images/arrow-right.png new file mode 100644 index 0000000..5563325 Binary files /dev/null and b/epdc-resident-mp-yushan/subpages/family/images/arrow-right.png differ diff --git a/epdc-resident-mp-yushan/subpages/family/images/close.png b/epdc-resident-mp-yushan/subpages/family/images/close.png new file mode 100644 index 0000000..a0948c7 Binary files /dev/null and b/epdc-resident-mp-yushan/subpages/family/images/close.png differ diff --git a/epdc-resident-mp-yushan/subpages/family/images/family-qr.png b/epdc-resident-mp-yushan/subpages/family/images/family-qr.png new file mode 100644 index 0000000..240c21c Binary files /dev/null and b/epdc-resident-mp-yushan/subpages/family/images/family-qr.png differ diff --git a/epdc-resident-mp-yushan/subpages/family/images/no-family.png b/epdc-resident-mp-yushan/subpages/family/images/no-family.png new file mode 100644 index 0000000..b2246d2 Binary files /dev/null and b/epdc-resident-mp-yushan/subpages/family/images/no-family.png differ diff --git a/epdc-resident-mp-yushan/subpages/family/pages/familyInfo/familyInfo.js b/epdc-resident-mp-yushan/subpages/family/pages/familyInfo/familyInfo.js index b5afe45..041cc89 100644 --- a/epdc-resident-mp-yushan/subpages/family/pages/familyInfo/familyInfo.js +++ b/epdc-resident-mp-yushan/subpages/family/pages/familyInfo/familyInfo.js @@ -1,4 +1,11 @@ -// subpages/family/pages/familyInfo/familyInfo.js +import { + addFamilyMember, + updateFamilyMember, + getFamilyMember, + householderRelation +} from '../../utils/api.js' +import validate from "../../utils/validate/index.js"; + Page({ /** @@ -7,51 +14,70 @@ Page({ data: { submitBtnIsAllowed: false, isShowDialog: false, + pageType: null, // add 新增 edit 编辑 look 查看 fmData: { - name: '', + userName: '', idCard: '', - sex: '', + gender: '', birthday: '', mobile: '', nationValue: '', - nationName: '', - houseRelation: "", - houseRelationName: "", - presentAddressPathCode: "", - presentAddressCode: "", - presentAddress: "", + nation: '', + householdRegisterName: "", + relation: "", + outLiveAddressName: "", + outLiveAddressDetail: "", }, - nationList: [ - { - value: "汉族", - label: "汉族", - }, - { - value: "维吾尔", - label: "维吾尔", - } - ], - houseRelationList: [ - { - value: "1", - label: "户主", - }, - { - value: "0", - label: "不是户主", - }, - ] + nationList: [], + houseRelationList: [] }, /** * 生命周期函数--监听页面加载 */ - onLoad: function (options) { - + async onLoad (options) { + wx.showLoading({ + title: "加载中", + mask: true, + }); + let idCard = options.idCard + this.setData({ + pageType:options.pageType + }) + if(options.pageType !== 'add'){ + await this.getMemberInfo(idCard) + }else{ + this.setData({ + 'fmData.unitId':options.id + }) + } + await this.householderRelationFun() + wx.hideLoading() + }, + // 获取成员详情信息 + async getMemberInfo(idCard){ + const res = await getFamilyMember({idCard:idCard}) + if(res.msg === 'success' && res.code === 0){ + this.setData({ + 'fmData':res.data, + }) + if (idCard) { + this.handleValidBlur('',idCard) + } + } + }, + // 获取与户主关系 + async householderRelationFun(){ + const res = await householderRelation() + if(res.msg === 'success' && res.code === 0){ + this.setData({ + 'houseRelationList':res.data, + }) + } }, nameSync(e){ this.setData({ - 'fmData.name' : e.detail.value + 'fmData.userName' : e.detail.value }) }, idCardSync(e){ @@ -66,32 +92,41 @@ Page({ }, nationSyncPicker(e){ this.setData({ - 'fmData.nationValue' : this.data.nationList[e.detail.value].value, - 'fmData.nationName' : this.data.nationList[e.detail.value].label + 'fmData.nationValue' : this.data.nationList[e.detail.value].dictValue, + 'fmData.nation' : this.data.nationList[e.detail.value].dictName }) }, houseSyncPicker(e){ this.setData({ - 'fmData.houseRelation' : this.data.nationList[e.detail.value].value, - 'fmData.houseRelationName' : this.data.nationList[e.detail.value].label + 'fmData.houseRelation' : this.data.houseRelationList[e.detail.value].dictValue, + 'fmData.relation' : this.data.houseRelationList[e.detail.value].dictName + }) + }, + householdRegisterSync(e){ + this.setData({ + 'fmData.householdRegisterName' : e.detail.value + }) + }, + outLiveAddressSync(e){ + this.setData({ + 'fmData.outLiveAddressName' : e.detail.value }) }, addressSync(e){ this.setData({ - 'fmData.presentAddress' : e.detail.value + 'fmData.outLiveAddressDetail' : e.detail.value }) }, - handleValidBlur: function (e) { + handleValidBlur (e,val) { var fmData = this.data.fmData; - var right = this.identityCodeValid(e.detail.value); + var right = this.identityCodeValid(val ? val : e.detail.value); if (right) { fmData.birthday = this.getBirthday(this.data.fmData.idCard); - fmData.sex = this.getSex(this.data.fmData.idCard); - this.setData({ fmData: fmData }); - } - else { + fmData.gender = this.getGender(this.data.fmData.idCard); + this.setData({ fmData }); + }else { fmData.idCard = ''; - this.setData({ fmData: fmData }); + this.setData({ fmData }); wx.showToast({ title: '身份证号不正确,请重新输入', icon: "none", @@ -99,23 +134,48 @@ Page({ }); } }, - identityCodeValid: function (idcode) { - var weightFactor = [7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2]; - var checkCode = ['1', '0', 'X', '9', '8', '7', '6', '5', '4', '3', '2']; - var code = idcode + ''; - var last = idcode[17]; - var seventeen = code.substring(0, 17); - var arr = seventeen.split(''); - var len = arr.length; - var num = 0; + // 校验身份证是否正确 + identityCodeValid (idcode) { + var weightFactor = [7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2] + // 校验码 + var checkCode = ['1', '0', 'X', '9', '8', '7', '6', '5', '4', '3', '2'] + + var code = idcode + '' + var last = idcode[17]// 最后一位 + + var seventeen = code.substring(0, 17) + + // ISO 7064:1983.MOD 11-2 + // 判断最后一位校验码是否正确 + var arr = seventeen.split('') + var len = arr.length + var num = 0 for (var i = 0; i < len; i++) { - num = num + arr[i] * weightFactor[i]; + num = num + arr[i] * weightFactor[i] } - var resisue = num % 11; - var lastNo = checkCode[resisue]; - var idcardPatter = /^[1-9][0-9]{5}([1][9][0-9]{2}|[2][0][0|1][0-9])([0][1-9]|[1][0|1|2])([0][1-9]|[1|2][0-9]|[3][0|1])[0-9]{3}([0-9]|[X])$/; - var format = idcardPatter.test(idcode); - return !!(last === lastNo && format); + + // 获取余数 + var resisue = num % 11 + var lastNo = checkCode[resisue] + + // 格式的正则 + // 正则思路 + /* + 第一位不可能是0 + 第二位到第六位可以是0-9 + 第七位到第十位是年份,所以七八位为19或者20 + 十一位和十二位是月份,这两位是01-12之间的数值 + 十三位和十四位是日期,是从01-31之间的数值 + 十五,十六,十七都是数字0-9 + 十八位可能是数字0-9,也可能是X + */ + var idcardPatter = /^[1-9][0-9]{5}([1][9][0-9]{2}|[2][0][0|1][0-9])([0][1-9]|[1][0|1|2])([0][1-9]|[1|2][0-9]|[3][0|1])[0-9]{3}([0-9]|[X])$/ + + // 判断格式是否正确 + var format = idcardPatter.test(idcode) + + // 返回验证结果,校验码和格式同时正确才算是合法的身份证号码 + return !!(last === lastNo && format) }, getBirthday: function (psidno) { var birthdayno, birthdaytemp; @@ -132,13 +192,153 @@ Page({ var birthday = birthdayno.substring(0, 4) + '-' + birthdayno.substring(4, 6) + '-' + birthdayno.substring(6, 8); return birthday; }, - getSex: function (psidno) { + getGender (psidno) { var num = psidno.charAt(16); if (num % 2 == 0) { - return '女'; + return '女'; + }else { + return '男'; } - else { - return '男'; + }, + + // 编辑按钮点击事件 + editTap () { + if (this.data.fmData.idCard) { + this.handleValidBlur('',this.data.fmData.idCard) + } + this.setData({ + pageType: 'edit' + }) + }, + // 取消编辑 + closeEditTap () { + this.setData({ + pageType: 'look' + }) + }, + + + // 注册 + async submit() { + if (!this.computeSubmitBtnIsAllowed(false)) return; + + const { fmData } = this.data; + if (fmData.gender === '男') { + fmData.gender = '1' + } else if (fmData.gender === '女') { + fmData.gender = '2' + } + this.setData({ fmData }) + wx.showLoading({ + title: "提交中", + mask: true, + }); + const res = await addFamilyMember({...fmData}) + wx.hideLoading(); + + if (res.msg === "success" && res.code === 0) { + wx.showToast({ + title: "提交成功", + duration: 2000, + }); + setTimeout(function () { + wx.navigateBack() + }, 1000) + + // wxRedirectTo("../index", {}); + } + }, + + // 修改提交 + async editSubmit () { + if (!this.computeSubmitBtnIsAllowed(false)) return; + + const { fmData } = this.data; + if (fmData.gender === '男') { + fmData.gender = '1' + } else if (fmData.gender === '女') { + fmData.gender = '2' + } + this.setData({ fmData }) + wx.showLoading({ + title: "提交中", + mask: true, + }); + const res = await updateFamilyMember({...fmData}) + wx.hideLoading(); + + if (res.msg === "success" && res.code === 0) { + wx.showToast({ + title: "提交成功", + duration: 2000, + }); + + setTimeout(function () { + wx.navigateBack() + }, 1000) + } + }, + + + // 更新data数据后需主动触发 + $afterUpdateData() { + this.computeSubmitBtnIsAllowed(); + }, + + + // 校验 + computeSubmitBtnIsAllowed(isQuiet = true) { + const { fmData } = this.data, + vlt = validate(fmData, { + // surname: [ + // { + // rule: "required", + // message: "请先输入成员【姓】", + // }, + // ], + + userName: [ + { + rule: "required", + message: "请先输入成员【姓名】", + }, + ], + + idCard: [ + { + rule: "required", + message: "请先输入成员【身份证号】", + }, + ], + + mobile: [ + { + rule: "required", + message: "请先输入成员【手机号】", + }, + { + rule: "mobile", + message: "【手机号】格式不正确", + }, + ] + }); + if (!vlt.valid) { + if (!isQuiet) { + wx.showToast({ + title: vlt.error, + icon: "none", + duration: 1500, + }); + } + this.setData({ + submitBtnIsAllowed: false, + }); + return false; + } else { + this.setData({ + submitBtnIsAllowed: true, + }); + return true; } }, /** diff --git a/epdc-resident-mp-yushan/subpages/family/pages/familyInfo/familyInfo.wxml b/epdc-resident-mp-yushan/subpages/family/pages/familyInfo/familyInfo.wxml index afaa158..8f5d765 100644 --- a/epdc-resident-mp-yushan/subpages/family/pages/familyInfo/familyInfo.wxml +++ b/epdc-resident-mp-yushan/subpages/family/pages/familyInfo/familyInfo.wxml @@ -3,232 +3,259 @@ 基本信息 - - - * - 姓名 - - - - + + + + * + 姓名 + + + + + - - - - - * - 身份证号 - - - - + + + * + 身份证号 + + + + + - - - - - * - 性别 + + + * + 性别 + + + {{fmData.gender}} + + + + + * + 出生日期 + + + {{fmData.birthday}} + - - - {{fmData.sex}} + + + * + 联系电话 + + + + + - - - - * - 出生日期 + + + + + * + 姓名 + + + {{fmData.userName}} + - - - {{fmData.birthday}} + + + + * + 身份证号 + + + {{fmData.idCard}} - - - - - * - 联系电话 - - - - + + + + * + 性别 + + + + {{fmData.gender === '1' ? '男' : fmData.gender === '2' ? '女' : fmData.gender === '0' ? '' : fmData.gender}} + + + + + + + * + 出生日期 + + + {{fmData.birthday ? fmData.birthday : ''}} + + + + + + * + 联系电话 + + + {{fmData.mobile ? fmData.mobile : ''}} - - - - - 民族 - - - - {{fmData.nationName}} - 请选择 - - + + + + 民族 + + + + + + - - - - - 与户主关系 - - - - {{fmData.houseRelationName}} - 请选择 - - + + + + 户籍地 + + + + + + - - - - - 现居住地 + + + 与户主关系 + + + + {{fmData.relation}} + 请选择 + + + - - - {{fmData.presentAddress}} - 请选择 - + + + + 现居住地 + + + + + + + + + + 详细地址 + + + + + - - - - 详细地址 - - - - + + + + + 民族 + + + {{fmData.nation ? fmData.nation : ''}} + + + + + + 户籍地 + + + {{fmData.householdRegisterName ? fmData.householdRegisterName : ''}} + + + + + + 与户主关系 + + + {{fmData.relation ? fmData.relation : ''}} + + + + + + 现居住地 + + + {{fmData.outLiveAddressName ? fmData.outLiveAddressName : ''}} + + + + + + 详细地址 + + + {{fmData.outLiveAddressDetail ? fmData.outLiveAddressDetail : ''}} - - + 确认提交 - - 编辑 - 删除 - - - 取消编辑 - 提交 + + 编辑 - - - - - - - - - - - - - - 家庭成员信息删除 - - - - - - * - 删除原因 - - - - {{fmData.nationName}} - 请选择 - - - - - - - - * - 情况说明: - - - - - - - - - + + 取消编辑 + + 提交 - - 确定 - 取消 - - + \ No newline at end of file diff --git a/epdc-resident-mp-yushan/subpages/family/pages/familyInfo/familyInfo.wxss b/epdc-resident-mp-yushan/subpages/family/pages/familyInfo/familyInfo.wxss index 177d50c..e3eb9d6 100644 --- a/epdc-resident-mp-yushan/subpages/family/pages/familyInfo/familyInfo.wxss +++ b/epdc-resident-mp-yushan/subpages/family/pages/familyInfo/familyInfo.wxss @@ -1 +1,16 @@ -@import '../../wxss/familyInfo.wxss'; \ No newline at end of file +@import '../../wxss/familyInfo.wxss'; + + +.editbtn{ + margin:100rpx auto; + width:240rpx; + height:80rpx; + line-height:80rpx; + border-radius:40rpx; + text-align:center; + font-size:32rpx; + font-family:Source Han Serif SC; + font-weight:400; + color:#fff; + background-color: #0399d8; +} \ No newline at end of file diff --git a/epdc-resident-mp-yushan/subpages/family/pages/index/index.js b/epdc-resident-mp-yushan/subpages/family/pages/index/index.js index 7eab5ce..733eaab 100644 --- a/epdc-resident-mp-yushan/subpages/family/pages/index/index.js +++ b/epdc-resident-mp-yushan/subpages/family/pages/index/index.js @@ -1,25 +1,123 @@ -// subpages/family/pages/index/index.js +import { + getHouseInfo +} from '../../utils/api.js' Page({ /** * 页面的初始数据 */ data: { - + familyInfo:null, + showQr: true, + memberList:[], + roomCode:null, }, /** * 生命周期函数--监听页面加载 */ - onLoad: function (options) { + async onLoad(options) { + wx.showLoading({ + title: "加载中", + mask: true, + }); + // this.setData({ + // roomCode : options.roomCode.toString() + // }) + this.setData({ + roomCode:'3702110100420037200006' + }) + wx.setStorage({ + key: 'roomCode', + data: this.data.roomCode + }) + await this.getInfo(this.data.roomCode) + wx.hideLoading() + }, + + /** + * 生命周期函数--监听页面显示 + */ + async onShow() { + wx.showLoading({ + title: "加载中", + mask: true, + }); + let roomCode = wx.getStorageSync('roomCode') + this.setData({ + roomCode : roomCode + }) + await this.getInfo(this.data.roomCode) + wx.hideLoading() + }, + // 获取房屋信息 + async getInfo(code){ + const res = await getHouseInfo({roomCode:code}) + if(res.msg === 'success' && res.code === 0){ + this.setData({ + 'familyInfo':res.data, + 'roomCode':res.data.members + }) + } }, - toFamilyInfo(){ + // 跳转新增页面 + handleTo(){ wx.navigateTo({ - url: '/subpages/family/pages/familyInfo/familyInfo', + url: '/subpages/family/pages/familyInfo/familyInfo?pageType=add&id='+ this.data.familyInfo.id }) }, - + // 跳转查看页面 + toFamilyInfo(e){ + wx.navigateTo({ + url: '/subpages/family/pages/familyInfo/familyInfo?pageType=look&idCard='+ e.currentTarget.dataset.id + }) + }, + // 取消编辑 + cancel() { + this.setData({ + showQr: true, + }); + }, + // 点击保存二维码 + comfirmSave() { + wx.downloadFile({ + url: this.data.familyInfo.maUrl, + success: function (res) { + let imageFilePath = res.tempFilePath; + wx.saveImageToPhotosAlbum({ + filePath: imageFilePath, + success: function (data) { + wx.showToast({ + title: '保存成功', + icon: 'none', + duration: 1500 + }); + }, + fail: function (res) { + wx.showToast({ + title: '保存失败', + icon: 'none', + duration: 1500 + }) + } + }) + }, + fail: (err) => { + wx.showToast({ + title: '下载失败', + icon: 'none', + duration: 1500 + }) + } + }) + }, + handlePreview() { + if (!this.data.familyInfo.maUrl) return; + this.setData({ + showQr: false, + }); + }, /** * 生命周期函数--监听页面初次渲染完成 */ @@ -27,18 +125,13 @@ Page({ }, - /** - * 生命周期函数--监听页面显示 - */ - onShow: function () { - - }, + /** * 生命周期函数--监听页面隐藏 */ onHide: function () { - + }, /** diff --git a/epdc-resident-mp-yushan/subpages/family/pages/index/index.wxml b/epdc-resident-mp-yushan/subpages/family/pages/index/index.wxml index 612c5bd..193d9dc 100644 --- a/epdc-resident-mp-yushan/subpages/family/pages/index/index.wxml +++ b/epdc-resident-mp-yushan/subpages/family/pages/index/index.wxml @@ -1,50 +1,82 @@ - - - - - 金色海岸3号楼2单元501户 - - No.370252***00125 - + + + + + + {{ familyInfo.plotName + familyInfo.buildingName + familyInfo.unit + familyInfo.roomNo}} + + No.{{ familyInfo.roomCode }} + + + + + + + + + + 我的"e家码" + - - - - + + No.{{ familyInfo.roomCode }} + + - 我的“e家码” - - - - - - 家庭成员 - - 明细 - + + + 家庭成员 + + + + - - - - - 姓名 - 成员关系 - 手机号 - 明细 + + + 姓名 + 成员关系 + 手机号 + 明细 + + + + {{ item.userName }} + {{ item.relation }} + {{ item.mobile }} + 查看 + + + 暂无成员 - - 张三李四 - 户主 - 13388990099 - 查看 + + + + 添加家庭成员 + + 暂无家庭信息 + + + \ No newline at end of file diff --git a/epdc-resident-mp-yushan/subpages/family/pages/index/index.wxss b/epdc-resident-mp-yushan/subpages/family/pages/index/index.wxss index f572bec..fd626a4 100644 --- a/epdc-resident-mp-yushan/subpages/family/pages/index/index.wxss +++ b/epdc-resident-mp-yushan/subpages/family/pages/index/index.wxss @@ -1 +1,3 @@ -@import '../../wxss/family.wxss'; \ No newline at end of file +@import '../../wxss/family.wxss'; + +@import '../../wxss/c-popForm.wxss'; \ No newline at end of file diff --git a/epdc-resident-mp-yushan/subpages/family/pages/noAccess/noAccess.js b/epdc-resident-mp-yushan/subpages/family/pages/noAccess/noAccess.js index 7c779ae..56d167b 100644 --- a/epdc-resident-mp-yushan/subpages/family/pages/noAccess/noAccess.js +++ b/epdc-resident-mp-yushan/subpages/family/pages/noAccess/noAccess.js @@ -7,7 +7,11 @@ Page({ data: { }, - + handleHome(){ + wx.navigateTo({ + url: '/pages/index/index', + }) + }, /** * 生命周期函数--监听页面加载 */ diff --git a/epdc-resident-mp-yushan/subpages/family/pages/noAccess/noAccess.wxml b/epdc-resident-mp-yushan/subpages/family/pages/noAccess/noAccess.wxml index d9f18ff..c116329 100644 --- a/epdc-resident-mp-yushan/subpages/family/pages/noAccess/noAccess.wxml +++ b/epdc-resident-mp-yushan/subpages/family/pages/noAccess/noAccess.wxml @@ -1,2 +1,4 @@ - -subpages/family/pages/noAccess/noAccess.wxml + + + 返回首页 + \ No newline at end of file diff --git a/epdc-resident-mp-yushan/subpages/family/pages/noAccess/noAccess.wxss b/epdc-resident-mp-yushan/subpages/family/pages/noAccess/noAccess.wxss index b8d3da3..d6e4915 100644 --- a/epdc-resident-mp-yushan/subpages/family/pages/noAccess/noAccess.wxss +++ b/epdc-resident-mp-yushan/subpages/family/pages/noAccess/noAccess.wxss @@ -1 +1,23 @@ -/* subpages/family/pages/noAccess/noAccess.wxss */ \ No newline at end of file +.no-family { + padding-top: 200rpx; +} +.no-family image { + display: block; + width: 506rpx; + margin: 0 auto; +} +.no-family .no-btn { + width: 220rpx; + height: 66rpx; + margin: 60rpx auto 0; + font-size: 32rpx; + color: #fff; + text-align: center; + line-height: 66rpx; + background-image: linear-gradient(90deg, #ca151d 0%, #e11c13 100%); + border-radius: 30rpx; + -webkit-border-radius: 30rpx; + -moz-border-radius: 30rpx; + -ms-border-radius: 30rpx; + -o-border-radius: 30rpx; +} \ No newline at end of file diff --git a/epdc-resident-mp-yushan/subpages/family/utils/api.js b/epdc-resident-mp-yushan/subpages/family/utils/api.js index b7ad9ed..ba995a9 100644 --- a/epdc-resident-mp-yushan/subpages/family/utils/api.js +++ b/epdc-resident-mp-yushan/subpages/family/utils/api.js @@ -4,54 +4,68 @@ const request = require('../../../utils/request') * 绑定我的家庭房屋 */ export function bindingFamily (param) { - return request.post('/api/custom/family/bindingFamily',param) + return request.post('custom/family/bindingFamily',param) } /** * 获取小区下拉列表 */ export function getPlotOption (param) { - return request.get('/api/custom/personroom/getPlotOption',param) + return request.get('custom/personroom/getPlotOption',param) } /** * 获取楼栋下拉列表 */ export function getBuildingOption (param) { - return request.get('/api/custom/personroom/getBuildingOption',param) + return request.get('custom/personroom/getBuildingOption',param) } /** * 获取单元下拉列表 */ export function getUnitOption (param) { - return request.get('/api/custom/personroom/getUnitOption',param) + return request.get('custom/personroom/getUnitOption',param) } /** * 获取房屋下拉列表 */ export function getHouseOption (param) { - return request.get('/api/custom/personroom/getHouseOption', param) + return request.get('custom/personroom/getHouseOption', param) } /** * 添加成员信息 */ export function addFamilyMember (param) { - return request.post('/api/custom/personroom/addFamilyMember', param) + return request.post('custom/personroom/addFamilyMember', param) } /** * 修改成员信息 */ export function updateFamilyMember (param) { - return request.post('/api/custom/personroom/updateFamilyMember',param) + return request.post('custom/personroom/updateFamilyMember',param) } /** * 获取成员信息 */ export function getFamilyMember (param) { - return request.get('/api/custom/personroom/getFamilyMember',param) -} \ No newline at end of file + return request.get('custom/personroom/getFamilyMember',param) +} + +/** + * 获取房屋信息 + */ + export function getHouseInfo (param) { + return request.get('custom/personroom/getHouseInfo',param) +} + +/** + * 获取与户主关系 + */ + export function householderRelation () { + return request.get('imgconfig/heartImgType/householder_relation') +} diff --git a/epdc-resident-mp-yushan/subpages/family/utils/validate/index.js b/epdc-resident-mp-yushan/subpages/family/utils/validate/index.js new file mode 100644 index 0000000..49845d2 --- /dev/null +++ b/epdc-resident-mp-yushan/subpages/family/utils/validate/index.js @@ -0,0 +1,51 @@ +import rules from './rules'; + +/** + * 表单验证 + * + * @param {Object} fmData [表单数据] + * @param {Object} opts [参数] + * @return {Object} [descrsiption] + */ +export default function(fmData, opts){ + let res = { + valid: true, + error: '', + errors: [], + fields: {} + }; + Object.keys(opts).forEach(key => { + + let value = fmData[key], + item = opts[key], + resItem = { + valid: true, + error: '', + errors: [] + }; + + item.forEach(ruleItem => { + let {rule, message, param} = ruleItem; + if (rules[rule]) { + if (!rules[rule].check(value, param)) { + message = message + ? message + : rules[rule].message; + if (res.valid) { + res.valid = false; + res.error = message; + } + if (resItem.valid) { + resItem.valid = false; + resItem.error = message; + } + resItem.errors.push(message); + res.errors.push(message); + } + } + }); + res.fields[key] = resItem; + }); + + return res; +} diff --git a/epdc-resident-mp-yushan/subpages/family/utils/validate/rules.js b/epdc-resident-mp-yushan/subpages/family/utils/validate/rules.js new file mode 100644 index 0000000..25038a8 --- /dev/null +++ b/epdc-resident-mp-yushan/subpages/family/utils/validate/rules.js @@ -0,0 +1,123 @@ +'use strict'; + +/** + * 表单验证规则 + */ +export default { + required: { + message: '该字段必填', + check(v) { + const type = typeof v; + if (type === 'string') { + return v !== ''; + } else if (type === 'array') { + return v.length > 0; + } else if (type === 'boolean') { + return v; + } else if (type === 'number') { + return true; + return v !== 0; + } else if (type === 'object') { + return v !== null && v !== undefined; + } else { + return true; + } + } + }, + // 最小 + min: { + message: '超过最小限制', + check(v, param) { + return parseFloat(v) >= parseFloat(param) || v === ''; + } + }, + // 最大 + max: { + message: '超过最小限制', + check(v, param) { + return parseFloat(v) <= parseFloat(param) || v === ''; + } + }, + //只能数字、字母、下划线组合,下划线不能在开头或结尾 + user: { + message: '只能数字、字母、下划线组合,下划线不能在开头或结尾', + check(v) { + return /^(?!_)(?!.*?_$)(\w)*$/.test(v) || v === ''; + } + }, + //身份证号 + idCard: { + message: '', + check(v) { + return /^([1-9]\d{7}((0\d)|(1[0-2]))(([0|1|2]\d)|3[0-1])\d{3})$|^([1-9]\d{5}[1-9]\d{3}((0\d)|(1[0-2]))(([0|1|2]\d)|3[0-1])((\d{4})|\d{3}[Xx]))$/.test(v) || v === ''; + } + }, + // 手机号 + mobile: { + message: '手机号格式不正确', + check(v) { + return /^1[23456789]{1}[0-9]{9}$/.test(v) || v === ''; + } + }, + //url地址 + url: { + message: 'url地址格式不正确', + check(v) { + return /^(?:(?:(?:https?|ftp):)?\/\/)(?:\S+(?::\S*)?@)?(?:(?!(?:10|127)(?:\.\d{1,3}){3})(?!(?:169\.254|192\.168)(?:\.\d{1,3}){2})(?!172\.(?:1[6-9]|2\d|3[0-1])(?:\.\d{1,3}){2})(?:[1-9]\d?|1\d\d|2[01]\d|22[0-3])(?:\.(?:1?\d{1,2}|2[0-4]\d|25[0-5])){2}(?:\.(?:[1-9]\d?|1\d\d|2[0-4]\d|25[0-4]))|(?:(?:[a-z\u00a1-\uffff0-9]-*)*[a-z\u00a1-\uffff0-9]+)(?:\.(?:[a-z\u00a1-\uffff0-9]-*)*[a-z\u00a1-\uffff0-9]+)*(?:\.(?:[a-z\u00a1-\uffff]{2,})).?)(?::\d{2,5})?(?:[/?#]\S*)?$/i.test(v) || v === ''; + } + }, + //汉字 + chinese: { + message: '仅限汉字', + check(v) { + return /^[\u4e00-\u9fa5]*$/.test(v) || v === ''; + } + }, + //数字 + number: { + message: '仅限数字', + check(v) { + return /^(?:-?\d+|-?\d{1,3}(?:,\d{3})+)?(?:\.\d+)?$/.test(v) || v === ''; + } + }, + //数字或字母 + alphaNum: { + message: '仅限字母或数字', + check(v) { + return /^[A-Za-z0-9]+$/.test(v) || v === ''; + } + }, + //整数 + digits: { + message: '仅限整数', + check(v) { + return /^\d+$/.test(v) || v === ''; + } + }, + //范围长度 + rangeLength: { + message: '请输入指定范围长度', + check(v, param) { + let length = v.length; + if (Array.isArray(param)) { + return (length >= param[0] && length <= param[1]) || v === ''; + } else { + return length == param || v === ''; + } + } + }, + //范围 + range: { + message: '', + check(v, param) { + return (v >= param[0] && v <= param[1]) || v === ''; + } + }, + //等于 + equal: { + message: '两次输入不一致', + check(v, param) { + return v == param || v === ''; + } + } +}; \ No newline at end of file diff --git a/epdc-resident-mp-yushan/subpages/family/wxss/c-popForm.wxss b/epdc-resident-mp-yushan/subpages/family/wxss/c-popForm.wxss new file mode 100644 index 0000000..0248e43 --- /dev/null +++ b/epdc-resident-mp-yushan/subpages/family/wxss/c-popForm.wxss @@ -0,0 +1 @@ +@charset "UTF-8";.f-cb{float:none;clear:both;height:0}.f-cs::after{display:block;visibility:hidden;clear:both;overflow:hidden;height:0;content:""}.f-hide{display:none}.f-fl{float:left}.f-fr{float:right}.f-bs1{box-shadow:0 2rpx 8rpx 0 rgba(0,0,0,.1)}.f-bs2{box-shadow:0 4rpx 12rpx 0 rgba(0,0,0,.16)}.f-bs3{box-shadow:0 6rpx 18rpx 0 rgba(0,0,0,.22)}.f-blur{filter:blur(3px)}.f-shield{position:fixed;z-index:9999;top:0;left:0;right:0;bottom:0;width:100%;height:100%;background-color:rgba(0,0,0,.4);backdrop-filter:blur(8rpx)}@keyframes fade_in{0%{opacity:0}100%{opacity:1}}@keyframes fade_in_up{0%{transform:translate3d(0,360rpx,0);opacity:.3}100%{transform:translate3d(0,0,0);opacity:1}}@keyframes fade_in_down{0%{transform:translate3d(0,-360rpx),0;opacity:.3}100%{transform:translate3d(0,0,0);opacity:1}}@keyframes fade_in_right{0%{transform:translate3d(360rpx,0,0);opacity:.3}100%{transform:translate3d(0,0,0);opacity:1}}@keyframes fade_in_left{0%{transform:translate3d(-360rpx,0,0);opacity:.3}100%{transform:translate3d(0,0,0);opacity:1}}.a-fade-in{animation:fade_in .27s ease-in}.a-fade-in-up{animation:fade_in_up .27s ease-in}.a-fade-in-right{animation:fade_in_right .27s ease-in}.a-fade-in-left{animation:fade_in_left .27s ease-in}.a-fade-in-down{animation:fade_in_down .27s ease-in}@keyframes fade_out{0%{display:block;opacity:1}100%{display:block;opacity:0}}@keyframes fade_out_up{0%{display:block;transform:translate3d(0,0,0);opacity:1}100%{display:block;transform:translate3d(0,360rpx,0);opacity:0}}@keyframes fade_out_down{0%{display:block;transform:translate3d(0,0,0);opacity:1}100%{display:block;transform:translate3d(0,-360rpx,0);opacity:0}}@keyframes fade_out_right{0%{display:block;transform:translate3d(0,0,0);opacity:1}100%{display:block;transform:translate3d(360rpx,0,0);opacity:0}}@keyframes fade_out_left{0%{display:block;transform:translate3d(0);opacity:1}100%{display:block;transform:translate3d(-360rpx,0,0);opacity:0}}.a-fade-out{animation:fade_out .27s ease-out}.a-fade-out-up{animation:fade_out_up .27s ease-out}.a-fade-out-right{animation:fade_out_right .27s ease-out}.a-fade-out-left{animation:fade_out_left .27s ease-out}.a-fade-out-down{animation:fade_out_down .27s ease-out}@keyframes scale_in{0%{opacity:0;transform:scale3d(0,0,0)}100%{opacity:1;transform:scale3d(1,1,1)}}@keyframes scale_in_left_up{0%{opacity:0;transform:translate3d(-50%,-50%,0) scale3d(0,0,0)}100%{opacity:1;transform:translate3d(0,0,0) scale3d(1,1,1)}}@keyframes scale_in_right_down{0%{opacity:0;transform:translate3d(50%,50%,0) scale3d(0,0,0)}100%{opacity:1;transform:translate3d(0,0,0) scale3d(1,1,1)}}@keyframes scale_in_right_up{0%{opacity:0;transform:translate3d(50%,-50%,0) scale3d(0,0,0)}100%{opacity:1;transform:translate3d(0,0,0) scale3d(1,1,1)}}@keyframes scale_in_left_down{0%{opacity:0;transform:translate3d(-50%,50%,0) scale3d(0,0,0)}100%{opacity:1;transform:translate3d(0,0,0) scale3d(1,1,1)}}.a-scale-in{animation:scale_in .27s ease-in}.a-scale-in-left-up{animation:scale_in_left_up .27s ease-in}.a-scale-in-right-up{animation:scale_in_right_up .27s ease-in}.a-scale-in-left-down{animation:scale_in_left_down .27s ease-in}.a-scale-in-right-down{animation:scale_in_right_down .27s ease-in}.m-fm{position:fixed;z-index:9999;top:0;left:0;right:0;bottom:0;width:100%;height:100%;background-color:rgba(0,0,0,.4);backdrop-filter:blur(8rpx);z-index:10000}.m-fm .fm{position:absolute;top:50%;left:0;right:0;margin:0 auto;width:630rpx;transform:translateY(-50%);box-sizing:border-box;padding:30rpx 40rpx;background-color:#fff;border-radius:20rpx;background-image:url(https://elink-esua-epdc.oss-cn-qingdao.aliyuncs.com/epmet/test/20210907/a766bbce71b54c6985fdbd2a38d8fa5e.png);background-repeat:no-repeat;background-size:contain}.m-fm .fm .logo{margin:40rpx 0 0}.m-fm .fm .logo image{display:block;margin:0 auto;width:120rpx;height:120rpx;border-radius:50%}.m-fm .fm .logo .tag{position:relative;margin-top:-25rpx;text-align:center}.m-fm .fm .logo .tag text{display:inline-block;padding:0 15rpx;height:28rpx;line-height:28rpx;background:#e3271c;border-radius:14rpx;font-size:20rpx;font-family:Source Han Serif SC;font-weight:500;color:#fff}.m-fm .fm .title{margin-top:10rpx;text-align:center;font-size:34rpx;font-family:Source Han Serif SC;font-weight:500;color:#333;line-height:60rpx}.m-fm .fm .attr{font-size:22rpx;font-family:Source Han Serif SC;font-weight:400;color:#999;line-height:42rpx;text-align:center}.m-fm .fm .attr text{display:inline-block;margin:0 10rpx}.m-fm .fm .intro{display:-webkit-box;overflow:hidden;text-overflow:ellipsis;-webkit-line-clamp:5;-webkit-box-orient:vertical;margin:10rpx auto;width:540rpx;font-size:34rpx;font-family:Source Han Serif SC;font-weight:400;color:#333;line-height:52rpx}.m-fm .fm .btn-close{position:absolute;top:0;right:0;padding:30rpx}.m-fm .fm .btn-close image{width:24rpx;height:24rpx}.m-fm .fm .input{display:block;box-sizing:border-box;padding:20rpx;width:550rpx;height:218rpx;background:#f7f7f7;border-radius:10rpx;margin:30rpx auto}.m-fm .fm .input textarea{box-sizing:border-box;display:block;margin:0 auto auto;padding:5rpx 0;width:100%;height:178rpx;line-height:45rpx;border-radius:20rpx;font-size:26rpx;font-family:Source Han Serif SC;font-weight:500;color:#333;line-height:42rpx}.m-fm .fm .input textarea .z-placeholder{white-space:normal;word-wrap:break-word;word-break:break-all;color:#999;font-weight:400}.m-fm .fm .operate{margin-top:30rpx;padding:15rpx 0;overflow:hidden}.m-fm .fm .operate .btn{margin:0 auto;box-sizing:border-box;width:170rpx;height:70rpx;background:#e3271c;border-radius:35rpx;color:#fff;text-align:center;line-height:70rpx;font-size:34rpx;font-family:Source Han Serif SC;font-weight:500} \ No newline at end of file diff --git a/epdc-resident-mp-yushan/subpages/family/wxss/family.wxss b/epdc-resident-mp-yushan/subpages/family/wxss/family.wxss index bc858d3..4dae7a5 100644 --- a/epdc-resident-mp-yushan/subpages/family/wxss/family.wxss +++ b/epdc-resident-mp-yushan/subpages/family/wxss/family.wxss @@ -1 +1 @@ -page{background:#fff}.f-top{position:relative;width:100%;height:200rpx;background:#e3271c;border-radius:0 0 30rpx 30rpx;-webkit-border-radius:0 0 30rpx 30rpx;-moz-border-radius:0 0 30rpx 30rpx;-ms-border-radius:0 0 30rpx 30rpx;-o-border-radius:0 0 30rpx 30rpx}.f-top .f-card{position:absolute;left:50%;bottom:-64rpx;display:flex;justify-content:space-between;align-items:center;width:690rpx;height:200rpx;margin-left:-345rpx;box-sizing:border-box;padding:28rpx 30rpx 18rpx;background-color:#fff;box-shadow:0 5rpx 32rpx 0 rgba(184,184,184,.25);border-radius:14rpx;-moz-border-radius:14rpx;-ms-border-radius:14rpx;-o-border-radius:14rpx;-webkit-border-radius:14rpx}.f-top .f-card .card-right{flex-shrink:0;margin-left:30rpx}.f-top .f-card .card-title{height:96rpx;font-family:PingFang-SC-Bold;font-size:34rpx;letter-spacing:1rpx;color:#020202;overflow:hidden}.f-top .f-card .card-num{display:flex;align-items:center;font-family:PingFang-SC-Medium;font-size:28rpx;letter-spacing:1rpx;color:#333}.f-top .f-card .card-num image{width:32rpx;height:18rpx}.f-top .f-card .card-qr{width:120rpx;height:120rpx;border:1rpx solid #eee}.f-top .f-card .card-qr image{display:block;width:100%;height:100%}.f-top .f-card .card-qr-name{margin-top:10rpx;font-family:PingFang-SC-Regular;font-size:22rpx;font-weight:400;font-stretch:normal;letter-spacing:1rpx;color:#333}.f-wr{width:100%;box-sizing:border-box;padding:100rpx 20rpx 0}.title-right,.title-wr{display:flex;align-items:center}.title-wr{justify-content:space-between;padding:28rpx 0;border-bottom:1rpx solid #e7eeee}.title-wr .title-label{position:relative;padding-left:25rpx;font-family:PingFang-SC-Bold;font-size:34rpx;font-weight:400;font-stretch:normal;letter-spacing:0;color:#333}.title-wr .title-label::after{content:'';position:absolute;top:50%;left:0;width:6rpx;height:30rpx;margin-top:-15rpx;background-color:#e60000;border-radius:3rpx;-webkit-border-radius:3rpx;-moz-border-radius:3rpx;-ms-border-radius:3rpx;-o-border-radius:3rpx}.title-wr .title-right-label{font-family:PingFang-SC-Light;font-size:26rpx;font-weight:400;font-stretch:normal;color:#999}.title-wr .right-icon{width:30rpx;height:30rpx}.f-table{background-color:#fbfbfb}.f-table .table-cell{display:flex;align-items:center;padding:26rpx 0;border:solid 1rpx #e3e3e3;border-top:0;font-family:PingFang-SC-Regular;font-size:30rpx;color:#000003}.f-table .table-cell .table-col{flex:1;text-align:center;line-height:1}.f-table .table-cell .table-col-4{color:#dd2a2a}.f-table .table-header{background:#f1f1f1;border:0;font-family:PingFang-SC-Regular;font-size:28rpx;color:#666}.mt40{margin-top:40rpx} \ No newline at end of file +page{background:#fff;box-sizing:border-box}.f-container{width:100%;box-sizing:border-box}.f-top{position:relative;width:100%;height:200rpx;background:#e3271c;border-radius:0 0 30rpx 30rpx;-webkit-border-radius:0 0 30rpx 30rpx;-moz-border-radius:0 0 30rpx 30rpx;-ms-border-radius:0 0 30rpx 30rpx;-o-border-radius:0 0 30rpx 30rpx}.f-top .flex-view{display:flex;justify-content:space-between;}.f-top .f-card{position:absolute;left:50%;bottom:-64rpx;width:690rpx;height:200rpx;margin-left:-345rpx;background-color:#fff;box-sizing:border-box;padding:28rpx 30rpx 18rpx;box-shadow: rgba(184,184,184,.25) 0px 0px 30px 5px;overflow:hidden;border-radius:14rpx;-moz-border-radius:14rpx;-ms-border-radius:14rpx;-o-border-radius:14rpx;-webkit-border-radius:14rpx}.f-top .f-card .card-right{flex-shrink:0;margin-left:30rpx}.f-top .f-card .card-title{height:96rpx;font-family:PingFang-SC-Bold;font-size:34rpx;letter-spacing:1rpx;color:#333;overflow:hidden}.f-top .f-card .card-num{display:flex;align-items:center;font-family:PingFang-SC-Medium;font-size:28rpx;letter-spacing:1rpx;color:#333;overflow:hidden}.f-top .f-card .card-num image{flex-shrink:0;width:32rpx;height:18rpx}.f-top .f-card .card-qr{width:140rpx;height:140rpx;margin: auto;position: relative;top: -5px;}.f-top .f-card .card-qr image{display:block;width:100%;height:100%;border-radius: 10px;}.f-top .f-card .card-qr-long{width:100rpx;height:100rpx}.f-top .f-card .card-qr-name{font-family:PingFang-SC-Regular;font-size:22rpx;font-weight:400;font-stretch:normal;letter-spacing:1rpx;color:#333}.f-wr{width:100%;box-sizing:border-box;padding:100rpx 20rpx 0}.title-right,.title-wr{display:flex;align-items:center}.title-wr{justify-content:space-between;padding:28rpx 0;border-bottom:1rpx solid #e7eeee}.title-wr .title-label{position:relative;padding-left:25rpx;font-family:PingFang-SC-Bold;font-size:34rpx;font-weight:400;font-stretch:normal;letter-spacing:0;color:#333}.title-wr .title-label::after{content:'';position:absolute;top:50%;left:0;width:6rpx;height:30rpx;margin-top:-15rpx;background-color:#e60000;border-radius:3rpx;-webkit-border-radius:3rpx;-moz-border-radius:3rpx;-ms-border-radius:3rpx;-o-border-radius:3rpx}.title-wr .title-right-label{font-family:PingFang-SC-Light;font-size:26rpx;font-weight:400;font-stretch:normal;color:#999}.title-wr .right-icon{width:30rpx;height:30rpx}.f-table{background-color:#fbfbfb}.f-table .table-cell{display:flex;align-items:center;padding:26rpx 0;border:solid 1rpx #e3e3e3;border-top:0;font-family:PingFang-SC-Regular;font-size:30rpx;color:#000003}.f-table .table-cell .table-col{flex:1;text-align:center;line-height:1}.f-table .table-cell .table-col-4{color:#dd2a2a}.f-table .table-header{background:#f1f1f1;border:0;font-family:PingFang-SC-Regular;font-size:28rpx;color:#666}.f-btns{display:flex;align-items:center;padding:30rpx 0}.f-btns .f-btns-icon{width:30rpx;height:30rpx;font-size:28rpx;color:#dd2a2a;text-align:center;line-height:30rpx;border:1rpx solid #dd2a2a;border-radius:50%;-webkit-border-radius:50%;-moz-border-radius:50%;-ms-border-radius:50%;-o-border-radius:50%}.f-btns .f-btns-label{margin-left:10rpx;font-size:28rpx;color:#dd2a2a}.mt40{margin-top:40rpx}.mt16{margin-top:16rpx}.no-data{font-size:28rpx;color:#999;text-align:center;line-height:300rpx}.m-fm .fm{top:500rpx;width:600rpx;padding:0 0 40rpx 0;background:#fff;overflow:hidden}.m-fm .fm .btn-close{top:27rpx;padding:0 30rpx;font-size:36rpx;color:#fff;line-height:90rpx}.m-fm .fm .btn-close image{display:block;width:36rpx;height:36rpx}.m-fm .fm .fm-btn{width:240rpx;height:54rpx;margin:20rpx auto 0;font-family:PingFang-SC-Medium;font-size:28rpx;font-weight:400;font-stretch:normal;letter-spacing:0;color:#999;text-align:center;line-height:54rpx;border-radius:27rpx;border:solid 1rpx #eee;-webkit-border-radius:27rpx;-moz-border-radius:27rpx;-ms-border-radius:27rpx;-o-border-radius:27rpx}.m-fm .fm-header{width:100%;height:90rpx;margin-bottom:20rpx;text-align:center;line-height:90rpx;font-family:PingFang-SC-Bold;font-size:32rpx;color:#fff;background-image:linear-gradient(90deg,#ca151d 0,#e11c13 100%)}.m-fm .fm-qr{width:400rpx;height:400rpx;box-sizing:border-box;margin:0 auto}.m-fm .fm-qr image{display:block;width:100%;height:100%}.no-family{padding-top:200rpx}.no-family image{display:block;width:506rpx;margin:0 auto}.no-family .no-btn{width:220rpx;height:66rpx;margin:60rpx auto 0;font-size:32rpx;color:#fff;text-align:center;line-height:66rpx;background-image:linear-gradient(90deg,#ca151d 0,#e11c13 100%);border-radius:30rpx;-webkit-border-radius:30rpx;-moz-border-radius:30rpx;-ms-border-radius:30rpx;-o-border-radius:30rpx} \ No newline at end of file diff --git a/epdc-resident-mp-yushan/subpages/family/wxss/familyInfo.wxss b/epdc-resident-mp-yushan/subpages/family/wxss/familyInfo.wxss index 5b912e6..56ff418 100644 --- a/epdc-resident-mp-yushan/subpages/family/wxss/familyInfo.wxss +++ b/epdc-resident-mp-yushan/subpages/family/wxss/familyInfo.wxss @@ -1 +1 @@ -@charset "UTF-8";.f-cb{float:none;clear:both;height:0}.f-cs::after{display:block;visibility:hidden;clear:both;overflow:hidden;height:0;content:""}.f-hide{display:none}.f-fl{float:left}.f-fr{float:right}.f-bs1{box-shadow:0 2rpx 8rpx 0 rgba(0,0,0,.1)}.f-bs2{box-shadow:0 4rpx 12rpx 0 rgba(0,0,0,.16)}.f-bs3{box-shadow:0 6rpx 18rpx 0 rgba(0,0,0,.22)}.f-blur{filter:blur(3px)}.f-shield{position:fixed;z-index:9999;top:0;left:0;right:0;bottom:0;width:100%;height:100%;background-color:rgba(0,0,0,.4);backdrop-filter:blur(8rpx)}@keyframes fade_in{0%{opacity:0}100%{opacity:1}}@keyframes fade_in_up{0%{transform:translate3d(0,360rpx,0);opacity:.3}100%{transform:translate3d(0,0,0);opacity:1}}@keyframes fade_in_down{0%{transform:translate3d(0,-360rpx),0;opacity:.3}100%{transform:translate3d(0,0,0);opacity:1}}@keyframes fade_in_right{0%{transform:translate3d(360rpx,0,0);opacity:.3}100%{transform:translate3d(0,0,0);opacity:1}}@keyframes fade_in_left{0%{transform:translate3d(-360rpx,0,0);opacity:.3}100%{transform:translate3d(0,0,0);opacity:1}}.a-fade-in{animation:fade_in .27s ease-in}.a-fade-in-up{animation:fade_in_up .27s ease-in}.a-fade-in-right{animation:fade_in_right .27s ease-in}.a-fade-in-left{animation:fade_in_left .27s ease-in}.a-fade-in-down{animation:fade_in_down .27s ease-in}@keyframes fade_out{0%{display:block;opacity:1}100%{display:block;opacity:0}}@keyframes fade_out_up{0%{display:block;transform:translate3d(0,0,0);opacity:1}100%{display:block;transform:translate3d(0,360rpx,0);opacity:0}}@keyframes fade_out_down{0%{display:block;transform:translate3d(0,0,0);opacity:1}100%{display:block;transform:translate3d(0,-360rpx,0);opacity:0}}@keyframes fade_out_right{0%{display:block;transform:translate3d(0,0,0);opacity:1}100%{display:block;transform:translate3d(360rpx,0,0);opacity:0}}@keyframes fade_out_left{0%{display:block;transform:translate3d(0);opacity:1}100%{display:block;transform:translate3d(-360rpx,0,0);opacity:0}}.a-fade-out{animation:fade_out .27s ease-out}.a-fade-out-up{animation:fade_out_up .27s ease-out}.a-fade-out-right{animation:fade_out_right .27s ease-out}.a-fade-out-left{animation:fade_out_left .27s ease-out}.a-fade-out-down{animation:fade_out_down .27s ease-out}@keyframes scale_in{0%{opacity:0;transform:scale3d(0,0,0)}100%{opacity:1;transform:scale3d(1,1,1)}}@keyframes scale_in_left_up{0%{opacity:0;transform:translate3d(-50%,-50%,0) scale3d(0,0,0)}100%{opacity:1;transform:translate3d(0,0,0) scale3d(1,1,1)}}@keyframes scale_in_right_down{0%{opacity:0;transform:translate3d(50%,50%,0) scale3d(0,0,0)}100%{opacity:1;transform:translate3d(0,0,0) scale3d(1,1,1)}}@keyframes scale_in_right_up{0%{opacity:0;transform:translate3d(50%,-50%,0) scale3d(0,0,0)}100%{opacity:1;transform:translate3d(0,0,0) scale3d(1,1,1)}}@keyframes scale_in_left_down{0%{opacity:0;transform:translate3d(-50%,50%,0) scale3d(0,0,0)}100%{opacity:1;transform:translate3d(0,0,0) scale3d(1,1,1)}}.a-scale-in{animation:scale_in .27s ease-in}.a-scale-in-left-up{animation:scale_in_left_up .27s ease-in}.a-scale-in-right-up{animation:scale_in_right_up .27s ease-in}.a-scale-in-left-down{animation:scale_in_left_down .27s ease-in}.a-scale-in-right-down{animation:scale_in_right_down .27s ease-in}.m-fm .fm{position:relative;margin-bottom:15rpx;background-color:#fff}.m-fm .fm .fm-title{padding:30rpx;line-height:50rpx;font-size:34rpx;font-family:Source Han Serif SC;font-weight:800;color:#333}.m-fm .fm .record-btn{position:absolute;right:0;top:28rpx;width:160rpx;height:56rpx;line-height:56rpx;border-radius:56rpx 0 0 56rpx;text-align:center;font-size:28rpx;font-family:Source Han Serif SC;color:#fff;background:linear-gradient(to right,#e83100,#ff6326)}.m-fm .fm .item-list{padding:0 30rpx}.m-fm .fm .item-list .item{border-top:1rpx solid #e7eeee;padding:25rpx 0;line-height:60rpx;display:flex;justify-content:space-between}.m-fm .fm .item-list .item .upload{position:relative;width:100%;height:280rpx}.m-fm .fm .item-list .item .upload .upload-show{width:100%;height:280rpx}.m-fm .fm .item-list .item .upload .upload-add{position:absolute;top:0;bottom:0;left:0;right:0;margin:auto;text-align:center;height:100rpx;width:300rpx;font-size:30rpx;font-family:Source Han Serif SC;font-weight:300;color:#999;line-height:54rpx}.m-fm .fm .item-list .item .upload .upload-add image{display:block;margin:0 auto;width:46rpx;height:46rpx}.m-fm .fm .item-list .item .radio{width:100%;display:flex;justify-content:flex-end}.m-fm .fm .item-list .item .radio .radio-item{margin-left:40rpx;width:150rpx;height:60rpx;border-radius:4rpx;text-align:center;font-size:32rpx;font-family:Source Han Serif SC;font-weight:400;line-height:60rpx;background:#f7f7f7;color:#333}.m-fm .fm .item-list .item .radio .radio-item.z-on{color:#e3271c;background:#fff2f1}.m-fm .fm .item-list .item .textarea{box-sizing:border-box;padding:0 30rpx;width:100%}.m-fm .fm .item-list .item .textarea textarea{box-sizing:border-box;display:block;padding:0;width:100%;height:200rpx;border-radius:10rpx;font-size:32rpx;font-family:Source Han Serif SC;color:#333}.m-fm .fm .item-list .item .textarea textarea .z-ph{color:#999}.m-fm .fm .item-list .item .field{position:relative;box-sizing:border-box;width:300rpx;padding-left:25rpx}.m-fm .fm .item-list .item .field .must{position:absolute;top:0;left:0;margin:0 auto;color:#d81918}.m-fm .fm .item-list .item .field .field-text{font-size:32rpx;font-family:Source Han Serif SC;font-weight:400;color:#333}.m-fm .fm .item-list .item .value{position:relative;width:410rpx;display:flex;font-size:32rpx;font-family:Source Han Serif SC;font-weight:400;color:#333;line-height:60rpx}.m-fm .fm .item-list .item .value .picker{position:relative;width:100%;padding-right:40rpx;text-align:right}.m-fm .fm .item-list .item .value .picker .z-weak{color:#999}.m-fm .fm .item-list .item .value .picker .menu-arrow{position:absolute;top:20rpx;right:0;width:16rpx;height:23rpx}.m-fm .fm .item-list .item .value .input{width:100%;text-align:right}.m-fm .fm .item-list .item .value .input input{border:0;width:100%;line-height:60rpx;text-align:right;font-size:30rpx;font-family:Source Han Serif SC;font-weight:400;color:#333}.m-fm .fm .item-list .item .value .input input .z-ph{color:#999}.m-fm .operate .btn{margin:100rpx auto;width:400rpx;height:80rpx;line-height:80rpx;background:#e3271c;border-radius:40rpx;text-align:center;font-size:32rpx;font-family:Source Han Serif SC;font-weight:400;color:#fff}.m-fm .operate .btn.z-disabled{opacity:.5}.m-fm .edit{display:flex;justify-content:space-between}.m-fm .edit .btn{margin:100rpx auto;width:240rpx;height:80rpx;line-height:80rpx;border-radius:40rpx;text-align:center;font-size:32rpx;font-family:Source Han Serif SC;font-weight:400;color:#fff}.m-fm .edit .btn.z-disabled{opacity:.5}.m-fm .edit .btn.left{background-image:linear-gradient(90deg,#0863b3 0,#0399d8 100%);box-shadow:0 4px 10px 0 rgba(4,144,210,.32);border-radius:40px}.m-fm .edit .btn.right{background-image:linear-gradient(90deg,#dc1b03 0,#f37b03 100%);box-shadow:0 4px 10px 0 rgba(241,114,3,.32);border-radius:40px}.m-fm .edit-two{display:flex;justify-content:space-between}.m-fm .edit-two .btn{margin:100rpx auto;width:240rpx;height:80rpx;line-height:80rpx;background:#e3271c;border-radius:40rpx;text-align:center;font-size:32rpx;font-family:Source Han Serif SC;font-weight:400;color:#fff}.m-fm .edit-two .btn.z-disabled{opacity:.5}.m-fm .edit-two .btn.left{color:#999;background-color:#fff;box-shadow:0 4px 10px 0 rgba(209,209,209,.32);border-radius:40px;border:solid 1px #cacaca}.m-fm .edit-two .btn.right{background-image:linear-gradient(90deg,#dc1b03 0,#f37b03 100%);box-shadow:0 4px 10px 0 rgba(241,114,3,.32);border-radius:40px}.m-modal{position:fixed;z-index:10000;width:100%;height:100vh;left:0;top:0;background:rgba(0,0,0,.6);display:flex;justify-content:center;align-items:center}.content{position:relative;box-sizing:border-box;padding:9rpx 40rpx 10rpx;width:530rpx;border-radius:16rpx;background:#fff}.content .close-dialog{position:absolute;z-index:1;top:10rpx;right:10rpx;width:60rpx;height:60rpx;display:flex;align-items:center;justify-content:center}.content .close-dialog image{width:24rpx;height:24rpx}.content .title{font-size:36rpx;color:#333;width:100%;line-height:60rpx;height:60rpx;text-align:center;margin-bottom:27rpx}.content .item-list .item{display:flex;justify-content:space-between}.content .item-list .item .textarea{margin-top:20rpx;box-sizing:border-box;width:100%;border:1rpx solid #e7eeee;border-radius:10rpx}.content .item-list .item .textarea textarea{box-sizing:border-box;display:block;padding:20rpx;width:100%;height:200rpx;border-radius:10rpx;font-size:32rpx;font-family:Source Han Serif SC;color:#333}.content .item-list .item .textarea textarea .z-ph{color:#999}.content .item-list .item .field{position:relative;box-sizing:border-box;width:300rpx;padding-left:25rpx}.content .item-list .item .field .must{position:absolute;top:0;left:0;margin:0 auto;color:#d81918}.content .item-list .item .field .field-text{font-size:32rpx;font-family:Source Han Serif SC;font-weight:400;color:#333}.content .item-list .item .value{position:relative;width:410rpx;display:flex;font-size:32rpx;font-family:Source Han Serif SC;font-weight:400;color:#333;line-height:60rpx}.content .item-list .item .value .picker{position:relative;width:100%;padding-right:40rpx;text-align:right}.content .item-list .item .value .picker .z-weak{color:#999}.content .item-list .item .value .picker .menu-arrow{position:absolute;top:20rpx;right:0;width:16rpx;height:23rpx}.content .item-list .item .value .input{width:100%;text-align:right}.content .item-list .item .value .input input{border:0;width:100%;line-height:60rpx;text-align:right;font-size:30rpx;font-family:Source Han Serif SC;font-weight:400;color:#333}.content .item-list .item .value .input input .z-ph{color:#999}.btns{display:flex;justify-content:space-between}.btns .btn{margin:50rpx auto;width:35%;height:50rpx;line-height:50rpx;border-radius:40rpx;text-align:center;font-size:28rpx;font-family:Source Han Serif SC;font-weight:400;color:#fff}.btns .btn.z-disabled{opacity:.5}.btns .btn.left{color:#999;background-color:#fff;box-shadow:0 4px 10px 0 rgba(209,209,209,.32);border-radius:40px;border:solid 1px #cacaca}.btns .btn.right{background-image:linear-gradient(90deg,#dc1b03 0,#f37b03 100%);box-shadow:0 4px 10px 0 rgba(241,114,3,.32);border-radius:40px} \ No newline at end of file +@charset "UTF-8";.f-cb{float:none;clear:both;height:0}.f-cs::after{display:block;visibility:hidden;clear:both;overflow:hidden;height:0;content:""}.f-hide{display:none}.f-fl{float:left}.f-fr{float:right}.f-bs1{box-shadow:0 2rpx 8rpx 0 rgba(0,0,0,.1)}.f-bs2{box-shadow:0 4rpx 12rpx 0 rgba(0,0,0,.16)}.f-bs3{box-shadow:0 6rpx 18rpx 0 rgba(0,0,0,.22)}.f-blur{filter:blur(3px)}.f-shield{position:fixed;z-index:9999;top:0;left:0;right:0;bottom:0;width:100%;height:100%;background-color:rgba(0,0,0,.4);backdrop-filter:blur(8rpx)}@keyframes fade_in{0%{opacity:0}100%{opacity:1}}@keyframes fade_in_up{0%{transform:translate3d(0,360rpx,0);opacity:.3}100%{transform:translate3d(0,0,0);opacity:1}}@keyframes fade_in_down{0%{transform:translate3d(0,-360rpx),0;opacity:.3}100%{transform:translate3d(0,0,0);opacity:1}}@keyframes fade_in_right{0%{transform:translate3d(360rpx,0,0);opacity:.3}100%{transform:translate3d(0,0,0);opacity:1}}@keyframes fade_in_left{0%{transform:translate3d(-360rpx,0,0);opacity:.3}100%{transform:translate3d(0,0,0);opacity:1}}.a-fade-in{animation:fade_in .27s ease-in}.a-fade-in-up{animation:fade_in_up .27s ease-in}.a-fade-in-right{animation:fade_in_right .27s ease-in}.a-fade-in-left{animation:fade_in_left .27s ease-in}.a-fade-in-down{animation:fade_in_down .27s ease-in}@keyframes fade_out{0%{display:block;opacity:1}100%{display:block;opacity:0}}@keyframes fade_out_up{0%{display:block;transform:translate3d(0,0,0);opacity:1}100%{display:block;transform:translate3d(0,360rpx,0);opacity:0}}@keyframes fade_out_down{0%{display:block;transform:translate3d(0,0,0);opacity:1}100%{display:block;transform:translate3d(0,-360rpx,0);opacity:0}}@keyframes fade_out_right{0%{display:block;transform:translate3d(0,0,0);opacity:1}100%{display:block;transform:translate3d(360rpx,0,0);opacity:0}}@keyframes fade_out_left{0%{display:block;transform:translate3d(0);opacity:1}100%{display:block;transform:translate3d(-360rpx,0,0);opacity:0}}.a-fade-out{animation:fade_out .27s ease-out}.a-fade-out-up{animation:fade_out_up .27s ease-out}.a-fade-out-right{animation:fade_out_right .27s ease-out}.a-fade-out-left{animation:fade_out_left .27s ease-out}.a-fade-out-down{animation:fade_out_down .27s ease-out}@keyframes scale_in{0%{opacity:0;transform:scale3d(0,0,0)}100%{opacity:1;transform:scale3d(1,1,1)}}@keyframes scale_in_left_up{0%{opacity:0;transform:translate3d(-50%,-50%,0) scale3d(0,0,0)}100%{opacity:1;transform:translate3d(0,0,0) scale3d(1,1,1)}}@keyframes scale_in_right_down{0%{opacity:0;transform:translate3d(50%,50%,0) scale3d(0,0,0)}100%{opacity:1;transform:translate3d(0,0,0) scale3d(1,1,1)}}@keyframes scale_in_right_up{0%{opacity:0;transform:translate3d(50%,-50%,0) scale3d(0,0,0)}100%{opacity:1;transform:translate3d(0,0,0) scale3d(1,1,1)}}@keyframes scale_in_left_down{0%{opacity:0;transform:translate3d(-50%,50%,0) scale3d(0,0,0)}100%{opacity:1;transform:translate3d(0,0,0) scale3d(1,1,1)}}.a-scale-in{animation:scale_in .27s ease-in}.a-scale-in-left-up{animation:scale_in_left_up .27s ease-in}.a-scale-in-right-up{animation:scale_in_right_up .27s ease-in}.a-scale-in-left-down{animation:scale_in_left_down .27s ease-in}.a-scale-in-right-down{animation:scale_in_right_down .27s ease-in}.m-fm .fm{position:relative;margin-bottom:15rpx;background-color:#fff}.m-fm .fm .fm-title{padding:30rpx;line-height:50rpx;font-size:34rpx;font-family:Source Han Serif SC;font-weight:800;color:#333}.m-fm .fm .record-btn{position:absolute;right:0;top:28rpx;width:160rpx;height:56rpx;line-height:56rpx;border-radius:56rpx 0 0 56rpx;text-align:center;font-size:28rpx;font-family:Source Han Serif SC;color:#fff;background:linear-gradient(to right,#e83100,#ff6326)}.m-fm .fm .item-list{padding:0 30rpx}.m-fm .fm .item-list .item{border-top:1rpx solid #e7eeee;padding:25rpx 0;line-height:60rpx;display:flex;justify-content:space-between}.m-fm .fm .item-list .item .upload{position:relative;width:100%;height:280rpx}.m-fm .fm .item-list .item .upload .upload-show{width:100%;height:280rpx}.m-fm .fm .item-list .item .upload .upload-add{position:absolute;top:0;bottom:0;left:0;right:0;margin:auto;text-align:center;height:100rpx;width:300rpx;font-size:30rpx;font-family:Source Han Serif SC;font-weight:300;color:#999;line-height:54rpx}.m-fm .fm .item-list .item .upload .upload-add image{display:block;margin:0 auto;width:46rpx;height:46rpx}.m-fm .fm .item-list .item .radio{width:100%;display:flex;justify-content:flex-end}.m-fm .fm .item-list .item .radio .radio-item{margin-left:40rpx;width:150rpx;height:60rpx;border-radius:4rpx;text-align:center;font-size:32rpx;font-family:Source Han Serif SC;font-weight:400;line-height:60rpx;background:#f7f7f7;color:#333}.m-fm .fm .item-list .item .radio .radio-item.z-on{color:#e3271c;background:#fff2f1}.m-fm .fm .item-list .item .textarea{box-sizing:border-box;padding:0 30rpx;width:100%}.m-fm .fm .item-list .item .textarea textarea{box-sizing:border-box;display:block;padding:0;width:100%;height:200rpx;border-radius:10rpx;font-size:32rpx;font-family:Source Han Serif SC;color:#333}.m-fm .fm .item-list .item .textarea textarea .z-ph{color:#999}.m-fm .fm .item-list .item .field{position:relative;box-sizing:border-box;width:300rpx;padding-left:25rpx}.m-fm .fm .item-list .item .field .must{position:absolute;top:0;left:0;margin:0 auto;color:#d81918}.m-fm .fm .item-list .item .field .field-text{font-size:32rpx;font-family:Source Han Serif SC;font-weight:400;color:#333}.m-fm .fm .item-list .item .value{position:relative;width:410rpx;display:flex;font-size:32rpx;font-family:Source Han Serif SC;font-weight:400;color:#333;line-height:60rpx}.m-fm .fm .item-list .item .value .picker{position:relative;width:100%;padding-right:40rpx;text-align:right}.m-fm .fm .item-list .item .value .picker .z-weak{color:#999}.m-fm .fm .item-list .item .value .picker .menu-arrow{position:absolute;top:20rpx;right:0;width:16rpx;height:23rpx}.m-fm .fm .item-list .item .value .input{width:100%;text-align:right}.m-fm .fm .item-list .item .value .input input{border:0;width:100%;line-height:60rpx;text-align:right;font-size:30rpx;font-family:Source Han Serif SC;font-weight:400;color:#333}.m-fm .fm .item-list .item .value .input input .z-ph{color:#999}.m-fm .operate .btn{margin:100rpx auto;width:400rpx;height:80rpx;line-height:80rpx;background:#e3271c;border-radius:40rpx;text-align:center;font-size:32rpx;font-family:Source Han Serif SC;font-weight:400;color:#fff}.m-fm .operate .btn.z-disabled{opacity:.5}.m-fm .edit{display:flex;justify-content:space-between}.m-fm .edit .btn{margin:100rpx auto;width:240rpx;height:80rpx;line-height:80rpx;border-radius:40rpx;text-align:center;font-size:32rpx;font-family:Source Han Serif SC;font-weight:400;color:#fff}.m-fm .edit .btn.z-disabled{opacity:.5}.m-fm .edit .btn.left{background-image:linear-gradient(90deg,#0863b3 0,#0399d8 100%);box-shadow:0 4px 10px 0 rgba(4,144,210,.32);border-radius:40px}.m-fm .edit .btn.right{background-image:linear-gradient(90deg,#dc1b03 0,#f37b03 100%);box-shadow:0 4px 10px 0 rgba(241,114,3,.32);border-radius:40px}.m-fm .edit-two{display:flex;justify-content:space-between}.m-fm .edit-two .btn{margin:100rpx auto;width:240rpx;height:80rpx;line-height:80rpx;background:#e3271c;border-radius:40rpx;text-align:center;font-size:32rpx;font-family:Source Han Serif SC;font-weight:400;color:#fff}.m-fm .edit-two .btn.z-disabled{opacity:.5}.m-fm .edit-two .btn.left{color:#999;background-color:#fff;box-shadow:0 4px 10px 0 rgba(209,209,209,.32);border-radius:40px;border:solid 1px #cacaca}.m-fm .edit-two .btn.right{background-image:linear-gradient(90deg,#dc1b03 0,#f37b03 100%);box-shadow:0 4px 10px 0 rgba(241,114,3,.32);border-radius:40px}.m-modal{position:fixed;z-index:10000;width:100%;height:100vh;left:0;top:0;background:rgba(0,0,0,.6);display:flex;justify-content:center;align-items:center}.content{position:relative;box-sizing:border-box;padding:9rpx 40rpx 10rpx;width:530rpx;border-radius:16rpx;background:#fff}.content .close-dialog{position:absolute;z-index:1;top:10rpx;right:10rpx;width:60rpx;height:60rpx;display:flex;align-items:center;justify-content:center}.content .close-dialog image{width:24rpx;height:24rpx}.content .title{font-size:36rpx;color:#333;width:100%;line-height:60rpx;height:60rpx;text-align:center;margin-bottom:27rpx}.content .item-list .item{display:flex;justify-content:space-between}.content .item-list .item .textarea{margin-top:20rpx;box-sizing:border-box;width:100%;border:1rpx solid #e7eeee;border-radius:10rpx}.content .item-list .item .textarea textarea{box-sizing:border-box;display:block;padding:20rpx;width:100%;height:200rpx;border-radius:10rpx;font-size:32rpx;font-family:Source Han Serif SC;color:#333}.content .item-list .item .textarea textarea .z-ph{color:#999}.content .item-list .item .field{position:relative;box-sizing:border-box;width:300rpx;padding-left:25rpx}.content .item-list .item .field .must{position:absolute;top:0;left:0;margin:0 auto;color:#d81918}.content .item-list .item .field .field-text{font-size:32rpx;font-family:Source Han Serif SC;font-weight:400;color:#333}.content .item-list .item .value{position:relative;width:410rpx;display:flex;font-size:32rpx;font-family:Source Han Serif SC;font-weight:400;color:#333;line-height:60rpx}.content .item-list .item .value .picker{position:relative;width:100%;padding-right:40rpx;text-align:right}.content .item-list .item .value .picker .z-weak{color:#999}.content .item-list .item .value .picker .menu-arrow{position:absolute;top:20rpx;right:0;width:16rpx;height:23rpx}.content .item-list .item .value .input{width:100%;text-align:right}.content .item-list .item .value .input input{border:0;width:100%;line-height:60rpx;text-align:right;font-size:30rpx;font-family:Source Han Serif SC;font-weight:400;color:#333}.content .item-list .item .value .input input .z-ph{color:#999}.content .tip{margin-top:20rpx;color:#d81918;font-size:23rpx}.btns{display:flex;justify-content:space-between}.btns .btn{margin:50rpx auto;width:35%;height:50rpx;line-height:50rpx;border-radius:40rpx;text-align:center;font-size:28rpx;font-family:Source Han Serif SC;font-weight:400;color:#fff}.btns .btn.z-disabled{opacity:.5}.btns .btn.left{color:#999;background-color:#fff;box-shadow:0 4px 10px 0 rgba(209,209,209,.32);border-radius:40px;border:solid 1px #cacaca}.btns .btn.right{background-image:linear-gradient(90deg,#dc1b03 0,#f37b03 100%);box-shadow:0 4px 10px 0 rgba(241,114,3,.32);border-radius:40px} \ No newline at end of file