@ -0,0 +1,6 @@ |
|||
{ |
|||
"component": true, |
|||
"usingComponents": { |
|||
"wux-multi-picker-view": "../multi-picker-view/index" |
|||
} |
|||
} |
@ -0,0 +1,15 @@ |
|||
<wux-multi-picker-view |
|||
id="wux-picker" |
|||
prefixCls="{{ multiPickerPrefixCls }}" |
|||
pickerPrefixCls="{{ pickerPrefixCls }}" |
|||
value="{{ inputValue }}" |
|||
itemHeight="{{ itemHeight }}" |
|||
itemStyle="{{ itemStyle }}" |
|||
indicatorStyle="{{ indicatorStyle }}" |
|||
indicatorClass="{{ indicatorClass }}" |
|||
maskStyle="{{ maskStyle }}" |
|||
maskClass="{{ maskClass }}" |
|||
labelAlign="{{ labelAlign }}" |
|||
options="{{ cols }}" |
|||
bind:valueChange="onValueChange" |
|||
/> |
@ -0,0 +1 @@ |
|||
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=void 0;var _default={year:"",month:"",day:"",hour:"",minute:"",am:"AM",pm:"PM"};exports.default=_default; |
@ -0,0 +1 @@ |
|||
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=void 0;var _en=_interopRequireDefault(require("./en")),_zh_CN=_interopRequireDefault(require("./zh_CN")),_zh_TW=_interopRequireDefault(require("./zh_TW"));function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e}}var _default={en:_en.default,zh_CN:_zh_CN.default,zh_TW:_zh_TW.default};exports.default=_default; |
@ -0,0 +1 @@ |
|||
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=void 0;var _default={year:"年",month:"月",day:"日",hour:"时",minute:"分",am:"上午",pm:"下午"};exports.default=_default; |
@ -0,0 +1 @@ |
|||
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=void 0;var _default={year:"年",month:"月",day:"日",hour:"時",minute:"分",am:"上午",pm:"下午"};exports.default=_default; |
@ -0,0 +1 @@ |
|||
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.props=void 0;var props={prefixCls:{type:String,value:"wux-date-picker"},multiPickerPrefixCls:{type:String,value:"wux-picker"},pickerPrefixCls:{type:String,value:"wux-picker-col"},value:{type:null,value:null},itemHeight:{type:Number,value:34},itemStyle:{type:[String,Object,Array],value:""},indicatorStyle:{type:[String,Object,Array],value:""},indicatorClass:{type:String,value:""},maskStyle:{type:[String,Object,Array],value:""},maskClass:{type:String,value:""},labelAlign:{type:String,value:"center"},mode:{type:String,value:"datetime"},minuteStep:{type:Number,value:1},use12Hours:{type:Boolean,value:!1},minDate:{type:null,value:null},maxDate:{type:null,value:null},minHour:{type:Number,value:0},maxHour:{type:Number,value:23},minMinute:{type:Number,value:0},maxMinute:{type:Number,value:59},lang:{type:String,value:"zh_CN"}};exports.props=props; |
@ -0,0 +1 @@ |
|||
"use strict";var _baseComponent=_interopRequireDefault(require("../helpers/baseComponent")),_popupMixin=_interopRequireDefault(require("../helpers/popupMixin")),_props=require("../date-picker-view/props"),_utils=require("./utils");function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e}}var platformProps={labelPropName:"label",format:function(e,r){return(0,_utils.formatDate)(e.date,{datetime:"yyyy-MM-dd hh:mm",date:"yyyy-MM-dd",year:"yyyy",month:"yyyy-MM",time:"hh:mm"}[r.mode])}};(0,_baseComponent.default)({behaviors:[(0,_popupMixin.default)("#wux-picker",platformProps)],properties:_props.props}); |
@ -0,0 +1,7 @@ |
|||
{ |
|||
"component": true, |
|||
"usingComponents": { |
|||
"wux-popup": "../popup/index", |
|||
"wux-date-picker-view": "../date-picker-view/index" |
|||
} |
|||
} |
@ -0,0 +1,45 @@ |
|||
<wux-popup |
|||
position="bottom" |
|||
visible="{{ popupVisible }}" |
|||
hasHeader="{{ false }}" |
|||
hasFooter="{{ false }}" |
|||
mountOnEnter="{{ false }}" |
|||
safeArea="bottom" |
|||
bind:close="close" |
|||
bind:closed="onClosed" |
|||
> |
|||
<view class="{{ classes.wrap }}" wx:if="{{ mounted }}"> |
|||
<view class="{{ classes.toolbar }}" wx:if="{{ toolbar }}" catchtouchmove="noop"> |
|||
<view class="{{ classes.inner }}"> |
|||
<view class="{{ classes.cancel }}" hover-class="{{ classes.hover }}" bindtap="onCancel" wx:if="{{ toolbar.cancelText }}">{{ toolbar.cancelText }}</view> |
|||
<view class="{{ classes.title }}">{{ toolbar.title }}</view> |
|||
<view class="{{ classes.confirm }}" hover-class="{{ classes.hover }}" bindtap="onConfirm" wx:if="{{ toolbar.confirmText }}">{{ toolbar.confirmText }}</view> |
|||
</view> |
|||
</view> |
|||
<wux-date-picker-view |
|||
id="wux-picker" |
|||
multiPickerPrefixCls="{{ multiPickerPrefixCls }}" |
|||
pickerPrefixCls="{{ pickerPrefixCls }}" |
|||
value="{{ inputValue }}" |
|||
itemHeight="{{ itemHeight }}" |
|||
itemStyle="{{ itemStyle }}" |
|||
indicatorStyle="{{ indicatorStyle }}" |
|||
indicatorClass="{{ indicatorClass }}" |
|||
maskStyle="{{ maskStyle }}" |
|||
maskClass="{{ maskClass }}" |
|||
labelAlign="{{ labelAlign }}" |
|||
mode="{{ mode }}" |
|||
minuteStep="{{ minuteStep }}" |
|||
use12Hours="{{ use12Hours }}" |
|||
minDate="{{ minDate }}" |
|||
maxDate="{{ maxDate }}" |
|||
minHour="{{ minHour }}" |
|||
maxHour="{{ maxHour }}" |
|||
minMinute="{{ minMinute }}" |
|||
maxMinute="{{ maxMinute }}" |
|||
lang="{{ lang }}" |
|||
bind:valueChange="onValueChange" |
|||
/> |
|||
</view> |
|||
</wux-popup> |
|||
<slot></slot> |
@ -0,0 +1 @@ |
|||
.wux-date-picker__toolbar{position:relative;width:100%;font-size:34rpx;line-height:1.5;color:rgba(0,0,0,.85);background:#f7f7f8}.wux-date-picker__toolbar::before{content:" ";position:absolute;left:0;top:0;right:0;height:1PX;border-top:1PX solid #d9d9d9;color:#d9d9d9;transform-origin:0 0;transform:scaleY(.5)}.wux-date-picker__inner{height:88rpx;display:-ms-flexbox;display:flex;text-align:center}.wux-date-picker__title{position:absolute;display:block;width:100%;padding:0;font-size:34rpx;font-weight:400;line-height:88rpx;color:rgba(0,0,0,.85);text-align:center;white-space:nowrap}.wux-date-picker__button{position:absolute;box-sizing:border-box;height:88rpx;line-height:88rpx;padding:0 30rpx;z-index:10}.wux-date-picker__button--cancel{left:0;color:#b2b2b2}.wux-date-picker__button--confirm{right:0;color:#33cd5f}.wux-date-picker__button--hover{background-color:#ececec} |
@ -0,0 +1 @@ |
|||
"use strict";function formatDate(e,t){e instanceof Date||(e=new Date(e));var r={"M+":e.getMonth()+1,"d+":e.getDate(),"h+":e.getHours(),"m+":e.getMinutes(),"s+":e.getSeconds(),"q+":Math.floor((e.getMonth()+3)/3),S:e.getMilliseconds()};for(var a in/(y+)/.test(t)&&(t=t.replace(RegExp.$1,(e.getFullYear()+"").substr(4-RegExp.$1.length))),r)new RegExp("(".concat(a,")")).test(t)&&(t=t.replace(RegExp.$1,1==RegExp.$1.length?r[a]:("00"+r[a]).substr((""+r[a]).length)));return t}Object.defineProperty(exports,"__esModule",{value:!0}),exports.formatDate=formatDate; |
After Width: | Height: | Size: 435 B |
After Width: | Height: | Size: 253 KiB |
After Width: | Height: | Size: 1.6 KiB |
After Width: | Height: | Size: 5.2 KiB |
After Width: | Height: | Size: 1.1 KiB |
After Width: | Height: | Size: 1.9 KiB |
After Width: | Height: | Size: 4.0 KiB |
After Width: | Height: | Size: 5.6 KiB |
@ -0,0 +1,57 @@ |
|||
const app = getApp() |
|||
|
|||
Page({ |
|||
data: { |
|||
statusHeight: app.globalData.deviceInfo.statusHeight, // 自定义头部状态栏高度
|
|||
navigationHeight: app.globalData.deviceInfo.navigationHeight, // 自定义头部导航栏高度
|
|||
}, |
|||
onLoad: function (options) {}, |
|||
goBack() { |
|||
wx.navigateBack({ |
|||
delta: 1, |
|||
}) |
|||
}, |
|||
//疫苗接种
|
|||
toVaccines() { |
|||
wx.navigateTo({ |
|||
url: '/subpages/extend/pages/vaccines/vaccines', |
|||
}) |
|||
}, |
|||
// 行程上报
|
|||
toTripReport() { |
|||
wx.navigateTo({ |
|||
url: '/subpages/extend/pages/tripReport/tripReport', |
|||
}) |
|||
}, |
|||
onReady: function () {}, |
|||
|
|||
/** |
|||
* 生命周期函数--监听页面显示 |
|||
*/ |
|||
onShow: function () {}, |
|||
|
|||
/** |
|||
* 生命周期函数--监听页面隐藏 |
|||
*/ |
|||
onHide: function () {}, |
|||
|
|||
/** |
|||
* 生命周期函数--监听页面卸载 |
|||
*/ |
|||
onUnload: function () {}, |
|||
|
|||
/** |
|||
* 页面相关事件处理函数--监听用户下拉动作 |
|||
*/ |
|||
onPullDownRefresh: function () {}, |
|||
|
|||
/** |
|||
* 页面上拉触底事件的处理函数 |
|||
*/ |
|||
onReachBottom: function () {}, |
|||
|
|||
/** |
|||
* 用户点击右上角分享 |
|||
*/ |
|||
onShareAppMessage: function () {}, |
|||
}) |
@ -0,0 +1,8 @@ |
|||
{ |
|||
"usingComponents": { |
|||
"nav-bar": "/components/navbar/index" |
|||
}, |
|||
"navigationStyle": "custom", |
|||
"navigationBarTextStyle": "white", |
|||
"backgroundColor": "#f7f7f7" |
|||
} |
@ -0,0 +1,31 @@ |
|||
<view class="epidemic-control"> |
|||
<view class="header" style="height: {{statusHeight + navigationHeight}}px;"> |
|||
<view class="navigation" style="height: {{navigationHeight}}px; top: {{statusHeight}}px;"> |
|||
<image src="../../images/back-white.png" class="back-icon" bind:tap="goBack" /> |
|||
<view class="header-title" hover-class="none" hover-stop-propagation="false">疫情防控</view> |
|||
</view> |
|||
</view> |
|||
<image class="by" src="../../images/by.png" mode="aspectFit|aspectFill|widthFix" lazy-load="false" binderror="" bindload=""></image> |
|||
<view class="box"> |
|||
<view class="box-item" style="margin-bottom:20rpx" bind:tap="toTripReport"> |
|||
<view class="left"> |
|||
<image src="../../images/xingchengshangbao.png" mode="aspectFit|aspectFill|widthFix" lazy-load="false" binderror="" bindload=""></image> |
|||
</view> |
|||
<view class="center"> |
|||
<view class="center-title">行程上报</view> |
|||
<view class="center-content">上报近期的行程信息,群防群控,共同抗击疫情。</view> |
|||
</view> |
|||
<view class="right">></view> |
|||
</view> |
|||
<view class="box-item" bind:tap="toVaccines"> |
|||
<view class="left"> |
|||
<image src="../../images/jiezhongchaxun.png" mode="aspectFit|aspectFill|widthFix" lazy-load="false" binderror="" bindload=""></image> |
|||
</view> |
|||
<view class="center"> |
|||
<view class="center-title">接种查询</view> |
|||
<view class="center-content">查询疫苗接种情况信息,共同抗疫,人人有责</view> |
|||
</view> |
|||
<view class="right">></view> |
|||
</view> |
|||
</view> |
|||
</view> |
@ -0,0 +1,107 @@ |
|||
page { |
|||
background: #f7f7f7; |
|||
} |
|||
|
|||
.epidemic-control { |
|||
box-sizing: border-box; |
|||
width: 100%; |
|||
} |
|||
|
|||
.header { |
|||
position: fixed; |
|||
width: 100%; |
|||
top: 0; |
|||
left: 0; |
|||
z-index: 1000; |
|||
/* background: #349c83; */ |
|||
} |
|||
|
|||
.header .header-bg { |
|||
width: 100%; |
|||
height: 100%; |
|||
position: absolute; |
|||
z-index: 10; |
|||
left: 0; |
|||
top: 0; |
|||
} |
|||
|
|||
.header .navigation { |
|||
width: 100%; |
|||
display: flex; |
|||
align-items: center; |
|||
justify-content: center; |
|||
color: rgba(255, 255, 255, 0.9); |
|||
font-size: 32rpx; |
|||
position: relative; |
|||
z-index: 100; |
|||
letter-spacing: 2rpx; |
|||
} |
|||
|
|||
.back-icon { |
|||
width: 16rpx; |
|||
height: 28rpx; |
|||
} |
|||
|
|||
.header-title { |
|||
width: 90%; |
|||
text-align: center; |
|||
} |
|||
|
|||
.by { |
|||
width: 750rpx; |
|||
height: 410rpx; |
|||
} |
|||
|
|||
/* 头结束 */ |
|||
.box { |
|||
width: 100%; |
|||
box-sizing: border-box; |
|||
position: relative; |
|||
left: 0; |
|||
top: -100rpx; |
|||
display: flex; |
|||
flex-direction: column; |
|||
justify-content: center; |
|||
align-items: center; |
|||
} |
|||
|
|||
.box-item { |
|||
box-sizing: border-box; |
|||
width: 690rpx; |
|||
height: 190rpx; |
|||
background-color: #ffffff; |
|||
border-radius: 14rpx; |
|||
display: flex; |
|||
align-items: center; |
|||
padding: 0 43rpx 29rpx; |
|||
} |
|||
|
|||
.left { |
|||
width: 86rpx; |
|||
height: 86rpx; |
|||
} |
|||
|
|||
.left image { |
|||
width: 86rpx; |
|||
height: 86rpx; |
|||
} |
|||
|
|||
.center { |
|||
/* width: calc(100% - 200rpx); */ |
|||
margin: 0 30rpx; |
|||
} |
|||
|
|||
.center-title { |
|||
font-size: 32rpx; |
|||
color: #333333; |
|||
margin-bottom: 18rpx; |
|||
} |
|||
|
|||
.center-content { |
|||
font-size: 28rpx; |
|||
color: #999999; |
|||
} |
|||
|
|||
.right { |
|||
color: #999999; |
|||
} |
@ -0,0 +1,61 @@ |
|||
import { getTripInfoList } from '../../utils/tripReport' |
|||
Page({ |
|||
data: { |
|||
newsList: [], |
|||
pageIndex: 1, |
|||
pageSize: 10, |
|||
loadMoreVisible: true, |
|||
loadMoreType: 'loading', |
|||
isShow: false, |
|||
}, |
|||
onShow: function () { |
|||
this.getTripInfoList() |
|||
}, |
|||
// 列表点击事件
|
|||
toDetail(e) { |
|||
let type = e.currentTarget.dataset.type |
|||
wx.navigateTo({ |
|||
url: `/subpages/extend/pages/tripReport/tripReport?id=${e.currentTarget.dataset.id}&type=${type}`, |
|||
}) |
|||
}, |
|||
getTripInfoList() { |
|||
let params = { |
|||
pageIndex: this.data.pageIndex, |
|||
pageSize: this.data.pageSize, |
|||
} |
|||
if (this.data.pageIndex == 1) { |
|||
this.setData({ |
|||
newsList: [], |
|||
}) |
|||
} |
|||
getTripInfoList(params) |
|||
.then((res) => { |
|||
this.setData({ |
|||
newsList: this.data.newsList.concat(res.data), |
|||
loadMoreType: |
|||
res.data.length < this.data.pageSize ? 'none' : 'loading', |
|||
}) |
|||
if (this.data.newsList == 0) { |
|||
this.setData({ |
|||
isShow: true, |
|||
loadMoreVisible: false, |
|||
}) |
|||
} |
|||
}) |
|||
.catch((err) => { |
|||
this.setData({ |
|||
loadMoreVisible: false, |
|||
isShow: true, |
|||
}) |
|||
}) |
|||
}, |
|||
onReachBottom: function () { |
|||
if (this.data.loadMoreType == 'none') { |
|||
return |
|||
} |
|||
this.setData({ |
|||
pageIndex: ++this.data.pageIndex, |
|||
}) |
|||
this.getTripInfoList() |
|||
}, |
|||
}) |
@ -0,0 +1,7 @@ |
|||
{ |
|||
"navigationBarTitleText": "我的上报", |
|||
"usingComponents": { |
|||
"load-more": "../../../../components/loadMore/loadMore", |
|||
"no-data": "../../../../components/nodata/nodata" |
|||
} |
|||
} |
@ -0,0 +1,26 @@ |
|||
<view class="more-list"> |
|||
<view class="item-box" wx:for="{{newsList}}" wx:key="index" bind:tap="toDetail" data-type="look" data-id="{{item.id}}"> |
|||
<view class="item-box-left"> |
|||
<view class="item-title" hover-class="none" hover-stop-propagation="false"> |
|||
上报时间: {{item.createdTime}} |
|||
</view> |
|||
<view class="item-bottom"> |
|||
<view class="item-bottom-left"> |
|||
<view class="state"> |
|||
<image src="../../images/dingwei.png" class="location-icon" /> |
|||
</view> |
|||
<view class="time">{{item.comeAddressName}}</view> |
|||
</view> |
|||
<!-- <view class="item-bottom-right"> |
|||
<view class="edit" wx:if="{{item.isFeedback ==0}}" bindtap="toDetail" data-type="edit" data-id="{{item.id}}"> |
|||
编辑 |
|||
</view> |
|||
<view class="look" bind:tap='toDetail' data-type="look" data-id="{{item.id}}">查看</view> |
|||
</view> --> |
|||
</view> |
|||
</view> |
|||
<view class="right-icon">></view> |
|||
</view> |
|||
</view> |
|||
<load-more loadMoreVisible="{{loadMoreVisible}}" loadMoreType="{{loadMoreType}}" bg-f="bg-f"></load-more> |
|||
<no-data isShow='{{isShow}}'></no-data> |
@ -0,0 +1,78 @@ |
|||
page { |
|||
background: #f7f7f7; |
|||
} |
|||
|
|||
.more-list { |
|||
box-sizing: border-box; |
|||
width: 100%; |
|||
} |
|||
|
|||
.item-box { |
|||
box-sizing: border-box; |
|||
width: 100%; |
|||
height: 188rpx; |
|||
background: #fff; |
|||
margin-bottom: 7rpx; |
|||
padding: 30rpx 37rpx 0 31rpx; |
|||
display: flex; |
|||
align-items: center; |
|||
justify-content: space-between; |
|||
} |
|||
|
|||
.item-title { |
|||
height: 80rpx; |
|||
font-size: 32rpx; |
|||
color: #000000; |
|||
overflow: hidden; |
|||
text-overflow: ellipsis; |
|||
display: -webkit-box; |
|||
-webkit-line-clamp: 2; |
|||
-webkit-box-orient: vertical; |
|||
} |
|||
|
|||
.item-bottom { |
|||
display: flex; |
|||
justify-content: space-between; |
|||
} |
|||
|
|||
.item-bottom-left { |
|||
display: flex; |
|||
align-items: center; |
|||
} |
|||
|
|||
|
|||
.location-icon { |
|||
width: 26rpx; |
|||
height: 32rpx; |
|||
margin-right: 10rpx; |
|||
vertical-align: middle; |
|||
} |
|||
|
|||
.time { |
|||
font-size: 26rpx; |
|||
color: #666666; |
|||
vertical-align: middle; |
|||
} |
|||
|
|||
.item-bottom-right { |
|||
display: flex; |
|||
align-items: center; |
|||
} |
|||
|
|||
.edit { |
|||
font-size: 26rpx; |
|||
color: #bb0300; |
|||
margin-right: 53rpx; |
|||
} |
|||
|
|||
.look { |
|||
font-size: 26rpx; |
|||
color: #666666; |
|||
} |
|||
|
|||
.right-icon { |
|||
width: 16rpx; |
|||
height: 23rpx; |
|||
font-size: 28rpx; |
|||
color: #a3a3a3; |
|||
} |
@ -0,0 +1,363 @@ |
|||
import { |
|||
saveTripInfo, |
|||
getTripInfoDetail, |
|||
deleteTripById, |
|||
getAreaInfo, |
|||
} from '../../utils/tripReport.js' |
|||
Page({ |
|||
data: { |
|||
lock: false, // 防止重复点击
|
|||
id: '', // 活动id
|
|||
name: '', // 姓名
|
|||
phone: '', //手机号
|
|||
card: '', //身份证号
|
|||
visibleNowAddress: false, //级联
|
|||
nowAddressValue: [], // 现居地址ip
|
|||
nowAddress: '', //现居地址
|
|||
detailAddress: '', //详细地址
|
|||
|
|||
comeFromAddress: '', //来自地址
|
|||
comeFromAddressValue: [], |
|||
visibleComeFromAddress: false, |
|||
|
|||
localTime: '', //来到本地时间
|
|||
visibleLocalTime: '', |
|||
localTimeValue: [], |
|||
|
|||
backTime: '', //返回时间
|
|||
backTimeValue: [], |
|||
visibleBackTime: false, |
|||
|
|||
actContent: '', // 备注信息
|
|||
|
|||
type: '', // 编辑 还是 查看
|
|||
options1: [ |
|||
// {
|
|||
// label: '北京',
|
|||
// value: '110000',
|
|||
// children: [
|
|||
// {
|
|||
// label: '北京市',
|
|||
// value: '110000',
|
|||
// children: [
|
|||
// {
|
|||
// label: '东城区',
|
|||
// value: '110101',
|
|||
// },
|
|||
// ],
|
|||
// },
|
|||
// ],
|
|||
// },
|
|||
// {
|
|||
// label: '上海',
|
|||
// value: '310000',
|
|||
// children: [
|
|||
// {
|
|||
// label: '上海市',
|
|||
// value: '310000',
|
|||
// children: [
|
|||
// {
|
|||
// label: '黄浦区',
|
|||
// value: '310101',
|
|||
// },
|
|||
// ],
|
|||
// },
|
|||
// ],
|
|||
// },
|
|||
], |
|||
defaultFieldNames: { |
|||
value: 'id', |
|||
label: 'shortName', |
|||
}, |
|||
pid: 0, |
|||
}, |
|||
onLoad: function (options) { |
|||
this.getNowTime() |
|||
this.getAreaInfo() |
|||
if (options.id) { |
|||
this.setData({ |
|||
id: options.id, |
|||
type: options.type, |
|||
}) |
|||
} |
|||
if (this.data.type == 'look') { |
|||
this.getTripInfoDetail() |
|||
} |
|||
}, |
|||
getNowTime() { |
|||
const date = new Date() |
|||
const year = date.getFullYear() |
|||
const month = date.getMonth() |
|||
const day = date.getDate() |
|||
this.setData({ |
|||
localTimeValue: [year, month, day], |
|||
backTimeValue: [year, month, day], |
|||
}) |
|||
}, |
|||
// 获取类别
|
|||
getAreaInfo() { |
|||
getAreaInfo(this.data.pid).then((res) => { |
|||
res.data.forEach((item) => { |
|||
item.label = item.shortName |
|||
item.value = item.id |
|||
item.isLeaf = false |
|||
}) |
|||
if (this.data.pid == 0) { |
|||
this.setData({ |
|||
options1: res.data, |
|||
}) |
|||
} else { |
|||
if (res.data.length === 0) { |
|||
wx.hideLoading() |
|||
this.setData({ |
|||
visibleNowAddress: false, |
|||
visibleComeFromAddress: false, |
|||
}) |
|||
return |
|||
} |
|||
// 如果不是第一层级,要往下加children
|
|||
let options1 = this.data.options1 |
|||
this.recursionMethod(options1, this.data.pid, res.data) |
|||
} |
|||
}) |
|||
}, |
|||
recursionMethod(arr, pid, children) { |
|||
arr.forEach((item) => { |
|||
if (item.id === pid) { |
|||
item.children = children |
|||
wx.hideLoading() |
|||
} |
|||
if (item.children) { |
|||
this.recursionMethod(item.children, this.data.pid, children) |
|||
} |
|||
}) |
|||
this.setData({ |
|||
options1: arr, |
|||
}) |
|||
}, |
|||
// 动态加载级联选择器
|
|||
onLoadOptions(e) { |
|||
console.log('onLoadOptions', e.detail) |
|||
const { value } = e.detail |
|||
wx.showLoading({ mask: true }) |
|||
this.setData({ |
|||
pid: value[value.length - 1], |
|||
}) |
|||
this.getAreaInfo() |
|||
}, |
|||
onLoadComeAddress(e) { |
|||
const { value } = e.detail |
|||
wx.showLoading({ mask: true }) |
|||
this.setData({ |
|||
pid: value[value.length - 1], |
|||
}) |
|||
this.getAreaInfo() |
|||
}, |
|||
// 获取申请详情
|
|||
getTripInfoDetail() { |
|||
let _this = this |
|||
getTripInfoDetail(this.data.id).then((res) => { |
|||
if (res.code == 0 && res.msg == 'success') { |
|||
if (res.data) { |
|||
this.setData({ |
|||
id: res.data.id, |
|||
name: res.data.name, |
|||
phone: res.data.mobile, |
|||
card: res.data.idCard, |
|||
nowAddress: res.data.nowAddressName, |
|||
detailAddress: res.data.nowAddressDetail, |
|||
comeFromAddress: res.data.comeAddressName, |
|||
localTime: res.data.comeDate, |
|||
backTime: res.data.backDate, |
|||
actContent: res.data.note, |
|||
}) |
|||
} |
|||
console.log('详情', res.data.backDate) |
|||
} |
|||
}) |
|||
}, |
|||
// 删除
|
|||
deleteTripById() { |
|||
wx.showModal({ |
|||
title: '提示', |
|||
content: '确定要删除吗', |
|||
success: (res) => { |
|||
if (res.confirm) { |
|||
const params = { |
|||
id: this.data.id, |
|||
} |
|||
deleteTripById(params).then((res) => { |
|||
wx.showToast({ |
|||
title: '删除成功', |
|||
icon: 'success', |
|||
duration: 2000, |
|||
success: () => { |
|||
wx.navigateBack({ |
|||
delta: 1, |
|||
}) |
|||
}, |
|||
}) |
|||
}) |
|||
} else if (res.cancel) { |
|||
console.log('用户点击取消') |
|||
} |
|||
}, |
|||
}) |
|||
}, |
|||
confirmButton() { |
|||
wx.navigateBack({ |
|||
delta: 1, |
|||
}) |
|||
}, |
|||
// 提交申请
|
|||
onSubmitApply() { |
|||
if (this.data.lock) { |
|||
return |
|||
} |
|||
if (!this.data.name.trim('')) { |
|||
this.showToast('姓名不能为空') |
|||
return |
|||
} |
|||
if (!this.data.phone.trim('')) { |
|||
this.showToast('手机号不能为空') |
|||
return |
|||
} |
|||
if (!this.data.card.trim('')) { |
|||
this.showToast('身份证号不能为空') |
|||
return |
|||
} |
|||
if (this.data.nowAddressValue.length === 0) { |
|||
this.showToast('现居住地不能为空') |
|||
return |
|||
} |
|||
if (!this.data.detailAddress.trim('')) { |
|||
this.showToast('详细地址不能为空') |
|||
return |
|||
} |
|||
if (this.data.comeFromAddressValue.length === 0) { |
|||
this.showToast('来自地区不能为空') |
|||
return |
|||
} |
|||
if (this.data.localTimeValue.length === 0) { |
|||
this.showToast('来到本地时间不能为空') |
|||
return |
|||
} |
|||
this.setData({ |
|||
lock: true, |
|||
}) |
|||
this.setData({ |
|||
nowAddress: this.data.nowAddress.split('-'), |
|||
comeFromAddress: this.data.comeFromAddress.split('-'), |
|||
}) |
|||
let params = { |
|||
name: this.data.name.trim(''), |
|||
mobile: this.data.phone.trim(''), |
|||
idCard: this.data.card.trim(''), |
|||
nowAddressCode: this.data.nowAddressValue.join(','), |
|||
nowAddressName: this.data.nowAddress.join('-'), |
|||
nowAddressDetail: this.data.detailAddress, |
|||
comeAddressCode: this.data.comeFromAddressValue.join(','), |
|||
comeAddressName: this.data.comeFromAddress.join('-'), |
|||
comeDate: this.data.localTime, |
|||
backDate: this.data.backTime, |
|||
note: this.data.actContent.trim(''), |
|||
} |
|||
saveTripInfo(params) |
|||
.then((res) => { |
|||
if (res.code == 0 && res.msg == 'success') { |
|||
this.showToast('提交成功') |
|||
setTimeout(() => { |
|||
this.setData({ |
|||
lock: false, |
|||
}) |
|||
wx.switchTab({ |
|||
url: '/pages/index/index', |
|||
}) |
|||
}, 1000) |
|||
} else { |
|||
this.setData({ |
|||
lock: false, |
|||
}) |
|||
} |
|||
}) |
|||
.catch((err) => { |
|||
this.setData({ |
|||
lock: false, |
|||
}) |
|||
}) |
|||
}, |
|||
onInputValue(e) { |
|||
let code = e.currentTarget.dataset.code |
|||
this.setData({ |
|||
[code]: e.detail.value, |
|||
}) |
|||
}, |
|||
// 简化提示
|
|||
showToast(title, time = 2500) { |
|||
wx.showToast({ |
|||
title: title || '请耐心等待...', |
|||
icon: 'none', |
|||
duration: time, |
|||
}) |
|||
}, |
|||
toApplyList() { |
|||
wx.navigateTo({ |
|||
url: '/subpages/extend/pages/moreList/moreList', |
|||
}) |
|||
}, |
|||
// 现地址
|
|||
onOpenNowAddress() { |
|||
this.setData({ |
|||
visibleNowAddress: true, |
|||
}) |
|||
}, |
|||
onCloseNowAddress() { |
|||
this.setData({ visibleNowAddress: false }) |
|||
}, |
|||
onChangeAdress(e) { |
|||
this.setData({ |
|||
nowAddressValue: e.detail.value, |
|||
nowAddress: e.detail.options.map((n) => n.label).join('-'), |
|||
}) |
|||
}, |
|||
// 来自地址
|
|||
onOpenComeFromAddress() { |
|||
this.setData({ |
|||
visibleComeFromAddress: true, |
|||
}) |
|||
}, |
|||
onCloseComeFromAddress() { |
|||
this.setData({ visibleComeFromAddress: false }) |
|||
}, |
|||
onChangeComeFromAddress(e) { |
|||
this.setData({ |
|||
comeFromAddressValue: e.detail.value, |
|||
comeFromAddress: e.detail.options.map((n) => n.label).join('-'), |
|||
}) |
|||
}, |
|||
// 来到时间
|
|||
onOpenLocalTime() { |
|||
this.setData({ |
|||
visibleLocalTime: true, |
|||
}) |
|||
}, |
|||
onConfirm(e) { |
|||
const { name, label, visible } = e.currentTarget.dataset |
|||
this.setData({ |
|||
[name]: e.detail.value, |
|||
[label]: e.detail.label, |
|||
[visible]: false, |
|||
}) |
|||
}, |
|||
onCancelTime(e) { |
|||
const { visible } = e.currentTarget.dataset |
|||
this.setData({ |
|||
[visible]: false, |
|||
}) |
|||
}, |
|||
onOpenBackTime() { |
|||
this.setData({ |
|||
visibleBackTime: true, |
|||
}) |
|||
}, |
|||
}) |
@ -0,0 +1,8 @@ |
|||
{ |
|||
"navigationBarTitleText": "行程上报", |
|||
"usingComponents": { |
|||
"date-time-picker": "../../../../components/DateTimePicker/index", |
|||
"wux-cascader": "../../../../dist/cascader/index", |
|||
"wux-date-picker": "../../../../dist/date-picker/index" |
|||
} |
|||
} |
@ -0,0 +1,162 @@ |
|||
<view class="active-apply" wx:if="{{type == 'edit' || type == ''}}"> |
|||
<view class="apply-list" bindtap="toApplyList" wx:if="{{!type}}"> |
|||
<image src="../../images/wodeshangbao.png" /> |
|||
</view> |
|||
<view class="data-form"> |
|||
<view class="data-form-item"> |
|||
<view class="item-label item-label-title">基本信息</view> |
|||
</view> |
|||
<view class="data-form-item"> |
|||
<text class="must">*</text> |
|||
<view class="item-label">姓名</view> |
|||
<view class="item-value"> |
|||
<input type="text" placeholder-class="placeholder" placeholder="请输入姓名" value="{{name}}" bindinput="onInputValue" data-code="name" maxlength='6' /> |
|||
</view> |
|||
</view> |
|||
<view class="data-form-item"> |
|||
<text class="must">*</text> |
|||
<view class="item-label">手机号</view> |
|||
<view class="item-value"> |
|||
<input type="number" placeholder-class="placeholder" placeholder="请输入手机号" value="{{phone}}" bindinput="onInputValue" data-code="phone" maxlength='11' /> |
|||
</view> |
|||
</view> |
|||
<view class="data-form-item" style="margin-bottom:10rpx"> |
|||
<text class="must">*</text> |
|||
<view class="item-label">身份证号</view> |
|||
<view class="item-value"> |
|||
<input type="idcard" placeholder-class="placeholder" placeholder="请输入证件号" value="{{card}}" bindinput="onInputValue" data-code="card" maxlength='18' /> |
|||
</view> |
|||
</view> |
|||
<view class="data-form-item"> |
|||
<view class="item-label item-label-title">现居住地</view> |
|||
</view> |
|||
<view class="data-form-item"> |
|||
<text class="must">*</text> |
|||
<view class="item-label">现居地</view> |
|||
<view class="item-value" bind:tap="onOpenNowAddress"> |
|||
<view class="value-text {{nowAddress ? '' : 'placeholder'}}">{{nowAddress || '请选择'}}</view> |
|||
</view> |
|||
<view class="item-select" bind:tap="onOpenNowAddress"> |
|||
<!-- <image src="../../images/right-sword.png" class="arrow" /> --> |
|||
</view> |
|||
<!-- defaultFieldNames='{{defaultFieldNames}}' --> |
|||
<block wx:if="{{visibleNowAddress}}"> |
|||
<wux-cascader visible="{{ visibleNowAddress }}" title="所在地区" controlled value="{{ nowAddressValue }}" options="{{ options1 }}" bind:close="onCloseNowAddress" bind:change="onChangeAdress" bind:load="onLoadOptions" /> |
|||
</block> |
|||
</view> |
|||
<view class="data-form-item" style="margin-bottom:10rpx"> |
|||
<text class="must">*</text> |
|||
<view class="item-label">详情地址</view> |
|||
<view class="item-value"> |
|||
<input type="text" placeholder-class="placeholder" placeholder="请输入地址" value="{{detailAddress}}" bindinput="onInputValue" data-code="detailAddress" /> |
|||
</view> |
|||
</view> |
|||
<view class="data-form-item"> |
|||
<view class="item-label item-label-title">行程信息</view> |
|||
</view> |
|||
<view class="data-form-item"> |
|||
<text class="must">*</text> |
|||
<view class="item-label">来自地区</view> |
|||
<view class="item-value" bind:tap="onOpenComeFromAddress"> |
|||
<view class="value-text {{comeFromAddress ? '' : 'placeholder'}}"> |
|||
{{comeFromAddress || '请选择'}} |
|||
</view> |
|||
</view> |
|||
<block wx:if="{{visibleComeFromAddress}}"> |
|||
<wux-cascader visible="{{ visibleComeFromAddress }}" controlled value="{{ comeFromAddressValue }}" options="{{ options1 }}" bind:close="onCloseComeFromAddress" bind:change="onChangeComeFromAddress" bind:load="onLoadComeAddress" /> |
|||
</block> |
|||
</view> |
|||
<view class="data-form-item"> |
|||
<text class="must">*</text> |
|||
<view class="item-label" style="width:200rpx">来到本地时间</view> |
|||
<view class="item-value" bind:tap="onOpenLocalTime"> |
|||
<view class="value-text {{localTime ? '' : 'placeholder'}}">{{localTime || '请选择'}}</view> |
|||
</view> |
|||
<block wx:if="{{visibleLocalTime}}"> |
|||
<wux-date-picker visible="{{ visibleLocalTime }}" controlled mode="date" value="{{ localTimeValue }}" lang="zh_CN" data-name="localTimeValue" data-mode="date" data-label='localTime' data-visible='visibleLocalTime' bind:confirm="onConfirm" bind:cancel='onCancelTime'></wux-date-picker> |
|||
</block> |
|||
</view> |
|||
<view class="data-form-item"> |
|||
<!-- <text class="must">*</text> --> |
|||
<view class="item-label">返回时间</view> |
|||
<view class="item-value" bind:tap="onOpenBackTime"> |
|||
<view class="value-text {{backTime ? '' : 'placeholder'}}">{{backTime || '请选择'}}</view> |
|||
</view> |
|||
<block wx:if="{{visibleBackTime}}"> |
|||
<wux-date-picker visible="{{ visibleBackTime }}" controlled mode="date" value="{{ backTimeValue }}" lang="zh_CN" data-name="backTimeValue" data-mode="date" data-label='backTime' data-visible='visibleBackTime' bind:confirm="onConfirm" bind:cancel='onCancelTime'></wux-date-picker> |
|||
</block> |
|||
</view> |
|||
<view class="data-form"> |
|||
<view class="textarea-item"> |
|||
<textarea class="textarea" placeholder-class="placeholder" placeholder="请输入备注信息" maxlength="100" value="{{actContent}}" bindinput="onInputValue" data-code="actContent"></textarea> |
|||
</view> |
|||
</view> |
|||
</view> |
|||
<view class="data-form"> |
|||
<view class="footer-item"> |
|||
<view class="submit" bindtap="onSubmitApply">提交</view> |
|||
</view> |
|||
</view> |
|||
</view> |
|||
<view class="active-apply" wx:elif="{{type == 'look'}}"> |
|||
<view class="data-form"> |
|||
<view class="data-form-item"> |
|||
<view class="item-label item-label-title">基本信息</view> |
|||
</view> |
|||
<view class="data-form-item"> |
|||
<view class="item-label">姓名</view> |
|||
<view class="item-value">{{name}}</view> |
|||
</view> |
|||
<view class="data-form-item"> |
|||
<view class="item-label">手机号</view> |
|||
<view class="item-value">{{phone}}</view> |
|||
</view> |
|||
<view class="data-form-item" style="margin-bottom:10rpx"> |
|||
<view class="item-label">身份证号</view> |
|||
<view class="item-value">{{card}}</view> |
|||
</view> |
|||
</view> |
|||
<view class="data-form"> |
|||
<view class="data-form-item"> |
|||
<view class="item-label item-label-title">现居住地</view> |
|||
</view> |
|||
<view class="data-form-item"> |
|||
<view class="item-label">现居地</view> |
|||
<view class="item-value">{{nowAddress}}</view> |
|||
</view> |
|||
<view class="data-form-item" style="margin-bottom:10rpx"> |
|||
<view class="item-label">详细地址</view> |
|||
<view class="item-value">{{detailAddress}}</view> |
|||
</view> |
|||
</view> |
|||
<view class="data-form"> |
|||
<view class="data-form-item"> |
|||
<view class="item-label item-label-title">行程信息</view> |
|||
</view> |
|||
<view class="data-form-item"> |
|||
<view class="item-label">来自地区</view> |
|||
<view class="item-value">{{comeFromAddress}}</view> |
|||
</view> |
|||
<view class="data-form-item"> |
|||
<view class="item-label" style="width:200rpx">来到本地时间</view> |
|||
<view class="item-value">{{localTime}}</view> |
|||
</view> |
|||
<view class="data-form-item"> |
|||
<view class="item-label">返回时间</view> |
|||
<view class="item-value">{{backTime? backTime:'暂无'}}</view> |
|||
</view> |
|||
</view> |
|||
<view class="data-form"> |
|||
<view class="textarea-item"> |
|||
<view class="item-label">备注</view> |
|||
<view class="textarea">{{actContent}}</view> |
|||
</view> |
|||
</view> |
|||
<view class="data-form" wx:if="{{type==='look'}}"> |
|||
<view class="footer-item"> |
|||
<view class="submit delete" bindtap="deleteTripById">删除</view> |
|||
<view class="submit confirm" bind:tap="confirmButton">确定</view> |
|||
</view> |
|||
</view> |
|||
</view> |
|||
<wux-actionsheet id="wux-actionsheet" /> |
@ -0,0 +1,231 @@ |
|||
.active-apply { |
|||
background-color: #f7f7f7; |
|||
position: relative; |
|||
} |
|||
|
|||
.data-form { |
|||
box-sizing: border-box; |
|||
/* margin-bottom: 10rpx; */ |
|||
} |
|||
|
|||
.data-form-item { |
|||
box-sizing: border-box; |
|||
display: flex; |
|||
align-items: center; |
|||
height: 110rpx; |
|||
border-bottom: 1px solid #eee; |
|||
background-color: #fff; |
|||
padding-left: 30rpx; |
|||
box-sizing: border-box; |
|||
} |
|||
|
|||
.data-form .must { |
|||
color: #ff0000; |
|||
} |
|||
|
|||
.data-form .item-label { |
|||
width: 150rpx; |
|||
font-size: 32rpx; |
|||
color: #333333; |
|||
display: flex; |
|||
} |
|||
|
|||
.data-form .reason-label { |
|||
width: 200rpx; |
|||
} |
|||
|
|||
.data-form .item-value { |
|||
width: 490rpx; |
|||
} |
|||
|
|||
.data-form .item-value .value-text { |
|||
width: 480rpx; |
|||
overflow: hidden; |
|||
text-overflow: ellipsis; |
|||
white-space: nowrap; |
|||
} |
|||
|
|||
.data-form .placeholder { |
|||
color: #c1c1c1; |
|||
} |
|||
|
|||
.data-form .item-select { |
|||
width: 60rpx; |
|||
height: 100%; |
|||
display: flex; |
|||
align-items: center; |
|||
justify-content: center; |
|||
} |
|||
|
|||
.upload-image { |
|||
display: flex; |
|||
flex-direction: column; |
|||
align-items: flex-start; |
|||
justify-content: space-around; |
|||
height: 300rpx; |
|||
} |
|||
|
|||
.upload-image .wux-upload--picture-card .wux-upload__select { |
|||
width: 214rpx !important; |
|||
height: 214rpx !important; |
|||
} |
|||
|
|||
.upload-image .wux-upload--picture-card .wux-upload__file { |
|||
width: 214rpx !important; |
|||
height: 214rpx !important; |
|||
} |
|||
|
|||
.item-select .arrow { |
|||
width: 20rpx; |
|||
height: 30rpx; |
|||
} |
|||
|
|||
.item-select .pos { |
|||
width: 34rpx; |
|||
height: 38rpx; |
|||
} |
|||
|
|||
.textarea-item { |
|||
display: flex; |
|||
flex-direction: column; |
|||
align-items: flex-start; |
|||
height: 360rpx; |
|||
/* border-bottom: 1px solid #eee; */ |
|||
background-color: #fff; |
|||
padding-left: 30rpx; |
|||
padding-top: 40rpx; |
|||
box-sizing: border-box; |
|||
} |
|||
|
|||
.textarea-item .textarea { |
|||
width: 690rpx; |
|||
padding: 24rpx 12rpx; |
|||
} |
|||
|
|||
.switch-item { |
|||
display: flex; |
|||
align-items: center; |
|||
justify-content: space-between; |
|||
height: 110rpx; |
|||
border-bottom: 1px solid #eee; |
|||
background-color: #fff; |
|||
padding-left: 30rpx; |
|||
padding-right: 30rpx; |
|||
box-sizing: border-box; |
|||
} |
|||
|
|||
.switch-item .switch-label { |
|||
width: 200rpx; |
|||
font-size: 32rpx; |
|||
color: #333333; |
|||
} |
|||
|
|||
.footer-item { |
|||
display: flex; |
|||
align-items: center; |
|||
justify-content: center; |
|||
height: 200rpx; |
|||
/* background-color: #fff; */ |
|||
padding-left: 30rpx; |
|||
box-sizing: border-box; |
|||
} |
|||
|
|||
.submit { |
|||
width: 500rpx; |
|||
height: 80rpx; |
|||
line-height: 80rpx; |
|||
text-align: center; |
|||
border-radius: 40rpx; |
|||
background-color: #ff0000; |
|||
color: #fff; |
|||
} |
|||
|
|||
/* 上传图片 start */ |
|||
.image-list { |
|||
width: 100%; |
|||
display: grid; |
|||
grid-template-columns: 214rpx 214rpx 214rpx; |
|||
grid-template-rows: 214rpx; |
|||
grid-gap: 17rpx; |
|||
height: 214rpx; |
|||
} |
|||
|
|||
.image-list .image-item { |
|||
width: 100%; |
|||
height: 100%; |
|||
position: relative; |
|||
} |
|||
|
|||
.image-list image { |
|||
width: 100%; |
|||
height: 100%; |
|||
object-fit: cover; |
|||
border-radius: 8rpx; |
|||
} |
|||
|
|||
.image-list .image-item .loading { |
|||
position: absolute; |
|||
left: 25%; |
|||
top: 25%; |
|||
width: 50%; |
|||
height: 50%; |
|||
} |
|||
|
|||
.image-list .image-item .close { |
|||
position: absolute; |
|||
top: -10rpx; |
|||
right: -10rpx; |
|||
width: 40rpx; |
|||
height: 40rpx; |
|||
} |
|||
|
|||
/* 上传图片 end */ |
|||
.apply-list { |
|||
width: 160rpx; |
|||
height: 56rpx; |
|||
position: absolute; |
|||
right: 0rpx; |
|||
/* top: -20rpx; */ |
|||
z-index: 999; |
|||
} |
|||
|
|||
.apply-list image { |
|||
width: 100%; |
|||
height: 100%; |
|||
} |
|||
|
|||
.data-form .item-label-title { |
|||
font-size: 34rpx; |
|||
color: #333333; |
|||
font-weight: bold; |
|||
} |
|||
|
|||
.delete { |
|||
width: 200rpx; |
|||
height: 72rpx; |
|||
background-image: linear-gradient(90deg, |
|||
#fc6c3b 0%, |
|||
#fe861e 51%, |
|||
#ffa000 100%), |
|||
linear-gradient(#c9c9c9, |
|||
#c9c9c9); |
|||
background-blend-mode: normal, |
|||
normal; |
|||
box-shadow: 0rpx 4rpx 27rpx 0rpx rgba(205, 205, 205, 0.33); |
|||
border-radius: 36rpx; |
|||
margin-right: 67rpx; |
|||
} |
|||
|
|||
.confirm { |
|||
width: 200rpx; |
|||
height: 72rpx; |
|||
background-image: linear-gradient(90deg, |
|||
#db1a1f 20%, |
|||
#e95027 100%), |
|||
linear-gradient(#ffffff, |
|||
#ffffff); |
|||
background-blend-mode: normal, |
|||
normal; |
|||
box-shadow: 0rpx 4rpx 27rpx 0rpx rgba(220, 28, 31, 0.29); |
|||
border-radius: 36rpx; |
|||
} |
@ -0,0 +1,22 @@ |
|||
var fly = require('../../../utils/request') |
|||
|
|||
// 行程上报
|
|||
export function saveTripInfo(params) { |
|||
return fly.post('custom/epidemic/saveTripInfo', params) |
|||
} |
|||
// 我的上报列表
|
|||
export function getTripInfoList(params) { |
|||
return fly.get('custom/epidemic/getTripInfoList', params) |
|||
} |
|||
// 我的上报详情
|
|||
export function getTripInfoDetail(id) { |
|||
return fly.get(`custom/epidemic/getTripInfoDetail?id=${id}`) |
|||
} |
|||
// 删除
|
|||
export function deleteTripById(params) { |
|||
return fly.deleted('custom/epidemic/deleteTripById', params) |
|||
} |
|||
// 级联
|
|||
export function getAreaInfo(pid) { |
|||
return fly.get(`admin/city/getAreaInfo?pid=${pid}`) |
|||
} |