登录完善,会议活动筛选分页,扫码签到完善,分标委列表,详情

This commit is contained in:
姚亚男
2021-10-15 18:35:39 +08:00
parent 6ef45b33f7
commit 280db0a273
46 changed files with 785 additions and 474 deletions
Binary file not shown.

After

Width:  |  Height:  |  Size: 1.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 19 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 19 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.4 KiB

After

Width:  |  Height:  |  Size: 1.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 19 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 585 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 19 KiB

+25
View File
@@ -0,0 +1,25 @@
export function wxBind(callback){
// 获取openid进行手机号和微信的绑定
wx.login({
success (res) {
if (res.code) {
//发起网络请求
wx.request({
url: 'https://api.weixin.qq.com/sns/jscode2session',
data: {
appid: 'wx24914e866df035fb',
secret: '0d2830f26f57722716249f2b2236f409',
js_code: res.code,
grant_type: 'authorization_code'
},
success (res) { // 成功拿到openId
// 微信和该账号绑定
callback(res)
}
})
} else {
console.log('授权失败!' + res.errMsg)
}
}
})
}
+8
View File
@@ -26,6 +26,8 @@ const UserApi = {
wxLogin: (params) => http.post(`${URL_CONFIG}company/WCLogin`, params),
// 微信绑定
wxBind: (params) => http.post(`${URL_CONFIG}company/bindWeXin`, params),
// 微信解绑
wxUnbind: (params) => http.post(`${URL_CONFIG}company/unbindWeXin`, params),
// 设置密码
setPassword: (params) => http.post(`${URL_CONFIG}company/changePasswordWithToken`, params),
// 修改密码
@@ -44,6 +46,8 @@ const UserApi = {
editMineInfo: (params) => http.post(`${URL_CONFIG}company/payContactsManagement/companyEdit`, params),
// 我的资料
dataList: (params) => http.get(`${URL_CONFIG}project/payWorkingGroupDistributionRecord/listForFile`, params),
// 发送邮件
sendEmail: (params) => http.get(`${URL_CONFIG}project/payWorkingGroupDataFile/wxDownloadFile`, params),
// 我的合同
contractList: (params) => http.get(`${URL_CONFIG}contract/payIncomeContract/queryCompanyPageList`, params),
// 合同详情
@@ -61,6 +65,10 @@ const UserApi = {
messageStatus: (params) => http.post(`${URL_CONFIG}sys/sysAnnouncementSend/editCompanyByAnntIdAndUserId`, params),
// 工作组分页
workList: (params) => http.get(`${URL_CONFIG}project/payWorkingGroupSubitem/queryCompanyPageList`, params),
// 分标委列表
committeeList: (params) => http.get(`${URL_CONFIG}payCaseCommittee/payCaseCommittee/list`, params),
// 分标委详情
committeeDetail: (params) => http.get(`${URL_CONFIG}payCaseCommittee/payCaseCommittee/detail`, params),
}
export default UserApi
+28 -48
View File
@@ -1,66 +1,46 @@
// pages/meeting/meeting.js
import UserApi from '../../assets/js/http/userApi'
Page({
/**
* 页面的初始数据
*/
data: {
pageNo: 1,
pageSize: 10,
list: []
},
/**
* 生命周期函数--监听页面加载
*/
onLoad: function (options) {
loadData(){
let params = {
pageNo: this.data.pageNo,
pageSize: this.data.pageSize
}
UserApi.committeeList(params).then(res=>{
if(res.success){
if(res.result.records && res.result.records.length){
this.setData({
list: [...this.data.list, ...res.result.records]
})
}
}
})
},
// 分标委详情页
detail(e){
wx.navigateTo({
url: `../committeeDetail/committeeDetail?id=${e.currentTarget.dataset.committee.id}`,
})
},
/**
* 生命周期函数--监听页面初次渲染完成
*/
onReady: function () {
},
/**
* 生命周期函数--监听页面显示
*/
onShow: function () {
},
/**
* 生命周期函数--监听页面隐藏
*/
onHide: function () {
},
/**
* 生命周期函数--监听页面卸载
*/
onUnload: function () {
},
/**
* 页面相关事件处理函数--监听用户下拉动作
*/
onPullDownRefresh: function () {
onLoad: function () {
this.loadData()
},
/**
* 页面上拉触底事件的处理函数
*/
onReachBottom: function () {
},
/**
* 用户点击右上角分享
*/
onShareAppMessage: function () {
this.data.pageNo++
this.loadData()
}
})
+1
View File
@@ -1,3 +1,4 @@
{
"navigationBarTitleText": "分标委",
"usingComponents": {}
}
+6 -1
View File
@@ -1,4 +1,9 @@
<!--pages/meeting/meeting.wxml-->
<view>
<text>分标委</text>
<view class="item" wx:for="{{list}}" wx:key="item" bindtap="detail" data-committee="{{item}}">
<text>{{item.name}}</text>
</view>
<view>
<text class="no-data" wx:if="{{list.length == 0}}">暂无数据</text>
</view>
</view>
+18 -17
View File
@@ -1,20 +1,21 @@
/* pages/meeting/meeting.wxss */
.select-list {
height: 92rpx;
display: flex;
align-items: center;
background-color: #F5F5F5;
page{
padding-bottom: 20px;
background-color: #f5f5f5;
padding: 15px;
box-sizing: border-box;
}
.select-item {
flex: 1;
display: flex;
align-items: center;
justify-content: center;
.item{
box-sizing: border-box;
padding: 0 15px;
width: 100%;
height: 40px;
line-height: 40px;
background-color: #fff;
border-radius: 10px;
color: #333;
font-size: 14px;
margin-bottom: 10px;
}
.select-item image {
width: 21rpx;
height: 12rpx;
margin-left: 20rpx;
.item:last-child{
margin-bottom: 0;
}
+57
View File
@@ -0,0 +1,57 @@
import UserApi from '../../assets/js/http/userApi'
import { previewFile } from '../../assets/js/preview'
import MeetingApi from '../../assets/js/http/meetingApi'
Page({
/**
* 页面的初始数据
*/
data: {
form: {},
id: '', // 在工作组id,项目id
projectFileList: [], // 项目资料文件
meetingList: [] // 会议文件
},
// 预览
preview(e){
const fileObj = e.currentTarget.dataset.file
previewFile(fileObj.fileId ,fileObj.fileName)
},
// 获取更多会议信息数据
goMoreMeeting(){
wx.navigateTo({
url: `../meeting/meeting?caseCommitteeId=${this.data.id}`,
})
},
/**
* 生命周期函数--监听页面加载
*/
onLoad: function (options) {
this.data.id = options.id
MeetingApi.meetingList({caseCommitteeId: this.data.id}).then(res=>{
if(res.success){
if(res.result.records && res.result.records.length >= 1){
this.setData({
meetingList: res.result.records
})
}else if(res.result.records && res.result.records.length >= 2){
this.setData({
meetingList: res.result.records.slice(1)
})
}
}
})
UserApi.committeeDetail({id: this.data.id}).then(res=>{
this.setData({
form: res.result
})
})
},
/**
* 生命周期函数--监听页面显示
*/
onShow: function () {
}
})
@@ -0,0 +1,4 @@
{
"navigationBarTitleText": "详情",
"usingComponents": {}
}
@@ -0,0 +1,29 @@
<view>
<view class="basic-info">
<view class="meeting-name">
<text>项目名称</text>
<text>{{form.name}}</text>
</view>
<view style="height: auto !important;">
<text>项目资料</text>
<view class="info-file" wx:if="{{form.files && form.files.length}}">
<text class='color-green' data-file="{{item}}" wx:for="{{form.files}}" wx:key='item'
bindtap="preview">{{item.fileName}}</text>
</view>
<text wx:if="{{form.files.length == 0}}">无</text>
</view>
</view>
<view class="basic-info" style="margin-top: 10px;">
<view class="title">
<text>会议信息</text>
<text style="border: none;color: #999; font-size: 13px;" bindtap="goMoreMeeting">更多>></text>
</view>
<view style="padding: 0 15px;" wx:for="{{meetingList}}" wx:key="item">
<view class="meeting-info">
<text>{{item.meetingName}}</text>
<text style="color: #069F99;" bindtap="meetingDetail">查看详情</text>
</view>
</view>
<text wx:if="{{meetingList.length == 0}}" class="no-data" style="height: 40px;">暂无会议记录!</text>
</view>
</view>
+267
View File
@@ -0,0 +1,267 @@
page{
box-sizing: border-box;
background-color: #F5F5F5;
padding-bottom: 20px;
}
.basic-info .title{
height: 40px;
}
.basic-info .title text{
display: block;
border-left: 3px solid #069F99;
height: 14px;
padding-left: 10px;
border-radius: 2px;
display: flex;
justify-content: center;
align-items: center;
color: #333;
font-size: 15px;
font-weight: 500;
}
.basic-info view{
background-color: #FFF;
padding: 15px;
height: 40px;
display: flex;
justify-content: space-between;
align-items: center;
color: #333;
font-size: 14px;
border-bottom: 0.5px solid #f5f5f5;
position: relative;
}
.basic-info view:last-child{
border-bottom: 0;
}
.basic-info view text:nth-child(1){
flex-shrink: 0;
margin-right: 10px;
}
.meeting-name{
margin-bottom: 10px;
}
.meeting-files{
margin-top: 10px;
flex-direction: column;
align-items: flex-start !important;
height: auto !important;
}
.basic-info .meeting-files .file-name{
display: flex;
justify-content: space-between;
align-items: center;
width: 100%;
box-sizing: border-box;
padding: 0;
height: 40px;
margin-top: 10px;
}
.file-name view{
padding: 0;
height: 30px;
line-height: 30px;
border-bottom: 0;
}
.file-name view image{
width: 30px;
height: 30px;
margin-right: 10px;
}
.basic-info .meeting-files .file-name .look-file{
color: #069F99;
}
.warning-text{
position: absolute !important;
top: 5px;
left: 75px;
color: #FF5E60 !important;
font-size: 10px !important;
padding: 0 !important;
}
.warning-text image{
width: 10px;
height: 10px;
}
.pay-prove-box{
display: flex !important;
flex-direction: column !important;
justify-content: flex-start !important;
align-items: flex-start !important;
padding: 0;
height: 120px !important;
}
.pay-prove-box .pay-prove-content{
margin-top: 20px;
display: flex;
justify-content: flex-start;
align-items: center;
padding: 0;
height: 80px;
}
.pay-prove-box .pay-prove-content .pay-prove{
width: 80px;
height: 80px;
margin-right: 10px;
position: relative !important;
background-color: #D1D1D1;
padding: 0;
border-radius: 5px;
display: flex;
justify-content: center;
align-items: center;
}
.pay-prove-box .pay-prove-content .pay-prove image{
width: 80px;
height: 80px;
}
.pay-prove-box .pay-prove-content .pay-prove .delete-image{
width: 12px;
height: 12px;
color: #fff;
background-color: #FF5E60;
border-radius: 50%;
display: flex;
justify-content: center;
align-items: center;
font-size: 7px;
position: absolute;
top: -3px;
right: -3px;
}
.way-box{
display: block !important;
padding: 0 !important;
height: auto !important;
}
.info-file{
padding: 0 !important;
display: flex;
flex-direction: column;
align-items: flex-end !important;
height: auto !important;
overflow: hidden;
}
.info-file text{
overflow:hidden;
text-overflow: ellipsis;
white-space: nowrap;
}
.meeting-info{
width: 100%;
height: auto !important;
display: flex;
justify-content: space-between !important;
align-items: center;
padding: 0 !important;
border: none;
}
.meeting-info text:nth-child(1){
flex-shrink: 1 !important;
text-overflow: ellipsis;
white-space: nowrap;
overflow: hidden;
}
.meeting-info text:nth-child(2){
flex-shrink: 0 !important;
}
.basic-info .way{
padding: 0 15px;
display: flex;
justify-content: flex-start !important;
}
.basic-info .way image{
width: 23px;
height: 23px;
margin-right: 10px;
}
.way-info .way-left{
padding: 0;
display: flex;
justify-content: flex-start !important;
}
.way-info .way-center{
display: flex;
flex-direction: column;
justify-content: space-between;
align-items: flex-start;
}
.way-info .way-center text:nth-child(1){
color: #333;
font-size: 14px;
flex-shrink: 0;
}
.way-info .way-center text:nth-child(2){
color: #999;
font-size: 11px;
flex-shrink: 0;
}
.way-info .green {
width: 20px;
height: 20px;
background: #069F99;
color: #fff;
font-size: 11px;
text-align: center;
line-height: 20px;
border-radius: 5px;
}
.way-info .blue {
width: 20px;
height: 20px;
background: #0A72F7;
color: #fff;
font-size: 11px;
text-align: center;
line-height: 20px;
border-radius: 5px;
}
.way-info .way-right{
flex-shrink: 0;
padding: 0;
color: #666;
font-size: 12px;
}
.basic-info .look-progress{
padding: 0 15px;
}
.basic-info .look-progress text:nth-child(1){
color: #FF5E60;
font-size: 14px;
}
.basic-info .look-progress text:nth-child(2){
display: block;
width: 70px;
height: 26px;
color: #069F99;
font-size: 11px;
border-radius: 13px;
border: 0.5px solid #069F99;
text-align: center;
line-height: 26px;
}
.sign-up-empty{
height: 60px;
width: 100%;
display: block;
margin-top: 10px;
}
.sign-up{
width: 100%;
padding: 10px 15px;
box-sizing: border-box;
background-color: #fff;
position: fixed;
bottom: 0;
}
.sign-up text{
background-color: #069F99;
height: 40px;
border-radius: 10px;
color: #fff;
font-size: 16px;
font-weight: 600;
display: block;
text-align: center;
line-height: 40px;
}
+1
View File
@@ -1,3 +1,4 @@
{
"navigationBarTitleText": "详情",
"usingComponents": {}
}
+12 -6
View File
@@ -1,6 +1,8 @@
<view>
<view class="title">基本信息</view>
<view class="basic-info">
<view class="title">
<text>基本信息</text>
</view>
<view>
<text>合同编号</text>
<text>{{form.contractNum}}</text>
@@ -20,13 +22,17 @@
<view>
<text>关联项目</text>
<view class="ass-project">
<text wx:for="{{form.listProject}}" wx:key="item">{{item.chargeUse_dictText}}</text>
<text wx:for="{{form.listProject}}" data-file="{{item}}" wx:key="item">{{item.chargeUse_dictText}}</text>
</view>
</view>
</view>
<view class="title">邮寄信息</view>
<view class="email-info">
<text>{{form.contractNum}}由{{form.payMailContract.createBy}}于{{form.payMailContract.createTime}}邮寄,快递号:{{form.payMailContract.postNo}}</text>
<text bindtap="track">查看物流</text>
<view class="basic-info">
<view class="title">
<text>邮寄信息</text>
</view>
<view class="email-info">
<text>{{form.contractNum}}由{{form.payMailContract.createBy}}于{{form.payMailContract.createTime}}邮寄,快递号:{{form.payMailContract.postNo}}</text>
<text bindtap="track">查看物流</text>
</view>
</view>
</view>
+15 -5
View File
@@ -1,13 +1,21 @@
page{
box-sizing: border-box;
}
.title{
.basic-info .title{
height: 40px;
}
.basic-info .title text{
display: block;
border-left: 3px solid #069F99;
height: 14px;
padding-left: 10px;
line-height: 40px;
color: #999;
font-size: 14px;
background-color: #f5f5f5;
border-radius: 2px;
display: flex;
justify-content: center;
align-items: center;
color: #333;
font-size: 15px;
font-weight: 500;
}
.basic-info view{
background-color: #FFF;
@@ -27,6 +35,7 @@ page{
.email-info text:nth-child(1){
color: #333;
font-size: 14px;
line-height: 25px;
}
.email-info{
padding: 15px;
@@ -37,6 +46,7 @@ page{
display: block;
margin-top: 10px;
text-align: center;
flex-shrink: 0;
}
.ass-project{
height: auto !important;
+1 -4
View File
@@ -1,7 +1,4 @@
{
"usingComponents": {
"popup": "../../components/popup/popup",
"dateMonth": "../../components/dateMonth/dateMonth"
},
"usingComponents": {},
"navigationStyle": "custom"
}
+6 -4
View File
@@ -40,11 +40,15 @@
</view>
</view>
<!-- 列表 -->
<view class="list-content">
<view class="list-content" wx:if="{{list && list.length}}">
<view class="list-content-item" wx:for="{{list}}" wx:key="item" wx:for-item="item" bindtap="messageDetail" data-message="{{item}}">
<view class="content-top">
<view>
<text class="blue" class="">{{item.titile_dictText}}</text>
<image wx:if="{{item.titile == 8}}" src="../../assets/images/fapiao.png"></image>
<image wx:if="{{item.titile == 7}}" src="../../assets/images/youji.png"></image>
<image wx:if="{{item.titile == 6}}" src="../../assets/images/wenjian.png"></image>
<image wx:if="{{item.titile == 3}}" src="../../assets/images/hy.png"></image>
<text class="{{item.titile == 3 ? 'blue' : item.titile == 6 ? 'yellow' : item.titile == 7 ? 'pol' : 'green' }}">{{item.titile_dictText}}</text>
</view>
<text class="content-time">{{item.sendTime}}</text>
</view>
@@ -58,5 +62,3 @@
</view>
</view>
</view>
<popup visible="{{visible}}" bindclose="close" outClickCanClose="true" bindok="ok" data="{{data}}"></popup>
<!-- <dateMonth visible="{{visibleDate}}" mode="year" outClickCanClose="true" bindok="dateOk" bindclose="close"></dateMonth> -->
+14 -2
View File
@@ -61,8 +61,8 @@ page{
margin-left: 9px;
}
.list-content{
max-height: 500px;
overflow-y: auto;
/* max-height: 500px; */
/* overflow-y: auto; */
padding: 15px 15pt;
border-radius: 10px;
}
@@ -84,6 +84,18 @@ page{
font-size: 11px;
color: #999;
}
.content-top .blue{
color: #0A72F7 !important;
}
.content-top .yellow{
color: #FF7200 !important;
}
.content-top .green{
color: #069F99 !important;
}
.content-top .pol{
color: #690AF7;
}
.content-top image{
width: 10px;
height: 10px;
+29 -44
View File
@@ -1,6 +1,7 @@
// pages/mine/mine.js
import UserApi from '../../assets/js/http/userApi'
import { encrypt } from '../../assets/js/jsencrypt/rsa'
import { wxBind } from '../../assets/js/common'
var countdown = 60; // 倒计时秒数
Page({
data: {
@@ -79,25 +80,29 @@ Page({
},
// 微信登录
wxLogin(){
let params = {
openId: this.data.openid,
rsaPublicKey: this.data.rsaPublicKey
}
UserApi.wxLogin(params).then(res=>{
if(res.success) {// 已经用手机号登录过,此时用微信快捷登录时,把微信的个人信息存进缓存(微信信息在缓存的userInfoTemp)
wx.getStorage({
key: 'userInfoTemp',
success(result){
console.log(result)
}
})
}else{ // 首次登录不能直接用微信快捷登录
wx.showToast({
title: '暂未授权手机号',
duration: 2000,
icon: "none",
})
wxBind((res)=>{
let params = {
openId: res.data.openid,
rsaPublicKey: this.data.rsaPublicKey
}
UserApi.wxLogin(params).then(res=>{
if(res.success) {// 已经用手机号登录过,此时用微信快捷登录时,把微信的个人信息存进缓存(微信信息在缓存的userInfoTemp)
wx.setStorageSync('userInfo', res.result.userInfo)
wx.setStorage({
key: 'X-Access-Token',
data: res.result.token
})
wx.switchTab({
url: '../home/home',
})
}else{ // 首次登录不能直接用微信快捷登录
wx.showToast({
title: '暂未授权手机号',
duration: 2000,
icon: "none",
})
}
})
})
},
// 登录
@@ -163,33 +168,13 @@ Page({
},
// 绑定微信
wxBind(){
const that = this
// 获取openid进行手机号和微信的绑定
wx.login({
success (res) {
if (res.code) {
//发起网络请求
wx.request({
url: 'https://api.weixin.qq.com/sns/jscode2session',
data: {
appid: 'wx24914e866df035fb',
secret: '0d2830f26f57722716249f2b2236f409',
js_code: res.code,
grant_type: 'authorization_code'
},
success (res) { // 成功拿到openId
// 微信和该账号绑定
let params = {
openId: res.openId,
rsaPublicKey: that.data.rsaPublicKey
}
UserApi.wxBind(params).then(res=>{})
}
})
} else {
console.log('授权失败!' + res.errMsg)
}
wxBind((res)=>{
let params = {
openId: res.data.openid,
rsaPublicKey: that.data.rsaPublicKey
}
// 需要判断是否绑定过微信,再进行绑定请求
UserApi.wxBind(params).then(res=>{})
})
},
+63 -129
View File
@@ -9,27 +9,16 @@ Page({
searchParams: {
pageNo: 1,
pageSize: 10,
meetingStatus: 0, // 会议状态
meetingType: 0, // 标协会议 2 工作组会议 1 国际研讨会 3 其他 4
month: '', // 运行月份
meetingSignUpType: 0, // 可报名:1 全部 0
meetingStatus: '', // 会议状态
meetingType: '', // 工作组会议:1 标协会议 2 国际研讨会 3 其他会议 4 分标委会议 5
meetingStartTime: '', // 开始时间
meetingEndTime: '' // 结束时间
},
selects: [ // 自定义选择框参数
{
select: '状态',
active: false,
tabIndex: 1
},
{
select: '会议类型',
active: false,
tabIndex: 2
},
{
select: '时间',
active: false,
tabIndex: 3
}
],
// 会议筛选参数
meetingStatus: ['可报名', '未开始', '进行中', '已结束'],
// 会议类型筛选参数
meetingType: ['工作组会议', '标协会议', '国际研讨会', '其他会议', '分标委会议'],
// 会议列表数据
meetingList:[],
// 下拉框送搜索数据
@@ -41,10 +30,47 @@ Page({
// 是哪个筛选条件
index:-1
},
// 会议状态筛选
bindStatusChange(e){
this.data.searchParams.pageNo = 1
if(e.detail.value == 0){
this.setData({
'searchParams.meetingSignUpType': 1
})
}else if(e.detail.value == 1){
this.setData({
'searchParams.meetingStatus': 2
})
}else if(e.detail.value == 2){
this.setData({
'searchParams.meetingStatus': 3
})
}else if(e.detail.value == 3){
this.setData({
'searchParams.meetingStatus': 4
})
}
this.queryMeetingList()
},
// 会议类型筛选
bindTypeChange(e){
this.data.searchParams.pageNo = 1
let value = Number(e.detail.value) + 1
this.setData({
'searchParams.meetingType': value
})
this.queryMeetingList()
},
bindDateChange(e){
this.data.searchParams.pageNo = 1
this.setData({
'searchParams.meetingStartTime': e.detail.value,
'searchParams.meetingEndTime': e.detail.value
})
this.queryMeetingList()
},
// 会议详情
meetingDetail(e){
let meetingInfo =JSON.stringify(e.currentTarget.dataset.meetinginfo)
// wx.navigateTo({
// // url: `../meetingDetailSigned/meetingDetailSigned?meetingInfo=${meetingInfo}`, // (已报名)
@@ -69,12 +95,19 @@ Page({
},
// 获取会议列表数据
queryMeetingList(){
const that = this
MeetingApi.meetingList().then(res => {
MeetingApi.meetingList(this.data.searchParams).then(res => {
if(res.success){
that.setData({
meetingList:res.result.records
})
// 搜索时,把原数据清空,重新筛选
if(this.data.searchParams.pageNo === 1) {
this.setData({
meetingList: []
})
}
if(res.result.records && res.result.records.length){
this.setData({
meetingList: [...this.data.meetingList, ...res.result.records]
})
}
}
}).catch(err => {
wx.showToast({
@@ -84,65 +117,7 @@ Page({
})
})
},
// 点击搜索条件
changeTab(e){
let index = e.currentTarget.dataset.index
switch(index) {
case 1: this.setData({
visible:true,
selectData:[
{label:'可报名',value:1},
{label:'未开始',value:1},
{label:'进行中',value:1},
{label:'已结束',value:1},
]
})
break
case 2:this.setData({
visible:true,
selectData:[
{label:'工作组会议',value:1},
{label:'标协会议',value:2},
{label:'国际研讨会',value:3},
{label:'其他会议',value:4},
{label:'分标委会议',value:5},
]
})
break
case 3 : this.setData({
visibleDate:true
})
}
},
// 关闭弹出层
close() {
this.setData({
visible: false
})
},
// 下拉框选中
ok(e){
this.data.pageNo = 1
if(this.data.index === 0){
this.setData({
'searchParams.needInvoice': e.detail
})
}else if(this.data.index === 1){
this.setData({
'searchParams.pack': e.detail
})
}
this.loadData()
},
// 日期选中
dateOk(value){
// this.data.pageNo = 1
this.setData({
// "searchParams.year": value.detail,
visibleDate: false
})
this.loadData()
},
/**
* 生命周期函数--监听页面加载
*/
@@ -150,52 +125,11 @@ Page({
this.queryMeetingList()
},
/**
* 生命周期函数--监听页面初次渲染完成
*/
onReady: function () {
},
/**
* 生命周期函数--监听页面显示
*/
onShow: function () {
},
/**
* 生命周期函数--监听页面隐藏
*/
onHide: function () {
},
/**
* 生命周期函数--监听页面卸载
*/
onUnload: function () {
},
/**
* 页面相关事件处理函数--监听用户下拉动作
*/
onPullDownRefresh: function () {
},
/**
* 页面上拉触底事件的处理函数
*/
onReachBottom: function () {
},
/**
* 用户点击右上角分享
*/
onShareAppMessage: function () {
this.data.searchParams.pageNo++
this.queryMeetingList()
}
})
+21 -5
View File
@@ -1,10 +1,26 @@
<!--pages/meeting/meeting.wxml首页会议活动-->
<view class="select-list">
<view class="select-item" bindtap="changeTab" data-index="{{select.tabIndex}}" wx:for="{{selects}}" wx:for-item="select" wx:key="tabIndex">
<text>{{select.select}}</text>
<image wx:if="{{!select.active}}" src="../../assets/images/toTop.png"></image>
<image wx:if="{{select.active}}" src="../../assets/images/toBottom.png"></image>
</view>
<view class="select-item">
<picker bindchange="bindStatusChange" range="{{meetingStatus}}">
<view class="picker">
<text>状态</text>
</view>
</picker>
</view>
<view class="select-item">
<picker bindchange="bindTypeChange" range="{{meetingType}}">
<view class="picker">
<text>会议类型</text>
</view>
</picker>
</view>
<view class="select-item">
<picker mode="date" start="2021-01-01" end="2030-12-31" bindchange="bindDateChange">
<view class="picker">
<text>时间</text>
</view>
</picker>
</view>
</view>
<view class="list">
<view class="list-item" wx:for="{{meetingList}}" bindtap="meetingDetail" data-meetinginfo="{{item}}" wx:key="item">
+11
View File
@@ -24,6 +24,17 @@ Page({
url: '../upDateInfo/upDateInfo',
})
},
// 解除绑定
unBind(){
UserApi.wxUnbind().then(res=>{
if(res.success){
wx.showToast({
title: res.result,
icon: "none"
})
}
})
},
// 扫码签到
scanCode(){
// wx.scanCode({
+2 -2
View File
@@ -31,9 +31,9 @@
</view>
<image src="../../assets/images/more.png"></image>
</view>
<view class="list-item" bindtap="upDateInfo">
<view class="list-item" bindtap="unBind">
<view class="item-title">
<image src="../../assets/images/xgmm.png"></image>
<image src="../../assets/images/jcbd.png"></image>
<text>解除绑定</text>
</view>
<image src="../../assets/images/more.png"></image>
+1
View File
@@ -35,6 +35,7 @@ Page({
* 生命周期函数--监听页面显示
*/
onShow: function () {
this.data.pageNo = 1
this.loadData()
},
+29 -3
View File
@@ -6,6 +6,7 @@ Page({
* 页面的初始数据
*/
data: {
userId: '',
list: [],
pageNo: 1,
pageSize: 10
@@ -31,16 +32,41 @@ Page({
let fileType = sliceFileTypeByFileName(fileObj.fileName)
// 文件类型不是docx,doc,pdf时,已邮件形式发送到参会人的邮箱
if(fileType !== 'docx' && fileType !== 'doc' && fileType !== 'pdf') {
let params = {
fileId: fileObj.fileId,
userId: this.data.userId
}
UserApi.sendEmail(params).then(res=>{
if(res.success){
wx.showToast({
title: '文件已发送到您的邮箱',
icon: 'none'
})
}else{
wx.showToast({
title: res.message,
icon: "none"
})
}
})
}else {
previewFile(fileObj.filId, fileObj.fileName)
previewFile(fileObj.fileId, fileObj.fileName)
}
},
/**
* 生命周期函数--监听页面显示
*/
onShow: function () {
this.loadData()
const that = this
that.loadData()
wx.getStorage({
key: 'userInfo',
success(res){
that.setData({
userId: res.data.id
})
}
})
},
/**
-67
View File
@@ -1,67 +0,0 @@
// pages/meeting/meeting.js
Page({
/**
* 页面的初始数据
*/
data: {
list: [,1,1,1,1,1,1,1,1]
},
/**
* 生命周期函数--监听页面加载
*/
onLoad: function (options) {
},
/**
* 生命周期函数--监听页面初次渲染完成
*/
onReady: function () {
},
/**
* 生命周期函数--监听页面显示
*/
onShow: function () {
},
/**
* 生命周期函数--监听页面隐藏
*/
onHide: function () {
},
/**
* 生命周期函数--监听页面卸载
*/
onUnload: function () {
},
/**
* 页面相关事件处理函数--监听用户下拉动作
*/
onPullDownRefresh: function () {
},
/**
* 页面上拉触底事件的处理函数
*/
onReachBottom: function () {
},
/**
* 用户点击右上角分享
*/
onShareAppMessage: function () {
}
})
-3
View File
@@ -1,3 +0,0 @@
{
"usingComponents": {}
}
-14
View File
@@ -1,14 +0,0 @@
<!--pages/meeting/meeting.wxml我的会议-->
<view class="list-box">
<view class="list-item" wx:for="list" wx:key="item" bindtap="meetingDetail">
<view class="list-info">
<text>会议列表未定</text>
<text>合同金额:5000元</text>
</view>
<view class="list-info">
<text>合同编号:002</text>
<text>负责人:张三</text>
</view>
</view>
</view>
-24
View File
@@ -1,24 +0,0 @@
/* pages/mineContract/mineContract.wxss */
page{
background-color: #F5F5F5;
padding: 15px;
width: 100%;
box-sizing: border-box;
}
.list-item{
display: flex;
padding: 15px;
flex-direction: column;
background-color: #fff;
border-radius: 10px;
}
.list-item:not(:first-child){
margin-top: 10px;
}
.list-item .list-info{
color: #333;
display: flex;
justify-content: space-between;
align-items: center;
font-size: 14px;
}
+7 -25
View File
@@ -1,6 +1,7 @@
// pages/meeting/meeting.js
import UserApi from '../../assets/js/http/userApi'
import { encrypt } from '../../assets/js/jsencrypt/rsa'
import { wxBind } from '../../assets/js/common'
// var countdown = 60; // 倒计时秒数
Page({
@@ -138,32 +139,13 @@ Page({
// 绑定微信
wxBind(){
// 获取openid进行手机号和微信的绑定
wx.login({
success (res) {
if (res.code) {
//发起网络请求
wx.request({
url: 'https://api.weixin.qq.com/sns/jscode2session',
data: {
appid: 'wx24914e866df035fb',
secret: '0d2830f26f57722716249f2b2236f409',
js_code: res.code,
grant_type: 'authorization_code'
},
success (res) { // 成功拿到openId
// 微信和该账号绑定
// 微信和该账号绑定
let params = {
openId: res.openId,
rsaPublicKey: that.data.rsaPublicKey
}
UserApi.wxBind(params).then(res=>{})
}
})
} else {
console.log('授权失败!' + res.errMsg)
}
wxBind((res)=>{
let params = {
openId: res.data.openid,
rsaPublicKey: that.data.rsaPublicKey
}
// 需要判断是否绑定过微信,再进行绑定请求
UserApi.wxBind(params).then(res=>{})
})
},
/**
+1 -1
View File
@@ -56,7 +56,7 @@ Page({
projectDetail(e){
console.log(e)
wx.navigateTo({
url: `../projectDetail/projectDetail?id=${e.currentTarget.dataset.project.id}`,
url: `../projectDetail/projectDetail?id=${e.currentTarget.dataset.project.id}&type=${this.data.type}`,
})
},
loadData(){
+1 -4
View File
@@ -1,7 +1,4 @@
{
"navigationBarTitleText": "项目",
"usingComponents": {
"popup": "../../components/popup/popup",
"dateMonth": "../../components/dateMonth/dateMonth"
}
"usingComponents": {}
}
+6 -12
View File
@@ -1,32 +1,26 @@
<!--pages/meeting/meeting.wxml首页会议活动-->
<view class="select-list">
<!-- <view class="select-item" bindtap="changeTab" data-index="{{index}}" wx:for="{{selects}}" wx:for-item="select" wx:key="tabIndex">
<text>{{select.select}}</text>
<image wx:if="{{!select.active}}" src="../../assets/images/toTop.png"></image>
<image wx:if="{{select.active}}" src="../../assets/images/toBottom.png"></image>
</view> -->
<!-- 发票 -->
<view class="select-item">
<picker bindchange="bindNeedInvoiceChange" value="{{searchParams.needInvoice}}" range="{{['是','否']}}">
<picker bindchange="bindNeedInvoiceChange" range="{{['是','否']}}">
<view class="picker">
<text>发票{{searchParams.needInvoice == '' ? '' : searchParams.needInvoice == 1 ? ' :是' : ' :否'}}</text>
<text>发票</text>
</view>
</picker>
</view>
<!-- 打包 -->
<view class="select-item">
<picker bindchange="bindPackChange" value="{{searchParams.pack}}" range="{{['是','否']}}">
<picker bindchange="bindPackChange" range="{{['是','否']}}">
<view class="picker">
<text>打包{{searchParams.pack == '' ? '' : searchParams.pack == 1 ? ' :是' : ' :否'}}</text>
<text>打包</text>
</view>
</picker>
</view>
<!-- 年份 -->
<view class="select-item">
<picker mode="date" fields="year" value="{{searchParams.year}}" start="2021" end="2030" bindchange="bindDateChange">
<picker mode="date" fields="year" start="2021" end="2030" bindchange="bindDateChange">
<view class="picker">
<text wx:if="{{!searchParams.year}}">时间</text>
<text wx:if="{{searchParams.year}}">时间:{{searchParams.year}}年</text>
<text>时间</text>
</view>
</picker>
</view>
+43 -11
View File
@@ -1,5 +1,6 @@
import UserApi from '../../assets/js/http/userApi'
import { previewFile, initFileList } from '../../assets/js/preview'
import MeetingApi from '../../assets/js/http/meetingApi'
Page({
/**
@@ -7,34 +8,65 @@ Page({
*/
data: {
form: {},
id: '', // 在工作组id,项目id
showMeeting: false, // 会议信息的显隐
projectFileList: [], // 项目资料文件
notifyFileList: [] // 通知文件
notifyFileList: [], // 通知文件
meetingList: [] // 会议文件
},
// 预览
preview(e){
const fileObj = e.currentTarget.dataset.file
previewFile(fileObj.id,fileObj.name)
},
// 获取更多会议信息数据
goMoreMeeting(){
wx.navigateTo({
url: `../meeting/meeting?workingGroupProjectId=${this.data.id}`,
})
},
/**
* 生命周期函数--监听页面加载
*/
onLoad: function (options) {
UserApi.projectDetail({id: options.id}).then(res=>{
this.data.id = options.id
if(options.type == 'work') { // 工作组项目有会议详情
this.setData({
showMeeting: true
})
MeetingApi.meetingList({workingGroupProjectId: this.data.id}).then(res=>{
console.log(res)
if(res.success){
if(res.result.records && res.result.records.length >= 1){
this.setData({
meetingList: res.result.records
})
}else if(res.result.records && res.result.records.length >= 2){
this.setData({
meetingList: res.result.records.slice(1)
})
}
}
})
}
UserApi.projectDetail({id: this.data.id}).then(res=>{
this.setData({
form: res.result
})
// 获取项目资料文件list
initFileList(this.data.form.files).then(res => {
this.setData({
projectFileList: res
if(this.data.form) {
initFileList(this.data.form.files).then(res => {
this.setData({
projectFileList: res
})
})
})
// 获取通知文件list
initFileList(this.data.form.chargeNoticeId).then(res => {
this.setData({
notifyFileList: res
// 获取通知文件list
initFileList(this.data.form.chargeNoticeId).then(res => {
this.setData({
notifyFileList: res
})
})
})
}
})
},
+1
View File
@@ -1,3 +1,4 @@
{
"navigationBarTitleText": "详情",
"usingComponents": {}
}
+8 -6
View File
@@ -74,17 +74,18 @@
<text wx:if="{{projectFileList.length == 0}}">无</text>
</view>
</view>
<view class="basic-info" style="margin-top: 10px;">
<view class="basic-info" style="margin-top: 10px;" wx:if="{{showMeeting}}">
<view class="title">
<text>会议信息</text>
<text style="border: none;color: #999; font-size: 13px;" bindtap="goMoreMeeting">更多>></text>
</view>
<view style="padding: 0 15px;" wx:for="{{form.paymentRecord}}" wx:key="item">
<view style="padding: 0 15px;" wx:for="{{meetingList}}" wx:key="item">
<view class="meeting-info">
<text>hi一</text>
<text style="color: #069F99;">查看详情</text>
<text>{{item.meetingName}}</text>
<text style="color: #069F99;" bindtap="meetingDetail">查看详情</text>
</view>
<text wx:if="{{form.paymentRecord.length == 0}}">暂无会议记录!</text>
</view>
<text wx:if="{{meetingList.length == 0}}" class="no-data">暂无会议记录!</text>
</view>
<view class="basic-info" style="margin-top: 10px;">
<view class="title">
@@ -92,8 +93,8 @@
</view>
<view style="padding: 0 15px;" wx:for="{{form.paymentRecord}}" wx:key="item">
<text wx:if="{{form.paymentRecord && form.paymentRecord.length}}">{{item.paymentDate}}到账{{item.amountReceived}}元</text>
<text wx:if="{{form.paymentRecord.length == 0}}">暂无到账记录!</text>
</view>
<text class="no-data" style="height: 50px;" wx:if="{{!form.paymentRecord}}">暂无到账记录!</text>
</view>
<view class="basic-info" style="margin-top: 10px;">
<view class="title">
@@ -130,5 +131,6 @@
<text wx:if="{{item.postStatus == 1}}">查看物流</text>
</view>
</view>
<text class="no-data" style="height: 50px;" wx:if="{{!form.mailBill}}">暂无邮寄记录!</text>
</view>
</view>
+22
View File
@@ -34,6 +34,10 @@ page{
.basic-info view:last-child{
border-bottom: 0;
}
.basic-info view text:nth-child(1){
flex-shrink: 0;
margin-right: 10px;
}
.meeting-name{
margin-bottom: 10px;
}
@@ -136,6 +140,12 @@ page{
flex-direction: column;
align-items: flex-end !important;
height: auto !important;
overflow: hidden;
}
.info-file text{
overflow:hidden;
text-overflow: ellipsis;
white-space: nowrap;
}
.meeting-info{
width: 100%;
@@ -144,6 +154,16 @@ page{
justify-content: space-between !important;
align-items: center;
padding: 0 !important;
border: none;
}
.meeting-info text:nth-child(1){
flex-shrink: 1 !important;
text-overflow: ellipsis;
white-space: nowrap;
overflow: hidden;
}
.meeting-info text:nth-child(2){
flex-shrink: 0 !important;
}
.basic-info .way{
padding: 0 15px;
@@ -169,10 +189,12 @@ page{
.way-info .way-center text:nth-child(1){
color: #333;
font-size: 14px;
flex-shrink: 0;
}
.way-info .way-center text:nth-child(2){
color: #999;
font-size: 11px;
flex-shrink: 0;
}
.way-info .green {
width: 20px;
+19 -9
View File
@@ -6,9 +6,9 @@ Page({
*/
data: {
form: {},
isSigned: 0, // 默认未报名
isSigned: 1, // 默认未报名
fileId: '', // 图片id
src: null // 签名之后,保存签名的图片地址
src: 'null' // 签名之后,保存签名的图片地址
},
// 去签到页
scanSign(){
@@ -25,14 +25,25 @@ Page({
UserApi.scanSure(params).then(res=>{
if(res.success){
this.setData({
isSigned: !this.data.isSigned
'form.checkIn': 1
})
}else{
wx.showToast({
title: res.message,
icon: "none",
duration: 2000
this.setData({
'form.checkIn': 0
})
if(res.message == '签到图片'){
wx.showToast({
title: '请手动签到',
icon: "none",
duration: 2000
})
}else{
wx.showToast({
title: res.message,
icon: "none",
duration: 2000
})
}
}
})
},
@@ -48,10 +59,9 @@ Page({
onLoad: function (options) {
console.log(options)
this.setData({
isSigned: options.signed
isSigned: options.signed,
})
let form = JSON.parse(options.meeting)
console.log(form)
this.setData({
form
})
+7 -5
View File
@@ -1,4 +1,5 @@
<view class="basic-info">
<image wx:if="{{form.checkIn}}" src="../../assets/images/yqd.png" class="sign-image"></image>
<view>
<text>会议名称</text>
<text>{{form.meetingName}}</text>
@@ -13,7 +14,7 @@
</view>
<view>
<text>召开时间</text>
<text>{{form.startTime}}</text>
<text>{{form.startTime}}</text>
</view>
<!-- 已报名信息显示的内容start -->
<view wx:if="{{isSigned}}">
@@ -26,9 +27,10 @@
</view>
<view wx:if="{{isSigned}}">
<text>是否签到</text>
<text>{{form.checkIn_dictText}}</text>
<text>{{form.checkIn ? '是' : '否'}}</text>
</view>
<view wx:if="{{isSigned}}">
<!-- 未签到时,显示“手动签到” checkIn: 是否签到 -->
<view wx:if="{{!form.checkIn}}">
<text>手动签到</text>
<text style="color: #069F99;" bindtap="scanSign">签到</text>
</view>
@@ -36,12 +38,12 @@
<view class="imageBox" wx:if="{{src}}">
<image src="{{src}}" ></image>
</view>
<view class="scanSign" wx:if="{{isSigned}}">
<view class="scanSign" wx:if="{{isSigned && !form.checkIn}}">
<text bindtap="sureSign">签到</text>
</view>
<!-- 已报名信息显示的内容end -->
<!-- 未报名显示的内容start -->
<!-- 未报名显示的内容start -->
<view class="warning-text" wx:if="{{!isSigned}}">
<image src="../../assets/images/warning.png"></image>
+12
View File
@@ -1,3 +1,15 @@
.basic-info{
position: relative;
}
.sign-image{
z-index: 9;
position: absolute;
width: 98px;
height: 85px;
top: 10px;
left: 50%;
transform: translateX(-50%);
}
.basic-info .title{
height: 40px;
}
+10 -23
View File
@@ -1,6 +1,7 @@
// pages/meeting/meeting.js
import UserApi from '../../assets/js/http/userApi'
import { encrypt } from '../../assets/js/jsencrypt/rsa'
import { wxBind } from '../../assets/js/common'
Page({
/**
* 页面的初始数据
@@ -83,11 +84,11 @@ Page({
key: 'X-Access-Token',
data: that.data.password
})
// 绑定微信
this.wxBind()
wx.switchTab({
url: '../home/home',
})
// 绑定微信
this.wxBind()
} else {
wx.showToast({
title: '登录失败',
@@ -100,28 +101,14 @@ Page({
},
// 绑定微信
wxBind(){
// 获取openid进行手机号和微信的绑定
wx.login({
success (res) {
if (res.code) {
//发起网络请求
wx.request({
url: 'https://api.weixin.qq.com/sns/jscode2session',
data: {
appid: 'wx24914e866df035fb',
secret: '0d2830f26f57722716249f2b2236f409',
js_code: res.code,
grant_type: 'authorization_code'
},
success (res) { // 成功拿到openId
// 微信和该账号绑定
}
})
} else {
console.log('授权失败!' + res.errMsg)
}
wxBind((res)=>{
// 微信和该账号绑定
let params = {
openId: res.data.openid,
rsaPublicKey: that.data.rsaPublicKey
}
// 需要判断是否绑定过微信,再进行绑定请求
UserApi.wxBind(params).then(res=>{})
})
},
/**