This commit is contained in:
cclu 2024-07-23 20:14:38 +08:00
parent e58adaae1d
commit 123acdb8c9
2 changed files with 380 additions and 17 deletions

View File

@ -2,7 +2,10 @@
<view class="main">
<view style="background: #fff">
<!-- 顶部标题-->
<view class="pageTitle">{{`${detailObj.SERVERPART_NAME}-${topDetail.SERVERPARTSHOP_NAME || ''}-${$moment(detailObj.ENDDATE).format('YYYYMM')}月度结算表`}}</view>
<view class="pageTitle">{{
detailObj.SETTLEMENT_TYPE===1?`${detailObj.SERVERPART_NAME}-${topDetail.SERVERPARTSHOP_NAME || ''}年度结算表`:
`${detailObj.SERVERPART_NAME}-${topDetail.SERVERPARTSHOP_NAME || ''}-${$moment(detailObj.ENDDATE).format('YYYYMM')}月度结算表`
}}</view>
<!-- 顶部详情-->
<view class="detailBox">
@ -328,25 +331,27 @@
</view>
</view>
<view class="rowItemBox">
<view class="rowItem">
<view class="rowItemBox" style="display: flex;justify-content: space-between;align-items: center">
<view class="rowItemSpecial">
<span class="label">移动支付</span>
<span class="value">{{newCalibration.MOBILEPAY_AMOUNT?`${$util.getMoney(newCalibration.MOBILEPAY_AMOUNT + (newCalibration.MOBILEPAY_CORRECT || 0))}`:''}}</span>
<span class="value">
{{newCalibration.MOBILEPAY_AMOUNT?`${$util.getMoney(newCalibration.MOBILEPAY_AMOUNT + (newCalibration.MOBILEPAY_CORRECT || 0))}` + `${newCalibration.MOBILEPAY_CORRECT?`(${newCalibration.MOBILEPAY_CORRECT>0?'+':''}${newCalibration.MOBILEPAY_CORRECT})`:''}` :''}}
</span>
</view>
<view class="rowItem">
<view class="rowItemSpecial">
<span class="label">移动冲正</span>
<span class="value">{{newCalibration.MobilePayCorrect?`${$util.getMoney(newCalibration.MobilePayCorrect)}`:'0'}}</span>
<span class="value">{{newCalibration.MOBILEPAY_CORRECT?`${$util.getMoney(newCalibration.MOBILEPAY_CORRECT)}`:'0'}}</span>
</view>
</view>
<view class="rowItemBox">
<view class="rowItem">
<view class="rowItemBox" style="display: flex;justify-content: space-between;align-items: center">
<view class="rowItemSpecial">
<span class="label">现金交易</span>
<span class="value">{{newCalibration.CASHPAY_AMOUNT?`${$util.getMoney(newCalibration.CASHPAY_AMOUNT + (newCalibration.CASHPAY_CORRECT || 0))}`:''}}</span>
<span class="value">{{newCalibration.CASHPAY_AMOUNT?`${$util.getMoney(newCalibration.CASHPAY_AMOUNT + (newCalibration.CASHPAY_CORRECT || 0))}` + `${newCalibration.CASHPAY_CORRECT?`(${newCalibration.CASHPAY_CORRECT>0?'+':''}${newCalibration.CASHPAY_CORRECT})`:'' }` :''}}</span>
</view>
<view class="rowItem">
<view class="rowItemSpecial">
<span class="label">现金冲正</span>
<span class="value">{{newCalibration.CashPayCorrect?`${$util.getMoney(newCalibration.CashPayCorrect)}`:'0'}}</span>
<span class="value">{{newCalibration.CASHPAY_CORRECT?`${$util.getMoney(newCalibration.CASHPAY_CORRECT)}`:'0'}}</span>
</view>
</view>
@ -380,17 +385,48 @@
</view>
<view class="btn">
<span class="btnItem" @click="handleRecalibrate">重新校准</span>
<span class="btnItem" style="margin-left: 16rpx" v-if="afterCalibration">发起申请</span>
<span class="btnItem" style="margin-left: 16rpx" v-if="afterCalibration" @click="openShowSelect">发起申请</span>
</view>
</view>
</UniPop>
<!-- -->
<UniPop :show="isShowSelect" @hidePopup="closeShowSelect" :showIndex="6" type="middle" @touchmove.prevent round="true">
<view class="uniPopupShowSelect">
<view class="uniPopupTop">
<text class="uniPopupTitle"></text>
<image @click="closeShowSelect" class="close" src="https://eshangtech.com/ShopICO/ahyd-BID/examine/close.svg"></image>
</view>
<view class="uniPopupContent">
<view class="contentItem">
<view class="label">请选择下一阶段审批人</view>
<picker class="pick" :value="nextPersonIndex" :range="nextPerson" range-key="label" @change="handleChangePerson">
{{nextPersonValue? showLabel:'--请选择--'}}
</picker>
</view>
<view class="contentItem" style="margin-top: 8px">
<view class="label">审核意见</view>
<view class="text-area-box">
<textarea placeholder="请输入您的意见" v-model="approveDesc"/>
</view>
</view>
<view class="btn">
<span class="btnItem" @click="handleCreate">确认结算</span>
</view>
</view>
</view>
</UniPop>
</view>
</template>
<script>
import request from '@/util/index.js'
import UniPop from '@/components/uni-popup.vue'
import Store from "../../store/store";
import {mapGetters} from "vuex";
export default {
name: "detail",
components: {UniPop},
@ -408,10 +444,11 @@ export default {
},//
topDetail:{},//
actuaryData:{},//
approveDesc:'',//
approveDesc:'已核对,拟同意!',//
nextPerson:[],//
nextPersonIndex:'',//
nextPersonValue:'',//
showLabel:'',//
progressList: [],//
showPop:false,//
showType: 0,// 1 2
@ -427,6 +464,10 @@ export default {
CashPayCorrect: 0,//
newCalibration: {},//
afterCalibration: false,//
lastMonthIsOver: false,//
LastSettlementMonth: '',//
isShowSelect: false,//
}
},
async onLoad(query){
@ -443,9 +484,141 @@ export default {
await this.handleGetActuaryData()
await this.handleGetProgress()
},
computed: {
...mapGetters({'users':'getUser'}),
},
methods:{
//
handleChangePerson(e){
console.log('e',e)
this.nextPersonIndex = Number(e.target.value)
let value = this.nextPerson[this.nextPersonIndex].value
this.nextPersonValue = value
this.showLabel = value.split('-')[0]
console.log('nextPersonValue',this.nextPersonValue)
},
//
async handleCreate(){
if(!this.nextPersonValue){
uni.showToast({
icon:'error',
duration: 2000,
title: '请选择审批人',
});
return
}
if(!this.approveDesc){
uni.showToast({
icon:'error',
duration: 2000,
title: '请输入审核意见',
});
return
}
console.log('this.detailObj',this.detailObj)
console.log('this.newCalibration',this.newCalibration)
console.log('users',this.users)
//
let _this = this
if(this.detailObj.SETTLEMENT_TYPE===1){
//
const req = {
BusinessapprovalModel:{
OPERATION_TYPE: '11',
// BUSINESSPROCESS_ID:'',
PROINST_ID: this.detailObj.SHOPROYALTY_ID,
SERVERPART_ID: this.detailObj.SERVERPART_ID,
SERVERPART_IDS: this.detailObj.SERVERPART_ID,
BUSINESSPROCESS_NAME:'',
BUSINESS_STARTDATE:'',
BUSINESSAPPROVAL_STATE: 1000,
BUSINESSAPPROVAL_DESC:'',
STAFF_NAME:this.detailObj.UserName,
STAFF_ID:this.detailObj.UserId,
Serverpart_Name:'',
SERVERPARTSHOP_ID:'',
SERVERPARTSHOP_NAME:'',
CORRECT_AMOUNT:'',
APPOVED_IDS:'',
APPOVED_NAME:''
},
RevenueconfirmModel: []
}
// const data = await request.$webPost('EShangApiMain/Finance/ApplyAccountProinst', req)
}else{
//
console.log('this.nextPersonValue',this.nextPersonValue)
let [APPOVED_NAME,APPOVED_IDS] = this.nextPersonValue.split('-')
console.log('APPOVED_IDS',APPOVED_IDS)
console.log('APPOVED_NAME',APPOVED_NAME)
const req = {
BusinessapprovalModel:{
OPERATION_TYPE:'12',
BUSINESSPROCESS_NAME:`${this.detailObj.BUSINESSPROJECT_NAME}${this.detailObj.startTime}-${this.detailObj.endTime}】月度结算`,
PROINST_ID: this.detailObj.BUSINESSPROJECT_ID,
SERVERPART_ID: this.detailObj.SERVERPART_ID,
SERVERPART_NAME: this.detailObj.SERVERPART_NAME,
STAFF_ID: this.users.UserId,
STAFF_NAME: this.users.UserName,
BUSINESS_STARTDATE: this.$moment().format('YYYY-MM-DD HH:mm:ss'),
BUSINESSAPPROVAL_STATE: 1000,
BUSINESSAPPROVAL_DESC:this.approveDesc,
SERVERPART_IDS: this.detailObj.SERVERPART_ID,
MERCHANTS_ID: this.detailObj.MERCHANTS_ID,
MERCHANTS_NAME: this.detailObj.MERCHANTS_NAME,
SERVERPARTSHOP_ID: this.detailObj.SERVERPARTSHOP_ID,
SERVERPARTSHOP_NAME: this.detailObj.SERVERPARTSHOP_NAME,
APPOVED_IDS: APPOVED_IDS,
APPOVED_NAME:APPOVED_NAME,
},
bizpsplitMonthModel:{
...this.newCalibration,
SHOPROYALTY_ID: this.detailObj.SHOPROYALTY_ID,
SERVERPARTSHOP_ID: this.detailObj.SERVERPARTSHOP_ID,
SERVERPARTSHOP_NAME: this.detailObj.SERVERPARTSHOP_NAME,
BUSINESS_TYPE: this.detailObj.BUSINESS_TYPE,
Serverpart_Name: this.detailObj.SERVERPART_NAME,
STARTDATE: this.detailObj.startTime,
ENDDATE: this.detailObj.endTime,
REVENUE_AMOUNT: this.newCalibration.CurMonthRevenue,
ROYALTY_PRICE: this.newCalibration.GUARANTEERATIOAMOUNT,
ROYALTY_THEORY: this.newCalibration.GUARANTEERATIOINCOME,
MOBILEPAY_AMOUNT: this.newCalibration.MOBILEPAY_AMOUNT,
CASHPAY_AMOUNT: this.newCalibration.CASHPAY_AMOUNT,
ACCREVENUE_AMOUNT: this.newCalibration.REVENUEDAILY_AMOUNTTotal,
ACCROYALTY_PRICE: this.newCalibration.ROYALTYTHEORYMUST,
ACCROYALTY_THEORY: this.newCalibration.ROYALTYTHEORYOK,
MOBILEPAY_CORRECT: this.newCalibration.MOBILEPAY_CORRECT,
CASHPAY_CORRECT: this.newCalibration.CASHPAY_CORRECT,
ACCOUNT_TYPE: 1000,
BIZPSPLITMONTH_STATE: 2
}
}
console.log('req',req)
const data = await request.$webPost('EShangApiMain/Finance/ApplyMonthAccountProinst', req)
if (data.Result_Code === 100) {
uni.showToast({
icon:'success',
duration: 2000,
title: data.Result_Desc,
});
uni.navigateBack({
delta: 1
});
}else{
uni.showToast({
icon:'error',
duration: 2000,
title: data.Result_Desc,
});
}
}
},
//
async handleRecalibrate(){
console.log('this.MobilePayCorrect',this.MobilePayCorrect)
@ -468,9 +641,38 @@ export default {
console.log('res',res)
uni.hideLoading()
},
openShowSelect(){
this.isShowSelect = true
},
//
closeShowSelect(){
this.isShowSelect = false
},
//
handleShowApplyForPop(){
this.isShowApplyFor = true
let _this = this
if (this.lastMonthIsOver) {
this.isShowApplyFor = true
}else{
uni.showModal({
title: '系统检测',
content: `${this.detailObj.SERVERPART_NAME}-${this.detailObj.SERVERPARTSHOP_NAME},项目期数内存在未审批月度结算!点击确定自动为您调整到${this.LastSettlementMonth}月进行审批?`,
success: function (res) {
if (res.confirm) {
uni.setStorageSync('handleGetNewMonth','true')
uni.setStorageSync('handleGetNewMonthObj',_this.detailObj)
uni.setStorageSync('handleGetNewMonthTime',_this.LastSettlementMonth)
uni.navigateBack({
delta: 1
});
} else if (res.cancel) {
uni.navigateBack({
delta: 1
});
}
}
});
}
},
//
closeApplyFor(){
@ -516,6 +718,25 @@ export default {
let res = data.Result_Data.List[0]
console.log('res',res)
this.actuaryData = res
if(res.AllowSettlement===1){
this.lastMonthIsOver = true
}else if(res.AllowSettlement===2){
this.lastMonthIsOver = false
this.LastSettlementMonth = `${res.LastSettlementMonth}审结中月度结算正在审批中,请审结后再发起${this.detailObj.STATISTICS_MONTH}月度结算`
}else{
this.lastMonthIsOver = false
if(res.LastSettlementState===0){
// this.LastSettlementMonth =`${res.LastSettlementMonth}`
this.LastSettlementMonth = res.LastSettlementMonth
}else if(res.LastSettlementState===1){
// this.LastSettlementMonth =`${res.LastSettlementMonth}`
this.LastSettlementMonth = res.LastSettlementMonth
}else if(res.LastSettlementState===2){
// this.LastSettlementMonth =`${res.LastSettlementMonth}`
this.LastSettlementMonth = res.LastSettlementMonth
}
}
uni.hideLoading()
},
//
@ -652,6 +873,28 @@ export default {
//
async handleGetProgress(){
if(!this.detailObj.BUSINESSAPPROVAL_ID){
const req = {
OperationType: this.detailObj.SETTLEMENT_TYPE===1?'11':'12',
CurState: 1000,
IsValid: 1,
ShowApprovalUser: true,
ServerpartIds: this.detailObj.SERVERPART_ID || '',
ShopIds: this.detailObj.SERVERPARTSHOP_ID || ''
}
const data = await request.$webGet('EShangApiMain/BusinessProcess/GetAPPROVALROUTEDetail', req)
console.log('handleGetProgress',data)
let res = data.Result_Data
if(res.UserList && res.UserList.length>0){
let list = []
res.UserList.forEach(item=>{
list.push({ label: item.USER_NAME, value: `${item.USER_NAME}-${item.USER_ID}` })
})
this.nextPerson = list
if (list && list.length > 0 && list.length === 1) {
this.nextPersonIndex = 0
this.nextPersonValue = list[0].value
}
}
return
}
const req = {
@ -1031,6 +1274,17 @@ export default {
font-size: 26rpx;
}
}
.rowItemSpecial{
display: flex;
justify-content: flex-start;
.label{
color: #ADB2BF;
font-size: 26rpx;
}
.value{
font-size: 26rpx;
}
}
}
}
}
@ -1091,5 +1345,62 @@ export default {
margin-top: 16rpx;
}
}
.uniPopupShowSelect{
width: calc(100vw - 140rpx);
height: 350px;
box-sizing: border-box;
padding: 32rpx 0;
.uniPopupTop{
width: 100%;
display: flex;
align-items: center;
justify-content: space-between;
.uniPopupTitle{
font-family: PingFangSC, PingFang SC;
font-weight: 600;
font-size: 32rpx;
color: #160002;
line-height: 44rpx;
text-align: left;
font-style: normal;
}
.close{
width: 40rpx;
height: 40rpx;
}
}
.uniPopupContent{
.contentItem{
.label{
font-size: 16px;
font-weight: 600;
}
.text-area-box{
width: 100%;
background: #F2F4F5;
border-radius: 8rpx;
box-sizing: border-box;
padding: 24rpx;
}
}
.btn{
width: 100%;
display: flex;
align-items: center;
justify-content: center;
.btnItem{
display: inline-block;
padding: 4rpx 8rpx;
margin-top: 24rpx;
border-radius: 8rpx;
background: #1890FF;
color: #fff;
}
}
}
}
}
</style>

View File

@ -88,6 +88,7 @@ import request from '@/util/index.js'
import Store from "../../store/store";
import UniPop from '@/components/uni-popup.vue'
import moment from "moment";
import {wrapTreeNode} from "../../util/dateTime";
export default {
components: {UniPop},
data() {
@ -154,8 +155,54 @@ import moment from "moment";
this.handleGetPageData()
uni.setStorageSync('reolad','')
}
let isGoNewMonth = uni.getStorageSync('handleGetNewMonth')
let handleGetNewMonthObj = uni.getStorageSync('handleGetNewMonthObj')
let handleGetNewMonthTime = uni.getStorageSync('handleGetNewMonthTime')
console.log('isGoNewMonth',isGoNewMonth)
console.log('handleGetNewMonthObj',handleGetNewMonthObj)
console.log('handleGetNewMonthTime',handleGetNewMonthTime)
if(isGoNewMonth==='true'){
this.handleGetNewMonth(handleGetNewMonthObj,handleGetNewMonthTime)
uni.setStorageSync('handleGetNewMonth','')
uni.setStorageSync('handleGetNewMonthObj','')
uni.setStorageSync('handleGetNewMonthTime','')
}
},
methods:{
//
async handleGetNewMonth(obj,time){
uni.showLoading({
title: '正在加载...'
})
const req = {
ServerpartId: obj?.SERVERPART_ID,
ServerpartShopId: obj?.SERVERPARTSHOP_ID,
StartDate: this.$moment(time).format('YYYYMM'),
EndDate: this.$moment(time).format('YYYYMM'),
}
const data = await request.$webGet('EShangApiMain/BusinessProject/GetProjectAccountList',req)
console.log('data',data)
let res = data.Result_Data.List
let bigObj = {}
if(res && res.length>0){
res.forEach(item=>{
if(item.SETTLEMENT_TYPE===2 && this.$moment(item.ENDDATE).format('YYYYMM') === this.$moment(time).format('YYYYMM')){
if (item.SHOPROYALTY_ID === obj.SHOPROYALTY_ID) {
bigObj = item
}
}
})
}
let result = {
...bigObj,
Approvalstate: bigObj.SETTLEMENT_STATE === 0 ? 0 : bigObj.SETTLEMENT_STATE === 1 ? 9 : bigObj.SETTLEMENT_STATE === 2 ? 1 : '',
startTime: this.$moment(bigObj.SETTLEMENT_DATE).startOf('months').format('YYYY-MM-DD'),
endTime: this.$moment(bigObj.SETTLEMENT_DATE).endOf('months').format('YYYY-MM-DD'),
}
this.$util.toNextRoute('navigateTo', `/pages/settlementApproval/detail?obj=${JSON.stringify(result)}&staticMonth=${time}`)
uni.hideLoading()
},
//
handleChangeSelect(obj){
// 3
@ -180,6 +227,7 @@ import moment from "moment";
//
closePop(){
this.showPop = false
},
//
handleGetStartTime(e){
@ -204,9 +252,13 @@ import moment from "moment";
console.log('obj',obj)
let res = {
...obj,
Approvalstate: obj.SETTLEMENT_STATE === 0 ? 0 : obj.SETTLEMENT_STATE === 1 ? 9 : obj.SETTLEMENT_STATE === 2 ? 1 : ''
Approvalstate: obj.SETTLEMENT_STATE === 0 ? 0 : obj.SETTLEMENT_STATE === 1 ? 9 : obj.SETTLEMENT_STATE === 2 ? 1 : '',
// startTime: new Date(obj.STARTDATE).getTime() < new Date(obj.SETTLEMENT_DATE).getTime()?this.$moment(obj.SETTLEMENT_DATE).startOf('months').format('YYYY-MM-DD'):this.$moment(obj.STARTDATE).format('YYYY-MM-DD'),
// endTime: new Date(obj.ENDDATE).getTime() > new Date(obj.SETTLEMENT_DATE).getTime()?this.$moment(obj.SETTLEMENT_DATE).startOf('months').format('YYYY-MM-DD'):this.$moment(obj.STARTDATE).format('YYYY-MM-DD')
startTime: this.$moment(obj.SETTLEMENT_DATE).startOf('months').format('YYYY-MM-DD'),
endTime: this.$moment(obj.SETTLEMENT_DATE).endOf('months').format('YYYY-MM-DD'),
}
this.$util.toNextRoute('navigateTo', `/pages/settlementApproval/detail?obj=${JSON.stringify(res)}&staticMonth=${this.endDate}`)
this.$util.toNextRoute('navigateTo', `/pages/settlementApproval/detail?obj=${JSON.stringify(res)}&staticMonth=${res.SETTLEMENT_DATE}`)
},
async handleGetPageData(){
const req = {