我的页面,首页来款项目

This commit is contained in:
姚亚男
2021-10-12 18:17:26 +08:00
parent 32e229fec3
commit 491caf06a3
41 changed files with 756 additions and 412 deletions
+8
View File
@@ -839,3 +839,11 @@ color: #2A2A2A;
.form-item .count{ .form-item .count{
background-color: #aaa; background-color: #aaa;
} }
.no-data{
width: 100%;
height:200px;
display: flex;
justify-content: center;
align-items: center;
color: #999;
}
Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.4 KiB

+2
View File
@@ -3,6 +3,7 @@ import http from './http.js'
// let baseUrl = 'https://share.hzwlsoft.com' // let baseUrl = 'https://share.hzwlsoft.com'
// let baseUrl = 'http://localhost:8080' // let baseUrl = 'http://localhost:8080'
let baseUrl = 'http://10.0.1.9:8080' let baseUrl = 'http://10.0.1.9:8080'
let URL_CONFIG = '/jero-boot/'
// let baseUrl = 'http://192.168.1.110:8080' // let baseUrl = 'http://192.168.1.110:8080'
/* 配置路径 */ /* 配置路径 */
@@ -14,6 +15,7 @@ let apiUrl = {
export default { export default {
baseUrl, baseUrl,
URL_CONFIG,
//微信账号密码登陆--1 //微信账号密码登陆--1
wxLoginByUserName(option, success, error) { wxLoginByUserName(option, success, error) {
http.post1(baseUrl + apiUrl.wxLoginByUserName, option).then(res => { http.post1(baseUrl + apiUrl.wxLoginByUserName, option).then(res => {
+11 -8
View File
@@ -21,27 +21,30 @@ const UserApi = {
// 短信登录 // 短信登录
codeLogin: (params) => http.post(`${URL_CONFIG}company/smsLogin`, params), codeLogin: (params) => http.post(`${URL_CONFIG}company/smsLogin`, params),
// 设置密码 // 设置密码
setPassword: (params) => http.post(`${URL_CONFIG}company/changePassword`, params), setPassword: (params) => http.post(`${URL_CONFIG}company/changePasswordWithToken`, params),
// 修改密码
updatePassword: (params) => http.post(`${URL_CONFIG}company/changePassword`, params),
// 扫码签到
scanCode: (params) => http.post(`${URL_CONFIG}company/changePassword`, params),
// 退出 // 退出
logout: (params) => http.post(`${URL_CONFIG}sys/logout`, params), logout: (params) => http.post(`${URL_CONFIG}sys/logout`, params),
// 短信验证码修改密码
updatePassword: (params) => http.post(`${URL_CONFIG}company/verificationChangePassword`, params),
// 个人信息 // 个人信息
mineInfo: (params) => http.get(`${URL_CONFIG}company/payContactsManagement/queryByIdMeeting`, params), mineInfo: (params) => http.get(`${URL_CONFIG}company/payContactsManagement/queryByIdMeeting`, params),
// 编辑个人信息提交 // 编辑个人信息提交
editMineInfo: (params) => http.post(`${URL_CONFIG}company/payContactsManagement/companyEdit`, params), editMineInfo: (params) => http.post(`${URL_CONFIG}company/payContactsManagement/companyEdit`, params),
// 我的资料 // 我的资料
dataList: (params) => http.get(`${URL_CONFIG}project/payWorkingGroupDistributionRecord/listForFile`, params), dataList: (params) => http.get(`${URL_CONFIG}project/payWorkingGroupDistributionRecord/listForFile`, params),
// 我的合同
contractList: (params) => http.get(`${URL_CONFIG}contract/payIncomeContract/queryCompanyPageList`, params),
// 合同详情
contractDetail: (params) => http.get(`${URL_CONFIG}contract/payIncomeContract/queryCompanyById`, params),
// 预览文件
previewFile: (params) => http.get(`${URL_CONFIG}sys/common/download/${params.fileId}`),
// 首页接口 // 首页接口
// 来款项目分页 // 来款项目分页
projectList: (params) => http.get(`${URL_CONFIG}project/payCommonProject/queryCompanyPageList`, params), projectList: (params) => http.get(`${URL_CONFIG}project/payCommonProject/queryCompanyPageList`, params),
// 来款项目详情 // 来款项目详情
projectDetail: (params) => http.get(`${URL_CONFIG}project/payCommonProject/queryCompanyById`, params), projectDetail: (params) => http.get(`${URL_CONFIG}project/payCommonProject/queryCompanyById`, params),
// 会议活动分页
meetingList: (params) => http.get(`${URL_CONFIG}meeting/payMeeting/pageContract`, params),
// 会议活动详情
meetingDetail: (params) => http.get(`${URL_CONFIG}meeting/payMeeting/queryById`, params),
} }
export default UserApi export default UserApi
+1 -1
View File
@@ -44,7 +44,7 @@ export function previewFile(fileId,fileName) {
} }
// 截取文件类型的方法 // 截取文件类型的方法
function sliceFileTypeByFileName(fileName){ export function sliceFileTypeByFileName(fileName){
// 获取 . 的索引 // 获取 . 的索引
let index = fileName.lastIndexOf('.') let index = fileName.lastIndexOf('.')
// 截取文件类型 // 截取文件类型
+53 -2
View File
@@ -10,7 +10,31 @@ for (let i = 1; i <= 12; i++) {
months.push(i) months.push(i)
} }
Page({ Component({
/**
* 组件的属性列表
*/
properties: {
// 是否弹出显示
visible: {
type: Boolean,
value: false
},
//点击外部的遮罩层是否允许关闭
outClickCanClose: {
type: Boolean,
value: false
},
// 模式,年或者月,默认只有年
mode: {
type: String,
value: 'year'
}
},
/**
* 组件的初始数据
*/
data: { data: {
years: years, years: years,
year: date.getFullYear(), year: date.getFullYear(),
@@ -18,12 +42,39 @@ Page({
month: 2, month: 2,
value: [9999, 1, 1], value: [9999, 1, 1],
}, },
/**
* 组件的方法列表
*/
methods: {
closePopup() {
this.triggerEvent("close", {
visible: this.data.visible
})
},
outClick(){
if (this.data.outClickCanClose){
this.triggerEvent("close", {
visible: this.data.visible
})
}
},
// 日期改变
bindChange: function (e) { bindChange: function (e) {
const val = e.detail.value const val = e.detail.value
this.setData({ this.setData({
year: this.data.years[val[0]], year: this.data.years[val[0]],
month: this.data.months[val[1]], month: this.data.months[val[1]],
}) })
console.log(this.data) },
ok(e){
let value = ''
if(this.properties.mode === 'month'){
value = this.data.year + '-' + this.data.month
}else {
value = this.data.year
}
this.triggerEvent("ok", value)
}
} }
}) })
+2 -2
View File
@@ -1,12 +1,12 @@
<view class="i-modal-mask {{ visible ? 'i-modal-mask-show' : '' }}" catchtap='outClick'> <view class="i-modal-mask {{ visible ? 'i-modal-mask-show' : '' }}" catchtap='outClick'>
<view class="box"> <view class="box">
<view class="title">{{year}}年{{month}}月</view> <view class="title">{{year}}年{{month}}月</view>
<picker-view indicator-style="height: 50px;" style="width: 100%; height: 300px;" value="{{value}}" <picker-view indicator-style="height: 50px;" style="width: 100%; height: 300px;" value="{{value}}" bindtap="ok"
bindchange="bindChange"> bindchange="bindChange">
<picker-view-column> <picker-view-column>
<view wx:for="{{years}}" class="item">{{item}}年</view> <view wx:for="{{years}}" class="item">{{item}}年</view>
</picker-view-column> </picker-view-column>
<picker-view-column> <picker-view-column wx:if="{{mode === 'month'}}">
<view wx:for="{{months}}" class="item">{{item}}月</view> <view wx:for="{{months}}" class="item">{{item}}月</view>
</picker-view-column> </picker-view-column>
</picker-view> </picker-view>
+26 -1
View File
@@ -1,5 +1,30 @@
.box{ .box{
height: 300px; width: 85%;
height: 360px;
background-color: #fff;
}
.i-modal-mask {
position: fixed;
top: 0;
left: 0;
right: 0;
bottom: 0;
background: rgba(0, 0, 0, 0.7);
z-index: 1000;
transition: all 0.2s ease-in-out;
opacity: 0;
visibility: hidden;
width: 100%;
height: 100%;
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
}
.i-modal-mask-show {
opacity: 1;
visibility: visible;
} }
.title{ .title{
width: 100%; width: 100%;
-26
View File
@@ -1,26 +0,0 @@
<view>
<view class="title">基本信息</view>
<view class="basic-info">
<view>
<text>合同编号</text>
<text>arff4ds8a3s6651</text>
</view>
<view>
<text>合同名称</text>
<text>找找</text>
</view>
<view>
<text>负责人</text>
<text>张三</text>
</view>
<view>
<text>合同金额</text>
<text>500元</text>
</view>
</view>
<view class="title">邮寄信息</view>
<view class="email-info">
<text>001由李四于2021年12月20日邮寄,快递号:14567</text>
<text>查看物流</text>
</view>
</view>
-34
View File
@@ -1,34 +0,0 @@
page{
box-sizing: border-box;
}
.title{
height: 40px;
padding-left: 10px;
line-height: 40px;
color: #999;
font-size: 14px;
background-color: #f5f5f5;
}
.basic-info view{
padding: 15px;
height: 40px;
display: flex;
justify-content: space-between;
align-items: center;
color: #333;
font-size: 14px;
}
.email-info text:nth-child(1){
color: #333;
font-size: 14px;
}
.email-info{
padding: 15px;
}
.email-info text:nth-child(2){
color: #069F99;
font-size: 14px;
display: block;
margin-top: 10px;
text-align: center;
}
+15 -2
View File
@@ -1,10 +1,14 @@
// pages/meeting/meeting.js import UserApi from '../../assets/js/http/userApi'
Page({ Page({
/** /**
* 页面的初始数据 * 页面的初始数据
*/ */
data: { data: {
form: {}
},
// 查看物流
track(){
}, },
@@ -12,7 +16,16 @@ Page({
* 生命周期函数--监听页面加载 * 生命周期函数--监听页面加载
*/ */
onLoad: function (options) { onLoad: function (options) {
console.log(options)
let id = options.id // 合同id
UserApi.contractDetail({id}).then(res=>{
console.log(res)
if(res.success){
this.setData({
form: res.result
})
}
})
}, },
/** /**
+12 -6
View File
@@ -3,24 +3,30 @@
<view class="basic-info"> <view class="basic-info">
<view> <view>
<text>合同编号</text> <text>合同编号</text>
<text>arff4ds8a3s6651</text> <text>{{form.contractNum}}</text>
</view> </view>
<view> <view>
<text>合同名称</text> <text>合同名称</text>
<text>找找</text> <text>{{form.contractName}}</text>
</view> </view>
<view> <view>
<text>负责人</text> <text>负责人</text>
<text>张三</text> <text>{{form.principalName}}</text>
</view> </view>
<view> <view>
<text>合同金额</text> <text>合同金额</text>
<text>500元</text> <text>{{form.contractAmount ? form.contractAmount + '元' : 0}}</text>
</view>
<view>
<text>关联项目</text>
<view class="ass-project">
<text wx:for="{{form.listProject}}" wx:key="item">{{item.chargeUse_dictText}}</text>
</view>
</view> </view>
</view> </view>
<view class="title">邮寄信息</view> <view class="title">邮寄信息</view>
<view class="email-info"> <view class="email-info">
<text>001由李四于2021年12月20日邮寄,快递号:14567</text> <text>{{form.contractNum}}由{{form.payMailContract.createBy}}于{{form.payMailContract.createTime}}邮寄,快递号:{{form.payMailContract.postNo}}</text>
<text>查看物流</text> <text bindtap="track">查看物流</text>
</view> </view>
</view> </view>
+19
View File
@@ -10,6 +10,7 @@ page{
background-color: #f5f5f5; background-color: #f5f5f5;
} }
.basic-info view{ .basic-info view{
background-color: #FFF;
padding: 15px; padding: 15px;
height: 40px; height: 40px;
display: flex; display: flex;
@@ -17,6 +18,11 @@ page{
align-items: center; align-items: center;
color: #333; color: #333;
font-size: 14px; font-size: 14px;
border-bottom: 0.5px solid #f5f5f5;
position: relative;
}
.basic-info view:last-child{
border-bottom: 0;
} }
.email-info text:nth-child(1){ .email-info text:nth-child(1){
color: #333; color: #333;
@@ -32,3 +38,16 @@ page{
margin-top: 10px; margin-top: 10px;
text-align: center; text-align: center;
} }
.ass-project{
height: auto !important;
padding: 0 !important;
display: flex;
flex-direction: column;
justify-content: flex-end;
align-items: flex-end;
}
.ass-project text{
color: #069F99;
display: block;
line-height: 25px;
}
+12 -7
View File
@@ -18,6 +18,7 @@ Page({
}, },
// 获取验证码 // 获取验证码
getVerCode() { getVerCode() {
countdown = 60
if (/^(13[0-9]|14[01456879]|15[0-35-9]|16[2567]|17[0-8]|18[0-9]|19[0-35-9])\d{8}$/.test(this.data.phone)) { if (/^(13[0-9]|14[01456879]|15[0-35-9]|16[2567]|17[0-8]|18[0-9]|19[0-35-9])\d{8}$/.test(this.data.phone)) {
UserApi.sendCode({ UserApi.sendCode({
phone: this.data.phone phone: this.data.phone
@@ -27,8 +28,8 @@ Page({
this.countDown() this.countDown()
} else { } else {
wx.showToast({ wx.showToast({
title: '获取验证码失败', title: res.message,
icon: 'error', icon: 'none',
duration: 2000 duration: 2000
}) })
} }
@@ -74,9 +75,9 @@ Page({
// 请求短信登录start // 请求短信登录start
UserApi.codeLogin(params).then(res => { UserApi.codeLogin(params).then(res => {
if (res.success) { if (res.success) {
// 存token和userInfo // 存临时token和userInfo
wx.setStorage({ wx.setStorage({
key: 'X-Access-Token', key: 'token-temp',
data: res.result.token data: res.result.token
}) })
wx.setStorage({ wx.setStorage({
@@ -89,15 +90,19 @@ Page({
url: '../setPassword/setPassword', url: '../setPassword/setPassword',
}) })
}else{ }else{
// 跳转设置密码页 // 存token和userInfo
wx.setStorage({
key: 'X-Access-Token',
data: res.result.token
})
// 跳转首页
wx.switchTab({ wx.switchTab({
url: '../home/home', url: '../home/home',
}) })
} }
} else { } else {
wx.showToast({ wx.showToast({
title: '登录失败', title: res.message,
icon: 'error', icon: 'error',
duration: 2000 duration: 2000
}) })
+1
View File
@@ -17,5 +17,6 @@
<view class="btn-area"> <view class="btn-area">
<button type="primary" formType="submit">登录</button> <button type="primary" formType="submit">登录</button>
</view> </view>
<!-- <view bindtap="forget" class="forget">忘记密码?</view> -->
</form> </form>
</view> </view>
+6
View File
@@ -6,3 +6,9 @@ page {
.form-box{ .form-box{
transform: translateY(100%); transform: translateY(100%);
} }
/* .forget{
color: #999;
font-size: 14px;
text-align: right;
margin-top: 20px;
} */
+25 -47
View File
@@ -6,7 +6,9 @@ Page({
* 页面的初始数据 * 页面的初始数据
*/ */
data: { data: {
userId: '' userId: '',
name: '昵称',
phone: ''
}, },
// 个人信息 // 个人信息
mineInfo(){ mineInfo(){
@@ -25,10 +27,19 @@ Page({
wx.scanCode({ wx.scanCode({
onlyFromCamera: false, onlyFromCamera: false,
scanType: [], scanType: [],
success: (result) => {}, success: (result) => {
fail: (res) => {}, console.log(result)
complete: (res) => {}, },
fail: (res) => {
console.log(result)
},
complete: (res) => {
console.log(result)
},
}) })
// wx.navigateTo({
// url: '../scanSign/scanSign',
// })
}, },
// 我的资料 // 我的资料
mineData(){ mineData(){
@@ -56,6 +67,11 @@ Page({
wx.redirectTo({ wx.redirectTo({
url: '../login/login', url: '../login/login',
}) })
}else{
wx.clearStorage()
wx.redirectTo({
url: '../login/login',
})
} }
}) })
} else if (res.cancel) {} } else if (res.cancel) {}
@@ -66,14 +82,11 @@ Page({
* 生命周期函数--监听页面加载 * 生命周期函数--监听页面加载
*/ */
onLoad: function (options) { onLoad: function (options) {
let userInfo = wx.getStorageSync('userInfo')
}, this.setData({
name: userInfo.name,
/** phone: userInfo.phone.substr(0, 3) + '-' + userInfo.phone.substr(3, 4) + '-' + userInfo.phone.substr(7, 4)
* 生命周期函数--监听页面初次渲染完成 })
*/
onReady: function () {
}, },
/** /**
@@ -81,40 +94,5 @@ Page({
*/ */
onShow: function () { onShow: function () {
},
/**
* 生命周期函数--监听页面隐藏
*/
onHide: function () {
},
/**
* 生命周期函数--监听页面卸载
*/
onUnload: function () {
},
/**
* 页面相关事件处理函数--监听用户下拉动作
*/
onPullDownRefresh: function () {
},
/**
* 页面上拉触底事件的处理函数
*/
onReachBottom: function () {
},
/**
* 用户点击右上角分享
*/
onShareAppMessage: function () {
} }
}) })
+4 -22
View File
@@ -5,21 +5,10 @@
<!-- 顶部选项栏 --> <!-- 顶部选项栏 -->
<view class="select-box"> <view class="select-box">
<view class="avator"> <view class="avator">
<image src="../../assets/images/mine.png"></image> <image src="../../assets/images/tx.png"></image>
<view class="info"> <view class="info">
<text>昵称</text> <text>{{name}}</text>
<text>185-2207-4910</text> <text>{{phone}}</text>
</view>
<image src="../../assets/images/to-right.png"></image>
</view>
<view class="select">
<view class="select-item">
<text>412</text>
<text>我的项目</text>
</view>
<view class="select-item">
<text>2</text>
<text>我的会议</text>
</view> </view>
</view> </view>
</view> </view>
@@ -36,7 +25,7 @@
</view> </view>
<view class="list-item" bindtap="upDateInfo"> <view class="list-item" bindtap="upDateInfo">
<view class="item-title"> <view class="item-title">
<image src="../../assets/images/follow.png"></image> <image src="../../assets/images/xgmm.png"></image>
<text>修改密码</text> <text>修改密码</text>
</view> </view>
<image src="../../assets/images/more.png"></image> <image src="../../assets/images/more.png"></image>
@@ -62,13 +51,6 @@
</view> </view>
<image src="../../assets/images/more.png"></image> <image src="../../assets/images/more.png"></image>
</view> </view>
<view class="list-item">
<view class="item-title">
<image src="../../assets/images/setting.png"></image>
<text>设置</text>
</view>
<image src="../../assets/images/more.png"></image>
</view>
</view> </view>
</view> </view>
<view class="logout"> <view class="logout">
+2 -2
View File
@@ -6,7 +6,7 @@ page{
height: 200pt; height: 200pt;
} }
.select-box{ .select-box{
transform: translateY(-100pt); transform: translateY(-75pt);
padding: 0 15pt; padding: 0 15pt;
} }
.select-box .avator{ .select-box .avator{
@@ -76,7 +76,7 @@ page{
} }
/* 个人信息选项栏 */ /* 个人信息选项栏 */
.list-info{ .list-info{
margin-top: -100pt; margin-top: -65pt;
padding: 15pt; padding: 15pt;
} }
.list-info .title{ .list-info .title{
+23 -46
View File
@@ -1,71 +1,48 @@
// pages/minedata/minedata.js import UserApi from '../../assets/js/http/userApi'
Page({ Page({
/** /**
* 页面的初始数据 * 页面的初始数据
*/ */
data: { data: {
list: [,1,1,1,1,1,1,1,1] list: [],
pageNo: 1,
pageSize: 10
}, },
// 合同详情 // 合同详情
contractDetail(){ contractDetail(e){
let id = e.currentTarget.dataset.meeting.id
wx.navigateTo({ wx.navigateTo({
url: '../contractDetail/contractDetail', url: `../contractDetail/contractDetail?id=${id}`,
}) })
}, },
/** loadData(){
* 生命周期函数--监听页面加载 let params = {
*/ pageNo: this.data.pageNo,
onLoad: function (options) { pageSize: this.data.pageSize
}
}, UserApi.contractList(params).then(res=>{
if(res.success && res.result.records && res.result.records.length){
/** console.log(res.result.records)
* 生命周期函数--监听页面初次渲染完成 this.setData({
*/ list: [...this.data.list, ...res.result.records]
onReady: function () { })
}
})
}, },
/** /**
* 生命周期函数--监听页面显示 * 生命周期函数--监听页面显示
*/ */
onShow: function () { onShow: function () {
this.loadData()
},
/**
* 生命周期函数--监听页面隐藏
*/
onHide: function () {
},
/**
* 生命周期函数--监听页面卸载
*/
onUnload: function () {
},
/**
* 页面相关事件处理函数--监听用户下拉动作
*/
onPullDownRefresh: function () {
}, },
/** /**
* 页面上拉触底事件的处理函数 * 页面上拉触底事件的处理函数
*/ */
onReachBottom: function () { onReachBottom: function () {
this.data.pageNo++
}, this.loadData()
/**
* 用户点击右上角分享
*/
onShareAppMessage: function () {
} }
}) })
+9 -6
View File
@@ -1,13 +1,16 @@
<!--pages/meeting/meeting.wxml--> <!--pages/meeting/meeting.wxml-->
<view class="list-box"> <view class="list-box" wx:if="{{list && list.length}}">
<view class="list-item" wx:for="list" wx:key="item" bindtap="contractDetail"> <view class="list-item" wx:for="{{list}}" wx:key="item" bindtap="contractDetail" data-meeting="{{item}}">
<view class="list-info"> <view class="list-info">
<text>合同名称</text> <text>{{item.contractName}}</text>
<text>合同金额:5000元</text> <text>合同金额:{{item.contractAmount ? item.contractAmount + '元' : '0'}}</text>
</view> </view>
<view class="list-info"> <view class="list-info">
<text>合同编号:002</text> <text>合同编号:{{item.contractNum}}</text>
<text>负责人:张三</text> <text>负责人:{{item.principalName}}</text>
</view> </view>
</view> </view>
</view> </view>
<view wx:if="{{list.length === 0}}" class="no-data">
<text>暂无数据</text>
</view>
+14 -2
View File
@@ -1,4 +1,5 @@
import UserApi from '../../assets/js/http/userApi' import UserApi from '../../assets/js/http/userApi'
import { previewFile, sliceFileTypeByFileName } from '../../assets/js/preview'
Page({ Page({
/** /**
@@ -16,14 +17,25 @@ Page({
pageSize: this.data.pageSize pageSize: this.data.pageSize
} }
UserApi.dataList(params).then(res=>{ UserApi.dataList(params).then(res=>{
if(res.success){ if(res.success && res.result.records && res.result.records.length){
console.log(res.result.records) console.log(res.result.records)
this.setData({ this.setData({
list: res.result.records list: [...this.data.list, ...res.result.records]
}) })
} }
}) })
}, },
// 预览
previewFile(e) {
const fileObj = e.currentTarget.dataset.file
let fileType = sliceFileTypeByFileName(fileObj.fileName)
// 文件类型不是docx,doc,pdf时,已邮件形式发送到参会人的邮箱
if(fileType !== 'docx' && fileType !== 'doc' && fileType !== 'pdf') {
}else {
previewFile(fileObj.filId, fileObj.fileName)
}
},
/** /**
* 生命周期函数--监听页面显示 * 生命周期函数--监听页面显示
*/ */
+6 -3
View File
@@ -1,8 +1,11 @@
<view class="list-box"> <view class="list-box" wx:if="{{list && list.length}}">
<view class="list-item" wx:for="list" wx:key="item"> <view class="list-item" wx:for="{{list}}" wx:key="item">
<text class="list-time">{{item.uploadTime}}</text> <text class="list-time">{{item.uploadTime}}</text>
<view class="list-files"> <view class="list-files">
<text>{{item.fileName}}</text> <text bindtap="previewFile" data-file="{{item}}">{{item.fileName}}</text>
</view> </view>
</view> </view>
</view> </view>
<view wx:if="{{list.length === 0}}" class="no-data">
<text>暂无数据</text>
</view>
+40 -11
View File
@@ -6,12 +6,14 @@ Page({
*/ */
data: { data: {
visible: false, visible: false,
visibleDate: false,
index: 0, index: 0,
list: [], // 项目列表
searchParams: { searchParams: {
pageNo: 1, pageNo: 1,
pageSize: 10, pageSize: 10,
needInvoice: 0, // 是否需要发票 0 4 needInvoice: '', // 是否需要发票 0 4
pack: 0, // 是否打包 0 1 pack: '', // 是否打包 0 1
year: '', // 运行年份 year: '', // 运行年份
}, },
selects: [ // 自定义选择框参数 selects: [ // 自定义选择框参数
@@ -45,6 +47,9 @@ Page({
changeTab(e){ changeTab(e){
this.data.index = e.currentTarget.dataset.index this.data.index = e.currentTarget.dataset.index
if(this.data.index === 0){ if(this.data.index === 0){
this.setData({
visible: true
})
this.setData({ this.setData({
data: [ data: [
{ {
@@ -57,6 +62,9 @@ Page({
] ]
}) })
}else if(this.data.index === 1){ }else if(this.data.index === 1){
this.setData({
visible: true
})
this.setData({ this.setData({
data: [ data: [
{ {
@@ -68,18 +76,29 @@ Page({
} }
] ]
}) })
} }else{
this.setData({ this.setData({
visible: true visibleDate: true
}) })
}
}, },
// 关闭弹出层 // 关闭发票和打包的弹出层
close() { close() {
this.setData({ this.setData({
visible: false visible: false
}) })
}, },
// 日期选中
dateOk(value){
this.data.pageNo = 1
this.setData({
"searchParams.year": value.detail,
visibleDate: false
})
this.loadData()
},
ok(e){ ok(e){
this.data.pageNo = 1
if(this.data.index === 0){ if(this.data.index === 0){
this.setData({ this.setData({
'searchParams.needInvoice': e.detail 'searchParams.needInvoice': e.detail
@@ -89,8 +108,7 @@ Page({
'searchParams.pack': e.detail 'searchParams.pack': e.detail
}) })
} }
// this.loadData() this.loadData()
console.log(this.data.searchParams)
}, },
// 项目详情 // 项目详情
projectDetail(){ projectDetail(){
@@ -100,8 +118,19 @@ Page({
}, },
loadData(){ loadData(){
UserApi.projectList(this.data.searchParams).then(res=>{ UserApi.projectList(this.data.searchParams).then(res=>{
console.log(res) if(res.success){
// 搜索时,把原数据清空,重新筛选
if(this.data.pageNo === 1) {
this.setData({
list: []
})
}
if(res.result.records && res.result.records.length){
this.setData({
list: [...this.data.list, ...res.result.records]
})
}
}
}).catch(err=>{ }).catch(err=>{
wx.showToast({ wx.showToast({
title: '加载失败', title: '加载失败',
@@ -114,13 +143,13 @@ Page({
* 生命周期函数--监听页面加载 * 生命周期函数--监听页面加载
*/ */
onLoad: function (options) { onLoad: function (options) {
// this.loadData() this.loadData()
}, },
/** /**
* 页面上拉触底事件的处理函数 * 页面上拉触底事件的处理函数
*/ */
onReachBottom: function () { onReachBottom: function () {
this.data.pageNo++ this.data.pageNo++
// this.loadData() this.loadData()
}, },
}) })
+2 -1
View File
@@ -1,6 +1,7 @@
{ {
"navigationBarTitleText": "项目", "navigationBarTitleText": "项目",
"usingComponents": { "usingComponents": {
"popup": "../../components/popup/popup" "popup": "../../components/popup/popup",
"dateMonth": "../../components/dateMonth/dateMonth"
} }
} }
+11 -7
View File
@@ -7,17 +7,21 @@
</view> </view>
</view> </view>
<view class="list"> <view class="list">
<view class="list-item" wx:for="{{[1,1,1,1]}}" bindtap="projectDetail" wx:key="item"> <view class="list-item" wx:for="{{list}}" bindtap="projectDetail" wx:key="item">
<view class="title"> <view class="title">
<text>项目名称文字占位符项目名称文字占位符项目名称文字占位符</text> <text>{{item.chargeUse_dictText}}</text>
<text>2021-12-12</text> <text>{{item.year}}年</text>
</view> </view>
<view class="content-text"> <view class="content-text">
<text>需要发票</text> <text class="all">{{item.needInvoice === 0 ? '不需要发票' : '需要发票'}}</text>
<text>到账</text> <text class="{{item.inAccount === 0 ? '' : item.inAccount === 2 ? 'half' : 'all'}}">到账</text>
<text>开票</text> <text class="{{item.makeInvoice === 0 ? '' : item.makeInvoice === 2 ? 'half' : 'all'}}">开票</text>
<text>邮寄</text> <text class="{{item.mail === 0 ? '' : item.mail === 2 ? 'half' : 'all'}}">邮寄</text>
</view> </view>
</view> </view>
</view> </view>
<view wx:if="{{list.length === 0}}" class="no-data">
<text>暂无数据</text>
</view>
<popup visible="{{visible}}" bindclose="close" outClickCanClose="true" bindok="ok" data="{{data}}"></popup> <popup visible="{{visible}}" bindclose="close" outClickCanClose="true" bindok="ok" data="{{data}}"></popup>
<dateMonth visible="{{visibleDate}}" mode="year" bindok="dateOk"></dateMonth>
+6
View File
@@ -71,3 +71,9 @@ page {
justify-content: space-between; justify-content: space-between;
align-items: center; align-items: center;
} }
.half{
color: burlywood;
}
.all{
color: #069F99;
}
@@ -1,13 +1,31 @@
// pages/meeting/meeting.js import UserApi from '../../assets/js/http/userApi'
Page({ Page({
/** /**
* 页面的初始数据 * 页面的初始数据
*/ */
data: { data: {
isSigned: false, // 默认未报名
meetingId: '', // 会议id
fileId: '', // 图片id
src: null // 签名之后,保存签名的图片地址
},
// 去签到页
scanSign(){
wx.navigateTo({
url: '../writtenSign/writtenSign',
})
},
// 确定签到
sureSign(){
}, },
// 去报名
goSignUp(){
wx.navigateTo({
url: 'url',
})
},
/** /**
* 生命周期函数--监听页面加载 * 生命周期函数--监听页面加载
*/ */
@@ -26,7 +44,13 @@ Page({
* 生命周期函数--监听页面显示 * 生命周期函数--监听页面显示
*/ */
onShow: function () { onShow: function () {
let params = {
fileId: this.data.fileId,
meetingId: this.data.meetingId
}
// UserApi.scanCode(params).then(res=>{
// })
}, },
/** /**
+4
View File
@@ -0,0 +1,4 @@
{
"navigationBarTitleText": "扫码签到",
"usingComponents": {}
}
+48
View File
@@ -0,0 +1,48 @@
<view class="basic-info">
<view>
<text>会议名称</text>
<text>会议名称会议名称</text>
</view>
<view>
<text>会议类型</text>
<text>arff4ds8a3s6651</text>
</view>
<view>
<text>召开时间</text>
<text>找找</text>
</view>
<!-- 已报名信息显示的内容start -->
<view wx:if="{{isSigned}}">
<text>参会单位</text>
<text>张三张三张三张三张三张三张三张三张三张三张三张三张三</text>
</view>
<view wx:if="{{isSigned}}">
<text>参会人</text>
<text>500元</text>
</view>
<view wx:if="{{isSigned}}">
<text>是否签到</text>
<text>500元</text>
</view>
<view wx:if="{{isSigned}}">
<text>手动签到</text>
<text style="color: #069F99;" bindtap="scanSign">签到</text>
</view>
</view>
<view class="imageBox" hidden="{{isSigned ? false : true}}">
<image src="{{src}}" ></image>
</view>
<view class="scanSign" wx:if="{{isSigned}}">
<text bindtap="sureSign">签到</text>
</view>
<!-- 已报名信息显示的内容end -->
<!-- 未报名显示的内容start -->、
<view class="warning-text" wx:if="{{!isSigned}}">
<image src="../../assets/images/warning.png"></image>
<text>很抱歉,未查询到您的报名信息</text>
</view>
<view class="scanSign" wx:if="{{!isSigned}}">
<text bindtap="goSignUp">去报名</text>
</view>
+72
View File
@@ -0,0 +1,72 @@
.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 text:nth-child(1){
flex-shrink: 0;
margin-right: 10px;
}
.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;
}
.scanSign{
padding: 0 15px;
margin: 10px 0;
}
.scanSign text{
display: flex;
justify-content: center;
align-items: center;
height: 45px;
background-color: #069F99;
border-radius: 5px;
font-size: 13px;
color: #fff;
}
.imageBox {
border: 1px solid #dedede;
margin: 10px;
height: 160px
}
.imageBox image {
width: 100%;
height: 160px
}
.warning-text{
margin-bottom: 10px;
display: flex;
justify-content: center;
align-items: center;
flex-direction: column;
color: #999;
font-size: 12px;
}
.warning-text image{
width: 100px;
height: 100px;
margin-bottom: 15px;
}
+19 -54
View File
@@ -6,8 +6,9 @@ Page({
* 页面的初始数据 * 页面的初始数据
*/ */
data: { data: {
newPassword: '', password: '', // token
verifyPassword: '', newPassword: '', // 密码
verifyPassword: '', // 确认密码
rsaPublicKey: '', rsaPublicKey: '',
flag: false flag: false
}, },
@@ -16,6 +17,7 @@ Page({
}, },
// 登录 // 登录
formSubmit(e) { formSubmit(e) {
const that = this
if(!e.detail.value.newPassword){ if(!e.detail.value.newPassword){
this.data.flag = false this.data.flag = false
wx.showToast({ wx.showToast({
@@ -68,6 +70,7 @@ Page({
} }
if (this.data.flag) { if (this.data.flag) {
let params = { let params = {
password: this.data.password,
newPassword: encrypt(this.data.rsaPublicKey, e.detail.value.newPassword), newPassword: encrypt(this.data.rsaPublicKey, e.detail.value.newPassword),
verifyPassword: encrypt(this.data.rsaPublicKey, e.detail.value.verifyPassword), verifyPassword: encrypt(this.data.rsaPublicKey, e.detail.value.verifyPassword),
rsaPublicKey: this.data.rsaPublicKey rsaPublicKey: this.data.rsaPublicKey
@@ -76,7 +79,11 @@ Page({
UserApi.setPassword(params).then(res => { UserApi.setPassword(params).then(res => {
if (res.success) { if (res.success) {
// 成功设置密码,跳转首页 // 成功设置密码,跳转首页
wx.navigateTo({ wx.setStorage({
key: 'X-Access-Token',
data: that.data.password
})
wx.switchTab({
url: '../home/home', url: '../home/home',
}) })
} else { } else {
@@ -90,19 +97,6 @@ Page({
// 登录失败 // 登录失败
} }
}, },
/**
* 生命周期函数--监听页面加载
*/
onLoad: function (options) {
},
/**
* 生命周期函数--监听页面初次渲染完成
*/
onReady: function () {
},
/** /**
* 生命周期函数--监听页面显示 * 生命周期函数--监听页面显示
@@ -115,45 +109,16 @@ Page({
that.setData({ that.setData({
rsaPublicKey: res.data rsaPublicKey: res.data
}) })
},
fail: function(){
// 缓存中没有登录过默认app.json的登录页
} }
}) })
}, wx.getStorage({
key: 'token-temp',
/** success (res) {
* 生命周期函数--监听页面隐藏 that.setData({
*/ password: res.data
onHide: function () { })
console.log(that.data.password)
}, }
})
/**
* 生命周期函数--监听页面卸载
*/
onUnload: function () {
},
/**
* 页面相关事件处理函数--监听用户下拉动作
*/
onPullDownRefresh: function () {
},
/**
* 页面上拉触底事件的处理函数
*/
onReachBottom: function () {
},
/**
* 用户点击右上角分享
*/
onShareAppMessage: function () {
} }
}) })
+100 -86
View File
@@ -1,7 +1,7 @@
// pages/meeting/meeting.js // pages/meeting/meeting.js
import UserApi from '../../assets/js/http/userApi' import UserApi from '../../assets/js/http/userApi'
import { encrypt } from '../../assets/js/jsencrypt/rsa' import { encrypt } from '../../assets/js/jsencrypt/rsa'
var countdown = 60; // 倒计时秒数 // var countdown = 60; // 倒计时秒数
Page({ Page({
@@ -10,79 +10,114 @@ Page({
*/ */
data: { data: {
form: { form: {
phone: '', // 手机号 oldpassword: '', // 旧密码
verifyCode: '', // 验证码 password: '', // 新密码
newPassword: '', // 新密码 confirmpassword: '', // 确认新密码
verifyPassword: '', // 确认密码 // count: 60, // 倒计时秒
count: 60, // 倒计时秒
rsaPublicKey: '', // 公钥 rsaPublicKey: '', // 公钥
}, },
showGetCaptcha: true // showGetCaptcha: true
},
bindInputPhone(e) {
this.setData({
"form.phone": e.detail.value
})
},
// 获取验证码
getVerCode() {
if (/^(13[0-9]|14[01456879]|15[0-35-9]|16[2567]|17[0-8]|18[0-9]|19[0-35-9])\d{8}$/.test(this.data.form.phone)) {
UserApi.sendCode({
phone: this.data.form.phone
}).then(res => {
// 获取成功,倒计时 start
if (res.success) {
this.countDown()
} else {
wx.showToast({
title: '获取验证码失败',
icon: 'error',
duration: 2000
})
}
})
} else {
wx.showToast({
title: '请输入正确的手机号',
icon: 'none',
duration: 2000
})
}
}, },
// // 获取验证码
// getVerCode() {
// if (/^(13[0-9]|14[01456879]|15[0-35-9]|16[2567]|17[0-8]|18[0-9]|19[0-35-9])\d{8}$/.test(this.data.form.phone)) {
// UserApi.sendCode({
// phone: this.data.form.phone
// }).then(res => {
// // 获取成功,倒计时 start
// if (res.success) {
// this.countDown()
// } else {
// wx.showToast({
// title: '获取验证码失败',
// icon: 'error',
// duration: 2000
// })
// }
// })
// } else {
// wx.showToast({
// title: '请输入正确的手机号',
// icon: 'none',
// duration: 2000
// })
// }
// },
// 倒计时 // 倒计时
countDown() { // countDown() {
if (countdown === 0) { // if (countdown === 0) {
this.setData({ // this.setData({
showGetCaptcha: true // showGetCaptcha: true
}) // })
countdown = 60; // countdown = 60;
return; // return;
} else { // } else {
this.setData({ // this.setData({
showGetCaptcha: false // showGetCaptcha: false
}) // })
countdown--; // countdown--;
this.setData({ // this.setData({
count: countdown // count: countdown
}) // })
} // }
setTimeout(() => { // setTimeout(() => {
this.countDown() // this.countDown()
}, 1000) // }, 1000)
// 倒计时 end // // 倒计时 end
}, // },
// 提交 // 提交
formSubmit(e) { formSubmit(e) {
if(!e.detail.value.newPassword){ if(!e.detail.value.oldpassword){
this.data.flag = false this.data.flag = false
wx.showToast({ wx.showToast({
title: '请输入密码', title: '请输入旧密码',
icon: 'none' icon: 'none'
}) })
return return
} else { } else {
let pattern = /^(?=.*[a-zA-Z])(?=.*\d)(?=.*[~!@#$%^&*()_+`\-={}:";'<>?,.\/]).{8,}$/ let pattern = /^(?=.*[a-zA-Z])(?=.*\d)(?=.*[~!@#$%^&*()_+`\-={}:";'<>?,.\/]).{8,}$/
if(!pattern.test(e.detail.value.newPassword)){ if(!pattern.test(e.detail.value.oldpassword)){
wx.showToast({
title: '旧密码由8位数字、大小写字母和特殊符号组成!!',
icon: 'none'
})
this.data.flag = false
return
} else {
this.data.flag = true
}
}
if(!e.detail.value.password){
this.data.flag = false
wx.showToast({
title: '请输入新密码',
icon: 'none'
})
return
} else {
let pattern = /^(?=.*[a-zA-Z])(?=.*\d)(?=.*[~!@#$%^&*()_+`\-={}:";'<>?,.\/]).{8,}$/
if(!pattern.test(e.detail.value.password)){
wx.showToast({
title: '新密码由8位数字、大小写字母和特殊符号组成!!',
icon: 'none'
})
this.data.flag = false
return
} else {
this.data.flag = true
}
}
if(!e.detail.value.confirmpassword){
this.data.flag = false
wx.showToast({
title: '请输入确认新密码',
icon: 'none'
})
return
} else {
let pattern = /^(?=.*[a-zA-Z])(?=.*\d)(?=.*[~!@#$%^&*()_+`\-={}:";'<>?,.\/]).{8,}$/
if(!pattern.test(e.detail.value.confirmpassword)){
wx.showToast({ wx.showToast({
title: '密码由8位数字、大小写字母和特殊符号组成!!', title: '密码由8位数字、大小写字母和特殊符号组成!!',
icon: 'none' icon: 'none'
@@ -93,27 +128,7 @@ Page({
this.data.flag = true this.data.flag = true
} }
} }
if(!e.detail.value.verifyPassword){ if(e.detail.value.password === e.detail.value.confirmpassword) {
this.data.flag = false
wx.showToast({
title: '请输入确认密码',
icon: 'none'
})
return
} else {
let pattern = /^(?=.*[a-zA-Z])(?=.*\d)(?=.*[~!@#$%^&*()_+`\-={}:";'<>?,.\/]).{8,}$/
if(!pattern.test(e.detail.value.verifyPassword)){
wx.showToast({
title: '密码由8位数字、大小写字母和特殊符号组成!!',
icon: 'none'
})
this.data.flag = false
return
} else {
this.data.flag = true
}
}
if(e.detail.value.newPassword === e.detail.value.verifyPassword) {
this.data.flag = true this.data.flag = true
} else { } else {
this.data.flag = false this.data.flag = false
@@ -125,10 +140,9 @@ Page({
} }
console.log('form发生了submit事件,携带数据为:', e.detail.value) console.log('form发生了submit事件,携带数据为:', e.detail.value)
let params = { let params = {
phone: encrypt(this.data.rsaPublicKey, e.detail.value.phone), password: encrypt(this.data.rsaPublicKey, e.detail.value.oldpassword),
newPassword: encrypt(this.data.rsaPublicKey, e.detail.value.newPassword), newPassword: encrypt(this.data.rsaPublicKey, e.detail.value.password),
verifyPassword: encrypt(this.data.rsaPublicKey, e.detail.value.verifyPassword), verifyPassword: encrypt(this.data.rsaPublicKey, e.detail.value.confirmpassword),
verifyCode: e.detail.value.verifyCode,
rsaPublicKey: this.data.rsaPublicKey, rsaPublicKey: this.data.rsaPublicKey,
} }
console.log(params) console.log(params)
+8 -8
View File
@@ -2,29 +2,29 @@
<view> <view>
<form bindsubmit="formSubmit" class="form-box"> <form bindsubmit="formSubmit" class="form-box">
<view class="form-item"> <view class="form-item">
<view class="text-label">手机号</view> <view class="text-label">旧密码</view>
<view class="text-value"> <view class="text-value">
<input name="phone" bindinput="bindInputPhone" value="{{phone}}" placeholder="请输入手机号" /> <input name="oldpassword" value="{{oldpassword}}" type="password" placeholder="请输入旧密码" />
</view> </view>
</view> </view>
<view class="form-item"> <!-- <view class="form-item">
<view class="text-label">验证码</view> <view class="text-label">验证码</view>
<view class="text-value"> <view class="text-value">
<input name="verifyCode" value="{{verifyCode}}" placeholder="请输入验证码" /> <input name="verifyCode" value="{{verifyCode}}" placeholder="请输入验证码" />
</view> </view>
<view wx:if="{{showGetCaptcha}}" class="captcha" bindtap="getVerCode">获取验证码</view> <view wx:if="{{showGetCaptcha}}" class="captcha" bindtap="getVerCode">获取验证码</view>
<view wx:else="{{showGetCaptcha}}" class="captcha count">{{count}}</view> <view wx:else="{{showGetCaptcha}}" class="captcha count">{{count}}</view>
</view> </view> -->
<view class="form-item"> <view class="form-item">
<view class="text-label">密码</view> <view class="text-label">新密码</view>
<view class="text-value"> <view class="text-value">
<input name="newPassword" value="{{newPassword}}" placeholder="请输入密码" /> <input name="password" value="{{password}}" type="password" placeholder="请输入新密码" />
</view> </view>
</view> </view>
<view class="form-item"> <view class="form-item">
<view class="text-label">确认密码</view> <view class="text-label">确认新密码</view>
<view class="text-value"> <view class="text-value">
<input name="verifyPassword" value="{{verifyPassword}}" placeholder="请确认密码" /> <input name="confirmpassword" value="{{confirmpassword}}" type="password" placeholder="请确认新密码" />
</view> </view>
</view> </view>
<view class="btn-area"> <view class="btn-area">
+3
View File
@@ -2,3 +2,6 @@
.form-box{ .form-box{
transform: translateY(110pt); transform: translateY(110pt);
} }
.text-label {
width: 80px !important;
}
+86
View File
@@ -0,0 +1,86 @@
import Api from '../../assets/js/http/api'
Page({
data: {
context1: null,
hasDraw:false, //默认没有画
id: '',
},
onLoad: function() {
var context1 = wx.createCanvasContext('handWriting1');
context1.setStrokeStyle("#000000") // 画笔的颜色
context1.setLineWidth(3); // 画笔的线条宽度
this.setData({
context1: context1,
})
},
touchstart1: function(e) {
var context1 = this.data.context1;
context1.moveTo(e.touches[0].x, e.touches[0].y); // 把画笔的开始点移到当前触摸点
this.setData({
// context1: context1,
hasDraw : true, //要签字了
});
},
touchmove1: function(e) {
var x = e.touches[0].x;
var y = e.touches[0].y;
var context1 = this.data.context1;
context1.setLineWidth(3);
context1.lineTo(x, y); // 移动绘制的点(关键步骤)
context1.stroke(); // 画出当前路径的边框====创建线条
context1.setLineCap('round'); // 设置线条的端点样式
context1.draw(true); // 将之前在绘图上下文中的描述(路径、变形、样式)画到 canvas 中
context1.moveTo(x, y); // 把路径移动到画布中的指定点,不创建线条
},
reSign1: function() { //重新画
var that = this;
var context1 = that.data.context1;
context1.draw(); //清空画布
that.setData({
hasDraw: false, //没有画
src: null
});
},
sign1ok: function () {
const that = this;
if(!that.data.hasDraw){
console.log("签字是空白的 没有签字")
}else{
var context1 = that.data.context1;
context1.draw(true, wx.canvasToTempFilePath({ // 把当前画布指定区域的内容导出生成指定大小的图片。在 draw() 回调里调用该方法才能保证图片导出成功
canvasId: 'handWriting1',
success(res) { // 完成签字
//得到了图片 上传到服务器
wx.uploadFile({
url: Api.baseUrl + Api.URL_CONFIG + "/sys/common/upload",
filePath: res.tempFilePath,
name: "file",
formData: {
filetype: "image",
},
success: function (result) {
let data = JSON.parse(result.data)
that.setData({
id: data.result.id
})
let pages = getCurrentPages();
let prevPage = pages[pages.length - 2];
//将数值信息赋值给上一页面id变量
prevPage.setData({
fileId: data.result.id
});
wx.navigateBack({
delta: 1,
})
},
fail: function(err){
wx.showToast({
title: '上传失败',
})
}
})
}
}))
}
},
});
+16
View File
@@ -0,0 +1,16 @@
<view>
<view class="sign">
<view class="signTitle">参会人签字</view>
<view class="paper">
<canvas class="handWriting" disable-scroll="true" bindtouchstart="touchstart1" bindtouchmove="touchmove1" canvas-id="handWriting1">
</canvas>
</view>
<view class="signBtn">
<button size="" type="primary" bindtap="sign1ok">完成签字</button>
<button size="" type="warn" bindtap="reSign1">重新签字</button>
</view>
<view class="imageBox" hidden="{{src?false:true}}">
<image src="{{src}}" ></image>
</view>
</view>
</view>
+38
View File
@@ -0,0 +1,38 @@
.paper {
border: 1px solid #dedede;
margin: 10px;
height: 160px
}
.imageBox {
border: 1px solid #dedede;
margin: 10px;
height: 160px
}
.signBtn {
display: flex;
margin-top: 20px;
}
.signTitle {
text-align: center;
font-size: 1.2em;
margin: 10px auto;
}
.handWriting {
width: 100%;
height: 100%;
}
.imageBox image {
width: 100%;
height: 160px
}
button[type='primary']{
background-color: #069F99 !important;
}
button[type='warn']{
color: #999 !important;
}