Conflicts: env/env.js pages/apply/paymentTemplate/add/add.js pages/apply/paymentTemplate/add/add.json pages/apply/paymentTemplate/add/add.wxml utils/API.jsmaster
@@ -15,7 +15,8 @@ | |||
"pages/apply/paymentTemplate/see/see", | |||
"pages/apply/paymentTemplate/add/add", | |||
"pages/payee/index", | |||
"pages/payee/add/add" | |||
"pages/payee/add/add", | |||
"component/pop-up/index" | |||
], | |||
"window": { | |||
"backgroundTextStyle": "light", | |||
@@ -0,0 +1,36 @@ | |||
Component({ | |||
options: { | |||
multipleSlots: true // 在组件定义时的选项中启用多slot支持 | |||
}, | |||
/** | |||
* 组件的属性列表 | |||
*/ | |||
properties: { | |||
visible: { | |||
type: Boolean, | |||
value: false | |||
} | |||
}, | |||
/** | |||
* 组件的初始数据 | |||
*/ | |||
data: {}, | |||
/** | |||
* 组件的方法列表 | |||
*/ | |||
methods: { | |||
popPreventTouchmove() { }, | |||
popPreventTouchmove2() { }, | |||
popPreventTouchmove3() { }, | |||
cityChange() { }, | |||
close() { | |||
this.triggerEvent('close') | |||
}, | |||
handleClickMask(e) { | |||
// console.log(e) | |||
if (e.target.dataset.type !== 'unclose') this.close() | |||
} | |||
} | |||
}) |
@@ -0,0 +1,4 @@ | |||
{ | |||
"component": true, | |||
"usingComponents": {} | |||
} |
@@ -0,0 +1,7 @@ | |||
<view catchtouchmove="popPreventTouchmove"> | |||
<view class="q-pp-mask {{ visible ? 'q-pp-mask-show' : '' }} ptp_exposure" bindtap="handleClickMask" catchtouchmove="popPreventTouchmove" data-ptpid="0d05-191c-8bb6-b8fb"> | |||
<view class=" q-pp {{ visible ? 'q-pp-show' : '' }}" catchtouchmove="popPreventTouchmove"> | |||
<slot name="content" data-type="unclose"></slot> | |||
</view> | |||
</view> | |||
</view> |
@@ -0,0 +1,37 @@ | |||
.q-pp { | |||
position: fixed; | |||
width: 100%; | |||
box-sizing: border-box; | |||
left: 0; | |||
right: 0; | |||
bottom: 0; | |||
background: #f7f7f7; | |||
transform: translate3d(0, 100%, 0); | |||
transform-origin: center; | |||
transition: all 0.2s ease-in-out; | |||
z-index: 900; | |||
visibility: hidden; | |||
} | |||
.q-pp-show { | |||
transform: translate3d(0, 0, 0); | |||
visibility: visible; | |||
} | |||
.q-pp-mask { | |||
position: fixed; | |||
top: 0; | |||
left: 0; | |||
right: 0; | |||
bottom: 0; | |||
background: rgba(0, 0, 0, 0.7); | |||
z-index: 900; | |||
transition: all 0.2s ease-in-out; | |||
opacity: 0; | |||
visibility: hidden; | |||
} | |||
.q-pp-mask-show { | |||
opacity: 1; | |||
visibility: visible; | |||
} |
@@ -1,4 +1,6 @@ | |||
// pages/apply/approval/approval.js | |||
import * as UTIL from '../../../utils/util.js'; | |||
import * as API from '../../../utils/API.js'; | |||
const app = getApp(); | |||
Page({ | |||
@@ -40,22 +42,406 @@ Page({ | |||
comment: '同意' | |||
}, | |||
], | |||
//事务总表对象 | |||
item:{}, | |||
itemId:13, | |||
active:0, | |||
result:[], | |||
show:false, | |||
showPopup:false, | |||
templateList:[], | |||
templateDetailList:[], | |||
groups:[], | |||
villages:[], | |||
towns:[], | |||
temName:"", | |||
temId:"" | |||
}, | |||
/** | |||
* 生命周期函数--监听页面加载 | |||
*/ | |||
onLoad(options) { | |||
//this.getApprovalItemList(); | |||
this.groupList(); | |||
this.townList(); | |||
this.villageList(); | |||
this.getApprovalItemsById(); | |||
// this.getApprovalItemList(); | |||
}, | |||
getApprovalItemsById(){ | |||
let _this = this | |||
let url = API.URL_GET_APPROVALITEMSBYID+this.data.itemId | |||
wx.request({ | |||
url, | |||
method:"GET", | |||
timeout: 60000, | |||
header: { | |||
'Authorization':'Bearer '+getApp().globalData.userInfo.token | |||
}, | |||
success: function (response) { | |||
_this.setData({item:response.data.data}) | |||
if(_this.data.item.templateId!=""&&_this.data.item.templateId!=null){ | |||
_this.setData({item:response.data.data,temId:_this.data.itemId}) | |||
let d = { | |||
templateId : _this.data.item.templateId, | |||
orderByColumn:"id", | |||
isAsc:"asc" | |||
} | |||
UTIL.httpRequest(API.URL_GET_TEMPLATEDETAIL, d, { | |||
success: (r) => { | |||
if (r.code == API.SUCCESS_CODE) { | |||
_this.setData({templateDetailList:r.rows}); | |||
let list = [] | |||
r.rows.map(rr => { | |||
list.push(rr.userId+"") | |||
}) | |||
_this.setData({result:list}) | |||
} | |||
} | |||
}) | |||
}else { | |||
_this.getApprovalItemList() | |||
} | |||
} | |||
}) | |||
}, | |||
inputTem:function(e){ | |||
this.setData({temName:e.detail.value}) | |||
}, | |||
confirmTem:function(e){ | |||
let data={ | |||
approvalTemplate:{ | |||
name:this.data.temName, | |||
type:1, | |||
dataType:0 | |||
}, | |||
approvalTemplateDetailList:this.data.templateDetailList, | |||
method:"POST" | |||
} | |||
UTIL.httpRequest(API.URL_POST_MOBILEADD,data,{ | |||
success: (res) => { | |||
if (res.code == API.SUCCESS_CODE) { | |||
let list = this.data.templateList | |||
list.push(res.data) | |||
this.setData({ | |||
temId:res.data.id, | |||
templateList:list, | |||
temName:"", | |||
showPopup:false | |||
}); | |||
} | |||
} | |||
}) | |||
}, | |||
cancelTem:function(e){ | |||
this.setData({temName:"",showPopup:false}); | |||
}, | |||
upItem:function(e){ | |||
let index = e.currentTarget.dataset.id | |||
let item = this.data.templateDetailList[index] | |||
let list = this.data.templateDetailList | |||
if(index>0&&index<=list.length){ | |||
list.splice(index,1) | |||
list.splice(index-1,0,item) | |||
for(let i = 0;i< list.length;i++){ | |||
list[i].name = i+1 | |||
} | |||
this.setData({templateDetailList:list}); | |||
} | |||
}, | |||
downItem:function(e){ | |||
let index = e.currentTarget.dataset.id | |||
let item = this.data.templateDetailList[index] | |||
let list = this.data.templateDetailList | |||
if(index>=0&&index<list.length){ | |||
list.splice(index,1) | |||
list.splice(index+1,0,item) | |||
for(let i = 0;i< list.length;i++){ | |||
list[i].name = i+1 | |||
} | |||
this.setData({templateDetailList:list}); | |||
} | |||
}, | |||
getApprovalItemList:function(){ | |||
let data={ | |||
dataType:0, | |||
pageNum:1, | |||
pageSize:50 | |||
} | |||
UTIL.httpRequest(API.URL_GET_TEMPLATELIST, data, { | |||
success: (res) => { | |||
if (res.code == API.SUCCESS_CODE) { | |||
this.setData({templateList:res.rows}); | |||
if(res.total>0){ | |||
let d = { | |||
templateId : res.rows[0].id, | |||
orderByColumn:"id", | |||
isAsc:"asc" | |||
} | |||
UTIL.httpRequest(API.URL_GET_TEMPLATEDETAIL, d, { | |||
success: (r) => { | |||
if (r.code == API.SUCCESS_CODE) { | |||
this.setData({templateDetailList:r.rows}); | |||
let list = [] | |||
r.rows.map(rr => { | |||
list.push(rr.userId+"") | |||
}) | |||
this.setData({result:list}) | |||
} | |||
} | |||
}) | |||
} | |||
} | |||
} | |||
}) | |||
}, | |||
chooseTemplate:function(e){ | |||
let data = { | |||
templateId : e.currentTarget.dataset.id, | |||
orderByColumn:"id", | |||
isAsc:"asc" | |||
} | |||
UTIL.httpRequest(API.URL_GET_TEMPLATEDETAIL, data, { | |||
success: (res) => { | |||
if (res.code == API.SUCCESS_CODE) { | |||
this.setData({templateDetailList:res.rows}); | |||
this.closeBox(); | |||
} | |||
} | |||
}) | |||
}, | |||
deleteTemplate:function(e){ | |||
let ids = [e.currentTarget.dataset.id] | |||
let url = API.URL_GET_MOBILEREMOVE+ids | |||
let _this = this | |||
wx.request({ | |||
url, | |||
method:"GET", | |||
timeout: 60000, | |||
header: { | |||
'Authorization':'Bearer '+getApp().globalData.userInfo.token | |||
}, | |||
success: function (response) { | |||
_this.getApprovalItemList() | |||
} | |||
}) | |||
}, | |||
townList:function(){ | |||
let _this = this | |||
let url = API.URL_GET_TOWNINFOBYDEPTID+0 | |||
wx.request({ | |||
url, | |||
method:"GET", | |||
timeout: 60000, | |||
header: { | |||
'Authorization':'Bearer '+getApp().globalData.userInfo.token | |||
}, | |||
success: function (response) { | |||
let d = { | |||
deptId:response.data.data.deptId, | |||
deptLevel:3 | |||
} | |||
UTIL.httpRequest(API.URL_GET_USERLIST,d,{ | |||
success: (res) => { | |||
if (res.code == API.SUCCESS_CODE) { | |||
console.log(res); | |||
_this.setData({towns:res.rows}); | |||
} | |||
} | |||
}) | |||
} | |||
}) | |||
}, | |||
groupList:function(){ | |||
let data = { | |||
deptId : 187, | |||
deptLevel:1 | |||
} | |||
UTIL.httpRequest(API.URL_GET_USERLIST,data ,{ | |||
success: (res) => { | |||
if (res.code == API.SUCCESS_CODE) { | |||
this.setData({groups:res.rows}); | |||
} | |||
} | |||
}) | |||
}, | |||
villageList:function(){ | |||
let data = { | |||
deptId : 187, | |||
deptLevel:2 | |||
} | |||
UTIL.httpRequest(API.URL_GET_USERLIST,data ,{ | |||
success: (res) => { | |||
if (res.code == API.SUCCESS_CODE) { | |||
this.setData({villages:res.rows}); | |||
} | |||
} | |||
}) | |||
}, | |||
onChange(event) { | |||
this.setData({ | |||
result: event.detail, | |||
}); | |||
let _this = this | |||
this.setData({result:event.detail}) | |||
this.setData({templateDetailList:[]}) | |||
let list = _this.data.templateDetailList | |||
for (let j in event.detail){ | |||
let str = event.detail[j] | |||
for(let i in _this.data.groups){ | |||
if(_this.data.groups[i].userId == str){ | |||
let sin = _this.data.groups[i] | |||
list.push(sin) | |||
_this.setData({templateDetailList:list}) | |||
} | |||
} | |||
for(let i in _this.data.villages){ | |||
if(_this.data.villages[i].userId == str){ | |||
let sin = _this.data.villages[i] | |||
list.push(sin) | |||
_this.setData({templateDetailList:list}) | |||
} | |||
} | |||
for(let i in _this.data.towns){ | |||
if(_this.data.towns[i].userId == str){ | |||
let sin = _this.data.towns[i] | |||
list.push(sin) | |||
_this.setData({templateDetailList:list}) | |||
} | |||
} | |||
} | |||
}, | |||
save:function(){ | |||
let _this = this | |||
let list = this.data.templateDetailList | |||
list = list.filter(function(e,i,s){ | |||
s[i].name = i+1 | |||
return true | |||
}) | |||
if(this.data.temId==""||this.data.temId==null){ | |||
let data={ | |||
approvalTemplate:{ | |||
name:this.data.temName, | |||
type:1, | |||
dataType:1 | |||
}, | |||
approvalTemplateDetailList:list, | |||
method:"POST" | |||
} | |||
UTIL.httpRequest(API.URL_POST_MOBILEADD,data,{ | |||
success: (res) => { | |||
if (res.code == API.SUCCESS_CODE) { | |||
let list = this.data.templateList | |||
list.push(res.data) | |||
this.setData({ | |||
temId:res.data.id, | |||
templateList:list, | |||
temName:"" | |||
}); | |||
let item_ = this.data.item | |||
item_.templateId = res.data.id | |||
item_.method = "POST" | |||
UTIL.httpRequest(API.URL_POST_APPROVALITEMSEDIT,item_,{ | |||
success: (res) => { | |||
if (res.code == API.SUCCESS_CODE) { | |||
wx.showToast({ | |||
title: "暂存成功!", | |||
duration: 2000, | |||
icon:"success" | |||
}) | |||
} | |||
} | |||
}) | |||
} | |||
} | |||
}) | |||
}else{ | |||
let url = API.URL_POST_TEMPLATEEDIT | |||
wx.request({ | |||
url, | |||
data: list, | |||
method:"POST", | |||
timeout: 60000, | |||
header: { | |||
'Authorization':'Bearer '+getApp().globalData.userInfo.token | |||
}, | |||
success: function (response) { | |||
wx.showToast({ | |||
title: "暂存成功!", | |||
duration: 2000, | |||
icon:"success" | |||
}) | |||
}, | |||
}) | |||
} | |||
}, | |||
submit:function(){ | |||
let _this = this | |||
if(this.data.temId==""||this.data.temId==null){ | |||
let data={ | |||
approvalTemplate:{ | |||
name:this.data.temName, | |||
type:1, | |||
dataType:1 | |||
}, | |||
approvalTemplateDetailList:this.data.templateDetailList, | |||
method:"POST" | |||
} | |||
UTIL.httpRequest(API.URL_POST_MOBILEADD,data,{ | |||
success: (res) => { | |||
if (res.code == API.SUCCESS_CODE) { | |||
let list = this.data.templateList | |||
list.push(res.data) | |||
this.setData({ | |||
temId:res.data.id, | |||
templateList:list, | |||
temName:"" | |||
}); | |||
let item_ = this.data.item | |||
item_.templateId = res.data.id | |||
item_.method = "POST" | |||
UTIL.httpRequest(API.URL_POST_APPROVALITEMSEDIT,item_,{ | |||
success: (res) => { | |||
if (res.code == API.SUCCESS_CODE) { | |||
_this.requestSubmit() | |||
} | |||
} | |||
}) | |||
} | |||
} | |||
}) | |||
}else{ | |||
let url = API.URL_POST_TEMPLATEEDIT | |||
wx.request({ | |||
url, | |||
data: _this.data.templateDetailList, | |||
method:"POST", | |||
timeout: 60000, | |||
header: { | |||
'Authorization':'Bearer '+getApp().globalData.userInfo.token | |||
}, | |||
success: function (response) { | |||
_this.requestSubmit() | |||
}, | |||
}) | |||
} | |||
}, | |||
requestSubmit:function(){ | |||
let url = API.URL_POST_APPROVALITEMSSUBMIT+this.data.item.id+"/"+this.data.item.templateId | |||
wx.request({ | |||
url, | |||
method:"POST", | |||
timeout: 60000, | |||
header: { | |||
'Authorization':'Bearer '+getApp().globalData.userInfo.token | |||
}, | |||
success: function (r) { | |||
wx.showToast({ | |||
title: "提交成功!", | |||
duration: 2000, | |||
icon:"success" | |||
}) | |||
}, | |||
}) | |||
}, | |||
openBox:function(){ | |||
var that = this ; | |||
@@ -66,15 +452,18 @@ Page({ | |||
closeBox:function(){ | |||
var that = this ; | |||
that.setData({ | |||
show: false, | |||
show: false | |||
}) | |||
}, | |||
showPopup() { | |||
this.setData({ showPopup: true }); | |||
this.setData({ | |||
showPopup: true, | |||
temName:"" | |||
}); | |||
}, | |||
onClose() { | |||
this.setData({ showPopup: false }); | |||
this.setData({ showPopup: false}); | |||
}, | |||
/** | |||
* 生命周期函数--监听页面初次渲染完成 | |||
@@ -6,7 +6,7 @@ | |||
<view class="pure_top" style="top:{{isIPX?'88px':'64px'}};"></view> | |||
<view class="main-box top-box steps-box" style="margin-top:{{isIPX?'100px':'75px'}};"> | |||
<text class="box-title">审批事项</text> | |||
<van-row wx:for="{{steps}}" wx:key="index"> | |||
<van-row wx:for="{{templateDetailList}}" wx:key="index"> | |||
<van-col span="3"> | |||
<view class="index">{{index+1}}</view> | |||
<!-- :class="{'indexCenter':index==0 ? false : true}" --> | |||
@@ -28,11 +28,11 @@ | |||
<van-col span="21"> | |||
<van-cell center="{{true}}" border="{{false}}"> | |||
<view slot="title"> | |||
{{item.activityName}}<text style="display: inline-block;margin-left: 10px;">村级主任审批</text> | |||
{{item.name?item.name:index+1}}级审批<text style="display: inline-block;margin-left: 10px;">{{item.nickName}}</text> | |||
</view> | |||
<view style="display: flex;align-items: center;justify-content:flex-end;"> | |||
<image src="/image/apply/icon_up.png" style="width: 20px;height: 20px;"></image> | |||
<image src="/image/apply/icon_down.png" style="width: 20px;height: 20px;margin-left: 10px;"></image> | |||
<image src="/image/apply/icon_up.png" style="width: 20px;height: 20px;" bindtap="upItem" data-id="{{index}}"></image> | |||
<image src="/image/apply/icon_down.png" style="width: 20px;height: 20px;margin-left: 10px;" bindtap="downItem" data-id="{{index}}"></image> | |||
</view> | |||
</van-cell> | |||
</van-col> | |||
@@ -40,33 +40,18 @@ | |||
<view class="check_box"> | |||
<van-checkbox-group value="{{ result }}" bind:change="onChange"> | |||
<van-row> | |||
<van-col span="12"> | |||
<van-checkbox name="a" shape="square" checked-color="#2C8E68">董事长:张三</van-checkbox> | |||
<van-checkbox name="b" shape="square" checked-color="#2C8E68">董事长:张三</van-checkbox> | |||
</van-col> | |||
<van-col span="12"> | |||
<van-checkbox name="c" shape="square" checked-color="#2C8E68">董事长:张三</van-checkbox> | |||
<van-checkbox name="d" shape="square" checked-color="#2C8E68">董事长:张三</van-checkbox> | |||
<van-col span="24" > | |||
<van-checkbox wx:for="{{groups}}" wx:for-item="item" name="{{item.userId}}" shape="square" checked-color="#2C8E68">{{item.roles[0].roleName}}:{{item.nickName}}</van-checkbox> | |||
</van-col> | |||
</van-row> | |||
<van-row> | |||
<van-col span="12"> | |||
<van-checkbox name="a" shape="square" checked-color="#2C8E68">村长:张三</van-checkbox> | |||
<van-checkbox name="b" shape="square" checked-color="#2C8E68">村书记:张三</van-checkbox> | |||
</van-col> | |||
<van-col span="12"> | |||
<van-checkbox name="c" shape="square" checked-color="#2C8E68">村主任:张三</van-checkbox> | |||
<van-checkbox name="d" shape="square" checked-color="#2C8E68">村党委:张三</van-checkbox> | |||
<van-col span="24" > | |||
<van-checkbox wx:for="{{villages}}" wx:for-item="item" name="{{item.userId}}" shape="square" checked-color="#2C8E68">{{item.roles[0].roleName}}:{{item.nickName}}</van-checkbox> | |||
</van-col> | |||
</van-row> | |||
<van-row> | |||
<van-col span="12"> | |||
<van-checkbox name="a" shape="square" checked-color="#2C8E68">镇长:张三</van-checkbox> | |||
<van-checkbox name="b" shape="square" checked-color="#2C8E68">镇书记:张三</van-checkbox> | |||
</van-col> | |||
<van-col span="12"> | |||
<van-checkbox name="c" shape="square" checked-color="#2C8E68">镇主任:张三</van-checkbox> | |||
<van-checkbox name="d" shape="square" checked-color="#2C8E68">镇党委:张三</van-checkbox> | |||
<van-col span="24"> | |||
<van-checkbox wx:for="{{towns}}" wx:for-item="item" name="{{item.userId}}" shape="square" checked-color="#2C8E68">{{item.roles[0].roleName}}:{{item.nickName}}</van-checkbox> | |||
</van-col> | |||
</van-row> | |||
</van-checkbox-group> | |||
@@ -79,12 +64,12 @@ | |||
</view> | |||
<view class="bottom"> | |||
<view class="btn1" bindtap="openBox">保存</view> | |||
<view class="btn2" bindtap="goApproval">保存并提交</view> | |||
<view class="btn1" bindtap="save">暂存</view> | |||
<view class="btn2" bindtap="submit">提交</view> | |||
</view> | |||
<van-action-sheet show="{{show}}" title="选择审批模板" bind:close="closeBox"> | |||
<van-swipe-cell right-width="{{ 65 }}"> | |||
<!-- <van-swipe-cell right-width="{{ 65 }}"> | |||
<van-cell label="支付水电、网费、房租" bindtap="goTemplate" > | |||
<view slot="title"> | |||
<view class="van-cell-text">日常支付水电模板<van-tag plain type="danger" color="#FC9A55" style="margin-left:10px;">默认</van-tag></view> | |||
@@ -94,41 +79,17 @@ | |||
<view slot="right" class="deleteBox"> | |||
<image src="/image/apply/icon_delete.png" style="width: 25px;height: 25px;margin: 0 auto;"></image> | |||
</view> | |||
</van-swipe-cell> | |||
<van-swipe-cell right-width="{{ 65 }}"> | |||
<van-cell title="日常支付水电模板" label="支付水电、网费、房租" > | |||
</van-swipe-cell> --> | |||
<van-swipe-cell right-width="{{ 65 }}" wx:for="{{templateList}}" wx:for-item="item" > | |||
<van-cell title="{{item.name}}" bindtap='chooseTemplate' data-id="{{item.id}}"> | |||
<van-icon slot="icon" name="https://636c-cloud1-8gya17a31667774d-1310628902.tcb.qcloud.la/icon_mb.png?sign=2a8bbe2cb4d4e0f28a99fddbe042d26c&t=1648620032" class="custom-icon" size="40" style="margin-right: 10px;" /> | |||
</van-cell> | |||
<view slot="right" class="deleteBox"> | |||
<view slot="right" class="deleteBox" bindtap='deleteTemplate' data-id="{{item.id}}"> | |||
<image src="/image/apply/icon_delete.png" style="width: 25px;height: 25px;margin: 0 auto;"></image> | |||
</view> | |||
</van-swipe-cell> | |||
<van-swipe-cell right-width="{{ 65 }}"> | |||
<van-cell title="日常支付水电模板" label="支付水电、网费、房租" > | |||
<van-icon slot="icon" name="https://636c-cloud1-8gya17a31667774d-1310628902.tcb.qcloud.la/icon_mb.png?sign=2a8bbe2cb4d4e0f28a99fddbe042d26c&t=1648620032" class="custom-icon" size="40" style="margin-right: 10px;" /> | |||
</van-cell> | |||
<view slot="right" class="deleteBox"> | |||
<image src="/image/apply/icon_delete.png" style="width: 25px;height: 25px;margin: 0 auto;"></image> | |||
</view> | |||
</van-swipe-cell> | |||
<van-swipe-cell right-width="{{ 65 }}"> | |||
<van-cell title="日常支付水电模板" label="支付水电、网费、房租" > | |||
<van-icon slot="icon" name="https://636c-cloud1-8gya17a31667774d-1310628902.tcb.qcloud.la/icon_mb.png?sign=2a8bbe2cb4d4e0f28a99fddbe042d26c&t=1648620032" class="custom-icon" size="40" style="margin-right: 10px;" /> | |||
</van-cell> | |||
<view slot="right" class="deleteBox"> | |||
<image src="/image/apply/icon_delete.png" style="width: 25px;height: 25px;margin: 0 auto;"></image> | |||
</view> | |||
</van-swipe-cell> | |||
</van-action-sheet> | |||
<van-dialog | |||
use-slot | |||
title="审批模板" | |||
show="{{ showPopup }}" | |||
bind:close="onClose" | |||
theme='round-button' | |||
confirmButtonText="保存" | |||
closeOnClickOverlay="{{ true }}" | |||
> | |||
<input class="input_tit" placeholder="请输入模板名称" style="width: 90%;margin: 0 auto;margin-top: 15px;margin-bottom: 10px;text-align: center;"/> | |||
</van-dialog> | |||
</van-action-sheet> | |||
<modal hidden="{{!showPopup}}" title="审批模板" confirm-text="保存" cancel-text="取消" bindcancel="cancelTem" bindconfirm="confirmTem"> | |||
<input type='text' placeholder="请输入模板名称" bindinput="inputTem" auto-focus/> | |||
</modal> |
@@ -143,7 +143,7 @@ text{display: block;} | |||
.check_box .van-col{ | |||
height: auto; | |||
} | |||
.check_box van-checkbox:nth-child(2n) .van-checkbox { | |||
.check_box van-checkbox:nth-child(n) .van-checkbox { | |||
margin-top: 15px; | |||
} | |||
.van-checkbox__icon-wrap { | |||
@@ -1,7 +1,7 @@ | |||
// pages/apply/index.js | |||
const app = getApp(); | |||
import * as UTIL from '../../utils/util.js'; | |||
import * as API from '../../utils/API.js'; | |||
const app = getApp(); | |||
Page({ | |||
/** | |||
@@ -5,7 +5,7 @@ | |||
</view> | |||
<!-- 付款单位开始 --> | |||
<view class="top" style="margin-top:{{isIPX?'100px':'75px'}};"> | |||
<image src="../../image/apply/dress_icon.png"></image> | |||
<image src="../../image/apply/dress_icon.png" mode="widthFix"></image> | |||
<view class="top-tit">付款单位</view> | |||
<view class="top-title">{{bookName}}</view> | |||
</view> | |||
@@ -13,15 +13,27 @@ | |||
<view class="main"> | |||
<van-tabs sticky color="#000"> | |||
<van-tab title="银行账户"> | |||
<view class="bank_box" wx:for="{{accountList}}" wx:key="index"> | |||
<view class="bank_box"> | |||
<text class="zt">一般户</text> | |||
<image src="../../image/apply/jsyh_bg2.png" style="width: 100%;position: absolute;bottom:0;z-index: 9;" mode="widthFix"></image> | |||
<image src="../../image/apply/bgt.png" style="width: 100%;position: absolute;top:0;right:0;z-index: 9;height: 100%;"></image> | |||
<view class="bank_content"> | |||
<image src="../../image/apply/jsyh_icon.png" style="width: 28%;" mode="widthFix"></image> | |||
<view style="margin-bottom: 2vh;">{{item.bankAccountNumber}}<text>卡号</text></view> | |||
<view style="margin-bottom: 2vh;">6217 0021 9000 7972 186<text>卡号</text></view> | |||
<view>可用余额</view> | |||
<view style="font-weight: bold;font-size: 22px;margin-top: 2vh;">{{item.balance}}</view> | |||
<view style="font-weight: bold;font-size: 22px;margin-top: 2vh;">10,288.83</view> | |||
</view> | |||
</view> | |||
<view class="bank_box"> | |||
<text class="zt">一般户</text> | |||
<image src="../../image/apply/jsyh_bg2.png" style="width: 100%;position: absolute;bottom:0;z-index: 9;" mode="widthFix"></image> | |||
<image src="../../image/apply/bgt.png" style="width: 100%;position: absolute;top:0;right:0;z-index: 9;height: 100%;"></image> | |||
<view class="bank_content"> | |||
<image src="../../image/apply/jsyh_icon.png" style="width: 28%;" mode="widthFix"></image> | |||
<view style="margin-bottom: 2vh;">6217 0021 9000 7972 186<text>卡号</text></view> | |||
<view>可用余额</view> | |||
<view style="font-weight: bold;font-size: 22px;margin-top: 2vh;">10,288.83</view> | |||
</view> | |||
</view> | |||
@@ -7,7 +7,6 @@ | |||
border-radius: 10px; | |||
margin-top: 3vw; | |||
overflow: hidden; | |||
position: relative; | |||
} | |||
.top view{ | |||
padding: 18px 15px; | |||
@@ -17,8 +16,7 @@ | |||
} | |||
.top image{ | |||
position: absolute; | |||
width: 100%; | |||
height: 100%; | |||
width: 94%; | |||
} | |||
.top-title{ | |||
flex: 1; | |||
@@ -7,6 +7,19 @@ Page({ | |||
wrokScrollHeight:0, | |||
userInfoObj:{}, //用户信息, | |||
item:"", | |||
address: '', //详细收货地址(四级) | |||
value: [0, 0, 0], // 地址选择器省市区 暂存 currentIndex | |||
region: '', //所在地区 | |||
deptId: '', | |||
regionValue: [0, 0, 0], // 地址选择器省市区 最终 currentIndex | |||
provinces: [], // 一级地址 | |||
citys: [], // 二级地址 | |||
areas: [], // 三级地址 | |||
visible: false, | |||
isCanConfirm: true, //是否禁止在第一列滚动期间点击确定提交数据 | |||
bookId:"", | |||
bookName:"", | |||
bookList:[], | |||
active:1, | |||
// 待办列表 | |||
todoList:[], | |||
@@ -51,6 +64,21 @@ Page({ | |||
this.getTransferList1(); | |||
//查询已制单 | |||
this.getTransferList2(); | |||
//查询dept | |||
this.getTreeDept(); | |||
}, | |||
reset:function(){ | |||
this.setData({ | |||
active:1, | |||
todoList:[], | |||
doneList:[], | |||
yfqList:[], | |||
yzdList:[], | |||
todoNum:0, | |||
doneNum:0, | |||
yfqNum:0, | |||
yzdNum:0 | |||
}) | |||
}, | |||
switchTab:function(e){ | |||
this.setData({ | |||
@@ -65,6 +93,7 @@ Page({ | |||
} | |||
} | |||
}, | |||
getTaskList:function(e){ | |||
let data = { | |||
pageNum:1, | |||
@@ -90,7 +119,6 @@ Page({ | |||
console.log(res); | |||
}, | |||
complete: (res) => { | |||
console.log(res); | |||
} | |||
}) | |||
}, | |||
@@ -119,7 +147,6 @@ Page({ | |||
console.log(res); | |||
}, | |||
complete: (res) => { | |||
console.log(res); | |||
} | |||
}) | |||
}, | |||
@@ -133,17 +160,16 @@ Page({ | |||
} | |||
UTIL.httpRequest(API.URL_GET_TRANSFERLIST,data, { | |||
success: (res) => { | |||
console.log(res); | |||
if (res.code == API.SUCCESS_CODE) { | |||
console.log(res); | |||
let a = this.data.yfqNum+res.total | |||
this.setData({yfqNum:a}) | |||
this.setData({yfqList:res.rows}) | |||
let b = this.data.yfqList | |||
this.setData({yfqList:res.rows.concat(b)}) | |||
} | |||
}, fail: (res) => { | |||
console.log(res); | |||
}, | |||
complete: (res) => { | |||
console.log(res); | |||
} | |||
}) | |||
}, | |||
@@ -157,17 +183,16 @@ Page({ | |||
} | |||
UTIL.httpRequest(API.URL_GET_TRANSFERLIST,data, { | |||
success: (res) => { | |||
console.log(res); | |||
if (res.code == API.SUCCESS_CODE) { | |||
console.log(); | |||
let a = this.data.yfqNum+res.total | |||
this.setData({yfqNum:a}) | |||
this.setData({yfqList:res.rows}) | |||
let b = this.data.yfqList | |||
this.setData({yfqList:res.rows.concat(b)}) | |||
} | |||
}, fail: (res) => { | |||
console.log(res); | |||
}, | |||
complete: (res) => { | |||
console.log(res); | |||
} | |||
}) | |||
}, | |||
@@ -187,10 +212,8 @@ Page({ | |||
this.setData({yzdList:res.rows}) | |||
} | |||
}, fail: (res) => { | |||
console.log(res); | |||
}, | |||
complete: (res) => { | |||
console.log(res); | |||
} | |||
}) | |||
}, | |||
@@ -201,20 +224,20 @@ Page({ | |||
}) | |||
}, | |||
//跳转支出申请 | |||
swichPayment: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: '/pages/apply/index?', | |||
}) | |||
}, | |||
swichPayment: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: '/pages/apply/index?', | |||
}) | |||
}, | |||
toList:function(){ | |||
wx.navigateTo({ | |||
url: '/pages/handle/liist?active='+this.data.active, | |||
@@ -253,9 +276,186 @@ swichPayment:function(e){ | |||
success: (res) => { | |||
if (res.code == API.SUCCESS_CODE) { | |||
this.setData({userInfoObj:res.user}) | |||
this.setData({region:res.user.deptName}) | |||
this.setData({item:JSON.stringify(res.user)}) | |||
this.getBookList() | |||
} | |||
} | |||
}) | |||
}, | |||
/* 获取区镇村*/ | |||
getTreeDept:function(){ | |||
UTIL.httpRequest(API.URL_GET_TREESELECTBYUSER, {method:'GET'}, { | |||
success: (res) => { | |||
if (res.code == API.SUCCESS_CODE) { | |||
this.setData({provinces:res.data}) | |||
this.setData({citys:res.data[0].children}) | |||
this.setData({areas:res.data[0].children[this.data.value[1]].children}) | |||
} | |||
} | |||
}) | |||
}, | |||
/* 获取区镇村*/ | |||
getBookList:function(){ | |||
let d = { | |||
loginDeptID : this.data.userInfoObj.loginDeptId | |||
} | |||
UTIL.httpRequest(API.URL_GET_BOOKLISTBYDEPTID,d, { | |||
success: (res) => { | |||
if (res.code == API.SUCCESS_CODE) { | |||
this.setData({bookList:res.rows}) | |||
if(this.data.bookName==""&&res.total>0){ | |||
this.setData({bookName:res.rows[0].bookName}) | |||
this.setData({bookId:res.rows[0].id}) | |||
}else if(this.data.bookName==""&&res.total==0){ | |||
this.setData({bookName:"无可用账套"}) | |||
} | |||
} | |||
},fail:(res) => { | |||
},complete:(res) => { | |||
} | |||
}) | |||
}, | |||
bindPickerChange:function(e){ | |||
this.setData({ | |||
bookId: this.data.bookList[e.detail.value].id, | |||
bookName:this.data.bookList[e.detail.value].bookName | |||
}) | |||
let data={ | |||
loginBookId:this.data.bookList[e.detail.value].id | |||
} | |||
let _this = this | |||
UTIL.httpRequest(API.URL_GET_CHANGEBOOK,data, { | |||
success: (res) => { | |||
_this.reset() | |||
_this.onLoad() | |||
} | |||
}) | |||
}, | |||
closePopUp() { | |||
this.setData({ | |||
visible: false | |||
}) | |||
}, | |||
pickAddress() { | |||
this.setData({ | |||
visible: true, | |||
value: [...this.data.regionValue] | |||
}) | |||
}, | |||
// 处理省市县联动逻辑 并保存 value | |||
cityChange(e) { | |||
var value = e.detail.value | |||
let { | |||
provinces, | |||
citys | |||
} = this.data | |||
var provinceNum = value[0] | |||
var cityNum = value[1] | |||
var areaNum = value[2] | |||
if (this.data.value[0] !== provinceNum) { | |||
var id = provinces[provinceNum].id | |||
this.setData({ | |||
value: [provinceNum, 0, 0], | |||
citys: this.data.provinces[provinceNum].children, | |||
areas: this.data.provinces[provinceNum].children[cityNum].children | |||
}) | |||
} else if (this.data.value[1] !== cityNum) { | |||
var id = citys[cityNum].id | |||
this.setData({ | |||
value: [provinceNum, cityNum, 0], | |||
areas: this.data.provinces[provinceNum].children[cityNum].children | |||
}) | |||
} else { | |||
this.setData({ | |||
value: [provinceNum, cityNum, areaNum] | |||
}) | |||
} | |||
console.log(this.data.value); | |||
}, | |||
preventTouchmove() {}, | |||
// 城市选择器 | |||
// 点击地区选择取消按钮 | |||
cityCancel(e) { | |||
var id = this.data.provinces[0].id | |||
this.setData({ | |||
citys: this.data.lastCitys || this.data.userInfoObj.parentDeptName, //默认北京市辖区, | |||
areas: this.data.lastAreas || this.data.userInfoObj.deptName, | |||
value: [...this.data.regionValue], | |||
visible: false | |||
}) | |||
}, | |||
// 提交时由序号获取省市区id | |||
getRegionId(type) { | |||
let value = this.data.regionValue | |||
let provinceId = this.data.provinces[value[0]].id | |||
let townId = this.data.provinces[value[0]].children[value[1]].children[value[2]].id | |||
let areaId = '' | |||
if (this.data.provinces[value[0]].children[value[1]].children[value[2]].id) { | |||
areaId = this.data.provinces[value[0]].children[value[1]].children[value[2]].id | |||
} else { | |||
areaId = 0 | |||
} | |||
if (type === 'provinceId') { | |||
return provinceId | |||
} else if (type === 'townId') { | |||
return townId | |||
} else { | |||
return areaId | |||
} | |||
}, | |||
chooseStart(e) { | |||
this.setData({ | |||
isCanConfirm: false | |||
}) | |||
}, | |||
chooseEnd(e) { | |||
this.setData({ | |||
isCanConfirm: true | |||
}) | |||
}, | |||
// 点击地区选择确定按钮 | |||
citySure(e) { | |||
if (this.data.isCanConfirm) { | |||
var value = this.data.value | |||
this.setData({ | |||
visible: false | |||
}) | |||
// 将选择的城市信息显示到输入框 | |||
try { | |||
var region = (this.data.provinces[value[0]].label || '') + (this.data.citys[value[1]].label || '') | |||
if (this.data.areas.length > 0) { | |||
region = this.data.areas[value[2]].label || '' | |||
} else { | |||
this.data.value[2] = 0 | |||
} | |||
} catch (error) { | |||
console.log('adress select something error') | |||
} | |||
this.setData({ | |||
region: region, | |||
lastCitys: this.data.citys, | |||
lastAreas: this.data.areas, | |||
regionValue: value, | |||
deptId:this.getRegionId('areas') | |||
}, () => { | |||
let data={ | |||
loginDeptID : this.getRegionId('areas') | |||
} | |||
let _this = this | |||
UTIL.httpRequest(API.URL_GET_CHANGEDEPT,data, { | |||
success: (res) => { | |||
setTimeout(()=>{ | |||
_this.reset() | |||
_this.onLoad() | |||
},1000) | |||
} | |||
}) | |||
}) | |||
} | |||
} | |||
}) |
@@ -1,6 +1,7 @@ | |||
{ | |||
"usingComponents": { | |||
"icon-loading":"/component/iconLoading/iconLoading" | |||
"icon-loading":"/component/iconLoading/iconLoading", | |||
"pop-up": "/component/pop-up/index" | |||
}, | |||
"navigationStyle": "custom" | |||
} |
@@ -16,12 +16,20 @@ | |||
</view> | |||
<view class="task_wrap "> | |||
<view class="flex_block"> | |||
<view class="desc">未完成</view> | |||
<view class="event">{{todoNum}}件</view> | |||
<!-- <view class="desc">未完成</view> --> | |||
<view class="event" bindtap="pickAddress"> | |||
{{ region || "请选择" }} | |||
</view> | |||
</view> | |||
<view class="flex_block unfinished"> | |||
<view class="desc">已完成</view> | |||
<view class="event">{{doneNum}}件</view> | |||
<!-- <view class="desc">已完成</view> --> | |||
<view class="event"> | |||
<picker bindchange="bindPickerChange" value="{{index}}" range-key="bookName" range="{{bookList}}"> | |||
<view class="picker"> | |||
{{array[index]|| bookName}} | |||
</view> | |||
</picker> | |||
</view> | |||
</view> | |||
</view> | |||
<view class="address_wrap"> | |||
@@ -31,6 +39,7 @@ | |||
</view> | |||
</view> | |||
<!--主导航--> | |||
<view class="navList_main"> | |||
<view class="tab_item" bindtap='swichPayment'> | |||
@@ -160,4 +169,25 @@ | |||
</view> | |||
</view> | |||
</scroll-view> | |||
<pop-up visible="{{visible}}" onClose="closePopUp"> | |||
<view slot="content"> | |||
<view class="picker-view"> | |||
<view class="picker-view__pane"> | |||
<text catchtap="cityCancel">取消</text> | |||
<text catchtap="citySure">确定</text> | |||
</view> | |||
<picker-view class="pick-view__group" bindchange="cityChange" bindpickstart="chooseStart" bindpickend="chooseEnd" value="{{value}}"> | |||
<picker-view-column indicator-class="item_active"> | |||
<view wx:for="{{provinces}}" class="picker-item" wx:key="index">{{item.label}}</view> | |||
</picker-view-column> | |||
<picker-view-column> | |||
<view wx:for="{{citys}}" class="picker-item" wx:key="index">{{item.label}}</view> | |||
</picker-view-column> | |||
<picker-view-column> | |||
<view wx:for="{{areas}}" class="picker-item" wx:key="index">{{item.label}}</view> | |||
</picker-view-column> | |||
</picker-view> | |||
</view> | |||
</view> | |||
</pop-up> | |||
</view> |
@@ -302,4 +302,80 @@ | |||
overflow: hidden; | |||
text-overflow: ellipsis; | |||
white-space: nowrap; | |||
} | |||
.btn{ | |||
width: 100%; | |||
height:90rpx; | |||
padding:0 24rpx; | |||
box-sizing:border-box; | |||
line-height: 90rpx; | |||
text-align: center; | |||
display: flex; | |||
background:rgba(255,255,255,.8); | |||
justify-content: space-between; | |||
} | |||
.address-item { | |||
min-height: 98rpx; | |||
display: flex; | |||
justify-content: flex-start; | |||
align-items: center; | |||
border-bottom: 1px solid #f1f1f1; | |||
padding: 0 32rpx | |||
} | |||
.item-title { | |||
width: 140rpx; | |||
color: #4d4c4c; | |||
font-size: 28rpx; | |||
height: 98rpx; | |||
line-height: 98rpx; | |||
} | |||
.item-content { | |||
width: 520rpx; | |||
white-space: nowrap; | |||
overflow: hidden; | |||
text-overflow: ellipsis; | |||
font-size: 28rpx; | |||
height: 98rpx; | |||
line-height: 98rpx; | |||
color: #4d4c4c; | |||
} | |||
/* 地区级联选择器 */ | |||
.picker-view { | |||
width: 100%; | |||
display: flex; | |||
background-color: #fff; | |||
flex-direction: column; | |||
justify-content: center; | |||
align-items: center; | |||
bottom: 0rpx; | |||
left: 0rpx; | |||
} | |||
.picker-item { | |||
line-height: 70rpx; | |||
margin-left: 5rpx; | |||
margin-right: 5rpx; | |||
text-align: center; | |||
} | |||
.picker-view__pane { | |||
height: 100rpx; | |||
width: 100%; | |||
padding: 20rpx 32rpx; | |||
display: flex; | |||
justify-content: space-between; | |||
align-items: center; | |||
box-sizing: border-box; | |||
} | |||
.picker-view__pane text{ | |||
color: #00cc88; | |||
font-size: 30rpx; | |||
} | |||
.pick-view__group { | |||
width: 96%; | |||
height: 450rpx; | |||
} |
@@ -49,7 +49,14 @@ const URL_POST_USEREDIT = `${URL_PREFIX}/system/user/edit`; | |||
const URL_GET_ACCOUNTLIST = `${URL_PREFIX}/cashier/account/list`; | |||
//查看事项审批模板列表 | |||
const URL_GET_APPROVALITEMSLIST = `${URL_PREFIX}/yinnong/approvalItems/list`; | |||
//获取区、镇、村地区 | |||
const URL_GET_TREESELECTBYUSER = `${URL_PREFIX}/system/dept/treeselectByUser`; | |||
//获取账套列表 | |||
const URL_GET_BOOKLISTBYDEPTID = `${URL_PREFIX}/finance/book/listByDeptId`; | |||
//切换部门 | |||
const URL_GET_CHANGEDEPT = `${URL_PREFIX}/system/user/changeDept`; | |||
//切换账套 | |||
const URL_GET_CHANGEBOOK = `${URL_PREFIX}/system/user/changeBook`; | |||
//字典查询 | |||
const URL_GET_GETDICTTYPE = `${URL_PREFIX}/system/dict/data/type/`; | |||
@@ -67,7 +74,27 @@ const URL_GET_PAYEESELECTLIST = `${URL_PREFIX}/yinnong/payee/list`; | |||
//当前账套付款账户列表 | |||
const URL_GET_SELECTACCOUNTLIST = `${URL_PREFIX}/cashier/account/accountList`; | |||
//查询审批流模板列表 | |||
const URL_GET_TEMPLATELIST = `${URL_PREFIX}/service/template/list`; | |||
//查询审批流模板列表 | |||
const URL_GET_TEMPLATEDETAIL = `${URL_PREFIX}/service/templateDetail/list`; | |||
//根据系统组织机构id查询所在乡镇 | |||
const URL_GET_TOWNINFOBYDEPTID = `${URL_PREFIX}/system/dept/getTownInfoByDeptId/`; | |||
//根据条件查询用户信息 | |||
const URL_GET_USERLIST = `${URL_PREFIX}/system/user/list`; | |||
//新增模板 | |||
const URL_POST_MOBILEADD = `${URL_PREFIX}/service/template/mobileAdd`; | |||
//删除模板 | |||
const URL_GET_MOBILEREMOVE = `${URL_PREFIX}/service/template/remove/`; | |||
//通过审批事项id查询审批事项 | |||
const URL_GET_APPROVALITEMSBYID = `${URL_PREFIX}/yinnong/approvalItems/get/`; | |||
//审批流id保存到事项审批 | |||
const URL_POST_APPROVALITEMSEDIT = `${URL_PREFIX}/yinnong/approvalItems/edit`; | |||
//修改审批流数据 | |||
const URL_POST_TEMPLATEEDIT = `${URL_PREFIX}/service/templateDetail/editBatch`; | |||
//审核事项申请 | |||
const URL_POST_APPROVALITEMSSUBMIT = `${URL_PREFIX}/yinnong/approvalItems/approvalItemsSubmit/`; | |||
//汇票列表 | |||
const URL_GET_MONEYORDERLIST = `${URL_PREFIX}/yinnong/moneyorder/list`; | |||
@@ -115,11 +142,26 @@ export { | |||
URL_POST_USEREDIT, | |||
URL_GET_ACCOUNTLIST, | |||
URL_GET_APPROVALITEMSLIST, | |||
URL_GET_TREESELECTBYUSER, | |||
URL_GET_BOOKLISTBYDEPTID, | |||
URL_GET_CHANGEBOOK, | |||
URL_GET_CHANGEDEPT, | |||
URL_GET_GETDICTTYPE, | |||
URL_GET_GETPROJECTLIST, | |||
URL_GET_CONTRACTIONLIST, | |||
URL_GET_SELECTLIST, | |||
URL_GET_SELECTACCOUNTLIST, | |||
URL_GET_TEMPLATELIST, | |||
URL_GET_TEMPLATEDETAIL, | |||
URL_GET_TOWNINFOBYDEPTID, | |||
URL_GET_USERLIST, | |||
URL_POST_MOBILEADD, | |||
URL_GET_MOBILEREMOVE, | |||
URL_GET_APPROVALITEMSBYID, | |||
URL_POST_APPROVALITEMSEDIT, | |||
URL_POST_TEMPLATEEDIT, | |||
URL_POST_APPROVALITEMSSUBMIT | |||
URL_GET_SELECTACCOUNTLIST, | |||
URL_GET_MONEYORDERLIST, | |||
URL_GET_PAYEESELECTLIST, | |||
URL_GET_DEPOSITLIST, | |||
@@ -117,7 +117,7 @@ function httpRequest(url, data, { | |||
finalData.token = getApp().globalData.userInfo.token; | |||
wx.request({ | |||
url, | |||
data: finalData, | |||
data: finalData, | |||
method:data.method, | |||
timeout: 60000, | |||
header: { | |||