Files
jshERP/jshERP-web/src/views/financial/mixins/FinancialModalMixin.js

449 lines
15 KiB
Java
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
import {findBySelectSup,findBySelectCus,findBySelectRetail,findBySelectOrgan,getPlatformConfigByKey,getAccount,
getPersonByType,findInOutItemByParam,getCurrentSystemConfig} from '@/api/api'
import { getAction } from '@/api/manage'
import { getCheckFlag, getNowFormatDateTime } from "@/utils/util"
import { USER_INFO } from "@/store/mutation-types"
import Vue from 'vue'
export const FinancialModalMixin = {
data() {
return {
action: '',
actionWithOrgan: false,
supList: [],
cusList: [],
retailList: [],
organList: [],
personList: [],
accountList: [],
billStatus: '0',
isCanCheck: true,
quickBtn: {
vendor: false,
customer: false,
account: false,
person: false,
inOutItem: false
},
/* 原始审核是否开启 */
checkFlag: true,
setTimeFlag: null,
spans: {
labelCol1: {span: 2},
wrapperCol1: {span: 22},
//1_5: 分为1.5列相当于占了2/3
labelCol1_5: { span: 3 },
wrapperCol1_5: { span: 21 },
labelCol2: {span: 4},
wrapperCol2: {span: 20},
labelCol3: {span: 6},
wrapperCol3: {span: 18},
labelCol6: {span: 12},
wrapperCol6: {span: 12}
},
};
},
created () {
let realScreenWidth = window.screen.width
this.width = realScreenWidth<1500?'1200px':'1550px'
this.minWidth = realScreenWidth<1500?1150:1500
},
mounted() {
document.getElementById(this.prefixNo).addEventListener('keydown', this.handleOkKey)
},
beforeDestroy() {
document.getElementById(this.prefixNo).removeEventListener('keydown', this.handleOkKey)
},
computed: {
readOnly: function() {
return this.action !== "add" && this.action !== "edit";
}
},
methods: {
// 快捷键
handleOkKey(e) {
const key = window.event.keyCode ? window.event.keyCode : window.event.which
if (key === 83 && e.ctrlKey) {
//保存 CTRL+S
this.handleOk()
e.preventDefault()
}
},
addInit(amountNum) {
getAction('/sequence/buildNumber').then((res) => {
if (res && res.code === 200) {
this.form.setFieldsValue({'billNo':amountNum + res.data.defaultNumber})
}
})
this.$nextTick(() => {
this.form.setFieldsValue({'billTime':getNowFormatDateTime(), 'totalPrice': 0, 'discountMoney': 0, 'changeAmount': 0})
})
this.$nextTick(() => {
getAccount({}).then((res)=>{
if(res && res.code === 200) {
for (const item of res.data.accountList) {
if(item.isDefault){
this.form.setFieldsValue({'accountId': item.id})
}
}
}
})
})
},
initSystemConfig() {
getCurrentSystemConfig().then((res) => {
if(res.code === 200 && res.data){
let multiBillType = res.data.multiBillType
let multiLevelApprovalFlag = res.data.multiLevelApprovalFlag
this.checkFlag = getCheckFlag(multiBillType, multiLevelApprovalFlag, this.prefixNo)
}
})
},
initSupplier() {
let that = this;
findBySelectSup({organId: this.model.organId}).then((res)=>{
if(res) {
that.supList = res;
}
});
},
initCustomer() {
let that = this;
findBySelectCus({organId: this.model.organId}).then((res)=>{
if(res) {
that.cusList = res;
}
});
},
initOrgan() {
let that = this;
findBySelectOrgan({organId: this.model.organId}).then((res)=>{
if(res) {
that.organList = res;
}
});
},
initRetail() {
let that = this;
findBySelectRetail({organId: this.model.organId}).then((res)=>{
if(res) {
that.retailList = res;
}
});
},
initPerson() {
let that = this;
getPersonByType({type:'财务员'}).then((res)=>{
if(res && res.code === 200) {
that.personList = res.data.personList;
}
})
},
initInOutItem(type) {
let that = this;
findInOutItemByParam({type:type}).then((res)=>{
if(res) {
for(let item of that.accountTable.columns){
if(item.key == 'inOutItemId') {
item.options = []
for(let i=0; i<res.length; i++) {
let inOutItemInfo = {};
inOutItemInfo.value = res[i].id + '' //注意-此处value必须为字符串格式
inOutItemInfo.text = res[i].name
inOutItemInfo.title = res[i].name
item.options.push(inOutItemInfo)
}
}
}
}
})
},
//账户-用于主表
initAccount(){
let that = this;
getAccount({}).then((res)=>{
if(res && res.code === 200) {
that.accountList = res.data.accountList;
}
})
},
//账户-用于明细
initDetailAccount(){
let that = this;
getAccount({}).then((res)=>{
if(res && res.code === 200) {
let list = res.data.accountList;
for(let item of that.accountTable.columns){
if(item.key == 'accountId') {
item.options = []
for(let i=0; i<list.length; i++) {
let accountInfo = {};
accountInfo.value = list[i].id + '' //注意-此处value必须为字符串格式
accountInfo.text = list[i].name
accountInfo.title = list[i].name
item.options.push(accountInfo)
}
}
}
}
})
},
handleSearchSupplier(value) {
let that = this
if(this.setTimeFlag != null){
clearTimeout(this.setTimeFlag);
}
this.setTimeFlag = setTimeout(()=>{
findBySelectSup({key: value}).then((res) => {
if(res) {
that.supList = res;
}
})
},500)
},
handleSearchCustomer(value) {
let that = this
if(this.setTimeFlag != null){
clearTimeout(this.setTimeFlag);
}
this.setTimeFlag = setTimeout(()=>{
findBySelectCus({key: value}).then((res) => {
if(res) {
that.supList = res;
}
})
},500)
},
handleSearchOrgan(value) {
let that = this
if(this.setTimeFlag != null){
clearTimeout(this.setTimeFlag);
}
this.setTimeFlag = setTimeout(()=>{
findBySelectOrgan({key: value}).then((res) => {
if(res) {
that.organList = res;
}
})
},500)
},
handleSearchRetail(value) {
let that = this
if(this.setTimeFlag != null){
clearTimeout(this.setTimeFlag);
}
this.setTimeFlag = setTimeout(()=>{
findBySelectRetail({key: value}).then((res) => {
if(res) {
that.supList = res;
}
})
},500)
},
//选择供应商或客户的触发事件
onChangeOrgan(value) {
this.accountTable.dataSource = []
},
addSupplier() {
this.$refs.vendorModalForm.add();
this.$refs.vendorModalForm.title = "新增";
this.$refs.vendorModalForm.disableSubmit = false;
},
addCustomer() {
this.$refs.customerModalForm.add();
this.$refs.customerModalForm.title = "新增客户(提醒:如果找不到新添加的客户,请到用户管理检查是否分配了该客户权限)";
this.$refs.customerModalForm.disableSubmit = false;
},
addAccount() {
this.$refs.accountModalForm.add();
this.$refs.accountModalForm.title = "新增结算账户";
this.$refs.accountModalForm.disableSubmit = false;
},
addPerson() {
this.$refs.personModalForm.add();
this.$refs.personModalForm.title = "新增经手人";
this.$refs.personModalForm.disableSubmit = false;
},
addInOutItem(type) {
this.$refs.inOutItemModalForm.add(type);
this.$refs.inOutItemModalForm.title = "新增收支项目";
this.$refs.inOutItemModalForm.disableSubmit = false;
},
vendorModalFormOk() {
this.initSupplier()
},
customerModalFormOk() {
this.initCustomer()
},
accountModalFormOk() {
this.initAccount()
},
personModalFormOk() {
this.initPerson()
},
inOutItemModalFormOk(type) {
this.initInOutItem(type)
},
workflowModalFormOk() {
this.close()
},
waitNeedListOk(organType, organId, selectBillRows) {
if(organId) {
this.form.setFieldsValue({'organId': organId})
}
if (selectBillRows && selectBillRows.length > 0) {
this.requestSubTableDataEx(selectBillRows, this.accountTable);
} else {
this.selectBeginNeed(organType)
}
},
onAdded(event) {
let that = this
const { row, target } = event
//自动下滑到最后一行
setTimeout(function(){
that.$refs.accountDataTable.resetScrollTop((target.rows.length+1)*that.$refs.accountDataTable.rowHeight)
},1000)
},
//删除一行或多行的时候触发
onDeleted(ids, target) {
target.recalcAllStatisticsColumns()
this.autoChangeAmount(target)
},
//单元值改变一个字符就触发一次
onValueChange(event) {
let that = this
const { type, row, column, value, target } = event
switch(column.key) {
case "eachAmount":
target.recalcAllStatisticsColumns()
that.autoChangeAmount(target)
break;
}
},
//改变本次欠款的值
autoChangeAmount(target) {
let allEachAmount = target.statisticsColumns.eachAmount-0
let discountMoney = this.form.getFieldValue('discountMoney')-0
if(!discountMoney) {
discountMoney = 0
}
let changeAmount = (allEachAmount-discountMoney).toFixed(2)
this.$nextTick(() => {
this.form.setFieldsValue({'totalPrice':allEachAmount, 'changeAmount':changeAmount})
});
},
//改变优惠金额
onChangeDiscountMoney(e) {
const value = e.target.value-0
let totalPrice = this.form.getFieldValue('totalPrice')-0
let changeAmount = (totalPrice-value).toFixed(2)
this.$nextTick(() => {
this.form.setFieldsValue({'changeAmount':changeAmount})
});
},
//选择欠款单据
debtBillListOk(selectBillRows) {
if(selectBillRows && selectBillRows.length>0) {
this.requestSubTableDataEx(selectBillRows, this.accountTable);
}
},
/** 查询某个tab的数据,给明细里面的金额赋值 */
requestSubTableDataEx(selectBillRows, tab, success) {
tab.loading = true
let listEx = []
let changeAmount = 0
for(let i=0; i<selectBillRows.length; i++){
let info = selectBillRows[i]
info.billNumber = info.number
info.needDebt = info.needDebt
info.eachAmount = info.debt
if(info.eachAmount != 0) {
changeAmount += info.eachAmount-0
listEx.push(info)
}
}
tab.dataSource = listEx
this.$nextTick(() => {
this.form.setFieldsValue({'totalPrice':changeAmount.toFixed(2), 'changeAmount':changeAmount.toFixed(2)})
});
typeof success === 'function' ? success(res) : ''
tab.loading = false
},
//选择期初
selectBeginNeed(type) {
let that = this
let info = type === '供应商'? '付款':'收款'
let organId = this.form.getFieldValue('organId')
if(organId){
this.$confirm({
title: "确认操作",
content: "是否选择期初金额,对期初进行" + info + "?",
onOk: function () {
let listEx = []
let info = {}
info.billNumber = 'QiChu'
getAction('/supplier/getBeginNeedByOrganId', {'organId': organId}).then((res)=>{
if(res.code === 200){
info.needDebt = res.data.needDebt?res.data.needDebt:0
info.finishDebt = res.data.finishDebt
info.eachAmount = res.data.eachAmount
listEx.push(info)
that.accountTable.dataSource = listEx
let changeAmount = info.eachAmount
if(changeAmount) {
changeAmount = changeAmount.toFixed(2)
}
that.$nextTick(() => {
that.form.setFieldsValue({'totalPrice':changeAmount, 'changeAmount':changeAmount})
})
}else{
that.$message.info(res.data)
}
})
}
})
} else {
that.$message.warning('请选择' + type + '');
}
},
//选择-待收款或者待付款
handleWaitNeed(type) {
this.$refs.waitNeedList.show(type)
},
//保存并审核
handleOkAndCheck() {
this.billStatus = '1'
this.handleOk()
},
//发起流程
handleWorkflow() {
if(this.model && this.model.billNo) {
getPlatformConfigByKey({ "platformKey": "send_workflow_url" }).then((res) => {
if (res && res.code === 200) {
let sendWorkflowUrl = res.data.platformValue + '&no=' + this.model.billNo + '&type=2'
this.$refs.modalWorkflow.show(this.model, sendWorkflowUrl, this.model.billNo, 2, 320)
this.$refs.modalWorkflow.title = "发起流程"
}
})
} else {
this.$message.warning('请先保存单据后再提交流程');
}
},
//加载快捷按钮:供应商、客户、结算账户、经手人
initQuickBtn() {
let btnStrList = Vue.ls.get('winBtnStrList') //按钮功能列表 JSON字符串
if (btnStrList) {
for (let i = 0; i < btnStrList.length; i++) {
if (btnStrList[i].btnStr) {
this.quickBtn.vendor = btnStrList[i].url === '/system/vendor'?btnStrList[i].btnStr.indexOf(1)>-1:this.quickBtn.vendor
this.quickBtn.customer = btnStrList[i].url === '/system/customer'?btnStrList[i].btnStr.indexOf(1)>-1:this.quickBtn.customer
this.quickBtn.account = btnStrList[i].url === '/system/account'?btnStrList[i].btnStr.indexOf(1)>-1:this.quickBtn.account
this.quickBtn.person = btnStrList[i].url === '/system/person'?btnStrList[i].btnStr.indexOf(1)>-1:this.quickBtn.person
this.quickBtn.inOutItem = btnStrList[i].url === '/system/in_out_item'?btnStrList[i].btnStr.indexOf(1)>-1:this.quickBtn.inOutItem
}
}
}
}
}
}