After Width: | Height: | Size: 7.4 KiB |
Before Width: | Height: | Size: 144 KiB After Width: | Height: | Size: 40 KiB |
Before Width: | Height: | Size: 192 KiB After Width: | Height: | Size: 43 KiB |
After Width: | Height: | Size: 2.1 KiB |
After Width: | Height: | Size: 74 KiB |
@ -0,0 +1,67 @@ |
|||||
|
import { $wuxActionSheet } from '../../../../../components/dist/index' |
||||
|
|
||||
|
Page({ |
||||
|
|
||||
|
/** |
||||
|
* 页面的初始数据 |
||||
|
*/ |
||||
|
data: { |
||||
|
|
||||
|
}, |
||||
|
|
||||
|
/** |
||||
|
* 生命周期函数--监听页面加载 |
||||
|
*/ |
||||
|
onLoad(options) { |
||||
|
|
||||
|
}, |
||||
|
|
||||
|
/** |
||||
|
* 生命周期函数--监听页面初次渲染完成 |
||||
|
*/ |
||||
|
onReady() { |
||||
|
|
||||
|
}, |
||||
|
|
||||
|
/** |
||||
|
* 生命周期函数--监听页面显示 |
||||
|
*/ |
||||
|
onShow() { |
||||
|
|
||||
|
}, |
||||
|
|
||||
|
/** |
||||
|
* 生命周期函数--监听页面隐藏 |
||||
|
*/ |
||||
|
onHide() { |
||||
|
|
||||
|
}, |
||||
|
|
||||
|
/** |
||||
|
* 生命周期函数--监听页面卸载 |
||||
|
*/ |
||||
|
onUnload() { |
||||
|
|
||||
|
}, |
||||
|
|
||||
|
/** |
||||
|
* 页面相关事件处理函数--监听用户下拉动作 |
||||
|
*/ |
||||
|
onPullDownRefresh() { |
||||
|
|
||||
|
}, |
||||
|
|
||||
|
/** |
||||
|
* 页面上拉触底事件的处理函数 |
||||
|
*/ |
||||
|
onReachBottom() { |
||||
|
|
||||
|
}, |
||||
|
|
||||
|
/** |
||||
|
* 用户点击右上角分享 |
||||
|
*/ |
||||
|
onShareAppMessage() { |
||||
|
|
||||
|
} |
||||
|
}) |
@ -0,0 +1,3 @@ |
|||||
|
{ |
||||
|
"usingComponents": {} |
||||
|
} |
@ -0,0 +1,244 @@ |
|||||
|
<view class="content"> |
||||
|
<view class="personal-info"> |
||||
|
<view class="basic-info"> |
||||
|
<view class="item"> |
||||
|
<view class="field"> |
||||
|
<text class="must">*</text> |
||||
|
<view class="field-text">事件位置</view> |
||||
|
</view> |
||||
|
<view class="value-dl" bindtap="getPosition"> |
||||
|
<view class="di-name">{{addressContent}}</view> |
||||
|
<image class="di-but" src="../../images/dingwei.png" mode="aspectFit" /> |
||||
|
</view> |
||||
|
</view> |
||||
|
|
||||
|
|
||||
|
<view class="item"> |
||||
|
<view class="field field-d"> |
||||
|
<view class="field-text">详细地址</view> |
||||
|
</view> |
||||
|
<view class="value value-d"> |
||||
|
<view class="input" style="width: 100%;"> |
||||
|
<input type="text" |
||||
|
placeholder-class="placeholder-style" |
||||
|
value="{{ personalInfo.issueAddress }}" |
||||
|
placeholder="请输入准确位置,便于事件办理" |
||||
|
bindinput="bindIssueAddressInput" |
||||
|
cursor-spacing="14" |
||||
|
maxlength="100" /> |
||||
|
</view> |
||||
|
</view> |
||||
|
</view> |
||||
|
<!-- wx:if="{{streetList.length>0}}" --> |
||||
|
<view class="item"> |
||||
|
<view class="field"> |
||||
|
<text class="must">*</text> |
||||
|
<view class="field-text">所属街道</view> |
||||
|
</view> |
||||
|
<view class="value"> |
||||
|
<picker class="picker" |
||||
|
range="{{streetList}}" |
||||
|
range-key="label" |
||||
|
data-list-name="streetList" |
||||
|
data-id-key="streetId" |
||||
|
data-name-key="street" |
||||
|
bindchange="inputSyncPicker"> |
||||
|
<view class="picker-text" wx:if="{{personalInfo.street}}">{{personalInfo.street}}</view> |
||||
|
<view class="picker-text z-weak" wx:else>请选择</view> |
||||
|
<image class="menu-arrow" src="../../images/arrow.png" mode="aspectFit" /> |
||||
|
</picker> |
||||
|
</view> |
||||
|
</view> |
||||
|
<!-- wx:if="{{communityList.length>0}}" --> |
||||
|
<view class="item"> |
||||
|
<view class="field"> |
||||
|
<text class="must">*</text> |
||||
|
<view class="field-text">所属社区</view> |
||||
|
</view> |
||||
|
<view class="value" data-name="community" bindtap="organizationTip"> |
||||
|
<picker class="picker" |
||||
|
disabled="{{ communityList.length == 0 ? true : false }}" |
||||
|
range="{{communityList}}" |
||||
|
range-key="label" |
||||
|
data-list-name="communityList" |
||||
|
data-id-key="communityId" |
||||
|
data-name-key="community" |
||||
|
bindchange="inputSyncPicker"> |
||||
|
<view class="picker-text" wx:if="{{personalInfo.community}}">{{personalInfo.community}}</view> |
||||
|
<view class="picker-text z-weak" wx:else>请选择</view> |
||||
|
<image class="menu-arrow" src="../../images/arrow.png" mode="aspectFit" /> |
||||
|
</picker> |
||||
|
</view> |
||||
|
</view> |
||||
|
<!-- wx:if="{{gridList.length>0}}" --> |
||||
|
<view class="item"> |
||||
|
<view class="field"> |
||||
|
<text class="must">*</text> |
||||
|
<view class="field-text">所属网格</view> |
||||
|
</view> |
||||
|
<view class="value" data-name="grid" bindtap="organizationTip"> |
||||
|
<picker class="picker" |
||||
|
disabled="{{ gridList.length == 0 ? true : false }}" |
||||
|
range="{{gridList}}" |
||||
|
range-key="label" |
||||
|
data-list-name="gridList" |
||||
|
data-id-key="gridId" |
||||
|
data-name-key="grid" |
||||
|
bindchange="inputSyncPicker"> |
||||
|
<view class="picker-text" wx:if="{{personalInfo.grid}}">{{personalInfo.grid}}</view> |
||||
|
<view class="picker-text z-weak" wx:else>请选择</view> |
||||
|
<image class="menu-arrow" src="../../images/arrow.png" mode="aspectFit" /> |
||||
|
</picker> |
||||
|
</view> |
||||
|
</view> |
||||
|
|
||||
|
<view class="item"> |
||||
|
<view class="field"> |
||||
|
<text class="must">*</text> |
||||
|
<view class="field-text">是否公开</view> |
||||
|
</view> |
||||
|
<view class="value-mobile"> |
||||
|
<radio-group class="radio-group" bindchange="bindFlagChange"> |
||||
|
<radio checked="{{personalInfo.showFlag === '0'}}" value="0" color="#F82525" class="radio">不公开</radio> |
||||
|
<radio checked="{{personalInfo.showFlag === '1'}}" value="1" color="#F82525" class="radio">公开</radio> |
||||
|
</radio-group> |
||||
|
</view> |
||||
|
</view> |
||||
|
|
||||
|
<view class="item"> |
||||
|
<view class="field"> |
||||
|
<text class="must">*</text> |
||||
|
<view class="field-text">联系人姓名</view> |
||||
|
</view> |
||||
|
<view class="value"> |
||||
|
<view class="input"> |
||||
|
<input type="text" |
||||
|
placeholder-class="placeholder-style" |
||||
|
value="{{ personalInfo.contactName }}" |
||||
|
placeholder="请输入" |
||||
|
bindinput="bindContactNameInput" |
||||
|
cursor-spacing="14" |
||||
|
maxlength="100" /> |
||||
|
</view> |
||||
|
</view> |
||||
|
</view> |
||||
|
<view class="item no-border-bottom" wx:if="{{getMobileType === 'wx'}}"> |
||||
|
<view class="field mobile-field"> |
||||
|
<text class="must">*</text> |
||||
|
<view class="field-text">手机号</view> |
||||
|
</view> |
||||
|
<view class="value-mobile"> |
||||
|
<input wx:if="{{ personalInfo.mobile }}" disabled="{{true}}" type="number" bindblur="bindMobileInput" bindinput="bindMobileInput" value="{{ personalInfo.mobile }}" placeholder-class="placeholder-style" placeholder="请获取手机号" /> |
||||
|
<button hover-class="button-hover" class="get-code" open-type="getPhoneNumber" bindgetphonenumber="getPhoneNumber">{{ personalInfo.mobile ? '重新获取' : '获取手机号'}}</button> |
||||
|
</view> |
||||
|
</view> |
||||
|
|
||||
|
<view class="item" wx:if="{{getMobileType === 'self'}}"> |
||||
|
<view class="field"> |
||||
|
<view class="must">*</view> |
||||
|
<view class="field-text">手机号</view> |
||||
|
</view> |
||||
|
<view class="value"> |
||||
|
<view class="input"> |
||||
|
<input |
||||
|
type="number" |
||||
|
bindblur="bindMobileInput" |
||||
|
bindinput="bindMobileInput" |
||||
|
value="{{personalInfo.mobile}}" |
||||
|
placeholder-class="placeholder-style" |
||||
|
placeholder="请输入手机号" /> |
||||
|
</view> |
||||
|
</view> |
||||
|
</view> |
||||
|
<view class="item no-border-bottom" wx:if="{{getMobileType === 'self'}}"> |
||||
|
<view class="field"> |
||||
|
<text class="must">*</text> |
||||
|
<view class="field-text">验证码</view> |
||||
|
</view> |
||||
|
<view class="value-mobile"> |
||||
|
<input bindblur="bindSmsCodeInput" bindinput="bindSmsCodeInput" value="{{personalInfo.smsCode}}" placeholder-class="placeholder-style" placeholder="请输入验证码" /> |
||||
|
<button disabled="{{smsCodeText !== '获取验证码'}}" bindtap="getSmsCode" hover-class="button-hover" class="get-code">{{smsCodeText}}</button> |
||||
|
</view> |
||||
|
</view> |
||||
|
</view> |
||||
|
<view class="note" bindtap="changeGetMobileType">{{getMobileType === 'wx' ? '*如若获取手机号异常,请点击切换至手机号/验证码注册方式' : '*点击可切回至从微信获取手机号注册方式'}}</view> |
||||
|
</view> |
||||
|
|
||||
|
<view class="add-issue"> |
||||
|
<view class="issue-content"> |
||||
|
<view class="item"> |
||||
|
<view class="field"> |
||||
|
<text class="must">*</text> |
||||
|
<view class="field-text">问题描述</view> |
||||
|
</view> |
||||
|
</view> |
||||
|
<textarea maxlength="500" value="{{personalInfo.itemContent}}" bindblur="bindTextareaBlur" bindinput="bindTextareaInput" bindfocus="bindTextareaFocus"> |
||||
|
<view class="textarea-placeholder" wx:if="{{placeholderShow}}"> |
||||
|
<view>请输入主要问题内容(不少于10字)</view> |
||||
|
</view> |
||||
|
</textarea> |
||||
|
<view class="{{ uploadImageList.length < 4 ? 'image-list' : uploadImageList.length > 3 && uploadImageList.length < 7 ? 'image-list image-list-2' : uploadImageList.length > 6 && uploadImageList.length < 10 ? 'image-list image-list-3' : 'image-list image-list-4' }}"> |
||||
|
<view |
||||
|
class="image-item" |
||||
|
wx:for="{{uploadImageList}}" |
||||
|
wx:for-index="index" |
||||
|
wx:for-item="item" |
||||
|
wx:key="imageId"> |
||||
|
<image class="issue-image" src="{{item.imgUrl}}" /> |
||||
|
<image wx:if="{{!item.uploaded}}" class="loading" src="../../images/loading.gif" /> |
||||
|
<image bindtap="deleteImage" data-imageid="{{item.imageId}}" class="close" wx:else src="../../images/icon_close.png" /> |
||||
|
</view> |
||||
|
<!-- <image wx:if="{{uploadImageList.length < 3}}" src="../../images/ig_tianjiatupian@2x.png" bindtap="chooseImage" /> --> |
||||
|
</view> |
||||
|
<view class="audio" wx:if="{{recorderData.tempFilePath && !showRecord}}"> |
||||
|
<view class="delete-audio"> |
||||
|
<image bindtap="deleteRecord" src="../../images/icon_close.png" /> |
||||
|
</view> |
||||
|
<view class="control-button" wx:if="{{!uploadRecord.uploaded}}"> |
||||
|
<image src="../../images/loading.gif"/> |
||||
|
</view> |
||||
|
<block wx:else> |
||||
|
<view class="control-button"> |
||||
|
<image src="../../images/xiaozanting.png" wx:if="{{!isPlayAudio}}" bindtap="onPlayAudio"/> |
||||
|
<image src="../../images/xiaobofang.png" wx:else bindtap="onStopAudio"/> |
||||
|
</view> |
||||
|
<view class="control-line"> |
||||
|
<slider class="control-slider" value="{{audioTimeline}}" bindchange="sliderchange" min="0" max="100" block-size="15" selected-color="#fd6161"/> |
||||
|
<view class="line-time"> |
||||
|
<view class="time-text">{{recorderTimeCur}}</view> |
||||
|
<view class="time-text">{{recorderTimeMax}}</view> |
||||
|
</view> |
||||
|
</view> |
||||
|
</block> |
||||
|
</view> |
||||
|
<!-- <view class="{{ uploadImageList.length < 3 ? 'image-list' : uploadImageList.length > 2 && uploadImageList.length < 6 ? 'image-list image-list-2' : uploadImageList.length > 5 && uploadImageList.length < 9 ? 'image-list image-list-3' : 'image-list image-list-4' }}"> |
||||
|
<view |
||||
|
class="image-item" |
||||
|
wx:for="{{uploadImageList}}" |
||||
|
wx:for-index="index" |
||||
|
wx:for-item="item" |
||||
|
wx:key="imageId"> |
||||
|
<image class="issue-image" src="{{item.imgUrl}}" /> |
||||
|
<image wx:if="{{!item.uploaded}}" class="loading" src="../../../../images/loading.gif" /> |
||||
|
<image bindtap="deleteImage" data-imageid="{{item.imageId}}" class="close" wx:else src="../../images/icon_close.png" /> |
||||
|
</view> |
||||
|
<image wx:if="{{uploadImageList.length < 10}}" src="../../images/ig_tianjiatupian@2x.png" bindtap="chooseImage" /> |
||||
|
</view> |
||||
|
<view class="tip">*最多可添加10张图片</view> --> |
||||
|
</view> |
||||
|
|
||||
|
<view class="image-box"> |
||||
|
<!-- <view class="yg-zp">图片、录音</view> --> |
||||
|
<!-- <view class="yg-zp-1">图片不多于 10 张、录音不超过 1 分钟</view> --> |
||||
|
<view> |
||||
|
<image class="add-icon" src="../../images/tupian.png" bindtap="chooseImage"/> |
||||
|
<image class="add-icon" src="../../images/yuyin.png" bindtap="showRecordSheet"/> |
||||
|
</view> |
||||
|
|
||||
|
</view> |
||||
|
</view> |
||||
|
|
||||
|
<view class="submit-button"> |
||||
|
<button disabled="{{ submitDisabled }}" bindtap="submitPersonalInfo" hover-class="hover-submit">提交</button> |
||||
|
</view> |
||||
|
</view> |
@ -0,0 +1,158 @@ |
|||||
|
/* subpages/demandCheck/pages/dissatisfied/demandCheck/demandCheck.wxss */ |
||||
|
.content { |
||||
|
width: 100%; |
||||
|
min-height: calc(100vh - 100rpx); |
||||
|
margin-top: 100rpx; |
||||
|
} |
||||
|
|
||||
|
.personal-info { |
||||
|
width: 100%; |
||||
|
height: 100%; |
||||
|
box-sizing: border-box; |
||||
|
padding: 0 20rpx; |
||||
|
overflow: hidden; |
||||
|
} |
||||
|
.basic-info { |
||||
|
width: 100%; |
||||
|
background: #fff; |
||||
|
border-radius: 16rpx; |
||||
|
box-sizing: border-box; |
||||
|
padding: 0 20rpx; |
||||
|
margin-top: 20rpx; |
||||
|
} |
||||
|
|
||||
|
.item { |
||||
|
border-bottom: 1rpx solid #e7eeee; |
||||
|
padding: 25rpx 0; |
||||
|
line-height: 60rpx; |
||||
|
display: flex; |
||||
|
justify-content: space-between; |
||||
|
} |
||||
|
.item .field { |
||||
|
position: relative; |
||||
|
box-sizing: border-box; |
||||
|
width: 300rpx; |
||||
|
padding-left: 25rpx; |
||||
|
} |
||||
|
|
||||
|
.field-d { |
||||
|
width: 220rpx !important; |
||||
|
} |
||||
|
.value-d{ |
||||
|
width: 450rpx !important; |
||||
|
} |
||||
|
.item .field.mobile-field { |
||||
|
width: 250rpx !important; |
||||
|
} |
||||
|
.item .field .must { |
||||
|
position: absolute; |
||||
|
top: 0; |
||||
|
left: 0; |
||||
|
margin: 0 auto; |
||||
|
color: #F61616; |
||||
|
font-size: 30rpx; |
||||
|
} |
||||
|
|
||||
|
.item .field .field-text { |
||||
|
font-size: 32rpx; |
||||
|
font-family: Source Han Serif SC; |
||||
|
font-weight: 400; |
||||
|
color: #333; |
||||
|
} |
||||
|
|
||||
|
.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; |
||||
|
} |
||||
|
|
||||
|
.item .value-dl { |
||||
|
position: relative; |
||||
|
width: 410rpx; |
||||
|
display: flex; |
||||
|
font-size: 32rpx; |
||||
|
font-family: Source Han Serif SC; |
||||
|
font-weight: 400; |
||||
|
color: #333; |
||||
|
line-height: 60rpx; |
||||
|
align-items: center; |
||||
|
} |
||||
|
|
||||
|
.di-name{ |
||||
|
margin-right: 14rpx; |
||||
|
text-align: right; |
||||
|
width: calc(100% - 30rpx); |
||||
|
} |
||||
|
|
||||
|
.di-but{ |
||||
|
width: 30rpx; |
||||
|
height: 34rpx; |
||||
|
} |
||||
|
|
||||
|
.item .value input { |
||||
|
text-align: right; |
||||
|
font-size: 34rpx; |
||||
|
color: #333; |
||||
|
height: 100%; |
||||
|
width: 100%; |
||||
|
} |
||||
|
.item .value .picker { |
||||
|
position: relative; |
||||
|
width: 100%; |
||||
|
padding-right: 40rpx; |
||||
|
text-align: right; |
||||
|
} |
||||
|
|
||||
|
.item .value .picker .z-weak { |
||||
|
color: #999; |
||||
|
} |
||||
|
|
||||
|
.item .value .picker .menu-arrow { |
||||
|
position: absolute; |
||||
|
top: 20rpx; |
||||
|
right: 0; |
||||
|
width: 16rpx; |
||||
|
height: 23rpx; |
||||
|
} |
||||
|
.item .value-mobile { |
||||
|
position: relative; |
||||
|
width: 410rpx; |
||||
|
display: flex; |
||||
|
font-size: 32rpx; |
||||
|
font-family: Source Han Serif SC; |
||||
|
font-weight: 400; |
||||
|
color: #333; |
||||
|
line-height: 60rpx; |
||||
|
display: flex; |
||||
|
justify-content: flex-end; |
||||
|
} |
||||
|
.item .value-mobile .get-code { |
||||
|
padding: 0 15rpx; |
||||
|
height: 60rpx; |
||||
|
line-height: 60rpx; |
||||
|
background: linear-gradient(to right, #F40C0C, #FF4E4E); |
||||
|
color: #fff; |
||||
|
font-size: 24rpx; |
||||
|
border-radius: 6rpx; |
||||
|
margin: 0; |
||||
|
margin-left: 25rpx; |
||||
|
} |
||||
|
.item .value-mobile .button-hover { |
||||
|
background: rgb(175, 1, 1); |
||||
|
} |
||||
|
.item .value-mobile input { |
||||
|
text-align: right; |
||||
|
font-size: 34rpx; |
||||
|
color: #333; |
||||
|
height: 100%; |
||||
|
width: 55%; |
||||
|
} |
||||
|
.placeholder-style { |
||||
|
font-size: 28rpx; |
||||
|
color: #999; |
||||
|
} |