liuhj před 1 rokem
rodič
revize
d5d4c526bf

+ 3 - 0
src/components/Finance/Cost.vue

@@ -1008,6 +1008,9 @@ export default {
         box-shadow: 0 0 5px #0005;
         border-radius: 10px;
     }
+    .cost-box .el-button+.el-button{
+        margin-left: 0;
+    }
     .fade-enter-active,
     .fade-leave-active {
         transition: opacity 1;

+ 349 - 0
src/components/Finance/ExpenseReview.vue

@@ -0,0 +1,349 @@
+<template>
+    <div v-loading="fullscreenLoading">
+        <div class="group-list">
+            <div class="group-title">
+                <div>团组列表</div>
+                <div class="group-box">
+                    <el-select v-model="value" clearable placeholder="请选择" @change="filterStatus(value)">
+                        <el-option
+                        v-for="item in options"
+                        :key="item.value"
+                        :label="item.label"
+                        :value="item.value">
+                        </el-option>
+                    </el-select>
+                    <el-input
+                    style="width:200px;"
+                    @input="Inquireclick()"
+                    placeholder="请输入查询内容"
+                    v-model="input"
+                    clearable>
+                    </el-input>
+                </div>
+            </div>
+            <template>
+                <el-table
+                :data="groupDatas.slice((currentPage-1)*pageSize,currentPage*pageSize)"
+                border
+                style="width: 100%">
+                    <el-table-column
+                        prop="num"
+                        label="序 号"
+                        width="55">
+                        <template slot-scope="scope">
+                            {{(currentPage - 1) * pageSize + scope.$index + 1}}
+                        </template>
+                    </el-table-column>
+                    <el-table-column
+                        prop="tourCode"
+                        width="100"
+                        label="团 号">
+                    </el-table-column>
+                    <el-table-column
+                        width="100" 
+                        prop="salesQuoteNo"
+                        label="销售报价号">
+                    </el-table-column>
+                    <el-table-column
+                        prop="teamType"
+                        label="团组类型"
+                        width="150">
+                    </el-table-column>
+                    <!-- <el-table-column
+                        prop="teamLev"
+                        label="级 别"
+                        width="80">
+                    </el-table-column> -->
+                    <el-table-column
+                        prop="teamName"
+                        label="团队名称"
+                        >
+                    </el-table-column>
+                    <el-table-column
+                        prop="clientName"
+                        label="客户名称"
+                        width="100">
+                    </el-table-column>
+                    <el-table-column
+                        prop="clientUnit"
+                        label="客户单位">
+                    </el-table-column>
+                    <el-table-column
+                        prop="visitDate"
+                        :formatter="filteryear"
+                        label="出访时间"
+                        width="100">
+                    </el-table-column>
+                    <el-table-column
+                        prop="visitDays"
+                        label="出访天数"
+                        width="80">
+                    </el-table-column>
+                    <el-table-column
+                        prop="visitPNumber"
+                        label="出访人数"
+                        width="80">
+                    </el-table-column>
+                    <el-table-column
+                        prop="jietuanOperator"
+                        label="接团操作人"
+                        width="110">
+                    </el-table-column>
+                    <el-table-column label="操作">
+                        <template slot-scope="scope">
+                          <el-button
+                            type="primary"
+                            size="mini"
+                            title="查看费用清单"
+                            @click="handleView(scope.$index, scope.row)">查看费用清单</el-button>
+                        </template>
+                      </el-table-column>
+                </el-table>
+            </template>
+            <div class="block">
+                <el-pagination align='center' 
+                    @size-change="handleSizeChange" 
+                    @current-change="handleCurrentChange"
+                    :current-page="currentPage" 
+                    :page-sizes="[10,12,15,20]" 
+                    :page-size="pageSize" 
+                    layout="total, sizes, prev, pager, next" 
+                    :total="groupDatas.length">
+                </el-pagination>
+            </div>
+        </div>
+    </div>
+</template>
+<script>
+export default {
+    data() {
+        return {
+            options: [
+                {
+                    value: '0',
+                    label: '全部'
+                }, {
+                    value: '1',
+                    label: '已完成'
+                }, {
+                    value: '2',
+                    label: '未完成'
+                }
+            ],
+            value: '0',
+            groupDatas:[],
+            groupData: [],
+            groupDatass:[],
+            currentPage: 1, // 当前页码
+            pageSize: 12 ,// 每页的数据条数
+            input:'',
+            token:'',
+            fullscreenLoading:false,
+            userid:''
+        }
+    },
+    methods:{
+         //每页条数改变时触发 选择一页显示多少行
+         handleSizeChange(val) {
+            this.currentPage = 1;
+            this.pageSize = val;
+        },
+        //当前页改变时触发 跳转其他页
+        handleCurrentChange(val) {
+            this.currentPage = val;
+        },
+        //查看费用申请
+        handleView(index, row) {
+            this.$router.push({path: '/home/FeesPage?id=' + row.id +''});
+        },
+        //模糊查询
+        Inquireclick(){
+            var newarr=[];
+            if(this.input==""){
+                if(this.value=="0"){
+                    newarr=this.groupData;
+                }else{
+                    newarr=this.groupDatass;
+                }
+            }else{
+                for(var i=0;i<this.groupDatas.length;i++){
+                    if(this.groupDatas[i].clientName.indexOf(this.input)!=-1){
+                        newarr.push(this.groupDatas[i]);
+                    }
+                    else if(this.groupDatas[i].clientUnit.indexOf(this.input)!=-1){
+                        newarr.push(this.groupDatas[i]);
+                    }
+                    else if(this.groupDatas[i].jietuanOperator.indexOf(this.input)!=-1){
+                        newarr.push(this.groupDatas[i]);
+                    }
+                    else if(this.groupDatas[i].salesQuoteNo.indexOf(this.input)!=-1){
+                        newarr.push(this.groupDatas[i]);
+                    }
+                    else if(this.groupDatas[i].teamLev.indexOf(this.input)!=-1){
+                        newarr.push(this.groupDatas[i]);
+                    }
+                    else if(this.groupDatas[i].teamName.indexOf(this.input)!=-1){
+                        newarr.push(this.groupDatas[i]);
+                    }
+                    else if(this.groupDatas[i].teamType.indexOf(this.input)!=-1){
+                        newarr.push(this.groupDatas[i]);
+                    }
+                    else if(this.groupDatas[i].tourCode.indexOf(this.input)!=-1){
+                        newarr.push(this.groupDatas[i]);
+                    }else if(this.groupDatas[i].visitDate.indexOf(this.input)!=-1){
+                        newarr.push(this.groupDatas[i]);
+                    }
+                }
+            }
+            this.currentPage=1;
+            this.groupDatas=newarr;
+        },
+        //获取列表
+        Grouplist(){
+            var url="/api/Groups/GetGroupList"
+            var that=this
+            that.fullscreenLoading = true;
+            this.$axios({
+                method: 'post',
+                url:url,
+                headers:{
+                    Authorization:'Bearer '+this.token
+                },
+                data:{
+                    portType: 1,
+                }
+            }).then(function(res){
+                if(res.data.code==200){
+                    that.groupData=res.data.data
+                    that.groupData.forEach(item=>{
+                        if(item.clientName==null){
+                            item.clientName = ''
+                        } 
+                        if(item.clientUnit==null){
+                            item.clientUnit = ''
+                        } 
+                        if(item.id==null){
+                            item.id = ''
+                        } 
+                        if(item.isSure==null){
+                            item.isSure = ''
+                        } 
+                        if(item.jietuanOperator==null){
+                            item.jietuanOperator = ''
+                        } 
+                        if(item.salesQuoteNo==null){
+                            item.salesQuoteNo = ''
+                        } 
+                        if(item.teamName==null){
+                            item.teamName = ''
+                        } 
+                        if(item.teamType==null){
+                            item.teamType = ''
+                        } 
+                        if(item.tourCode==null){
+                            item.tourCode = ''
+                        } 
+                        if(item.visitDate==null){
+                            item.visitDate = ''
+                        } 
+                        if(item.visitDays==null){
+                            item.visitDays = ''
+                        } 
+                        if(item.visitPNumber==null){
+                            item.visitPNumber = ''
+                        } 
+                    })
+                    that.groupDatas=that.groupData;
+                    console.log(that.groupData)
+                    that.fullscreenLoading = false;
+                }
+            })
+        },
+        //处理时间
+        filteryear(val){
+            let gstime=val.visitDate.split(' ')[0]
+            return gstime;
+        },
+        //筛选状态
+        filterStatus(val){
+            var newgroup=[];
+            if(this.input==""){
+                if(val=="0"||val==""){
+                    newgroup=this.groupData;
+                }else if(val=="1"){
+                    for(var j=0;j<this.groupData.length;j++){
+                        if(this.groupData[j].isSure==1){
+                            newgroup.push(this.groupData[j])
+                        }
+                    }
+                }else if(val=="2"){
+                    for(var j=0;j<this.groupData.length;j++){
+                        if(this.groupData[j].isSure==0){
+                            newgroup.push(this.groupData[j])
+                        }
+                    }
+                }
+                this.currentPage=1;
+                this.groupDatas=newgroup
+                this.groupDatass=newgroup 
+            }else{
+                if(val=="0"||val==""){
+                    newgroup=this.groupData
+                }else if(val=="1"){
+                    for(var j=0;j<this.groupData.length;j++){
+                        if(this.groupData[j].isSure==1){
+                            newgroup.push(this.groupData[j])
+                        }
+                    }
+                }else if(val=="2"){
+                    for(var j=0;j<this.groupData.length;j++){
+                        if(this.groupData[j].isSure==0){
+                            newgroup.push(this.groupData[j])
+                        }
+                    }
+                }
+                this.currentPage=1;
+                this.groupDatas=newgroup
+                this.groupDatass=newgroup 
+                this.Inquireclick()
+            }
+        },
+    },
+    mounted(){
+        this.token=JSON.parse(localStorage.getItem('userinif')).token;
+        this.userid=JSON.parse(localStorage.getItem('userinif')).userInfo.userId;
+        this.Grouplist();
+    }
+}
+</script>
+<style>
+    .group-list{
+        background-color: #fff;
+        padding: 10px;
+        box-shadow: 0 0 5px #0005;
+        border-radius: 10px;
+    }
+    .group-title{
+        display: flex;
+        font-size: 17px;
+        font-weight:600 ;
+        color: #555;
+        margin-top: 8px;
+        margin-bottom: 2px;
+        justify-content: space-between;
+        align-items: center;
+    }
+    .group-box{
+        display: flex;
+    }
+    .group-box>button{
+        margin-left: 10px;
+        padding: 8px 20px;
+    }
+    .el-table td.el-table__cell, .el-table th.el-table__cell.is-leaf{
+        text-align: center;
+    }
+    .group-box>.el-input{
+        margin-left: 10px;
+    }
+</style>

+ 278 - 0
src/components/Finance/FeesPage.vue

@@ -0,0 +1,278 @@
+<template>
+    <div class="fesspage-box">
+        <div class="fesspage-head">
+            <el-form :inline="true" :model="formInline" class="demo-form-inline">
+                <el-form-item>
+                    <el-select v-model="formInline.Status" @change="shStatus()" placeholder="审核状态">
+                        <el-option v-for="(item,index) in AuditStatus" :key="index" :label="item.title" :value="item.id"></el-option>
+                    </el-select>
+                </el-form-item>
+                <el-form-item label="团队名称:">
+                    {{ formInline.name }}
+                </el-form-item>
+                <el-form-item label="客户:">
+                    {{ formInline.clientName }}
+                </el-form-item>
+                <el-form-item label="出访国家:">
+                    {{ formInline.CountriesVisited }}
+                </el-form-item>
+                <el-form-item label="起止日期:">
+                    {{ formInline.StartTime }}
+                </el-form-item>
+                <el-form-item label="天数/人数:">
+                    {{ formInline.Days }}天 / {{ formInline.Number }}人
+                </el-form-item>
+            </el-form>
+            <el-form :inline="true" :model="formInline" class="demo-form-inline">
+                <el-form-item>
+                    <el-button type="primary" @click="onSubmit">通 过(多选)</el-button>
+                </el-form-item>
+                <el-form-item>
+                    <el-button type="primary" @click="onSubmit">拒 绝(多选)</el-button>
+                </el-form-item>
+                <el-form-item label="审核未通过原因:">
+                    <el-radio-group @change="onSubmit" v-model="formInline.resource">
+                        <el-radio label="1、成本太高"></el-radio>
+                        <el-radio label="2、金额填写错误 "></el-radio>
+                        <el-radio label="3、其他"></el-radio>
+                    </el-radio-group>
+                </el-form-item>
+                <el-form-item v-show="causetrue">
+                    <el-input v-model="formInline.cause"></el-input>
+                  </el-form-item>
+            </el-form>
+        </div>
+        <el-tabs v-model="activeName" type="card" @tab-click="handleClick">
+            <el-tab-pane label="所有" name="-1"></el-tab-pane>
+            <el-tab-pane label="酒店预订" name="76"></el-tab-pane>
+            <el-tab-pane label="车导地接" name="79"></el-tab-pane>
+            <el-tab-pane label="签证" name="80"></el-tab-pane>
+            <el-tab-pane label="邀请公务" name="81"></el-tab-pane>
+            <el-tab-pane label="机票预订" name="85"></el-tab-pane>
+            <el-tab-pane label="团组增减款项" name="98"></el-tab-pane>
+        </el-tabs>
+        <div>
+            <el-table
+            ref="multipleTable"
+            border
+            :data="tableData"
+            tooltip-effect="dark"
+            style="width: 100%"
+            @selection-change="handleSelectionChange">
+                <el-table-column
+                type="selection"
+                width="40">
+                </el-table-column>
+                <el-table-column
+                prop="priceNameContent"
+                label="费用所属"
+                width="200">
+                    <template slot-scope="scope">
+                        <el-popover style="white-space: pre-wrap;" placement="top-start" width="100" trigger="click" :content="scope.row.priceMsgContent">
+                            <span slot="reference">{{ scope.row.priceNameContent}}</span>
+                        </el-popover>
+                    </template>
+                </el-table-column>
+                <el-table-column
+                prop="priceName"
+                label="费用模块"
+                width="120">
+                </el-table-column>
+                <el-table-column
+                prop="busName"
+                label="Bus名称"
+                show-overflow-tooltip>
+                </el-table-column>
+                <el-table-column
+                prop="waitPay"
+                label="应付款金额"
+                show-overflow-tooltip>
+                </el-table-column>
+                <el-table-column
+                prop="currPay"
+                label="此次付款金额"
+                show-overflow-tooltip>
+                </el-table-column>
+                <el-table-column
+                prop="balance"
+                label="剩余尾款"
+                show-overflow-tooltip>
+                </el-table-column>
+                <el-table-column
+                prop="operatorName"
+                label="申请人"
+                width="100"
+                show-overflow-tooltip>
+                </el-table-column>
+                <el-table-column
+                prop="auditOperatorName"
+                label="审核人"
+                width="100"
+                show-overflow-tooltip>
+                </el-table-column>
+                <el-table-column
+                prop="overBudget"
+                label="超预算比例"
+                show-overflow-tooltip>
+                </el-table-column>
+                <el-table-column
+                prop="address"
+                label="审核操作"
+                >
+                    <template slot-scope="scope">
+                        <el-button
+                        size="mini"
+                        @click="handleEdit(scope.$index, scope.row)">通 过</el-button>
+                        <el-button
+                        size="mini"
+                        type="danger"
+                        @click="handleDelete(scope.$index, scope.row)">拒 绝</el-button>
+                    </template>
+                </el-table-column>
+            </el-table>
+        </div>
+    </div>
+</template>
+
+<script>
+import { co } from '@fullcalendar/core/internal-common';
+export default {
+    data() {
+        return {
+            activeName: '-1',
+            diid:'',
+            token:'',
+            causetrue:false,
+            formInline: {
+                Status: -1,
+                name: '甘孜州州长团赴瑞士、希腊、奥地利10日团',
+                clientName:'兰卡彬真',
+                // clientPhone:'15884061115',
+                CountriesVisited:'瑞士 希腊 奥地利',
+                StartTime:' 2023-08-20',
+                // EndTime:'2023-08-29',
+                Number:5,
+                Days:10,
+                resource:'',
+                cause:""
+            },
+            AuditStatus:[
+                {
+                    id:-1,
+                    title:'全部'
+                },
+                {
+                    id:0,
+                    title:'未审核'
+                },
+                {
+                    id:1,
+                    title:'审核通过'
+                },
+                {
+                    id:2,
+                    title:'审核不通过'
+                },
+            ],
+            tableData: [],
+            multipleSelection: []
+        }
+    },
+    methods: {
+        onSubmit() {
+            console.log(this.formInline.resource);
+            if(this.formInline.resource=='3、其他'){
+                this.causetrue=true;
+            }else{
+                this.causetrue=false;
+            }
+        },
+        getPostSearchGrpCreditCardPayment(){
+            var url="/api/Groups/PostSearchGrpCreditCardPayment"
+            var that=this
+            this.$axios({
+                method: 'post',
+                url:url,
+                headers:{
+                    Authorization:'Bearer '+that.token
+                },
+                data:{
+                    diId: 2270,
+                    label:that.activeName,
+                    auditStatus:that.formInline.Status
+                }
+            }).then(function(res){
+                console.log(res);
+                if(res.data.code==200){
+                    that.formInline.name=res.data.data.teamName;
+                    that.formInline.clientName=res.data.data.clientName;
+                    that.formInline.CountriesVisited=res.data.data.visitCountry;
+                    that.formInline.StartTime=res.data.data.visitDate;
+                    that.formInline.Days=res.data.data.visitDays;
+                    that.formInline.Number=res.data.data.visitPNumber;
+                    that.tableData=res.data.data.detailList;
+                }
+            })
+        },
+        handleSelectionChange(val) {
+            this.multipleSelection = val;
+        },
+        handleClick(tab, event) {
+            this.activeName=tab.name;
+            this.getPostSearchGrpCreditCardPayment();
+        },
+        shStatus(){
+            this.getPostSearchGrpCreditCardPayment();
+        },
+        handleEdit(index, row) {
+            console.log(index, row);
+        },
+        handleDelete(index, row) {
+            console.log(index, row);
+        },
+        PostAuditGrpCreditCardPayment(){
+            var url="/api/Groups/PostAuditGrpCreditCardPayment"
+            var that=this
+            this.$axios({
+                method: 'post',
+                url:url,
+                headers:{
+                    Authorization:'Bearer '+that.token
+                },
+                data:{
+                    creditId: 2270,
+                    auditCode:that.activeName,
+                    user:that.formInline.Status
+                }
+            }).then(function(res){
+                console.log(res);
+                if(res.data.code==200){
+                    
+                }
+            })
+        },
+    },
+    mounted(){
+        this.diid=this.$route.query.id;
+        this.token=JSON.parse(localStorage.getItem('userinif')).token;
+        this.getPostSearchGrpCreditCardPayment();
+    }
+}
+</script>
+<style>
+    .fesspage-box{
+        background-color: #fff;
+        padding: 10px;
+        box-shadow: 0 0 5px #0005;
+        border-radius: 10px;
+    }
+    .fesspage-head .el-form-item__label{
+        font-weight: 600;
+    }
+    .fesspage-head .el-form--inline .el-form-item__content{
+        color: #606266;
+    }
+    .fesspage-head .el-form-item{
+        margin-bottom: 10px;
+    }
+</style>

+ 12 - 0
src/router/index.js

@@ -49,6 +49,8 @@ import GroupsTaskAssignment from '@/components/OP/GroupsTaskAssignment';
 import DailyFeePayment from '@/components/Finance/DailyFeePayment';
 import DailyFeeedit from '@/components/Finance/DailyFeeedit';
 import GPTindex from '@/components/GPT/GPTindex';
+import ExpenseReview from '@/components/Finance/ExpenseReview';
+import FeesPage from '@/components/Finance/FeesPage';
 
 Vue.use(Router)
 
@@ -282,6 +284,16 @@ export default new Router({
           name: 'GPTindex',
           component: GPTindex
         },
+        {
+          path: '/home/ExpenseReview',
+          name: 'ExpenseReview',
+          component: ExpenseReview
+        },
+        {
+          path: '/home/FeesPage',
+          name: 'FeesPage',
+          component: FeesPage
+        },
       ]
     },
     {