liuhj пре 1 година
родитељ
комит
ff3a1e4a90

+ 60 - 14
src/components/Finance/Currency.vue

@@ -115,6 +115,14 @@
                             </div>
                         </div>
                     </el-tab-pane> -->
+                    <el-tab-pane label="费用超支" name="overspend">
+                        <div class="ipt-inif">
+                            <div class="ipt" v-for="(item,index) in overspendCurrencyArr" :key="index">
+                                <label>{{item.currencyName}}({{item.currencyCode}}):</label>
+                                <el-input v-model="item.rate" oninput="value=value.replace(/[^\d.]/g,'')" placeholder="请输入内容"></el-input>
+                            </div>
+                        </div>
+                    </el-tab-pane>
                 </el-tabs>
             </div>
         </div>
@@ -138,6 +146,7 @@ export default {
         ticketCurrencyArr:[],//机票预订
         paymentsCurrencyArr:[],//团组增减款项
         breakfastCurrencyArr:[],//酒店早餐
+        overspendCurrencyArr:[],//超支费用
         groupInfo:{},
         allcurrency:[],
         hotel:{},//酒店预订
@@ -148,7 +157,8 @@ export default {
         insurance:{},//团组客户保险
         ticket:{},//机票预订
         payments:{},//团组增减款项
-        breakfast:{}//酒店早餐
+        breakfast:{},//酒店早餐
+        overspend:{}//超支费用
       };
     },
     methods: {
@@ -191,6 +201,7 @@ export default {
                 that.ticketCurrencyArr = JSON.parse(JSON.stringify(res.data.data.teamRateData));
                 that.paymentsCurrencyArr = JSON.parse(JSON.stringify(res.data.data.teamRateData));
                 that.breakfastCurrencyArr = JSON.parse(JSON.stringify(res.data.data.teamRateData));
+                that.overspendCurrencyArr = JSON.parse(JSON.stringify(res.data.data.teamRateData));
                 if(that.state1==''){
                     that.state1=res.data.data.groupData[0].id;
                 }
@@ -215,7 +226,11 @@ export default {
                 diid:that.state1
             }
         }).then(function (res) {
+            if(res.data.code!=200){
+                return
+            }
             that.groupInfo=res.data.data.groupInfo;
+            console.log(res)
             that.allcurrency=res.data.data.teamRateData;
             for(let j=0;j<that.allcurrency.length;j++){
                 if(that.allcurrency[j].cTableId == 76) {
@@ -245,6 +260,9 @@ export default {
                 if(that.allcurrency[j].cTableId == 751) {
                     that.breakfast=that.allcurrency[j]
                 }
+                if(that.allcurrency[j].cTableId == 1015) {
+                    that.overspend=that.allcurrency[j]
+                }
             }
             console.log(that.hotel)
             for(let x=0;x<that.hotelCurrencyArr.length;x++){
@@ -311,6 +329,13 @@ export default {
                     }
                 }
             }
+            for(let x=0;x<that.overspendCurrencyArr.length;x++){
+                for(let y=0;y<that.overspend.teamRates.length;y++){
+                    if(that.overspendCurrencyArr[x].currencyCode==that.overspend.teamRates[y].currencyCode){
+                        that.overspendCurrencyArr[x].rate=that.overspend.teamRates[y].rate
+                    }
+                }
+            }
             console.log(that.allcurrency)
         })
       },
@@ -379,6 +404,14 @@ export default {
                 breakfastCurrencyArrer.push(this.breakfastCurrencyArr[l])
             }
         }
+        var overspendCurrencyArrer=[]
+        for(let l =0;l<this.overspendCurrencyArr.length;l++){
+            if(this.overspendCurrencyArr[l].rate!=0){
+                delete this.overspendCurrencyArr[l].id
+                overspendCurrencyArrer.push(this.overspendCurrencyArr[l])
+            }
+        }
+
         console.log(hotelCurrencyArrer)
         var url = "/api/Financial/PostGroupRateUpdate"
         var that = this
@@ -434,6 +467,11 @@ export default {
                         cTable:751,
                         teamRates:breakfastCurrencyArrer
                     },
+                    {
+                        id:3759,
+                        cTable:1050,
+                        teamRates:overspendCurrencyArrer
+                    },
                 ]
             }
             console.log(JSON.stringify(data))
@@ -451,58 +489,66 @@ export default {
                 diId:that.state1,
                 teamRateUpdateInfos:[
                     {
-                        id:3750,
+                        id:0,
                         cTable:76,
                         teamRates:hotelCurrencyArrer
                     },
                     {
-                        id:3751,
+                        id:0,
                         cTable:77,
                         teamRates:itineraryCurrencyArrer
                     },
                     {
-                        id:3752,
+                        id:0,
                         cTable:79,
                         teamRates:guideCurrencyArrer
                     },
                     {
-                        id:3753,
+                        id:0,
                         cTable:80,
                         teamRates:visaCurrencyArrer
                     },
                     {
-                        id:3754,
+                        id:0,
                         cTable:81,
                         teamRates:inviteCurrencyArrer
                     },
                     {
-                        id:3755,
+                        id:0,
                         cTable:82,
                         teamRates:insuranceCurrencyArrer
                     },
                     {
-                        id:3756,
+                        id:0,
                         cTable:85,
                         teamRates:ticketCurrencyArrer
                     },
                     {
-                        id:3757,
+                        id:0,
                         cTable:98,
                         teamRates:paymentsCurrencyArrer
                     },
                     {
-                        id:3758,
+                        id:0,
                         cTable:751,
                         teamRates:breakfastCurrencyArrer
                     },
+                    {
+                        id:0,
+                        cTable:1015,
+                        teamRates:overspendCurrencyArrer
+                    },
+                    
                 ]
             }
         }).then(function (res) {
             console.log(res)
-            that.$message({
-                message: res.data.msg,
-                type: 'success'
-            });
+            if(res.data.code==200){
+                that.$message({
+                    message: res.data.msg,
+                    type: 'success'
+                });
+            }
         })
       }
     },

+ 194 - 84
src/components/Finance/Overspend.vue

@@ -5,14 +5,11 @@
                 <div class="head-ipt">
                     <div class="name-ipt">
                         <label>团组名称:</label>
-                        <el-select style="width:250px" v-model="gname" filterable placeholder="请选择">
-                            <!-- <el-option
-                              v-for="item in restaurants"
-                              :key="item.id"
-                              :label="item.groupName"
-                              :value="item.id">
-                            </el-option> -->
-                          </el-select>
+                        <el-select @change="changegroup" style="width:250px" v-model="diId" filterable
+                            placeholder="请选择">
+                            <el-option v-for="item in options" :key="item.id" :label="item.teamName" :value="item.id">
+                            </el-option>
+                        </el-select>
                     </div>
                     <div class="preserve-btn">
                         <el-button class="preserve" type="primary">导出超支明细</el-button>
@@ -22,76 +19,72 @@
                 <div class="overspend-info">
                     <div class="overspend-info-li">
                         <label>团 号:</label>
-                        <span>{{1}}</span>
+                        <span>{{headtitle.tourCode}}</span>
                     </div>
                     <div class="overspend-info-li">
                         <label>客 户:</label>
-                        <span>{{1}}</span>
+                        <span>{{headtitle.clientName}}</span>
                     </div>
                     <div class="overspend-info-li">
                         <label>出访国家:</label>
-                        <span>{{1}}</span>
+                        <span>{{headtitle.visitCountry}}</span>
                     </div>
                     <div class="overspend-info-li">
                         <label>起止日期:</label>
-                        <span>{{1}} ~ {{1}}</span>
+                        <span>{{headtitle.visitStartDate}} ~ {{headtitle.visitStartDate}}</span>
                     </div>
                     <div class="overspend-info-li">
                         <label>天数/人数:</label>
-                        <span>{{1}}天/{{1}}人</span>
+                        <span>{{headtitle.visitDays}}天/{{headtitle.visitPNumber}}人</span>
                     </div>
                 </div>
             </div>
             <div>
-                <el-table
-                    :data="tableData"
-                    border
-                    style="width: 100%">
-                    <el-table-column
-                    prop="date"
-                    label="序号"
-                    width="100">
+                <el-table :data="tableData" border style="width: 100%">
+                    <el-table-column prop="rowNumber" label="序号" width="100">
                     </el-table-column>
-                    <el-table-column
-                    prop="name"
-                    label="费用名称"
-                    width="180">
+                    <el-table-column prop="priceName" label="费用名称" width="200">
                     </el-table-column>
-                    <el-table-column
-                    prop="name"
-                    label="费用类型"
-                    width="180">
+                    <el-table-column prop="priceTypeStr" label="费用类型" width="300">
                     </el-table-column>
-                    <el-table-column
-                    prop="name"
-                    label="费用"
-                    width="180">
+                    <el-table-column prop="priceSumStr" label="费用" width="180">
                     </el-table-column>
-                    <el-table-column
-                    prop="name"
-                    label="附件"
-                    width="180">
+                    <el-table-column prop="priceStr" label="单价" width="180">
                     </el-table-column>
-                    <el-table-column
-                    prop="name"
-                    label="操作人"
-                    width="90">
+                    <el-table-column prop="priceCount" label="数量" width="80">
                     </el-table-column>
-                    <el-table-column
-                    prop="name"
-                    label="操作时间"
-                    width="100">
+                    <!-- <el-table-column prop="filePath" label="附件" width="180">
+                    </el-table-column> -->
+                    <el-table-column prop="createUserIdStr" label="操作人" width="90">
                     </el-table-column>
-                    <el-table-column
-                    prop="name"
-                    label="是否审核"
-                    width="100">
+                    <el-table-column prop="priceDt" label="产生日期" width="160">
                     </el-table-column>
-                    <el-table-column
-                    prop="address"
-                    label="操作">
+                    <el-table-column prop="isAuditGMStr" label="是否审核" width="100">
+                    </el-table-column>
+                    <el-table-column prop="address" label="操作">
+                        <template slot-scope="scope">
+                            <el-button @click.native.prevent="revisionbtn(scope.$index,scope.row,tableData)" type="primary"
+                                size="small">
+                                编 辑
+                            </el-button>
+                            <el-button type="danger" @click.native.prevent="deleteRow(scope.$index,scope.row,tableData)" 
+                                size="small">
+                                删 除
+                            </el-button>
+                        </template>
                     </el-table-column>
                 </el-table>
+                <div v-if="dataCount>=10" class="block" style="margin-top: 15px;">
+                    <el-pagination align='center' 
+                        @size-change="handleSizeChange" 
+                        @current-change="handleCurrentChange"
+                        :current-page="pageIndex" 
+                        :page-sizes="[10,12,15,20]" 
+                        :page-size="pageSize" 
+                        layout="total, sizes, prev, pager, next, jumper" 
+                        :total="dataCount">
+                    </el-pagination>
+                </div>
             </div>
         </div>
     </div>
@@ -103,31 +96,32 @@ export default {
         pageId:'',
         token:'',
         userId:'',
+        pageIndex:1,
+        pageSize:10,
+        dataCount:0,
         gname:'',
         cTable:'',
-        diId:10064,
-        tableData: [{
-          date: '2016-05-02',
-          name: '王小虎',
-          address: '上海市普陀区金沙江路 1518 弄'
-        }, {
-          date: '2016-05-04',
-          name: '王小虎',
-          address: '上海市普陀区金沙江路 1517 弄'
-        }, {
-          date: '2016-05-01',
-          name: '王小虎',
-          address: '上海市普陀区金沙江路 1519 弄'
-        }, {
-          date: '2016-05-03',
-          name: '王小虎',
-          address: '上海市普陀区金沙江路 1516 弄'
-        }]
+        DiId:0,
+        diId:0,
+        tableData: [],
+        options:[],
+        headtitle:{},
       }
     },
     methods:{
-         //获取CTable
-         PostPageLinkCTable(){
+         //每页条数改变时触发 选择一页显示多少行
+         handleSizeChange(val) {
+            this.pageIndex = 1;
+            this.pageSize = val;
+            this.PostGroupExtraCost_Search()
+        },
+        //当前页改变时触发 跳转其他页
+        handleCurrentChange(val) {
+            this.pageIndex = val;
+            this.PostGroupExtraCost_Search()
+        },
+        //获取CTable
+        PostPageLinkCTable(){
             var url = "/api/Business/PostPageLinkCTable"
             var that = this
             this.$axios({
@@ -140,15 +134,35 @@ export default {
                     pageId:that.pageId,
                 }
             }).then(function (res) {
-                console.log(res)
-                that.cTable=res.data.data.cTable;
-                //调用可操作的团
-                that.PostGroupListByCTableAndUserId();
+                if(res.data.code==200){
+                    that.cTable=res.data.data.cTable;
+                    //调用可操作的团
+                    that.PostGroupListByCTableAndUserId();
+                }else{
+                    that.$message({
+                        message:res.data.msg ,
+                        type: 'warning',
+                    });
+                }
             })
         },
+        //获取头部描述
+        getheadtitle(){
+            for(let i=0;i<this.options.length;i++){
+                if(this.diId==this.options[i].id){
+                    this.headtitle=this.options[i]
+                }
+            }
+        },
+        //切换数组
+        changegroup(){
+            //调用getheadtitle
+            this.getheadtitle();
+            //调用获取超支列表
+            this.PostGroupExtraCost_Search();
+        },
         //获取可操作的团
         PostGroupListByCTableAndUserId(){
-            console.log();
             var url = "/api/Business/PostGroupListByCTableAndUserId"
             var that = this
             this.$axios({
@@ -160,13 +174,30 @@ export default {
                 data:{
                     portType:1,
                     pageIndex:1,
-                    pageSize:10000,
+                    pageSize:100000,
                     cTable:that.cTable,
                     userId:that.userId
                 }
             }).then(function (res) {
-                console.log(res)
-                
+                if(res.data.code==200){
+                    that.options=res.data.data;
+                    if(that.diId==0){
+                        if(that.DiId!=that.DiId){
+                            that.diId=that.options[0].id;
+                        }else{
+                            that.diId=that.DiId;
+                        }
+                    }
+                    //调用getheadtitle
+                    that.getheadtitle();
+                    //调用获取超支列表
+                    that.PostGroupExtraCost_Search();
+                }else{
+                    that.$message({
+                        message:res.data.msg ,
+                        type: 'warning',
+                    });
+                }
             })
         },
         //获取超支列表
@@ -181,13 +212,20 @@ export default {
                 },
                 data:{
                     portType:1,
-                    pageIndex:1,
-                    pageSize:10,
+                    pageIndex:that.pageIndex,
+                    pageSize:that.pageSize,
                     diId:that.diId,
                 }
             }).then(function (res) {
-                console.log(res)
-                that.tableData=res.data.data.dataList;
+                if(res.data.code==200){
+                    that.dataCount=res.data.data.dataCount
+                    that.tableData=res.data.data.dataList;
+                }else{
+                    that.$message({
+                        message:res.data.msg ,
+                        type: 'warning',
+                    });
+                }
             })
         },
         //新增
@@ -198,9 +236,81 @@ export default {
                     DiId: this.diId,
                 }
             })
+        },
+        //删除
+        deleteRow(index,row, rows) {
+            this.$confirm('此操作将永久删除该文件, 是否继续?', '提示', {
+                confirmButtonText: '确定',
+                cancelButtonText: '取消',
+                type: 'warning'
+            }).then(() => {
+                this.PostGroupExtraCost_Operator(row.id);
+            }).catch(() => {
+                this.$message({
+                    type: 'info',
+                    message: '已取消删除'
+                });
+            });
+            
+            // rows.splice(index, 1);
+        },
+        //超支费用api
+        PostGroupExtraCost_Operator(id){
+            var url = "/api/Financial/PostGroupExtraCost_Operator"
+            var that = this
+            this.$axios({
+                method: 'post',
+                url: url,
+                headers: {
+                    Authorization: 'Bearer ' + that.userId
+                },
+                data:{
+                    portType:1,
+                    editType:3,
+                    id:id,
+                    diId:that.diId,
+                    priceName:'',
+                    price:0,
+                    priceType:0,
+                    priceDetailType:0,
+                    coefficient:0,
+                    currency:0,
+                    payee:'',
+                    costSign:0,
+                    payType:0,
+                    payCardId:0,
+                    filePath:'',
+                    remark:'',
+                    createUser:that.userId,
+                }
+            }).then(function (res) {
+                if(res.data.code==200){
+                    that.$message({
+                        message: res.data.msg,
+                        type: 'success'
+                    });
+                    that.PostGroupExtraCost_Search()
+                }else{
+                    that.$message({
+                        message:res.data.msg ,
+                        type: 'warning',
+                    });
+                }
+            })
+        },
+        //编辑
+        revisionbtn(index,row, rows){
+            this.$router.push({
+                path: "/home/Overspendedit",
+                query: {
+                    DiId: this.diId,
+                    Id:row.id
+                }
+            })
         }
     },
     mounted(){
+        this.DiId = Number(this.$route.query.DiId);
         this.pageId = localStorage.getItem('indexs').split('-')[1];
         this.token = JSON.parse(localStorage.getItem('userinif')).token;
         this.userId = JSON.parse(localStorage.getItem('userinif')).userInfo.userId;

+ 347 - 43
src/components/Finance/Overspendedit.vue

@@ -2,36 +2,46 @@
     <div>
         <div class="overspendedit-all">
             <div class="overspendedit-form">
-                <el-form ref="form" :model="form" label-width="100px">
+                <el-form ref="form" :rules="rules" :model="form" label-width="100px">
                     <el-form-item label="团队名称">
-                        <el-select v-model="form.region" placeholder="请选择活动区域">
-                            <el-option label="区域一" value="shanghai"></el-option>
-                            <el-option label="区域二" value="beijing"></el-option>
+                        <el-select @change="getheadtitle" :disabled="disableds" v-model="DiId" placeholder="请选择活动区域">
+                            <el-option v-for="(item,index) in cTablelist" :key="index" :label="item.teamName" :value="item.id"></el-option>
                         </el-select>
                     </el-form-item>
                     <el-form-item label="团 号">
-                        <el-input v-model="form.name"></el-input>
+                        <el-input disabled v-model="form.tourNumber"></el-input>
                     </el-form-item>
                     <el-form-item label="客 户">
-                        <el-input v-model="form.name"></el-input>
+                        <el-input disabled v-model="form.customers"></el-input>
                     </el-form-item>
                     <el-form-item label="出访国家">
-                        <el-input v-model="form.name"></el-input>
+                        <el-input disabled v-model="form.countriesVisited"></el-input>
                     </el-form-item>
-                    <el-form-item label="费用名称">
+                    <el-form-item prop="priceName"  label="费用名称">
                         <el-input v-model="form.priceName"></el-input>
                     </el-form-item>
-                    <el-form-item label="费用金额">
+                    <el-form-item prop="currency" label="费用金额">
                         <div style="display: flex;justify-content: space-between;">
-                            <el-input-number style="width:60%" @change="computerenminbi" :precision="2" placeholder="公务翻译费" v-model="form.price" :controls='false'>
+                            <el-input-number style="width:60%" :precision="2" placeholder="费用金额" v-model="form.price" :controls='false'>
                             </el-input-number>
-                            <el-select  style="width:38%" v-model="form.currency" placeholder="币种">
-                                <el-option label="区域一" value="shanghai"></el-option>
-                                <el-option label="区域二" value="beijing"></el-option>
+                            <el-select  style="width:38%" v-model="form.currency" filterable  placeholder="币种">
+                                <el-option v-for="(item,index) in currencyType" :key="index" :label="item.currencyCode" :value="item.currencyId"></el-option>
                             </el-select>
                         </div>
                     </el-form-item>
-                    <el-form-item label="收款方">
+                    <el-form-item prop="priceCount" label="数量">
+                        <el-input-number style="width:100%" :min="1" :precision="0" placeholder="数量" v-model="form.priceCount" :controls='false'>
+                        </el-input-number>
+                    </el-form-item>
+                    <el-form-item prop="priceDt" label="产生日期">
+                        <el-date-picker
+                        style="width:100%"
+                        v-model="form.priceDt"
+                        type="date"
+                        placeholder="选择日期">
+                        </el-date-picker>
+                    </el-form-item>
+                    <el-form-item prop="payee" label="收款方">
                         <el-input v-model="form.payee"></el-input>
                     </el-form-item>
                     <!-- <el-form-item label="团队名称">
@@ -40,42 +50,42 @@
                             <el-option label="区域二" value="beijing"></el-option>
                         </el-select>
                     </el-form-item> -->
-                    <el-form-item label="费用标识">
-                        <el-select v-model="form.costSign" placeholder="请选择活动区域">
-                            <el-option label="区域一" value="shanghai"></el-option>
-                            <el-option label="区域二" value="beijing"></el-option>
+                    <el-form-item prop="costSign" label="费用标识">
+                        <el-select v-model="form.costSign" placeholder="请选择费用标识">
+                            <el-option label="公转" value='0'></el-option>
+                            <el-option label="私转" value='1'></el-option>
                         </el-select>
                     </el-form-item>
-                    <el-form-item label="支付方式">
+                    <el-form-item prop="payType" label="支付方式">
                         <el-select v-model="form.payType" placeholder="请选择支付方式">
                             <el-option v-for="(item,index) in payment" :key="index" :label="item.name" :value="item.id"></el-option>
                         </el-select>
                     </el-form-item>
-                    <el-form-item label="卡类型:">
-                        <el-select v-model="form.payCardId" placeholder="请选择活动区域">
-                            <el-option label="区域一" value="shanghai"></el-option>
-                            <el-option label="区域二" value="beijing"></el-option>
+                    <el-form-item v-if="form.payType==72" prop="payCardId" label="卡类型:">
+                        <el-select v-model="form.payCardId" placeholder="请选择卡类型">
+                            <el-option v-for="(item,index) in cardType" :key="index" :label="item.name" :value="item.id"></el-option>
                         </el-select>
                     </el-form-item>
-                    <el-form-item label="费用类型">
-                        <el-select @change="priceTypechange" v-model="form.priceType" placeholder="请选择活动区域">
+                    <el-form-item prop="priceType" label="费用类型">
+                        <el-select @change="priceTypechange" v-model="form.priceType" placeholder="请选择费用类型">
                             <el-option v-for="(item,index) in priceType" :key="index" :label="item.name" :value="item.id"></el-option>
                         </el-select>
                     </el-form-item>
-                    <el-form-item v-if="priceDetailTypes.length>0" label="详细类型">
-                        <el-select v-model="form.priceDetailType" placeholder="请选择活动区域">
+                    <el-form-item prop="priceDetailType" v-if="priceDetailTypes.length>0" label="详细类型">
+                        <el-select v-model="form.priceDetailType" placeholder="请选择详细类型">
                             <el-option v-for="(item,index) in priceDetailTypes" :key="index" :label="item.name" :value="item.id"></el-option>
                         </el-select>
                     </el-form-item>
-                    <el-form-item label="费用系数">
-                        <el-input v-model="form.coefficient"></el-input>
+                    <el-form-item prop="coefficient" label="费用系数">
+                        <el-input-number style="width:100%" :precision="2" placeholder="费用系数" v-model="form.coefficient" :controls='false'>
+                        </el-input-number>
                     </el-form-item>
                     <el-form-item style="width:100%" label="备注">
                         <el-input type="textarea" :rows="5" v-model="form.remark"></el-input>
                     </el-form-item>
                     <el-form-item style="width:100%;text-align: right;">
-                        <el-button type="primary" @click="onSubmit">保 存</el-button>
-                        <el-button>返 回</el-button>
+                        <el-button type="primary" @click="submitForm('form')">保 存</el-button>
+                        <el-button @click="returnbtn">返 回</el-button>
                     </el-form-item>
                 </el-form>
             </div>
@@ -86,13 +96,21 @@
 export default {
     data() {
         return {
+            disableds:true,
             DiId:'',
+            Id:'',
+            pageId:'',
+            token:'',
+            userId:'',
             form: {
+                tourNumber:'',//团号
+                customers:'',//客户
+                countriesVisited:'',//出访国家
                 priceName:'',//费用名称
                 price:0,//金额
                 priceType:'',//费用类型Id
                 priceDetailType:'',//费用详细类型Id
-                coefficient:'',//系数
+                coefficient:1,//系数
                 currency:'',//费用币种
                 payee:'',//收款方
                 costSign:'',//费用标识
@@ -101,16 +119,66 @@ export default {
                 filePath:'',//附件路径
                 remark:'',//备注
                 createUser:'',//操作人员
+                priceCount:1,//数量
+                priceDt:'',//产生日期
             },
             payment:[],
             priceType:[],
             priceDetailType:[],
             priceDetailTypes:[],
+            cardType:[],
+            currencyType:[],
+            cTablelist:[],
+            rules: {
+                priceName: [
+                    { required: true, message: '请输入费用名称', trigger: 'blur' },
+                ],
+                currency: [
+                    { required: true, message: '请选择币种', trigger: 'change' }
+                ],
+                payee: [
+                    { required: true, message: '请输入收款方', trigger: 'blur' }
+                ],
+                costSign: [
+                    { required: true, message: '请选择费用标识', trigger: 'change' }
+                ],
+                payType: [
+                    {required: true, message: '请选择支付方式', trigger: 'change' }
+                ],
+                payCardId: [
+                    { required: true, message: '请选择卡类型', trigger: 'change' }
+                ],
+                priceType: [
+                    { required: true, message: '请选择费用类型', trigger: 'change' }
+                ],
+                priceDetailType: [
+                    { required: true, message: '请选择详细类型', trigger: 'change' }
+                ],
+                coefficient: [
+                    { required: true, message: '请输入费用系数', trigger: 'blur' }
+                ]
+                ,
+                priceCount: [
+                    { required: true, message: '请输入数量', trigger: 'blur' }
+                ]
+                ,
+                priceDt: [
+                    { required: true, message: '请选择日期费', trigger: 'change' }
+                ]
+            }
         }
     },
     methods: {
         onSubmit() {
-            console.log('submit!');
+            this.datetime(this.form.priceDt)
+        },
+        //处理日期
+        datetime(val){
+            var date=new Date(val);
+            var y=date.getFullYear();
+            var m=date.getMonth()+1>=10?date.getMonth()+1:'0'+(date.getMonth()+1).toString();
+            var d=date.getDate()>=10?date.getDate():'0'+(date.getDate()).toString();
+            return y+'-'+m+'-'+d
         },
         //获取超支基础数据
         PostGroupExtraCost_ListDataInit(){
@@ -126,30 +194,263 @@ export default {
                     portType:1,
                 }
             }).then(function (res) {
-                console.log(res)
-                that.payment=res.data.data.payment;
-                that.priceDetailType=res.data.data.priceDetailType;
-                that.priceType=res.data.data.priceType;
+                if(res.data.code==200){
+                    that.payment=res.data.data.payment;
+                    that.priceDetailType=res.data.data.priceDetailType;
+                    that.priceType=res.data.data.priceType;
+                    that.cardType=res.data.data.card;
+                }else{
+                    that.$message({
+                        message:res.data.msg ,
+                        type: 'warning',
+                    });
+                }
             })
         },
         //费用类型change
         priceTypechange(val){
-            this.priceDetailTypes=[]
-            var priceDetailTypearr=[]
+            this.priceDetailTypes=[];
+            var priceDetailTypearr=[];
             for(var i=0;i<this.priceDetailType.length;i++){
                 if(val+''==this.priceDetailType[i].remark){
                     priceDetailTypearr.push(this.priceDetailType[i])
                 }
             }
             this.priceDetailTypes=priceDetailTypearr;
-            console.log(this.priceDetailTypes.length);
+        },
+        //获取团号
+        getheadtitle(){
+            for(let i=0;i<this.cTablelist.length;i++){
+                if(this.DiId==this.cTablelist[i].id){
+                    this.form.tourNumber=this.cTablelist[i].tourCode;
+                    this.form.customers=this.cTablelist[i].clientName;
+                    this.form.countriesVisited=this.cTablelist[i].visitCountry;
+                }
+            }
+        },
+        //获取cTable
+        PostPageLinkCTable(){
+            var url = "/api/Business/PostPageLinkCTable"
+            var that = this
+            this.$axios({
+                method: 'post',
+                url: url,
+                headers: {
+                    Authorization: 'Bearer ' + that.userId
+                },
+                data:{
+                    pageId:that.pageId,
+                }
+            }).then(function (res) {
+                if(res.data.code==200){
+                    that.cTable=res.data.data.cTable;
+                    //调用获取币种、
+                    that.PostGroupTeamRateByDiIdAndCTableId()
+                    //调用获取可以操作的团
+                    that.PostGroupListByCTableAndUserId();
+                }else{
+                    that.$message({
+                        message:res.data.msg ,
+                        type: 'warning',
+                    });
+                }
+            })
+        },
+        //获取可操作的团
+        PostGroupListByCTableAndUserId(){
+            var url = "/api/Business/PostGroupListByCTableAndUserId"
+            var that = this
+            this.$axios({
+                method: 'post',
+                url: url,
+                headers: {
+                    Authorization: 'Bearer ' + that.userId
+                },
+                data:{
+                    portType:1,
+                    pageIndex:1,
+                    pageSize:10000,
+                    cTable:that.cTable,
+                    userId:that.userId
+                }
+            }).then(function (res) {
+                if(res.data.code==200){
+                    that.cTablelist=res.data.data;
+                    that.getheadtitle();
+                }else{
+                    that.$message({
+                        message:res.data.msg ,
+                        type: 'warning',
+                    });
+                }
+            })
+        },
+        //获取详情
+        PostGroupExtraCost_Detail(){
+            if(this.Id!=this.Id){
+                return
+            }
+            var url = "/api/Financial/PostGroupExtraCost_Detail"
+            var that = this
+            this.$axios({
+                method: 'post',
+                url: url,
+                headers: {
+                    Authorization: 'Bearer ' + that.userId
+                },
+                data:{
+                    portType:1,
+                    id:that.Id,
+                }
+            }).then(function (res) {
+                if(res.data.code){
+                    that.form.coefficient=res.data.data.coefficient;
+                    that.form.payee=res.data.data.payee;
+                    that.form.price=res.data.data.price;
+                    that.form.currency=res.data.data.priceCurrency;
+                    that.form.priceName=res.data.data.priceName;
+                    that.form.priceType=res.data.data.priceType;
+                    that.form.priceDetailType=res.data.data.priceDetailType;
+                    that.form.payType=res.data.data.payDId;
+                    that.form.costSign=res.data.data.orbitalPrivateTransfer+'';
+                    that.form.payCardId=res.data.data.ctdId==0?'':res.data.data.ctdId;
+                    that.form.priceCount=res.data.data.priceCount;
+                    that.form.remark=res.data.data.remark;
+                    that.form.priceDt=res.data.data.priceDt;
+                    that.priceTypechange(that.form.priceType)
+
+                    
+                    // setTimeout(that.priceTypechange(that.form.priceType),5000)
+                }else{
+                    that.$message({
+                        message:res.data.msg ,
+                        type: 'warning',
+                    });
+                }
+            })
+        },
+        //获取币种
+        PostGroupTeamRateByDiIdAndCTableId(){
+            var url = "/api/Business/PostGroupTeamRateByDiIdAndCTableId"
+            var that = this
+            this.$axios({
+                method: 'post',
+                url: url,
+                headers: {
+                    Authorization: 'Bearer ' + that.userId
+                },
+                data:{
+                    portType:1,
+                    diId:that.DiId,
+                    cTable:that.cTable,
+                }
+            }).then(function (res) {
+                if(res.data.code){
+                    that.currencyType=res.data.data.teamRates;
+                    if(that.currencyType.length==0){
+                        that.$message({
+                            message:'未设置超支汇率' ,
+                            type: 'warning',
+                        });
+                    }
+                }else{
+                    that.$message({
+                        message:res.data.msg ,
+                        type: 'warning',
+                    });
+                }
+            })
+        },
+        //超支费用api
+        PostGroupExtraCost_Operator(){
+            var url = "/api/Financial/PostGroupExtraCost_Operator"
+            var that = this
+            this.$axios({
+                method: 'post',
+                url: url,
+                headers: {
+                    Authorization: 'Bearer ' + that.userId
+                },
+                data:{
+                    portType:1,
+                    editType:that.Id!=that.Id?1:2,
+                    id:that.Id!=that.Id?0:that.Id,
+                    diId:that.DiId,
+                    priceName:that.form.priceName,
+                    price:that.form.price,
+                    priceType:that.form.priceType,
+                    priceDetailType:that.priceDetailTypes.length!=0?that.form.priceDetailType:0,
+                    coefficient:that.form.coefficient,
+                    currency:that.form.currency,
+                    payee:that.form.payee,
+                    costSign:Number(that.form.costSign),
+                    payType:that.form.payType,
+                    payCardId:that.form.payType==72?that.form.payCardId:0,
+                    filePath:'',
+                    remark:that.form.remark,
+                    createUser:that.userId,
+                    priceCount:that.form.priceCount,
+                    priceDt:that.datetime(that.form.priceDt),
+                }
+            }).then(function (res) {
+                if(res.data.code==200){
+                    that.$message({
+                        message: res.data.msg,
+                        type: 'success'
+                    });
+                    setTimeout(that.returnbtn,1000)
+                }else{
+                    that.$message({
+                        message:res.data.msg ,
+                        type: 'warning',
+                    });
+                }
+            })
+        },
+        //保存
+        submitForm(formName) {
+            this.$refs[formName].validate((valid) => {
+                if (valid) {
+                    this.PostGroupExtraCost_Operator();
+                } else {
+                    this.$message({
+                        message:'请将红框补充完整!',
+                        type: 'warning',
+                    });
+                }
+            });
+        },
+        //返回
+        returnbtn(){
+            this.$router.push({
+                path: "/home/Overspend",
+                query: {
+                    DiId: this.DiId,
+                }
+            })
         }
     },
-    mounted(){
+    created(){
+        this.pageId = localStorage.getItem('indexs').split('-')[1];
+        this.token = JSON.parse(localStorage.getItem('userinif')).token;
+        this.userId = JSON.parse(localStorage.getItem('userinif')).userInfo.userId;
         this.DiId = Number(this.$route.query.DiId);
+        this.Id = Number(this.$route.query.Id);
+        if(this.Id!=this.Id){
+            this.disableds=false
+        }else{
+            this.disableds=true
+        }
         //调用获取超支基础数据
-        this.PostGroupExtraCost_ListDataInit()
-    }
+        this.PostGroupExtraCost_ListDataInit();
+    },
+    mounted(){
+        //hguoquctb
+        this.PostPageLinkCTable();
+        //调用获取详情
+        this.PostGroupExtraCost_Detail();
+        
+    }   
 
 }
 </script>
@@ -174,4 +475,7 @@ export default {
 .overspendedit-form .el-select{
     width: 100%;
 }
+.overspendedit-form .el-input-number.is-without-controls .el-input__inner{
+    text-align: left;
+}
 </style>.

+ 449 - 194
src/components/Finance/PaymentFiled.vue

@@ -1,5 +1,5 @@
 <template>
-    <div>
+    <div v-loading.fullscreen.lock="fullscreenLoading">
         <div class="paymentfiled-all">
             <div class="paymentfiled-haed">
                 <el-date-picker v-model="value2" type="daterange" align="left" unlink-panels range-separator="至"
@@ -7,11 +7,20 @@
                     :picker-options="pickerOptions">
                 </el-date-picker>
                 <div class="haed-btn">
-                    <el-button type="primary">查看勾选</el-button>
-                    <!-- <el-button type="primary">生成(成都)</el-button>
-                    <el-button type="primary">生成(四川)</el-button> -->
-                    <el-button type="primary">清空上一次勾选</el-button>
-                    <el-button type="primary">付款</el-button>
+                    <el-button @click="PostPayRequestCheckedChange(1)" type="primary">保存勾选</el-button>
+                    <el-button @click="PostPayRequestCheckedChange(2)" type="primary">清空勾选</el-button>
+                    <el-button @click="checkCheckbox" type="primary">查看勾选</el-button>
+                    <el-button @click="datechange" type="primary">查看全部</el-button>
+                    <el-select style="width:200px" v-model="value" filterable placeholder="请选择">
+                        <el-option
+                          v-for="item in options"
+                          :key="item.id"
+                          :label="item.conpamyName"
+                          :value="item.id">
+                        </el-option>
+                      </el-select>
+                    <el-button @click="generatebtn" type="primary">生成</el-button>
+                    <el-button @click="paymentbtn" type="primary">付款</el-button>
                 </div>
             </div>
             <div class="paymentfiled-info">
@@ -33,17 +42,17 @@
             </div>
             <div class="paymentfiled-form">
                 <el-collapse v-model="activeNames" @change="handleChange">
-                    <el-collapse-item name="1">
+                    <el-collapse-item name="2">
                         <template slot="title">
                             <div style="width: 100%;">
                                 <p style="float: left;user-select: none;">
-                                    日付申请
+                                    团组付款申请
                                 </p>
                                 <p align="right" style="user-select: none;">
-                                    <span>公转:{{rfrevolution}} CNY</span>
+                                    <span>公转:{{tzrevolution}} CNY</span>
                                     &nbsp;
                                     &nbsp;
-                                    <span>私转:{{rfprivateTransfer}} CNY</span>
+                                    <span>私转:{{tzprivateTransfer}} CNY</span>
                                     &nbsp;
                                     &nbsp;
                                     &nbsp;
@@ -51,19 +60,62 @@
                                 </p>
                             </div>
                         </template>
-                        
+                        <div class="tree-box">
+                            <el-tree 
+                            @check="handleSelectionChange" 
+                            :data="groupstableData" 
+                            ref="tree"
+                            show-checkbox 
+                            :default-expand-all="false" 
+                            :default-checked-keys="defaultarr"
+                            node-key="id" 
+                            :props="defaultProps"
+                            highlight-current>
+                                <span class="custom-tree-node" slot-scope="{ data }">
+                                    <span>
+                                        {{data.groupName?'(团组:'+data.groupName+')':'' }}
+                                    </span>
+                                    <span>
+                                        {{ data.applicant?'申请人:'+data.applicant:''}}
+                                    </span>
+                                    <span>
+                                        {{ data.payType?'【'+data.payType+'】':''}}
+                                    </span>
+                                    <span>
+                                        {{ data.moduleName?'['+data.moduleName+']':''}}
+                                    </span>
+                                    <span>
+                                        {{ data.payee?'(收款方:'+data.payee+')':'' }}
+                                    </span>
+                                    <span>
+                                        {{ data.payCurrCode?'  : '+data.payCurrCode+' ':'' }}
+                                    </span>
+                                    <span>
+                                        {{ data.paymentAmount!=undefined?'  '+twonumder(data.paymentAmount):'' }}
+                                    </span>
+                                    <span>
+                                        {{ data.cnyTotalAmount!=undefined?'&nbsp;&nbsp;&nbsp;付款金额&nbsp;&nbsp;&nbsp;CNY  '+twonumder(data.cnyTotalAmount):'' }}
+                                    </span>
+                                    <span>
+                                        {{ data.cnySubTotalAmount!=undefined?'  、 CNY  '+twonumder(data.cnySubTotalAmount=data.paymentAmount*data.payRate)+'&nbsp;&nbsp;&nbsp;汇率:':'' }}
+                                    </span>
+                                    <el-input-number v-if="data.payRate!=undefined" style="width:100px" @blur="inputblur(data.id,data.payRate)" :precision="4" placeholder="公务翻译费" v-model="data.payRate" :controls='false'>
+                                    </el-input-number>
+                                </span>
+                            </el-tree>
+                        </div>
                     </el-collapse-item>
-                    <el-collapse-item name="2">
+                    <el-collapse-item name="1">
                         <template slot="title">
                             <div style="width: 100%;">
                                 <p style="float: left;user-select: none;">
-                                    团组付款申请
+                                    日付申请
                                 </p>
                                 <p align="right" style="user-select: none;">
-                                    <span>公转:{{tzrevolution}} CNY</span>
+                                    <span>公转:{{rfrevolution}} CNY</span>
                                     &nbsp;
                                     &nbsp;
-                                    <span>私转:{{tzprivateTransfer}} CNY</span>
+                                    <span>私转:{{rfprivateTransfer}} CNY</span>
                                     &nbsp;
                                     &nbsp;
                                     &nbsp;
@@ -71,102 +123,49 @@
                                 </p>
                             </div>
                         </template>
-                        <el-table :border="true" :data="groupstableData" style="width: 100%">
-                            <el-table-column align="center" type="expand">
-                                <div class="childtable" slot-scope="scope">
-                                    <el-table @select="handleSelectionChange"  :header-cell-style="{backgroundColor: '#f2f6fd'}" :border="true" :data="scope.row.childList" style="width: 95%">
-                                        <el-table-column type="selection" width="55">
-                                        </el-table-column>
-                                        <el-table-column prop="rowNumber" label="序号" width="55">
-                                        </el-table-column>
-                                        <el-table-column prop="moduleName" label="费用类型" width="120">
-                                        </el-table-column>
-                                        <el-table-column prop="priceName" label="费用名称">
-                                        </el-table-column>
-                                        <el-table-column prop="payee" label="收款方" width="200">
-                                        </el-table-column>
-                                        <el-table-column prop="payType" label="支付方式" width="120">
-                                        </el-table-column>
-                                        <el-table-column label="付款金额" show-overflow-tooltip width="200">
-                                            <template slot-scope="scope">
-                                                {{ scope.row.paymentAmount|numFilter }}  {{scope.row.payCurrCode}}
-                                            </template>
-                                        </el-table-column>
-                                        <el-table-column label="人民币金额" show-overflow-tooltip  width="200">
-                                            <template slot-scope="scope">
-                                                {{ scope.row.paymentAmount*scope.row.payRate|numFilter }}  CNY
-                                            </template>
-                                        </el-table-column>
-                                        <el-table-column prop="payRate" label="当前汇率" width="150">
-                                            <template slot-scope="scope">
-                                                <el-input-number style="width:60%" :precision="4" placeholder="公务翻译费" v-model="scope.row.payRate" :controls='false'>
-                                                </el-input-number>
-                                            </template>
-                                        </el-table-column>
-                                    </el-table>
-                                </div>
-                            </el-table-column>
-                            <el-table-column prop="groupName" label="团组名称">
-                            </el-table-column>
-                            <el-table-column label="支付金额" show-overflow-tooltip>
-                                <template slot-scope="scope">
-                                    {{ scope.row.cnyTotalAmount|numFilter }}  CNY
-                                </template>
-                            </el-table-column>
-                        </el-table>
+                        <div class="tree-box">
+                            <el-tree 
+                            @check="everydayChange"
+                            :data="everydayData" 
+                            ref="abc"
+                            show-checkbox 
+                            :default-expand-all="false" 
+                            :default-checked-keys="everydayarr"
+                            node-key="id" 
+                            :check-strictly="true"
+                            :props="everydayProps"
+                            highlight-current>
+                                <span class="custom-tree-node" slot-scope="{ data }">
+                                    <span >
+                                        {{ data.companyName?'【'+data.companyName+'】':'' }}
+                                    </span>
+                                    <span>
+                                        {{ data.transferParentIdStr?' 【'+data.transferParentIdStr+'】':'' }}
+                                    </span>
+                                    <span>
+                                        {{ data.priceTypeStr?' 【'+data.priceTypeStr+'】':'' }}
+                                    </span>
+                                    <span>
+                                        {{ data.instructions?'('+data.instructions+'):':'' }}
+                                    </span>
+                                    <span>
+                                        {{ data.sumPrice?' CNY: '+twonumder(data.sumPrice):'' }}
+                                    </span>
+                                    <span>
+                                        {{ data.createUser?'【申请人: '+data.createUser:'' }}
+                                    </span>
+                                    <span>
+                                        {{ data.createTime?'申请时间: '+data.createTime+'】':'' }}
+                                    </span>
+                                    <span style="color:rgb(149 149 149);">
+                                        {{ data.remaksDescription?data.remaksDescription:'' }}
+                                    </span>
+                                </span>
+                            </el-tree>
+                        </div>
                     </el-collapse-item>
+                    
                 </el-collapse>
-                <!-- <el-table
-                    :border="true"
-                    ref="multipleTable"
-                    :data="tableData"
-                    tooltip-effect="dark"
-                    style="width: 100%"
-                    @selection-change="handleSelectionChange">
-                    <el-table-column type="expand">
-                        ///
-                        <template slot-scope="props">
-                          <el-form label-position="left" inline class="demo-table-expand">
-                            <el-form-item label="商品名称">
-                              <span>{{ props}}</span>
-                            </el-form-item>
-                            <el-form-item label="所属店铺">
-                              <span>{{ props }}</span>
-                            </el-form-item>
-                            <el-form-item label="商品 ID">
-                              <span>{{ props }}</span>
-                            </el-form-item>
-                            <el-form-item label="店铺 ID">
-                              <span>{{ props}}</span>
-                            </el-form-item>
-                            <el-form-item label="商品分类">
-                              <span>{{ props }}</span>
-                            </el-form-item>
-                            <el-form-item label="店铺地址">
-                              <span>{{ props }}</span>
-                            </el-form-item>
-                            <el-form-item label="商品描述">
-                              <span>{{ props }}</span>
-                            </el-form-item>
-                          </el-form>
-                        </template>
-                      </el-table-column>
-                    <el-table-column
-                    prop="paytype"
-                    label="账单类型"
-                    >
-                    </el-table-column>
-                    <el-table-column
-                    label="公转金额"
-                    width="200">
-                    <template slot-scope="scope">{{ scope.row.date }}</template>
-                    </el-table-column>
-                    <el-table-column
-                    prop="applicant"
-                    label="私转金额"
-                    width="200">
-                    </el-table-column>
-                </el-table> -->
             </div>
         </div>
     </div>
@@ -175,88 +174,37 @@
 export default {
     data() {
       return {
+        value:2,
+        options:[],
+        pageId:'',
+        token:'',
+        userId:'',
         applicant:'',
         application:'',
         rfrevolution:'0.00',//日付公转
         rfprivateTransfer:'0.00',//日付私转
         tzrevolution:'0.00',//团组公转
         tzprivateTransfer:'0.00',//团组私转
-        tableData: [
-        {
-            paytype:'转账',
-            date: '2016-05-03',
-            applicant: '邓梦秋',
-            recipient:'北京东方君悦大酒店',
-            groupname:'产投 加拿大 巴西 智利',
-            type:'酒店预订',
-            renminbi:'-9000.00',
-            trade:'-9000.00',
-            remark: '上海市普陀区金沙江路 1518 弄'
-        }, {
-            paytype:'转账',
-            date: '2016-05-03',
-            applicant: '邓梦秋',
-            recipient:'北京东方君悦大酒店',
-            groupname:'产投 加拿大 巴西 智利',
-            type:'酒店预订',
-            renminbi:'-9000.00',
-            trade:'-9000.00',
-            remark: '上海市普陀区金沙江路 1518 弄'
-        }, {
-            paytype:'转账',
-            date: '2016-05-03',
-            applicant: '邓梦秋',
-            recipient:'北京东方君悦大酒店',
-            groupname:'产投 加拿大 巴西 智利',
-            type:'酒店预订',
-            renminbi:'-9000.00',
-            trade:'-9000.00',
-            remark: '上海市普陀区金沙江路 1518 弄'
-        }, {
-            paytype:'转账',
-            date: '2016-05-03',
-            applicant: '邓梦秋',
-            recipient:'北京东方君悦大酒店',
-            groupname:'产投 加拿大 巴西 智利',
-            type:'酒店预订',
-            renminbi:'-9000.00',
-            trade:'-9000.00',
-            remark: '上海市普陀区金沙江路 1518 弄'
-        }, {
-            paytype:'转账',
-            date: '2016-05-03',
-            applicant: '邓梦秋',
-            recipient:'北京东方君悦大酒店',
-            groupname:'产投 加拿大 巴西 智利',
-            type:'酒店预订',
-            renminbi:'-9000.00',
-            trade:'-9000.00',
-            remark: '上海市普陀区金沙江路 1518 弄'
-        }, {
-            paytype:'转账',
-            date: '2016-05-03',
-            applicant: '邓梦秋',
-            recipient:'北京东方君悦大酒店',
-            groupname:'产投 加拿大 巴西 智利',
-            type:'酒店预订',
-            renminbi:'-9000.00',
-            trade:'-9000.00',
-            remark: '上海市普陀区金沙江路 1518 弄'
-        }, {
-            paytype:'转账',
-            date: '2016-05-03',
-            applicant: '邓梦秋',
-            recipient:'北京东方君悦大酒店',
-            groupname:'产投 加拿大 巴西 智利',
-            type:'酒店预订',
-            renminbi:'-9000.00',
-            trade:'-9000.00',
-            remark: '上海市普陀区金沙江路 1518 弄'
-        }],
+
+        defaultProps: {
+            children: 'childList',
+            label: 'groupName'
+        },
+    
+        everydayProps: {
+            children: 'childList',
+            label: 'instructions',
+            disabled:function(data, node) {
+                if(data.transferParentIdStr==undefined){
+                    return true
+                }
+            }
+        },
         
-        activeNames: ['2'],
+        activeNames: ['1','2'],
 
         multipleSelection: [],
+        //选择日期快捷选项
         pickerOptions: {
           shortcuts: [{
             text: '最近一周',
@@ -282,21 +230,85 @@ export default {
               start.setTime(start.getTime() - 3600 * 1000 * 24 * 90);
               picker.$emit('pick', [start, end]);
             }
+          }, {
+            text: '最近一年',
+            onClick(picker) {
+              const end = new Date();
+              const start = new Date();
+              start.setTime(start.getTime() - 3600 * 1000 * 24 * 365);
+              picker.$emit('pick', [start, end]);
+            }
+          }
+          , {
+            text: '最近两年',
+            onClick(picker) {
+              const end = new Date();
+              const start = new Date();
+              start.setTime(start.getTime() - 3600 * 1000 * 24 * 730);
+              picker.$emit('pick', [start, end]);
+            }
           }]
         },
         value2: '',
         checked:'',
-        groupstableData:[]
+        groupstableData:[],//团组付款申请
+        everydayData:[],//日常付款申请
+        defaultarr:[],//团组勾选中
+        everydayarr:[],//日付勾选中
+        fullscreenLoading:false,
       };
     },
     methods:{
+        //两位小数
+        twonumder(val){
+            return val.toFixed(2)
+        },
         handleChange(val) {
             console.log(val);
         },
-        handleSelectionChange(val) {
-            // console.log(index);
-            console.log(val);
-            // this.multipleSelection = val;
+        //获取基础数据
+        PostPayRequestInit(){
+            var url = "/api/Financial/PostPayRequestInit"
+            var that = this
+            this.$axios({
+                method: 'post',
+                url: url,
+                headers: {
+                    Authorization: 'Bearer ' + that.token
+                },
+            }).then(function (res) {
+                if(res.data.code==200){
+                    console.log(res)
+                    that.options=res.data.data.conpanyData;
+                }else{
+                    that.$message({
+                        message: res.data.msg,
+                        type: 'warning'
+                    });
+                }
+            })
+        },
+        //处理数组
+        filt(array) {
+            return array.filter(x => Number.isFinite(x));
+        },
+        //勾选
+        handleSelectionChange(data,node) {
+            this.defaultarr=this.filt(node.checkedKeys);
+            console.log(this.arrstring(this.defaultarr));
+        },
+        //日付勾选
+        everydayChange(data,node){
+            this.everydayarr=node.checkedKeys
+            console.log(this.arrstring(this.everydayarr));
+        },
+        //数组处理成字符串
+        arrstring(val){
+            var stringarr='';
+            for(let s=0;s<val.length;s++){
+                stringarr += val[s].toString()+',';
+            }
+            return stringarr.substring(0, stringarr.length-1);
         },
         //处理时间
         getdate(val){
@@ -306,31 +318,64 @@ export default {
             var d=date.getDate()<10?'0'+date.getDate():date.getDate();
             return y+'-'+m+'-'+d
         },
+        //查看勾选
+        checkCheckbox(){
+            console.log(this.defaultarr)
+            console.log(this.everydayarr)
+            if(this.defaultarr.length==0&&this.everydayarr.length==0){
+                this.$message({
+                    message:'请保存勾选后再查看!',
+                    type: 'warning'
+                });
+                return;
+            }
+
+            //初始化
+            this.groupstableData=[];
+            this.everydayData=[];
+            this.rfrevolution='0.00';//日付公转
+            this.rfprivateTransfer='0.00';//日付私转
+            this.tzrevolution='0.00';//团组公转
+            this.tzprivateTransfer='0.00';//团组私转
+            this.PostPayRequest_Center(this.getdate(this.value2[0]),this.getdate(this.value2[1]),2);
+            // this.PostPayRequest_Center('2023-01-01','2024-03-25',2);
+        },
         //选择日期
         datechange(){
             //初始化
+            this.groupstableData=[];
+            this.everydayData=[];
             this.rfrevolution='0.00';//日付公转
             this.rfprivateTransfer='0.00';//日付私转
             this.tzrevolution='0.00';//团组公转
             this.tzprivateTransfer='0.00';//团组私转
-            // this.PostPayRequest_Center(this.getdate(this.value2[0]),this.getdate(this.value2[1]));
-            this.PostPayRequest_Center('2023-01-01','2024-03-25');
+            this.PostPayRequest_Center(this.getdate(this.value2[0]),this.getdate(this.value2[1]),1);
+            // this.PostPayRequest_Center('2023-01-01','2024-03-25',1);
+        },
+        //汇率更改
+        inputblur(id,raet){
+            console.log(id,raet)
+            this.PostPayRequestRateChange(id,raet)
         },
         //获取付款申请list
-        PostPayRequest_Center(beginDt,endDt){
+        PostPayRequest_Center(beginDt,endDt,status){
+            this.fullscreenLoading=true;
+
             var url = "/api/Financial/PostPayRequest_Center"
             var that = this
             this.$axios({
                 method: 'post',
                 url: url,
                 headers: {
-                    Authorization: 'Bearer ' + this.token
+                    Authorization: 'Bearer ' + that.token
                 },
                 data:{
                     portType:1,
-                    status:1,
+                    status:status,
                     beginDt:beginDt,
                     endDt:endDt,
+                    pageId: that.pageId,
+                    userId: that.userId,
                 }
             }).then(function (res) {
                 if(res.data.code==200){
@@ -339,12 +384,187 @@ export default {
                     that.rfprivateTransfer=res.data.data.daily.sz;
                     that.tzrevolution=res.data.data.group.gz;
                     that.tzprivateTransfer=res.data.data.group.sz;
-                    that.groupstableData=res.data.data.group.dataList
+                    that.groupstableData=res.data.data.group.dataList;
+                    if(that.groupstableData!=null){
+                        for(let i=0;i<that.groupstableData.length;i++){
+                            for(let j=0;j<that.groupstableData[i].childList.length;j++){
+                                if(that.groupstableData[i].childList[j].isChecked==true){
+                                    that.defaultarr.push(that.groupstableData[i].childList[j].id)
+                                }
+                            }
+                        }
+                    }
+                    that.everydayData=res.data.data.daily.dataList;
+                    if(that.everydayData!=null){
+                        for(let s=0;s<that.everydayData.length;s++){
+                            if(that.everydayData[s].isChecked==true){
+                                that.everydayarr.push(that.everydayData[s].id)
+                            }
+                        }
+                    }
+                    that.fullscreenLoading=false;
                 }else{
                     that.$message({
                         message: '加载失败!原因:'+res.data.msg,
                         type: 'warning'
                     });
+                    that.fullscreenLoading=false;
+                }
+            })
+        },
+        //保存勾选
+        PostPayRequestCheckedChange(type){
+            var url = "/api/Financial/PostPayRequestCheckedChange"
+            var that = this
+            this.$axios({
+                method: 'post',
+                url: url,
+                headers: {
+                    Authorization: 'Bearer ' + that.token
+                },
+                data:{
+                    userId:that.userId,
+                    groupIds:that.arrstring(that.defaultarr),
+                    dailyPaymentIds:that.arrstring(that.everydayarr),
+                    type:type
+                }
+            }).then(function (res) {
+                if(res.data.code==200){
+                    that.$message({
+                        message: res.data.msg,
+                        type: 'success'
+                    });
+                    if(type==2){
+                        that.$refs.tree.setCheckedKeys([]);
+                        that.$refs.abc.setCheckedKeys([]);
+                        that.defaultarr=[];
+                        that.everydayarr=[];
+                    }
+                }else{
+                    that.$message({
+                        message: '保存失败!原因:'+res.data.msg,
+                        type: 'warning'
+                    });
+                }
+            })
+        },
+        //修改汇率
+        PostPayRequestRateChange(id,rate){
+            var url = "/api/Financial/PostPayRequestRateChange"
+            var that = this
+            this.$axios({
+                method: 'post',
+                url: url,
+                headers: {
+                    Authorization: 'Bearer ' + that.token
+                },
+                data:{
+                    portType:1,
+                    pageId:that.pageId,
+                    userId:that.userId,
+                    status:1,
+                    beginDt:that.getdate(that.value2[0]),
+                    endDt:that.getdate(that.value2[1]),
+                    id:id,
+                    rate:rate
+                }
+            }).then(function (res) {
+                if(res.data.code==200){
+                    that.$message({
+                        message: res.data.msg,
+                        type: 'success'
+                    });
+                }else{
+                    that.$message({
+                        message: '保存失败!原因:'+res.data.msg,
+                        type: 'warning'
+                    });
+                }
+            })
+        },
+        //付款btn
+        paymentbtn(){
+            this.$confirm('是否确认付款?', '提示', {
+                confirmButtonText: '确定',
+                cancelButtonText: '取消',
+                type: 'warning'
+            }).then(() => {
+                this.PostPayRequestCheckedChange(1)
+                setTimeout(this.PostPayRequestPayChange(),1000)
+            }).catch(() => {
+                this.$message({
+                    type: 'info',
+                    message: '已取消付款'
+                });
+            });
+        },
+        //付款api
+        PostPayRequestPayChange(){
+            var url = "/api/Financial/PostPayRequestPayChange"
+            var that = this
+            this.$axios({
+                method: 'post',
+                url: url,
+                headers: {
+                    Authorization: 'Bearer ' + that.token
+                },
+                data:{
+                    userId:that.userId,
+                    groupIds:that.arrstring(that.defaultarr),
+                    dailyPaymentIds:that.arrstring(that.everydayarr),
+                }
+            }).then(function (res) {
+                if(res.data.code==200){
+                    that.datechange()
+                    that.$message({
+                        message: res.data.msg,
+                        type: 'success'
+                    });
+                }else{
+                    that.$message({
+                        message:res.data.msg,
+                        type: 'warning'
+                    });
+                }
+            })
+        },
+        //生成btn
+        generatebtn(){
+            this.PostPayRequestCheckedChange(1)
+            setTimeout(this.PostPayRequestFileDownload,1000)
+        },
+        //生成api
+        PostPayRequestFileDownload(){
+            // this.PostPayRequestCheckedChange(1)
+            var url = "/api/Financial/PostPayRequestFileDownload"
+            var that = this
+            console.log(that.value2);
+            this.$axios({
+                method: 'post',
+                url: url,
+                headers: {
+                    Authorization: 'Bearer ' + that.token
+                },
+                data:{
+                    portType:1,
+                    userId:that.userId,
+                    pageId:that.pageId,
+                    beginDt:that.getdate(that.value2[0]),
+                    endDt:that.getdate(that.value2[1]),
+                    conpanyId:that.value
+                }
+            }).then(function (res) {
+                if(res.data.code==200){
+                    that.$message({
+                        message: res.data.msg,
+                        type: 'success'
+                    });
+                    window.open(res.data.data.url)
+                }else{
+                    that.$message({
+                        message: res.data.msg,
+                        type: 'warning'
+                    });
                 }
             })
         },
@@ -362,8 +582,13 @@ export default {
         },
     },
     mounted(){
+        this.pageId = localStorage.getItem('indexs').split('-')[1];
+        this.token = JSON.parse(localStorage.getItem('userinif')).token;
+        this.userId = JSON.parse(localStorage.getItem('userinif')).userInfo.userId;
         this.applicant=JSON.parse(localStorage.getItem('userinif')).userInfo.cnName;
         this.application=this.getdate(new Date());
+        //调用获取基础数据
+        this.PostPayRequestInit()
     }
 }
 </script>
@@ -415,4 +640,34 @@ export default {
         background-color: #f2f6fd !important;
         font-weight: bold;
     }
-</style>
+    .custom-tree-node {
+        
+        font-size: 16px;
+
+    }
+    .custom-tree-nodes {
+        flex: 1;
+        display: flex;
+        align-items: center;
+        justify-content: space-between;
+        font-size: 14px;
+        padding-right: 8px;
+    }
+    .paymentfiled-form .el-tree-node__content{
+        height:40px;
+    }
+    .paymentfiled-form .el-input__inner{
+        height:30px;
+        line-height:30px;
+    }
+    .tree-box{
+        border: 1px solid #EBEEF5;
+        padding: 10px;
+    }
+    ::v-deep .el-tree .el-tree-node .is-leaf + .el-checkbox .el-checkbox__inner {
+        display: none;
+    }
+    ::v-deep .el-tree .el-tree-node .el-checkbox .el-checkbox__inner {
+        display: inline-block;
+    }
+</style>

+ 5 - 1
src/components/OP/DecreasePayments.vue

@@ -45,7 +45,7 @@
                     </el-table-column>
                     <el-table-column prop="price,currency" label="费用" sortable>
                         <template slot-scope="scope">
-                            {{ scope.row.price }}({{ scope.row.currency }})
+                            {{ townum(scope.row.price) }}({{ scope.row.currency }})
                         </template>
                     </el-table-column>
                     <el-table-column prop="filePath" label="附件">
@@ -98,6 +98,10 @@ export default {
         }
     },
     methods: {
+        //保留两位小数
+        townum(val){
+            return val.toFixed(2)
+        },
         //每页条数改变时触发 选择一页显示多少行
         handleSizeChange(val) {
             this.currentPage = 1;

+ 4 - 3
src/components/OP/OpVisaPriec.vue

@@ -80,8 +80,10 @@
                     </div> -->
                     <div style="width: 25%;">
                         <el-form-item label="签证费用:" prop="visaPrice" label-width="160px">
-                            <el-input placeholder="签证费用" v-model="OpVisaPriceData.visaPrice" style="width: 58%;">
-                            </el-input>
+                            <el-input-number style="width:52%" :precision="2" placeholder="付款金额" v-model="OpVisaPriceData.visaPrice" :controls='false'>
+                            </el-input-number>
+                            <!-- <el-input placeholder="签证费用" v-model="OpVisaPriceData.visaPrice" style="width: 58%;">
+                            </el-input> -->
                             <el-select v-model="OpVisaPriceData.visaCurrency" filterable placeholder="币种"
                                 style="width: 35%;">
                                 <el-option v-for="item in rateList" :key="item.currencyId" :label="item.currencyCode"
@@ -348,7 +350,6 @@ export default {
             OpVisaPriceDataRules: {
                 visaPrice: [
                     { required: true, message: '请输入费用金额', trigger: ['blur', 'change'] },
-                    { pattern: /^(([1-9]?\d{0,8}(\.\d{1,2})?)|999999999|999999999\.(0){1,2})$/, message: '请输入正确的金额(最多2位小数)' }
                 ],
                 visaClient: [
                     { required: true, message: '请输入费用名称', trigger: ['blur'] },

+ 5 - 1
src/components/OP/VisaPriec.vue

@@ -55,7 +55,7 @@
                     </el-table-column>
                     <el-table-column prop="visaPrice,visaCurrencyStr" label="签证费用">
                         <template slot-scope="scope">
-                            {{ scope.row.visaPrice }}({{ scope.row.visaCurrencyStr }})
+                            {{ townum(scope.row.visaPrice) }}({{ scope.row.visaCurrencyStr }})
                         </template>
                     </el-table-column>
                     <el-table-column prop="isAuditGM" label="是否审核">
@@ -108,6 +108,10 @@ export default {
         }
     },
     methods: {
+        //保留两位小数
+        townum(val){
+            return val.toFixed(2)
+        },
         //每页条数改变时触发 选择一页显示多少行
         handleSizeChange(val) {
             this.currentPage = 1;