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

Merge remote-tracking branch 'origin/master'

master
yujk преди 3 години
родител
ревизия
c023fc3d8a
променени са 28 файла, в които са добавени 2096 реда и са изтрити 58 реда
  1. +3
    -0
      app.json
  2. +18
    -6
      pages/Bookkeeping/Bookkeeping.js
  3. +9
    -9
      pages/Bookkeeping/Bookkeeping.wxml
  4. +534
    -0
      pages/Bookkeeping/seeBook/seeBook.js
  5. +24
    -0
      pages/Bookkeeping/seeBook/seeBook.json
  6. +90
    -0
      pages/Bookkeeping/seeBook/seeBook.wxml
  7. +292
    -0
      pages/Bookkeeping/seeBook/seeBook.wxss
  8. +527
    -0
      pages/Bookkeeping/seeBookZC/seeBookZC.js
  9. +24
    -0
      pages/Bookkeeping/seeBookZC/seeBookZC.json
  10. +89
    -0
      pages/Bookkeeping/seeBookZC/seeBookZC.wxml
  11. +292
    -0
      pages/Bookkeeping/seeBookZC/seeBookZC.wxss
  12. +14
    -4
      pages/Bookkeeping/update/update.js
  13. +2
    -2
      pages/Bookkeeping/update/update.wxml
  14. +2
    -3
      pages/Bookkeeping/updateZC/update.js
  15. +2
    -2
      pages/Bookkeeping/updateZC/update.wxml
  16. +30
    -6
      pages/apply/approval/approval.js
  17. +4
    -3
      pages/apply/approval/approval.wxml
  18. +8
    -2
      pages/apply/paymentTemplate/add/add.js
  19. +16
    -8
      pages/inCome/inCome.js
  20. +3
    -3
      pages/inCome/inCome.wxml
  21. +2
    -5
      pages/payee/add/add.js
  22. +1
    -1
      pages/payee/add/add.wxml
  23. +1
    -1
      pages/payee/list/list.js
  24. +4
    -1
      pages/payee/list/list.wxml
  25. +10
    -1
      pages/user/login/login.js
  26. +1
    -0
      pages/user/login/login.json
  27. +89
    -1
      pages/user/login/login.wxml
  28. +5
    -0
      pages/user/login/login.wxss

+ 3
- 0
app.json Целия файл

@@ -34,6 +34,9 @@
"pages/fixedAssets/fixedAssets",
"pages/fixedAssets/add/add",
"pages/finance/finance",
"pages/Bookkeeping/seeBook/seeBook",
"pages/Bookkeeping/seeBookZC/seeBookZC",
"pages/finance/finance",
"pages/contractAssets/fixedAssets"
],
"window": {


+ 18
- 6
pages/Bookkeeping/Bookkeeping.js Целия файл

@@ -23,7 +23,6 @@ Page({
*/
onLoad(options) {
var that = this;

UTIL.httpRequest(API.URL_GET_GETDICTTYPE + 'checked_status', {method:'GET'}, {
success: (res) => {
that.setData({
@@ -45,7 +44,6 @@ Page({
})
}
})

that.SRSelect();
that.ZCSelect();
},
@@ -111,7 +109,7 @@ Page({
},
switchTab(e){
var that = this;
this.setData({showGroup:e.currentTarget.dataset.gid})
this.setData({showGroup:e.currentTarget.dataset.gid,result:[],result2:[]})
if(e.currentTarget.dataset.gid){
//收入事项
let data = {
@@ -180,8 +178,9 @@ Page({
* 生命周期函数--监听页面显示
*/
onShow() {

var that = this ;
that.SRSelect();
that.ZCSelect();
},
openPopup(even){
this.setData({
@@ -194,6 +193,8 @@ Page({
[event.currentTarget.dataset.name]: false,
checkedStatus: event.detail.value.dictValue,
checkedStatusText: event.detail.value.dictLabel,
result:[],
result2:[]
});
let data = {
pageNum:'1',
@@ -231,7 +232,8 @@ Page({
let list = res.rows;
for (let i = 0; i < list.length; i++) {
const element = list[i];
element.checkedStatusText = UTIL.getTransform(element.checkedStatus,that.data.capitalExpenditureTypeOptions);
list[i].checkedStatusText = UTIL.getTransform(element.checkedStatus,that.data.capitalExpenditureTypeOptions);
list[i].expenditureTypeText = UTIL.getTransform(element.expenditureType,that.data.expenditureTypeOptions);
}
this.setData({
flowListZC:list,
@@ -306,6 +308,16 @@ Page({
}
},
goSee(event){
wx.navigateTo({
url: '/pages/Bookkeeping/seeBook/seeBook?id='+event.currentTarget.dataset.id,
})
},
goSeeZC(event){
wx.navigateTo({
url: '/pages/Bookkeeping/seeBookZC/seeBookZC?id='+event.currentTarget.dataset.id,
})
},
goUpdate(event){
wx.navigateTo({
url: '/pages/Bookkeeping/update/update?id='+event.currentTarget.dataset.id,


+ 9
- 9
pages/Bookkeeping/Bookkeeping.wxml Целия файл

@@ -24,9 +24,9 @@
</van-popup>
</view>
<van-checkbox-group wx:if="{{showGroup}}" value="{{ result }}" bind:change="onChange">
<van-swipe-cell right-width="{{ 130 }}" class="workflow" wx:for="{{flowListSR}}" wx:key="index">
<view class="li" data-id="{{item.id}}">
<van-checkbox name="{{item.id}}" shape="square" checked-color="#2C8E68" style="width: 100%;">
<van-swipe-cell right-width="{{ 130 }}" class="workflow" wx:for="{{flowListSR}}" wx:key="index" disabled="{{item.checkedStatusText == '待审核' || item.checkedStatusText == '已审核'}}">
<view class="li" data-id="{{item.id}}" bindtap="{{item.checkedStatusText == '待审核' || item.checkedStatusText == '已审核'?'goSee':''}}">
<van-checkbox name="{{item.id}}" disabled="{{item.checkedStatusText == '待审核' || item.checkedStatusText == '已审核'}}" shape="square" checked-color="#2C8E68" style="width: 100%;">
<view style="width: 35%;">
<text class="tit">{{item.accountSummary}}</text>
<view class="fksr">
@@ -47,7 +47,7 @@
</view>
</van-checkbox>
</view>
<view slot="right" class="deleteBox" wx:if="{{item.checkedStatusText != '已审核'}}">
<view slot="right" class="deleteBox">
<view style="flex: 1;height: 100%;display: flex;align-items: center;justify-content: space-evenly;">
<image src="../../image/apply/icon_delete.png" style="width: 25px;height: 25px;margin: 0 auto;" data-id="{{item.id}}" data-index="{{index}}" bindtap="delete"></image>
<image src="../../image/icon/icon_xg.png" style="width: 25px;height: 25px;margin: 0 auto;" data-id="{{item.id}}" data-index="{{index}}" bindtap="goUpdate"></image>
@@ -57,9 +57,9 @@
</van-checkbox-group>

<van-checkbox-group wx:if="{{!showGroup}}" value="{{ result2 }}" bind:change="onChange2">
<van-swipe-cell right-width="{{ 130 }}" class="workflow" wx:for="{{flowListZC}}" wx:key="index">
<view class="li" data-id="{{item.id}}">
<van-checkbox name="{{item.id}}" shape="square" checked-color="#2C8E68" style="width: 100%;">
<van-swipe-cell right-width="{{ 130 }}" class="workflow" wx:for="{{flowListZC}}" wx:key="index" disabled="{{item.checkedStatusText == '待审核' || item.checkedStatusText == '已审核'}}">
<view class="li" data-id="{{item.id}}" bindtap="{{item.checkedStatusText == '待审核' || item.checkedStatusText == '已审核'?'goSeeZC':''}}">
<van-checkbox name="{{item.id}}" shape="square" disabled="{{item.checkedStatusText == '待审核' || item.checkedStatusText == '已审核'}}" checked-color="#2C8E68" style="width: 100%;">
<view style="width: 35%;">
<text class="tit">{{item.accountSummary}}</text>
<view class="fksr">
@@ -80,7 +80,7 @@
</view>
</van-checkbox>
</view>
<view slot="right" class="deleteBox" wx:if="{{item.checkedStatusText != '已审核'}}">
<view slot="right" class="deleteBox">
<view style="flex: 1;height: 100%;display: flex;align-items: center;justify-content: space-evenly;">
<image src="../../image/apply/icon_delete.png" style="width: 25px;height: 25px;margin: 0 auto;" data-id="{{item.id}}" data-index="{{index}}" bindtap="delete2"></image>
<image src="../../image/icon/icon_xg.png" style="width: 25px;height: 25px;margin: 0 auto;" data-id="{{item.id}}" data-index="{{index}}" bindtap="goUpdateZC"></image>
@@ -96,6 +96,6 @@
<van-empty wx:if="{{flowListZCNum == 0 && !showGroup}}" description="暂无支出事项数据" />
<view class="ipXbtn"></view>
<view class="ipXbtn"></view>
<view class="bottom">
<view class="bottom" wx:if="{{flowListSR[0].checkedStatusText == '未提交' || flowListSR[0].checkedStatusText == '已挂起' || flowListZC[0].checkedStatusText == '未提交' || flowListZC[0].checkedStatusText == '已挂起'}}">
<view class="btn2" bindtap="goSubmit">提交记账</view>
</view>

+ 534
- 0
pages/Bookkeeping/seeBook/seeBook.js Целия файл

@@ -0,0 +1,534 @@
// pages/apply/index.js
import * as UTIL from '../../../utils/util.js';
import * as API from '../../../utils/API.js';
let EVN_CONFIG = require('../../../env/env');
const DISTRIBUTE_ENVIROMENT = 'IMGURL';
let {
URL_PREFIX,
} = EVN_CONFIG[DISTRIBUTE_ENVIROMENT];
const app = getApp();
Page({

/**
* 页面的初始数据
*/
data: {
isIPX: app.globalData.isIPX,
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(2021, 6, 1).getTime(),
maxDate: new Date(2023, 0, 31).getTime(),
crzhShow:false,
accountListOptions:[], //存入账户类型选项
crlxShow:false, //收入类型弹窗显隐
subjectOptions:[],//科目类型
showKm:false,
fileForm:[],//上传文件列表
fileNum:0,//附件总数
},
selectKM(){
this.setData({showKm:true})
},
closeBoxKM(){
this.setData({showKm:false})
},
onConfirmContractionKm(value){
console.log(value);
let obj = value.detail.value;
this.setData({
'formData.subjectNameAll':obj.subjectNameAll,
showKm:false,
'formData.subjectId':obj.subjectId,
})
},
onCancelcrlx(){
this.setData({crlxShow:false,})
},
oncrlxShow(){ this.setData({crlxShow:true})},
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.id,
contractionIdID:obj.code
})
},
selectContraction(){
this.setData({showHt:true})
},
bindPickerChange (e) {
let obj = e.detail.value;
this.setData({
crlxShow:false,
'formData.incomeType':obj.dictValue,
incomeTypeText:obj.dictLabel
})
},
inputChange(e){
this.setData({
[e.currentTarget.dataset.prop]: e.detail.value
})
},
/**
* 生命周期函数--监听页面加载
*/
onShow: function () {
},
/**
* 生命周期函数--监听页面初次渲染完成
*/
onLoad: function (options) {
var that = this;
that.setData({
tableId:options.id
})
//获取附件字典
UTIL.httpRequest(API.URL_GET_GETDICTTYPE + 'bookkeeping_type', {method:'GET'}, {//查询附件字典
success: (res) => {
if(res.data.length>0){
this.setData({
uploadOptions:res.data,
})
let uploadList = res.data
uploadList.map( (item,index) => {
console.log(index);
let oData = {
tableId: options.id,
fileType:index+1,
bizPath:'transfer',
tableName:'t_cashier_account_flow',
method:'GET'
}
UTIL.httpRequest( API.URL_GET_FINDLIST, oData ,{//查询每个附件字典下的附件
success: (res2) => {
console.log(res2);
let list = [];
let fileForm = that.data.fileForm?that.data.fileForm:[];
res2.data.forEach((item2,index2)=>{
fileForm.push({
file: URL_PREFIX+item2.fileUrl,
fileType:index+1,
bizPath:'transfer',
tableName:'t_cashier_account_flow',
tableId:''
})
list.push({
tempFilePath:URL_PREFIX+item2.fileUrl,
id:item2.id
})
})
that.setData({
["uploadOptions["+index+"].Pics"]:list,
fileForm:fileForm,
fileNum:fileForm.length
});
console.log(that.data)
}
})
})
}
}
})
//查询收入详情
UTIL.httpRequest(API.URL_GET_FLOWGET + options.id , {method:'GET'}, {
success: (res) => {
if(res.data.incomeType == 2){
UTIL.httpRequest(API.URL_GET_INFOGET + res.data.contractionId , {method:'GET'}, {
success: (res3) => {
that.setData({
contractionIdID:res3.data.code,
payerText:res3.data.name,
})
}
})
}

//获取收入类型状态
UTIL.httpRequest(API.URL_GET_GETDICTTYPE + 'income_type', {method:'GET'}, {
success: (res2) => {
if(res2.data.length>0){
that.setData({
incomeTypeOptions:res2.data,
})
that.setData({
formData:res.data,
contractionIdID:res.data.code,
incomeTypeText:UTIL.getTransform(res.data.incomeType,res2.data)
})
}
}
})
console.log(res);
}
})
UTIL.httpRequest(API.URL_GET_SUBJECTLIST , {method:'GET'}, {
success: (res2) => {
if(res2.rows.length>0){
that.setData({
subjectOptions:res2.rows,
})
}
}
})
},

/**
* 生命周期函数--监听页面显示
*/
onReady: function () {
let that = this;
//获取收入单位
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_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){
var that = this ;
let oData = e.currentTarget.dataset;
let index = oData.index
let file = that.data.fileForm;
console.log(that.data.uploadOptions[index].Pics);
for (let i = 0; i < file.length; i++) {
const element = file[i];
if(element.file == that.data.uploadOptions[index].Pics[oData.id].tempFilePath){
file.splice(i,1);
}
}
that.data.uploadOptions[index].Pics.splice(oData.id,1);
// let length = this.data.form.transfers[e.currentTarget.dataset.parentsindex].fileNum - 1;
this.setData({
// ["form.transfers["+e.currentTarget.dataset.parentsindex+"].fileNum"]:length,
[oData.status]:that.data.uploadOptions[index],
fileForm:file,
fileNum:that.data.fileNum-1
})
UTIL.httpRequest(API.URL_GET_GETFILEREMOVE+e.currentTarget.dataset.imgid , {method:'GET'}, {
success: (res) => {
wx.showToast({
title: '删除成功!',
icon: 'success',
duration: 2000,
})
}
})
},
back:function(){
wx.navigateBack({
delta: 1
})
},
uploadSjPics: function (e) { //这里是选取图片的方法
var that = this;
var detailPics = that.data.uploadOptions[e.currentTarget.dataset.index].Pics;
if (detailPics.length >= that.data.count) {
wx.showToast({
title: '最多选择' + that.data.count + '张!',
})
return;
}
wx.chooseImage({
count: that.data.count, // 最多可以选择的图片张数,默认9
sizeType: ['original', 'compressed'], // original 原图,compressed 压缩图,默认二者都有
sourceType: ['album', 'camera'], // album 从相册选图,camera 使用相机,默认二者都有
success: function (res) {
console.log(res)
let fileForm = that.data.fileForm;
let tem = that.data.uploadOptions[e.currentTarget.dataset.index].Pics?that.data.uploadOptions[e.currentTarget.dataset.index].Pics:[];
res.tempFilePaths.forEach(item => {
fileForm.push({
file: item,
fileType:e.currentTarget.dataset.index+1,
bizPath:'cashier',
tableName:'t_cashier_account_flow',
tableId:''
})
tem.push({
tempFilePath:item
})
})
that.setData({
['uploadOptions['+e.currentTarget.dataset.index+'].Pics']:tem,
fileForm:fileForm,
fileNum:fileForm.length
})
},
})
},
uploadFpPics: function (e) { //这里是选取图片的方法
var that = this;
var pics = [];
var detailPics = that.data.fpPics;
if (detailPics.length >= that.data.count) {
wx.showToast({
title: '最多选择' + that.data.count + '张!',
})
return;
}
wx.chooseImage({
count: that.data.count, // 最多可以选择的图片张数,默认9
sizeType: ['original', 'compressed'], // original 原图,compressed 压缩图,默认二者都有
sourceType: ['album', 'camera'], // album 从相册选图,camera 使用相机,默认二者都有
success: function (res) {
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
})
},
})
},
uploadQtPics: function (e) { //这里是选取图片的方法
var that = this;
var pics = [];
var detailPics = that.data.qtPics;
if (detailPics.length >= that.data.count) {
wx.showToast({
title: '最多选择' + that.data.count + '张!',
})
return;
}
wx.chooseImage({
count: that.data.count, // 最多可以选择的图片张数,默认9
sizeType: ['original', 'compressed'], // original 原图,compressed 压缩图,默认二者都有
sourceType: ['album', 'camera'], // album 从相册选图,camera 使用相机,默认二者都有
success: function (res) {
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){
var that = this;
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.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;
console.log(data);
UTIL.httpRequest(API.URL_POST_GERFLOWEDIT,data,{
success: (res) => {
if(res.code == 200){
let vouerId = that.data.tableId;
// let vouerId = 1;
// let updataList = [...this.data.sjPics,...this.data.fpPics,...this.data.qtPics];
let updataList = that.data.fileForm;
console.log(updataList);
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.showToast({
title: '修改成功',
icon: 'success',
duration: 2000
})
setTimeout(function(){
wx.navigateBack({
delta: 1
})
},2000)
}else{
UTIL.showToastNoneIcon(res.msg);
}
}
})
},
onChange(event){
this.setData({
[event.currentTarget.dataset.value]: event.detail,
})
},
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链接列表
})
},

/**
* 生命周期函数--监听页面隐藏
*/
onHide: function () {

},

/**
* 生命周期函数--监听页面卸载
*/
onUnload: function () {

},

/**
* 页面相关事件处理函数--监听用户下拉动作
*/
onPullDownRefresh: function () {

},

/**
* 页面上拉触底事件的处理函数
*/
onReachBottom: function () {

},

/**
* 用户点击右上角分享
*/
onShareAppMessage: function () {

}
})

+ 24
- 0
pages/Bookkeeping/seeBook/seeBook.json Целия файл

@@ -0,0 +1,24 @@
{
"navigationStyle": "custom",
"usingComponents": {
"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-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"

}
}

+ 90
- 0
pages/Bookkeeping/seeBook/seeBook.wxml Целия файл

@@ -0,0 +1,90 @@
<!--pages/apply/index.wxml-->
<view class="ns" style="height:{{isIPX?'88px':'64px'}};">
<image src="/image/apply/back.png" style="top:{{isIPX?'54px':'30px'}};" mode="widthFix" bindtap="back"></image>
<text style="top:{{isIPX?'54px':'30px'}};">收入事项查看</text>
</view>
<!-- 付款单位开始 -->
<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">{{bookName}}</view>
</view>
<text class="title">基础信息</text>
<view class="main-box table-box">
<view class="flex-block">
<text class="rules">收入时间</text>
<view class="wrap">
{{formData.accountDate}}
</view>
</view>
<view class="flex-block">
<text class="rules">收入金额</text>
<input disabled class="wrap" data-prop="formData.jieAmount" type="digit" value="{{formData.jieAmount}}" bindinput="inputChange" placeholder="收入金额"/>
</view>
<view class="flex-block">
<text class="rules">存入账户</text>
<view class="wrap">
<text>{{formData.accountName}}</text>
</view>
</view>
<view class="flex-block">
<text class="rules">收入类型</text>
<view class="wrap">
<text>{{incomeTypeText}}</text>
</view>
</view>
<view class="flex-block"><text class="rules no">单据编码</text> <input disabled class="wrap" bindinput="inputChange" data-prop="formData.billNum" value="{{formData.billNum}}" placeholder="单据编码"/></view>
<view class="flex-block">
<text class="rules no">对方科目</text>
<view class="wrap">
<text>{{formData.subjectNameAll == null ? '':formData.subjectNameAll}}</text>
</view>
</view>
<view class="flex-block"><text class="rules">备注说明</text> <input disabled class="wrap" bindinput="inputChange" data-prop="formData.accountSummary" placeholder="请输入备注说明" value="{{formData.accountSummary}}"/></view>
<view class="flex-block" wx:if="{{formData.checkedStatus == 4}}"><text class="rules">挂起原因</text> <input disabled class="wrap" bindinput="inputChange" data-prop="formData.remark" placeholder="挂起原因" value="{{formData.remark}}"/></view>
</view>
<block wx:if="{{incomeType == 2}}">
<view class="title">
<text>关联合同</text>
</view>
<view class="main-box table-box">
<view class="flex-block">
<text class="rules {{formData.incomeType == '2' ?'':'no'}}">付款人{{}}</text>
<view class="wrap">
<text>{{payerText}}</text>
</view>
</view>
<view class="flex-block"><text class="rules {{formData.incomeType == '2' ?'':'no'}}">合同编码</text>
<view class="wrap" bindtap="selectContraction">
<text>{{contractionIdID}}</text>
</view>
</view>
</view>
</block>
<view class="main-box table-box" style="margin-top: 15px;">
<van-cell>
<!-- <view slot="icon">
<van-icon class-prefix="my-icon" name="extra" />
</view> -->
<view slot="title">
<view class="van-cell-text">附件<van-tag type="danger" style="margin-left: 10px;">可拍照</van-tag></view>
</view>
<view>
<view class="van-cell-text">总数<van-tag round color="#5CAE77" plain style="margin-left: 10px;"> {{fileNum}}张 </van-tag></view>
</view>
</van-cell>
<view class="fj-box">
<view class="fj-li" wx:for="{{uploadOptions}}" wx:key="index">
<view>
<text>{{item.dictLabel}}</text>
</view>
<view class="img_box">
<view class="img_list" wx:for="{{item.Pics}}" wx:for-index="childrenIndex" wx:for-item="item2" wx:key="childrenIndex">
<image class="img_li" src="{{item2.tempFilePath}}" bindlongpress="bindlongpressimg" data-status="sjPics" bindtap="imgPreviewImage" data-id='{{childrenIndex}}'></image>
</view>
</view>
</view>
</view>
</view>
<view class="ipXbtn"></view>

+ 292
- 0
pages/Bookkeeping/seeBook/seeBook.wxss Целия файл

@@ -0,0 +1,292 @@
/* pages/apply/index.wxss */
.inComeUnit{
border:1rpx solid #ddd;
width:90%;
margin:0 auto;

}
.top{
display: flex;
width: 94%;
margin: 0 auto;
border-radius: 10rpx;
margin-top: 3vw;
overflow: hidden;
}
.top view{
padding: 40rpx 15rpx;
align-items: center;
justify-content: center;
position: relative;
}
.top image{
position: absolute;
width: 94%;
}
.top-title{
flex: 1;
text-align: center;
}
.top-tit{
color: #fff;
}
.rules:before{
content:'*';
color:red;
}
.rules.no::before{
content:' ';
padding-left: 14rpx;
color:'#fff';
}
.main-title{
background-image: linear-gradient(to right, #2C8E68 , #B3DB62);
color: #ffffff;
font-size: 18rpx;
padding: 10rpx 0;
text-align: center;
}
.main-box{
background: #ffffff;
padding: 20px;
width: 94%;
margin: 0 auto;
border-radius: 10px;
box-shadow: 0px 5px 5px rgba(0, 0, 0, 0.16);
}
.main-box block{
float: right;
}

.main-box .color-gray{
color: #888;
}
.title{
padding: 10px calc(3% + 20px);
display: block;
}
.van-cell{
padding-left: 0!important;
padding-right: 0!important;
padding-top: 0!important;
margin-bottom: 15px;
}
.table-box .flex-block{
margin-bottom: 15px;
display: flex;
justify-content: space-between;
align-items: center;
}
.table-box .flex-block:last-child{
margin-bottom: 0px;
}
.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: flex;
width:24px;
margin:25rpx 5rpx;
color:#fff;
background:#07c160;
text-align: center;
border-radius: 10rpx;
justify-content: center; /* 相对父元素水平居中 */
align-items: center;
padding:25rpx 0;
}
.content {
width: 100%;
background-color: #fff;
}

.img-list {
display: flex;
display: -webkit-flex;
flex-direction: row;
justify-content: flex-start;
align-items: center;
flex-wrap: wrap;
}

.img-item {
width: 30%;
text-align: left;
margin-right: 3%;
margin-bottom: 10rpx;
position: relative;
}
.img-item .close-ico{
position: absolute;
right: -10rpx;
top: -10rpx;
}
.img-item .imagea {
width: 160rpx;
height: 160rpx;
}

.submit-btn {
width: 100%;
background-color: #fff;
height: 80rpx;
text-align: center;
line-height: 80rpx;
font-size: 30rpx;
position: fixed;
bottom: 100rpx;
}

.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; */
width: 120rpx;
height: 120rpx;
border: 1px solid #d9d9d9;
}

.weui-uploader__input-box:before {
width: 2px;
height: 39.5px;
}

.weui-uploader__input-box:after, .weui-uploader__input-box:before {
content: " ";
position: absolute;
top: 50%;
left: 50%;
-webkit-transform: translate(-50%, -50%);
transform: translate(-50%, -50%);
background-color: #d9d9d9;
}

.weui-uploader__input-box:after {
width: 39.5px;
height: 2px;
}

.weui-uploader__input-box:after, .weui-uploader__input-box:before {
content: " ";
position: absolute;
top: 50%;
left: 50%;
-webkit-transform: translate(-50%, -50%);
transform: translate(-50%, -50%);
background-color: #d9d9d9;
}

.tips {
color: #666;
font-size: 24rpx;
padding-bottom: 20rpx;
}

.img-box {
width: 92%;
margin: auto;
padding-top: 20rpx;
}
.btn button{
line-height: 1.7;
padding-left:80rpx;
padding-right:80rpx;
border-radius: 30rpx;
}

.fj-box text{
background-color: #5CAE77;
color: #ffffff;
text-align: center;
border-radius: 5px;
white-space:pre-wrap;
padding: 22px 8px;
display: block;
}
.fj-li{
margin-top: 20px;
display: flex;
/* flex-wrap: wrap; */
}
.fj-li .img_li{
width: 100%;
height: 18.5vw;
}

.fj-li .img_add{
overflow: hidden;
}
.img_box{
position: relative;
width: 100%;
display: flex;
flex-wrap: wrap;
}
.img_box .img_list{
width: 25%;
margin-left: 5%;
position: relative;
}
.img_box .img_list .van-icon{
font-size: 20px;
position: absolute;
top: 0;
right: 0;
transform: translate(50%,-50%);
}
.img_box .img_list:nth-child(n+4){
margin-top: 15px;
}
.bottom{
width: 84%;
margin: 0 auto;
text-align: center;
margin-top: 50px;
margin-bottom: 50px;
display: flex;
}

.bottom view {
width: 47%;
margin: 0 auto;
border-radius: 30px;
display: inline-block;
}

.bottom .btn1{
border: 1px solid #2C8E68;
padding: 8px 0px;
color: #2C8E68;
}

.bottom .btn2{
border: 1px solid transparent;
padding: 8px 0px;
background-image: linear-gradient(to right, #2C8E68, #5CAE77);
margin-left: 6%;
color: #fff;
}
.bottom .btn3{
border: 1px solid transparent;
padding: 8px 0px;
background-image: linear-gradient(to right, #2C8E68, #5CAE77);
color: #fff;
width: 100%;
}

+ 527
- 0
pages/Bookkeeping/seeBookZC/seeBookZC.js Целия файл

@@ -0,0 +1,527 @@
// pages/apply/index.js
import * as UTIL from '../../../utils/util.js';
import * as API from '../../../utils/API.js';
let EVN_CONFIG = require('../../../env/env');
const DISTRIBUTE_ENVIROMENT = 'IMGURL';
let {
URL_PREFIX,
} = EVN_CONFIG[DISTRIBUTE_ENVIROMENT];
const app = getApp();
Page({

/**
* 页面的初始数据
*/
data: {
isIPX: app.globalData.isIPX,
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(2021, 6, 1).getTime(),
maxDate: new Date(2023, 0, 31).getTime(),
crzhShow:false,
accountListOptions:[], //存入账户类型选项
crlxShow:false, //收入类型弹窗显隐
subjectOptions:[],//科目类型
showKm:false,
fileForm:[],//上传文件列表
fileNum:0,//附件总数
},
onCancelcrlx(){
this.setData({crlxShow:false,})
},
oncrlxShow(){ this.setData({crlxShow:true})},
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})
},
closeBoxKM(){
this.setData({showKm: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.id,
contractionIdID:obj.code
})
},
onConfirmContractionKm(value){
console.log(value);
let obj = value.detail.value;
this.setData({
'formData.subjectNameAll':obj.subjectNameAll,
showKm:false,
'formData.subjectId':obj.subjectId,
})
},
selectContraction(){
this.setData({showHt:true})
},
selectKM(){
this.setData({showKm:true})
},
bindPickerChange (e) {
let obj = e.detail.value;
this.setData({
crlxShow:false,
'formData.expenditureType':obj.dictValue,
expenditureTypeText:obj.dictLabel
})
},
inputChange(e){
this.setData({
[e.currentTarget.dataset.prop]: e.detail.value
})
},
/**
* 生命周期函数--监听页面加载
*/
onShow: function () {
},
/**
* 生命周期函数--监听页面初次渲染完成
*/
onLoad: function (options) {
console.log(options);
var that = this;
that.setData({
tableId:options.id
})
//获取附件字典
UTIL.httpRequest(API.URL_GET_GETDICTTYPE + 'bookkeeping_type', {method:'GET'}, {//查询附件字典
success: (res) => {
if(res.data.length>0){
this.setData({
uploadOptions:res.data,
})
let uploadList = res.data
uploadList.map( (item,index) => {
console.log(index);
let oData = {
tableId: options.id,
fileType:index+1,
bizPath:'transfer',
tableName:'t_cashier_account_flow',
method:'GET'
}
UTIL.httpRequest( API.URL_GET_FINDLIST, oData ,{//查询每个附件字典下的附件
success: (res2) => {
console.log(res2);
let list = [];
let fileForm = that.data.fileForm?that.data.fileForm:[];
res2.data.forEach((item2,index2)=>{
fileForm.push({
file: URL_PREFIX+item2.fileUrl,
fileType:index+1,
bizPath:'transfer',
tableName:'t_cashier_account_flow',
tableId:''
})
list.push({
tempFilePath:URL_PREFIX+item2.fileUrl,
id:item2.id
})
})
that.setData({
["uploadOptions["+index+"].Pics"]:list,
fileForm:fileForm,
fileNum:fileForm.length
});
console.log(that.data)
}
})
})
}
}
})

//查询收入详情
UTIL.httpRequest(API.URL_GET_FLOWGET + options.id , {method:'GET'}, {
success: (res) => {
//获取收入类型状态expenditureTypeText
UTIL.httpRequest(API.URL_GET_GETDICTTYPE + 'capital_expenditure_type', {method:'GET'}, {
success: (res2) => {
if(res2.data.length>0){
that.setData({
expenditureTypeOptions:res2.data,
})
that.setData({
formData:res.data,
contractionIdID:res.data.code,
expenditureTypeText:UTIL.getTransform(res.data.expenditureType,res2.data)
})
}
}
})
console.log(res);
}
})

UTIL.httpRequest(API.URL_GET_SUBJECTLIST , {method:'GET'}, {
success: (res2) => {
if(res2.rows.length>0){
that.setData({
subjectOptions:res2.rows,
})
}
}
})

},

/**
* 生命周期函数--监听页面显示
*/
onReady: function () {
let that = this;
//获取收入单位
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_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){
var that = this ;
let oData = e.currentTarget.dataset;
let index = oData.index
let file = that.data.fileForm;
console.log(that.data.uploadOptions[index].Pics);
for (let i = 0; i < file.length; i++) {
const element = file[i];
if(element.file == that.data.uploadOptions[index].Pics[oData.id].tempFilePath){
file.splice(i,1);
}
}
that.data.uploadOptions[index].Pics.splice(oData.id,1);
// let length = this.data.form.transfers[e.currentTarget.dataset.parentsindex].fileNum - 1;
this.setData({
// ["form.transfers["+e.currentTarget.dataset.parentsindex+"].fileNum"]:length,
[oData.status]:that.data.uploadOptions[index],
fileForm:file,
fileNum:that.data.fileNum-1
})
UTIL.httpRequest(API.URL_GET_GETFILEREMOVE+e.currentTarget.dataset.imgid , {method:'GET'}, {
success: (res) => {
wx.showToast({
title: '删除成功!',
icon: 'success',
duration: 2000,
})
}
})

},
back:function(){
wx.navigateBack({
delta: 1
})
},
uploadSjPics: function (e) { //这里是选取图片的方法
var that = this;
var detailPics = that.data.uploadOptions[e.currentTarget.dataset.index].Pics;
if (detailPics.length >= that.data.count) {
wx.showToast({
title: '最多选择' + that.data.count + '张!',
})
return;
}
wx.chooseImage({
count: that.data.count, // 最多可以选择的图片张数,默认9
sizeType: ['original', 'compressed'], // original 原图,compressed 压缩图,默认二者都有
sourceType: ['album', 'camera'], // album 从相册选图,camera 使用相机,默认二者都有
success: function (res) {
console.log(res)
let fileForm = that.data.fileForm;
let tem = that.data.uploadOptions[e.currentTarget.dataset.index].Pics?that.data.uploadOptions[e.currentTarget.dataset.index].Pics:[];
res.tempFilePaths.forEach(item => {
fileForm.push({
file: item,
fileType:e.currentTarget.dataset.index+1,
bizPath:'cashier',
tableName:'t_cashier_account_flow',
tableId:''
})
tem.push({
tempFilePath:item
})
})
that.setData({
['uploadOptions['+e.currentTarget.dataset.index+'].Pics']:tem,
fileForm:fileForm,
fileNum:fileForm.length
})
},
})
},
uploadFpPics: function (e) { //这里是选取图片的方法
var that = this;
var pics = [];
var detailPics = that.data.fpPics;
if (detailPics.length >= that.data.count) {
wx.showToast({
title: '最多选择' + that.data.count + '张!',
})
return;
}
wx.chooseImage({
count: that.data.count, // 最多可以选择的图片张数,默认9
sizeType: ['original', 'compressed'], // original 原图,compressed 压缩图,默认二者都有
sourceType: ['album', 'camera'], // album 从相册选图,camera 使用相机,默认二者都有
success: function (res) {
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
})
},
})
},
uploadQtPics: function (e) { //这里是选取图片的方法
var that = this;
var pics = [];
var detailPics = that.data.qtPics;
if (detailPics.length >= that.data.count) {
wx.showToast({
title: '最多选择' + that.data.count + '张!',
})
return;
}
wx.chooseImage({
count: that.data.count, // 最多可以选择的图片张数,默认9
sizeType: ['original', 'compressed'], // original 原图,compressed 压缩图,默认二者都有
sourceType: ['album', 'camera'], // album 从相册选图,camera 使用相机,默认二者都有
success: function (res) {
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){
var that = this;
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.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;
console.log(data);
console.log(that.data.fileForm);
UTIL.httpRequest(API.URL_POST_GERFLOWEDIT,data,{
success: (res) => {
if(res.code == 200){
let vouerId = that.data.tableId;
// let vouerId = 1;
// let updataList = [...this.data.sjPics,...this.data.fpPics,...this.data.qtPics];
let updataList = that.data.fileForm;
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.showToast({
title: '修改成功',
icon: 'success',
duration: 2000
})
setTimeout(function(){
wx.navigateBack({
delta: 1
})
},2000)
}else{
UTIL.showToastNoneIcon(res.msg);
}
}
})
},
onChange(event){
this.setData({
[event.currentTarget.dataset.value]: event.detail,
})
},
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链接列表
})
},

/**
* 生命周期函数--监听页面隐藏
*/
onHide: function () {

},

/**
* 生命周期函数--监听页面卸载
*/
onUnload: function () {

},

/**
* 页面相关事件处理函数--监听用户下拉动作
*/
onPullDownRefresh: function () {

},

/**
* 页面上拉触底事件的处理函数
*/
onReachBottom: function () {

},

/**
* 用户点击右上角分享
*/
onShareAppMessage: function () {

}
})

+ 24
- 0
pages/Bookkeeping/seeBookZC/seeBookZC.json Целия файл

@@ -0,0 +1,24 @@
{
"navigationStyle": "custom",
"usingComponents": {
"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-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"

}
}

+ 89
- 0
pages/Bookkeeping/seeBookZC/seeBookZC.wxml Целия файл

@@ -0,0 +1,89 @@
<!--pages/apply/index.wxml-->
<view class="ns" style="height:{{isIPX?'88px':'64px'}};">
<image src="/image/apply/back.png" style="top:{{isIPX?'54px':'30px'}};" mode="widthFix" bindtap="back"></image>
<text style="top:{{isIPX?'54px':'30px'}};">支出事项查看</text>
</view>
<!-- 付款单位开始 -->
<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">{{bookName}}</view>
</view>
<text class="title">基础信息</text>
<view class="main-box table-box">
<view class="flex-block">
<text class="rules">支出时间</text>
<view class="wrap" >
{{formData.accountDate}}
</view>
</view>
<view class="flex-block">
<text class="rules">支出金额</text>
<input disabled class="wrap" data-prop="formData.daiAmount" type="digit" value="{{formData.daiAmount}}" bindinput="inputChange" placeholder="请输入收入金额"/>
</view>
<view class="flex-block">
<text class="rules">账户名称</text>
<view class="wrap">
<text>{{formData.accountName}}</text>
</view>
</view>
<view class="flex-block">
<text class="rules">支出类型</text>
<view class="wrap">
<text>{{expenditureTypeText}}</text>
</view>
</view>
<view class="flex-block"><text class="rules no">单据编码</text> <input disabled class="wrap" bindinput="inputChange" data-prop="formData.billNum" value="{{formData.billNum}}" placeholder="单据编码"/></view>

<view class="flex-block">
<text class="rules no">对方科目</text>
<view class="wrap">
<text>{{formData.subjectNameAll == null ? '':formData.subjectNameAll}}</text>
</view>
</view>

<view class="flex-block"><text class="rules">备注说明</text> <input class="wrap" disabled bindinput="inputChange" data-prop="formData.accountSummary" placeholder="请输入备注说明" value="{{formData.accountSummary}}"/></view>
<view class="flex-block" wx:if="{{formData.checkedStatus == 4}}"><text class="rules">挂起原因</text> <input class="wrap" disabled bindinput="inputChange" data-prop="formData.remark" placeholder="请输入挂起原因" value="{{formData.remark}}"/></view>
</view>
<block wx:if="{{incomeType == 2}}">
<view class="title">
<text>关联合同</text>
</view>
<view class="main-box table-box">
<view class="flex-block">
<text class="rules {{formData.incomeType == '2' ?'':'no'}}">付款人{{}}</text>
<view class="wrap">
<text>{{payerText}}</text>
</view>
</view>
<view class="flex-block"><text class="rules {{formData.incomeType == '2' ?'':'no'}}">合同编码</text>
<view class="wrap">
<text>{{contractionIdID}}</text>
</view>
</view>
</view>
</block>
<view class="main-box table-box" style="margin-top: 15px;">
<van-cell>
<view slot="title">
<view class="van-cell-text">附件<van-tag type="danger" style="margin-left: 10px;">可拍照</van-tag></view>
</view>
<view>
<view class="van-cell-text">总数<van-tag round color="#5CAE77" plain style="margin-left: 10px;"> {{fileNum}}张 </van-tag></view>
</view>
</van-cell>
<view class="fj-box">
<view class="fj-li" wx:for="{{uploadOptions}}" wx:key="index">
<view>
<text>{{item.dictLabel}}</text>
</view>
<view class="img_box">
<view class="img_list" wx:for="{{item.Pics}}" wx:for-index="childrenIndex" wx:for-item="item2" wx:key="childrenIndex">
<image class="img_li" src="{{item2.tempFilePath}}" bindlongpress="bindlongpressimg" data-status="sjPics" bindtap="imgPreviewImage" data-id='{{childrenIndex}}'></image>
</view>
</view>
</view>
</view>
</view>

+ 292
- 0
pages/Bookkeeping/seeBookZC/seeBookZC.wxss Целия файл

@@ -0,0 +1,292 @@
/* pages/apply/index.wxss */
.inComeUnit{
border:1rpx solid #ddd;
width:90%;
margin:0 auto;

}
.top{
display: flex;
width: 94%;
margin: 0 auto;
border-radius: 10rpx;
margin-top: 3vw;
overflow: hidden;
}
.top view{
padding: 40rpx 15rpx;
align-items: center;
justify-content: center;
position: relative;
}
.top image{
position: absolute;
width: 94%;
}
.top-title{
flex: 1;
text-align: center;
}
.top-tit{
color: #fff;
}
.rules:before{
content:'*';
color:red;
}
.rules.no::before{
content:' ';
padding-left: 14rpx;
color:'#fff';
}
.main-title{
background-image: linear-gradient(to right, #2C8E68 , #B3DB62);
color: #ffffff;
font-size: 18rpx;
padding: 10rpx 0;
text-align: center;
}
.main-box{
background: #ffffff;
padding: 20px;
width: 94%;
margin: 0 auto;
border-radius: 10px;
box-shadow: 0px 5px 5px rgba(0, 0, 0, 0.16);
}
.main-box block{
float: right;
}

.main-box .color-gray{
color: #888;
}
.title{
padding: 10px calc(3% + 20px);
display: block;
}
.van-cell{
padding-left: 0!important;
padding-right: 0!important;
padding-top: 0!important;
margin-bottom: 15px;
}
.table-box .flex-block{
margin-bottom: 15px;
display: flex;
justify-content: space-between;
align-items: center;
}
.table-box .flex-block:last-child{
margin-bottom: 0px;
}
.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: flex;
width:24px;
margin:25rpx 5rpx;
color:#fff;
background:#07c160;
text-align: center;
border-radius: 10rpx;
justify-content: center; /* 相对父元素水平居中 */
align-items: center;
padding:25rpx 0;
}
.content {
width: 100%;
background-color: #fff;
}

.img-list {
display: flex;
display: -webkit-flex;
flex-direction: row;
justify-content: flex-start;
align-items: center;
flex-wrap: wrap;
}

.img-item {
width: 30%;
text-align: left;
margin-right: 3%;
margin-bottom: 10rpx;
position: relative;
}
.img-item .close-ico{
position: absolute;
right: -10rpx;
top: -10rpx;
}
.img-item .imagea {
width: 160rpx;
height: 160rpx;
}

.submit-btn {
width: 100%;
background-color: #fff;
height: 80rpx;
text-align: center;
line-height: 80rpx;
font-size: 30rpx;
position: fixed;
bottom: 100rpx;
}

.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; */
width: 120rpx;
height: 120rpx;
border: 1px solid #d9d9d9;
}

.weui-uploader__input-box:before {
width: 2px;
height: 39.5px;
}

.weui-uploader__input-box:after, .weui-uploader__input-box:before {
content: " ";
position: absolute;
top: 50%;
left: 50%;
-webkit-transform: translate(-50%, -50%);
transform: translate(-50%, -50%);
background-color: #d9d9d9;
}

.weui-uploader__input-box:after {
width: 39.5px;
height: 2px;
}

.weui-uploader__input-box:after, .weui-uploader__input-box:before {
content: " ";
position: absolute;
top: 50%;
left: 50%;
-webkit-transform: translate(-50%, -50%);
transform: translate(-50%, -50%);
background-color: #d9d9d9;
}

.tips {
color: #666;
font-size: 24rpx;
padding-bottom: 20rpx;
}

.img-box {
width: 92%;
margin: auto;
padding-top: 20rpx;
}
.btn button{
line-height: 1.7;
padding-left:80rpx;
padding-right:80rpx;
border-radius: 30rpx;
}

.fj-box text{
background-color: #5CAE77;
color: #ffffff;
text-align: center;
border-radius: 5px;
white-space:pre-wrap;
padding: 22px 8px;
display: block;
}
.fj-li{
margin-top: 20px;
display: flex;
/* flex-wrap: wrap; */
}
.fj-li .img_li{
width: 100%;
height: 18.5vw;
}

.fj-li .img_add{
overflow: hidden;
}
.img_box{
position: relative;
width: 100%;
display: flex;
flex-wrap: wrap;
}
.img_box .img_list{
width: 25%;
margin-left: 5%;
position: relative;
}
.img_box .img_list .van-icon{
font-size: 20px;
position: absolute;
top: 0;
right: 0;
transform: translate(50%,-50%);
}
.img_box .img_list:nth-child(n+4){
margin-top: 15px;
}
.bottom{
width: 84%;
margin: 0 auto;
text-align: center;
margin-top: 50px;
margin-bottom: 50px;
display: flex;
}

.bottom view {
width: 47%;
margin: 0 auto;
border-radius: 30px;
display: inline-block;
}

.bottom .btn1{
border: 1px solid #2C8E68;
padding: 8px 0px;
color: #2C8E68;
}

.bottom .btn2{
border: 1px solid transparent;
padding: 8px 0px;
background-image: linear-gradient(to right, #2C8E68, #5CAE77);
margin-left: 6%;
color: #fff;
}
.bottom .btn3{
border: 1px solid transparent;
padding: 8px 0px;
background-image: linear-gradient(to right, #2C8E68, #5CAE77);
color: #fff;
width: 100%;
}

+ 14
- 4
pages/Bookkeeping/update/update.js Целия файл

@@ -405,6 +405,7 @@ Page({
},

swichAccounting:function(e){
var that = this;
let codeStr = e.currentTarget.dataset.code;
let formDataObj = this.data.formData;
if(formDataObj.jieAmount==''){ //收入金额
@@ -427,9 +428,11 @@ Page({
UTIL.httpRequest(API.URL_POST_GERFLOWEDIT,data,{
success: (res) => {
if(res.code == 200){
let vouerId = res.data;
let vouerId = that.data.tableId;
// let vouerId = 1;
let updataList = [...this.data.sjPics,...this.data.fpPics,...this.data.qtPics];
// let updataList = [...this.data.sjPics,...this.data.fpPics,...this.data.qtPics];
let updataList = that.data.fileForm;
console.log(updataList);
for(let i=0; i<updataList.length; i++){
let arrData=updataList[i];
arrData.tableId = vouerId;
@@ -451,9 +454,16 @@ Page({
}
})
}
wx.redirectTo({
url: '/pages/index/index'
wx.showToast({
title: '修改成功',
icon: 'success',
duration: 2000
})
setTimeout(function(){
wx.navigateBack({
delta: 1
})
},2000)
}else{
UTIL.showToastNoneIcon(res.msg);
}


+ 2
- 2
pages/Bookkeeping/update/update.wxml Целия файл

@@ -1,7 +1,7 @@
<!--pages/apply/index.wxml-->
<view class="ns" style="height:{{isIPX?'88px':'64px'}};">
<image src="/image/apply/back.png" style="top:{{isIPX?'54px':'30px'}};" mode="widthFix" bindtap="back"></image>
<text style="top:{{isIPX?'54px':'30px'}};">收入登记</text>
<text style="top:{{isIPX?'54px':'30px'}};">收入登记修改</text>
</view>
<!-- 付款单位开始 -->
<view class="top" style="margin-top:{{isIPX?'100px':'75px'}};">
@@ -79,7 +79,7 @@
<view class="flex-block">
<text class="rules no">对方科目</text>
<view class="wrap" bindtap="selectKM">
<text wx:if="{{formData.subjectNameAll==''}}" class="color-gray">请选择对方科目</text>
<text wx:if="{{formData.subjectNameAll==''||formData.subjectNameAll==null}}" class="color-gray">请选择对方科目</text>
<text wx:else>{{formData.subjectNameAll}}</text>
</view>



+ 2
- 3
pages/Bookkeeping/updateZC/update.js Целия файл

@@ -425,7 +425,6 @@ Page({
// let vouerId = 1;
// let updataList = [...this.data.sjPics,...this.data.fpPics,...this.data.qtPics];
let updataList = that.data.fileForm;
console.log(updataList);
for(let i=0; i<updataList.length; i++){
let arrData=updataList[i];
arrData.tableId = vouerId;
@@ -453,8 +452,8 @@ Page({
duration: 2000
})
setTimeout(function(){
wx.redirectTo({
url: '/pages/index/index'
wx.navigateBack({
delta: 1
})
},2000)


+ 2
- 2
pages/Bookkeeping/updateZC/update.wxml Целия файл

@@ -26,7 +26,7 @@
</view>
<view class="flex-block">
<text class="rules">支出金额</text>
<input class="wrap" data-prop="formData.jieAmount" type="digit" value="{{formData.daiAmount}}" bindinput="inputChange" placeholder="请输入收入金额"/>
<input class="wrap" data-prop="formData.daiAmount" type="digit" value="{{formData.daiAmount}}" bindinput="inputChange" placeholder="请输入收入金额"/>
</view>
<view class="flex-block"><text class="rules">账户名称</text>
@@ -80,7 +80,7 @@
<view class="flex-block">
<text class="rules no">对方科目</text>
<view class="wrap" bindtap="selectKM">
<text wx:if="{{formData.subjectNameAll==''}}" class="color-gray">请选择对方科目</text>
<text wx:if="{{formData.subjectNameAll==''||formData.subjectNameAll==null}}" class="color-gray">请选择对方科目</text>
<text wx:else>{{formData.subjectNameAll}}</text>
</view>



+ 30
- 6
pages/apply/approval/approval.js Целия файл

@@ -40,13 +40,29 @@ Page({
console.log(JSON.parse(options.form));
if(options.type == 'template'){
let list = [];
let array = JSON.parse(options.applyOptions).approvalTemplateDetailList;
console.log(JSON.parse(options.applyOptions));
JSON.parse(options.applyOptions).approvalTemplateDetailList.map(rr => {
list.push(rr.userId+"")
})
this.setData({
templateDetailList:JSON.parse(options.applyOptions).approvalTemplateDetailList,
result:list
UTIL.httpRequest(API.URL_GET_GETINFO, {method:'GET'}, {
success: (res2) => {
JSON.parse(options.applyOptions).approvalTemplateDetailList.map((rr,index )=> {
console.log(rr);
console.log(JSON.parse(options.applyOptions).approvalTemplateDetailList);
console.log(rr.nickName == res2.user.nickName);
console.log(index);
if(rr.nickName == res2.user.nickName){
array.splice(index,1);
}else{
list.push(rr.userId+"")
}
})
array.map((rrr,index)=>{
array.name = index+1
})
this.setData({
templateDetailList:array,
result:list
})
}
})
}else{
// this.townList();
@@ -438,6 +454,14 @@ Page({
},
submit:function(){
let _this = this
if(this.data.templateDetailList.length==0){
wx.showToast({
title: "请选择审批人",
duration: 2000,
icon:"error"
})
return;
}
let data={
approvalTemplate:{
name:this.data.temName,


+ 4
- 3
pages/apply/approval/approval.wxml Целия файл

@@ -110,9 +110,10 @@

<van-empty wx:if="{{templateList.length == 0}}" description="暂无审批模板" />
</van-action-sheet>
<modal hidden="{{!showPopup}}" title="审批模板" confirm-text="保存" cancel-text="取消" bindcancel="cancelTem" bindconfirm="confirmTem">
<modal hidden="{{!showPopup}}" mask="{{true}}" title="审批模板" confirm-text="保存" cancel-text="取消" bindcancel="cancelTem" bindconfirm="confirmTem">
<input type='text' value="{{temName}}" placeholder="请输入模板名称" bindinput="inputTem"/>
</modal>
<modal hidden="{{!showPopup2}}" title="支付模板" confirm-text="保存" cancel-text="取消" bindcancel="cancelTemNew" bindconfirm="confirmTemNew">
<modal hidden="{{!showPopup2}}" mask="{{true}}" title="支付模板" confirm-text="保存" cancel-text="取消" bindcancel="cancelTemNew" bindconfirm="confirmTemNew">
<input type='text' value="{{temName2}}" placeholder="请输入模板名称" bindinput="inputTem2"/>
</modal>
</modal>
<view class="ipXbtn"></view>

+ 8
- 2
pages/apply/paymentTemplate/add/add.js Целия файл

@@ -437,7 +437,7 @@ Page({
that.setData({
form:list.applyData,
activeNames:null,
applyDate: list.applyData.transfers[0].applyDate,
applyDate: UTIL.formatDate(new Date()),
["form.approvalItemTemplate.totalAmount"]:parseFloat(0).toFixed(2),
})
UTIL.httpRequest(API.URL_GET_GETINFO, {method:'GET'}, {
@@ -1112,7 +1112,11 @@ Page({
["form.transfers["+i+"].expenditureAmountTirme"]:true
})
return;
}else if((element.expenditureAmount > element.payerAccount) && element.transferType == 11){
}
console.log(parseFloat(element.expenditureAmount).toFixed(2))
console.log(parseFloat(element.payerAccount).toFixed(2))
console.log(element.transferType);
if((parseFloat(element.expenditureAmount).toFixed(2) - parseFloat(element.payerAccount).toFixed(2) >0) && element.transferType == 11){
UTIL.showToastNoneIcon('事项'+UTIL.convertToChinaNum(i+1)+'的支出金额不能超过付款账户余额!');
return;
}
@@ -1599,6 +1603,8 @@ Page({
UTIL.showToastNoneIcon('最少保留一条事项');
return;
}

that.data.form.transfers[e.currentTarget.dataset.index].expenditureAmount = that.data.form.transfers[e.currentTarget.dataset.index].expenditureAmount == '' ? '0' : that.data.form.transfers[e.currentTarget.dataset.index].expenditureAmount;
that.data.form.approvalItemTemplate.totalAmount = parseFloat(parseFloat(that.data.form.approvalItemTemplate.totalAmount)- parseFloat(that.data.form.transfers[e.currentTarget.dataset.index].expenditureAmount)).toFixed(2);
that.data.form.transfers.splice(e.currentTarget.dataset.index,1);



+ 16
- 8
pages/inCome/inCome.js Целия файл

@@ -80,7 +80,9 @@ Page({
},
onClose(){ this.setData({srShow:false})},
onConfirm(e){
console.log(e);
let data = this.getNewDate(new Date(e.detail));
console.log(data);
this.setData({'formData.accountDate':data})
this.setData({srShow:false})
},
@@ -127,9 +129,7 @@ Page({
* 生命周期函数--监听页面加载
*/
onShow: function (options) {
this.setData({
["formData.accountDate"]:this.getNewDate(new Date())
})
let that = this;
//获取收入单位
@@ -186,7 +186,9 @@ Page({
* 生命周期函数--监听页面初次渲染完成
*/
onLoad: function () {

this.setData({
["formData.accountDate"]:this.getNewDate(new Date())
})
},

/**
@@ -329,8 +331,6 @@ Page({
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;
@@ -352,9 +352,17 @@ Page({
}
})
}
wx.redirectTo({
url: '/pages/index/index'
wx.showToast({
title: '修改成功',
icon: 'success',
duration: 2000
})
setTimeout(function(){
wx.redirectTo({
url: '/pages/index/index'
})
},2000)
}else{
UTIL.showToastNoneIcon(res.msg);
}


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

@@ -26,7 +26,7 @@
</view>
<view class="flex-block">
<text class="rules">收入金额</text>
<input class="wrap" data-prop="formData.jieAmount" type="number" value="{{formData.jieAmount}}" bindinput="inputChange" placeholder="请输入收入金额"/>
<input class="wrap" data-prop="formData.jieAmount" type="digit" value="{{formData.jieAmount}}" bindinput="inputChange" placeholder="请输入收入金额"/>
</view>
<view class="flex-block"><text class="rules">存入账户</text>
@@ -75,7 +75,7 @@
range-key="dictLabel">
</picker> -->
</van-popup>
<view class="flex-block"><text class="rules no">单据编码</text> <input class="wrap" type="number" bindinput="inputChange" data-prop="formData.billNum" value="{{formData.billNum}}" placeholder="请输入单据编码"/></view>
<view class="flex-block"><text class="rules no">单据编码</text> <input class="wrap" bindinput="inputChange" data-prop="formData.billNum" value="{{formData.billNum}}" placeholder="请输入单据编码"/></view>

<view class="flex-block">
<text class="rules no">对方科目</text>
@@ -95,7 +95,7 @@
</van-popup>
</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 class="flex-block"><text class="rules">备注说明</text> <input class="wrap" bindinput="inputChange" data-prop="formData.accountSummary" placeholder="请输入备注说明" value="{{formData.accountSummary}}"/></view>
</view>
<block wx:if="{{incomeType == 2}}">
<view class="title">


+ 2
- 5
pages/payee/add/add.js Целия файл

@@ -39,7 +39,7 @@ Page({
})
var that = this;
// 所属银行字典查询
UTIL.httpRequest(API.URL_GET_GETDICTTYPE + 'bank_type', {method:'GET'}, {
UTIL.httpRequest(API.URL_GET_GETDICTTYPE + 'bank_type_all', {method:'GET'}, {
success: (res) => {
// let array = res.data.filter(function (e) { return e.dictValue == event.detail.value.bankType; });
this.setData({
@@ -73,9 +73,6 @@ Page({
})
console.log(res.data.bankType)
console.log(res2.rows)
if(res.data.bankType!="999"){
res.data.bankDepositText = res2.rows.filter(function (e) { return e.id == res.data.bankDeposit; })[0].bankDeposit;
}
res.data.payeeTypeText = UTIL.getTransform(res.data.payeeType,that.data.payeeTypeOptions);
res.data.bankTypeText = UTIL.getTransform(res.data.bankType,that.data.bankTypeOptions);
that.setData({
@@ -146,7 +143,7 @@ Page({
onConfirmDeposit(even){
console.log(even);
this.setData({
[even.currentTarget.dataset.value]:even.detail.value.id,
[even.currentTarget.dataset.value]:even.detail.value.bankDeposit,
[even.currentTarget.dataset.value+"Text"]:even.detail.value.bankDeposit,
[even.currentTarget.dataset.name]:false,
["form.payeePaymentLines"]:even.detail.value.payeePaymentLines


+ 1
- 1
pages/payee/add/add.wxml Целия файл

@@ -73,7 +73,7 @@
data-value="form.bankDeposit"
/>
</van-popup>
<van-field readonly label="开户行" value="{{ form.bankDepositText }}" placeholder="请选择" border="{{ false }}" bind:change="onChange" input-align="right" required is-link arrow-direction ="down" bindtap="openBox" data-name="showDeposit" />
<van-field readonly label="开户行" value="{{ form.bankDeposit }}" placeholder="请选择" border="{{ false }}" bind:change="onChange" input-align="right" required is-link arrow-direction ="down" bindtap="openBox" data-name="showDeposit" />
<van-field label="联行号" value="{{ form.payeePaymentLines }}" placeholder="请输入" border="{{ false }}" bind:change="onChange" input-align="right" required data-formname="form.payeePaymentLines"/>
</view>
<view class="bottom">


+ 1
- 1
pages/payee/list/list.js Целия файл

@@ -39,7 +39,7 @@ Page({
method:'GET'
}
console.log(prames);
UTIL.httpRequest(API.URL_GET_GETDICTTYPE + 'bank_type', {method:'GET'}, {
UTIL.httpRequest(API.URL_GET_GETDICTTYPE + 'bank_type_all', {method:'GET'}, {
success: (res2) => {
that.setData({
bankTypeOptions:res2.data,


+ 4
- 1
pages/payee/list/list.wxml Целия файл

@@ -16,11 +16,14 @@
<view class="add_btn" bindtap="goAdd"><text>新增</text></view>
</view>

<van-swipe-cell right-width="{{ 65 }}" class="workflow" wx:for="{{list}}" data-index="{{ index }}" data-id="{{item.id}}" bindtap="goEdit" wx:key="index">
<van-swipe-cell right-width="{{ 65 }}" class="workflow" wx:for="{{list}}" wx:key="index">
<van-cell
value-class="value-class"
clickable
use-label-slot
data-index="{{ index }}"
data-id="{{item.id}}"
bindtap="goEdit"
>
<view slot="icon" style="margin-right: 10px;">
<image wx:if="{{item.bankType == 1}}" src="/image/apply/icon_icbc.png" style="width: 20px;height: 20px;vertical-align: middle;"></image>


+ 10
- 1
pages/user/login/login.js Целия файл

@@ -7,7 +7,7 @@ Page({
data: {
isIPhoneX:false,
privacyCheck:true, //用户协议
showDialog:false
},
onLoad: function (options) {
this.setData({
@@ -150,6 +150,15 @@ Page({
}
});
//
},
//打开协议窗口
openDialog(){
this.setData({showDialog:true})
},
agree(){
this.setData({
privacyCheck:true
})
}
})

+ 1
- 0
pages/user/login/login.json Целия файл

@@ -1,5 +1,6 @@
{
"usingComponents": {
"van-dialog": "@vant/weapp/dialog/index",
"icon-loading":"/component/iconLoading/iconLoading"
},
"navigationStyle": "custom"

+ 89
- 1
pages/user/login/login.wxml Целия файл

@@ -13,10 +13,98 @@
<checkbox-group bindchange="checkboxChange">
<label>
<checkbox value="privacy" checked="{{privacyCheck}}" class="changeSize" />
<text>我已阅读并同意用户协议和隐私政策</text>
</label>
<text bindtap="openDialog">我已阅读并同意用户协议和隐私政策</text>
</checkbox-group>
</view>
<text style="display: block;text-align: center;color: #fff;margin-top: 3vh;">北京农燊高科信息技术有限公司</text>
</view>
</view>

<van-dialog
use-slot
title="用户协议和隐私政策"
show="{{ showDialog }}"
bind:close="onClose"
confirmButtonText="同意"
data-type="1"
bind:confirm="agree"
before-close="{{beforeClose }}"
closeOnClickOverlay="{{ true }}"
showCancelButton="{{true}}"
>
<scroll-view scroll-y="true" style="height: 300px;padding: 0 15px;margin-top: 15px;" bindscrolltoupper="upper" bindscrolltolower="lower" bindscroll="scroll">
<text>为使用农燊云微信小程序服务(以下简称“本服务”或“小程序服务”),您应当阅读并遵守《农燊云微信小程序用户协议》,请务必审慎阅读、充分理解各条款内容,特别是免除或限制责任的相应条款,以及开通或使用某项服务的单独协议,并选择接受或不接受。</text>
<text>除非您已阅读并接受本条款所有条款,否则您无权使用农燊云微信小程序服务。您对本服务的登录、查看、发布信息等行为即视为已阅读并同意本条款的约束。</text>
<text>如果您未满18周岁,请在法定监护人的陪同下阅读本您协议,并特别注意未成年人使用条款。</text>
<text>一、协议的范围</text>
<text>1.1本条款是用户(以下简称“您”)与农燊云之间关于用户使用小程序服务所订立的协议。“用户”是指注册、登录、使用微信小程序的个人或组织;“其他用户”是指包括其他微信小程序用户、微信公众账号用户和微信用户等除您本人外与小程序服务相关的用户。</text>
<text>1.2本服务是指农燊云根据本协议向您提供的服务,包括协助您交接和管理租赁车辆等。我们会不断丰富您使用本服务的终端、形式等,如您已注册使用一种形式的服务,则可以以同一账号使用其他服务,本协议自动适用于您对所有版本的软件和服务的使用。</text>
<text> 1.3提供本服务的微信小程序的所有权和全部的使用权均归农燊云所有,您开通后仅授权使用部分功能,具体以产品展示的为准。</text>
<text>1.4小程序属于微信公众账号,在不与本协议冲突的情况下,您应遵守《微信公众平台服务协议》、《腾讯微信软件许可及服务协议》等关于微信公众账号的其他相关规定。</text>
<text>1.5本协议内容包括本协议正文及所有我们已经发布或将来可能发布的隐私权政策、各项政策、规则、声明、通知、警示、提示、说明(以下统称为“用户规则”)。前述用户规则为本协议不可分割的补充部分,与本协议具有同等法律效力。如您使用农燊云产品及服务,视为您同意上述补充部分。</text>

<text>二、小程序注册与审核</text>

<text>2.1账号注册</text>
<text>2.1.1您在使用本服务前需要先进行注册和认证。您确认,在您开始注册使用农燊云产品及服务前,您应当是具备完全民事权利能力和与所从事的民事行为相适应的行为能力的自然人、法人或其他组织。若您不具备前述主体资格,请勿使用服务,否则您及您的监护人应承担因此而导致的一切后果,且我们有权注销(永久冻结)您的账户,并向您及您的监护人索偿。</text>
<text>2.1.2当您按照注册页面提示填写信息、阅读并同意本协议且完成全部注册程序后,您可获得农燊云平台账户并成为产品用户,即有权使用农燊云平台并获得相应服务。农燊云平台只允许每位用户使用一个主账户,但您可以在授权范围内获得多个子账号。</text>
<text>2.1.3该账户是您通过农燊云平台寻求并获得服务的唯一有效身份证明,请您妥善保管账号和密码。为使您更好地使用农燊云平台的各项服务,保障您的账户安全,本小程序主体可要求您按本协议、用户规则及我国法律规定完成实名认证。</text>
<text>2.1.4为维护小程序的健康运营,您应当准确完整地提供您的最新信息(包括您的名称及电子邮件地址、联系电话、联系地址等)。并且您承诺,在使用本服务的过程中提交和发布的信息均是真实、合法的,因不实信息导致农燊云或者第三方合法权益受损的,由您独立承担全部责任。</text>
<text>2.2账号安全</text>
<text>2.2.1在您成功注册后,我们将根据您的身份要素识别您的身份和授权登录。“身份要素”包括但不限于您的账户名称、密码、短信校验码、手机号码、身份证件号码及人脸信息、眼纹信息。您同意基于不同的终端以及您的使用习惯,我们可能采取不同的验证措施识别您的身份。</text>
<text>2.2.2如您发现账号遭他人非法使用,应立即通知本小程序主体。因黑客行为或您自身保管疏忽导致账号、密码遭他人非法使用所发生的一切责任,均应由您本人承担,本小程序主体不承担任何责任。</text>
<text>2.2.3您注册成功后,农燊云将给予您一个帐号,并由您自行设置相应密码,任何该账户项下的预订及支付等行为均视为您本人的操作。您应对您账户项下的所有行为结果(包括但不限于授权、绑定、结算)负责。</text>

<text>三、服务及规范</text>

<text>3.1服务内容</text>
<text>3.1.1本服务内容包含【支持通讯录、车辆调度、车辆管理、账单管理、业务信息推荐及】等技术功能,这些功能服务可能根据用户需求的变化,随着因服务版本不同、或服务提供方的单方判断而被优化或修改,或因定期、不定期的维护而暂缓提供。</text>
<text>3.1.2农燊云有权自行决定对服务或服务任何部分及其相关功能、应用软件进行变更、升级、修改、转移,并有权决定以适当的方式进行公示或通知。</text>
<text>3.2服务费用</text>
<text>3.2.1农燊云平台向您提供的服务目前是免费的。我们保留日后就程序及/或服务向您收费的权利。如果我们决定收取此类费用,我们会采取合理途径并以足够合理的期限提前通过法定程序并以本协议约定的方式通知您,确保您有充分选择的权利。</text>
<text>3.2.2您在使用小程序的过程中与第三方发生的费用结算,农燊云仅为您使用微信小程序服务提供技术支持,本协议的签署不代表农燊云成为您在汽车租赁过程中的参与者。农燊云不对基于服务而产生的任何行为担保、许可或向任何第三人承担共同责任。</text>
<text>3.3服务使用规则</text>
<text>3.3.1您在本服务中或通过本服务所传送、发布的任何内容并不反映或代表,也不得被视为反映或代表农燊云的观点、立场或政策,农燊云对此不承担任何责任。</text>
<text>3.3.2您不得利用农燊云账号或本服务进行如下行为:\n(1)提交、发布虚假信息,或盗用他人头像或资料,冒充、利用他人名义的;\n(2)强制、诱导其他您关注、点击链接页面或分享信息的;\n(3)虚构事实、隐瞒真相以误导、欺骗他人的;\n(4)利用技术手段批量建立虚假账号的;\n(5)利用平台账号或本服务从事任何违法犯罪活动的;\n(6)制作、发布与以上行为相关的方法、工具,或对此类方法、工具进行运营或传播,无论这些行为是否为商业目的;\n(7)其他违反法律法规规定、侵犯其他您合法权益、干扰农燊云正常运营或农燊云未明示授权的行为。</text>
<text>3.3.3农燊云有权查阅您的注册、交易数据及交易行为,如发现可能存在违反法律法规、本协议或相关规则的情形或其他任何问题,农燊云有权直接做出其认为合理的处理,包括但不限于通知修改、删除相关信息,停止被协议项下的服务内容等。前述约定不代表农燊云应对您的行为承担任何连带责任,您应对此产生的法律责任独立负责。</text>

<text>四、法律责任</text>

<text>4.1用户责任</text>
<text>4.1.1您应遵守《微信公众平台服务协议》中关于“法律责任”的约定,除非该等约定与本协议存在冲突。</text>
<text>4.1.2如果我们发现或收到他人举报或投诉您违反本协议约定的,我们有权不经通知随时对相关内容,包括但不限于对您的资料、聊天记录进行审查、删除,并视情节轻重对违规账号处以包括但不限于警告、账号封禁、设备封禁、功能封禁的处罚,且通知您处理结果。</text>
<text>4.1.3您理解并同意,因您违反相关法律法规或本协议约定引发的任何后果,均由您独立承担责任、赔偿损失,与我们无关。如侵害到农燊云或他人权益的,您须自行承担全部责任和赔偿一切损失。</text>
<text>4.2平台责任本小程序主体保证并承诺,本小程序主体系合法成立的法人,依据本协议约定向您提供相关网络服务,并会参考您提出的建议不断改善我们的服务,努力提高您的使用满意度。</text>
<text>4.3责任限制</text>
<text>4.3.1本服务仅为您与第三方之间的汽车租赁行为而提供协助,农燊云并非其中的参与者,对汽车租赁过程中产生的一切纠纷不承担任何责任。</text>
<text>4.3.2您理解并确认,我们需要定期或不定期地对农燊云平台或相关的设备进行检修或者维护,且互联网连接能力受到全球网路稳定性、技术状态、使用者所在地与使用的网路、电力供应、政府管制、计算机病毒、黑客攻击等既存不确定性的限制,如因此类情况而造成服务在合理时间内的中断,我们无需为此承担任何责任,但会事先进行通告。</text>
<text>4.3.3您理解并同意,在使用本服务的过程中,可能会遇到不可抗力等风险因素,使本服务发生中断。不可抗力是指不能预见、不能克服并不能避免且对一方或双方造成重大影响的客观事件,包括但不限于自然灾害如洪水、地震、瘟疫流行和风暴等以及社会事件如战争、动乱、政府行为等。出现上述情况时,农燊云将努力在第一时间与相关单位配合,及时进行修复,但是由此给您造成的损失农燊云在法律允许的范围内免责。</text>
<text>4.3.4农燊云不保证为向您提供便利而设置的外部链接的准确性和完整性。同时,对于该等外部链接指向的不由农燊云实际控制的任何网页上的内容,农燊云不承担任何责任。</text>
<text>4.4知识产权声明</text>
<text>4.4.1农燊云在本服务中提供的内容(包括但不限于网页、文字、图片、音频、视频、图表等)的知识产权归农燊云所有,您在使用本服务中所产生的内容的知识产权归您或相关权利人所有。</text>
<text>4.4.2除另有特别声明外,农燊云提供本服务时所依托软件的著作权、专利权、代码技术及其他知识产权均归农燊云所有。</text>

<text>五、隐私政策</text>

<text>5.1保护用户隐私是的农燊云一项基本政策,农燊云保证不对外公开或向第三方提供您的注册资料及您在使用网络服务时存储在农燊云的非公开内容,但下列情况除外:\n(1)事先获得用户的明确授权;\n(2)根据有关的法律法规要求;\n(3)按照相关政府主管部门的要求;\n(4)为维护社会公众的利益;\n(5)为维护农燊云的合法权益。</text>
<text>5.2当农燊云与第三方合作向用户提供相关的网络服务,在此情况下,如该第三方允诺严格承担与农燊云同等的保护用户隐私的责任,则视为您授权农燊云将包含个人注册资料在内的相关信息仅提供给该等第三方。</text>

<text>六、协议解除和终止</text>

<text>6.1如有下列情形的,我们有权单方面解除本协议,终止向您提供服务:\n(1)您为了非法目的而使用本服务的;\n(2)您使用本服务损害农燊云或其他第三方合法权益的;\n(3)您违反法律法规或本协议约定或违反与腾讯的其他约定的;\n(4)根据法律规定平台用户应提交真实信息,而您提供的资料不真实、或未能提供合理证明以证明其真实性的;</text>
<text>6.2您同意,除上述所述情形外,农燊云有权根据风险及自身业务运营情况需要,随时终止向您提供本服务及接口的部分及全部,因此导致您无法使用服务或服务受到限制的,农燊云不构成违约,亦不承担任何法律责任。</text>
<text>6.3您停用该服务,或农燊云终止向您提供本协议项下的服务后,农燊云不再为您保留原账户中与之相关的任何信息。</text>
<text>6.4您使用本服务即视为您已阅读并同意受本协议的约束。农燊云小程序主体有权在必要时修改本协议。您可以在相关服务页面查阅最新版本的协议。本协议变更后,如果您继续使用微信小程序服务,即视为您已接受修改后的协议。如果您不接受修改后的协议,应当停止使用小程序服务。</text>

<text>七、违约责任如</text>

<text>如您因为使用本服务给农燊云造成损失的或者给第三方造成损失的,该损失(包括为维权而产生的合理支出)由您来承担。</text>

<text>八、法律管辖</text>

<text>8.1如双方就本协议内容或其执行发生任何争议,双方应友好协商解决;协商不成时,任何一方均可向农燊云所在地的人民法院提起诉讼。</text>
<text>8.2本协议的成立、生效、履行、解释及纠纷解决,适用中华人民共和国大陆地区法律(不包括冲突法)8.3本协议条款无论因何种原因部分无效或不可执行,其余条款仍有效,对双方都具有约束力。</text>
</scroll-view>
</van-dialog>

+ 5
- 0
pages/user/login/login.wxss Целия файл

@@ -59,4 +59,9 @@
}
.container .quick-login .authorization text{
margin-left: -.5vw;
}
scroll-view text{
display: block;
line-height: 24px;
text-indent: 2rem;
}

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