Преглед на файлове

增加收入登记接口

master
liuminjian преди 3 години
родител
ревизия
9d17342611
променени са 5 файла, в които са добавени 426 реда и са изтрити 114 реда
  1. +270
    -64
      pages/inCome/inCome.js
  2. +15
    -5
      pages/inCome/inCome.json
  3. +88
    -30
      pages/inCome/inCome.wxml
  4. +49
    -14
      pages/inCome/inCome.wxss
  5. +4
    -1
      utils/API.js

+ 270
- 64
pages/inCome/inCome.js Целия файл

@@ -1,4 +1,6 @@
// pages/apply/index.js
import * as UTIL from '../../utils/util.js';
import * as API from '../../utils/API.js';
const app = getApp();
Page({

@@ -7,37 +9,171 @@ Page({
*/
data: {
isIPX: app.globalData.isIPX,
show:false,
time:"2022-1-22",
srje:0,
crzh:123132,
srlx:"发包收入",
djbm:3423497895934633,
bzsm:"收合同2022年第一季度款",
fkr:"列示合同乙方或填写",
htbm:"DZ000001",
sjPics:[],
fpPics:[],
qtPics:[],
count:9
bookName:'', //付款单位
formData:{
accountType:'', //账户类型
accountDate:'', //收入时间
jieAmount:'', //收入金额
accountName:'', //存入账户
incomeType:'', //收入类型
billNum:'', //单据编码
accountSummary:'', //备注说明
contractionId:'', //合同编码
incomeExpensesType:1, //收支类别
isBill:0
},
incomeTypeOptions:[], //收入类型选项
incomeTypeText:'222', //收入类型显示文字
contractionOptions:[], //付款人合同信息列表接口
showHt:false,
payerText:'', //付款人
sjPics:[], //收据图片列表数据
fpPics:[], //发票图片列表数据
qtPics:[], //其他图片列表数据
//收入时间弹窗显隐
srShow:false,
minDate: new Date(2018, 0, 1).getTime(),
maxDate: new Date(2025, 0, 31).getTime(),
crzhShow:false,
accountListOptions:[] //存入账户类型选项
},
onCancelcrzh(){
this.setData({crzhShow:false})
},
oncrzhShow(){ this.setData({crzhShow:true})},
onConfirmcrzh(e){
let data = e.detail.value;
this.setData({
crzhShow:false,
'formData.accountName':data.accountName,
'formData.accountId':data.id,
'formData.accountType':data.accountType
})
},
onsrDate(){
this.setData({srShow:true})
},
onClose(){ this.setData({srShow:false})},
onConfirm(e){
let data = this.getNewDate(new Date(e.detail));
this.setData({'formData.accountDate':data})
this.setData({srShow:false})
},
closeBox(){
this.setData({showHt:false})
},
getNewDate(date){
//date是传过来的时间戳,注意需为13位,10位需*1000
//也可以不传,获取的就是当前时间
var time = new Date(date);
var year= time.getFullYear() //年
var month = ("0" + (time.getMonth() + 1)).slice(-2); //月
var day = ("0" + time.getDate()).slice(-2); //日
var mydate = year + "-" + month + "-" + day;
return mydate
},
onConfirmContraction(value){
let obj = value.detail.value;
this.setData({
payerText:obj.name,
showHt:false,
'formData.contractionId':obj.code,
})
},
selectContraction(){
this.setData({showHt:true})
},
bindPickerChange (e) {
let obj = this.data.incomeTypeOptions[e.detail.value];
this.setData({
'formData.incomeType':obj.dictValue,
incomeTypeText:obj.dictLabel
})
},
inputChange(e){
this.setData({
[e.currentTarget.dataset.prop]: e.detail.value
})
},

/**
* 生命周期函数--监听页面加载
*/
onLoad: function (options) {
onShow: function (options) {
},
/**
* 生命周期函数--监听页面初次渲染完成
*/
onLoad: function () {

},

/**
* 生命周期函数--监听页面显示
*/
onReady: function () {
let that = this;
//初始化收入时间
this.setData({
'formData.accountDate':UTIL.formatDate(new Date())
})

//获取收入单位
UTIL.httpRequest(API.URL_GET_GETINFO, {method:'GET'}, {
success: (res) => {
if (res.code == API.SUCCESS_CODE) {
this.setData({bookName:res.user.bookName})
}
}
})
//获取收入类型状态
UTIL.httpRequest(API.URL_GET_GETDICTTYPE + 'income_type', {method:'GET'}, {
success: (res) => {
if(res.data.length>0){
that.setData({
incomeTypeOptions:res.data,
incomeTypeText:res.data[0].dictLabel,
'formData.incomeType':res.data[0].dictValue
})
}
}
})

// 获取合同信息列表
UTIL.httpRequest(API.URL_GET_CONTRACTIONLIST , {method:'GET'}, {
success: (res) => {
that.setData({
contractionOptions:res.rows,
})
}
})

//获取当前账套付款账户列表
UTIL.httpRequest(API.URL_GET_ACCOUNTLIST , {method:'GET'}, {
success: (res) => {
that.setData({
accountListOptions:res.rows,
})
}
})
},
deleteimg:function(e){
let oData = e.currentTarget.dataset;
let file = this.data[oData.status];
file.splice(oData.id,1)
this.setData({
[oData.status]:file
})
},
back:function(){
wx.navigateBack({
delta: 1
})
},
uploadSjPics: function (e) { //这里是选取图片的方法
var that = this;
var pics = [];
var detailPics = that.data.sjPics;
if (detailPics.length >= that.data.count) {
wx.showToast({
@@ -50,14 +186,20 @@ Page({
sizeType: ['original', 'compressed'], // original 原图,compressed 压缩图,默认二者都有
sourceType: ['album', 'camera'], // album 从相册选图,camera 使用相机,默认二者都有
success: function (res) {
var imgs = res.tempFilePaths;
for (var i = 0; i < imgs.length; i++) {
pics.push(imgs[i])
}
that.uploadimg({
url: "http://www.test.com//test-api/wechat/applet/api/uploadUserAvatar", //这里是你图片上传的接口
path: pics, //这里是选取的图片的地址数组
});
let fileForm = that.data.sjPics
res.tempFilePaths.forEach(item => {
fileForm.push({
file: item,
fileType:'1',
bizPath:'cashier',
tableName:'t_cashier_account_flow',
tableId:''
})
})
that.setData({
sjPics:fileForm
})
},
})
},
@@ -76,14 +218,19 @@ Page({
sizeType: ['original', 'compressed'], // original 原图,compressed 压缩图,默认二者都有
sourceType: ['album', 'camera'], // album 从相册选图,camera 使用相机,默认二者都有
success: function (res) {
var imgs = res.tempFilePaths;
for (var i = 0; i < imgs.length; i++) {
pics.push(imgs[i])
}
that.uploadimg({
url: "http://www.test.com//test-api/wechat/applet/api/uploadUserAvatar", //这里是你图片上传的接口
path: pics, //这里是选取的图片的地址数组
});
let fileForm = that.data.fpPics
res.tempFilePaths.forEach(item => {
fileForm.push({
file: item,
fileType:'2',
bizPath:'cashier',
tableName:'t_cashier_account_flow',
tableId:''
})
})
that.setData({
fpPics:fileForm
})
},
})
},
@@ -102,45 +249,104 @@ Page({
sizeType: ['original', 'compressed'], // original 原图,compressed 压缩图,默认二者都有
sourceType: ['album', 'camera'], // album 从相册选图,camera 使用相机,默认二者都有
success: function (res) {
var imgs = res.tempFilePaths;
for (var i = 0; i < imgs.length; i++) {
pics.push(imgs[i])
}
that.uploadimg({
url: "http://www.test.com//test-api/wechat/applet/api/uploadUserAvatar", //这里是你图片上传的接口
path: pics, //这里是选取的图片的地址数组
});
let fileForm = that.data.qtPics
res.tempFilePaths.forEach(item => {
fileForm.push({
file: item,
fileType:'3',
bizPath:'cashier',
tableName:'t_cashier_account_flow',
tableId:''
})
})
that.setData({
qtPics:fileForm
})
},
})
},

swichAccounting:function(e){
console.log(e.currentTarget.dataset.current);
// let cur = e.currentTarget.dataset.current;
// if (this.data.currentTaB == cur) {
// return false;
// }else{
// wx.navigateTo({
// url: '../inCome/index?id=' + id,
// })
// }
wx.navigateTo({
url: '../inCome/accounting/index?',
let codeStr = e.currentTarget.dataset.code;
let formDataObj = this.data.formData;
if(formDataObj.jieAmount==''){ //收入金额
UTIL.showToastNoneIcon('请填写收入金额!');
return false;
}else if(formDataObj.accountName==''){ //存入账户
UTIL.showToastNoneIcon('请选择存入账户!');
return false;
}else if(formDataObj.billNum==''){ //单据编码
UTIL.showToastNoneIcon('请输入单据编码!');
return false;
}else if(formDataObj.accountSummary==''){ //备注说明
UTIL.showToastNoneIcon('请输入备注说明!');
return false;
}else if(formDataObj.incomeType == '2' && formDataObj.contractionId==''){
UTIL.showToastNoneIcon('收入类型为发包收入,必须选择关联合同!');
return false;
}
let data = this.data.formData;
data.method = "POST";
data.checkedStatus = codeStr;
UTIL.httpRequest(API.URL_POST_GERFLOWADD,data,{
success: (res) => {
if(res.code == 200){
let vouerId = res.data;
// let vouerId = 1;
let updataList = [...this.data.sjPics,...this.data.fpPics,...this.data.qtPics];
for(let i=0; i<updataList.length; i++){
let arrData=updataList[i];
arrData.tableId = vouerId;
wx.uploadFile({
url: API.URL_GET_UPLOAD,
filePath: arrData.file,
name: 'file',
header: {
"Content-Type": "multipart/form-data",//记得设置
"chartset":"utf-8",
'Authorization':'Bearer '+getApp().globalData.userInfo.token
},
formData:arrData,
success (response){
console.log(response);
},
fail(res){
console.log(response)
}
})
}
wx.redirectTo({
url: '/pages/index/index'
})
}else{
UTIL.showToastNoneIcon(res.msg);
}
}
})
},
imgPreviewImage(e){
let currentImgList = e.currentTarget.dataset;
//获取当前附件列表
let currentStatus = this.data[currentImgList.status];
//当前选中图片index
let currentIndex = currentImgList.id;
let imgList = []
for(let i = 0; i<currentStatus.length; i++){
imgList.push(currentStatus[i].file)
}
wx.previewImage({
current: imgList[currentIndex], // 当前显示图片的http链接
urls: imgList // 需要预览的图片http链接列表
})
},
/**
* 生命周期函数--监听页面初次渲染完成
*/
onReady: function () {

},

/**
* 生命周期函数--监听页面显示
*/
onShow: function () {

},

/**
* 生命周期函数--监听页面隐藏


+ 15
- 5
pages/inCome/inCome.json Целия файл

@@ -1,12 +1,22 @@
{
"navigationStyle": "custom",
"usingComponents": {
"van-tab": "@vant/weapp/tab/index",
"van-tabs": "@vant/weapp/tabs/index",
"van-action-sheet": "@vant/weapp/action-sheet/index",
"van-swipe-cell": "@vant/weapp/swipe-cell/index",
"van-row": "@vant/weapp/row/index",
"van-col": "@vant/weapp/col/index",
"van-cell": "@vant/weapp/cell/index",
"van-cell-group": "@vant/weapp/cell-group/index",
"van-tag": "@vant/weapp/tag/index",
"van-icon": "@vant/weapp/icon/index",
"van-tag": "@vant/weapp/tag/index"
"van-steps": "@vant/weapp/steps/index",
"van-button": "@vant/weapp/button/index",
"van-radio": "@vant/weapp/radio/index",
"van-radio-group": "@vant/weapp/radio-group/index",
"van-field": "@vant/weapp/field/index",
"van-popup": "@vant/weapp/popup/index",
"van-picker": "@vant/weapp/picker/index",
"van-calendar": "@vant/weapp/calendar/index",
"van-dialog": "@vant/weapp/dialog/index",
"van-collapse": "@vant/weapp/collapse/index",
"van-collapse-item": "@vant/weapp/collapse-item/index"
}
}

+ 88
- 30
pages/inCome/inCome.wxml Целия файл

@@ -7,51 +7,107 @@
<view class="top" style="margin-top:{{isIPX?'100px':'75px'}};">
<image src="../../image/apply/dress_icon.png" mode="widthFix"></image>
<view class="top-tit">收入单位</view>
<view class="top-title">学坝社区股份经济合作联合社</view>
<view class="top-title">{{bookName}}</view>
</view>
<view class="title">
<text>基础信息</text>
</view>
<view class="main-box table-box">
<view>
<view class="flex-block">
<text class="rules">收入时间</text>
<picker mode="date" value="{{time}}" start="09:01" end="21:01" bindchange="bindTimeChange">
<view class="picker">
{{time}}
</view>
</picker>
<view class="wrap" bindtap="onsrDate" >
{{formData.accountDate}}
</view>
<van-calendar
show="{{ srShow }}"
min-date="{{ minDate }}"
max-date="{{ maxDate }}"
bind:close="onClose"
bind:confirm="onConfirm"
/>
</view>
<view>
<view class="flex-block">
<text class="rules">收入金额</text>
<input type="number" value="{{srje}}" style="text-align:right;"/>
<input class="wrap" data-prop="formData.jieAmount" type="number" value="{{formData.jieAmount}}" bindinput="inputChange" placeholder="请输入收入金额"/>
</view>
<view class="flex-block"><text class="rules">存入账户</text>
<!-- <input class="wrap" type="number" bindinput="inputChange" data-prop="formData.accountName" value="{{formData.accountName}}" placeholder="请输入存入账户"/> -->
<view bindtap="oncrzhShow" class="wrap">
<text wx:if="{{formData.accountName==''}}" class="color-gray">请选择存入账户</text>
<text wx:else>{{formData.accountName}}</text>
</view>
<!-- custom-style="height: 20%;"-->
<van-popup
show="{{ crzhShow }}"
position="bottom"
bind:close="onCancelcrzh"
>
<van-picker columns="{{ accountListOptions }}" value-key="accountName" bind:cancel="onCancelcrzh"
show-toolbar="{{true}}"
bind:confirm="onConfirmcrzh"/>

</van-popup>

</view>
<view class="flex-block"><text class="rules">收入类型</text>
<picker bindchange="bindPickerChange" class="wrap picker_wrap"
value="{{incomeTypeText}}"
range="{{incomeTypeOptions}}"
range-key="dictLabel">
<view class="picker">
{{incomeTypeText}}
</view>
</picker>
</view>
<view><text class="rules">存入账户</text> <input type="number" value="{{crzh}}" style="text-align:right;"/></view>
<view><text class="rules">收入类型</text> <input type="number" value="{{srlx}}" style="text-align:right;"/></view>
<view><text class="rules">单据编码</text> <input type="number" value="{{djbm}}" style="text-align:right;"/></view>
<view><text class="rules">备注说明</text> <input type="number" value="{{bzsm}}" style="text-align:right;"/></view>
<view class="flex-block"><text class="rules">单据编码</text> <input class="wrap" type="number" bindinput="inputChange" data-prop="formData.billNum" value="{{formData.billNum}}" placeholder="请输入单据编码"/></view>
<view class="flex-block"><text class="rules">备注说明</text> <input class="wrap" type="number" bindinput="inputChange" data-prop="formData.accountSummary" placeholder="请输入备注说明" value="{{formData.accountSummary}}"/></view>
</view>
<view class="title">
<text>关联合同</text>
</view>
<view class="main-box table-box">
<view>
<text class="rules">付款人</text>
<input type="text" value="{{srje}}" style="text-align:right;"/>
<view class="flex-block">
<text class="rules {{formData.incomeType == '2' ?'':'no'}}">付款人{{}}</text>
<view class="wrap" bindtap="selectContraction">
<text wx:if="{{payerText==''}}" class="color-gray">请选择付款人</text>
<text wx:else>{{payerText}}</text>
</view>

<van-popup show="{{showHt}}" round position="bottom" bind:close="closeBox" >
<van-picker
columns="{{contractionOptions}}"
show-toolbar
value-key="name"
bind:cancel="closeBox"
bind:confirm="onConfirmContraction"
/>
</van-popup>
</view>
<view class="flex-block"><text class="rules {{formData.incomeType == '2' ?'':'no'}}">合同编码</text>
<view class="wrap" bindtap="selectContraction">
<text wx:if="{{formData.contractionId==''}}" class="color-gray">请选择合同编码</text>
<text wx:else>{{formData.contractionId}}</text>
</view>
</view>
<view><text class="rules">合同编码</text> <input type="text" value="{{htbm}}" style="text-align:right;"/></view>
</view>
<view class="title">
<text>附件</text>
</view>
<view class="main-box table-box">
<view style="margin:10px 0 5px;">
<view style="margin:10px 0 5px;" class="flex-block">
<text class="fjLable">收据</text>
<view class='content'>
<view class='img-box'>
<view class='img-list'>
<block wx:for="{{sjPics}}" wx:key="index">
<block wx:for="{{sjPics}}" wx:for-index="index" wx:key="index">
<view class='img-item'>
<image src='{{item}}' bindlongpress="bindlongpressimg" data-id='{{index}}'></image>
<van-icon class="close-ico" data-id="{{index}}" name="/image/apply/img_delete.png" size="20px" data-status="sjPics" bindtap="deleteimg" />
<image src='{{item.file}}' class="imagea" bindlongpress="bindlongpressimg" data-status="sjPics" bindtap="imgPreviewImage" data-id='{{index}}'></image>
</view>
</block>
<view class='chooseimg' bindtap='uploadSjPics'>
@@ -61,14 +117,15 @@
</view>
</view>
</view>
<view style="margin:10px 0 5px;">
<view style="margin:10px 0 5px;" class="flex-block">
<text class="fjLable">发票</text>
<view class='content'>
<view class='img-box'>
<view class='img-list'>
<block wx:for="{{fpPics}}" wx:key="index">
<block wx:for="{{fpPics}}" wx:for-index="index" wx:key="index">
<view class='img-item'>
<image src='{{item}}' bindlongpress="bindlongpressimg" data-id='{{index}}'></image>
<van-icon class="close-ico" data-id="{{index}}" name="/image/apply/img_delete.png" size="20px" data-status="fpPics" bindtap="deleteimg" />
<image src='{{item.file}}' data-status="fpPics" bindtap="imgPreviewImage" class="imagea" bindlongpress="bindlongpressimg" data-id='{{index}}'></image>
</view>
</block>
<view class='chooseimg' bindtap='uploadFpPics'>
@@ -78,14 +135,15 @@
</view>
</view>
</view>
<view style="margin:10px 0 5px;">
<view style="margin:10px 0 5px;" class="flex-block">
<text class="fjLable">其他</text>
<view class='content'>
<view class='img-box'>
<view class='img-list'>
<block wx:for="{{qtPics}}" wx:key="index">
<block wx:for="{{qtPics}}" wx:for-index="index" wx:key="index">
<view class='img-item'>
<image src='{{item}}' bindlongpress="bindlongpressimg" data-id='{{index}}'></image>
<van-icon class="close-ico" data-id="{{index}}" name="/image/apply/img_delete.png" size="20px" data-status="qtPics" bindtap="deleteimg" />
<image src='{{item.file}}' data-status="qtPics" bindtap="imgPreviewImage" class="imagea" bindlongpress="bindlongpressimg" data-id='{{index}}'></image>
</view>
</block>
<view class='chooseimg' bindtap='uploadQtPics'>
@@ -96,9 +154,9 @@
</view>
</view>
</view>
<view class="main-box table-box">
<view class="btn">
<button type="primary" plain="true">暂存</button>
<button type="primary" bindtap="swichAccounting">提交</button>
<view class="main-box table-box" style="margin-top: 30rpx;">
<view class="btn flex-block">
<button type="primary" data-code="1" bindtap="swichAccounting" plain="true">暂存</button>
<button type="primary" data-code="2" bindtap="swichAccounting">提交</button>
</view>
</view>

+ 49
- 14
pages/inCome/inCome.wxss Целия файл

@@ -35,6 +35,11 @@
content:'*';
color:red;
}
.rules.no::before{
content:' ';
padding-left: 14rpx;
color:'#fff';
}
main-title{
background-image: linear-gradient(to right, #2C8E68 , #B3DB62);
color: #ffffff;
@@ -44,7 +49,7 @@ main-title{
}
.main-box{
background: #ffffff;
padding: 20rpx;
padding: 20rpx 20rpx 10rpx;
width: 94%;
margin: 0 auto;
border-radius: 10rpx;
@@ -53,6 +58,10 @@ main-title{
.main-box block{
float: right;
}

.main-box .color-gray{
color: #888;
}
.title{
padding: 10rpx calc(3% + 20px);
color : #07c160;
@@ -60,21 +69,37 @@ main-title{
font-size:30rpx;
}
.table-box view{
display: flex;
justify-content: space-between;
}
.table-box text{
/* line-height: 55rpx; */
}
.table-box .flex-block{
line-height: 55rpx;
margin-bottom: 5rpx;
display: flex;
justify-content: space-between;
}
.table-box .rules{
width: 200rpx;
}
.table-box .picker_wrap{
/* display: flex;
justify-content: flex-end;
align-items: center; */
}
.table-box .picker{text-align: right;}
.table-box .wrap{flex:1; text-align: right;}
.fjLable{
display: inline-block;
display: flex;
width:24px;
margin:30rpx 5rpx;
margin:25rpx 5rpx;
color:#fff;
background:#07c160;
border-radius: 10rpx;
text-align: center;
line-height: 40rpx!important;
border-radius: 10rpx;
justify-content: center; /* 相对父元素水平居中 */
align-items: center;
padding:25rpx 0;
}
.content {
@@ -94,13 +119,18 @@ main-title{
.img-item {
width: 30%;
text-align: left;
margin-right: 20rpx;
margin-right: 3%;
margin-bottom: 10rpx;
position: relative;
}

.img-item image {
width: 180rpx;
height: 180rpx;
.img-item .close-ico{
position: absolute;
right: -10rpx;
top: -10rpx;
}
.img-item .imagea {
width: 160rpx;
height: 160rpx;
}

.submit-btn {
@@ -115,14 +145,19 @@ main-title{
}

.chooseimg {
height: 160rpx;
background-color: #fff;
display: flex;
justify-content: center; /* 相对父元素水平居中 */
align-items: center;
}

.weui-uploader__input-box {
float: left;
position: relative;
margin-right: 9rpx;
margin-bottom: 9rpx;
/* margin-right: 9rpx;
margin-bottom: 9rpx; */
width: 120rpx;
height: 120rpx;
border: 1px solid #d9d9d9;


+ 4
- 1
utils/API.js Целия файл

@@ -188,6 +188,8 @@ const URL_GET_GETMONEYORDERLIST = `${URL_PREFIX}/yinnong/moneyorder/list`;
//汇票、现金支出申请
const URL_GET_GETCASHSAVE = `${URL_PREFIX}/yinnong/approvalItems/cashSave`;

//增加收入流水
const URL_POST_GERFLOWADD = `${URL_PREFIX}/cashier/flow/add`;


/****************接口地址end****************/
@@ -265,5 +267,6 @@ export {
URL_GET_GETBOOKKEEP,
URL_GET_GETAPPROVALBYID,
URL_GET_GETMONEYORDERLIST,
URL_GET_GETCASHSAVE
URL_GET_GETCASHSAVE,
URL_POST_GERFLOWADD
}

Зареждане…
Отказ
Запис