Commit 06ab0949 authored by zhengke's avatar zhengke

新增车资分摊管理页面

parent ed42694c
<style>
.edHeight {
display: block !important;
height: 300px;
}
.FinaceItem span{
display: inline-block;
color:blue;
margin-right:10px;
padding-right: 10px;
border-right:1px solid #d1d1d1;
}
.FinaceItem span:last-child{
border:0;
}
.BusApportionManagement ._bus_edit {
overflow: auto;
display: none;
position: absolute;
font-family: "PingFangSc-Fine";
bottom: 0;
left: 0;
border-top: 3px solid #38425d;
background-color: #ffffff;
padding: 10px;
width: 100%;
}
.teamNumCon{
width:100%;
min-height:50px;
margin:0 110px;
}
.teamNumList{
display:inline-block;
padding:3px 8px;
border-radius:4px;
font-size:12px;
background-color: #EEEEEE;
position: relative;
margin-right:20px;
}
.teamNumList i{
color:#C5C5C5;
position: absolute;
right:-10px;
top:-10px;
}
.teamNumList i:hover{
color:#CD2929;
cursor: pointer;
}
</style>
<template>
<div class="flexOne BusApportionManagement">
<div class="query-box">
<ul>
<li>
<input type="button" class="normalBtn" value="车资导出"/>
<input type="button" class="normalBtn" @click="getInfo()" value="新增"/>
</li>
</ul>
</div>
<v-table
v-if="isReady"
is-horizontal-resize
column-width-drag
style="width:100%"
:columns="columns"
:table-data="dataList"
:filter-method="filterMethod"
:total="total"
:pageSize="msg.pageSize"
:pageIndex="msg.pageIndex"
:multiple-sort="multipleSort"
:is-loading="loading"
sort-always
@sort-change="sortChange"
@on-custom-comp='customCompFunc'
></v-table>
<div class="_bus_edit _scrollbar" v-if="addShow" :class="addShow==true?'edHeight':''">
<el-row>
<el-col :span="20">
<p class="_tit">添加分摊</p>
</el-col>
<el-col :span="4" class="_add_saveBtn">
<button
type="button"
class="normalBtn"
@click="submitForm('addMsg',1)"
>{{$t('pub.saveBtn')}}</button>
<button
class="hollowFixedBtn"
type="button"
@click="resetForm('addMsg'),addShow=false"
>{{$t('pub.cancelBtn')}}</button>
</el-col>
</el-row>
<el-form
class="_info_box clearfix"
:model="addMsg"
ref="addMsg"
:rules="rules"
label-width="110px"
>
<el-row>
<el-col :span="4" :gutter="35">
<el-form-item label="费用类型">
<el-select v-model="isCked" disabled>
<el-option label="车资" value=1></el-option>
</el-select>
</el-form-item>
</el-col>
<el-col :span="4" :gutter="35">
<el-form-item label="单据类型">
<el-select v-model="isCked" disabled>
<el-option label="参团" value=1></el-option>
</el-select>
</el-form-item>
</el-col>
<el-col :span="4" :gutter="35">
<el-form-item label="供应商">
<el-select v-model="suppierCked" disabled>
<el-option v-for='item in ClientTypeList'
:label='item.Name'
:value='item.ID'
:key='item.ID'>
</el-option>
</el-select>
</el-form-item>
</el-col>
<el-col :span="4" :gutter="35">
<el-form-item label="客户名称">
<el-select filterable v-model='customId' placeholder="客户名称" @change="GetClientAccountList(customId)" class="w200 _border_b_1">
<el-option :value="0" label="不限"></el-option>
<el-option v-for='item in ClientAccountList'
:label='item.Name'
:value='item.ID'
:key='item.ID'>
</el-option>
</el-select>
</el-form-item>
</el-col>
<el-col :span="4" :gutter="35">
<el-form-item label="付款账户">
<el-select filterable v-model='addMsg.ClientID' placeholder="请选择付款账户" class="w200 _border_b_1">
<el-option :value="0" label="不限"></el-option>
<el-option v-for='item in ClientAccountListS'
:label='item.allName'
:value='item.ID'
:key='item.ID'>
</el-option>
</el-select>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="4" :gutter="35">
<el-form-item label="车配号" prop="CarNum">
<el-date-picker class="w200"
v-model="Year"
type="year"
placeholder="选择年">
</el-date-picker>
</el-form-item>
</el-col>
<el-col :span="4" :gutter="35">
<el-form-item>
<el-input v-model="addMsg.CarNum" maxlength="20"></el-input>
</el-form-item>
</el-col>
<el-col :span="4" :gutter="35">
<button type="button" class="normalBtn" style="margin:5px 0 0 50px;" @click="getTeamInfo">筛选团队</button>
</el-col>
</el-row>
<el-row>
<el-col :span="4" :gutter="35">
<el-form-item label="金额" prop="f_UnitPrice">
<el-input v-model="addMsg.f_UnitPrice" placeholder="请输入" @keyup.native="checkPrice(addMsg,'f_UnitPrice'),getTotalMoney()" maxlength="20"></el-input>
</el-form-item>
</el-col>
<el-col :span="4" :gutter="35">
<el-form-item label="汇率">
<el-input v-model="addMsg.f_rate" placeholder="请输入" @keyup.native="checkRate(addMsg,'f_rate')" maxlength="20" class="w90"></el-input>
<el-input disabled class="w100" v-model="TotalMoney"></el-input>
</el-form-item>
</el-col>
<el-col :span="4" :gutter="35">
<el-form-item label="币种">
<el-select filterable v-model='addMsg.f_currency' placeholder="请选择币种" @change="getRate(addMsg.f_currency)" class=" _border_b_1">
<!-- <el-option :value="0" label="不限"></el-option> -->
<el-option v-for='item in coinGetList'
:label='item.Name'
:value='item.ID'
:key='item.ID'>
</el-option>
</el-select>
</el-form-item>
</el-col>
<el-col :span="4" :gutter="35">
<el-form-item label="总价">
<el-input disabled v-model="TotalMoney"></el-input>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="4" :gutter="35">
<el-form-item label="数量" prop="CarNumber">
<el-input v-model="addMsg.CarNumber" placeholder="请输入" @keyup.native="checkInteger(addMsg,'CarNumber'),getSingelePrice()" maxlength="20"></el-input>
</el-form-item>
</el-col>
<el-col :span="4" :gutter="35">
<el-form-item label="单价">
<el-input v-model="addMsg.CarUnitPrice" disabled></el-input>
</el-form-item>
</el-col>
<el-col :span="4" :gutter="35">
<el-form-item label="接机">
<el-input v-model="addMsg.JJPrice" @keyup.native="checkInteger(addMsg,'JJPrice'),getSingelePrice()" placeholder="请输入"></el-input>
</el-form-item>
</el-col>
<el-col :span="4" :gutter="35">
<el-form-item label="回送">
<el-input v-model="addMsg.HSPrice" placeholder="请输入" @keyup.native="checkInteger(addMsg,'HSPrice'),getSingelePrice()"></el-input>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="4" :gutter="35">
<el-form-item label="送机">
<el-input v-model="addMsg.SJPrice" placeholder="请输入" @keyup.native="checkInteger(addMsg,'SJPrice'),getSingelePrice()"></el-input>
</el-form-item>
</el-col>
<el-col :span="4" :gutter="35">
<el-form-item label="转机">
<el-input v-model="addMsg.ZJiPrice" placeholder="请输入" @keyup.native="checkInteger(addMsg,'ZJiPrice'),getSingelePrice()"></el-input>
</el-form-item>
</el-col>
<el-col :span="4" :gutter="35">
<el-form-item label="追加">
<el-input v-model="addMsg.ZJPrice" placeholder="请输入" @keyup.native="checkInteger(addMsg,'ZJPrice'),getSingelePrice()"></el-input>
</el-form-item>
</el-col>
<el-col :span="4" :gutter="35">
<el-form-item label="到期结算日">
<el-date-picker type="date" class="w200" v-model="addMsg.PayDate" value-format="yyyy-MM-dd"></el-date-picker>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="4" :gutter="35">
<el-form-item label="团队编号">
<el-input placeholder="请输入" v-model="TCIDList.TCID"></el-input>
</el-form-item>
</el-col>
<el-col :span="4" :gutter="35">
<button type="button" class="normalBtn" style="margin:5px 0 0 60px;" @click="checkIsUse">添加团号</button>
</el-col>
</el-row>
<el-row>
<el-col :span="20" :gutter="35">
<div class="teamNumCon">
<span class="teamNumList" v-for="(item,index) in allTeamList">{{item.TCID}} <i @click="removeTeam(index)" class="iconfont icon-quxiao"></i></span>
</div>
</el-col>
</el-row>
</el-form>
</div>
</div>
</template>
<script>
import Vue from 'vue'
export default {
data(){
return {
columns: [],
remoteLoading:false,
total: 0,
isReady: false,
multipleSort: false,
loading: true,
msg: {
pageSize:20,
pageIndex:1,
CarDistribution:'',
StartTime:'',
EndTime:''
},
addMsg:{
TCIDStr:'',
CarNum:'',
f_UnitPrice:'',
CarNumber:'',
CarUnitPrice:'',
JJPrice:'',
HSPrice:'',
ZJPrice:'',
SJPrice:'',
ZJiPrice:'',
f_currency:1,
f_rate:'',
ClientID:0,
PayDate:''
},
dataList: [],
total: 0,
currentPage: 1,
loading: true,
text: "",
dialogTitle: "",
noData: false,
addShow: false,
//验证规则
rules:{
f_UnitPrice: [{ required: true, message: "请输入金额", trigger: "blur" }],
CarNumber: [{ required: true, message: "请输入数量", trigger: "blur" }],
},
isCked:'1',
//供应商下拉
ClientTypeList:[],
//账户类型
ClientAccountList:[],
//付款账户
ClientAccountListS:[],
//供应商默认选中
suppierCked:4,
//客户名称选中ID
customId:0,
//车配号 年
Year:'',
//币种下拉
coinGetList:[],
//总价
TotalMoney:'',
//全部团队编号
allTeamList:[],
//团队编号
TCIDList:{
TCID:'',
TCNUM:""
},
};
},
methods: {
initColums() {
this.isReady = false;
let that = this;
let License = {
title: "车牌号",
field: "CarDistribution",
width: 80,
titleAlign: "left",
columnAlign: "left",
isResize: true,
// result: "",
// filterMultiple: false,
// filters: [{}],
// type: "text"
};
let ShareDate = {
field: "CreateTime",
title: "分摊日期",
width: 40,
titleAlign: "left",
columnAlign: "left",
isResize: true,
// filterMultiple: false,
// filters: [{}],
// result: "",
// type: "select"
};
let Details = {
field: "Description",
title: "详情",
width: 80,
titleAlign: "left",
columnAlign: "left",
isResize: true,
// result: "",
// filterMultiple: false,
// filters: [{}],
// type: "text"
};
let ShareTeam = {
field: "TCIDList",
title: "分摊的团",
titleAlign: "left",
columnAlign: "left",
isResize: true,
width: 80,
componentName:'table-teamList'
// orderBy: "desc",
// filterMultiple: false,
// filters: [{}],
// type: "text"
};
let ProductDoc = {
field: "FinanceIdList",
title: "产生单据",
titleAlign: "left",
columnAlign: "left",
isResize: true,
width: 80,
componentName:'table-docment',
// filterMultiple: true,
// result: [],
// filters: [{}],
// type: "text"
};
let opera = {
title: "操作",
field: "CreateByName",
titleAlign: "left",
columnAlign: "left",
width: 80,
isResize: true,
};
this.columns = [];
this.columns.push(License);
this.columns.push(ShareDate);
this.columns.push(Details);
this.columns.push(ShareTeam);
this.columns.push(ProductDoc);
this.columns.push(opera);
this.isReady = true;
},
customCompFunc(params){
// if (params.type === 'delete'){
// this.financeinfoRemove(params.id,params.alias)
// }else if (params.type === 'edit'){
// this.editCurency(params.id)
// this.text='修改'
// this.addShow=true
// this.addCuren=true
// }
},
sortChange(param) {
// if (param.Royalty != "") {
// this.msg.OrderBy = `Royalty ${param.Royalty}`;
// } else if (param.Initialbalance != "") {
// this.msg.OrderBy = `Initialbalance ${param.Initialbalance}`;
// }
//this.getList();
},
filterMethod() {
// this.msg.License = filters.License;
//this.msg.Details = filters.Details;
},
handleCurrentChanges(val) {
//this.msg.pageIndex = val;
// this.getList();
},
getList() {
this.loading = true;
this.apipost(
"bus_get_GetCarfareApportionPageList",
this.msg,
res => {
this.loading = false;
if (res.data.resultCode == 1) {
console.log(res,'resssss');
this.dataList = res.data.data.pageData;
this.total = res.data.data.count;
} else {
this.Error(res.data.message);
}
},
null
);
},
cancelEdit(){
},
initAddMsg() {
//初始化添加、修改数据
let newMsg = {
TCIDStr:'',
CarNum:'',
f_UnitPrice:'',
CarNumber:'',
CarUnitPrice:'',
JJPrice:'',
HSPrice:'',
ZJPrice:'',
SJPrice:'',
ZJiPrice:'',
f_currency:1,
f_rate:'',
ClientID:0,
PayDate:''
};
this.addMsg = newMsg;
},
resetForm(formName) {
this.initAddMsg();
this.$refs[formName].resetFields();
},
//获取供应商
financeinfo_post_GetClientTypeList(){ // 获取对象类型
this.apipost('financeinfo_post_GetClientTypeList',{}, res => {
if(res.data.resultCode == 1) {
this.ClientTypeList = res.data.data;
console.log(res.data.data,'ssssssssss');
}
}, err => {})
},
//获取客户类型
financeinfo_post_GetClientAccountList(){ //获取付款 对象类型 新增用
let msg = {
ID:0,
Type:4,
ObjID:0,
CardNum:''
}
this.apipost('financeinfo_post_GetClientAccountList',msg, res => {
if(res.data.resultCode == 1) {
let data = res.data.data;
let ClientAccountList = [];
data.forEach(x=>{
let obj = {
ID:x.ID,
Name:x.AccountHolder + `(${x.AccountAlias})`,
Nom:x.CardNum,
OpenBankName:x.OpenBankName,
ObjID:x.ObjID,
}
ClientAccountList.push(obj)
})
this.ClientAccountList = ClientAccountList;
}
}, err => {})
},
GetClientAccountList(i){ //获取客户名称并且根据费用类型和付款对象获取客户账号
let msg = {
ID:i,
Type:4,
ObjID:0,
CardNum:''
}
this.addMsg.ClientID=0;
this.apipost('financeinfo_post_GetClientAccountList',msg, res => {
if(res.data.resultCode == 1) {
let data = res.data.data;
let ClientAccountList = [];
if(i){
data.forEach(x=>{
let obj = {
ID:x.ID,
Name:x.AccountHolder + + `(${x.AccountAlias})`,
Nom:x.CardNum,
OpenBankName:x.OpenBankName,
allName:x.CardNum+" "+x.OpenBankName,
ObjID:x.ObjID,
}
ClientAccountList.push(obj)
})
this.ClientAccountListS = ClientAccountList;
console.log(this.ClientAccountListS,'ClientAccountListS');
}
}
}, err => {})
},
//获取币种
financeinfo_post_GetList(){
this.apipost('financeinfo_post_GetList',{Name:''}, res => {
if(res.data.resultCode == 1) {
this.coinGetList = res.data.data;
}
}, err => {})
},
getRate(ID){ // 根据选择币种获取汇率
this.coinGetList.forEach(x=>{
if(x.ID==ID){
this.addMsg.f_rate=x.CurrentRate;
}
})
this.getTotalMoney();
},
//点击新增
getInfo(){
this.addShow = true;
var rate = this.addMsg.f_currency;
this.getRate(rate);
},
//输入金额得到总价
getTotalMoney(){
this.TotalMoney = this.addMsg.f_UnitPrice*this.addMsg.f_rate;
},
//输入数量 得到单价
getSingelePrice(){
if(this.addMsg.f_UnitPrice==''||this.addMsg.CarNumber==''){
this.addMsg.CarUnitPrice=0.00
}else{
if(this.addMsg.JJPrice==''){
this.addMsg.JJPrice=0;
}
if(this.addMsg.HSPrice==''){
this.addMsg.HSPrice=0;
}
if(this.addMsg.ZJPrice==''){
this.addMsg.ZJPrice=0;
}
if(this.addMsg.SJPrice==''){
this.addMsg.SJPrice=0;
}
if(this.addMsg.ZJiPrice==''){
this.addMsg.ZJiPrice=0;
}
var zong = parseFloat(this.addMsg.f_UnitPrice);
var total = parseInt(this.addMsg.JJPrice)+parseInt(this.addMsg.HSPrice)+parseInt(this.addMsg.ZJPrice)+
parseInt(this.addMsg.SJPrice)+parseInt(this.addMsg.ZJiPrice);
this.addMsg.CarUnitPrice = ((zong-total)/this.addMsg.CarNumber).toFixed(2);
}
},
//筛选团队
getTeamInfo(){
var Year = new Date(this.Year);
let msg = {
Year:Year.getFullYear(),
CarNum:this.addMsg.CarNum
}
this.apipost('bus_get_ScreeningTravelForCarNum',msg, res => {
if(res.data.resultCode == 1) {
this.allTeamList = res.data.data;
}else{
this.Error(res.data.message);
}
}, err => {})
},
//移除团队
removeTeam(index){
this.allTeamList.splice(index,1);
},
//根据团号 验证该团号是否可以
checkIsUse(){
let msg = {
TCID:this.TCIDList.TCID
}
this.apipost('bus_get_ValidataTravelState',msg, res => {
if(res.data.resultCode == 1) {
this.allTeamList.push(this.TCIDList);
}else{
this.Error(res.data.message);
}
}, err => {})
},
//保存
submitForm(addMsg) {
//提交创建、修改表单
this.$refs[addMsg].validate(valid => {
if (valid) {
this.saveInfo();
} else {
console.log("error submit!!");
return false;
}
});
},
//保存信息
saveInfo(){
var newArr = [];
this.allTeamList.forEach(x=>{
newArr.push(x.TCID);
})
var str = "";
for(var i=0;i<newArr.length;i++){
str += newArr[i] + ",";
}
//去掉最后一个逗号(如果不需要去掉,就不用写)
if (str.length > 0) {
str = str.substr(0,str.length - 1);
}
this.addMsg.TCIDStr = str;
this.addMsg.CarNumber = parseInt(this.addMsg.CarNumber);
this.addMsg.JJPrice = parseFloat(this.addMsg.JJPrice);
this.addMsg.HSPrice = parseFloat(this.addMsg.HSPrice);
this.addMsg.ZJPrice = parseFloat(this.addMsg.ZJPrice);
this.addMsg.SJPrice = parseFloat(this.addMsg.SJPrice);
this.addMsg.ZJiPrice = parseFloat(this.addMsg.ZJiPrice);
this.addMsg.f_rate = parseFloat(this.addMsg.f_rate);
this.apipost('bus_post_SetCarfareApportion',this.addMsg, res => {
if(res.data.resultCode == 1) {
this.addShow = false;
this.Success(res.data.message);
}else{
this.Error(res.data.message);
}
}, err => {})
},
},
mounted(){
this.getList();
this.initColums();
this.financeinfo_post_GetClientTypeList();
this.financeinfo_post_GetClientAccountList();
this.financeinfo_post_GetList();
},
created(){
Vue.component('table-docment',{ //产生单据样式
template:`<div class='FinaceItem'>
<span v-for='item in rowData.FinanceIdList'>{{item}}</span>
</div>`,
props:{
rowData:{
type:Object
},
field:{
type:String
},
index:{
type:Number
}
},
methods:{
}
})
Vue.component('table-teamList',{ //分摊的团样式
template:`<div class='FinaceItem'>
<span v-for='item in rowData.TCIDList'>{{item}}</span>
</div>`,
props:{
rowData:{
type:Object
},
field:{
type:String
},
index:{
type:Number
}
},
methods:{
}
})
}
}
</script>
......@@ -1275,6 +1275,13 @@ export default {
title: '车辆报价'
},
}, {
path: '/BusApportionManagement',
name: 'BusApportionManagement',
component: resolve => require(['@/components/busManagement/BusApportionManagement'], resolve),
meta: {
title: '车资分摊管理'
},
},{
path: '/visaList',//签证列表
name: 'visaList',
component: resolve => require(['@/components/VisaCenter/visaList'], resolve),
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment