| @@ -15,7 +15,7 @@ const assemblyHallPageApi = function(data) { | |||||
| return request({ | return request({ | ||||
| url: '/admin-api/people/assembly-hall/page', | url: '/admin-api/people/assembly-hall/page', | ||||
| method: 'get', | method: 'get', | ||||
| data: data | |||||
| data: data, | |||||
| }); | }); | ||||
| }; | }; | ||||
| /** | /** | ||||
| @@ -26,7 +26,7 @@ const mediatorPageApi = function(data) { | |||||
| return request({ | return request({ | ||||
| url: '/admin-api/people/mediator/page', | url: '/admin-api/people/mediator/page', | ||||
| method: 'get', | method: 'get', | ||||
| data: data | |||||
| data: data, | |||||
| }); | }); | ||||
| }; | }; | ||||
| /** | /** | ||||
| @@ -37,7 +37,7 @@ const mediatorGetApi = function(data) { | |||||
| return request({ | return request({ | ||||
| url: '/admin-api/people/mediator/get', | url: '/admin-api/people/mediator/get', | ||||
| method: 'get', | method: 'get', | ||||
| data: data | |||||
| data: data, | |||||
| }); | }); | ||||
| }; | }; | ||||
| @@ -49,7 +49,7 @@ const seekHelpPageApi = function(data) { | |||||
| return request({ | return request({ | ||||
| url: '/admin-api/people/seek-help/page', | url: '/admin-api/people/seek-help/page', | ||||
| method: 'get', | method: 'get', | ||||
| data: data | |||||
| data: data, | |||||
| }); | }); | ||||
| }; | }; | ||||
| /** | /** | ||||
| @@ -60,7 +60,7 @@ const seekHelpCreateApi = function(data) { | |||||
| return request({ | return request({ | ||||
| url: '/admin-api/people/seek-help/create', | url: '/admin-api/people/seek-help/create', | ||||
| method: 'post', | method: 'post', | ||||
| data: data | |||||
| data: data, | |||||
| }); | }); | ||||
| }; | }; | ||||
| @@ -72,23 +72,25 @@ const seekHelpGetApi = function(data) { | |||||
| return request({ | return request({ | ||||
| url: '/admin-api/people/seek-help/get', | url: '/admin-api/people/seek-help/get', | ||||
| method: 'get', | method: 'get', | ||||
| data: data | |||||
| data: data, | |||||
| }); | }); | ||||
| }; | }; | ||||
| const massesDetailUpdate = function(data) { | const massesDetailUpdate = function(data) { | ||||
| // 点单状态变化如:接单 | // 点单状态变化如:接单 | ||||
| return request({ | return request({ | ||||
| url: '/admin-api/people/seek-help/update', | url: '/admin-api/people/seek-help/update', | ||||
| method: 'put', | method: 'put', | ||||
| data: data | |||||
| data: data, | |||||
| }); | }); | ||||
| }; | }; | ||||
| const seekHelpApi = function(data) { | const seekHelpApi = function(data) { | ||||
| // 点单 进行帮助 | // 点单 进行帮助 | ||||
| return request({ | return request({ | ||||
| url: `/admin-api/people/seek-help/help/${data.id}`, | url: `/admin-api/people/seek-help/help/${data.id}`, | ||||
| method: 'put', | method: 'put', | ||||
| data: data | |||||
| data: data, | |||||
| }); | }); | ||||
| }; | }; | ||||
| /** | /** | ||||
| @@ -99,7 +101,7 @@ const lawsRegulationPageApi = function(data) { | |||||
| return request({ | return request({ | ||||
| url: '/admin-api/people/laws-regulation/page', | url: '/admin-api/people/laws-regulation/page', | ||||
| method: 'get', | method: 'get', | ||||
| data: data | |||||
| data: data, | |||||
| }); | }); | ||||
| }; | }; | ||||
| @@ -111,7 +113,7 @@ const lawsRegulationGetApi = function(data) { | |||||
| return request({ | return request({ | ||||
| url: '/admin-api/people/laws-regulation/get', | url: '/admin-api/people/laws-regulation/get', | ||||
| method: 'get', | method: 'get', | ||||
| data: data | |||||
| data: data, | |||||
| }); | }); | ||||
| }; | }; | ||||
| @@ -123,7 +125,7 @@ const casesListApi = function(data) { | |||||
| return request({ | return request({ | ||||
| url: '/admin-api/people/cases/page', | url: '/admin-api/people/cases/page', | ||||
| method: 'get', | method: 'get', | ||||
| data: data | |||||
| data: data, | |||||
| }); | }); | ||||
| }; | }; | ||||
| @@ -135,7 +137,7 @@ const getCasesIdApi = function(data) { | |||||
| return request({ | return request({ | ||||
| url: '/admin-api/people/cases/get', | url: '/admin-api/people/cases/get', | ||||
| method: 'get', | method: 'get', | ||||
| data: data | |||||
| data: data, | |||||
| }); | }); | ||||
| }; | }; | ||||
| @@ -147,7 +149,7 @@ const createCasesApi = function(data) { | |||||
| return request({ | return request({ | ||||
| url: '/admin-api/people/cases/create', | url: '/admin-api/people/cases/create', | ||||
| method: 'post', | method: 'post', | ||||
| data: data | |||||
| data: data, | |||||
| }); | }); | ||||
| }; | }; | ||||
| @@ -159,7 +161,7 @@ const newsGetApi = function(data) { | |||||
| return request({ | return request({ | ||||
| url: '/admin-api/people/news/get', | url: '/admin-api/people/news/get', | ||||
| method: 'get', | method: 'get', | ||||
| data: data | |||||
| data: data, | |||||
| }); | }); | ||||
| }; | }; | ||||
| @@ -171,7 +173,7 @@ const hospitalPageApi = function(data) { | |||||
| return request({ | return request({ | ||||
| url: '/admin-api/people/hospital/page', | url: '/admin-api/people/hospital/page', | ||||
| method: 'get', | method: 'get', | ||||
| data: data | |||||
| data: data, | |||||
| }); | }); | ||||
| }; | }; | ||||
| @@ -183,7 +185,7 @@ const hospitalGetApi = function(data) { | |||||
| return request({ | return request({ | ||||
| url: '/admin-api/people/hospital/get', | url: '/admin-api/people/hospital/get', | ||||
| method: 'get', | method: 'get', | ||||
| data: data | |||||
| data: data, | |||||
| }); | }); | ||||
| }; | }; | ||||
| /** | /** | ||||
| @@ -194,7 +196,7 @@ const doctorPageApi = function(data) { | |||||
| return request({ | return request({ | ||||
| url: '/admin-api/people/doctor/page', | url: '/admin-api/people/doctor/page', | ||||
| method: 'get', | method: 'get', | ||||
| data: data | |||||
| data: data, | |||||
| }); | }); | ||||
| }; | }; | ||||
| @@ -206,7 +208,7 @@ const assemblyIdApi = function(data) { | |||||
| return request({ | return request({ | ||||
| url: '/admin-api/people/assemblymen/create', | url: '/admin-api/people/assemblymen/create', | ||||
| method: 'post', | method: 'post', | ||||
| data: data | |||||
| data: data, | |||||
| }); | }); | ||||
| }; | }; | ||||
| @@ -218,7 +220,7 @@ const assemblyhallIdApi = function(data) { | |||||
| return request({ | return request({ | ||||
| url: '/admin-api/people/assembly-hall/get', | url: '/admin-api/people/assembly-hall/get', | ||||
| method: 'get', | method: 'get', | ||||
| data: data | |||||
| data: data, | |||||
| }); | }); | ||||
| }; | }; | ||||
| @@ -230,7 +232,7 @@ const commentPageApi = function(data) { | |||||
| return request({ | return request({ | ||||
| url: '/admin-api/people/comment/page', | url: '/admin-api/people/comment/page', | ||||
| method: 'get', | method: 'get', | ||||
| data: data | |||||
| data: data, | |||||
| }); | }); | ||||
| }; | }; | ||||
| @@ -242,7 +244,7 @@ const commentCreateApi = function(data) { | |||||
| return request({ | return request({ | ||||
| url: '/admin-api/people/comment/create', | url: '/admin-api/people/comment/create', | ||||
| method: 'post', | method: 'post', | ||||
| data: data | |||||
| data: data, | |||||
| }); | }); | ||||
| }; | }; | ||||
| @@ -254,7 +256,7 @@ const assemblyHallGetApi = function(data) { | |||||
| return request({ | return request({ | ||||
| url: '/admin-api/people/assembly-hall/get', | url: '/admin-api/people/assembly-hall/get', | ||||
| method: 'get', | method: 'get', | ||||
| data: data | |||||
| data: data, | |||||
| }); | }); | ||||
| }; | }; | ||||
| /** | /** | ||||
| @@ -265,7 +267,7 @@ const partyBranchApi = function(data) { | |||||
| return request({ | return request({ | ||||
| url: '/admin-api/people/party-branch/page', | url: '/admin-api/people/party-branch/page', | ||||
| method: 'get', | method: 'get', | ||||
| data: data | |||||
| data: data, | |||||
| }); | }); | ||||
| }; | }; | ||||
| /** | /** | ||||
| @@ -277,7 +279,7 @@ const newsPageApi = function(data) { | |||||
| return request({ | return request({ | ||||
| url: '/admin-api/people/news/page', | url: '/admin-api/people/news/page', | ||||
| method: 'get', | method: 'get', | ||||
| data: data | |||||
| data: data, | |||||
| }); | }); | ||||
| }; | }; | ||||
| @@ -289,7 +291,7 @@ const partyBranchGetApi = function(data) { | |||||
| return request({ | return request({ | ||||
| url: '/admin-api/people/party-branch/get', | url: '/admin-api/people/party-branch/get', | ||||
| method: 'get', | method: 'get', | ||||
| data: data | |||||
| data: data, | |||||
| }); | }); | ||||
| }; | }; | ||||
| /** | /** | ||||
| @@ -300,7 +302,7 @@ const excellentPartMemberPageApi = function(data) { | |||||
| return request({ | return request({ | ||||
| url: '/admin-api/people/excellent-party-member/page', | url: '/admin-api/people/excellent-party-member/page', | ||||
| method: 'get', | method: 'get', | ||||
| data: data | |||||
| data: data, | |||||
| }); | }); | ||||
| }; | }; | ||||
| @@ -312,7 +314,7 @@ const deptListApi = function(data) { | |||||
| return request({ | return request({ | ||||
| url: '/admin-api/system/dept/list', | url: '/admin-api/system/dept/list', | ||||
| method: 'get', | method: 'get', | ||||
| data: data | |||||
| data: data, | |||||
| }); | }); | ||||
| }; | }; | ||||
| @@ -324,7 +326,7 @@ const excellentPartMemberGetApi = function(data) { | |||||
| return request({ | return request({ | ||||
| url: '/admin-api/people/excellent-party-member/get', | url: '/admin-api/people/excellent-party-member/get', | ||||
| method: 'get', | method: 'get', | ||||
| data: data | |||||
| data: data, | |||||
| }); | }); | ||||
| }; | }; | ||||
| @@ -336,7 +338,7 @@ const agencyPageApi = function(data) { | |||||
| return request({ | return request({ | ||||
| url: '/admin-api/people/agency/page', | url: '/admin-api/people/agency/page', | ||||
| method: 'get', | method: 'get', | ||||
| data: data | |||||
| data: data, | |||||
| }); | }); | ||||
| }; | }; | ||||
| @@ -348,7 +350,7 @@ const villageAffairsPageApi = function(data) { | |||||
| return request({ | return request({ | ||||
| url: '/admin-api/people/village-affairs/page', | url: '/admin-api/people/village-affairs/page', | ||||
| method: 'get', | method: 'get', | ||||
| data: data | |||||
| data: data, | |||||
| }); | }); | ||||
| }; | }; | ||||
| @@ -360,7 +362,7 @@ const agencyContentPageApi = function(data) { | |||||
| return request({ | return request({ | ||||
| url: '/admin-api/people/agency-content/page', | url: '/admin-api/people/agency-content/page', | ||||
| method: 'get', | method: 'get', | ||||
| data: data | |||||
| data: data, | |||||
| }); | }); | ||||
| }; | }; | ||||
| @@ -372,7 +374,7 @@ const CrateAppraiseApi = function(data) { | |||||
| return request({ | return request({ | ||||
| url: '/admin-api/people/seek-help/appraise', | url: '/admin-api/people/seek-help/appraise', | ||||
| method: 'put', | method: 'put', | ||||
| data: data | |||||
| data: data, | |||||
| }); | }); | ||||
| }; | }; | ||||
| @@ -384,7 +386,7 @@ const agencyContentGetApi = function(data) { | |||||
| return request({ | return request({ | ||||
| url: '/admin-api/people/agency-content/get', | url: '/admin-api/people/agency-content/get', | ||||
| method: 'get', | method: 'get', | ||||
| data: data | |||||
| data: data, | |||||
| }); | }); | ||||
| }; | }; | ||||
| @@ -396,7 +398,7 @@ const agencyGetApi = function(data) { | |||||
| return request({ | return request({ | ||||
| url: '/admin-api/people/agency/get', | url: '/admin-api/people/agency/get', | ||||
| method: 'get', | method: 'get', | ||||
| data: data | |||||
| data: data, | |||||
| }); | }); | ||||
| }; | }; | ||||
| @@ -408,7 +410,7 @@ const agencyContentGetOrgIdApi = function(data) { | |||||
| return request({ | return request({ | ||||
| url: '/admin-api/people/agency-content/getOrgId', | url: '/admin-api/people/agency-content/getOrgId', | ||||
| method: 'get', | method: 'get', | ||||
| data: data | |||||
| data: data, | |||||
| }); | }); | ||||
| }; | }; | ||||
| @@ -420,7 +422,7 @@ const villageAffairsGetApi = function(data) { | |||||
| return request({ | return request({ | ||||
| url: '/admin-api/people/village-affairs/get', | url: '/admin-api/people/village-affairs/get', | ||||
| method: 'get', | method: 'get', | ||||
| data: data | |||||
| data: data, | |||||
| }); | }); | ||||
| }; | }; | ||||
| @@ -432,7 +434,7 @@ const partyEventPageApi = function(data) { | |||||
| return request({ | return request({ | ||||
| url: '/admin-api/people/party-event/page', | url: '/admin-api/people/party-event/page', | ||||
| method: 'get', | method: 'get', | ||||
| data: data | |||||
| data: data, | |||||
| }); | }); | ||||
| }; | }; | ||||
| @@ -444,7 +446,7 @@ const partyEventGetApi = function(data) { | |||||
| return request({ | return request({ | ||||
| url: '/admin-api/people/party-event/get', | url: '/admin-api/people/party-event/get', | ||||
| method: 'get', | method: 'get', | ||||
| data: data | |||||
| data: data, | |||||
| }); | }); | ||||
| }; | }; | ||||
| @@ -456,7 +458,7 @@ const patientCreateApi = function(data) { | |||||
| return request({ | return request({ | ||||
| url: '/admin-api/people/patient/create', | url: '/admin-api/people/patient/create', | ||||
| method: 'post', | method: 'post', | ||||
| data: data | |||||
| data: data, | |||||
| }); | }); | ||||
| }; | }; | ||||
| /** | /** | ||||
| @@ -467,7 +469,7 @@ const getGridListApi = function(data) { | |||||
| return request({ | return request({ | ||||
| url: '/admin-api/people/grid/page', | url: '/admin-api/people/grid/page', | ||||
| method: 'get', | method: 'get', | ||||
| data: data | |||||
| data: data, | |||||
| }); | }); | ||||
| }; | }; | ||||
| /** | /** | ||||
| @@ -478,7 +480,7 @@ const getGridMemberListApi = function(data) { | |||||
| return request({ | return request({ | ||||
| url: '/admin-api/people/grid-member/page', | url: '/admin-api/people/grid-member/page', | ||||
| method: 'get', | method: 'get', | ||||
| data: data | |||||
| data: data, | |||||
| }); | }); | ||||
| }; | }; | ||||
| @@ -487,11 +489,135 @@ const activityPageApi = function(data) { | |||||
| return request({ | return request({ | ||||
| url: '/admin-api/people/activity/page', | url: '/admin-api/people/activity/page', | ||||
| method: 'get', | method: 'get', | ||||
| data: data | |||||
| data: data, | |||||
| }); | }); | ||||
| }; | }; | ||||
| // 活动风采-详情 | |||||
| const activityDetailApi = function(data) { | |||||
| return request({ | |||||
| url: '/admin-api/people/activity/get', | |||||
| method: 'get', | |||||
| data: data, | |||||
| }); | |||||
| }; | |||||
| // 党员注册 | |||||
| const partyMemberCreate = function(data) { | |||||
| return request({ | |||||
| url: '/admin-api/people/party-member/create', | |||||
| method: 'POST', | |||||
| data: data, | |||||
| }); | |||||
| }; | |||||
| // 党员详情 | |||||
| const partyMemberInfoApi = function(data) { | |||||
| return request({ | |||||
| url: '/admin-api/people/party-member/info', | |||||
| method: 'get', | |||||
| data: data, | |||||
| }); | |||||
| }; | |||||
| // 党员修改 | |||||
| const partyMemberUpdate = function(data) { | |||||
| return request({ | |||||
| url: '/admin-api/people/party-member/update', | |||||
| method: 'put', | |||||
| data: data, | |||||
| }); | |||||
| }; | |||||
| // 志愿服务 | |||||
| const volunteerProjectApi = function(data) { | |||||
| return request({ | |||||
| url: '/admin-api/people/volunteer-project/page', | |||||
| method: 'get', | |||||
| data: data, | |||||
| }); | |||||
| }; | |||||
| // 志愿服务-详情 | |||||
| const getVolunteerProjectApi = function(data) { | |||||
| return request({ | |||||
| url: '/admin-api/people/volunteer-project/get', | |||||
| method: 'get', | |||||
| data: data, | |||||
| }); | |||||
| }; | |||||
| // 志愿服务-发布 | |||||
| const getVolunteerProjectCreateApi = function(data) { | |||||
| return request({ | |||||
| url: '/admin-api/people/volunteer-project/create', | |||||
| method: 'post', | |||||
| data: data, | |||||
| }); | |||||
| }; | |||||
| // 志愿服务-详情 | |||||
| // const getVolunteerProjectApi = function (data) { | |||||
| // return request({ | |||||
| // url: '/admin-api/people/volunteer-project/get', | |||||
| // method: 'get', | |||||
| // data: data, | |||||
| // }); | |||||
| // }; | |||||
| // 党组织 | |||||
| const partyOrganizationAllApi = function(data) { | |||||
| return request({ | |||||
| url: '/admin-api/people/party-organization/list-all', | |||||
| method: 'get', | |||||
| data: data, | |||||
| }); | |||||
| }; | |||||
| // 党组织-修改 | |||||
| const partyOrganizationCreateApi = function(data) { | |||||
| return request({ | |||||
| url: '/admin-api/people/party-organization/create', | |||||
| method: 'post', | |||||
| data: data, | |||||
| }); | |||||
| }; | |||||
| // 党组织-修改 | |||||
| const partyOrganizationUpdateApi = function(data) { | |||||
| return request({ | |||||
| url: '/admin-api/people/party-organization/update', | |||||
| method: 'put', | |||||
| data: data, | |||||
| }); | |||||
| }; | |||||
| // 党组织-详情 | |||||
| const partyOrganizationInfoApi = function(data) { | |||||
| return request({ | |||||
| url: '/admin-api/people/party-organization/info', | |||||
| method: 'get', | |||||
| data: data, | |||||
| }); | |||||
| }; | |||||
| // 志愿服务申领列表 | |||||
| const applyVolunteerProjecPageApi = function(data) { | |||||
| return request({ | |||||
| url: '/admin-api/people/apply-volunteer-project/page', | |||||
| method: 'get', | |||||
| data: data, | |||||
| }); | |||||
| }; | |||||
| // 志愿服务申领列表 | |||||
| const applyVolunteerProjecCreateApi = function(data) { | |||||
| return request({ | |||||
| url: '/admin-api/people/apply-volunteer-project/create', | |||||
| method: 'post', | |||||
| data: data, | |||||
| }); | |||||
| }; | |||||
| export { | export { | ||||
| assemblyHallPageApi, | assemblyHallPageApi, | ||||
| @@ -535,5 +661,18 @@ export { | |||||
| patientCreateApi, | patientCreateApi, | ||||
| getGridListApi, | getGridListApi, | ||||
| getGridMemberListApi, | getGridMemberListApi, | ||||
| activityPageApi | |||||
| activityPageApi, | |||||
| activityDetailApi, | |||||
| partyMemberCreate, | |||||
| volunteerProjectApi, | |||||
| getVolunteerProjectApi, | |||||
| partyOrganizationAllApi, | |||||
| partyOrganizationCreateApi, | |||||
| partyOrganizationUpdateApi, | |||||
| getVolunteerProjectCreateApi, | |||||
| applyVolunteerProjecPageApi, | |||||
| applyVolunteerProjecCreateApi, | |||||
| partyOrganizationInfoApi, | |||||
| partyMemberInfoApi, | |||||
| partyMemberUpdate, | |||||
| }; | }; | ||||
| @@ -0,0 +1,86 @@ | |||||
| <template> | |||||
| <view> | |||||
| <custom-nav-bar position="fixed" color="black" left-text="" left-arrow /> | |||||
| <view class="dateil"> | |||||
| <view class="title multi-line">{{detailObj.activityTitle}}</view> | |||||
| <view class="flex flex-v-center"> | |||||
| <view class="nickName">发布人:{{detailObj.userName}}</view> | |||||
| <view class="time">{{getDateTime(detailObj.createTime,1)}}</view> | |||||
| </view> | |||||
| <view class="line"></view> | |||||
| <mp-html class="rich-text" :content="detailObj.activityContent" /> | |||||
| </view> | |||||
| </view> | |||||
| </template> | |||||
| <script> | |||||
| import * as peopleApi from '@/api/peopleApi'; | |||||
| import * as publicApi from '@/api/publicApi'; | |||||
| import utils from '@/utils/util.map' | |||||
| export default { | |||||
| data() { | |||||
| return { | |||||
| options: {}, | |||||
| detailObj: {}, | |||||
| } | |||||
| }, | |||||
| onLoad(options) { | |||||
| this.options = options; | |||||
| this.activityDetail(); | |||||
| }, | |||||
| methods: { | |||||
| getDateTime(time) { | |||||
| return utils.getDateTime(time, 1) | |||||
| }, | |||||
| async activityDetail() { | |||||
| const that = this; | |||||
| const res = await peopleApi.activityDetailApi({ | |||||
| id: this.options.id, | |||||
| }); | |||||
| if (res.data) { | |||||
| that.detailObj = res.data | |||||
| } | |||||
| } | |||||
| } | |||||
| } | |||||
| </script> | |||||
| <style lang="less" scoped> | |||||
| .dateil { | |||||
| padding: 10rpx 40rpx; | |||||
| .title { | |||||
| font-size: 34rpx; | |||||
| font-weight: 500; | |||||
| color: #333333; | |||||
| } | |||||
| .nickName { | |||||
| font-size: 24rpx; | |||||
| font-weight: 400; | |||||
| color: #FF7F34; | |||||
| margin-top: 32rpx; | |||||
| margin-right: 32rpx; | |||||
| } | |||||
| .time { | |||||
| font-size: 24rpx; | |||||
| font-weight: 400; | |||||
| color: #999999; | |||||
| margin-top: 32rpx; | |||||
| } | |||||
| .line { | |||||
| margin: 40rpx 0 32rpx 0; | |||||
| height: 1px; | |||||
| background: #EFEFEF; | |||||
| } | |||||
| .rich-text { | |||||
| line-height: 54rpx; | |||||
| } | |||||
| } | |||||
| </style> | |||||
| @@ -12,36 +12,49 @@ | |||||
| </view> | </view> | ||||
| </view> | </view> | ||||
| <view class="activity"> | |||||
| <block v-for="(item,index) in 7" :key="index"> | |||||
| <view class="activity" v-if="newsPageList.length !== 0"> | |||||
| <block v-for="(item,index) in newsPageList" :key="index"> | |||||
| <view class="activity-item" @click="headerDetail(item)"> | <view class="activity-item" @click="headerDetail(item)"> | ||||
| <image class="activity-image" src="/src/images/share-icon.png" mode=""></image> | |||||
| <image class="activity-image" :src="item.activityCoverImg" mode="aspectFill"></image> | |||||
| <view class="activity-type" v-if="index < 5" :class="`activity-type${index}`">NO.{{index+1}}</view> | <view class="activity-type" v-if="index < 5" :class="`activity-type${index}`">NO.{{index+1}}</view> | ||||
| <view class="activity-title">惠苑路社区西南角家乐福超市对面xxxxx</view> | |||||
| <view class="activity-time">2023-11-23 周四</view> | |||||
| <view class="activity-title multi-line">{{item.activityTitle}}</view> | |||||
| <view class="activity-time">{{getDateTime(item.createTime)}}</view> | |||||
| <view class="activity-rigth"> | <view class="activity-rigth"> | ||||
| <text>发布者的名字</text> | |||||
| <image src="/src/static/logo.png" mode=""></image> | |||||
| <text>{{item.userName}}</text> | |||||
| <image :src="item.avatar || '@/images/default-avatar.png'" mode=""></image> | |||||
| </view> | </view> | ||||
| </view> | </view> | ||||
| </block> | </block> | ||||
| </view> | </view> | ||||
| <van-empty | |||||
| <van-empty v-else | |||||
| image="https://jiexiu.xuqidata.com:8083/jiexiujumin/e1bb4242ccc209c332b84a3fde862cc156b31634152d5df503642438bfdded50.png" | image="https://jiexiu.xuqidata.com:8083/jiexiujumin/e1bb4242ccc209c332b84a3fde862cc156b31634152d5df503642438bfdded50.png" | ||||
| :image-size="['78%','100%']" description="没有找到您要查询的信息" /> | :image-size="['78%','100%']" description="没有找到您要查询的信息" /> | ||||
| </view> | </view> | ||||
| </template> | </template> | ||||
| <script> | <script> | ||||
| import * as peopleApi from '@/api/peopleApi'; | |||||
| import * as publicApi from '@/api/publicApi'; | |||||
| import utils from '@/utils/util.map' | |||||
| export default { | export default { | ||||
| data() { | data() { | ||||
| return { | return { | ||||
| searchValue: '' | |||||
| option: {}, | |||||
| searchValue: '', | |||||
| newsPageList: [] | |||||
| } | } | ||||
| }, | }, | ||||
| onLoad(option) { | |||||
| this.option = option | |||||
| this.merchantPageApi(false) | |||||
| }, | |||||
| methods: { | methods: { | ||||
| getDateTime(time) { | |||||
| return utils.getDateTime(time, 2) | |||||
| }, | |||||
| onSearch(e) { | onSearch(e) { | ||||
| this.searchValue = e.detail.value | |||||
| if (e.detail.value !== '') { | if (e.detail.value !== '') { | ||||
| return; | return; | ||||
| } | } | ||||
| @@ -52,6 +65,50 @@ | |||||
| this.searchValue = e.detail.value | this.searchValue = e.detail.value | ||||
| this.merchantPageApi(); | this.merchantPageApi(); | ||||
| }, | }, | ||||
| // 分页参数处理事件 | |||||
| generalQueryData(reset = false) { | |||||
| const { | |||||
| pageNo, | |||||
| pageSize, | |||||
| } = this; | |||||
| const params = { | |||||
| pageNo: 1, | |||||
| pageSize: 14, | |||||
| }; | |||||
| if (reset) { | |||||
| return params; | |||||
| } | |||||
| return { | |||||
| ...params, | |||||
| pageNo: pageNo + 1, | |||||
| pageSize | |||||
| }; | |||||
| }, | |||||
| async merchantPageApi(reset = true) { | |||||
| const params = this.generalQueryData(reset); | |||||
| const param = { | |||||
| pageNo: 1, | |||||
| pageSize: 10, | |||||
| }; | |||||
| if (this.searchValue) { | |||||
| param.key = this.searchValue; | |||||
| } | |||||
| const res = await peopleApi.activityPageApi(param); | |||||
| if (res.data) { | |||||
| this.newsPageList = res.data.list | |||||
| } | |||||
| }, | |||||
| headerDetail(item) { | |||||
| uni.navigateTo({ | |||||
| url: './detail?id=' + item.id | |||||
| }) | |||||
| } | |||||
| }, | |||||
| onReachBottom() { | |||||
| if (this.newsPageList.length === this.total) { | |||||
| return; | |||||
| } | |||||
| this.merchantPageApi(false); | |||||
| } | } | ||||
| } | } | ||||
| </script> | </script> | ||||
| @@ -128,17 +185,11 @@ | |||||
| height: 180rpx; | height: 180rpx; | ||||
| } | } | ||||
| .activity-title { | |||||
| margin-top: 16rpx; | |||||
| font-size: 30rpx; | |||||
| font-weight: 400; | |||||
| color: #000000; | |||||
| } | |||||
| .activity-title { | .activity-title { | ||||
| font-size: 24rpx; | font-size: 24rpx; | ||||
| font-weight: 400; | font-weight: 400; | ||||
| color: #999999; | |||||
| color: #000000; | |||||
| padding: 0 16rpx; | |||||
| } | } | ||||
| .activity-time { | .activity-time { | ||||
| @@ -146,6 +197,7 @@ | |||||
| font-weight: 400; | font-weight: 400; | ||||
| margin-top: 8rpx; | margin-top: 8rpx; | ||||
| color: #999999; | color: #999999; | ||||
| padding: 0 16rpx; | |||||
| } | } | ||||
| .activity-rigth { | .activity-rigth { | ||||
| @@ -182,7 +234,7 @@ | |||||
| } | } | ||||
| .activity-type0 { | .activity-type0 { | ||||
| background: linear-gradient(291deg, #0A992D 0%, #11D03E 100%); | |||||
| background: linear-gradient(270deg, #E71E00 0%, #FF5E33 100%); | |||||
| } | } | ||||
| .activity-type1 { | .activity-type1 { | ||||
| @@ -208,7 +260,7 @@ | |||||
| } | } | ||||
| .van-empty__image { | .van-empty__image { | ||||
| width: 75%; | |||||
| width: 75% !important; | |||||
| height: 100%; | height: 100%; | ||||
| } | } | ||||
| </style> | </style> | ||||
| @@ -6,23 +6,34 @@ | |||||
| <view class="form-body form-col"> | <view class="form-body form-col"> | ||||
| <view class="label"> | <view class="label"> | ||||
| <text>单位名称</text> | <text>单位名称</text> | ||||
| <text class="red">*</text> | |||||
| <text v-if="!disabled" class="red">*</text> | |||||
| </view> | </view> | ||||
| <input class="flex1 textarea-class" @input="headleInput" :value="form.name" type="text" data-name="name" | |||||
| placeholder="请输入" /> | |||||
| <input v-if="!disabled" class="flex1 textarea-class" @input="headleInput" :value="form.workName" type="text" | |||||
| data-name="workName" placeholder="请输入单位名称" /> | |||||
| <block v-else>{{form.workName}}</block> | |||||
| </view> | </view> | ||||
| <view class="form-body"> | <view class="form-body"> | ||||
| <view class="flex flex-v-center flex-between"> | <view class="flex flex-v-center flex-between"> | ||||
| <view class="label"> | <view class="label"> | ||||
| <text>支部名称</text> | <text>支部名称</text> | ||||
| <text class="red">*</text> | |||||
| <text v-if="!disabled" class="red">*</text> | |||||
| </view> | </view> | ||||
| <view class="label-value flex flex-v-center"> | <view class="label-value flex flex-v-center"> | ||||
| <picker @change="bindPickerChange" range-key="label" :value="form.type" :range="columns"> | |||||
| <!-- <view style="color: #000000">{{ columns[form.type].label }}</view> --> | |||||
| </picker> | |||||
| <image class="ic-xia" src="/static/packages/people/images/ic-xia.png"></image> | |||||
| <block v-if="!disabled"> | |||||
| <picker @change="bindPickerChange" range-key="label" data-list="educationList" data-name="branchName" | |||||
| :value="form.branchName" :range="educationList"> | |||||
| <view style="color: #000000" v-if="form.branchName !== ''">{{ form.branchName }} | |||||
| </view> | |||||
| <view style="color: #999" v-if="form.branchName === ''">请选择支部名称</view> | |||||
| </picker> | |||||
| <image class="ic-xia" src="/static/packages/people/images/ic-xia.png"></image> | |||||
| </block> | |||||
| <block v-else> | |||||
| <view style="color: #000000" v-if="educationList.length !== 0">{{ form.branchName }} | |||||
| </view> | |||||
| </block> | |||||
| </view> | </view> | ||||
| </view> | </view> | ||||
| </view> | </view> | ||||
| @@ -30,59 +41,81 @@ | |||||
| <view class="form-body form-col"> | <view class="form-body form-col"> | ||||
| <view class="label"> | <view class="label"> | ||||
| <text>单位地址</text> | <text>单位地址</text> | ||||
| <text class="red">*</text> | |||||
| <text v-if="!disabled" class="red">*</text> | |||||
| </view> | </view> | ||||
| <input class="flex1 textarea-class" @input="headleInput" :value="form.name" type="text" data-name="name" | |||||
| placeholder="请输入" /> | |||||
| <input v-if="!disabled" class="flex1 textarea-class" @input="headleInput" :value="form.workAddress" type="text" | |||||
| data-name="workAddress" placeholder="请输入单位地址" /> | |||||
| <block v-else> | |||||
| {{form.workAddress}} | |||||
| </block> | |||||
| </view> | </view> | ||||
| <view class="form-body form-col"> | <view class="form-body form-col"> | ||||
| <view class="label"> | <view class="label"> | ||||
| <text>支部书记</text> | <text>支部书记</text> | ||||
| <text class="red">*</text> | |||||
| <text v-if="!disabled" class="red">*</text> | |||||
| </view> | </view> | ||||
| <input class="flex1 textarea-class" @input="headleInput" :value="form.name" type="text" data-name="name" | |||||
| placeholder="请输入" /> | |||||
| <input v-if="!disabled" class="flex1 textarea-class" @input="headleInput" :value="form.secretaryName" | |||||
| type="text" data-name="secretaryName" placeholder="请输入支部书记" /> | |||||
| <block v-else> | |||||
| {{form.secretaryName}} | |||||
| </block> | |||||
| </view> | </view> | ||||
| <view class="form-body form-col"> | <view class="form-body form-col"> | ||||
| <view class="label"> | <view class="label"> | ||||
| <text>联系方式</text> | <text>联系方式</text> | ||||
| <text class="red">*</text> | |||||
| <text v-if="!disabled" class="red">*</text> | |||||
| </view> | </view> | ||||
| <input class="flex1 textarea-class" @input="headleInput" :value="form.name" type="text" data-name="name" | |||||
| placeholder="请输入" /> | |||||
| <input v-if="!disabled" class="flex1 textarea-class" @input="headleInput" :value="form.secretaryMobile" | |||||
| type="text" data-name="secretaryMobile" placeholder="请输入联系方式" /> | |||||
| <block v-else> | |||||
| {{form.secretaryMobile}} | |||||
| </block> | |||||
| </view> | </view> | ||||
| <view class="form-body form-col"> | <view class="form-body form-col"> | ||||
| <view class="label"> | <view class="label"> | ||||
| <text>党建联系人</text> | <text>党建联系人</text> | ||||
| <text class="red">*</text> | |||||
| <text v-if="!disabled" class="red">*</text> | |||||
| </view> | </view> | ||||
| <input class="flex1 textarea-class" @input="headleInput" :value="form.name" type="text" data-name="name" | |||||
| placeholder="请输入" /> | |||||
| <input v-if="!disabled" class="flex1 textarea-class" @input="headleInput" :value="form.partyBuildName" | |||||
| type="text" data-name="partyBuildName" placeholder="请输入党建联系人" /> | |||||
| <block v-else> | |||||
| {{form.partyBuildName}} | |||||
| </block> | |||||
| </view> | </view> | ||||
| <view class="form-body form-col"> | <view class="form-body form-col"> | ||||
| <view class="label"> | <view class="label"> | ||||
| <text>联系方式</text> | <text>联系方式</text> | ||||
| <text class="red">*</text> | |||||
| <text v-if="!disabled" class="red">*</text> | |||||
| </view> | </view> | ||||
| <input class="flex1 textarea-class" @input="headleInput" :value="form.name" type="text" data-name="name" | |||||
| placeholder="请输入" /> | |||||
| <input v-if="!disabled" class="flex1 textarea-class" @input="headleInput" :value="form.partyBuildMobile" | |||||
| type="text" data-name="partyBuildMobile" placeholder="请输入联系方式" /> | |||||
| <block v-else> | |||||
| {{form.partyBuildMobile}} | |||||
| </block> | |||||
| </view> | </view> | ||||
| <view class="form-body"> | <view class="form-body"> | ||||
| <view class="flex flex-v-center flex-between"> | <view class="flex flex-v-center flex-between"> | ||||
| <view class="label"> | <view class="label"> | ||||
| <text>结对共建社区</text> | <text>结对共建社区</text> | ||||
| <text class="red">*</text> | |||||
| <text v-if="!disabled" class="red">*</text> | |||||
| </view> | </view> | ||||
| <view class="label-value flex flex-v-center"> | <view class="label-value flex flex-v-center"> | ||||
| <picker @change="bindPickerChange" range-key="label" :value="form.type" :range="columns"> | |||||
| <!-- <view style="color: #000000">{{ columns[form.type].label }}</view> --> | |||||
| </picker> | |||||
| <image class="ic-xia" src="/static/packages/people/images/ic-xia.png"></image> | |||||
| <block v-if="!disabled"> | |||||
| <view :class="form.communityId ? 'picker-line' : 'picker-text'" data-name="结对共建社区" @tap="onOpenVisible"> | |||||
| {{ form.communityName }} | |||||
| </view> | |||||
| <image class="ic-xia" src="/static/packages/people/images/ic-xia.png"></image> | |||||
| </block> | |||||
| <block v-else> | |||||
| {{form.communityName}} | |||||
| </block> | |||||
| </view> | </view> | ||||
| </view> | </view> | ||||
| </view> | </view> | ||||
| @@ -91,13 +124,18 @@ | |||||
| <view class="flex flex-v-center flex-between"> | <view class="flex flex-v-center flex-between"> | ||||
| <view class="label"> | <view class="label"> | ||||
| <text>结对共建小区</text> | <text>结对共建小区</text> | ||||
| <text class="red">*</text> | |||||
| <text v-if="!disabled" class="red">*</text> | |||||
| </view> | </view> | ||||
| <view class="label-value flex flex-v-center"> | <view class="label-value flex flex-v-center"> | ||||
| <picker @change="bindPickerChange" range-key="label" :value="form.type" :range="columns"> | |||||
| <!-- <view style="color: #000000">{{ columns[form.type].label }}</view> --> | |||||
| </picker> | |||||
| <image class="ic-xia" src="/static/packages/people/images/ic-xia.png"></image> | |||||
| <block v-if="!disabled"> | |||||
| <view :class="form.villageId ? 'picker-line' : 'picker-text'" data-name="结对共建小区" @tap="onOpenVisible"> | |||||
| {{ form.villageName }} | |||||
| </view> | |||||
| <image class="ic-xia" src="/static/packages/people/images/ic-xia.png"></image> | |||||
| </block> | |||||
| <block v-else> | |||||
| {{form.villageName}} | |||||
| </block> | |||||
| </view> | </view> | ||||
| </view> | </view> | ||||
| </view> | </view> | ||||
| @@ -105,64 +143,251 @@ | |||||
| <view class="form-body form-col"> | <view class="form-body form-col"> | ||||
| <view class="label"> | <view class="label"> | ||||
| <text>支部党员人数</text> | <text>支部党员人数</text> | ||||
| <text class="red">*</text> | |||||
| <text v-if="!disabled" class="red">*</text> | |||||
| </view> | </view> | ||||
| <input class="flex1 textarea-class" @input="headleInput" :value="form.name" type="text" data-name="name" | |||||
| placeholder="请输入" /> | |||||
| <input class="flex1 textarea-class" v-if="!disabled" @input="headleInput" :value="form.partyMemberNum" | |||||
| type="text" data-name="partyMemberNum" placeholder="请输入支部党员人数" /> | |||||
| <block v-else> | |||||
| {{form.partyMemberNum}} | |||||
| </block> | |||||
| </view> | </view> | ||||
| <view class="form-button"> | <view class="form-button"> | ||||
| <van-button v-if="checked" @click="submit" block color="#FE3B53">提交</van-button> | |||||
| <van-button v-else disabled block color="#C1C1C1">提交</van-button> | |||||
| <block v-if="!disabled"> | |||||
| <block v-if="options.userid === undefined"> | |||||
| <van-button v-if="checked" @click="handSubmit" data-name="新增" block color="#FE3B53">提交</van-button> | |||||
| <van-button v-else block color="#D9E2EE">提交</van-button> | |||||
| </block> | |||||
| <block v-else> | |||||
| <van-button @click="handSubmit" data-name="修改" block color="#FE3B53">提交</van-button> | |||||
| </block> | |||||
| </block> | |||||
| <block v-else> | |||||
| <van-button @click="headerEite" block color="#FE3B53">编辑</van-button> | |||||
| </block> | |||||
| </view> | </view> | ||||
| </view> | </view> | ||||
| <van-popup v-model:show="isVisible" round position="bottom"> | |||||
| <van-cascader v-model="currentValue" :title="cascaderTitle" :options="optionData" :field-names="defaultFieldNames" | |||||
| @finish="onCloseVisible" @close="onCloseVisible" @change="onChangeVisible" /> | |||||
| </van-popup> | |||||
| </view> | </view> | ||||
| </template> | </template> | ||||
| <script> | <script> | ||||
| import * as peopleApi from '@/api/peopleApi'; | |||||
| import * as publicApi from '@/api/publicApi'; | |||||
| import utils from '@/utils/util' | |||||
| import util from '@/utils/util.map' | |||||
| import { | |||||
| Form | |||||
| } from 'vant'; | |||||
| export default { | export default { | ||||
| data() { | data() { | ||||
| return { | return { | ||||
| form: {}, | |||||
| columns: [], | |||||
| fileList: [], | |||||
| checked: '1', | |||||
| options: {}, | |||||
| disabled: false, | |||||
| form: { | |||||
| workName: '', | |||||
| branchName: '', | |||||
| workAddress: '', | |||||
| secretaryName: '', | |||||
| secretaryMobile: '', | |||||
| partyBuildName: '', | |||||
| partyBuildMobile: '', | |||||
| communityId: '', | |||||
| communityName: '请选择结对共建社区', | |||||
| villageId: '', | |||||
| villageName: '请选择结对共建小区', | |||||
| partyMemberNum: '', | |||||
| }, | |||||
| minDate: new Date(2020, 0, 1), | |||||
| maxDate: new Date(2025, 5, 1), | |||||
| educationList: [], | |||||
| checked: false, | |||||
| // 级连选择器数据 start | |||||
| cascaderTitle: '', | |||||
| isVisible: false, | |||||
| FiledVisible: true, | |||||
| optionData: [], | |||||
| currentTile: '请选择', | |||||
| // 选择后的名称 | |||||
| currentValue: null, | |||||
| // 选择后的id | |||||
| // 级联选择默认显示字段 | |||||
| // 级连选择器数据 end | |||||
| defaultFieldNames: { | |||||
| text: 'name', | |||||
| value: 'id', | |||||
| children: 'children' | |||||
| }, | |||||
| } | } | ||||
| }, | }, | ||||
| methods: { | |||||
| bindPickerChange() { | |||||
| onLoad(options) { | |||||
| this.options = options | |||||
| this.getTypeApi('people_party_organization_branch', 'educationList'); | |||||
| this.deptTreeApi(); | |||||
| if (options.userid !== undefined) { | |||||
| this.disabled = true | |||||
| this.partyOrganizationInfo(); | |||||
| } | |||||
| }, | |||||
| methods: { | |||||
| async partyOrganizationInfo() { | |||||
| const res = await peopleApi.partyOrganizationInfoApi({}); | |||||
| if (res.data) { | |||||
| this.form = res.data | |||||
| } | |||||
| }, | }, | ||||
| headleInput() { | |||||
| async deptTreeApi() { | |||||
| // 获取所在村/社区 | |||||
| const res = await publicApi.deptTreeApi(); | |||||
| if (res.data && res.data.length) { | |||||
| this.optionData = res.data | |||||
| } | |||||
| }, | |||||
| // 获取群众点单字典 | |||||
| async getTypeApi(dictType, list) { | |||||
| const res = await publicApi.getDictDataApi({ | |||||
| dictType: dictType, | |||||
| pageNo: 1, | |||||
| pageSize: 100, | |||||
| }); | |||||
| if (res.code === 0) { | |||||
| this[list] = res.data.list | |||||
| } | |||||
| }, | |||||
| bindPickerChange(e) { | |||||
| const { | |||||
| name, | |||||
| list | |||||
| } = e.target.dataset; | |||||
| if (name === 'branchName') { | |||||
| this.form[name] = this[list][e.detail.value].label | |||||
| } else { | |||||
| this.form[name] = e.detail.value | |||||
| } | |||||
| }, | }, | ||||
| async afterRead(event) { | |||||
| headleInput(event) { | |||||
| const { | const { | ||||
| file | |||||
| } = event; | |||||
| name | |||||
| } = event.target.dataset; | |||||
| this.form[name] = event.detail.value | |||||
| const res = await getApp().globalData.upload({ | |||||
| file | |||||
| }); | |||||
| if (res.code !== 0) { | |||||
| uni.showToast({ | |||||
| title: '上传图片失败', | |||||
| icon: 'none' | |||||
| if (name === 'partyMemberNum') { | |||||
| this.checked = true | |||||
| } | |||||
| }, | |||||
| onOpenVisible(e) { | |||||
| this.isVisible = true | |||||
| this.cascaderTitle = e.currentTarget.dataset.name | |||||
| }, | |||||
| onCloseVisible() { | |||||
| this.isVisible = false | |||||
| }, | |||||
| onChangeVisible(e) { | |||||
| if (this.cascaderTitle === '结对共建社区') { | |||||
| this.form.communityName = e.selectedOptions[e.tabIndex].name | |||||
| this.form.communityId = e.value | |||||
| } else { | |||||
| this.form.villageName = e.selectedOptions[e.tabIndex].name | |||||
| this.form.villageId = e.value | |||||
| } | |||||
| }, | |||||
| handSubmit(e) { | |||||
| // 校验必填字段 | |||||
| const formKey = Object.keys(utils.filterParams(this.form)); | |||||
| console.log(formKey) | |||||
| console.log(this.form) | |||||
| const required = [ | |||||
| 'workName', | |||||
| 'branchName', | |||||
| 'workAddress', | |||||
| 'secretaryName', | |||||
| 'secretaryMobile', | |||||
| 'partyBuildName', | |||||
| 'partyBuildMobile', | |||||
| 'partyMemberNum', | |||||
| 'communityId', | |||||
| 'villageId', | |||||
| ]; | |||||
| const isRequired = required.every((e) => formKey.includes(e)); | |||||
| if (!isRequired) { | |||||
| return wx.showToast({ | |||||
| title: '星号为必填!', | |||||
| icon: 'none', | |||||
| }); | }); | ||||
| return false; | |||||
| } | } | ||||
| // this.fileList.push({url:res.data}) | |||||
| this.appealEnclosure.push(res.data); | |||||
| const { | |||||
| name | |||||
| } = e.target.dataset; | |||||
| if (name === '修改') { | |||||
| console.log('修改'); | |||||
| this.addSubmitUpdate(); | |||||
| } else { | |||||
| this.addSubmit(); | |||||
| } | |||||
| }, | }, | ||||
| beforeDelete(file, dateil) { | |||||
| this.appealEnclosure.splice(dateil.index, 1); | |||||
| this.fileList.splice(dateil.index, 1) | |||||
| async addSubmitUpdate() { | |||||
| const res = await peopleApi.partyOrganizationUpdateApi(this.form); | |||||
| if (res.data) { | |||||
| wx.showToast({ | |||||
| title: '修改成功', | |||||
| icon: 'none', | |||||
| }); | |||||
| let time = setTimeout(() => { | |||||
| wx.navigateBack({ | |||||
| delta: 1, | |||||
| }); | |||||
| clearTimeout(time); | |||||
| }, 1500); | |||||
| } else { | |||||
| wx.showToast({ | |||||
| title: res.msg, | |||||
| icon: 'none', | |||||
| }); | |||||
| } | |||||
| }, | }, | ||||
| submit() { | |||||
| } | |||||
| async addSubmit() { | |||||
| const res = await peopleApi.partyOrganizationCreateApi(this.form); | |||||
| if (res.data) { | |||||
| wx.showToast({ | |||||
| title: '注册成功,请重新登录,获取权限功能', | |||||
| icon: 'none', | |||||
| }); | |||||
| let time = setTimeout(() => { | |||||
| wx.navigateBack({ | |||||
| delta: 1, | |||||
| }); | |||||
| clearTimeout(time); | |||||
| }, 1500); | |||||
| } else { | |||||
| wx.showToast({ | |||||
| title: res.msg, | |||||
| icon: 'none', | |||||
| }); | |||||
| } | |||||
| }, | |||||
| headerEite() { | |||||
| this.disabled = false | |||||
| }, | |||||
| } | } | ||||
| } | } | ||||
| </script> | </script> | ||||
| @@ -7,100 +7,144 @@ | |||||
| <view class="flex flex-v-center flex-between"> | <view class="flex flex-v-center flex-between"> | ||||
| <view class="label"> | <view class="label"> | ||||
| <text>所属党委</text> | <text>所属党委</text> | ||||
| <text class="red">*</text> | |||||
| <text class="red" v-if="!disabled">*</text> | |||||
| </view> | </view> | ||||
| <view class="label-value flex flex-v-center"> | <view class="label-value flex flex-v-center"> | ||||
| <picker @change="bindPickerChange" range-key="label" :value="form.type" :range="columns"> | |||||
| <!-- <view style="color: #000000">{{ columns[form.type].label }}</view> --> | |||||
| </picker> | |||||
| <image class="ic-xia" src="/static/packages/people/images/ic-xia.png"></image> | |||||
| <block v-if="!disabled"> | |||||
| <picker @change="bindPickerChange" data-name="partyOrganName" range-key="branchName" | |||||
| :value="form.partyOrganName" :range="partyOrganizationList"> | |||||
| <view style="color: #000000" v-if="form.partyOrganId !== ''">{{ form.partyOrganName }}</view> | |||||
| <view style="color: #999" v-if="form.partyOrganId === ''">请选择所属党委</view> | |||||
| </picker> | |||||
| <image class="ic-xia" src="/static/packages/people/images/ic-xia.png"></image> | |||||
| </block> | |||||
| <block v-else> | |||||
| {{form.partyOrganName}} | |||||
| </block> | |||||
| </view> | </view> | ||||
| </view> | </view> | ||||
| </view> | </view> | ||||
| <view class="form-body"> | |||||
| <view class="flex flex-v-center flex-between"> | |||||
| <view class="label"> | |||||
| <text>常住地社区</text> | |||||
| <text class="red">*</text> | |||||
| </view> | |||||
| <view class="label-value flex flex-v-center"> | |||||
| <picker @change="bindPickerChange" range-key="label" :value="form.type" :range="columns"> | |||||
| <!-- <view style="color: #000000">{{ columns[form.type].label }}</view> --> | |||||
| </picker> | |||||
| <image class="ic-xia" src="/static/packages/people/images/ic-xia.png"></image> | |||||
| </view> | |||||
| <view class="form-body form-col"> | |||||
| <view class="label"> | |||||
| <text>常住地社区</text> | |||||
| <text v-if="!disabled" class="red">*</text> | |||||
| </view> | |||||
| <view class="label-value picker flex flex-v-center flex-between"> | |||||
| <block v-if="!disabled"> | |||||
| <view :class="form.communityId ? 'picker-line' : 'picker-text'" data-name="常住地社区" @tap="onOpenVisible"> | |||||
| {{ form.communityName }} | |||||
| </view> | |||||
| <image class="ic-xia" src="/static/packages/people/images/ic-xia.png" @tap="onOpenVisible"></image> | |||||
| </block> | |||||
| <block v-else> | |||||
| {{ form.communityName }} | |||||
| </block> | |||||
| </view> | </view> | ||||
| </view> | </view> | ||||
| <view class="form-body form-col"> | <view class="form-body form-col"> | ||||
| <view class="label"> | <view class="label"> | ||||
| <text>常住小区</text> | <text>常住小区</text> | ||||
| <text class="red">*</text> | |||||
| <text v-if="!disabled" class="red">*</text> | |||||
| </view> | |||||
| <view class="label-value picker flex flex-v-center flex-between"> | |||||
| <block v-if="!disabled"> | |||||
| <view :class="form.villageId ? 'picker-line' : 'picker-text'" @tap="onOpenVisible">{{ form.villageName }} | |||||
| </view> | |||||
| <image class="ic-xia" src="/static/packages/people/images/ic-xia.png" @tap="onOpenVisible"></image> | |||||
| </block> | |||||
| <block v-else> | |||||
| {{form.villageName}} | |||||
| </block> | |||||
| </view> | </view> | ||||
| <input class="flex1 textarea-class" @input="headleInput" :value="form.name" type="text" data-name="name" | |||||
| placeholder="请输入" /> | |||||
| </view> | </view> | ||||
| <view class="flex"> | <view class="flex"> | ||||
| <view class="form-body form-col"> | <view class="form-body form-col"> | ||||
| <view class="label"> | <view class="label"> | ||||
| <text>楼栋(街)</text> | <text>楼栋(街)</text> | ||||
| <text class="red">*</text> | |||||
| <text v-if="!disabled" class="red">*</text> | |||||
| </view> | </view> | ||||
| <input class="flex1 textarea-class" @input="headleInput" :value="form.name" type="text" data-name="name" | |||||
| placeholder="请输入" /> | |||||
| <block v-if="!disabled"> | |||||
| <input class="flex1 textarea-class" @input="headleInput" :value="form.street" type="text" data-name="street" | |||||
| placeholder="请输入" /> | |||||
| </block> | |||||
| <block v-else> | |||||
| {{form.street}} | |||||
| </block> | |||||
| </view> | </view> | ||||
| <view class="form-body form-col"> | <view class="form-body form-col"> | ||||
| <view class="label"> | <view class="label"> | ||||
| <text>单元(巷)</text> | <text>单元(巷)</text> | ||||
| <text class="red">*</text> | |||||
| <text v-if="!disabled" class="red">*</text> | |||||
| </view> | </view> | ||||
| <input class="flex1 textarea-class" @input="headleInput" :value="form.name" type="text" data-name="name" | |||||
| placeholder="请输入" /> | |||||
| <input v-if="!disabled" class="flex1 textarea-class" @input="headleInput" :value="form.lane" type="text" | |||||
| data-name="lane" placeholder="请输入" /> | |||||
| <block v-else> | |||||
| {{form.lane}} | |||||
| </block> | |||||
| </view> | </view> | ||||
| </view> | </view> | ||||
| <view class="form-body form-col"> | <view class="form-body form-col"> | ||||
| <view class="label"> | <view class="label"> | ||||
| <text>房号</text> | <text>房号</text> | ||||
| <text class="red">*</text> | |||||
| <text v-if="!disabled" class="red">*</text> | |||||
| </view> | </view> | ||||
| <input class="flex1 textarea-class pd-left" @input="headleInput" :value="form.name" type="text" data-name="name" | |||||
| placeholder="请输入" /> | |||||
| <input v-if="!disabled" class="flex1 textarea-class pd-left" @input="headleInput" :value="form.houseCode" | |||||
| type="text" data-name="houseCode" placeholder="请输入" /> | |||||
| <block v-else> | |||||
| {{form.houseCode}} | |||||
| </block> | |||||
| </view> | </view> | ||||
| <view class="form-body form-col"> | <view class="form-body form-col"> | ||||
| <view class="label"> | <view class="label"> | ||||
| <text>姓名</text> | <text>姓名</text> | ||||
| <text class="red">*</text> | |||||
| <text v-if="!disabled" class="red">*</text> | |||||
| </view> | </view> | ||||
| <input class="flex1 textarea-class" @input="headleInput" :value="form.name" type="text" data-name="name" | |||||
| placeholder="请输入" /> | |||||
| <input v-if="!disabled" class="flex1 textarea-class" @input="headleInput" :value="form.name" type="text" | |||||
| data-name="name" placeholder="请输入" /> | |||||
| <block v-else> | |||||
| {{form.name}} | |||||
| </block> | |||||
| </view> | </view> | ||||
| <view class="form-body form-col"> | <view class="form-body form-col"> | ||||
| <view class="label"> | <view class="label"> | ||||
| <text>性别</text> | <text>性别</text> | ||||
| <text class="red">*</text> | |||||
| <text v-if="!disabled" class="red">*</text> | |||||
| </view> | </view> | ||||
| <van-radio-group v-model="checked" shape="dot" direction="horizontal"> | |||||
| <van-radio name="1" icon-size="32rpx" checked-color="#FE3B53">男</van-radio> | |||||
| <van-radio name="2" icon-size="32rpx" checked-color="#FE3B53">女</van-radio> | |||||
| </van-radio-group> | |||||
| <block v-if="!disabled"> | |||||
| <van-radio-group v-model="form.sex" data-name="sex" shape="dot" direction="horizontal"> | |||||
| <van-radio :name="1" icon-size="32rpx" checked-color="#FE3B53">男</van-radio> | |||||
| <van-radio :name="2" icon-size="32rpx" checked-color="#FE3B53">女</van-radio> | |||||
| </van-radio-group> | |||||
| </block> | |||||
| <block v-else> | |||||
| {{form.sex=== 1 ? '男' : '女'}} | |||||
| </block> | |||||
| </view> | </view> | ||||
| <view class="form-body"> | <view class="form-body"> | ||||
| <view class="flex flex-v-center flex-between"> | <view class="flex flex-v-center flex-between"> | ||||
| <view class="label"> | <view class="label"> | ||||
| <text>出生年月</text> | <text>出生年月</text> | ||||
| <text class="red">*</text> | |||||
| <text v-if="!disabled" class="red">*</text> | |||||
| </view> | </view> | ||||
| <view class="label-value flex flex-v-center"> | <view class="label-value flex flex-v-center"> | ||||
| <picker @change="bindPickerChange" range-key="label" :value="form.type" :range="columns"> | |||||
| <!-- <view style="color: #000000">{{ columns[form.type].label }}</view> --> | |||||
| </picker> | |||||
| <image class="ic-xia" src="/static/packages/people/images/ic-xia.png"></image> | |||||
| <block v-if="!disabled"> | |||||
| <picker mode="date" :value="form.birthDate" :start="startDate" data-name="birthDate" :end="endDate" | |||||
| @change="bindPickerChange"> | |||||
| <view class="uni-input" v-if="form.birthDate !== ''">{{form.birthDate}}</view> | |||||
| <view class="uni-input" style="color: #999;" v-if="form.birthDate === ''">请选择出生年月</view> | |||||
| </picker> | |||||
| <image class="ic-xia" src="/static/packages/people/images/ic-xia.png"></image> | |||||
| </block> | |||||
| <block v-else> | |||||
| {{getDateTime(form.birthDate)}} | |||||
| </block> | |||||
| </view> | </view> | ||||
| </view> | </view> | ||||
| </view> | </view> | ||||
| @@ -109,13 +153,22 @@ | |||||
| <view class="flex flex-v-center flex-between"> | <view class="flex flex-v-center flex-between"> | ||||
| <view class="label"> | <view class="label"> | ||||
| <text>学历</text> | <text>学历</text> | ||||
| <text class="red">*</text> | |||||
| <text v-if="!disabled" class="red">*</text> | |||||
| </view> | </view> | ||||
| <view class="label-value flex flex-v-center"> | <view class="label-value flex flex-v-center"> | ||||
| <picker @change="bindPickerChange" range-key="label" :value="form.type" :range="columns"> | |||||
| <!-- <view style="color: #000000">{{ columns[form.type].label }}</view> --> | |||||
| </picker> | |||||
| <image class="ic-xia" src="/static/packages/people/images/ic-xia.png"></image> | |||||
| <block v-if="!disabled"> | |||||
| <picker @change="bindPickerChange" range-key="label" data-name="education" :value="form.education" | |||||
| :range="educationList"> | |||||
| <view style="color: #000000" v-if="form.education !== ''">{{ educationList[form.education].label }} | |||||
| </view> | |||||
| <view style="color: #999" v-if="form.education === ''">请选择</view> | |||||
| </picker> | |||||
| <image class="ic-xia" src="/static/packages/people/images/ic-xia.png"></image> | |||||
| </block> | |||||
| <block v-else> | |||||
| <view style="color: #000000" v-if="educationList.length !== 0">{{ educationList[form.education].label }} | |||||
| </view> | |||||
| </block> | |||||
| </view> | </view> | ||||
| </view> | </view> | ||||
| </view> | </view> | ||||
| @@ -123,81 +176,308 @@ | |||||
| <view class="form-body form-col"> | <view class="form-body form-col"> | ||||
| <view class="label"> | <view class="label"> | ||||
| <text>工作单位</text> | <text>工作单位</text> | ||||
| <text class="red">*</text> | |||||
| <text v-if="!disabled" class="red">*</text> | |||||
| </view> | </view> | ||||
| <input class="flex1 textarea-class" @input="headleInput" :value="form.name" type="text" data-name="name" | |||||
| placeholder="请输入" /> | |||||
| <input v-if="!disabled" class="flex1 textarea-class" @input="headleInput" :value="form.workAddress" type="text" | |||||
| data-name="workAddress" placeholder="请输入" /> | |||||
| <block v-else> | |||||
| {{form.workAddress}} | |||||
| </block> | |||||
| </view> | </view> | ||||
| <view class="form-body form-col"> | <view class="form-body form-col"> | ||||
| <view class="label"> | <view class="label"> | ||||
| <text>职务</text> | <text>职务</text> | ||||
| <text class="red">*</text> | |||||
| <text v-if="!disabled" class="red">*</text> | |||||
| </view> | </view> | ||||
| <input class="flex1 textarea-class" @input="headleInput" :value="form.name" type="text" data-name="name" | |||||
| placeholder="请输入" /> | |||||
| <input v-if="!disabled" class="flex1 textarea-class" @input="headleInput" :value="form.duties" type="text" | |||||
| data-name="duties" placeholder="请输入" /> | |||||
| <block v-else>{{form.duties}}</block> | |||||
| </view> | </view> | ||||
| <view class="form-body form-col"> | <view class="form-body form-col"> | ||||
| <view class="label"> | <view class="label"> | ||||
| <text>联系方式</text> | <text>联系方式</text> | ||||
| <text class="red">*</text> | |||||
| <text v-if="!disabled" class="red">*</text> | |||||
| </view> | </view> | ||||
| <input class="flex1 textarea-class" @input="headleInput" :value="form.name" type="text" data-name="name" | |||||
| placeholder="请输入" /> | |||||
| <input v-if="!disabled" class="flex1 textarea-class" @input="headleInput" :value="form.mobile" type="text" | |||||
| data-name="mobile" placeholder="请输入" /> | |||||
| <block v-else>{{form.mobile}}</block> | |||||
| </view> | </view> | ||||
| <view class="form-button"> | <view class="form-button"> | ||||
| <van-button v-if="checked" @click="submit" block color="#FE3B53">提交</van-button> | |||||
| <van-button v-else disabled block color="#C1C1C1">提交</van-button> | |||||
| <block v-if="!disabled"> | |||||
| <block v-if="options.userid === undefined"> | |||||
| <van-button v-if="checked" @click="handSubmit" data-name="新增" block color="#FE3B53">提交</van-button> | |||||
| <van-button v-else block color="#D9E2EE">提交</van-button> | |||||
| </block> | |||||
| <block v-else> | |||||
| <van-button @click="handSubmit" data-name="修改" block color="#FE3B53">提交</van-button> | |||||
| </block> | |||||
| </block> | |||||
| <block v-else> | |||||
| <van-button @click="headerEite" block color="#FE3B53">编辑</van-button> | |||||
| </block> | |||||
| </view> | </view> | ||||
| </view> | </view> | ||||
| <van-popup v-model:show="isVisible" round position="bottom"> | |||||
| <van-cascader v-model="currentValue" :title="cascaderTitle" :options="optionData" :field-names="defaultFieldNames" | |||||
| @finish="onCloseVisible" @close="onCloseVisible" @change="onChangeVisible" /> | |||||
| </van-popup> | |||||
| </view> | </view> | ||||
| </template> | </template> | ||||
| <script> | <script> | ||||
| import * as peopleApi from '@/api/peopleApi'; | |||||
| import * as publicApi from '@/api/publicApi'; | |||||
| import utils from '@/utils/util' | |||||
| import util from '@/utils/util.map' | |||||
| export default { | export default { | ||||
| data() { | data() { | ||||
| const currentDate = this.getDate({ | |||||
| format: true | |||||
| }) | |||||
| return { | return { | ||||
| form: {}, | |||||
| options: {}, | |||||
| disabled: false, | |||||
| form: { | |||||
| partyOrganId: '', | |||||
| partyOrganName: '', | |||||
| street: '', | |||||
| lane: '', | |||||
| houseCode: '', | |||||
| name: '', | |||||
| sex: '1', | |||||
| birthDate: '', | |||||
| education: '', | |||||
| workAddress: '', | |||||
| duties: '', | |||||
| mobile: '', | |||||
| communityId: '', | |||||
| communityName: '请选择', | |||||
| villageId: '', | |||||
| villageName: '请选择', | |||||
| }, | |||||
| minDate: new Date(2020, 0, 1), | |||||
| maxDate: new Date(2025, 5, 1), | |||||
| columns: [], | columns: [], | ||||
| educationList: [], | |||||
| fileList: [], | fileList: [], | ||||
| checked: '1', | checked: '1', | ||||
| partyOrganizationList: [], | |||||
| // 级连选择器数据 start | |||||
| cascaderTitle: '', | |||||
| isVisible: false, | |||||
| FiledVisible: true, | |||||
| optionData: [], | |||||
| currentTile: '请选择', | |||||
| // 选择后的名称 | |||||
| currentValue: null, | |||||
| // 选择后的id | |||||
| // 级联选择默认显示字段 | |||||
| // 级连选择器数据 end | |||||
| defaultFieldNames: { | |||||
| text: 'name', | |||||
| value: 'id', | |||||
| children: 'children' | |||||
| }, | |||||
| } | |||||
| }, | |||||
| computed: { | |||||
| startDate() { | |||||
| return this.getDate('start'); | |||||
| }, | |||||
| endDate() { | |||||
| return this.getDate('end'); | |||||
| } | |||||
| }, | |||||
| async onLoad(options) { | |||||
| this.options = options | |||||
| this.getTypeApi('people_party_member_education', 'educationList'); | |||||
| this.deptTreeApi(); | |||||
| this.partyOrganizationAll(); | |||||
| if (options.userid !== undefined) { | |||||
| this.disabled = true | |||||
| this.partyOrganizationInfo(); | |||||
| } | } | ||||
| }, | }, | ||||
| methods: { | methods: { | ||||
| bindPickerChange() { | |||||
| getDateTime(time) { | |||||
| return util.getDateTime(time, 2) | |||||
| }, | |||||
| headerEite() { | |||||
| this.disabled = false | |||||
| }, | |||||
| async partyOrganizationInfo() { | |||||
| const res = await peopleApi.partyMemberInfoApi({}); | |||||
| if (res.data) { | |||||
| this.form = res.data | |||||
| } | |||||
| }, | |||||
| async deptTreeApi() { | |||||
| // 获取所在村/社区 | |||||
| const res = await publicApi.deptTreeApi(); | |||||
| if (res.data && res.data.length) { | |||||
| this.optionData = res.data | |||||
| } | |||||
| }, | |||||
| async partyOrganizationAll() { | |||||
| const res = await peopleApi.partyOrganizationAllApi(); | |||||
| if (res.data) { | |||||
| this.partyOrganizationList = res.data | |||||
| } | |||||
| }, | |||||
| // 获取群众点单字典 | |||||
| async getTypeApi(dictType, list) { | |||||
| const vm = this; | |||||
| const res = await publicApi.getDictDataApi({ | |||||
| dictType: dictType, | |||||
| pageNo: 1, | |||||
| pageSize: 100 | |||||
| }); | |||||
| if (res.code === 0) { | |||||
| vm[list] = res.data.list | |||||
| } | |||||
| }, | |||||
| bindPickerChange(e) { | |||||
| let name = e.target.dataset.name | |||||
| if (name === 'partyOrganName') { | |||||
| this.form.partyOrganId = this.partyOrganizationList[e.detail.value].id | |||||
| this.form.partyOrganName = this.partyOrganizationList[e.detail.value].branchName | |||||
| } else { | |||||
| this.form[name] = e.detail.value | |||||
| } | |||||
| }, | |||||
| headleInput(event) { | |||||
| const { | |||||
| value | |||||
| } = event.detail; | |||||
| let name = event.target.dataset.name | |||||
| this.form[name] = value; | |||||
| }, | |||||
| handSubmit(event) { | |||||
| // 校验必填字段 | |||||
| console.log(this.form) | |||||
| const formKey = Object.keys(utils.filterParams(this.form)); | |||||
| console.log("formKey", formKey) | |||||
| const required = [ | |||||
| 'partyOrganId', | |||||
| 'communityId', | |||||
| 'villageId', | |||||
| 'street', | |||||
| 'lane', | |||||
| 'houseCode', | |||||
| 'name', | |||||
| 'sex', | |||||
| 'birthDate', | |||||
| 'education', | |||||
| 'workAddress', | |||||
| 'duties', | |||||
| 'mobile', | |||||
| ]; | |||||
| const isRequired = required.every((e) => formKey.includes(e)); | |||||
| if (!isRequired) { | |||||
| return wx.showToast({ | |||||
| title: '星号为必填!', | |||||
| icon: 'none', | |||||
| }); | |||||
| } | |||||
| const { | |||||
| name | |||||
| } = event.target.dataset; | |||||
| console.log(name) | |||||
| if (name === '修改') { | |||||
| console.log('修改'); | |||||
| this.addSubmitUpdate(); | |||||
| } else { | |||||
| this.addSubmit(); | |||||
| } | |||||
| }, | }, | ||||
| headleInput() { | |||||
| async addSubmitUpdate() { | |||||
| const res = await peopleApi.partyMemberUpdate(this.form); | |||||
| if (res.data) { | |||||
| wx.showToast({ | |||||
| title: '修改成功', | |||||
| icon: 'none', | |||||
| }); | |||||
| let time = setTimeout(() => { | |||||
| wx.navigateBack({ | |||||
| delta: 1, | |||||
| }); | |||||
| clearTimeout(time); | |||||
| }, 1500); | |||||
| } else { | |||||
| wx.showToast({ | |||||
| title: res.msg, | |||||
| icon: 'none', | |||||
| }); | |||||
| } | |||||
| }, | }, | ||||
| async afterRead(event) { | |||||
| const { | |||||
| file | |||||
| } = event; | |||||
| async addSubmit() { | |||||
| const res = await peopleApi.partyMemberCreate(this.form); | |||||
| if (res.data) { | |||||
| wx.showToast({ | |||||
| title: '注册成功,请重新登录,获取权限功能', | |||||
| icon: 'none', | |||||
| }); | |||||
| const res = await getApp().globalData.upload({ | |||||
| file | |||||
| }); | |||||
| if (res.code !== 0) { | |||||
| uni.showToast({ | |||||
| title: '上传图片失败', | |||||
| icon: 'none' | |||||
| let time = setTimeout(() => { | |||||
| wx.navigateBack({ | |||||
| delta: 1, | |||||
| }); | |||||
| clearTimeout(time); | |||||
| }, 1500); | |||||
| } else { | |||||
| wx.showToast({ | |||||
| title: res.msg, | |||||
| icon: 'none', | |||||
| }); | }); | ||||
| return false; | |||||
| } | } | ||||
| // this.fileList.push({url:res.data}) | |||||
| this.appealEnclosure.push(res.data); | |||||
| }, | }, | ||||
| beforeDelete(file, dateil) { | |||||
| this.appealEnclosure.splice(dateil.index, 1); | |||||
| this.fileList.splice(dateil.index, 1) | |||||
| getDate(type) { | |||||
| const date = new Date(); | |||||
| let year = date.getFullYear(); | |||||
| let month = date.getMonth() + 1; | |||||
| let day = date.getDate(); | |||||
| if (type === 'start') { | |||||
| year = year - 60; | |||||
| } else if (type === 'end') { | |||||
| year = year + 2; | |||||
| } | |||||
| month = month > 9 ? month : '0' + month; | |||||
| day = day > 9 ? day : '0' + day; | |||||
| return `${year}-${month}-${day}`; | |||||
| }, | |||||
| onCheckbox(event) { | |||||
| this.checked = event | |||||
| }, | |||||
| onOpenVisible(e) { | |||||
| this.isVisible = true | |||||
| this.cascaderTitle = e.currentTarget.dataset.name | |||||
| }, | }, | ||||
| submit() { | |||||
| onCloseVisible() { | |||||
| this.isVisible = false | |||||
| }, | |||||
| onChangeVisible(e) { | |||||
| if (this.cascaderTitle === '常住地社区') { | |||||
| this.form.communityName = e.selectedOptions[e.tabIndex].name | |||||
| this.form.communityId = e.value | |||||
| } else { | |||||
| this.form.villageName = e.selectedOptions[e.tabIndex].name | |||||
| this.form.villageId = e.value | |||||
| } | |||||
| } | } | ||||
| } | } | ||||
| } | } | ||||
| @@ -4,40 +4,42 @@ | |||||
| <view class="detail"> | <view class="detail"> | ||||
| <view class="detail-bg"> | <view class="detail-bg"> | ||||
| <view>标题标题标题标题标题标题标题标</view> | |||||
| <view class="type">申领中</view> | |||||
| <view class="detail-heade"> | |||||
| <image class="image" src="../../../../static/logo.png" mode=""></image> | |||||
| <text class="nickname">张无忌</text> | |||||
| <view class="msg">党员志愿服务</view> | |||||
| <view class="multi-line" style="width: 80%;">{{detaileObj.title}}</view> | |||||
| <view :class="`type${detaileObj.serviceStatus}`">{{getStatusText(statusList,detaileObj.serviceStatus)}} | |||||
| </view> | |||||
| <view class=" detail-heade"> | |||||
| <image class="image" :src="detaileObj.avatar" mode=""></image> | |||||
| <text class="nickname">{{detaileObj.nickName}}</text> | |||||
| <view class="msg">{{getStatusText(projectTypeList,detaileObj.serviceType)}}</view> | |||||
| </view> | </view> | ||||
| </view> | </view> | ||||
| <view class="conent">惠苑路社区西南角,家乐福超市对面xxxx</view> | |||||
| <view class="conent">{{detaileObj.content}}</view> | |||||
| <view class="detail-grid"> | <view class="detail-grid"> | ||||
| <block v-for="(item,index) in 9" :key="index"> | |||||
| <image src="/src/static/logo.png" mode=""></image> | |||||
| <block v-for="(item,index) in detaileObj.pics" :key="index"> | |||||
| <image @click="previewImage(item,index)" :src="item"></image> | |||||
| </block> | </block> | ||||
| </view> | </view> | ||||
| <view class="validity">申领有效期:<text class="time">2023-11-02~2023-12-0</text></view> | |||||
| <view class="validity">申领有效期:<text | |||||
| class="time">{{getDateTime(detaileObj.createTime)}}~{{getDateTime(detaileObj.effectDate)}}</text></view> | |||||
| <view class="flex-between"> | <view class="flex-between"> | ||||
| <text class="title-name">志愿服务</text> | <text class="title-name">志愿服务</text> | ||||
| <text class="num"><text class="action">90</text>/90</text> | |||||
| <text class="num"><text class="action">{{total}}</text>/{{detaileObj.needNum}}</text> | |||||
| </view> | </view> | ||||
| <view class="user"> | <view class="user"> | ||||
| <block v-for="item in 10" :key="item"> | |||||
| <block v-for="item in applyVolunteerProjec" :key="item"> | |||||
| <view class="user-item"> | <view class="user-item"> | ||||
| <image class="user-image" src="/src/static/logo.png"></image> | |||||
| <text class="nickname">张文远</text> | |||||
| <image class="user-image" :src="item.avatar"></image> | |||||
| <text class="nickname">{{item.userName}}</text> | |||||
| </view> | </view> | ||||
| </block> | </block> | ||||
| </view> | </view> | ||||
| <view class="but">申领</view> | |||||
| <view class="but" v-if="detaileObj.serviceStatus !== 2" @click="applyFor">申领</view> | |||||
| </view> | </view> | ||||
| <view style="height: 50rpx;"></view> | <view style="height: 50rpx;"></view> | ||||
| @@ -45,14 +47,100 @@ | |||||
| </template> | </template> | ||||
| <script> | <script> | ||||
| import * as peopleApi from '@/api/peopleApi'; | |||||
| import * as publicApi from '@/api/publicApi'; | |||||
| import utils from '@/utils/util.map' | |||||
| export default { | export default { | ||||
| data() { | data() { | ||||
| return { | return { | ||||
| options: {}, | |||||
| detaileObj: {}, | |||||
| statusList: [], | |||||
| projectTypeList: [], | |||||
| educationList: [], | |||||
| total: 0, | |||||
| applyVolunteerProjec: [], | |||||
| } | } | ||||
| }, | }, | ||||
| onLoad(options) { | |||||
| this.options = options | |||||
| this.getTypeApi('people_volunteer_project_type', 'projectTypeList'); | |||||
| this.getTypeApi('people_volunteer_project_serviceStatus', 'statusList'); | |||||
| this.getVolunteerProject(); | |||||
| this.applyVolunteerProjecPageApi(); | |||||
| }, | |||||
| methods: { | methods: { | ||||
| getStatusText(list, key) { | |||||
| return utils.getStatusText(list, key) | |||||
| }, | |||||
| getDateTime(time) { | |||||
| return utils.getDateTime(time, 4) | |||||
| }, | |||||
| // 获取群众点单字典 | |||||
| async getTypeApi(dictType, list) { | |||||
| const res = await publicApi.getDictDataApi({ | |||||
| dictType: dictType, | |||||
| pageNo: 1, | |||||
| pageSize: 100, | |||||
| }); | |||||
| if (res.code === 0) { | |||||
| this[list] = res.data.list; | |||||
| } | |||||
| }, | |||||
| async getVolunteerProject() { | |||||
| const res = await peopleApi.getVolunteerProjectApi({ | |||||
| id: this.options.id, | |||||
| }); | |||||
| if (res.data) { | |||||
| this.detaileObj = res.data | |||||
| } | |||||
| }, | |||||
| async applyVolunteerProjecPageApi() { | |||||
| const res = await peopleApi.applyVolunteerProjecPageApi({ | |||||
| volunteerProjectId: this.options.id, | |||||
| pageSize: 100, | |||||
| pageNo: 1, | |||||
| }); | |||||
| if (res.data) { | |||||
| this.applyVolunteerProjec = res.data.list | |||||
| this.total = res.data.total | |||||
| } | |||||
| }, | |||||
| previewImage(item, index) { | |||||
| uni.previewImage({ | |||||
| current: item, | |||||
| urls: this.detaileObj.pics, | |||||
| }); | |||||
| }, | |||||
| async applyFor() { | |||||
| const res = await peopleApi.applyVolunteerProjecCreateApi({ | |||||
| volunteerProjectId: this.options.id, | |||||
| userId: uni.getStorageSync('userInfoData').userId, | |||||
| }); | |||||
| if (res.data) { | |||||
| const { | |||||
| applyVolunteerProjec | |||||
| } = this; | |||||
| let appitme = []; | |||||
| appitme.push({ | |||||
| userName: uni.getStorageSync('userInfoData').nickName, | |||||
| avatar: uni.getStorageSync('userInfoData').avatar, | |||||
| }), | |||||
| applyVolunteerProjec.push(...appitme); | |||||
| uni.showToast({ | |||||
| title: '申领成功', | |||||
| icon: 'none', | |||||
| }); | |||||
| this.applyVolunteerProjec = applyVolunteerProjec | |||||
| this.total = this.total + 1 | |||||
| } else { | |||||
| uni.showToast({ | |||||
| title: res.msg, | |||||
| icon: 'none', | |||||
| }); | |||||
| } | |||||
| }, | |||||
| } | } | ||||
| } | } | ||||
| </script> | </script> | ||||
| @@ -135,7 +223,7 @@ | |||||
| } | } | ||||
| } | } | ||||
| .type { | |||||
| .type0 { | |||||
| position: absolute; | position: absolute; | ||||
| top: 0; | top: 0; | ||||
| right: 0; | right: 0; | ||||
| @@ -147,6 +235,19 @@ | |||||
| padding: 12rpx 22rpx 12rpx 36rpx; | padding: 12rpx 22rpx 12rpx 36rpx; | ||||
| } | } | ||||
| .type1 { | |||||
| position: absolute; | |||||
| top: 0; | |||||
| right: 0; | |||||
| background: linear-gradient(270deg, #5B638E 0%, #7B96BF 100%); | |||||
| border-radius: 0px 8rpx 0px 1000rpx; | |||||
| font-size: 24rpx; | |||||
| font-weight: 400; | |||||
| color: #fff; | |||||
| padding: 12rpx 22rpx 12rpx 36rpx; | |||||
| } | |||||
| .title-name { | .title-name { | ||||
| display: inline-block; | display: inline-block; | ||||
| position: relative; | position: relative; | ||||
| @@ -187,16 +288,18 @@ | |||||
| } | } | ||||
| .user { | .user { | ||||
| width: 100%; | |||||
| margin-top: 48rpx; | margin-top: 48rpx; | ||||
| display: grid; | display: grid; | ||||
| align-items: center; | align-items: center; | ||||
| grid-template-columns: repeat(4, 1fr); | grid-template-columns: repeat(4, 1fr); | ||||
| grid-gap: 12rpx; | grid-gap: 12rpx; | ||||
| padding-right: 10rpx; | |||||
| .user-item { | .user-item { | ||||
| background: linear-gradient(90deg, #FFD9DA 0%, #FF8C8F 100%); | background: linear-gradient(90deg, #FFD9DA 0%, #FF8C8F 100%); | ||||
| border-radius: 232132318px; | border-radius: 232132318px; | ||||
| padding: 12rpx 16rpx; | |||||
| padding: 12rpx 10rpx 12rpx 16rpx; | |||||
| display: flex; | display: flex; | ||||
| align-items: center; | align-items: center; | ||||
| @@ -7,54 +7,68 @@ | |||||
| <view class="party-grid"> | <view class="party-grid"> | ||||
| <block v-for="(item,index) in recursionTwoObj" :key="index"> | <block v-for="(item,index) in recursionTwoObj" :key="index"> | ||||
| <navigator v-if="item.clickUrl" class="line-navigator" :url="updateQuery(item.clickUrl, item)" | |||||
| hover-class="none"></navigator> | |||||
| <view style="width: 100%;height: 100%;;"> | |||||
| <image class="icon" :src="item.icon" mode=""></image> | |||||
| <view class="title">{{item.name}}</view> | |||||
| </view> | |||||
| <block v-if="headerUserRoles(item,userRoles)"> | |||||
| <navigator v-if="item.clickUrl" class="line-navigator" :url="updateQuery(item.clickUrl, item)" | |||||
| hover-class="none" style="width: 100%;height: 100%;;"> | |||||
| <view style="width: 100%;height: 100%;;"> | |||||
| <image class="icon" :src="item.icon" mode=""></image> | |||||
| <view class="title">{{item.name}}</view> | |||||
| </view> | |||||
| </navigator> | |||||
| </block> | |||||
| </block> | </block> | ||||
| </view> | </view> | ||||
| <view class="title-name">志愿服务</view> | |||||
| <view class="flex flex-between flex-v-center"> | |||||
| <view class="title-name">志愿服务</view> | |||||
| <view class="change" @click="headerChange"> | |||||
| <van-icon size="32rpx" name="/static/images/change.png" /><text>换一换</text> | |||||
| </view> | |||||
| </view> | |||||
| <view class="swiper"> | <view class="swiper"> | ||||
| <swiper style="height: 225px;" circular indicator-active-color="#C0CFDE" indicator-color="#fff" | |||||
| :indicator-dots="indicatorDots" :autoplay="autoplay" :interval="interval" :duration="duration"> | |||||
| <swiper-item v-for="(item,index) in 4" :key="index"> | |||||
| <view> | |||||
| <swiper style="height: 250px;" v-if="volunteerProjectList.length !== 0" circular indicator-active-color="#C0CFDE" | |||||
| indicator-color="#fff" :indicator-dots="indicatorDots" :autoplay="autoplay" :interval="interval" | |||||
| :duration="duration"> | |||||
| <swiper-item v-for="(item,index) in volunteerProjectList" :key="index"> | |||||
| <view @click.stop="headerApplyFor(item)"> | |||||
| <view class="swiper-piso"> | <view class="swiper-piso"> | ||||
| <image class="swiper-icon" src="/src/images/share-icon.png" mode=""></image> | |||||
| <view class="type">服务中</view> | |||||
| <image class="swiper-icon" :src="item.pics[0]" mode="aspectFill"></image> | |||||
| <view :class="`type${item.serviceStatus}`">{{getStatusText(statusList,item.serviceStatus)}}</view> | |||||
| </view> | </view> | ||||
| <view class="swiper-item"> | |||||
| <view class="swiper-item" :style="item.serviceStatus !== 2 ? '' :'grid-template-columns: 95%'"> | |||||
| <view> | <view> | ||||
| <view class="item-title">创造更好营商环境申报</view> | |||||
| <view class="msg">北京经开区政务服务中心联合融媒体中心策划</view> | |||||
| <view class="item-title uniline">{{item.title}}</view> | |||||
| <view class="msg multi-line">{{item.content}}</view> | |||||
| </view> | </view> | ||||
| <view class="but">申领</view> | |||||
| <view class="but" v-if="item.serviceStatus !== 2" @click.stop="headerApplyFor(item)">申领</view> | |||||
| </view> | </view> | ||||
| </view> | </view> | ||||
| </swiper-item> | </swiper-item> | ||||
| </swiper> | </swiper> | ||||
| <van-empty v-else description="暂无活动风采" /> | |||||
| </view> | </view> | ||||
| <view class="title-name">活动风采</view> | |||||
| <view class="title-name" style="margin-top:30rpx">活动风采</view> | |||||
| <!-- 活动风采 --> | <!-- 活动风采 --> | ||||
| <view class="activity"> | |||||
| <block v-for="(item,index) in 5" :key="index"> | |||||
| <view class="activity" v-if="newsPageList.length !== 0"> | |||||
| <block v-for="(item,index) in newsPageList" :key="index"> | |||||
| <view class="activity-item" @click="headerDetail(item)"> | <view class="activity-item" @click="headerDetail(item)"> | ||||
| <image class="activity-image" src="/src/images/share-icon.png" mode=""></image> | |||||
| <image class="activity-image" :src="item.activityCoverImg" mode="aspectFill"></image> | |||||
| <view class="activity-type" v-if="index < 4" :class="`activity-type${index}`">NO.{{index+1}}</view> | <view class="activity-type" v-if="index < 4" :class="`activity-type${index}`">NO.{{index+1}}</view> | ||||
| <view class="activity-title">惠苑路社区西南角家乐福超市对面xxxxx</view> | |||||
| <view class="activity-time">2023-11-23 周四</view> | |||||
| <view class="activity-title multi-line">{{item.activityTitle}}</view> | |||||
| <view class="activity-time">{{getDateTime(item.createTime)}}</view> | |||||
| <view class="activity-rigth"> | <view class="activity-rigth"> | ||||
| <text>发布者的名字</text> | |||||
| <image src="/src/static/logo.png" mode=""></image> | |||||
| <text>{{item.userName}}</text> | |||||
| <image :src="item.avatar || '/images/default-avatar.png'" mode=""></image> | |||||
| </view> | </view> | ||||
| </view> | </view> | ||||
| </block> | </block> | ||||
| </view> | </view> | ||||
| <van-empty v-else description="暂无活动风采" /> | |||||
| </view> | </view> | ||||
| </template> | </template> | ||||
| @@ -65,13 +79,19 @@ | |||||
| export default { | export default { | ||||
| data() { | data() { | ||||
| return { | return { | ||||
| userRoles: uni.getStorageSync('userRoles'), | |||||
| option: {}, | option: {}, | ||||
| statusList: [], | |||||
| recursionObj: {}, | recursionObj: {}, | ||||
| recursionTwoObj: [], | recursionTwoObj: [], | ||||
| newsPageList: [], | newsPageList: [], | ||||
| pageNo: 1, | pageNo: 1, | ||||
| pageSize: 12, | pageSize: 12, | ||||
| total: 0, | total: 0, | ||||
| volunteerProjectList: [], | |||||
| volunteerProjectTotal: 0, | |||||
| voluntPageNo: 1, | |||||
| background: ['color1', 'color2', 'color3'], | background: ['color1', 'color2', 'color3'], | ||||
| indicatorDots: true, | indicatorDots: true, | ||||
| autoplay: false, | autoplay: false, | ||||
| @@ -81,13 +101,57 @@ | |||||
| }, | }, | ||||
| onLoad(option) { | onLoad(option) { | ||||
| this.option = option | this.option = option | ||||
| this.userRoles = uni.getStorageSync('userRoles') | |||||
| this.getTypeApi('people_volunteer_project_serviceStatus', 'statusList'); | |||||
| this.recursionApi(); | this.recursionApi(); | ||||
| this.volunteerProject(); | |||||
| this.newsPageApi(false) | this.newsPageApi(false) | ||||
| }, | }, | ||||
| methods: { | methods: { | ||||
| headerUserRoles(item, key) { | |||||
| if (item.remark !== '') { | |||||
| return key === item.remark ? true : false; | |||||
| } else { | |||||
| return true; | |||||
| } | |||||
| }, | |||||
| updateQuery(url, name) { | updateQuery(url, name) { | ||||
| return utils.updateQuery(url, name); | return utils.updateQuery(url, name); | ||||
| }, | }, | ||||
| getDateTime(time) { | |||||
| return utils.getDateTime(time, 2) | |||||
| }, | |||||
| getStatusText(list, key) { | |||||
| return utils.getStatusText(list, key) | |||||
| }, | |||||
| // 获取群众点单字典 | |||||
| async getTypeApi(dictType, list) { | |||||
| const res = await publicApi.getDictDataApi({ | |||||
| dictType: dictType, | |||||
| pageNo: 1, | |||||
| pageSize: 100, | |||||
| }); | |||||
| if (res.code === 0) { | |||||
| this[list] = res.data.list; | |||||
| } | |||||
| }, | |||||
| // 志愿服务 | |||||
| async volunteerProject() { | |||||
| const res = await peopleApi.volunteerProjectApi({ | |||||
| pageNo: this.voluntPageNo, | |||||
| pageSize: 10, | |||||
| }); | |||||
| if (res.data) { | |||||
| this.volunteerProjectList = res.data.list | |||||
| this.volunteerProjectTotal = res.data.total | |||||
| } | |||||
| }, | |||||
| // 志愿服务申领 | |||||
| headerApplyFor(item) { | |||||
| wx.navigateTo({ | |||||
| url: `./detail?id=${item.id}`, | |||||
| }); | |||||
| }, | |||||
| async recursionApi() { | async recursionApi() { | ||||
| const res = await publicApi.recursionApi({ | const res = await publicApi.recursionApi({ | ||||
| bannerType: 1, | bannerType: 1, | ||||
| @@ -134,8 +198,23 @@ | |||||
| }, | }, | ||||
| headerDetail(item) { | headerDetail(item) { | ||||
| uni.navigateTo({ | uni.navigateTo({ | ||||
| url: './detail?id=' + item.id | |||||
| url: '../activity-mien/detail?id=' + item.id | |||||
| }) | }) | ||||
| }, | |||||
| headerChange() { | |||||
| const { | |||||
| volunteerProjectTotal, | |||||
| voluntPageNo | |||||
| } = this; | |||||
| if (voluntPageNo * 10 < volunteerProjectTotal) { | |||||
| this.voluntPageNo = voluntPageNo + 1, | |||||
| this.volunteerProject(); | |||||
| } else { | |||||
| uni.showToast({ | |||||
| title: '我到底了', | |||||
| icon: 'none', | |||||
| }); | |||||
| } | |||||
| } | } | ||||
| }, | }, | ||||
| onReachBottom() { | onReachBottom() { | ||||
| @@ -159,13 +238,13 @@ | |||||
| text-align: center; | text-align: center; | ||||
| align-items: center; | align-items: center; | ||||
| grid-gap: 24rpx; | grid-gap: 24rpx; | ||||
| height: 100%; | |||||
| // height: 100%; | |||||
| padding: 40rpx 38rpx 0 38rpx; | padding: 40rpx 38rpx 0 38rpx; | ||||
| margin-bottom: 60rpx; | |||||
| margin-bottom: 38rpx; | |||||
| .icon { | .icon { | ||||
| width: 100%; | width: 100%; | ||||
| height: 100%; | |||||
| height: 80rpx; | |||||
| } | } | ||||
| .title { | .title { | ||||
| @@ -183,7 +262,7 @@ | |||||
| font-size: 36rpx; | font-size: 36rpx; | ||||
| font-weight: 500; | font-weight: 500; | ||||
| color: #333333; | color: #333333; | ||||
| padding: 30rpx 30rpx 0 30rpx; | |||||
| padding: 0rpx 30rpx 0 30rpx; | |||||
| z-index: 3; | z-index: 3; | ||||
| &::after { | &::after { | ||||
| @@ -219,7 +298,8 @@ | |||||
| margin-top: 38rpx; | margin-top: 38rpx; | ||||
| display: grid; | display: grid; | ||||
| align-items: center; | align-items: center; | ||||
| grid-template-columns: 80% 20%; | |||||
| grid-template-columns: 75% 20%; | |||||
| justify-content: space-between; | |||||
| .item-title { | .item-title { | ||||
| font-size: 30rpx; | font-size: 30rpx; | ||||
| @@ -262,17 +342,10 @@ | |||||
| height: 180rpx; | height: 180rpx; | ||||
| } | } | ||||
| .activity-title { | |||||
| margin-top: 16rpx; | |||||
| font-size: 30rpx; | |||||
| font-weight: 400; | |||||
| color: #000000; | |||||
| } | |||||
| .activity-title { | .activity-title { | ||||
| font-size: 24rpx; | font-size: 24rpx; | ||||
| font-weight: 400; | font-weight: 400; | ||||
| color: #999999; | |||||
| color: #000000; | |||||
| } | } | ||||
| .activity-time { | .activity-time { | ||||
| @@ -280,6 +353,7 @@ | |||||
| font-weight: 400; | font-weight: 400; | ||||
| margin-top: 8rpx; | margin-top: 8rpx; | ||||
| color: #999999; | color: #999999; | ||||
| padding: 0 16rpx; | |||||
| } | } | ||||
| .activity-rigth { | .activity-rigth { | ||||
| @@ -309,7 +383,7 @@ | |||||
| padding: 8rpx 26rpx; | padding: 8rpx 26rpx; | ||||
| } | } | ||||
| .type { | |||||
| .type0 { | |||||
| position: absolute; | position: absolute; | ||||
| top: 0; | top: 0; | ||||
| right: 0; | right: 0; | ||||
| @@ -321,6 +395,18 @@ | |||||
| padding: 12rpx 22rpx 12rpx 36rpx; | padding: 12rpx 22rpx 12rpx 36rpx; | ||||
| } | } | ||||
| .type1 { | |||||
| position: absolute; | |||||
| top: 0; | |||||
| right: 0; | |||||
| border-radius: 0px 8rpx 0px 1000rpx; | |||||
| font-size: 24rpx; | |||||
| font-weight: 400; | |||||
| color: #fff; | |||||
| padding: 12rpx 22rpx 12rpx 36rpx; | |||||
| background: linear-gradient(270deg, #5B638E 0%, #7B96BF 100%); | |||||
| } | |||||
| .activity-type { | .activity-type { | ||||
| position: absolute; | position: absolute; | ||||
| top: 0; | top: 0; | ||||
| @@ -329,11 +415,11 @@ | |||||
| font-size: 24rpx; | font-size: 24rpx; | ||||
| font-weight: 400; | font-weight: 400; | ||||
| color: #fff; | color: #fff; | ||||
| padding: 12rpx 22rpx 12rpx 36rpx; | |||||
| padding: 12rpx 31rpx 12rpx 15rpx; | |||||
| } | } | ||||
| .activity-type0 { | .activity-type0 { | ||||
| background: linear-gradient(291deg, #0A992D 0%, #11D03E 100%); | |||||
| background: linear-gradient(270deg, #E71E00 0%, #FF5E33 100%); | |||||
| } | } | ||||
| .activity-type1 { | .activity-type1 { | ||||
| @@ -347,4 +433,22 @@ | |||||
| .activity-type3 { | .activity-type3 { | ||||
| background: linear-gradient(291deg, #4a507b 0%, #6882b1 100%); | background: linear-gradient(291deg, #4a507b 0%, #6882b1 100%); | ||||
| } | } | ||||
| .navigator-wrap { | |||||
| width: 100%; | |||||
| height: 100%; | |||||
| } | |||||
| .change { | |||||
| font-size: 24rpx; | |||||
| font-weight: 400; | |||||
| color: #999999; | |||||
| padding-right: 30rpx; | |||||
| display: flex; | |||||
| align-items: center; | |||||
| text { | |||||
| margin-left: 20rpx; | |||||
| } | |||||
| } | |||||
| </style> | </style> | ||||
| @@ -10,8 +10,11 @@ | |||||
| <text class="red">*</text> | <text class="red">*</text> | ||||
| </view> | </view> | ||||
| <view class="label-value flex flex-v-center"> | <view class="label-value flex flex-v-center"> | ||||
| <picker @change="bindPickerChange" range-key="label" :value="form.type" :range="columns"> | |||||
| <!-- <view style="color: #000000">{{ columns[form.type].label }}</view> --> | |||||
| <picker @change="bindPickerChange" range-key="label" data-name="serviceType" data-list="projectTypeList" | |||||
| :value="form.serviceType" :range="projectTypeList"> | |||||
| <view style="color: #000000" v-if="form.serviceType !== ''">{{form.serviceTypeName }} | |||||
| </view> | |||||
| <view style="color: #999" v-if="form.serviceType === ''">请选择点单类型</view> | |||||
| </picker> | </picker> | ||||
| <image class="ic-xia" src="/static/packages/people/images/ic-xia.png"></image> | <image class="ic-xia" src="/static/packages/people/images/ic-xia.png"></image> | ||||
| </view> | </view> | ||||
| @@ -23,8 +26,8 @@ | |||||
| <text>标题</text> | <text>标题</text> | ||||
| <text class="red">*</text> | <text class="red">*</text> | ||||
| </view> | </view> | ||||
| <input class="flex1 textarea-class" @input="headleInput" :value="form.name" type="text" data-name="name" | |||||
| placeholder="请输入" /> | |||||
| <input class="flex1 textarea-class" @input="headleInput" :value="form.title" type="text" data-name="title" | |||||
| placeholder="请输入标题" /> | |||||
| </view> | </view> | ||||
| </view> | </view> | ||||
| @@ -49,7 +52,7 @@ | |||||
| <text>所需人数</text> | <text>所需人数</text> | ||||
| <text class="red">*</text> | <text class="red">*</text> | ||||
| </view> | </view> | ||||
| <input class="flex1 textarea-class" @input="headleInput" :value="form.name" type="text" data-name="name" | |||||
| <input class="flex1 textarea-class" @input="headleInput" :value="form.needNum" type="text" data-name="needNum" | |||||
| placeholder="请输入" /> | placeholder="请输入" /> | ||||
| </view> | </view> | ||||
| @@ -58,8 +61,8 @@ | |||||
| <text>发布者</text> | <text>发布者</text> | ||||
| <text class="red">*</text> | <text class="red">*</text> | ||||
| </view> | </view> | ||||
| <input class="flex1 textarea-class" @input="headleInput" :value="form.name" type="text" data-name="name" | |||||
| placeholder="请输入" /> | |||||
| <input class="flex1 textarea-class" @input="headleInput" :value="form.publicUserName" type="text" | |||||
| data-name="publicUserName" placeholder="请输入" /> | |||||
| </view> | </view> | ||||
| <view class="form-body form-col"> | <view class="form-body form-col"> | ||||
| @@ -67,22 +70,12 @@ | |||||
| <text>申领有效期</text> | <text>申领有效期</text> | ||||
| <text class="red">*</text> | <text class="red">*</text> | ||||
| </view> | </view> | ||||
| <input class="flex1 textarea-class" @input="headleInput" :value="form.name" type="text" data-name="name" | |||||
| placeholder="请输入" /> | |||||
| </view> | |||||
| <view class="form-body"> | |||||
| <view class="flex flex-v-center flex-between"> | |||||
| <view class="label"> | |||||
| <text>申领有效期</text> | |||||
| <text class="red">*</text> | |||||
| </view> | |||||
| <view class="label-value flex flex-v-center"> | |||||
| <picker @change="bindPickerChange" range-key="label" :value="form.type" :range="columns"> | |||||
| <!-- <view style="color: #000000">{{ columns[form.type].label }}</view> --> | |||||
| </picker> | |||||
| <image class="ic-xia" src="/static/packages/people/images/ic-xia.png"></image> | |||||
| </view> | |||||
| <view class="label-value flex flex-v-center"> | |||||
| <picker mode="date" :value="form.effectDate" data-name="effectDate" @change="bindPickerChange"> | |||||
| <view class="uni-input" v-if="form.effectDate !== ''">{{form.effectDate}}</view> | |||||
| <view class="uni-input" style="color: #999;" v-if="form.effectDate === ''">请选择有效期</view> | |||||
| </picker> | |||||
| <image class="ic-xia" src="/static/packages/people/images/ic-xia.png"></image> | |||||
| </view> | </view> | ||||
| </view> | </view> | ||||
| @@ -93,8 +86,12 @@ | |||||
| <text class="red">*</text> | <text class="red">*</text> | ||||
| </view> | </view> | ||||
| <view class="label-value flex flex-v-center"> | <view class="label-value flex flex-v-center"> | ||||
| <picker @change="bindPickerChange" range-key="label" :value="form.type" :range="columns"> | |||||
| <!-- <view style="color: #000000">{{ columns[form.type].label }}</view> --> | |||||
| <picker @change="bindPickerChange" range-key="label" data-name="serviceStatus" data-list="serviceStatusList" | |||||
| :value="form.serviceStatus" :range="serviceStatusList"> | |||||
| <view style="color: #000000" v-if="form.serviceStatus !== ''"> | |||||
| {{form.serviceStatusName }} | |||||
| </view> | |||||
| <view style="color: #999" v-if="form.serviceStatus === ''">请选择点单类型</view> | |||||
| </picker> | </picker> | ||||
| <image class="ic-xia" src="/static/packages/people/images/ic-xia.png"></image> | <image class="ic-xia" src="/static/packages/people/images/ic-xia.png"></image> | ||||
| </view> | </view> | ||||
| @@ -102,7 +99,7 @@ | |||||
| </view> | </view> | ||||
| <view class="form-button"> | <view class="form-button"> | ||||
| <van-button v-if="checked" @click="submit" block color="#FE3B53">发布信息</van-button> | |||||
| <van-button v-if="checked" @click="handSubmit" block color="#FE3B53">发布信息</van-button> | |||||
| <van-button v-else disabled block color="#C1C1C1">发布信息</van-button> | <van-button v-else disabled block color="#C1C1C1">发布信息</van-button> | ||||
| </view> | </view> | ||||
| @@ -110,21 +107,71 @@ | |||||
| </template> | </template> | ||||
| <script> | <script> | ||||
| import * as peopleApi from '@/api/peopleApi'; | |||||
| import * as publicApi from '@/api/publicApi'; | |||||
| import utils from '@/utils/util' | |||||
| import util from '@/utils/util.map' | |||||
| export default { | export default { | ||||
| data() { | data() { | ||||
| return { | return { | ||||
| form: {}, | |||||
| appealEnclosure: [], | |||||
| fileList: [], | |||||
| projectTypeList: [], | |||||
| serviceStatusList: [], | |||||
| form: { | |||||
| projectType: '', | |||||
| serviceType: '', | |||||
| serviceTypeName: '', | |||||
| title: '', | |||||
| content: '', | |||||
| needNum: '', | |||||
| publicUserName: '', | |||||
| effectDate: '', | |||||
| serviceStatus: '', | |||||
| serviceStatusName: '', | |||||
| }, | |||||
| checked: false, | checked: false, | ||||
| columns: [], | |||||
| fileList: [] | |||||
| minDate: new Date(2020, 0, 1), | |||||
| maxDate: new Date(2025, 5, 1), | |||||
| } | } | ||||
| }, | }, | ||||
| onLoad(options) { | |||||
| this.options = options | |||||
| this.getTypeApi('people_volunteer_project_type', 'projectTypeList'); | |||||
| this.getTypeApi('people_volunteer_project_serviceStatus', 'serviceStatusList'); | |||||
| }, | |||||
| methods: { | methods: { | ||||
| bindPickerChange() { | |||||
| // 获取群众点单字典 | |||||
| async getTypeApi(dictType, list) { | |||||
| const res = await publicApi.getDictDataApi({ | |||||
| dictType: dictType, | |||||
| pageNo: 1, | |||||
| pageSize: 100, | |||||
| }); | |||||
| if (res.code === 0) { | |||||
| this[list] = res.data.list | |||||
| } | |||||
| }, | }, | ||||
| headleInput() { | |||||
| bindPickerChange(e) { | |||||
| const { | |||||
| name, | |||||
| list | |||||
| } = e.target.dataset; | |||||
| if (name === 'serviceStatus' || name == 'serviceType') { | |||||
| this.form[name] = this[list][e.detail.value].value | |||||
| this.checked = true | |||||
| this.form[`${name}Name`] = this[list][e.detail.value].label | |||||
| } else { | |||||
| this.form[name] = e.detail.value | |||||
| } | |||||
| }, | |||||
| headleInput(event) { | |||||
| const { | |||||
| name | |||||
| } = event.target.dataset; | |||||
| this.form[name] = event.detail.value | |||||
| }, | }, | ||||
| async afterRead(event) { | async afterRead(event) { | ||||
| const { | const { | ||||
| @@ -146,11 +193,57 @@ | |||||
| }, | }, | ||||
| beforeDelete(file, dateil) { | beforeDelete(file, dateil) { | ||||
| this.appealEnclosure.splice(dateil.index, 1); | this.appealEnclosure.splice(dateil.index, 1); | ||||
| this.fileList.splice(dateil.index, 1) | |||||
| }, | }, | ||||
| submit() { | |||||
| handSubmit() { | |||||
| // 校验必填字段 | |||||
| const formKey = Object.keys(utils.filterParams(this.form)); | |||||
| const required = [ | |||||
| 'serviceType', | |||||
| 'title', | |||||
| 'content', | |||||
| 'needNum', | |||||
| 'publicUserName', | |||||
| 'effectDate', | |||||
| 'serviceStatus', | |||||
| ]; | |||||
| const isRequired = required.every((e) => formKey.includes(e)); | |||||
| if (!isRequired) { | |||||
| return wx.showToast({ | |||||
| title: '星号为必填!', | |||||
| icon: 'none', | |||||
| }); | |||||
| } | |||||
| this.addSubmit(); | |||||
| }, | |||||
| async addSubmit() { | |||||
| const res = await peopleApi.getVolunteerProjectCreateApi({ | |||||
| ...this.form, | |||||
| pics: this.appealEnclosure, | |||||
| userId: wx.getStorageSync('userInfoData').userId, | |||||
| }); | |||||
| if (res.data) { | |||||
| wx.showToast({ | |||||
| title: '发布成功', | |||||
| icon: 'none', | |||||
| }); | |||||
| } | |||||
| let time = setTimeout(() => { | |||||
| wx.navigateBack({ | |||||
| delta: 1, | |||||
| success: () => { | |||||
| const page = getCurrentPages().pop(); | |||||
| page.onLoad(); | |||||
| }, | |||||
| }); | |||||
| clearTimeout(time); | |||||
| }, 1000); | |||||
| } else { | |||||
| wx.showToast({ | |||||
| title: res.msg, | |||||
| icon: 'none', | |||||
| }); | |||||
| } | |||||
| }, | |||||
| } | } | ||||
| } | } | ||||
| </script> | </script> | ||||
| @@ -257,6 +257,11 @@ | |||||
| "name": "people", | "name": "people", | ||||
| "style": {} | "style": {} | ||||
| }, | }, | ||||
| { | |||||
| "path": "pages/activity-mien/detail", | |||||
| "name": "people", | |||||
| "style": {} | |||||
| }, | |||||
| { | { | ||||
| "path": "pages/volunteering/index", | "path": "pages/volunteering/index", | ||||
| "name": "people", | "name": "people", | ||||
| @@ -33,7 +33,8 @@ | |||||
| <view class="flex my-mune"> | <view class="flex my-mune"> | ||||
| <view class="flex flex-col mune-item flex-center" v-for="(itemName, idx) in recursionOneList" :key="idx"> | <view class="flex flex-col mune-item flex-center" v-for="(itemName, idx) in recursionOneList" :key="idx"> | ||||
| <navigator class="line-navigator" v-if="itemName.clickUrl" :url="updateQuery(itemName.clickUrl, itemName)" hover-class="none"></navigator> | |||||
| <navigator class="line-navigator" v-if="itemName.clickUrl" :url="updateQuery(itemName.clickUrl, itemName)" | |||||
| hover-class="none"></navigator> | |||||
| <text class="name">{{ itemName.name }}</text> | <text class="name">{{ itemName.name }}</text> | ||||
| @@ -68,7 +69,8 @@ | |||||
| <navigator :url="itemName.clickUrl + userInfo.id + '&partyMemberFlag=' + myInfo.partyMemberFlag" | <navigator :url="itemName.clickUrl + userInfo.id + '&partyMemberFlag=' + myInfo.partyMemberFlag" | ||||
| class="cell-right" hover-class="none"> | class="cell-right" hover-class="none"> | ||||
| <view class="cell-right-number" v-if="itemName.name === '党员接单'"> | |||||
| <view class="cell-right-number" | |||||
| v-if="itemName.name === '党员接单' || itemName.name =='党员认证' || itemName.name === '党组织认证'"> | |||||
| <!-- {{myInfo.partyMemberFlag===0?'未认证':'已认证'}} --> | <!-- {{myInfo.partyMemberFlag===0?'未认证':'已认证'}} --> | ||||
| </view> | </view> | ||||
| <view class="cell-right-number" v-else> | <view class="cell-right-number" v-else> | ||||
| @@ -145,8 +147,8 @@ | |||||
| this.getUserInfo(); | this.getUserInfo(); | ||||
| }, | }, | ||||
| methods: { | methods: { | ||||
| updateQuery(url,item){ | |||||
| return utils.updateQuery(url,item) | |||||
| updateQuery(url, item) { | |||||
| return utils.updateQuery(url, item) | |||||
| }, | }, | ||||
| async getUserInfoApi() { | async getUserInfoApi() { | ||||
| const res = await myApi.getUserInfoApi(); | const res = await myApi.getUserInfoApi(); | ||||
| @@ -192,6 +194,28 @@ | |||||
| } | } | ||||
| ]; | ]; | ||||
| const recursionList = [{ | const recursionList = [{ | ||||
| bannerType: 4, | |||||
| clickUrl: '/packages/people/pages/party-branch/create?userid=', | |||||
| cssStyle: wx.getStorageSync('userRoles') === '党组织' ? '' : 'display:none', | |||||
| icon: '/static/images/tissue.png', | |||||
| id: 125, | |||||
| name: '党组织认证', | |||||
| parentId: 96, | |||||
| remark: '党组织认证', | |||||
| sort: 1, | |||||
| }, | |||||
| { | |||||
| bannerType: 4, | |||||
| clickUrl: '/packages/people/pages/party-newspaper/create?userid=', | |||||
| cssStyle: null, | |||||
| icon: '/static/images/member.png', | |||||
| id: 123, | |||||
| name: '党员认证', | |||||
| parentId: 96, | |||||
| remark: '党员认证', | |||||
| sort: 1, | |||||
| }, | |||||
| { | |||||
| bannerType: 4, | bannerType: 4, | ||||
| clickUrl: '/packages/my/pages/my-masses/my-masses?id=', | clickUrl: '/packages/my/pages/my-masses/my-masses?id=', | ||||
| cssStyle: null, | cssStyle: null, | ||||
| @@ -295,21 +319,21 @@ | |||||
| */ | */ | ||||
| async login() { | async login() { | ||||
| uni.navigateTo({ | uni.navigateTo({ | ||||
| url: '/pages/phone/index' | |||||
| url: '/pages/phone/index' | |||||
| }); | }); | ||||
| // 我的诉求 | |||||
| // const res = await app.globalData.register({ | |||||
| // code: this.code | |||||
| // }); | |||||
| // if (res) { | |||||
| // uni.showToast({ | |||||
| // title: '登录成功', | |||||
| // icon: 'none' | |||||
| // }); | |||||
| // this.getInitData(); | |||||
| // } else { | |||||
| // } | |||||
| // 我的诉求 | |||||
| // const res = await app.globalData.register({ | |||||
| // code: this.code | |||||
| // }); | |||||
| // if (res) { | |||||
| // uni.showToast({ | |||||
| // title: '登录成功', | |||||
| // icon: 'none' | |||||
| // }); | |||||
| // this.getInitData(); | |||||
| // } else { | |||||
| // } | |||||
| }, | }, | ||||
| // 获取我的信息 | // 获取我的信息 | ||||
| @@ -3,12 +3,12 @@ | |||||
| * @return {*} 校验只要是数字(包含正负整数,0以及正负浮点数)就返回true | * @return {*} 校验只要是数字(包含正负整数,0以及正负浮点数)就返回true | ||||
| */ | */ | ||||
| function isNumber(val) { | function isNumber(val) { | ||||
| var regPos = /^\d+(\.\d+)?$/; //非负浮点数 | |||||
| var regNeg = /^(-(([0-9]+\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\.[0-9]+)|([0-9]*[1-9][0-9]*)))$/; //负浮点数 | |||||
| if (regPos.test(val) && regNeg.test(val)) { | |||||
| return true; | |||||
| } | |||||
| return false; | |||||
| var regPos = /^\d+(\.\d+)?$/; //非负浮点数 | |||||
| var regNeg = /^(-(([0-9]+\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\.[0-9]+)|([0-9]*[1-9][0-9]*)))$/; //负浮点数 | |||||
| if (regPos.test(val) && regNeg.test(val)) { | |||||
| return true; | |||||
| } | |||||
| return false; | |||||
| } | } | ||||
| /** | /** | ||||
| @@ -17,17 +17,17 @@ function isNumber(val) { | |||||
| * @param t 时间 | * @param t 时间 | ||||
| */ | */ | ||||
| const throttle = (ft, t) => { | const throttle = (ft, t) => { | ||||
| let flag = true; | |||||
| const interval = t; | |||||
| return function (self, ...args) { | |||||
| if (flag) { | |||||
| fn.apply(self, args); | |||||
| flag = false; | |||||
| setTimeout(() => { | |||||
| flag = true; | |||||
| }, interval); | |||||
| } | |||||
| }; | |||||
| let flag = true; | |||||
| const interval = t; | |||||
| return function(self, ...args) { | |||||
| if (flag) { | |||||
| fn.apply(self, args); | |||||
| flag = false; | |||||
| setTimeout(() => { | |||||
| flag = true; | |||||
| }, interval); | |||||
| } | |||||
| }; | |||||
| }; | }; | ||||
| /** | /** | ||||
| @@ -36,17 +36,17 @@ const throttle = (ft, t) => { | |||||
| * @param t 时间 | * @param t 时间 | ||||
| */ | */ | ||||
| const debounce = (fn, t = 300) => { | const debounce = (fn, t = 300) => { | ||||
| let timeId = null; | |||||
| const delay = t; | |||||
| return function (self, ...args) { | |||||
| if (timeId) { | |||||
| clearTimeout(timeId); | |||||
| } | |||||
| timeId = setTimeout(() => { | |||||
| timeId = null; | |||||
| fn.apply(self, args); | |||||
| }, delay); | |||||
| }; | |||||
| let timeId = null; | |||||
| const delay = t; | |||||
| return function(self, ...args) { | |||||
| if (timeId) { | |||||
| clearTimeout(timeId); | |||||
| } | |||||
| timeId = setTimeout(() => { | |||||
| timeId = null; | |||||
| fn.apply(self, args); | |||||
| }, delay); | |||||
| }; | |||||
| }; | }; | ||||
| // 防抖示例 | // 防抖示例 | ||||
| @@ -72,13 +72,13 @@ const debounce = (fn, t = 300) => { | |||||
| * @param {Object} date | * @param {Object} date | ||||
| */ | */ | ||||
| function getDateString(date = new Date()) { | function getDateString(date = new Date()) { | ||||
| return { | |||||
| year: date.getFullYear(), | |||||
| month: date.getMonth() + 1, | |||||
| day: date.getDate(), | |||||
| hour: date.getHours(), | |||||
| minute: date.getMinutes() | |||||
| }; | |||||
| return { | |||||
| year: date.getFullYear(), | |||||
| month: date.getMonth() + 1, | |||||
| day: date.getDate(), | |||||
| hour: date.getHours(), | |||||
| minute: date.getMinutes() | |||||
| }; | |||||
| } | } | ||||
| /** | /** | ||||
| @@ -90,18 +90,18 @@ function getDateString(date = new Date()) { | |||||
| * @description 可以选择的时候添加 selectable = true,反之, selectable = false | * @description 可以选择的时候添加 selectable = true,反之, selectable = false | ||||
| */ | */ | ||||
| function setSelectTreeLevel(tree, level) { | function setSelectTreeLevel(tree, level) { | ||||
| if (!Array.isArray(tree)) { | |||||
| throw new Error('tree is not array!'); | |||||
| if (!Array.isArray(tree)) { | |||||
| throw new Error('tree is not array!'); | |||||
| } | |||||
| const list = JSON.parse(JSON.stringify(tree)); | |||||
| return list.map((item) => { | |||||
| const itemObj = item; | |||||
| itemObj.selectable = itemObj.code === level; | |||||
| if (Array.isArray(itemObj.children) && itemObj.children.length > 0) { | |||||
| itemObj.children = setSelectTreeLevel(itemObj.children, level); | |||||
| } | } | ||||
| const list = JSON.parse(JSON.stringify(tree)); | |||||
| return list.map((item) => { | |||||
| const itemObj = item; | |||||
| itemObj.selectable = itemObj.code === level; | |||||
| if (Array.isArray(itemObj.children) && itemObj.children.length > 0) { | |||||
| itemObj.children = setSelectTreeLevel(itemObj.children, level); | |||||
| } | |||||
| return itemObj; | |||||
| }); | |||||
| return itemObj; | |||||
| }); | |||||
| } | } | ||||
| /** | /** | ||||
| @@ -111,19 +111,19 @@ function setSelectTreeLevel(tree, level) { | |||||
| * @returns {Array} 处理完成的树 | * @returns {Array} 处理完成的树 | ||||
| */ | */ | ||||
| function handleChildren(tree) { | function handleChildren(tree) { | ||||
| if (!Array.isArray(tree)) { | |||||
| throw new Error('tree is not array!'); | |||||
| if (!Array.isArray(tree)) { | |||||
| throw new Error('tree is not array!'); | |||||
| } | |||||
| const list = JSON.parse(JSON.stringify(tree)); | |||||
| return list.map((item) => { | |||||
| // eslint-disable-next-line no-param-reassign | |||||
| if (item.children === null) { | |||||
| item.children = []; | |||||
| } else { | |||||
| handleChildren(item.children); | |||||
| } | } | ||||
| const list = JSON.parse(JSON.stringify(tree)); | |||||
| return list.map((item) => { | |||||
| // eslint-disable-next-line no-param-reassign | |||||
| if (item.children === null) { | |||||
| item.children = []; | |||||
| } else { | |||||
| handleChildren(item.children); | |||||
| } | |||||
| return item; | |||||
| }); | |||||
| return item; | |||||
| }); | |||||
| } | } | ||||
| /** | /** | ||||
| @@ -132,14 +132,14 @@ function handleChildren(tree) { | |||||
| * @returns {string} 时间格式,可选。默认yyyy-mm-dd hh:MM:ss,年为"yyyy",月为"mm",日为"dd",时为"hh",分为"MM",秒为"ss",格式可以自由搭配,如: yyyy:mm:dd yyyy-mm-dd yyyy年mm月dd日,yyyy年mm月dd日 hh时MM分ss秒,yyyy/mm/dd/,MM:ss等组合 | * @returns {string} 时间格式,可选。默认yyyy-mm-dd hh:MM:ss,年为"yyyy",月为"mm",日为"dd",时为"hh",分为"MM",秒为"ss",格式可以自由搭配,如: yyyy:mm:dd yyyy-mm-dd yyyy年mm月dd日,yyyy年mm月dd日 hh时MM分ss秒,yyyy/mm/dd/,MM:ss等组合 | ||||
| */ | */ | ||||
| function timeFormat(dateTime = null, fmt = 'yyyy-mm-dd hh:MM:ss') { | function timeFormat(dateTime = null, fmt = 'yyyy-mm-dd hh:MM:ss') { | ||||
| const time = new Date(dateTime); | |||||
| const Y = time.getFullYear(); | |||||
| const M = time.getMonth() + 1 < 10 ? "0" + (time.getMonth() + 1) : time.getMonth() + 1; | |||||
| const D = time.getDate() < 10 ? "0" + time.getDate() : time.getDate(); | |||||
| const h = time.getHours() < 10 ? "0" + time.getHours() : time.getHours(); | |||||
| const m = time.getMinutes() < 10 ? "0" + time.getMinutes() : time.getMinutes(); | |||||
| const s = time.getSeconds() < 10 ? "0" + time.getSeconds() : time.getSeconds(); | |||||
| return Y + "-" + M + "-" + D + " " + h + ":" + m; | |||||
| const time = new Date(dateTime); | |||||
| const Y = time.getFullYear(); | |||||
| const M = time.getMonth() + 1 < 10 ? "0" + (time.getMonth() + 1) : time.getMonth() + 1; | |||||
| const D = time.getDate() < 10 ? "0" + time.getDate() : time.getDate(); | |||||
| const h = time.getHours() < 10 ? "0" + time.getHours() : time.getHours(); | |||||
| const m = time.getMinutes() < 10 ? "0" + time.getMinutes() : time.getMinutes(); | |||||
| const s = time.getSeconds() < 10 ? "0" + time.getSeconds() : time.getSeconds(); | |||||
| return Y + "-" + M + "-" + D + " " + h + ":" + m; | |||||
| } | } | ||||
| /** | /** | ||||
| @@ -147,19 +147,21 @@ function timeFormat(dateTime = null, fmt = 'yyyy-mm-dd hh:MM:ss') { | |||||
| * @returns {string} url | * @returns {string} url | ||||
| */ | */ | ||||
| function getCurrentPageUrlWithArgs() { | function getCurrentPageUrlWithArgs() { | ||||
| const pages = getCurrentPages(); // 获取加载的页面 | |||||
| const currentPage = pages[pages.length - 1]; // 获取当前页面的对象 | |||||
| const url = currentPage.route; // 当前页面url | |||||
| const { options } = currentPage; // 如果要获取url中所带的参数可以查看options | |||||
| const pages = getCurrentPages(); // 获取加载的页面 | |||||
| const currentPage = pages[pages.length - 1]; // 获取当前页面的对象 | |||||
| const url = currentPage.route; // 当前页面url | |||||
| const { | |||||
| options | |||||
| } = currentPage; // 如果要获取url中所带的参数可以查看options | |||||
| //拼接url的参数 | |||||
| let urlWithArgs = `${url}?`; | |||||
| for (const key in options) { | |||||
| const value = options[key]; | |||||
| urlWithArgs += `${key}=${value}&`; | |||||
| } | |||||
| urlWithArgs = urlWithArgs.substring(0, urlWithArgs.length - 1); | |||||
| return '/' + urlWithArgs; | |||||
| //拼接url的参数 | |||||
| let urlWithArgs = `${url}?`; | |||||
| for (const key in options) { | |||||
| const value = options[key]; | |||||
| urlWithArgs += `${key}=${value}&`; | |||||
| } | |||||
| urlWithArgs = urlWithArgs.substring(0, urlWithArgs.length - 1); | |||||
| return '/' + urlWithArgs; | |||||
| } | } | ||||
| /** | /** | ||||
| @@ -167,35 +169,53 @@ function getCurrentPageUrlWithArgs() { | |||||
| * @returns {Object} res | * @returns {Object} res | ||||
| */ | */ | ||||
| function setRichText(res) { | function setRichText(res) { | ||||
| if (res.data && res.data.createTime) { | |||||
| res.data.createTime = timeFormat(res.data.createTime); | |||||
| if (res.data.content) { | |||||
| res.data.content = res.data.content.replace(/(\<img|\<p)/gi, function ($0, $1) { | |||||
| return { | |||||
| '<img': '<img style="width:100%;height:auto;display:block;" ', | |||||
| '<p': '<p style="text-indent: 24px;" ', | |||||
| '<article': '<div', | |||||
| '</article': '</div', | |||||
| '<header': '<div', | |||||
| '</header': '</div' | |||||
| }[$1]; | |||||
| }); | |||||
| } | |||||
| return res.data; | |||||
| if (res.data && res.data.createTime) { | |||||
| res.data.createTime = timeFormat(res.data.createTime); | |||||
| if (res.data.content) { | |||||
| res.data.content = res.data.content.replace(/(\<img|\<p)/gi, function($0, $1) { | |||||
| return { | |||||
| '<img': '<img style="width:100%;height:auto;display:block;" ', | |||||
| '<p': '<p style="text-indent: 24px;" ', | |||||
| '<article': '<div', | |||||
| '</article': '</div', | |||||
| '<header': '<div', | |||||
| '</header': '</div' | |||||
| } [$1]; | |||||
| }); | |||||
| } | } | ||||
| return res.data; | |||||
| } | |||||
| } | } | ||||
| /** | |||||
| * @param {Object} 传递对象检测对象值是否为空,有则返回键名 | |||||
| * @returns {[]} { obj: '123', a: '' } => ['obj'] | |||||
| */ | |||||
| function filterParams(obj) { | |||||
| const _newPar = {}; | |||||
| for (const key in obj) { | |||||
| // 如果对象属性的值不为空,就保存该属性(如果属性的值全部是空格,属于为空。) | |||||
| if (obj[key] && obj[key].toString().replace(/(^\s*)|(\s*$)/g, '') !== '') { | |||||
| // 保存属性 | |||||
| _newPar[key] = obj[key]; | |||||
| } | |||||
| } | |||||
| return _newPar; | |||||
| } | |||||
| export default { | export default { | ||||
| data() { | |||||
| return {}; | |||||
| }, | |||||
| getDateString, | |||||
| isNumber, | |||||
| debounce, | |||||
| throttle, | |||||
| // pages, | |||||
| setSelectTreeLevel, | |||||
| handleChildren, | |||||
| timeFormat, | |||||
| getCurrentPageUrlWithArgs, | |||||
| setRichText | |||||
| }; | |||||
| data() { | |||||
| return {}; | |||||
| }, | |||||
| getDateString, | |||||
| isNumber, | |||||
| debounce, | |||||
| throttle, | |||||
| // pages, | |||||
| setSelectTreeLevel, | |||||
| handleChildren, | |||||
| timeFormat, | |||||
| getCurrentPageUrlWithArgs, | |||||
| setRichText, | |||||
| filterParams | |||||
| }; | |||||
| @@ -10,7 +10,7 @@ function log(obj) { | |||||
| * JSON字符串转JSON对象 | * JSON字符串转JSON对象 | ||||
| * @param str JSON字符串 | * @param str JSON字符串 | ||||
| */ | */ | ||||
| var str2Json = function (str) { | |||||
| var str2Json = function(str) { | |||||
| if (!str) return; | if (!str) return; | ||||
| var json = JSON.parse(str); | var json = JSON.parse(str); | ||||
| @@ -21,7 +21,7 @@ var str2Json = function (str) { | |||||
| * 检查字符串是否是null或'' | * 检查字符串是否是null或'' | ||||
| * @param str 字符串 | * @param str 字符串 | ||||
| */ | */ | ||||
| var isNull = function (str) { | |||||
| var isNull = function(str) { | |||||
| return str ? str : '---'; | return str ? str : '---'; | ||||
| }; | }; | ||||
| @@ -43,7 +43,7 @@ function getFullUrl(fileHost, url) { | |||||
| * @param fileHost 静态资源基地址 | * @param fileHost 静态资源基地址 | ||||
| * @param filesStr 文件数组(JSON字符串) | * @param filesStr 文件数组(JSON字符串) | ||||
| */ | */ | ||||
| var getSingleFullUrl = function (fileHost, filesStr) { | |||||
| var getSingleFullUrl = function(fileHost, filesStr) { | |||||
| if (!filesStr) return false; | if (!filesStr) return false; | ||||
| var files = str2Json(filesStr); | var files = str2Json(filesStr); | ||||
| @@ -60,7 +60,7 @@ var getSingleFullUrl = function (fileHost, filesStr) { | |||||
| * @param arr 字符串数组 | * @param arr 字符串数组 | ||||
| * @param str 检测的字符串 | * @param str 检测的字符串 | ||||
| */ | */ | ||||
| var isIncluded = function (arr, str) { | |||||
| var isIncluded = function(arr, str) { | |||||
| return arr.indexOf(str) >= 0; | return arr.indexOf(str) >= 0; | ||||
| }; | }; | ||||
| @@ -70,7 +70,7 @@ var isIncluded = function (arr, str) { | |||||
| * @param str 展示的日期司机 默认0 | * @param str 展示的日期司机 默认0 | ||||
| * 0 (年-月-日 时:分:秒) 1 (x年-x月-x日 时:分:秒) 2 (x年-x月-x日) 3 (时:分:秒) | * 0 (年-月-日 时:分:秒) 1 (x年-x月-x日 时:分:秒) 2 (x年-x月-x日) 3 (时:分:秒) | ||||
| */ | */ | ||||
| var getDateTime = function (value, type) { | |||||
| var getDateTime = function(value, type) { | |||||
| //不能使用 new Date() | //不能使用 new Date() | ||||
| var time = new Date(value); | var time = new Date(value); | ||||
| var year = time.getFullYear(); | var year = time.getFullYear(); | ||||
| @@ -100,6 +100,7 @@ var getDateTime = function (value, type) { | |||||
| second, | second, | ||||
| year + '年' + month + '月' + date + '日', | year + '年' + month + '月' + date + '日', | ||||
| hour + ':' + minute + ':' + second, | hour + ':' + minute + ':' + second, | ||||
| year + '-' + month + '-' + date + ' ', | |||||
| ]; | ]; | ||||
| if (!type) { | if (!type) { | ||||
| return arr[0]; | return arr[0]; | ||||
| @@ -151,6 +152,20 @@ function formatStr(str) { | |||||
| return str.substring(0, 1) + new Array(str.length).join('*') | return str.substring(0, 1) + new Array(str.length).join('*') | ||||
| } | } | ||||
| function getStatusText(list, status) { | |||||
| if (!list) { | |||||
| return '状态列表有误'; | |||||
| } | |||||
| var item = null; | |||||
| for (var i = 0; i < list.length; i++) { | |||||
| if (list[i].value === status + '') { | |||||
| item = list[i]; | |||||
| break; | |||||
| } | |||||
| } | |||||
| return item ? item.label : '未知'; | |||||
| } | |||||
| export default { | export default { | ||||
| log: log, | log: log, | ||||
| str2Json: str2Json, | str2Json: str2Json, | ||||
| @@ -161,5 +176,6 @@ export default { | |||||
| getDateTime: getDateTime, | getDateTime: getDateTime, | ||||
| setMorKm: setMorKm, | setMorKm: setMorKm, | ||||
| updateQuery: updateQuery, | updateQuery: updateQuery, | ||||
| formatStr: formatStr | |||||
| formatStr: formatStr, | |||||
| getStatusText: getStatusText | |||||
| }; | }; | ||||