Browse Source

Merge branch 'master' of http://132.232.92.186:3000/XinXiBu/oa-system

yuanrf 1 year ago
parent
commit
fb5134d9a8

+ 1 - 1
src/components/Finance/Payroll.vue

@@ -12,7 +12,7 @@
                 </div>
                 <div class="payroll-head-li">
                     <el-button type="primary" @click="addsalary()">新增</el-button>
-                    <el-button type="primary">成都公司工资单</el-button>
+                    <el-button type="primary">c</el-button>
                     <el-button type="primary">四川公司工资单</el-button>
                     <el-button type="primary">纽茵公司工资单</el-button>
                 </div>

+ 447 - 0
src/components/OP/CarTouristGuideGrounContent.vue

@@ -0,0 +1,447 @@
+<template>
+    <div class="car_add">
+        <div>
+            <div class="communal-title">
+                <div>OP费用填写明细</div>
+            </div>
+        </div>
+        <el-skeleton :rows="28" animated :loading="loading">
+            <div style="display: flex;justify-content: space-between;">
+                <div style="width: 80%;display: flex;">
+                    <div style="width: 25%;">
+                        <el-select v-model="diId" placeholder="团组选择" clearable filterable style="width: 100%;"
+                            :disabled="true">
+                            <el-option v-for="item in delegationInfoList" :key="item.id" :label="item.teamName"
+                                :value="item.id">
+                            </el-option>
+                        </el-select>
+                    </div>
+                    <div style="width: 25%;">
+                        <el-select v-model="currency" placeholder="币种选择" clearable filterable style="width: 80%;">
+                            <el-option v-for="item in currencyList" :key="item.id"
+                                :label="item.name + '(' + item.remark + ')'" :value="item.id">
+                            </el-option>
+                        </el-select>
+                    </div>
+                </div>
+            </div>
+            <div style="margin:10px 0;color:#606266;font-size:12px;">
+                <span style="font-weight: bold;font-size:12px;">团队名称:</span>
+                <span style="color:#606266;">{{ delegationInfo.teamName }}&nbsp;&nbsp;&nbsp;</span>
+                <span style="font-weight: bold;font-size:12px;">客户:</span>
+                <span style="color:#606266;font-size:12px;">{{ delegationInfo.clientName }}&nbsp;&nbsp;&nbsp; </span>
+                <span style="font-weight: bold;font-size:12px;">出访国家:</span>
+                <span style="color:#606266;font-size:12px;">{{ delegationInfo.visitCountry }}&nbsp;&nbsp;&nbsp;</span>
+                <span style="font-weight: bold;font-size:12px;">起止日期:</span>
+                <span style="color:#606266;font-size:12px;">{{ VisitDate }}&nbsp;&nbsp;&nbsp;</span>
+                <span style="font-weight: bold;font-size:12px;">天数/人数:</span>
+                <span style="color:#606266;font-size:12px;">{{ delegationInfo.visitDays }}天/{{
+                    delegationInfo.visitPNumber }}人</span>
+            </div>
+            <hr style='background-color:#5555; height:1px; border:none;' />
+            <div>
+                <template>
+                    <el-table :data="ContenList" border style="width: 100%">
+                        <el-table-column prop="num" label="序 号" width="55">
+                            <template slot-scope="scope">
+                                {{ scope.$index + 1 }}
+
+                            </template>
+                        </el-table-column>
+                        <el-table-column prop="SIdName" label="费用项目" width="100">
+                            <template slot-scope="scope">
+                                <span style="display: none;">{{ scope.row.sId }}</span>{{ scope.row.sIdName }}
+                            </template>
+                        </el-table-column>
+                        <el-table-column label="金额币种">
+                            <template slot-scope="scope">
+                                <el-input placeholder="请输入金额" v-model="scope.row.price" clearable style="width:180px;"
+                                    @change="PriceChange" />
+                                <el-select v-model="currency" placeholder="币种选择" clearable filterable style="width:120px"
+                                    :disabled="true">
+                                    <el-option v-for="item in currencyList" :key="item.id" :label="item.name"
+                                        :value="item.id">
+                                    </el-option>
+                                </el-select>
+                            </template>
+                        </el-table-column>
+                        <el-table-column label="费用明细">
+                            <template slot-scope="scope">
+                                <el-input type="textarea" :rows="1" placeholder="费用明细"
+                                    v-model="scope.row.priceContent"></el-input>
+                            </template>
+                        </el-table-column>
+                        <el-table-column label="备注">
+                            <template slot-scope="scope">
+                                <el-input type="textarea" :rows="1" placeholder="备注" v-model="scope.row.remark"></el-input>
+                            </template>
+                        </el-table-column>
+                    </el-table>
+                    <hr style='background-color:#5555; height:1px; border:none;' />
+                    <el-form :model="OPContenData" ref="OPContenData" :rules="OPContenDataRules" label-width="100px"
+                        class="demo-ruleForm">
+                        <div style="display: flex;">
+
+                            <div style="width: 25%;">
+                                <el-form-item label="此次付款百分百:" prop="payPercentage" label-width="160px">
+                                    <el-input placeholder="此次付款百分百" v-model="OPContenData.payPercentage">
+                                        <template slot="append">%</template>
+                                    </el-input>
+                                </el-form-item>
+                            </div>
+                            <div style="width: 25%;">
+                                <el-form-item label="收款方:" prop="payee" label-width="160px">
+                                    <el-input placeholder="联系电话" v-model="OPContenData.payee">
+                                    </el-input>
+                                </el-form-item>
+                            </div>
+                            <div style="width: 25%;">
+                                <el-form-item label="费用表示:" prop="orbitalPrivateTransfer" label-width="160px">
+                                    <el-select v-model="OPContenData.orbitalPrivateTransfer" clearable filterable
+                                        placeholder="费用标识" style="width: 220px;">
+                                        <el-option :key=0 :value="0" label="公转"></el-option>
+                                        <el-option :key=1 :value="1" label="私转"></el-option>
+                                    </el-select>
+                                </el-form-item>
+                            </div>
+                            <div style="width: 25%;">
+                                <el-form-item label="支付方式:" prop="payDId" label-width="160px">
+                                    <el-select v-model="OPContenData.payDId" placeholder="支付方式" clearable filterable
+                                        style="width:120px">
+                                        <el-option v-for="item in payment" :key="item.id" :label="item.name"
+                                            :value="item.id">
+                                        </el-option>
+                                    </el-select>
+                                </el-form-item>
+                            </div>
+                        </div>
+                        <div style="display: flex;">
+
+                            <div style="width: 50%;">
+                                <el-form-item label="总金额:" label-width="160px">
+                                    <el-input placeholder="金额" v-model="countCost" :disabled="true"
+                                        style="width: 120px;"></el-input>
+                                    <el-select v-model="currency" placeholder="币种选择" clearable filterable
+                                        style="width:120px" :disabled="true">
+                                        <el-option v-for="item in currencyList" :key="item.id" :label="item.name"
+                                            :value="item.id">
+                                        </el-option>
+                                    </el-select>
+                                </el-form-item>
+                            </div>
+                            <div style="width: 50%;text-align: right;">
+                                <el-form-item>
+                                    <div style="margin-right: 25%;">
+                                        <el-button type="primary" @click="addBtn">保存</el-button>
+                                        <el-button @click="EscAdd">取消</el-button>
+                                    </div>
+                                </el-form-item>
+                            </div>
+
+                        </div>
+
+                    </el-form>
+
+                </template>
+
+            </div>
+        </el-skeleton>
+    </div>
+</template>
+<script>
+import { dE } from '@fullcalendar/core/internal-common'
+export default {
+    data() {
+        return {
+            token: '',
+            userId: 0,
+            id: '',
+            diId: '',
+            loading: true,
+            currency: 836,
+            countCost: 0,
+            delegationInfo: {},
+            delegationInfoList: [],//团组下拉框
+            currencyList: [],
+            tableInitialization: [],
+            payment: [],
+            IsAuditGM: 0,
+            ContenList: [],
+            OPContenData: {
+                diId: '',
+                cTGGRId: '',
+                orbitalPrivateTransfer: 0,
+                payPercentage: '80',
+                payee: '',
+                payDId: '',
+                currency: '',
+                OPContenList: [],
+                CreateUserId: 0
+            },
+            OPContenDataRules: {
+                payPercentage: [
+                    { required: true, message: '请输入付款百分百', trigger: ['blur', 'change'] },
+                ],
+                orbitalPrivateTransfer: [
+                    { required: true, message: '请选择费用标识', trigger: ['blur', 'change'] },
+                ],
+                payee: [
+                    { required: true, message: '请输入收款方', trigger: ['blur', 'change'] },
+                ],
+                payDId: [
+                    { required: true, message: '请选择付款方式', trigger: ['blur', 'change'] },
+                ]
+            },
+            VisitDate: '',
+            dateFormat: function (value) {
+
+                // 将value转换为Date对象
+                var date = new Date(value);
+                // 获取年、月、日
+                var year = date.getFullYear();
+                var month = date.getMonth() + 1;
+                var day = date.getDate();
+                // 将月份和日期转换为两位数的格式
+
+                if (month < 10) {
+                    month = '0' + month;
+                }
+                if (day < 10) {
+                    day = '0' + day;
+                }
+                // 返回格式化后的日期字符串
+                return year + '-' + month + '-' + day;
+            },
+        }
+    },
+    methods: {
+        //初始化下拉框
+        initializeSelect() {
+            //团组下拉框绑定
+            var url = "/api/Groups/CarTouristGuideGroundContenInitialize"
+            var that = this
+            this.$axios({
+                method: 'post',
+                url: url,
+                headers: {
+                    Authorization: 'Bearer ' + this.token
+                },
+                data: {
+                    userId: that.userId,
+                }
+            }).then(function (res) {
+                if (res.data.code == 200) {
+                    debugger
+                    that.delegationInfoList = res.data.data.delegations;
+                    for (let index = 0; index < that.delegationInfoList.length; index++) {
+                        debugger
+                        if (that.delegationInfoList[index].id == that.diId) {
+                            that.delegationInfo = that.delegationInfoList[index];
+                            that.VisitDate = that.dateFormat(that.delegationInfo.visitStartDate) + '至' + that.dateFormat(that.delegationInfo.visitEndDate);
+                            break;
+                        }
+                    }
+                    that.currencyList = res.data.data.currencyList;
+                    debugger
+                    that.tableInitialization = res.data.data.tableInitialization;
+                    that.tableInitialization.forEach(function (item) {
+                        that.ContenList.push({
+                            id: 0,
+                            sId: item.id,
+                            sIdName: item.name,
+                            price: '0.00',
+                            priceContent: '',
+                            remark: '',
+                        })
+                    });
+                    that.payment = res.data.data.payment;
+                    that.OpCarTouristGuideGroundContenById()
+                }
+
+            })
+
+        },
+        OpCarTouristGuideGroundContenById() {
+            var url = "/api/Groups/OpCarTouristGuideGroundContenById"
+            var that = this
+            this.$axios({
+                method: 'post',
+                url: url,
+                headers: {
+                    Authorization: 'Bearer ' + this.token
+                },
+                data: {
+                    id: that.id
+                }
+            }).then(function (res) {
+                if (res.data.code == 200) {
+                    debugger
+                    var CreditCardPayment = res.data.data.creditCardPayment;
+                    if (CreditCardPayment != null) {
+                        that.OPContenData.payDId = CreditCardPayment.payDId
+                        that.OPContenData.payee = CreditCardPayment.payee
+                        that.currency = CreditCardPayment.paymentCurrency
+                        that.OPContenData.payPercentage = CreditCardPayment.payPercentage
+                        that.countCost = CreditCardPayment.payMoney
+                    }
+                    var CarTouristsConten = res.data.data.carTouristsConten;
+                    if (CarTouristsConten.length != 0) {
+                        CarTouristsConten.forEach(function (item) {
+                            that.ContenList.forEach(function (item1) {
+                                if (item.sId == item1.sId) {
+                                    item1.id = item.id
+                                    item1.price = item.price
+                                    item1.priceContent = item.priceContent
+                                    item1.remark = item.remark
+                                }
+
+                            })
+                        })
+                    }
+                    var CarTourists = res.data.data.carTourists
+                    if (CarTourists != null) {
+                        that.OPContenData.orbitalPrivateTransfer = CarTourists.orbitalPrivateTransfer
+                    }
+                    that.loading = false
+                }
+            })
+        },
+        addBtn() {
+            if (this.IsAuditGM == 1) {
+                this.$message.error('已通过审核,不可修改!');
+            } else {
+                debugger
+                if (this.diId == null && this.diId == undefined && this.diId == "") {
+                    this.$message.error("请选择团组名称");
+                    return;
+                } else {
+                    var that = this
+                    that.$refs.OPContenData.validate((valid) => {
+                        if (valid) {
+                            that.OPContenData.diId = that.diId
+                            that.OPContenData.cTGGRId = that.id
+                            that.OPContenData.currency = that.currency
+                            that.OPContenData.CreateUserId = that.userId
+                            that.ContenList.forEach(function (item) {
+                                that.OPContenData.OPContenList.push({
+                                    id: item.id,
+                                    sId: item.sId,
+                                    price: item.price,
+                                    priceContent: item.priceContent,
+                                    remark: item.remark,
+                                })
+                            })
+
+                            var url = "/api/Groups/OpCarTouristGuideGroundConten"
+                            that.$axios({
+                                method: 'post',
+                                url: url,
+                                headers: {
+                                    Authorization: 'Bearer ' + that.token
+                                },
+                                data: that.OPContenData
+                            }).then(function (res) {
+                                if (res.data.code == 200) {
+                                    that.$message({
+                                        message: res.data.msg,
+                                        type: 'success'
+                                    });
+                                } else {
+                                    that.$message.error(res.data.msg);
+                                }
+                            })
+                        } else {
+                            this.$message.error('请完善信息在保存!');
+                            return false;
+                        }
+                    })
+                }
+            }
+        },
+        EscAdd() {
+            this.$router.push({
+                path: "/home/CarTouristGuideGroundId",
+                query: {
+                    diId: this.diId
+                }
+            })
+        },
+        PriceChange() {
+            var countCost = 0;
+            this.ContenList.forEach(function (item) {
+                if (item.price != '') {
+                    countCost += parseFloat(item.price)
+                }
+
+            })
+
+            this.countCost = countCost
+        }
+    },
+
+    mounted() {
+        this.token = JSON.parse(localStorage.getItem('userinif')).token;
+        this.userId = JSON.parse(localStorage.getItem('userinif')).userInfo.userId
+        this.id = this.$route.query.id
+        this.diId = parseInt(this.$route.query.diId)
+        this.initializeSelect();
+        //this.OpCarTouristGuideGroundContenById();
+
+    }
+}
+</script>
+<style>
+.communal-list {
+    background-color: #fff;
+    padding: 10px;
+    box-shadow: 0 0 5px #0005;
+    border-radius: 10px;
+}
+
+.car_add .communal-title {
+    display: flex;
+    font-size: 17px;
+    font-weight: 600;
+    color: #555;
+    margin-bottom: 20px;
+    justify-content: space-between;
+    align-items: center;
+}
+
+.appraise-box {
+    display: flex;
+    flex-wrap: wrap;
+    justify-content: space-between;
+    margin: 50px 0;
+}
+
+.appraise-box>div {
+    width: 30%;
+}
+
+.communal-box {
+    display: flex;
+}
+
+.communal-box>button {
+    margin-left: 10px;
+    padding: 8px 20px;
+}
+
+.car_add {
+    background-color: #fff;
+    padding: 20px;
+    box-shadow: 0 0 5px #0005;
+    border-radius: 10px;
+}
+
+@media screen and (max-width: 1700px) {
+    .appraise-box>div {
+        width: 48%;
+    }
+
+    .appraise-box>div el-form-item__content {
+        width: 260px !important;
+    }
+}
+</style>

+ 348 - 0
src/components/OP/CarTouristGuideGroundId.vue

@@ -0,0 +1,348 @@
+<template>
+    <div>
+        <div class="communal-list">
+            <div>
+
+                <div class="communal-title">
+                    <div>车导地接费用录入</div>
+                </div>
+                <div style="display: flex;justify-content: space-between;">
+
+                    <div style="width: 80%;display: flex;">
+                        <div style="width: 25%;">
+                            <el-select v-model="DiId" placeholder="团组选择" clearable filterable @change="deleSelectChange"
+                                style="width: 100%;">
+                                <el-option v-for="item in delegationInfoList" :key="item.id" :label="item.teamName"
+                                    :value="item.id">
+                                </el-option>
+                            </el-select>
+                        </div>
+                    </div>
+                    <div style="width: 20%">
+                        <el-button type="primary" style="" @click="addIf">新增</el-button>
+                    </div>
+                </div>
+            </div>
+            <div style="margin:10px 0;color:#606266;">
+                <span style="font-weight: bold;font-size:17px;">团队名称:</span>
+                <span style="color:#606266;">{{ delegationInfo.teamName }}&nbsp;&nbsp;&nbsp;</span>
+                <span style="font-weight: bold;font-size:17px;">客户:</span>
+                <span style="color:#606266;">{{ delegationInfo.clientName }}&nbsp;&nbsp;&nbsp; {{
+}}&nbsp;&nbsp;&nbsp;</span>
+                <span style="font-weight: bold;font-size:17px;">出访国家:</span>
+                <span style="color:#606266;">{{ delegationInfo.visitCountry }}&nbsp;&nbsp;&nbsp;</span>
+                <span style="font-weight: bold;font-size:17px;">起止日期:</span>
+                <span style="color:#606266;">{{ delegationInfo.visitStartDate }}—{{ delegationInfo.visitEndDate
+                }}&nbsp;&nbsp;&nbsp;</span>
+                <span style="font-weight: bold;font-size:17px;">天数/人数:</span>
+                <span style="color:#606266;">{{ delegationInfo.visitDays }}天/{{ delegationInfo.visitPNumber }}人</span>
+            </div>
+
+            <template>
+                <el-table :data="tableDatas.slice((currentPage - 1) * pageSize, currentPage * pageSize)" border
+                    style="width: 100%" v-loading="loading" element-loading-text="拼命加载中...">
+                    <el-table-column prop="num" label="序 号">
+                        <template slot-scope="scope">
+                            {{ (currentPage - 1) * pageSize + scope.$index + 1 }}
+                        </template>
+                    </el-table-column>
+                    <el-table-column prop="area" label="地区">
+                    </el-table-column>
+                    <el-table-column prop="serviceGuide" label="服务导游">
+                    </el-table-column>
+                    <el-table-column prop="serviceTel" label="导游联系电话">
+                    </el-table-column>
+                    <el-table-column prop="busName" label="Bus名称">
+                    </el-table-column>
+                    <el-table-column prop="busTel" label="Bus联系电话">
+                    </el-table-column>
+                    <el-table-column prop="serviceStartTime" label="服务时间起止">
+                        <template slot-scope="scope">
+                            {{ scope.row.serviceStartTime }}至{{ scope.row.serviceEndTime }}
+                        </template>
+                    </el-table-column>
+                    <el-table-column prop="serviceQuotedPrice" label="服务报价">
+                        <template slot-scope="scope">
+                            {{ scope.row.serviceQuotedPrice }} {{ scope.row.currencyStr }}
+                        </template>
+                    </el-table-column>
+                    <el-table-column prop="payPercentage" label="付款百分比">
+                        <template slot-scope="scope">
+                            {{ scope.row.payPercentage }}%
+                        </template>
+                    </el-table-column>
+                    <el-table-column prop="payThenMoney" label="此次付款金额">
+                        <template slot-scope="scope">
+                            {{ scope.row.payThenMoney }} {{ scope.row.currencyStr }}
+                        </template>
+                    </el-table-column>
+                    <el-table-column prop="remainingBalance" label="尾款金额">
+                        <template slot-scope="scope">
+                            {{ scope.row.remainingBalance }} {{ scope.row.currencyStr }}
+                        </template>
+                    </el-table-column>
+                    <el-table-column prop="isAuditGM" label="是否审核">
+                        <template slot-scope="isAuditGM">
+                            <span v-if="isAuditGM.row.isAuditGM == 1">已通过</span>
+                            <span v-else-if="isAuditGM.row.isAuditGM == 0">未审核</span>
+                            <span v-else-if="isAuditGM.row.isAuditGM == 2">未通过</span>
+                            <span v-else>自动审核通过</span>
+                        </template>
+                    </el-table-column>
+                    <el-table-column prop="id" label="详细费用">
+                        <template slot-scope="scope">
+                            <a @click="AddDetails(scope.row.id)">点击填写</a>
+                        </template>
+
+                    </el-table-column>
+                    <el-table-column label="操作">
+                        <template slot-scope="scope">
+                            <el-button-group>
+                                <el-button type="primary" size="mini" icon="el-icon-edit"
+                                    @click="upDate(scope.$index, scope.row)"></el-button>
+                                <el-button type="danger" size="mini" icon="el-icon-delete"
+                                    @click="del(scope.$index, scope.row)"></el-button>
+                            </el-button-group>
+                        </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="tableDatas.length">
+                </el-pagination>
+            </div>
+        </div>
+    </div>
+</template>
+<script>
+import { el } from '@fullcalendar/core/internal-common';
+export default {
+    data() {
+        return {
+            loading: false,
+            tableDatas: [],
+            tableData: [],
+            currentPage: 1, // 当前页码
+            pageSize: 12,// 每页的数据条数
+            input: '',
+            token: '',
+            userId: 0,
+            DiId: '',
+            VisaSelectList: [],
+            VisaClient: '',
+            delegationInfoList: [],
+            delegationInfo: {},
+        }
+    },
+    methods: {
+        //每页条数改变时触发 选择一页显示多少行
+        handleSizeChange(val) {
+            this.currentPage = 1;
+            this.pageSize = val;
+        },
+        //当前页改变时触发 跳转其他页
+        handleCurrentChange(val) {
+            this.currentPage = val;
+        },
+        //团组下拉框
+        deleSelect() {
+            var url = "/api/Groups/DecreasePaymentsSelect"
+            var that = this
+            this.$axios({
+                method: 'post',
+                url: url,
+                headers: {
+                    Authorization: 'Bearer ' + this.token
+                },
+                data: {
+                    UserId: that.userId,
+                    CTId: 79
+                }
+            }).then(function (res) {
+                if (res.data.code == 200) {
+                    debugger
+                    debugger
+                    that.delegationInfoList = res.data.data.groupName;
+                    that.DiId = that.$route.query.diId
+                    if (that.DiId == undefined) {
+                        that.delegationInfo = that.delegationInfoList[0]
+                        that.DiId = that.delegationInfoList[0].id;
+                    } else {
+                        for (let index = 0; index < that.delegationInfoList.length; index++) {
+                            debugger
+                            if (that.delegationInfoList[index].id == that.DiId) {
+                                that.delegationInfo = that.delegationInfoList[index];
+                                that.DiId = that.delegationInfoList[index].id;
+                                break;
+                            }
+                        }
+                    }
+
+                    that.QueryCarTouristGuideGroundByDiId()
+                }
+            }).catch(function (error) {
+                that.$message.error("网络错误,请稍后重试");
+            });
+        },
+        deleSelectChange() {
+            if (this.DiId != "") {
+                this.QueryCarTouristGuideGroundByDiId();
+            } else {
+                this.tableDatas = [];
+                this.tableData = [];
+            }
+        },
+        //团组信息绑定
+        QueryCarTouristGuideGroundByDiId() {
+            var url = "/api/Groups/QueryCarTouristGuideGroundByDiId"
+            var that = this
+            this.$axios({
+                method: 'post',
+                url: url,
+                headers: {
+                    Authorization: 'Bearer ' + this.token
+                },
+                data: {
+                    pageIndex: 0,
+                    pageSize: 0,
+                    portType: 1,
+                    diID: that.DiId,
+                }
+            }).then(function (res) {
+                if (res.data.code == 200) {
+                    debugger
+                    that.tableDatas = res.data.data;
+                    that.tableData = that.tableDatas
+                    if (that.tableDatas.length != 0) {
+                        if (that.tableDatas.slice((that.currentPage - 1) * that.pageSize, that.currentPage * that.pageSize).length == 0) {
+                            if (that.currentPage > 1) {
+                                that.currentPage = that.currentPage - 1;
+                            }
+                        }
+                    }
+
+                }
+
+            }).catch(function (error) {
+
+                that.$message.error("网络错误,请稍后重试");
+            });
+        },
+        //填写详细费用
+        AddDetails(id) {
+            this.$router.push({
+                path: "/home/CarTouristGuideGrounContent",
+                query: {
+                    id: id,
+                    diId: this.DiId,
+                }
+            })
+
+        },
+        upDate(index, row) {
+            this.$router.push({
+                path: "/home/OpCarTouristGuideGroundId",
+                query: {
+                    DiId: this.DiId,
+                    id: row.id
+                }
+            })
+
+        },
+        addIf() {
+            debugger
+            if (this.DiId != 0 && this.DiId != '' && this.DiId != undefined) {
+                this.$router.push({
+                    path: "/home/OpCarTouristGuideGroundId",
+                    query: {
+                        DiId: this.DiId,
+                    }
+                })
+
+            } else {
+                this.$message('请选择团组在进行添加');
+            }
+        },
+        del(index, row) {
+            this.$confirm('此操作将删除该数据, 是否继续?', '提示', {
+                confirmButtonText: '确定',
+                cancelButtonText: '取消',
+                type: 'warning'
+            }).then(() => {
+                var url = "/api/Groups/DelCarTouristGuideGround"
+                var that = this
+                this.$axios({
+                    method: 'post',
+                    url: url,
+                    headers: {
+                        Authorization: 'Bearer ' + this.token
+                    },
+                    data: {
+                        Id: row.id,
+                        DeleteUserId: this.userId
+                    }
+                }).then(function (res) {
+                    console.log(res)
+
+                    if (res.data.code == 200) {
+
+                        that.$message({
+                            message: '删除成功',
+                            type: 'success'
+                        });
+                        that.PostVisaByDiId();
+                    } else {
+                        that.$message.error('删除失败!');
+                    }
+                    that.loading = false
+                }).catch(function (error) {
+                    that.loading = false
+                    that.$message.error("网络错误,请稍后重试");
+                });
+            }).catch(() => {
+                this.$message({
+                    type: 'info',
+                    message: '操作已取消!'
+                });
+            });
+        },
+    },
+    mounted() {
+        this.token = JSON.parse(localStorage.getItem('userinif')).token;
+        this.userId = JSON.parse(localStorage.getItem('userinif')).userInfo.userId
+
+        this.deleSelect();
+        //this.AirTicketResList()
+    }
+}
+</script>
+<style>
+.communal-list {
+    background-color: #fff;
+    padding: 10px;
+    box-shadow: 0 0 5px #0005;
+    border-radius: 10px;
+}
+
+.communal-title {
+    display: flex;
+    font-size: 17px;
+    font-weight: 600;
+    color: #555;
+    margin-top: 8px;
+    margin-bottom: 10px;
+    justify-content: space-between;
+    align-items: center;
+}
+
+.communal-box {
+    display: flex;
+}
+
+.communal-box>button {
+    margin-left: 10px;
+    padding: 8px 20px;
+}
+</style>

+ 428 - 43
src/components/OP/EntryDetails.vue

@@ -4,7 +4,7 @@
             <div class="Entry-head">
                 <div class="Entry-head-li">
                     <label>团组名称:</label>
-                    <el-select v-model="value" filterable placeholder="请选择">
+                    <el-select @change="chengvalue()" v-model="value" filterable placeholder="请选择">
                         <el-option
                             v-for="item in options"
                             :key="item.id"
@@ -16,14 +16,15 @@
                 <div class="Entry-head-li">
                     <el-button type="primary">计算费用</el-button>
                     <el-button type="primary">全部清空</el-button>
-                    <el-button type="primary">保存</el-button>
+                    <el-button @click="storage()" type="primary">保存</el-button>
                     <el-button type="primary">导出所选明细表</el-button>
                     <el-button type="primary">导出下拉所选表格</el-button>
                 </div>
             </div>
             <div class="Entry-form">
                 <div class="Entry-form-li">
-                    <div class="Entry-li-lable">
+                    <div class="Entry-li-lables">
+                        <el-checkbox v-model="choiceOne"></el-checkbox>
                         <div class="li-lable">一、境内费用(其他费用)</div>
                         <div class="li-lable">
                             <span class="redzhu">(注:填好数值鼠标点击其他区域计算合计)</span>
@@ -75,18 +76,21 @@
                     </div>
                 </div>
                 <div class="Entry-form-li">
-                    <div class="Entry-li-lable">
+                    <div class="Entry-li-lables">
+                        <el-checkbox v-model="choiceTwo"></el-checkbox>
                         <div class="li-lable">二、国际旅费合计:</div>
                         <div style="display: flex;">
                             <div class="li-lable">
-                                <label>(经济舱)</label>
+                                <el-checkbox style="margin-right: -10px;" v-model="sumJJC"></el-checkbox>
+                                <label>(经济舱)</label>
                                 <div class="sub-boxs">{{TotalExpenses.EconomyClasstotal=(TotalExpenses.EconomyClass+TotalExpenses.TravellingExpenses)|numFilter}}</div>
                                 <span>元/人</span>
                             </div>
-                            &nbsp;&nbsp;                         
+                            &nbsp;&nbsp;&nbsp;&nbsp;                          
                             <div class="li-lable">
-                                <label>(公务舱)</label>
-                                <div class="sub-boxs">{{TotalExpenses.EconomyClasstotal=(TotalExpenses.BusinessClass+TotalExpenses.TravellingExpenses)|numFilter}}</div>
+                                <el-checkbox style="margin-right: -10px;" v-model="sumGWC"></el-checkbox>
+                                <label>(公务舱)</label>
+                                <div class="sub-boxs">{{TotalExpenses.BusinessClasstotal=(TotalExpenses.BusinessClass+TotalExpenses.TravellingExpenses)|numFilter}}</div>
                                 <span>元/人</span>
                             </div>
                         </div>
@@ -120,16 +124,19 @@
                 </div>
                 <div class="Entry-form-li">
                     <div class="Entry-li-lable">
-                        <div class="li-lable">三、住宿费:</div>
-                        <div style="display: flex;">
-                            <div class="li-lable">
-                                <label>合计:</label>
-                                <div class="sub-boxs">{{TotalAccommodationFee|numFilter}}</div>
-                                <span>元/人</span>
+                        <div style="display: flex;align-items: center;">
+                            <el-checkbox v-model="choiceThree"></el-checkbox>
+                            <div class="li-lable">三、住宿费:</div>
+                            <div style="display: flex;">
+                                <div class="li-lable">
+                                    <label>合计:</label>
+                                    <div class="sub-boxs">{{TotalAccommodationFee|numFilter}}</div>
+                                    <span>元/人</span>
+                                </div>
                             </div>
                         </div>
                         <div class="btn-Entry">
-                            <el-button type="primary" @click="addlist" size="mini">新 增</el-button>
+                            <el-button type="primary" @click="addlist('住宿费')" size="mini">新 增</el-button>
                         </div>
                     </div>
                     <div class="Entry-li-inif">
@@ -197,16 +204,19 @@
                 </div>
                 <div class="Entry-form-li">
                     <div class="Entry-li-lable">
-                        <div class="li-lable">四、伙食费:</div>
-                        <div style="display: flex;">
-                            <div class="li-lable">
-                                <label>合计:</label>
-                                <div class="sub-boxs">{{TotalMeals|numFilter}}</div>
-                                <span>元/人</span>
+                        <div style="display: flex;align-items: center;">
+                            <el-checkbox v-model="choiceFour"></el-checkbox>
+                            <div class="li-lable">四、伙食费:</div>
+                            <div style="display: flex;">
+                                <div class="li-lable">
+                                    <label>合计:</label>
+                                    <div class="sub-boxs">{{TotalMeals|numFilter}}</div>
+                                    <span>元/人</span>
+                                </div>
                             </div>
                         </div>
                         <div class="btn-Entry">
-                            <el-button type="primary" size="mini">新 增</el-button>
+                            <el-button type="primary" @click="addlist('伙食费')" size="mini">新 增</el-button>
                         </div>
                     </div>
                     <div class="Entry-li-inif">
@@ -277,16 +287,19 @@
                 </div>
                 <div class="Entry-form-li">
                     <div class="Entry-li-lable">
-                        <div class="li-lable">五、公杂费:</div>
-                        <div style="display: flex;">
-                            <div class="li-lable">
-                                <label>合计:</label>
-                                <div class="sub-boxs">{{TotalMiscellaneous|numFilter}}</div>
-                                <span>元/人</span>
+                        <div style="display: flex;align-items: center;">
+                            <el-checkbox v-model="choiceFive"></el-checkbox>
+                            <div class="li-lable">五、公杂费:</div>
+                            <div style="display: flex;">
+                                <div class="li-lable">
+                                    <label>合计:</label>
+                                    <div class="sub-boxs">{{TotalMiscellaneous|numFilter}}</div>
+                                    <span>元/人</span>
+                                </div>
                             </div>
                         </div>
                         <div class="btn-Entry">
-                            <el-button type="primary" size="mini">新 增</el-button>
+                            <el-button type="primary" @click="addlist('公杂费')" size="mini">新 增</el-button>
                         </div>
                     </div>
                     <div class="Entry-li-inif">
@@ -357,16 +370,19 @@
                 </div>
                 <div class="Entry-form-li">
                     <div class="Entry-li-lable">
-                        <div class="li-lable">六、培训费</div>
-                        <div style="display: flex;">
-                            <div class="li-lable">
-                                <label>合计:</label>
-                                <div class="sub-boxs">{{TotalExpenses.EconomyClasstotal=(TotalExpenses.EconomyClass+TotalExpenses.TravellingExpenses)|numFilter}}</div>
-                                <span>元/人</span>
+                        <div style="display: flex;align-items: center;">
+                            <el-checkbox v-model="choiceSix"></el-checkbox>
+                            <div class="li-lable">六、培训费:</div>
+                            <div style="display: flex;">
+                                <div class="li-lable">
+                                    <label>合计:</label>
+                                    <div class="sub-boxs">{{trainingExpense|numFilter}}</div>
+                                    <span>元/人</span>
+                                </div>
                             </div>
                         </div>
                         <div class="btn-Entry">
-                            <el-button type="primary" size="mini">新 增</el-button>
+                            <el-button type="primary" @click="addlist('培训费')" size="mini">新 增</el-button>
                         </div>
                     </div>
                     <div class="Entry-li-inif">
@@ -391,7 +407,7 @@
                                     <el-input size="mini" v-model="scope.row.city"></el-input>
                                 </template> -->
                                 <template slot-scope="scope">
-                                    <el-select size="mini" v-model="scope.row.nationalTravelFeeId" filterable placeholder="请选择">
+                                    <el-select @change="TrainingExpenseDataSelect(scope.row,$event)" size="mini" v-model="scope.row.nationalTravelFeeId" filterable placeholder="请选择">
                                         <el-option
                                             v-for="item in placeinif"
                                             :key="item.id"
@@ -409,7 +425,7 @@
                             label=" 费用标准"
                             width="180">
                                 <template slot-scope="scope">
-                                    <el-input-number size="mini" :precision="2" :controls="false" v-model="scope.row.cost"></el-input-number>
+                                    <el-input-number @input="Traininginput(scope.row)" size="mini" :precision="2" :controls="false" v-model="scope.row.cost"></el-input-number>
                                 </template>
                             </el-table-column>
                             <el-table-column
@@ -435,6 +451,26 @@
                         </el-table>
                     </div>
                 </div>
+                <div class="Entry-form-li">
+                    <div class="Entry-li-lables">
+                        <div class="li-lable">七、费用总计:</div>
+                        <div style="display: flex;">
+                            <div class="li-lable">
+                                <el-checkbox style="margin-right: -10px;" v-model="airJJC_Checked"></el-checkbox>
+                                <label>(经济舱)</label>
+                                <div class="sub-boxs">{{jjctotal|numFilter}}</div>
+                                <span>元/人</span>
+                            </div>
+                            &nbsp;&nbsp;&nbsp;&nbsp;                          
+                            <div class="li-lable">
+                                <el-checkbox style="margin-right: -10px;" v-model="airGWC_Checked"></el-checkbox>
+                                <label>(公务舱)</label>
+                                <div class="sub-boxs">{{gwctotal|numFilter}}</div>
+                                <span>元/人</span>
+                            </div>
+                        </div>
+                    </div>
+                </div>
             </div>
         </div>
     </div>
@@ -443,6 +479,19 @@
 export default {
     data() {
         return {
+            //是否计算Checkbox
+            choiceOne:false,//境内费用(其他费用)选择框
+            choiceTwo:false,//国际旅费合计选择框
+            choiceThree:false,//住宿费合计选择框
+            choiceFour:false,//伙食费合计选择框
+            choiceFive:false,//公杂费合计选择框
+            choiceSix:false,//培训费用选择框
+            sumJJC:false,//经济舱小计选择框
+            sumGWC:false,//公务舱小计选择框
+            airJJC_Checked:false,//经济舱选择框
+            airGWC_Checked:false,//公务舱选择框
+
+            userId:'',
             value:'',
             options:[],
             Visafees:'',
@@ -469,6 +518,7 @@ export default {
             TotalAccommodationFee:0,//住宿费合计
             TotalMeals:0,//伙食费合计
             TotalMiscellaneous:0,//公杂费合计
+            trainingExpense:0,//培训费合计
 
             quarterageData: [],
             boardWagesData:[],
@@ -523,6 +573,11 @@ export default {
                 label:"city",
                 // label: "country",
             },
+
+            jjctotal:0,//经济舱合计
+            gwctotal:0,//公务舱合计
+
+            storageid:0,
         }
     },
     methods:{
@@ -588,7 +643,7 @@ export default {
                 },
                 data:{
                     portType: 1,
-                    diId: 2362
+                    diId: that.value
                 }
             }).then(function (res) {
                 if(res.data.code==200){
@@ -607,6 +662,18 @@ export default {
                     that.TotalExpenses.EconomyClass=res.data.data.outsideJJPay;
                     that.TotalExpenses.BusinessClass=res.data.data.outsaideGWPay;
                     that.TotalExpenses.TravellingExpenses=res.data.data.cityTranffic;
+
+                    //是否计算Checkbox
+                    that.choiceOne=res.data.data.choiceOne==1?true:false
+                    that.choiceTwo=res.data.data.choiceTwo==1?true:false
+                    that.choiceThree=res.data.data.choiceThree==1?true:false
+                    that.choiceFour=res.data.data.choiceFour==1?true:false
+                    that.choiceFive=res.data.data.choiceFive==1?true:false
+                    that.choiceSix=res.data.data.choiceSix==1?true:false
+                    that.sumJJC=res.data.data.sumJJC==1?true:false
+                    that.sumGWC=res.data.data.sumGWC==1?true:false
+                    that.airJJC_Checked=res.data.data.airJJC_Checked==1?true:false
+                    that.airGWC_Checked=res.data.data.airGWC_Checked==1?true:false
                     //住宿费
                     that.quarterageData=res.data.data.quarterageData;
                     for(let a=0;a<res.data.data.quarterageData.length;a++){
@@ -624,6 +691,10 @@ export default {
                     }
                     //培训费
                     that.trainingExpenseData=res.data.data.trainingExpenseData;
+                    for(let d=0;d<res.data.data.trainingExpenseData.length;d++){
+                        that.trainingExpense+=res.data.data.trainingExpenseData[d].subTotal
+                    }
+                    that.storageid=res.data.data.id;
                 }
             })
         },
@@ -647,6 +718,7 @@ export default {
             //在change中获取到整条对象数据
             console.log(obj);
             val.currencyName=obj.currencyName;
+            val.currency=obj.currency;
             val.cost=obj.roomCost;
             console.log(this.currencys)
             for(let j=0;j<this.currencys.length;j++){
@@ -672,6 +744,7 @@ export default {
             //在change中获取到整条对象数据
             console.log(obj);
             val.currencyName=obj.currencyName;
+            val.currency=obj.currency;
             val.cost=obj.foodCost;
             for(let j=0;j<this.currencys.length;j++){
                 if(this.currencys[j].currencyCode==obj.currencyCode){
@@ -695,6 +768,7 @@ export default {
             //在change中获取到整条对象数据
             console.log(obj);
             val.currencyName=obj.currencyName;
+            val.currency=obj.currency;
             val.cost=obj.publicCost;
             for(let j=0;j<this.currencys.length;j++){
                 if(this.currencys[j].currencyCode==obj.currencyCode){
@@ -707,9 +781,260 @@ export default {
                 this.TotalMiscellaneous+=this.miscellaneousFeeData[a].subTotal
             }
         },
+        //培训费费用标准值改变
+        Traininginput(val){
+            console.log(val)
+            var rate=0
+            for(let j=0;j<this.currencys.length;j++){
+                if(this.currencys[j].currencyName==val.currencyName){
+                    rate=this.currencys[j].rate;
+                }
+            }
+            val.subTotal=Number(val.cost)*Number(rate);
+            this.trainingExpense=0;
+            for(let a=0;a<this.trainingExpenseData.length;a++){
+                this.trainingExpense+=this.trainingExpenseData[a].subTotal
+            }
+        },
+        //培训费地区选择
+        TrainingExpenseDataSelect(val,item){
+            console.log(val);
+            console.log(this.trainingExpenseData);
+            var rate=0//汇率
+            var obj={}
+            obj= this.placeinif.find(function(i){
+                return i.id ===item
+            });
+            //在change中获取到整条对象数据
+            console.log(obj);
+            val.currencyName=obj.currencyName;
+            val.currency=obj.currency;
+            for(let j=0;j<this.currencys.length;j++){
+                if(this.currencys[j].currencyCode==obj.currencyCode){
+                    rate=this.currencys[j].rate;
+                }
+            }
+            val.subTotal=Number(val.cost)*Number(rate);
+            this.trainingExpense=0;
+            for(let a=0;a<this.trainingExpenseData.length;a++){
+                this.trainingExpense+=this.trainingExpenseData[a].subTotal
+            }
+        },
         //新增list
-        addlist(){
-            console.log(this.quarterageData)
+        addlist(text){
+            if(text=="住宿费"){
+                this.quarterageData.push({
+                    id:0,
+                    diId:this.value,
+                    type:1,
+                    days:this.quarterageData.length!=0?(this.quarterageData[this.quarterageData.length-1].days)+1:1,
+                    nationalTravelFeeId:0,
+                    cost:0,
+                    currency:0,
+                    subTotal:0,
+                    remark:0,
+                })
+            }
+            if(text=="伙食费"){
+                this.boardWagesData.push({
+                    id:0,
+                    diId:this.value,
+                    type:2,
+                    days:this.boardWagesData.length!=0?(this.boardWagesData[this.boardWagesData.length-1].days)+1:1,
+                    nationalTravelFeeId:0,
+                    cost:0,
+                    currency:0,
+                    subTotal:0,
+                    remark:0,
+                })
+            }
+            if(text=="公杂费"){
+                this.miscellaneousFeeData.push({
+                    id:0,
+                    diId:this.value,
+                    type:3,
+                    days:this.miscellaneousFeeData.length!=0?(this.miscellaneousFeeData[this.miscellaneousFeeData.length-1].days)+1:1,
+                    nationalTravelFeeId:0,
+                    cost:0,
+                    currency:0,
+                    subTotal:0,
+                    remark:0,
+                })
+            }
+            if(text=="培训费"){
+                console.log(this.trainingExpenseData)
+                this.trainingExpenseData.push({
+                    id:0,
+                    diId:this.value,
+                    type:4,
+                    days:this.trainingExpenseData.length!=0?(this.trainingExpenseData[this.trainingExpenseData.length-1].days)+1:1,
+                    nationalTravelFeeId:0,
+                    cost:0,
+                    currency:0,
+                    subTotal:0,
+                    remark:'',
+                })
+            }
+        },
+        //保存
+        storage(){
+            //住宿费
+            var quarterageDatas=[];
+            for(let m=0;m<this.quarterageData.length;m++){
+                quarterageDatas.push({
+                    id:this.quarterageData[m].id,
+                    diId:this.quarterageData[m].diId,
+                    type:this.quarterageData[m].type,
+                    days:this.quarterageData[m].days,
+                    nationalTravelFeeId:this.quarterageData[m].nationalTravelFeeId,
+                    cost:this.quarterageData[m].cost,
+                    currency:this.quarterageData[m].currency,
+                    subTotal:this.quarterageData[m].subTotal,
+                    remark:this.quarterageData[m].remark,
+                })
+            }
+            //伙食费
+            var boardWagesDatas=[];
+            for(let n=0;n<this.boardWagesData.length;n++){
+                boardWagesDatas.push({
+                    id:this.boardWagesData[n].id,
+                    diId:this.boardWagesData[n].diId,
+                    type:this.boardWagesData[n].type,
+                    days:this.boardWagesData[n].days,
+                    nationalTravelFeeId:this.boardWagesData[n].nationalTravelFeeId,
+                    cost:this.boardWagesData[n].cost,
+                    currency:this.boardWagesData[n].currency,
+                    subTotal:this.boardWagesData[n].subTotal,
+                    remark:this.boardWagesData[n].remark,
+                })
+            }
+            //公杂费miscellaneousFeeData
+            var miscellaneousFeeDatas=[];
+            for(let b=0;b<this.miscellaneousFeeData.length;b++){
+                miscellaneousFeeDatas.push({
+                    id:this.miscellaneousFeeData[b].id,
+                    diId:this.miscellaneousFeeData[b].diId,
+                    type:this.miscellaneousFeeData[b].type,
+                    days:this.miscellaneousFeeData[b].days,
+                    nationalTravelFeeId:this.miscellaneousFeeData[b].nationalTravelFeeId,
+                    cost:this.miscellaneousFeeData[b].cost,
+                    currency:this.miscellaneousFeeData[b].currency,
+                    subTotal:this.miscellaneousFeeData[b].subTotal,
+                    remark:this.miscellaneousFeeData[b].remark,
+                })
+            }
+            //培训费
+            var trainingExpenseDatas=[];
+            for(let p=0;p<this.trainingExpenseData.length;p++){
+                trainingExpenseDatas.push({
+                    id:this.trainingExpenseData[p].id,
+                    diId:this.trainingExpenseData[p].diId,
+                    type:this.trainingExpenseData[p].type,
+                    days:this.trainingExpenseData[p].days,
+                    nationalTravelFeeId:this.trainingExpenseData[p].nationalTravelFeeId,
+                    cost:this.trainingExpenseData[p].cost,
+                    currency:this.trainingExpenseData[p].currency,
+                    subTotal:this.trainingExpenseData[p].subTotal,
+                    remark:this.trainingExpenseData[p].remark,
+                })
+            }
+            console.log(quarterageDatas)
+            console.log(boardWagesDatas)
+            console.log(miscellaneousFeeDatas)
+            console.log(trainingExpenseDatas)
+            console.log(this.DomesticFees.total+this.TotalAccommodationFee+this.TotalMeals+this.TotalMiscellaneous+this.trainingExpense)
+            this.storageAPI(quarterageDatas,boardWagesDatas,miscellaneousFeeDatas,trainingExpenseDatas)
+        },
+        //保存API
+        storageAPI(arrthre,arrfour,arrfive,arrsix){
+            var url = "/api/Groups/PostEnterExitCostOperate"
+            var that = this
+            console.log(that.value)
+            var data={
+                    portType: 1,
+                    userId: that.userId,
+                    id: that.storageid,
+                    diId: that.value,
+                    choiceOne: that.choiceOne?1:0,
+                    visa: that.DomesticFees.visafees,
+                    visaRemark: that.DomesticFees.visafeesDescription,
+                    yiMiao: that.DomesticFees.vaccinefees,
+                    heSuan: that.DomesticFees.nucleicfees,
+                    service: that.DomesticFees.serviceCharge,
+                    ticket: that.DomesticFees.ticketsExhibitionL,
+                    safe: that.DomesticFees.insurance,
+                    choiceTwo: that.choiceTwo?1:0,
+                    sumJJC:that.sumJJC?1:0,
+                    sumGWC:that.sumGWC?1:0,
+                    outsideJJPay:that.TotalExpenses.EconomyClasstotal,
+                    outsaideGWPay:this.TotalExpenses.BusinessClasstotal,
+                    airJJ:that.jjctotal,
+                    airGW:that.gwctotal,
+                    cityTranffic: that.TotalExpenses.TravellingExpenses,
+                    currencys: that.currencys,
+                    choiceThree:that.choiceThree?1:0,
+                    quarterageData: arrthre,
+                    choiceFour:that.choiceFour?1:0,
+                    boardWagesData: arrfour,
+                    choiceFive:that.choiceFive?1:0,
+                    miscellaneousFeeData:arrfive,
+                    choiceSix:that.choiceSix?1:0,
+                    trainingExpenseData:arrsix,
+                    airJJC_Checked:that.airJJC_Checked?1:0,
+                    airGWC_Checked:that.airGWC_Checked?1:0,
+                }
+                console.log(data)
+                console.log(JSON.stringify (data))
+            this.$axios({
+                method: 'post',
+                url: url,
+                headers: {
+                    Authorization: 'Bearer ' + this.token,
+                    contentType:'application/json'
+                },
+                data:{
+                    portType: 1,
+                    userId: that.userId,
+                    id: that.storageid,
+                    diId: that.value,
+                    choiceOne: that.choiceOne?1:0,
+                    visa: that.DomesticFees.visafees,
+                    visaRemark: that.DomesticFees.visafeesDescription,
+                    yiMiao: that.DomesticFees.vaccinefees,
+                    heSuan: that.DomesticFees.nucleicfees,
+                    service: that.DomesticFees.serviceCharge,
+                    ticket: that.DomesticFees.ticketsExhibitionL,
+                    safe: that.DomesticFees.insurance,
+                    choiceTwo: that.choiceTwo?1:0,
+                    sumJJC:that.sumJJC?1:0,
+                    sumGWC:that.sumGWC?1:0,
+                    outsideJJPay:that.TotalExpenses.EconomyClasstotal,
+                    outsaideGWPay:this.TotalExpenses.BusinessClasstotal,
+                    airJJ:that.jjctotal,
+                    airGW:that.gwctotal,
+                    cityTranffic: that.TotalExpenses.TravellingExpenses,
+                    currencys: that.currencys,
+                    choiceThree:that.choiceThree?1:0,
+                    quarterageData: arrthre,
+                    choiceFour:that.choiceFour?1:0,
+                    boardWagesData: arrfour,
+                    choiceFive:that.choiceFive?1:0,
+                    miscellaneousFeeData:arrfive,
+                    choiceSix:that.choiceSix?1:0,
+                    trainingExpenseData:arrsix,
+                    airJJC_Checked:that.airJJC_Checked?1:0,
+                    airGWC_Checked:that.airGWC_Checked?1:0,
+                }
+            }).then(function (res) {
+                if(res.data.code==200){
+                    console.log(res)
+                    that.GetEnterExitCostInfobyDiId()
+                }
+            })
+        },
+        //选择团组名称调用
+        chengvalue(){
+            this.GetEnterExitCostInfobyDiId()
         }
     },
     filters: {
@@ -720,6 +1045,50 @@ export default {
         }
     },
     watch: {
+        'DomesticFees.total':{
+            handler(newVal,oldVal) {
+                this.jjctotal=this.DomesticFees.total+this.TotalAccommodationFee+this.TotalMeals+this.TotalMiscellaneous+this.trainingExpense+this.TotalExpenses.EconomyClasstotal;
+                this.gwctotal=this.DomesticFees.total+this.TotalAccommodationFee+this.TotalMeals+this.TotalMiscellaneous+this.trainingExpense+this.TotalExpenses.BusinessClasstotal;
+            },
+        },
+        TotalAccommodationFee:{
+            handler(newVal,oldVal) {
+                this.jjctotal=this.DomesticFees.total+this.TotalAccommodationFee+this.TotalMeals+this.TotalMiscellaneous+this.trainingExpense+this.TotalExpenses.EconomyClasstotal;
+                this.gwctotal=this.DomesticFees.total+this.TotalAccommodationFee+this.TotalMeals+this.TotalMiscellaneous+this.trainingExpense+this.TotalExpenses.BusinessClasstotal;
+            },
+            
+        },
+        TotalMeals:{
+            handler(newVal,oldVal) {
+                this.jjctotal=this.DomesticFees.total+this.TotalAccommodationFee+this.TotalMeals+this.TotalMiscellaneous+this.trainingExpense+this.TotalExpenses.EconomyClasstotal;
+                this.gwctotal=this.DomesticFees.total+this.TotalAccommodationFee+this.TotalMeals+this.TotalMiscellaneous+this.trainingExpense+this.TotalExpenses.BusinessClasstotal;
+            },
+        },
+        TotalMiscellaneous:{
+            handler(newVal,oldVal) {
+                this.jjctotal=this.DomesticFees.total+this.TotalAccommodationFee+this.TotalMeals+this.TotalMiscellaneous+this.trainingExpense+this.TotalExpenses.EconomyClasstotal;
+                this.gwctotal=this.DomesticFees.total+this.TotalAccommodationFee+this.TotalMeals+this.TotalMiscellaneous+this.trainingExpense+this.TotalExpenses.BusinessClasstotal;
+            },
+        },
+        trainingExpense:{
+            handler(newVal,oldVal) {
+                this.jjctotal=this.DomesticFees.total+this.TotalAccommodationFee+this.TotalMeals+this.TotalMiscellaneous+this.trainingExpense+this.TotalExpenses.EconomyClasstotal;
+                this.gwctotal=this.DomesticFees.total+this.TotalAccommodationFee+this.TotalMeals+this.TotalMiscellaneous+this.trainingExpense+this.TotalExpenses.BusinessClasstotal;
+            },
+        },
+        'TotalExpenses.EconomyClasstotal':{
+            handler(newVal,oldVal) {
+                this.jjctotal=this.DomesticFees.total+this.TotalAccommodationFee+this.TotalMeals+this.TotalMiscellaneous+this.trainingExpense+this.TotalExpenses.EconomyClasstotal;
+                this.gwctotal=this.DomesticFees.total+this.TotalAccommodationFee+this.TotalMeals+this.TotalMiscellaneous+this.trainingExpense+this.TotalExpenses.BusinessClasstotal;
+            },
+        },
+        'TotalExpenses.BusinessClasstotal':{
+            handler(newVal,oldVal) {
+                this.jjctotal=this.DomesticFees.total+this.TotalAccommodationFee+this.TotalMeals+this.TotalMiscellaneous+this.trainingExpense+this.TotalExpenses.EconomyClasstotal;
+                this.gwctotal=this.DomesticFees.total+this.TotalAccommodationFee+this.TotalMeals+this.TotalMiscellaneous+this.trainingExpense+this.TotalExpenses.BusinessClasstotal;
+                // console.log(this.DomesticFees.total+this.TotalAccommodationFee+this.TotalMeals+this.TotalMiscellaneous+this.trainingExpense+this.TotalExpenses.BusinessClasstotal)
+            },
+        },
         //境内费用非空处理
         DomesticFees: {
             handler(newVal, oldVal) {
@@ -763,8 +1132,10 @@ export default {
         }
     },
     mounted(){
+        this.userId=JSON.parse(localStorage.getItem('userinif')).userInfo.userId;
         this.GetEnterExitCostDataSource();
         this.GetNationalTravelFeeData();
+
     }
 }
 </script>
@@ -800,6 +1171,13 @@ export default {
     border-bottom:1px solid #ebeef5;
 }
 .Entry-li-lable{
+    display: flex;
+    justify-content: space-between;
+    align-items: center;
+    margin: 10px 0;
+    margin-top: 20px;
+}
+.Entry-li-lables{
     display: flex;
     align-items: center;
     margin: 10px 0;
@@ -848,8 +1226,15 @@ export default {
     transition: border-color .2s cubic-bezier(.645,.045,.355,1);
 }
 .btn-Entry{
-    width: 83%;
     text-align: right;
 }
-
+.Entry-all .el-checkbox__inner{
+    width: 18px;
+    height: 18px;
+    margin-right: 10px;
+}
+.Entry-all .el-checkbox__inner::after{
+    height: 10px;
+    left: 6px;
+}
 </style>

+ 359 - 269
src/components/OP/Groupedit.vue

@@ -1,49 +1,54 @@
 <template>
-    <div  v-loading="fullscreenLoading">
+    <div v-loading="fullscreenLoading">
         <div class="groupedit">
             <el-form :model="ruleForm" :rules="rules" ref="ruleForm" label-width="100px" class="demo-ruleForm">
                 <div class="required-box">
                     <el-form-item label-width="120px" label="销售报价号:">
-                        <el-input :readonly="true"  el-input v-model="ruleForm.quotenum"></el-input>
+                        <el-input :readonly="true" el-input v-model="ruleForm.quotenum"></el-input>
                     </el-form-item>
                     <el-form-item label-width="120px" label="本团成单人:" prop="person">
                         <el-select v-model="ruleForm.person" placeholder="请选择本团成单人     ">
-                            <el-option v-for="(item,index) in personarr" :key="index" :label="item.cnName" :value="item.id"></el-option>
+                            <el-option v-for="(item, index) in personarr" :key="index" :label="item.cnName"
+                                :value="item.id"></el-option>
                         </el-select>
                     </el-form-item>
                     <el-form-item label-width="120px" label="客户级别:" prop="grades">
                         <el-select v-model="ruleForm.grades" placeholder="请选择客户级别">
-                            <el-option  v-for="(item,index) in gradearr" :key="index" :label="item.name" :value="item.id"></el-option>
+                            <el-option v-for="(item, index) in gradearr" :key="index" :label="item.name"
+                                :value="item.id"></el-option>
                         </el-select>
                     </el-form-item>
                     <el-form-item label-width="120px" label="团组类型:" prop="OP">
                         <el-select class="op-type" v-model="ruleForm.OP" placeholder="请选择团组类型">
-                            <el-option  v-for="(item,index) in OPtype" :key="index" :label="item.name" :value="item.id"></el-option>
+                            <el-option v-for="(item, index) in OPtype" :key="index" :label="item.name"
+                                :value="item.id"></el-option>
                         </el-select>
                     </el-form-item>
                     <el-form-item label-width="120px" label="团组名称:" prop="groupname">
-                        <el-input   el-input v-model="ruleForm.groupname"></el-input>
+                        <el-input el-input v-model="ruleForm.groupname"></el-input>
                     </el-form-item>
                     <el-form-item label-width="120px" label="客户名称:" prop="customername">
-                        <el-input   el-input v-model="ruleForm.customername"></el-input>
+                        <el-input el-input v-model="ruleForm.customername"></el-input>
                     </el-form-item>
                     <el-form-item label-width="120px" label="客户单位:" prop="customerunits">
-                        <el-input   el-input v-model="ruleForm.customerunits"></el-input>
+                        <el-input el-input v-model="ruleForm.customerunits"></el-input>
                     </el-form-item>
                     <el-form-item label-width="120px" label="出访国家:" prop="countriesvisited">
-                        <el-input   el-input v-model="ruleForm.countriesvisited"></el-input>
+                        <el-input el-input v-model="ruleForm.countriesvisited"></el-input>
                     </el-form-item>
-                    <el-form-item  label-width="120px" label="出访时间:" prop="visitingtime">
-                        <el-date-picker type="date" placeholder="选择日期" v-model="ruleForm.visitingtime" style="width: 100%;"></el-date-picker>
+                    <el-form-item label-width="120px" label="出访时间:" prop="visitingtime">
+                        <el-date-picker type="date" placeholder="选择日期" v-model="ruleForm.visitingtime"
+                            style="width: 100%;"></el-date-picker>
                     </el-form-item>
                     <el-form-item label-width="120px" label="出访天数:" prop="numdays">
-                        <el-input   el-input v-model="ruleForm.numdays"></el-input>
+                        <el-input el-input v-model="ruleForm.numdays"></el-input>
                     </el-form-item>
                     <el-form-item label-width="120px" label="出访人数:" prop="numperson">
-                        <el-input   el-input v-model="ruleForm.numperson"></el-input>
+                        <el-input el-input v-model="ruleForm.numperson"></el-input>
                     </el-form-item>
-                    <el-form-item  label-width="120px" label="合同时间:" prop="contracttime">
-                        <el-date-picker type="date" placeholder="选择日期" v-model="ruleForm.contracttime" style="width: 100%;"></el-date-picker>
+                    <el-form-item label-width="120px" label="合同时间:" prop="contracttime">
+                        <el-date-picker type="date" placeholder="选择日期" v-model="ruleForm.contracttime"
+                            style="width: 100%;"></el-date-picker>
                     </el-form-item>
                 </div>
                 <div class="advance-box">
@@ -51,33 +56,49 @@
                         <el-input style="width: 100px;" el-input v-model="ruleForm.occasion"></el-input>
                     </el-form-item>
                     <el-form-item label-width="98px" label="日支付款项:" prop="payments">
-                        <el-input   el-input v-model="ruleForm.payments"></el-input>
+                        <el-input el-input v-model="ruleForm.payments"></el-input>
                     </el-form-item>
-                    <span style="margin-bottom: 22px;display: inline-block;color: #606266;font-size: 14px;">(预付款,请输入RMB)</span>
+                    <span
+                        style="margin-bottom: 22px;display: inline-block;color: #606266;font-size: 14px;">(预付款,请输入RMB)</span>
+                </div>
+                <div style="display: flex;">
+                    <el-form-item label-width="120px" label="OP提成等级" prop="opRoyaltyLv">
+                        <el-select v-model="ruleForm.opRoyaltyLv" placeholder="OP提成等级" clearable filterable
+                            style="width: 100%;">
+                            <el-option v-for="item in opRoyaltyLvList" :key="item.id" :label="item.name + '元'"
+                                :value="item.id">
+                            </el-option>
+                        </el-select>
+                    </el-form-item>
+                    <el-form-item label-width="98px" label="等级说明:" prop="opRoyaltyRemark">
+                        <el-input type="textarea" v-model="ruleForm.opRoyaltyRemark" style="width: 500px;"></el-input>
+                    </el-form-item>
+                    <span style="margin-bottom: 22px;display: inline-block;color: #606266;font-size: 14px;"
+                        @click="dialogVisible = true">(点击查看等级说明)</span>
                 </div>
                 <el-form>
                     <el-form-item label-width="120px" label="出访目的:">
                         <el-input type="textarea" v-model="ruleForm.purposevisit"></el-input>
-                      </el-form-item>
-                      <el-form-item label-width="120px" label="特殊需求:">
-                          <el-input type="textarea" v-model="ruleForm.specialneeds"></el-input>
-                      </el-form-item>
-                      <el-form-item label-width="120px" label="其他需求:">
-                          <el-input type="textarea" v-model="ruleForm.otherneeds"></el-input>
-                      </el-form-item>
+                    </el-form-item>
+                    <el-form-item label-width="120px" label="特殊需求:">
+                        <el-input type="textarea" v-model="ruleForm.specialneeds"></el-input>
+                    </el-form-item>
+                    <el-form-item label-width="120px" label="其他需求:">
+                        <el-input type="textarea" v-model="ruleForm.otherneeds"></el-input>
+                    </el-form-item>
                 </el-form>
                 <el-form class="approval-box">
                     <el-form-item label-width="160px" label="出国任务审批部门名称:">
-                        <el-input  el-input v-model="ruleForm.approvalname"></el-input>
+                        <el-input el-input v-model="ruleForm.approvalname"></el-input>
                     </el-form-item>
                     <el-form-item label-width="120px" label="批件文号:">
-                        <el-input   el-input v-model="ruleForm.approvalnumber1"></el-input>
+                        <el-input el-input v-model="ruleForm.approvalnumber1"></el-input>
                     </el-form-item>
                     <el-form-item label-width="130px" label="政治审查部门名称:">
-                        <el-input   el-input v-model="ruleForm.censorshipdepartment"></el-input>
+                        <el-input el-input v-model="ruleForm.censorshipdepartment"></el-input>
                     </el-form-item>
                     <el-form-item label-width="120px" label="批件文号:">
-                        <el-input   el-input v-model="ruleForm.approvalnumber2"></el-input>
+                        <el-input el-input v-model="ruleForm.approvalnumber2"></el-input>
                     </el-form-item>
                 </el-form>
                 <el-form>
@@ -93,8 +114,38 @@
                     <el-button @click="resetForm('ruleForm')">重 置</el-button>
                     <el-button @click="clickback()">返 回</el-button>
                 </el-form-item>
-              </el-form>
+            </el-form>
         </div>
+        <el-dialog title="等级说明" :visible.sync="dialogVisible" width="30%" :before-close="handleClose"
+            :close-on-click-modal="false">
+            <span>
+                1)普通团组:¥300/团;<br><br>
+
+                2)VIP团(地市州书记 市长 成都副市级别 副书记级别 成都正厅级干部):¥500/团;<br><br>
+
+                3)VVIP团(四川省副部级 副省级 省长 ):¥1000/团;<br><br>
+
+                4)非全程接待或非标准团组,接待5天内(含5天)的团组:¥100/团;<br><br>
+
+                5)非全程接待或非标准团组,但负责全程机票,接待5天以上的团组:¥200/团;<br><br>
+
+                6)非全程接待或非标准团组且不负责全程机票,接待5天以上的团组:¥100/团<br><br>
+
+                7)非全程接待或非标准团组且不负责全程机票,只负责地接的,人数为10人以上的的团组:300/团;<br><br>
+
+                8)人数为5人以内(含5人)的标准团组:¥200/团;<br><br>
+
+                9)人数为5人以内(含5人)并且非全程接待5天内(含5天)的团组:¥100/团;<br><br>
+
+                10)人数为5人以内(含5人),非全程接待5天以上并且负责全程机票的团组:¥200/团;<br><br>
+
+                11)人数为5人以内(含5人)并且非全程接待5天以上,但不负责全程机票的团组:¥100.00/团;<br><br>
+            </span>
+            <span slot="footer" class="dialog-footer">
+                <el-button @click="dialogVisible = false">取 消</el-button>
+                <el-button type="primary" @click="dialogVisible = false">确 定</el-button>
+            </span>
+        </el-dialog>
     </div>
 </template>
 
@@ -103,95 +154,105 @@ import { el } from '@fullcalendar/core/internal-common';
 import { all } from 'q';
 export default {
     data() {
-      return {
-        editid:'',
-        token:'',
-        userid:'',
-        ruleForm: {
-          quotenum:'',
-          groupname: '',
-          customername: '',
-          customerunits:'',
-          countriesvisited:'',
-          visitingtime:'',
-          contracttime:'',
-          numdays:'',
-          numperson:'',
-          occasion:'',
-          payments:'',
-          purposevisit: '',
-          specialneeds:'',
-          otherneeds:'',
-          approvalname:'',
-          approvalnumber1:'',
-          approvalnumber2:'',
-          censorshipdepartment:'',
-          remark:'',
-          phonenumber:'',
-          OP:'',
-          grades:'',
-          person:''
-        },
-        personarr:[],
-        gradearr:[],
-        OPtype:[],
-        rules: {
-          groupname: [
-            { required: true, message: '请输入团组名称', trigger: 'blur' },
-          ],
-          customername: [
-            { required: true, message: '请输入客户名称', trigger: 'blur' },
-          ],
-          customerunits:[
-            { required: true, message: '请输入客户单位', trigger: 'blur' },
-          ],
-          countriesvisited:[
-            { required: true, message: '请输入出访国家', trigger: 'blur' },
-          ],
-          person: [
-            { required: true, message: '请选择成团人', trigger: 'change' }
-          ],
-          grades:[
-            { required: true, message: '请选择级别', trigger: 'change' }
-          ],
-          OP:[
-            { required: true, message: '请选择类型', trigger: 'change' }
-          ],
-          visitingtime: [
-            { type: 'date', required: true, message: '请选择日期', trigger: 'change' }
-          ],
-          contracttime: [
-            { type: 'date', required: true, message: '请选择时间', trigger: 'change' }
-          ],
-          numdays:[
-            { required: true, message: '请输入出访天数', trigger: 'blur' },
-            {pattern:"^\\d+$",message: "请输入正整数",trigger: "blur"}
-          ],
-          numperson:[
-            { required: true, message: '请输入出访人数', trigger: 'blur' },
-            {pattern:"^\\d+$",message: "请输入正整数",trigger: "blur"}
-          ],
-          occasion:[
-            { required: true, message: '请输入出天数', trigger: 'blur' },
-            {pattern:"^\\d+$",message: "请输入正整数",trigger: "blur"}
-          ],
-          payments:[
-            { required: true, message: '请输入出款额', trigger: 'blur' },
-            {pattern:"^\\d+(\\.\\d+)?$",message: "请输入正浮点数或整数",trigger: "blur"}
-          ]
-        },
-        fullscreenLoading:false
-      };
+        return {
+            editid: '',
+            token: '',
+            userid: '',
+            ruleForm: {
+                quotenum: '',
+                groupname: '',
+                customername: '',
+                customerunits: '',
+                countriesvisited: '',
+                visitingtime: '',
+                contracttime: '',
+                numdays: '',
+                numperson: '',
+                occasion: '',
+                payments: '',
+                purposevisit: '',
+                specialneeds: '',
+                otherneeds: '',
+                approvalname: '',
+                approvalnumber1: '',
+                approvalnumber2: '',
+                censorshipdepartment: '',
+                remark: '',
+                phonenumber: '',
+                OP: '',
+                grades: '',
+                person: '',
+                opRoyaltyLv: '',
+                opRoyaltyRemark: ''
+            },
+            personarr: [],
+            gradearr: [],
+            OPtype: [],
+            rules: {
+                groupname: [
+                    { required: true, message: '请输入团组名称', trigger: 'blur' },
+                ],
+                customername: [
+                    { required: true, message: '请输入客户名称', trigger: 'blur' },
+                ],
+                customerunits: [
+                    { required: true, message: '请输入客户单位', trigger: 'blur' },
+                ],
+                countriesvisited: [
+                    { required: true, message: '请输入出访国家', trigger: 'blur' },
+                ],
+                person: [
+                    { required: true, message: '请选择成团人', trigger: 'change' }
+                ],
+                grades: [
+                    { required: true, message: '请选择级别', trigger: 'change' }
+                ],
+                OP: [
+                    { required: true, message: '请选择类型', trigger: 'change' }
+                ],
+                visitingtime: [
+                    { type: 'date', required: true, message: '请选择日期', trigger: 'change' }
+                ],
+                contracttime: [
+                    { type: 'date', required: true, message: '请选择时间', trigger: 'change' }
+                ],
+                numdays: [
+                    { required: true, message: '请输入出访天数', trigger: 'blur' },
+                    { pattern: "^\\d+$", message: "请输入正整数", trigger: "blur" }
+                ],
+                numperson: [
+                    { required: true, message: '请输入出访人数', trigger: 'blur' },
+                    { pattern: "^\\d+$", message: "请输入正整数", trigger: "blur" }
+                ],
+                occasion: [
+                    { required: true, message: '请输入出天数', trigger: 'blur' },
+                    { pattern: "^\\d+$", message: "请输入正整数", trigger: "blur" }
+                ],
+                payments: [
+                    { required: true, message: '请输入出款额', trigger: 'blur' },
+                    { pattern: "^\\d+(\\.\\d+)?$", message: "请输入正浮点数或整数", trigger: "blur" }
+                ],
+                opRoyaltyLv: [
+                    { required: true, message: '请选择op提成等级', trigger: 'change' }
+                ],
+                opRoyaltyRemark: [
+                    { required: true, message: '请填写等级描述', trigger: 'change' }
+                ],
+            },
+            fullscreenLoading: false,
+            dialogVisible: false,
+            opRoyaltyLvList: [],
+        };
     },
     methods: {
         submitForm(formName) {
             this.$refs[formName].validate((valid) => {
-            if (valid) {
-                this.addGroupInfo()
-            } else {
-                console.log('error submit!!');
-                return false;
-            }
+                if (valid) {
+                    this.addGroupInfo()
+                } else {
+                    console.log('error submit!!');
+                    return false;
+                }
             });
         },
         //清空
@@ -199,53 +260,69 @@ export default {
             this.$refs[formName].resetFields();
         },
         //返回
-        clickback(){
+        clickback() {
             this.$router.go(-1);
         },
         //获取下拉列表
-        getdown(){
-            var url="/api/Groups/GroupEditBasicSource"
-            var that=this
+        getdown() {
+            var url = "/api/Groups/GroupEditBasicSource"
+            var that = this
             this.$axios({
                 method: 'post',
-                url:url,
-                headers:{
-                    Authorization:'Bearer '+this.token
+                url: url,
+                headers: {
+                    Authorization: 'Bearer ' + this.token
                 },
-                data:{
+                data: {
                     portType: 1,
                 }
-            }).then(function(res){
-                if(res.data.code==200){
-                    that.personarr=res.data.data.userData;
-                    that.gradearr=res.data.data.teamLevData;
-                    that.OPtype=res.data.data.teamTypeData;
+            }).then(function (res) {
+                if (res.data.code == 200) {
+                    that.personarr = res.data.data.userData;
+                    that.gradearr = res.data.data.teamLevData;
+                    that.OPtype = res.data.data.teamTypeData;
+                }
+            })
+            var url = "/api/System/QuerySetData"
+            var that = this
+            this.$axios({
+                method: 'post',
+                url: url,
+                headers: {
+                    Authorization: 'Bearer ' + this.token
+                },
+                data: {
+                    dataType: 70,
+                }
+            }).then(function (res) {
+                if (res.data.code == 200) {
+                    that.opRoyaltyLvList = res.data.data;
                 }
             })
         },
         //新增获取销售号
-        getSalesQuoteNo(){
-            if(this.editid==undefined){
-                var url="/api/Groups/GetGroupSalesQuoteNo"
-                var that=this
-                if(this.editid==undefined){
+        getSalesQuoteNo() {
+            if (this.editid == undefined) {
+                var url = "/api/Groups/GetGroupSalesQuoteNo"
+                var that = this
+                if (this.editid == undefined) {
                     this.$axios({
                         method: 'post',
-                        url:url,
-                        headers:{
-                            Authorization:'Bearer '+this.token
+                        url: url,
+                        headers: {
+                            Authorization: 'Bearer ' + this.token
                         },
-                    }).then(function(res){
-                        if(res.data.code==200){
-                            that.ruleForm.quotenum=res.data.data.salesQuoteNo;
+                    }).then(function (res) {
+                        if (res.data.code == 200) {
+                            that.ruleForm.quotenum = res.data.data.salesQuoteNo;
                         }
                     })
                 }
             }
-            
+
         },
         //处理时间
-        disposeTime(val){
+        disposeTime(val) {
             var date = new Date(val);
             var y = date.getFullYear();
             var m = date.getMonth() + 1;
@@ -256,122 +333,128 @@ export default {
             return time
         },
         //编辑获取原数据
-        getGroupInfo(){
-            var url="/api/Groups/GetGroupInfo"
-            var that=this
+        getGroupInfo() {
+            var url = "/api/Groups/GetGroupInfo"
+            var that = this
             var datagroup
-            if(this.editid!=undefined){
+            if (this.editid != undefined) {
                 this.$axios({
                     method: 'post',
-                    url:url,
-                    headers:{
-                        Authorization:'Bearer '+this.token
+                    url: url,
+                    headers: {
+                        Authorization: 'Bearer ' + this.token
                     },
-                    data:{
-                        portType:1,
-                        id:that.editid
+                    data: {
+                        portType: 1,
+                        id: that.editid
                     }
-                }).then(function(res){
-                    if(res.data.code==200){
-                        datagroup=res.data.data;
+                }).then(function (res) {
+                    if (res.data.code == 200) {
+                        datagroup = res.data.data;
                         console.log(datagroup)
-                        that.ruleForm.quotenum=datagroup.salesQuoteNo;
-                        that.ruleForm.groupname=datagroup.teamName;
-                        that.ruleForm.customername=datagroup.clientName;
-                        that.ruleForm.customerunits=datagroup.clientUnit;
-                        that.ruleForm.countriesvisited=datagroup.visitCountry.replaceAll("|","、");
-                        that.ruleForm.visitingtime=new Date(datagroup.visitDate.split(' ')[0]);
-                        that.ruleForm.numdays=datagroup.visitDays+"";
-                        that.ruleForm.numperson=datagroup.visitPNumber+"";
-                        that.ruleForm.contracttime=new Date(datagroup.tontractTime.split(' ')[0]);
-                        that.ruleForm.payments=datagroup.paymentMoney+'';
-                        that.ruleForm.occasion=datagroup.payDay+'';
-                        that.ruleForm.purposevisit=datagroup.visitPurpose;
-                        that.ruleForm.specialneeds=datagroup.specialNeeds;
-                        that.ruleForm.otherneeds=datagroup.otherNeeds;
-                        that.ruleForm.approvalname=datagroup.cgrwspbmmc;
-                        that.ruleForm.approvalnumber1=datagroup.cgrwspwh;
-                        that.ruleForm.censorshipdepartment=datagroup.zzscbmmc;
-                        that.ruleForm.approvalnumber2=datagroup.zzscspwh;
-                        that.ruleForm.remark=datagroup.remark;
-                        that.ruleForm.phonenumber=datagroup.tellPhone;
-                        that.ruleForm.OP=datagroup.teamDid;
-                        that.ruleForm.grades=datagroup.teamLevSId;
-                        that.ruleForm.person=datagroup.jietuanOperator;
+                        that.ruleForm.quotenum = datagroup.salesQuoteNo;
+                        that.ruleForm.groupname = datagroup.teamName;
+                        that.ruleForm.customername = datagroup.clientName;
+                        that.ruleForm.customerunits = datagroup.clientUnit;
+                        that.ruleForm.countriesvisited = datagroup.visitCountry.replaceAll("|", "、");
+                        that.ruleForm.visitingtime = new Date(datagroup.visitDate.split(' ')[0]);
+                        that.ruleForm.numdays = datagroup.visitDays + "";
+                        that.ruleForm.numperson = datagroup.visitPNumber + "";
+                        that.ruleForm.contracttime = new Date(datagroup.tontractTime.split(' ')[0]);
+                        that.ruleForm.payments = datagroup.paymentMoney + '';
+                        that.ruleForm.occasion = datagroup.payDay + '';
+                        that.ruleForm.purposevisit = datagroup.visitPurpose;
+                        that.ruleForm.specialneeds = datagroup.specialNeeds;
+                        that.ruleForm.otherneeds = datagroup.otherNeeds;
+                        that.ruleForm.approvalname = datagroup.cgrwspbmmc;
+                        that.ruleForm.approvalnumber1 = datagroup.cgrwspwh;
+                        that.ruleForm.censorshipdepartment = datagroup.zzscbmmc;
+                        that.ruleForm.approvalnumber2 = datagroup.zzscspwh;
+                        that.ruleForm.remark = datagroup.remark;
+                        that.ruleForm.phonenumber = datagroup.tellPhone;
+                        that.ruleForm.OP = datagroup.teamDid;
+                        that.ruleForm.grades = datagroup.teamLevSId;
+                        that.ruleForm.person = datagroup.jietuanOperator;
+                        debugger
+                        that.ruleForm.opRoyaltyLv = parseInt(datagroup.opRoyaltyLv);
+                        that.ruleForm.opRoyaltyRemark = datagroup.opRoyaltyRemark;
                     }
                 })
             }
         },
         //新增编辑
-        addGroupInfo(){
-            var url="/api/Groups/GroupOperation";
-            var that=this;
+        addGroupInfo() {
+            var url = "/api/Groups/GroupOperation";
+            var that = this;
             that.fullscreenLoading = true;
             var status
-            if(this.editid!=undefined){
-                status=2
-            }else{
-                status=1
+            if (this.editid != undefined) {
+                status = 2
+            } else {
+                status = 1
             }
             this.$axios({
-                    method: 'post',
-                    url:url,
-                    headers:{
-                        Authorization:'Bearer '+this.token
-                    },
-                    data:{
-                        portType:1,
-                        status:status,//添加1//修改2//删除3
-                        id:that.editid,
-                        userId:that.userid,
-                        salesQuoteNo:that.ruleForm.quotenum,
-                        jietuanOperator:parseInt(that.ruleForm.person),//
-                        teamLevSId:parseInt(that.ruleForm.grades),//
-                        teamDid:parseInt(that.ruleForm.OP),//
-                        teamName:that.ruleForm.groupname,
-                        clientName:that.ruleForm.customername,
-                        clientUnit:that.ruleForm.customerunits,
-                        visitCountry:that.ruleForm.countriesvisited.replaceAll("、","|"),
-                        visitDate:that.disposeTime(that.ruleForm.visitingtime),
-                        visitDays:parseInt(that.ruleForm.numdays),
-                        visitPNumber:parseInt(that.ruleForm.numperson),
-                        tontractTime:that.disposeTime(that.ruleForm.contracttime),
-                        payDay:parseInt(that.ruleForm.occasion),
-                        paymentMoney:parseInt(that.ruleForm.payments),
-                        visitPurpose:that.ruleForm.purposevisit,
-                        specialNeeds:that.ruleForm.specialneeds,
-                        otherNeeds:that.ruleForm.otherneeds,
-                        cgrwspbmmc:that.ruleForm.approvalname,
-                        cgrwspwh:that.ruleForm.approvalnumber1,
-                        zzscbmmc:that.ruleForm.censorshipdepartment,
-                        zzscspwh:that.ruleForm.approvalnumber2,
-                        tellPhone:that.ruleForm.phonenumber,
-                        remark:that.ruleForm.remark,
-                    }
-                }).then(function(res){
-                    console.log(res)
-                    if(res.data.code==200){
-                        that.$message({
-                            message: res.data.msg,
-                            type: 'success',
-                            offset:50
-                        });
-                        that.fullscreenLoading = false;
-                    }else{
-                        that.$message({
-                            message:res.data.msg,
-                            type: 'warning',
-                            offset:50
-                        });
-                        that.fullscreenLoading = false;
-                    }
-                })
+                method: 'post',
+                url: url,
+                headers: {
+                    Authorization: 'Bearer ' + this.token
+                },
+                data: {
+                    portType: 1,
+                    status: status,//添加1//修改2//删除3
+                    id: that.editid,
+                    userId: that.userid,
+                    salesQuoteNo: that.ruleForm.quotenum,
+                    jietuanOperator: parseInt(that.ruleForm.person),//
+                    teamLevSId: parseInt(that.ruleForm.grades),//
+                    teamDid: parseInt(that.ruleForm.OP),//
+                    teamName: that.ruleForm.groupname,
+                    clientName: that.ruleForm.customername,
+                    clientUnit: that.ruleForm.customerunits,
+                    visitCountry: that.ruleForm.countriesvisited.replaceAll("、", "|"),
+                    visitDate: that.disposeTime(that.ruleForm.visitingtime),
+                    visitDays: parseInt(that.ruleForm.numdays),
+                    visitPNumber: parseInt(that.ruleForm.numperson),
+                    tontractTime: that.disposeTime(that.ruleForm.contracttime),
+                    payDay: parseInt(that.ruleForm.occasion),
+                    paymentMoney: parseInt(that.ruleForm.payments),
+                    visitPurpose: that.ruleForm.purposevisit,
+                    specialNeeds: that.ruleForm.specialneeds,
+                    otherNeeds: that.ruleForm.otherneeds,
+                    cgrwspbmmc: that.ruleForm.approvalname,
+                    cgrwspwh: that.ruleForm.approvalnumber1,
+                    zzscbmmc: that.ruleForm.censorshipdepartment,
+                    zzscspwh: that.ruleForm.approvalnumber2,
+                    tellPhone: that.ruleForm.phonenumber,
+                    remark: that.ruleForm.remark,
+                    opRoyaltyLv: that.ruleForm.opRoyaltyLv,
+                    opRoyaltyRemark: that.ruleForm.opRoyaltyRemark,
+                }
+            }).then(function (res) {
+                console.log(res)
+                if (res.data.code == 200) {
+                    that.$message({
+                        message: res.data.msg,
+                        type: 'success',
+                        offset: 50
+                    });
+                    that.fullscreenLoading = false;
+                    that.$router.go(-1);
+                } else {
+                    that.$message({
+                        message: res.data.msg,
+                        type: 'warning',
+                        offset: 50
+                    });
+                    that.fullscreenLoading = false;
+                }
+            })
         }
     },
-    mounted(){
-        this.editid=this.$route.query.id;
-        this.token=JSON.parse(localStorage.getItem('userinif')).token;
-        this.userid=JSON.parse(localStorage.getItem('userinif')).userInfo.userId;
+    mounted() {
+        this.editid = this.$route.query.id;
+        this.token = JSON.parse(localStorage.getItem('userinif')).token;
+        this.userid = JSON.parse(localStorage.getItem('userinif')).userInfo.userId;
         this.getSalesQuoteNo();
         this.getdown();
         this.getGroupInfo();
@@ -379,34 +462,41 @@ export default {
 }
 </script>
 <style>
-    .groupedit{
-        background-color: #fff;
-        border-radius: 10px;
-        padding: 20px;
-    }
-    .required-box{
-        display: flex;
-        flex-wrap: wrap;
-        justify-content: space-between;
-    }
-    .required-box>div{
-        width: 30%;
-    }
-    .required-box .el-select{
-        width: 100%;
-    }
-    .approval-box{
-        display: flex;
-        justify-content: space-between;
-    }
-    .approval-box>div{
-        width: 23%;
-    }
-    .approval-box>div:nth-child(1){
-        width: 30%;
-    }
-    .advance-box{
-        display: flex;
-        align-items: center;
-    }
+.groupedit {
+    background-color: #fff;
+    border-radius: 10px;
+    padding: 20px;
+}
+
+.required-box {
+    display: flex;
+    flex-wrap: wrap;
+    justify-content: space-between;
+}
+
+.required-box>div {
+    width: 30%;
+}
+
+.required-box .el-select {
+    width: 100%;
+}
+
+.approval-box {
+    display: flex;
+    justify-content: space-between;
+}
+
+.approval-box>div {
+    width: 23%;
+}
+
+.approval-box>div:nth-child(1) {
+    width: 30%;
+}
+
+.advance-box {
+    display: flex;
+    align-items: center;
+}
 </style>>

+ 1 - 0
src/components/OP/GroupsTaskAssignment.vue

@@ -79,6 +79,7 @@ export default {
                     that.delegationInfos = res.data.data.delegationInfos;
                     that.setData = res.data.data.setData;
                     that.user = res.data.data.user;
+                    console.log(that.setData)
                 }
             })
         },

+ 162 - 179
src/components/Resource/HotelReservations.vue

@@ -5,11 +5,7 @@
                 <div class="hotelr-head-li">
                     <label>团组名称:</label>
                     <el-select @change="Receivables" v-model="value" filterable placeholder="请选择">
-                        <el-option
-                        v-for="item in options"
-                        :key="item.id"
-                        :label="item.groupName"
-                        :value="item.id">
+                        <el-option v-for="item in options" :key="item.id" :label="item.groupName" :value="item.id">
                         </el-option>
                     </el-select>
                 </div>
@@ -37,82 +33,42 @@
                 </div>
             </div>
             <div class="hotelr-table">
-                <el-table
-                    :data="tableData"
-                    border
-                    style="width: 100%">
-                    <el-table-column
-                    type="index"
-                    label="序号"
-                    width="50">
+                <el-table :data="tableData" border style="width: 100%">
+                    <el-table-column type="index" label="序号" width="50">
                     </el-table-column>
-                    <el-table-column
-                    prop="date"
-                    label="预定号"
-                    width="180">
+                    <el-table-column prop="date" label="预定号" width="180">
                     </el-table-column>
-                    <el-table-column
-                    prop="name"
-                    label="酒店名称"
-                    width="180">
+                    <el-table-column prop="name" label="酒店名称" width="180">
                     </el-table-column>
-                    <el-table-column
-                    prop="date"
-                    label="入住日期"
-                    width="120">
+                    <el-table-column prop="date" label="入住日期" width="120">
                     </el-table-column>
-                    <el-table-column
-                    prop="date"
-                    label="退房日期"
-                    width="120">
+                    <el-table-column prop="date" label="退房日期" width="120">
                     </el-table-column>
-                    <el-table-column
-                    prop="name"
-                    label="付款金额"
-                    width="100">
+                    <el-table-column prop="name" label="付款金额" width="100">
                     </el-table-column>
-                    <el-table-column
-                    prop="name"
-                    label="操作人"
-                    width="100">
+                    <el-table-column prop="name" label="操作人" width="100">
                     </el-table-column>
-                    <el-table-column
-                    prop="name"
-                    label="操作时间"
-                    width="180">
+                    <el-table-column prop="name" label="操作时间" width="180">
                     </el-table-column>
-                    <el-table-column
-                    prop="name"
-                    label="附 件"
-                    width="80">
+                    <el-table-column prop="name" label="附 件" width="80">
                     </el-table-column>
-                    <el-table-column
-                    prop="name"
-                    label="是否审核"
-                    width="100">
+                    <el-table-column prop="name" label="是否审核" width="100">
                     </el-table-column>
-                    <el-table-column
-                    prop="name"
-                    label="操 作"
-                    width="140">
+                    <el-table-column prop="name" label="操 作" width="140">
                     </el-table-column>
-                    <el-table-column
-                    prop="address"
-                    label="VOUCHER">
+                    <el-table-column prop="address" label="VOUCHER">
                     </el-table-column>
                 </el-table>
             </div>
             <div class="hotelr-form">
                 <div class="form-head">
-                    <el-popover
-                    placement="right"
-                    trigger="hover">
-                    <el-table :data="gridData" border>
-                        <el-table-column width="150" property="date" label="日期"></el-table-column>
-                        <el-table-column width="100" property="name" label="姓名"></el-table-column>
-                        <el-table-column width="300" property="address" label="地址"></el-table-column>
-                    </el-table>
-                    <el-button slot="reference">hover 激活</el-button>
+                    <el-popover placement="right" trigger="hover">
+                        <el-table :data="gridData" border>
+                            <el-table-column width="150" property="date" label="日期"></el-table-column>
+                            <el-table-column width="100" property="name" label="姓名"></el-table-column>
+                            <el-table-column width="300" property="address" label="地址"></el-table-column>
+                        </el-table>
+                        <el-button slot="reference">移上提示每天详细房价</el-button>
                     </el-popover>
                     <div class="form-head-btn">
                         <el-button type="primary">确认单</el-button>
@@ -122,7 +78,7 @@
                     </div>
                 </div>
                 <div class="form-foundationone select-bz">
-                    <el-form  :model="ruleForm" :rules="rules" ref="ruleForm" label-width="110px" class="demo-ruleForm">
+                    <el-form :model="ruleForm" :rules="rules" ref="ruleForm" label-width="110px" class="demo-ruleForm">
                         <div style="display: flex;flex-wrap: wrap;">
                             <el-form-item style="width:350px ;" label="客人类型" prop="region">
                                 <el-select size="medium" v-model="ruleForm.region" placeholder="请选择活动区域">
@@ -130,13 +86,13 @@
                                     <el-option label="区域二" value="beijing"></el-option>
                                 </el-select>
                             </el-form-item>
-                            <el-form-item  style="width:350px ;" label="计算费用币种" prop="region">
+                            <el-form-item style="width:350px ;" label="计算费用币种" prop="region">
                                 <el-select size="medium" v-model="ruleForm.region" placeholder="请选择活动区域">
                                     <el-option label="区域一" value="shanghai"></el-option>
                                     <el-option label="区域二" value="beijing"></el-option>
                                 </el-select>
                             </el-form-item>
-                            <el-form-item   label="汇率">
+                            <el-form-item label="汇率">
                                 <span>7.52</span>
                             </el-form-item>
                         </div>
@@ -153,7 +109,7 @@
                             <el-form-item style="width:350px ;" label="预订号码" prop="desc">
                                 <el-input size="medium" type="text" v-model="ruleForm.desc"></el-input>
                             </el-form-item>
-                            <el-form-item  style="width:350px ;" label="酒店确定号码" prop="desc">
+                            <el-form-item style="width:350px ;" label="酒店确定号码" prop="desc">
                                 <el-input size="medium" type="text" v-model="ruleForm.desc"></el-input>
                             </el-form-item>
                         </div>
@@ -164,7 +120,7 @@
                             <el-form-item style="width:350px ;" label="酒店名称" prop="desc">
                                 <el-input size="medium" type="text" v-model="ruleForm.desc"></el-input>
                             </el-form-item>
-                            <el-form-item  style="width:350px ;" label="酒店电话" prop="desc">
+                            <el-form-item style="width:350px ;" label="酒店电话" prop="desc">
                                 <el-input size="medium" type="text" v-model="ruleForm.desc"></el-input>
                             </el-form-item>
                         </div>
@@ -175,28 +131,34 @@
                             <el-input :rows="1" type="textarea" v-model="ruleForm.desc"></el-input>
                         </el-form-item>
                         <div class="remcss" style="display: flex;flex-wrap: wrap;">
-                            <el-form-item prop="date1"  style="width:350px ;" label="入住时间" required>
-                                <el-date-picker size="medium" type="date" placeholder="选择日期" v-model="ruleForm.date1" style="width: 100%;"></el-date-picker>
+                            <el-form-item prop="date1" style="width:350px ;" label="入住时间" required>
+                                <el-date-picker size="medium" type="date" placeholder="选择日期" v-model="ruleForm.date1"
+                                    style="width: 100%;"></el-date-picker>
                             </el-form-item>
                             <el-form-item style="width:350px ;" label="离店时间" prop="date2">
-                                <el-date-picker size="medium" type="date" placeholder="选择时间" v-model="ruleForm.date2" style="width: 100%;"></el-date-picker>
+                                <el-date-picker size="medium" type="date" placeholder="选择时间" v-model="ruleForm.date2"
+                                    style="width: 100%;"></el-date-picker>
                             </el-form-item>
                         </div>
                         <div style="display: flex;flex-wrap: wrap;">
                             <el-form-item style="width:350px ;" label="酒店单间" prop="desc">
-                                <el-input-number style="width:100px ;" size="medium" :controls="false" v-model="ruleForm.fangnum"></el-input-number>
+                                <el-input-number style="width:100px ;" size="medium" :controls="false"
+                                    v-model="ruleForm.fangnum"></el-input-number>
                                 <span>间</span>
                             </el-form-item>
                             <el-form-item style="width:350px ;" label="酒店双间" prop="desc">
-                                <el-input-number style="width:100px ;" size="medium" :controls="false" v-model="ruleForm.fangnum"></el-input-number>
+                                <el-input-number style="width:100px ;" size="medium" :controls="false"
+                                    v-model="ruleForm.fangnum"></el-input-number>
                                 <span>间</span>
                             </el-form-item>
                             <el-form-item style="width:350px ;" label="酒店套房" prop="desc">
-                                <el-input-number style="width:100px ;" size="medium" :controls="false" v-model="ruleForm.fangnum"></el-input-number>
+                                <el-input-number style="width:100px ;" size="medium" :controls="false"
+                                    v-model="ruleForm.fangnum"></el-input-number>
                                 <span>间</span>
                             </el-form-item>
                             <el-form-item style="width:350px ;" label="其他房型" prop="desc">
-                                <el-input-number style="width:100px ;" size="medium" :controls="false" v-model="ruleForm.fangnum"></el-input-number>
+                                <el-input-number style="width:100px ;" size="medium" :controls="false"
+                                    v-model="ruleForm.fangnum"></el-input-number>
                                 <span>间</span>
                             </el-form-item>
                         </div>
@@ -215,14 +177,16 @@
                                 </el-select>
                             </el-form-item>
                             <el-form-item style="width:350px ;" label="地税" prop="desc">
-                                <el-input-number :precision="2" style="width:100px ;" size="medium" :controls="false" v-model="ruleForm.fangnum"></el-input-number>
+                                <el-input-number :precision="2" style="width:100px ;" size="medium" :controls="false"
+                                    v-model="ruleForm.fangnum"></el-input-number>
                                 <el-select style="width:100px ;" size="medium" v-model="ruleForm.region" placeholder="请选择">
                                     <el-option label="CNY" value="shanghai"></el-option>
                                     <el-option label="USD" value="beijing"></el-option>
                                 </el-select>
                             </el-form-item>
                             <el-form-item style="width:350px ;" label="城市税" prop="desc">
-                                <el-input-number :precision="2" style="width:100px ;" size="medium" :controls="false" v-model="ruleForm.fangnum"></el-input-number>
+                                <el-input-number :precision="2" style="width:100px ;" size="medium" :controls="false"
+                                    v-model="ruleForm.fangnum"></el-input-number>
                                 <el-select style="width:100px ;" size="medium" v-model="ruleForm.region" placeholder="请选择">
                                     <el-option label="CNY" value="shanghai"></el-option>
                                     <el-option label="USD" value="beijing"></el-option>
@@ -231,7 +195,8 @@
                         </div>
                         <div style="display: flex;flex-wrap: wrap;">
                             <el-form-item label-width="100px" style="width:350px ;" label="入住类型" prop="region">
-                                <el-select style="width: 100%;" size="medium" v-model="ruleForm.region" placeholder="请选择活动区域">
+                                <el-select style="width: 100%;" size="medium" v-model="ruleForm.region"
+                                    placeholder="请选择活动区域">
                                     <el-option label="客人房" value="shanghai"></el-option>
                                     <el-option label="导游房" value="beijing"></el-option>
                                 </el-select>
@@ -253,7 +218,8 @@
                     <el-form :model="ruleForm" :rules="rules" ref="ruleForm" label-width="100px" class="demo-ruleForm">
                         <div style="display: flex;flex-wrap: wrap;">
                             <el-form-item style="width:350px ;" label="支付方式" prop="region">
-                                <el-select style="width: 100%;" size="medium" v-model="ruleForm.region" placeholder="请选择活动区域">
+                                <el-select style="width: 100%;" size="medium" v-model="ruleForm.region"
+                                    placeholder="请选择活动区域">
                                     <el-option label="区域一" value="shanghai"></el-option>
                                     <el-option label="区域二" value="beijing"></el-option>
                                 </el-select>
@@ -261,11 +227,13 @@
                             <el-form-item style="width:350px ;" label="消费方式" prop="desc">
                                 <el-input size="medium" type="text" v-model="ruleForm.desc"></el-input>
                             </el-form-item>
-                            <el-form-item prop="date1"  style="width:350px ;" label="消费日期" required>
-                                <el-date-picker size="medium" type="date" placeholder="选择日期" v-model="ruleForm.date1" style="width: 100%;"></el-date-picker>
+                            <el-form-item prop="date1" style="width:350px ;" label="消费日期" required>
+                                <el-date-picker size="medium" type="date" placeholder="选择日期" v-model="ruleForm.date1"
+                                    style="width: 100%;"></el-date-picker>
                             </el-form-item>
                             <el-form-item style="width:350px ;" label="付款金额" prop="desc">
-                                <el-input-number :precision="2" style="width:100px ;" size="medium" :controls="false" v-model="ruleForm.fangnum"></el-input-number>
+                                <el-input-number :precision="2" style="width:100px ;" size="medium" :controls="false"
+                                    v-model="ruleForm.fangnum"></el-input-number>
                                 <el-select style="width:100px ;" size="medium" v-model="ruleForm.region" placeholder="请选择">
                                     <el-option label="CNY" value="shanghai"></el-option>
                                     <el-option label="USD" value="beijing"></el-option>
@@ -274,7 +242,8 @@
                         </div>
                         <div style="display: flex;flex-wrap: wrap;">
                             <el-form-item style="width:350px ;" label="卡类型" prop="region">
-                                <el-select style="width: 100%;" size="medium" v-model="ruleForm.region" placeholder="请选择活动区域">
+                                <el-select style="width: 100%;" size="medium" v-model="ruleForm.region"
+                                    placeholder="请选择活动区域">
                                     <el-option label="区域一" value="shanghai"></el-option>
                                     <el-option label="区域二" value="beijing"></el-option>
                                 </el-select>
@@ -282,7 +251,7 @@
                             <el-form-item style="width:350px ;" label="银行卡号" prop="desc">
                                 <el-input size="medium" type="text" v-model="ruleForm.desc"></el-input>
                             </el-form-item>
-                            <el-form-item prop="date1"  style="width:350px ;" label="持卡人姓名" required>
+                            <el-form-item prop="date1" style="width:350px ;" label="持卡人姓名" required>
                                 <el-input size="medium" type="text" v-model="ruleForm.desc"></el-input>
                             </el-form-item>
                         </div>
@@ -291,7 +260,8 @@
                                 <el-input size="medium" type="text" v-model="ruleForm.desc"></el-input>
                             </el-form-item>
                             <el-form-item style="width:350px ;" label="费用标识" prop="region">
-                                <el-select style="width: 100%;" size="medium" v-model="ruleForm.region" placeholder="请选择活动区域">
+                                <el-select style="width: 100%;" size="medium" v-model="ruleForm.region"
+                                    placeholder="请选择活动区域">
                                     <el-option label="区域一" value="shanghai"></el-option>
                                     <el-option label="区域二" value="beijing"></el-option>
                                 </el-select>
@@ -309,87 +279,87 @@
 <script>
 export default {
     data() {
-      return {
-        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 弄'
-        }],
-        gridData: [{
-          date: '2016-05-02',
-          name: '王小虎',
-          address: '上海市普陀区金沙江路 1518 弄'
-        }, {
-          date: '2016-05-04',
-          name: '王小虎',
-          address: '上海市普陀区金沙江路 1518 弄'
-        }, {
-          date: '2016-05-01',
-          name: '王小虎',
-          address: '上海市普陀区金沙江路 1518 弄'
-        }, {
-          date: '2016-05-03',
-          name: '王小虎',
-          address: '上海市普陀区金沙江路 1518 弄'
-        }],
-        ruleForm: {
-          name: '',
-          region: '',
-          date1: '',
-          date2: '',
-          delivery: false,
-          type: [],
-          resource: '',
-          desc: '',
-          fangnum:'',
-        },
-        rules: {
-          name: [
-            { required: true, message: '请输入活动名称', trigger: 'blur' },
-            { min: 3, max: 5, message: '长度在 3 到 5 个字符', trigger: 'blur' }
-          ],
-          region: [
-            { required: true, message: '请选择活动区域', trigger: 'change' }
-          ],
-          date1: [
-            { type: 'date', required: true, message: '请选择日期', trigger: 'change' }
-          ],
-          date2: [
-            { type: 'date', required: true, message: '请选择时间', trigger: 'change' }
-          ],
-          type: [
-            { type: 'array', required: true, message: '请至少选择一个活动性质', trigger: 'change' }
-          ],
-          resource: [
-            { required: true, message: '请选择活动资源', trigger: 'change' }
-          ],
-          desc: [
-            { required: true, message: '请填写活动形式', trigger: 'blur' }
-          ]
+        return {
+            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 弄'
+            }],
+            gridData: [{
+                date: '2016-05-02',
+                name: '王小虎',
+                address: '上海市普陀区金沙江路 1518 弄'
+            }, {
+                date: '2016-05-04',
+                name: '王小虎',
+                address: '上海市普陀区金沙江路 1518 弄'
+            }, {
+                date: '2016-05-01',
+                name: '王小虎',
+                address: '上海市普陀区金沙江路 1518 弄'
+            }, {
+                date: '2016-05-03',
+                name: '王小虎',
+                address: '上海市普陀区金沙江路 1518 弄'
+            }],
+            ruleForm: {
+                name: '',
+                region: '',
+                date1: '',
+                date2: '',
+                delivery: false,
+                type: [],
+                resource: '',
+                desc: '',
+                fangnum: '',
+            },
+            rules: {
+                name: [
+                    { required: true, message: '请输入活动名称', trigger: 'blur' },
+                    { min: 3, max: 5, message: '长度在 3 到 5 个字符', trigger: 'blur' }
+                ],
+                region: [
+                    { required: true, message: '请选择活动区域', trigger: 'change' }
+                ],
+                date1: [
+                    { type: 'date', required: true, message: '请选择日期', trigger: 'change' }
+                ],
+                date2: [
+                    { type: 'date', required: true, message: '请选择时间', trigger: 'change' }
+                ],
+                type: [
+                    { type: 'array', required: true, message: '请至少选择一个活动性质', trigger: 'change' }
+                ],
+                resource: [
+                    { required: true, message: '请选择活动资源', trigger: 'change' }
+                ],
+                desc: [
+                    { required: true, message: '请填写活动形式', trigger: 'blur' }
+                ]
+            }
         }
-      }
     },
-    methods:{
+    methods: {
         submitForm(formName) {
             this.$refs[formName].validate((valid) => {
-            if (valid) {
-                alert('submit!');
-            } else {
-                console.log('error submit!!');
-                return false;
-            }
+                if (valid) {
+                    alert('submit!');
+                } else {
+                    console.log('error submit!!');
+                    return false;
+                }
             });
         },
         resetForm(formName) {
@@ -399,7 +369,7 @@ export default {
 }
 </script>
 <style>
-.hotelr-all{
+.hotelr-all {
     background-color: #fff;
     padding: 10px;
     box-shadow: 0 0 5px #0005;
@@ -407,53 +377,66 @@ export default {
     height: 100%;
     min-height: 840px;
 }
-.hotelr-head-li label{
+
+.hotelr-head-li label {
     color: #606266;
     font-size: 15px;
     font-weight: 600;
 }
-.hotelr-head{
+
+.hotelr-head {
     display: flex;
     justify-content: space-between;
 }
-.hotelr-info{
+
+.hotelr-info {
     display: flex;
     margin-top: 10px;
 }
-.hotelr-info-li{
+
+.hotelr-info-li {
     margin-right: 30px;
 }
-.hotelr-info-li label{
+
+.hotelr-info-li label {
     color: #606266;
     font-size: 15px;
     font-weight: 600;
 }
-.hotelr-info-li span{ 
+
+.hotelr-info-li span {
     color: #606266;
     font-size: 14px;
 }
-.hotelr-table{
+
+.hotelr-table {
     margin-top: 10px;
 }
-.form-head{
+
+.form-head {
     display: flex;
     justify-content: space-between;
 }
-.hotelr-form{
-    margin-top:20px ;
+
+.hotelr-form {
+    margin-top: 20px;
 }
-.form-foundationone{
+
+.form-foundationone {
     margin-top: 10px;
     border-top: 2px solid #409EFF;
     padding-top: 20px;
 }
-.form-foundationone .el-form-item{
+
+.form-foundationone .el-form-item {
     margin-bottom: 12px;
 }
-.form-foundationone .el-form-item__error{
+
+.form-foundationone .el-form-item__error {
     top: 90%;
 }
-.select-bz .el-select{
+
+.select-bz .el-select {
     width: 100%;
 }
 </style>

+ 2 - 1
src/components/OP/OPgroup.vue

@@ -348,9 +348,10 @@ export default {
                             type: 'success',
                             offset:50
                         });
-                        row.tourCode=res.data.data.tourCode;
+                        row.tourCode=res.data.data;
                         // rows.splice(index, 1);
                     }else{
+                        row.tourCode=res.data.msg;
                         that.$message({
                             message:res.data.msg ,
                             type: 'warning',

+ 12 - 9
src/components/OP/OpAirTicketRes.vue

@@ -612,6 +612,7 @@ export default {
                 this.$message.error('审核已通过,不可修改!');
             } else {
                 if (this.DiId == null && this.DiId == undefined && this.DiId == "") {
+
                     this.$message.error("请选择团组名称");
                     var ss = this.airTicketResOpData.clientName.split(',')
                     this.airTicketResOpData.clientName = [];
@@ -638,7 +639,7 @@ export default {
                     checkForm(item)
                 })
                 Promise.all(resultArr).then(values => {
-                    debugger
+
 
                     that.airTicketResOpData.diId = parseInt(that.DiId);
                     that.airTicketResOpData.createUserId = that.userId;
@@ -743,7 +744,7 @@ export default {
                     that.airTicketResOpData.createUserId = airData.createUserId
                     that.airTicketResOpData.remark = airData.remark
 
-                    debugger
+
                     var ss = airData.clientName.split(',')
                     that.airTicketResOpData.clientName = [];
                     ss.forEach(function (item) {
@@ -820,7 +821,7 @@ export default {
         },
         //单价值改变事件
         peiceinput() {
-            debugger
+
             this.cardPaymentOpData.payMoney = parseFloat(parseFloat(this.airTicketResOpData.prePrice) * parseFloat(this.airTicketResOpData.clientNum)).toFixed(2)
             this.cardPaymentOpData.payThenMoney = this.cardPaymentOpData.payMoney
             this.airTicketResOpData.price = parseFloat(parseFloat(this.airTicketResOpData.prePrice) * parseFloat(this.airTicketResOpData.clientNum)).toFixed(2)
@@ -832,16 +833,17 @@ export default {
         },
         //航班描述值改变事件
         flightsCodeChange(val) {
+
             var reg = /[\r\n]+/g;
             var that = this;
             that.airTicketResOpData.flightsCode = ''
             that.airTicketResOpData.flightsCity = ''
             var dateTime = [];
             if (reg.test(val)) {
-                debugger
+
                 var attrsList = val.split(reg)
                 attrsList.forEach(function (item, index) {
-                    debugger
+
                     var ss = item.split(' ')
                     for (var i = 0; i < ss.length; i++) {
                         ss[i] = ss[i].trim();
@@ -851,7 +853,7 @@ export default {
                         }
                     }
                     ss = ss;
-                    debugger
+
                     that.airTicketResOpData.flightsCode += ss[1] + '/'//航班号
                     that.airTicketResOpData.flightsCity += ss[4].substring(0, 3) + '-' + ss[4].substring(3) + '/'//城市
                     var dateStr = ss[3].substring(4)
@@ -913,9 +915,10 @@ export default {
                         return 0;
                     }
                 }
+                debugger
                 dateTime = dateTime.sort(compare);
-                that.airTicketResOpData.flightsTime = dateTime[dateTime.length - 1].time
-                that.airTicketResOpData.flightsDate = dateTime[dateTime.length - 1].date
+                that.airTicketResOpData.flightsTime = dateTime[0].time
+                that.airTicketResOpData.flightsDate = dateTime[0].date
             } else {
                 var ss = val.split(' ')
                 for (var i = 0; i < ss.length; i++) {
@@ -929,7 +932,7 @@ export default {
                 that.airTicketResOpData.flightsCode = ss[1]//航班号
                 that.airTicketResOpData.flightsCity += ss[4].substring(0, 3) + '-' + ss[4].substring(3)//城市
                 that.airTicketResOpData.flightsTime = ss[6].substring(0, 2) + ':' + ss[6].substring(2)//时间
-                debugger
+
                 var dateStr = ss[3].substring(4)
                 switch (dateStr) {
                     case "JAN":

+ 474 - 0
src/components/OP/OpCarTouristGuideGroundId.vue

@@ -0,0 +1,474 @@
+<template>
+    <div class="car_add">
+        <div>
+            <div class="communal-title">
+                <div>{{ title }}</div>
+            </div>
+        </div>
+        <hr style='background-color:#5555; height:1px; border:none;' />
+        <div>
+            <el-form :model="delegationInfo" label-width="100px" class="demo-ruleForm">
+                <div style="display: flex;">
+                    <div style="width: 25%;">
+                        <el-form-item label="团组名称:" label-width="160px">
+                            <el-select v-model="OpCarTouristGuideGroundData.diId" clearable filterable placeholder="团组选择"
+                                :disabled="isShow" style="width: 220px;" @change="DiIdSelectChange">
+                                <el-option v-for="item in delegationInfoList" :key="item.id" :label="item.teamName"
+                                    :value="item.id">
+                                </el-option>
+                            </el-select>
+                        </el-form-item>
+                    </div>
+                    <div style="width: 25%;">
+                        <el-form-item label="团 号:" prop="tourCode" label-width="160px">
+                            <el-input placeholder="团号" v-model="delegationInfo.tourCode" :disabled="true">
+                            </el-input>
+                        </el-form-item>
+                    </div>
+                    <div style="width: 25%;">
+                        <el-form-item label="客户:" prop="clientName" label-width="160px">
+                            <el-input placeholder="客户" v-model="delegationInfo.clientName" :disabled="true">
+                            </el-input>
+                        </el-form-item>
+                    </div>
+                    <div style="width: 25%;">
+                        <el-form-item label="出访国家:" prop="visitCountry" label-width="160px">
+                            <el-input placeholder="出访国家" v-model="delegationInfo.visitCountry" :disabled="true">
+                            </el-input>
+                        </el-form-item>
+                    </div>
+                </div>
+                <div style="display: flex;">
+                    <div style="width: 25%;">
+                        <el-form-item label="出访时间:" label-width="160px">
+                            <el-input placeholder="出访时间" v-model="VisitDate" :disabled="true">
+                            </el-input>
+                        </el-form-item>
+                    </div>
+                    <div style="width: 25%;">
+                        <el-form-item label="出访人数:" label-width="160px">
+                            <el-input placeholder="出访人数" v-model="delegationInfo.visitPNumber" :disabled="true">
+                            </el-input>
+                        </el-form-item>
+                    </div>
+                    <div style="width: 25%;">
+                        <el-form-item label="出访天数:" label-width="160px">
+                            <el-input placeholder="出访天数" v-model="delegationInfo.visitDays" :disabled="true">
+                            </el-input>
+                        </el-form-item>
+                    </div>
+                </div>
+                <div style="display: flex;">
+                    <div style="width: 25%;">
+                        <el-form-item label="OP提成等级:" prop="tourCode" label-width="160px">
+                            <el-select v-model="delegationInfo.opRoyaltyLv" clearable filterable placeholder="等级"
+                                :disabled="true" style="width: 220px;">
+                                <el-option v-for="item in opRoyaltyLvList" :key="item.id" :label="item.name + '元'"
+                                    :value="item.id">
+                                </el-option>
+                            </el-select>
+                        </el-form-item>
+                    </div>
+                    <div style="width: 60%;">
+                        <el-form-item label="Op提成等级说明:" prop="opRoyaltyRemark" label-width="160px">
+                            <el-input placeholder="Op提成等级说明" v-model="delegationInfo.opRoyaltyRemark" :disabled="true">
+                            </el-input>
+                        </el-form-item>
+                    </div>
+
+                </div>
+            </el-form>
+            <el-form :model="OpCarTouristGuideGroundData" ref="OpCarTouristGuideGroundData"
+                :rules="OpCarTouristGuideGroundDataRules" label-width="100px" class="demo-ruleForm">
+                <div style="display: flex;">
+                    <div style="width: 25%;">
+                        <el-form-item label="地区:" prop="area" label-width="160px">
+                            <el-input placeholder="地区" v-model="OpCarTouristGuideGroundData.area">
+                            </el-input>
+                        </el-form-item>
+                    </div>
+                    <div style="width: 25%;">
+                        <el-form-item label="服务时间起:" prop="serviceStartTime" label-width="160px">
+                            <el-date-picker v-model="OpCarTouristGuideGroundData.serviceStartTime" type="date"
+                                value-format="yyyy-MM-dd" placeholder="服务时间起">
+                            </el-date-picker>
+
+                        </el-form-item>
+                    </div>
+                    <div style="width: 25%;">
+                        <el-form-item label="服务时间止:" prop="serviceEndTime" label-width="160px">
+                            <el-date-picker v-model="OpCarTouristGuideGroundData.serviceEndTime" type="date"
+                                value-format="yyyy-MM-dd" placeholder="服务时间止">
+                            </el-date-picker>
+
+                        </el-form-item>
+                    </div>
+                    <div style="width: 25%;">
+                        <el-form-item label="服务公司:" prop="serviceCompany" label-width="160px">
+                            <el-input placeholder="服务公司" v-model="OpCarTouristGuideGroundData.serviceCompany">
+                            </el-input>
+                        </el-form-item>
+                    </div>
+                </div>
+                <div style="display: flex;">
+                    <div style="width: 25%;">
+                        <el-form-item label="地接导游:" prop="serviceGuide" label-width="160px">
+                            <el-input placeholder="地接导游" v-model="OpCarTouristGuideGroundData.serviceGuide">
+                            </el-input>
+                        </el-form-item>
+                    </div>
+                    <div style="width: 25%;">
+                        <el-form-item label="联系电话:" prop="serviceTel" label-width="160px">
+                            <el-input placeholder="联系电话" v-model="OpCarTouristGuideGroundData.serviceTel">
+                            </el-input>
+                        </el-form-item>
+                    </div>
+                    <div style="width: 25%;">
+                        <el-form-item label="Bus名称:" prop="busName" label-width="160px">
+                            <el-input placeholder="Bus名称" v-model="OpCarTouristGuideGroundData.busName">
+                            </el-input>
+                        </el-form-item>
+                    </div>
+                    <div style="width: 25%;">
+                        <el-form-item label="联系电话:" prop="busTel" label-width="160px">
+                            <el-input placeholder="联系电话" v-model="OpCarTouristGuideGroundData.busTel">
+                            </el-input>
+                        </el-form-item>
+                    </div>
+                </div>
+                <div style="display: flex;">
+                    <div style="width: 25%;">
+                        <el-form-item label="费用表示:" prop="orbitalPrivateTransfer" label-width="160px">
+                            <el-select v-model="OpCarTouristGuideGroundData.orbitalPrivateTransfer" clearable filterable
+                                placeholder="费用标识" style="width: 220px;">
+                                <el-option :key=0 :value="0" label="公转"></el-option>
+                                <el-option :key=1 :value="1" label="私转"></el-option>
+                            </el-select>
+                        </el-form-item>
+                    </div>
+                </div>
+                <div style="display: flex;">
+                    <div style="width: 100%;">
+                        <el-form-item label="Bus描述:" prop="busDescription" label-width="160px">
+                            <el-input type="textarea" :rows="2" placeholder="Bus描述"
+                                v-model="OpCarTouristGuideGroundData.busDescription"></el-input>
+                        </el-form-item>
+                    </div>
+                </div>
+                <div style="display: flex;">
+                    <div style="width: 100%;">
+                        <el-form-item label="服务描述:" prop="serviceDescription" label-width="160px">
+                            <el-input type="textarea" :rows="2" placeholder="服务描述"
+                                v-model="OpCarTouristGuideGroundData.serviceDescription"></el-input>
+                        </el-form-item>
+                    </div>
+                </div>
+                <div style="display: flex;">
+                    <div style="width: 100%;">
+                        <el-form-item label="备 注:" prop="remark" label-width="160px">
+                            <el-input type="textarea" :rows="5" placeholder="备注"
+                                v-model="OpCarTouristGuideGroundData.remark"></el-input>
+                        </el-form-item>
+                    </div>
+                </div>
+                <el-form-item>
+                    <div style="margin-left: 60%;">
+                        <el-button type="primary" @click="addBtn">保存</el-button>
+                        <el-button @click="EscAdd">取消</el-button>
+                    </div>
+                </el-form-item>
+            </el-form>
+        </div>
+    </div>
+</template>
+<script>
+import { dE } from '@fullcalendar/core/internal-common';
+export default {
+    data() {
+        return {
+            title: "新增Op费用",
+            token: '',
+            userId: 0,
+            isShow: false,
+            delegationInfo: {},
+            delegationInfoList: [],//团组下拉框
+            OpCarTouristGuideGroundData: {
+                status: 0,
+                id: 0,
+                diId: 0,
+                area: '',
+                serviceCompany: '',
+                serviceGuide: '',
+                serviceTel: '',
+                busName: '',
+                busDescription: '',
+                busTel: '',
+                serviceStartTime: '',
+                serviceEndTime: '',
+                serviceDescription: '',
+                orbitalPrivateTransfer: 0,
+                createUserId: 0,
+                remark: ''
+            },
+            IsAuditGM: 0,
+            VisitDate: '',
+            opRoyaltyLvList: [],
+            dateFormat: function (value) {
+
+                // 将value转换为Date对象
+                var date = new Date(value);
+                // 获取年、月、日
+                var year = date.getFullYear();
+                var month = date.getMonth() + 1;
+                var day = date.getDate();
+                // 将月份和日期转换为两位数的格式
+
+                if (month < 10) {
+                    month = '0' + month;
+                }
+                if (day < 10) {
+                    day = '0' + day;
+                }
+                // 返回格式化后的日期字符串
+                return year + '-' + month + '-' + day;
+            },
+            OpCarTouristGuideGroundDataRules: {
+                area: [
+                    { required: true, message: '请输入地区', trigger: ['blur', 'change'] },
+                ],
+                serviceCompany: { required: true, message: '请输入服务公司', trigger: ['blur', 'change'] },
+                serviceGuide: { required: true, message: '请输入服务导游', trigger: ['blur', 'change'] },
+                serviceTel: { required: true, message: '请输入导游地接联系电话', trigger: ['blur', 'change'] },
+                busName: { required: true, message: '请输入Bus名称', trigger: ['blur', 'change'] },
+                busTel: { required: true, message: '请输入车公司联系电话', trigger: ['blur', 'change'] },
+                serviceStartTime: { required: true, message: '请输入服务时间起', trigger: ['blur', 'change'] },
+                serviceEndTime: { required: true, message: '请输入服务时间止', trigger: ['blur', 'change'] },
+                orbitalPrivateTransfer: { required: true, message: '请输选择费用表示', trigger: ['blur', 'change'] },
+            }
+        }
+    },
+    methods: {
+        //初始化下拉框
+        initializeSelect() {
+            var url = "/api/System/QuerySetData"
+            var that = this
+            this.$axios({
+                method: 'post',
+                url: url,
+                headers: {
+                    Authorization: 'Bearer ' + this.token
+                },
+                data: {
+                    dataType: 70,
+                }
+            }).then(function (res) {
+                if (res.data.code == 200) {
+                    that.opRoyaltyLvList = res.data.data;
+                    var url = "/api/Groups/DecreasePaymentsSelect"
+                    that.$axios({
+                        method: 'post',
+                        url: url,
+                        headers: {
+                            Authorization: 'Bearer ' + that.token
+                        },
+                        data: {
+                            userId: that.userId,
+                            ctId: 79
+                        }
+                    }).then(function (res) {
+                        if (res.data.code == 200) {
+                            debugger
+                            that.delegationInfoList = res.data.data.groupName;
+                            for (let index = 0; index < that.delegationInfoList.length; index++) {
+                                debugger
+                                if (that.delegationInfoList[index].id == that.OpCarTouristGuideGroundData.diId) {
+                                    that.delegationInfo = that.delegationInfoList[index];
+                                    that.VisitDate = that.dateFormat(that.delegationInfo.visitStartDate) + '至' + that.dateFormat(that.delegationInfo.visitEndDate);
+                                    debugger
+                                    that.delegationInfo.opRoyaltyLv = that.delegationInfo.opRoyaltyLv
+                                    break;
+                                }
+                            }
+                        }
+                    })
+                }
+            })
+            //团组下拉框绑定
+
+
+        },
+        DiIdSelectChange() {
+            var that = this;
+            for (let index = 0; index < that.delegationInfoList.length; index++) {
+                if (that.delegationInfoList[index].id == that.OpCarTouristGuideGroundData.diId) {
+                    that.delegationInfo = that.delegationInfoList[index];
+
+                    that.VisitDate = that.dateFormat(that.delegationInfo.visitStartDate) + '至' + that.dateFormat(that.delegationInfo.visitEndDate);
+                    break;
+                }
+            }
+        },
+        //根据Id获取单挑数据及C表数据
+        QueryCarTouristGuideGroundById() {
+            var url = "/api/Groups/QueryCarTouristGuideGroundById"
+            var that = this
+            this.$axios({
+                method: 'post',
+                url: url,
+                headers: {
+                    Authorization: 'Bearer ' + this.token
+                },
+                data: {
+                    id: that.OpCarTouristGuideGroundData.id
+                }
+            }).then(function (res) {
+                if (res.data.code == 200) {
+                    debugger
+                    var CreditCardPayment = res.data.data.creditCardPayment;
+                    var carTouristGuideGround = res.data.data.carTouristGuideGround;
+                    if (CreditCardPayment != null) {
+                        that.IsAuditGM = CreditCardPayment.isAuditGM;
+                    }
+
+                    that.OpCarTouristGuideGroundData.area = carTouristGuideGround.area
+                    that.OpCarTouristGuideGroundData.serviceCompany = carTouristGuideGround.serviceCompany
+                    that.OpCarTouristGuideGroundData.serviceGuide = carTouristGuideGround.serviceGuide
+                    that.OpCarTouristGuideGroundData.serviceTel = carTouristGuideGround.serviceTel
+                    that.OpCarTouristGuideGroundData.busName = carTouristGuideGround.busName
+                    that.OpCarTouristGuideGroundData.busDescription = carTouristGuideGround.busDescription
+                    that.OpCarTouristGuideGroundData.busTel = carTouristGuideGround.busTel
+                    that.OpCarTouristGuideGroundData.serviceStartTime = carTouristGuideGround.serviceStartTime
+                    that.OpCarTouristGuideGroundData.serviceEndTime = carTouristGuideGround.serviceEndTime
+                    that.OpCarTouristGuideGroundData.serviceDescription = carTouristGuideGround.serviceDescription
+                    that.OpCarTouristGuideGroundData.orbitalPrivateTransfer = carTouristGuideGround.orbitalPrivateTransfer
+                    that.OpCarTouristGuideGroundData.remark = carTouristGuideGround.remark
+                }
+            })
+        },
+        addBtn() {
+            if (this.IsAuditGM == 1) {
+                this.$message.error('已通过审核,不可修改!');
+            } else {
+                if (this.OpCarTouristGuideGroundData.diId == null && this.OpCarTouristGuideGroundData.diId == undefined && this.OpCarTouristGuideGroundData.diId == "") {
+                    this.$message.error("请选择团组名称");
+                    return;
+                } else {
+                    const that = this;
+                    that.$refs.OpCarTouristGuideGroundData.validate((valid) => {
+                        if (valid) {
+                            var url = "/api/Groups/OpCarTouristGuideGround"
+                            that.$axios({
+                                method: 'post',
+                                url: url,
+                                headers: {
+                                    Authorization: 'Bearer ' + that.token
+                                },
+                                data: that.OpCarTouristGuideGroundData
+                            }).then(function (res) {
+                                if (res.data.code == 200) {
+                                    that.$message({
+                                        message: res.data.msg,
+                                        type: 'success'
+                                    });
+                                    setTimeout(() => {
+                                        that.$router.push('/home/CarTouristGuideGroundId')
+                                    }, 3000);
+                                } else {
+                                    that.$message.error(res.data.msg);
+                                }
+                            })
+                        } else {
+                            this.$message.error('请完善信息在保存!');
+                            return false;
+                        }
+                    })
+                }
+            }
+        },
+        EscAdd() {
+            this.$router.push({
+                path: "/home/CarTouristGuideGroundId",
+                query: {
+                    diId: this.OpCarTouristGuideGroundData.diId
+                }
+            })
+        }
+    },
+
+    mounted() {
+        this.token = JSON.parse(localStorage.getItem('userinif')).token;
+        this.userId = JSON.parse(localStorage.getItem('userinif')).userInfo.userId
+        this.initializeSelect();
+        this.OpCarTouristGuideGroundData.diId = parseInt(this.$route.query.DiId)
+        this.OpCarTouristGuideGroundData.id = this.$route.query.id
+        this.OpCarTouristGuideGroundData.createUserId = this.userId
+        debugger
+        if (this.OpCarTouristGuideGroundData.id != null && this.OpCarTouristGuideGroundData.id != undefined && this.OpCarTouristGuideGroundData.id != 0) {
+            this.QueryCarTouristGuideGroundById();
+            this.title = "修改签证费用";
+            this.OpCarTouristGuideGroundData.status = 2
+            this.isShow = true
+        } else {
+            this.OpCarTouristGuideGroundData.status = 1
+            this.title = "新增签证费用"
+            this.isShow = false
+        }
+
+    }
+}
+</script>
+<style>
+.communal-list {
+    background-color: #fff;
+    padding: 10px;
+    box-shadow: 0 0 5px #0005;
+    border-radius: 10px;
+}
+
+.car_add .communal-title {
+    display: flex;
+    font-size: 17px;
+    font-weight: 600;
+    color: #555;
+    margin-bottom: 20px;
+    justify-content: space-between;
+    align-items: center;
+}
+
+.appraise-box {
+    display: flex;
+    flex-wrap: wrap;
+    justify-content: space-between;
+    margin: 50px 0;
+}
+
+.appraise-box>div {
+    width: 30%;
+}
+
+.communal-box {
+    display: flex;
+}
+
+.communal-box>button {
+    margin-left: 10px;
+    padding: 8px 20px;
+}
+
+.car_add {
+    background-color: #fff;
+    padding: 20px;
+    box-shadow: 0 0 5px #0005;
+    border-radius: 10px;
+}
+
+@media screen and (max-width: 1700px) {
+    .appraise-box>div {
+        width: 48%;
+    }
+
+    .appraise-box>div el-form-item__content {
+        width: 260px !important;
+    }
+}
+</style>

+ 143 - 0
src/components/OP/OpLtinerary.vue

@@ -0,0 +1,143 @@
+<template>
+    <div>
+        <div class="opltinerary-all">
+            <div class="opltinerary-head">
+                <div class="opltinerary-head-li">
+                    <label>团组名称:</label>
+                    <el-select size="medium" v-model="value" filterable placeholder="请选择">
+                        <el-option
+                            v-for="item in options"
+                            :key="item.id"
+                            :label="item.groupName"
+                            :value="item.id">
+                        </el-option>
+                    </el-select>
+                </div>
+                <div class="opltinerary-head-li">
+                    <el-button size="medium" type="primary">删除本团行程</el-button>
+                    <el-button size="medium" type="primary">导入数据</el-button>
+                    <el-button size="medium" type="primary">保存修改</el-button>
+                    <el-button size="medium" type="primary">导出完整行程</el-button>
+                    <el-button size="medium" type="primary">导出下拉所选表格</el-button>
+                </div>
+            </div>
+            <div class="opname-box">
+                <div class="opname-head-li">
+                    <label>选择城市:</label>
+                    <el-select size="medium" v-model="value" filterable placeholder="请选择">
+                        <el-option
+                            v-for="item in options"
+                            :key="item.id"
+                            :label="item.groupName"
+                            :value="item.id">
+                        </el-option>
+                    </el-select>
+                </div>
+                <div class="opname-head-li">
+                    <el-button size="medium" type="primary">导出城市行程</el-button>
+                </div>
+            </div>
+            <div class="opname-box">
+                <div class="opname-head-li">
+                    <label>选择行程单:</label>
+                    <el-select size="medium" v-model="value" filterable placeholder="请选择">
+                        <el-option
+                            v-for="item in options"
+                            :key="item.id"
+                            :label="item.groupName"
+                            :value="item.id">
+                        </el-option>
+                    </el-select>
+                </div>
+                <div class="opname-head-li">
+                    <el-button size="medium" type="primary">新增数据</el-button>
+                    <el-button size="medium" type="primary">确定行程</el-button>
+                </div>
+            </div>
+            <div class="itinerary-box">
+                <div class="itinerary-title">
+                    【123】团 10 日行程
+                </div>
+                <div class="itinerary-inif">
+                    <div>途经城市:北京/巴黎/圣保罗/里约热内卢/圣地亚哥/布宜诺斯艾利斯/阿姆斯特丹/北京</div>
+                    <div>天数:10</div>
+                    <div>团号:4WMi71</div>
+                    <div>人数:6</div>
+                </div>
+                <div class="itinerary-table">
+                    <div class="table-title">
+                        <div style="">天数</div>
+                        <div>日期</div>
+                        <div>交通</div>
+                        <div>行程</div>
+                    </div>
+                </div>
+            </div>
+        </div>
+    </div>
+</template>
+<script>
+export default {
+    data() {
+        return {
+            value:"",
+            options:[]
+        }
+    },
+}
+</script>
+<style>
+.opltinerary-all{
+    background-color: #fff;
+    padding: 10px;
+    box-shadow: 0 0 5px #0005;
+    border-radius: 10px;
+    height: 100%;
+    min-height: 840px;
+}
+.opltinerary-head-li label{
+    color: #606266;
+    font-size: 15px;
+    font-weight: 600;
+}
+.opltinerary-head{
+    display: flex;
+    justify-content: space-between;
+}
+.opname-box{
+    display: flex;
+    justify-content: end;
+}
+.opname-head-li:nth-child(1){
+    margin-right: 10px;
+}
+.opname-head-li{
+    margin-top: 10px;
+}
+.opname-head-li label{
+    color: #606266;
+    font-size: 15px;
+    font-weight: 600;
+}
+.itinerary-box{
+    margin-top: 20px;
+}
+.itinerary-title{
+    text-align: center;
+    font-size: 17px;
+    font-weight: 600;
+}
+.itinerary-inif{
+    display: flex;
+    justify-content: center;
+}
+.itinerary-inif div{
+    margin-top: 10px;
+    font-size: 14px;
+    margin-right: 28px;
+}
+.table-title{
+    display: flex;
+    border: 1px solid #ebeef5;
+}
+</style>

+ 668 - 0
src/components/OP/OpVisaPriec.vue

@@ -0,0 +1,668 @@
+<template>
+    <div class="car_add">
+        <div>
+            <div class="communal-title">
+                <div>{{ title }}</div>
+            </div>
+        </div>
+        <hr style='background-color:#5555; height:1px; border:none;' />
+        <div>
+            <el-form :model="delegationInfo" label-width="100px" class="demo-ruleForm">
+                <div style="display: flex;">
+                    <div style="width: 25%;">
+                        <el-form-item label="团组名称:" label-width="160px">
+                            <el-select v-model="OpVisaPriceData.diId" clearable filterable placeholder="团组选择"
+                                :disabled="isShow" style="width: 220px;" @change="DiIdSelectChange">
+                                <el-option v-for="item in delegationInfoList" :key="item.id" :label="item.teamName"
+                                    :value="item.id">
+                                </el-option>
+                            </el-select>
+                        </el-form-item>
+                    </div>
+                    <div style="width: 25%;">
+                        <el-form-item label="团 号:" prop="tourCode" label-width="160px">
+                            <el-input placeholder="团号" v-model="delegationInfo.tourCode" :disabled="true">
+                            </el-input>
+                        </el-form-item>
+                    </div>
+                    <div style="width: 25%;">
+                        <el-form-item label="客户:" prop="clientName" label-width="160px">
+                            <el-input placeholder="客户" v-model="delegationInfo.clientName" :disabled="true">
+                            </el-input>
+                        </el-form-item>
+                    </div>
+                    <div style="width: 25%;">
+                        <el-form-item label="出访国家:" prop="visitCountry" label-width="160px">
+                            <el-input placeholder="出访国家" v-model="delegationInfo.visitCountry" :disabled="true">
+                            </el-input>
+                        </el-form-item>
+                    </div>
+                </div>
+                <div style="display: flex;">
+                    <div style="width: 25%;">
+                        <el-form-item label="出访时间:" label-width="160px">
+                            <el-input placeholder="出访时间" v-model="VisitDate" :disabled="true">
+                            </el-input>
+                        </el-form-item>
+                    </div>
+                    <div style="width: 25%;">
+                        <el-form-item label="出访人数:" label-width="160px">
+                            <el-input placeholder="出访人数" v-model="delegationInfo.visitPNumber" :disabled="true">
+                            </el-input>
+                        </el-form-item>
+                    </div>
+                    <div style="width: 25%;">
+                        <el-form-item label="出访天数:" label-width="160px">
+                            <el-input placeholder="出访天数" v-model="delegationInfo.visitDays" :disabled="true">
+                            </el-input>
+                        </el-form-item>
+                    </div>
+                </div>
+            </el-form>
+            <el-form :model="OpVisaPriceData" ref="OpVisaPriceData" :rules="OpVisaPriceDataRules" label-width="100px"
+                class="demo-ruleForm">
+                <div style="display: flex;">
+                    <div style="width: 25%;">
+                        <el-form-item label="签证客户:" prop="visaClient" label-width="160px">
+                            <el-input placeholder="签证客户" v-model="OpVisaPriceData.visaClient">
+                            </el-input>
+                        </el-form-item>
+                    </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-select v-model="OpVisaPriceData.visaCurrency" filterable placeholder="币种"
+                                style="width: 35%;">
+                                <el-option v-for="item in currencyList" :key="item.id" :label="item.name" :value="item.id">
+                                </el-option>
+                            </el-select>
+                        </el-form-item>
+                    </div>
+                    <div style="width: 25%;">
+                        <el-form-item label="是否第三方代办:" prop="isThird" label-width="160px">
+                            <el-radio-group v-model="OpVisaPriceData.isThird">
+                                <el-radio :label=1>是</el-radio>
+                                <el-radio :label=0>否</el-radio>
+                            </el-radio-group>
+                        </el-form-item>
+                    </div>
+                    <div style="width: 25%;">
+                        <el-form-item label="客户类型:" prop="passengerType" label-width="160px">
+                            <el-select v-model="OpVisaPriceData.passengerType" clearable filterable placeholder="客户类型">
+                                <el-option v-for="item in passengerTypeSelect" :key="item.id" :label="item.name"
+                                    :value="item.id">
+                                </el-option>
+                            </el-select>
+                        </el-form-item>
+                    </div>
+                </div>
+                <div style="display: flex;">
+                    <div style="width: 25%;">
+                        <el-form-item label="签证办理人数:" prop="visaNumber" label-width="160px">
+                            <el-input placeholder="签证办理人数" v-model="OpVisaPriceData.visaNumber" style="width: 58%;">
+                            </el-input>
+                        </el-form-item>
+                    </div>
+                    <div style="width: 25%;">
+                        <el-form-item label="免签人数:" prop="visaFreeNumber" label-width="160px">
+                            <el-input placeholder="免签人数" v-model="OpVisaPriceData.visaFreeNumber" style="width: 58%;">
+                            </el-input>
+                        </el-form-item>
+                    </div>
+                </div>
+                <div style="display: flex;">
+                    <div style="width: 81%;">
+                        <el-form-item label="备 注:" prop="Remark" label-width="160px">
+                            <el-input type="textarea" :rows="5" placeholder="备注"
+                                v-model="OpVisaPriceData.remark"></el-input>
+                        </el-form-item>
+                    </div>
+                </div>
+                <hr style='background-color:#5555; height:1px; border:none;margin-top: 10px;' />
+                <div style="display: flex;">
+                    <div style="width: 25%;">
+                        <el-form-item label="支付方式:" prop="payDId" label-width="160px">
+                            <el-select v-model="OpVisaPriceData.payDId" placeholder="支付方式" style="width: 100%;"
+                                @change="payChange">
+                                <el-option v-for="item in payment" :key="item.id" :label="item.name" :value="item.id">
+                                </el-option>
+                            </el-select>
+                        </el-form-item>
+                    </div>
+                    <div style="width: 25%;">
+                        <el-form-item label="消费方式:" prop="consumptionPatterns" label-width="160px">
+                            <el-input placeholder="消费方式" v-model="OpVisaPriceData.consumptionPatterns">
+                            </el-input>
+                        </el-form-item>
+                    </div>
+                    <div style="width: 25%;">
+                        <el-form-item label="消费日期:" prop="consumptionDate" label-width="160px">
+                            <el-date-picker v-model="OpVisaPriceData.consumptionDate" placeholder="消费日期" type="date">
+                            </el-date-picker>
+
+                        </el-form-item>
+                    </div>
+                    <div style="width: 25%;">
+                        <el-form-item label="付款金额:" prop="payMoney" label-width="160px">
+                            <el-input placeholder="付款金额" v-model="OpVisaPriceData.visaPrice" style="width: 52%;"
+                                :disabled="true">
+                            </el-input>
+                            <el-select v-model="OpVisaPriceData.visaCurrency" style="width: 45%;" :disabled="true">
+                                <el-option v-for="item in currencyList" :key="item.id" :label="item.name" :value="item.id">
+                                </el-option>
+                            </el-select>
+                        </el-form-item>
+                    </div>
+                </div>
+                <div v-if="OpVisaPriceData.payDId == 72">
+                    <div style="display: flex;">
+                        <div style="width: 25%;">
+                            <el-form-item label="卡类型:" prop="ctdId" label-width="160px">
+                                <el-select v-model="OpVisaPriceData.ctdId" placeholder="卡类型" style="width: 100%;"
+                                    @change="ctdChange">
+                                    <el-option v-for="item in bankCard" :key="item.id" :label="item.name" :value="item.id">
+                                    </el-option>
+                                </el-select>
+                            </el-form-item>
+                        </div>
+                        <div style="width: 25%;">
+                            <el-form-item label="银行卡号:" prop="bankNo" label-width="160px">
+                                <el-input placeholder="银行卡号" v-model="OpVisaPriceData.bankNo" :disabled="true">
+                                </el-input>
+                            </el-form-item>
+                        </div>
+                        <div style="width: 25%;">
+                            <el-form-item label="持卡人姓名:" prop="cardholderName" label-width="160px">
+                                <el-input placeholder="持卡人姓名" v-model="OpVisaPriceData.cardholderName" :disabled="true">
+                                </el-input>
+                            </el-form-item>
+                        </div>
+                    </div>
+                </div>
+                <div v-else-if="OpVisaPriceData.payDId == 73">
+                    <div style="display: flex;">
+                        <div style="width: 25%;">
+                            <el-form-item label="公司银行账号:" label-width="160px" prop="companyBankNo">
+                                <el-input placeholder="公司银行账号" v-model="OpVisaPriceData.companyBankNo">
+                                </el-input>
+
+                            </el-form-item>
+                        </div>
+                        <div style="width: 25%;">
+                            <el-form-item label="对方开户行:" prop="otherBankName" label-width="160px">
+                                <el-input placeholder="对方开户行:" v-model="OpVisaPriceData.otherBankName">
+                                </el-input>
+                            </el-form-item>
+                        </div>
+                        <div style="width: 25%;">
+                            <el-form-item label="对方银行卡号:" prop="otherSideNo" label-width="160px">
+                                <el-input placeholder="对方银行卡号" v-model="OpVisaPriceData.otherSideNo">
+                                </el-input>
+                            </el-form-item>
+                        </div>
+                        <div style="width: 25%;">
+                            <el-form-item label="对方姓名:" prop="otherSideName" label-width="160px">
+                                <el-input placeholder="对方姓名" v-model="OpVisaPriceData.otherSideName">
+                                </el-input>
+                            </el-form-item>
+                        </div>
+                    </div>
+                </div>
+                <div v-else-if="OpVisaPriceData.payDId == 83">
+                    <div style="display: flex;">
+                        <div style="width: 25%;">
+                            <el-form-item label="对方开户行:" prop="otherBankName" label-width="160px">
+                                <el-input placeholder="对方开户行" v-model="OpVisaPriceData.otherBankName">
+                                </el-input>
+                            </el-form-item>
+                        </div>
+                        <div style="width: 25%;">
+                            <el-form-item label="对方银行卡号:" prop="otherSideNo" label-width="160px">
+                                <el-input placeholder="对方银行卡号" v-model="OpVisaPriceData.otherSideNo">
+                                </el-input>
+                            </el-form-item>
+                        </div>
+                        <div style="width: 25%;">
+                            <el-form-item label="对方姓名:" prop="otherSideName" label-width="160px">
+                                <el-input placeholder="对方姓名" v-model="OpVisaPriceData.otherSideName">
+                                </el-input>
+                            </el-form-item>
+                        </div>
+                    </div>
+                </div>
+                <div v-else></div>
+                <div style="display:flex;">
+                    <div style="width: 25%;">
+                        <el-form-item label="收款方:" prop="payee" label-width="160px">
+                            <el-input placeholder="对方姓名:" v-model="OpVisaPriceData.payee">
+                            </el-input>
+                        </el-form-item>
+                    </div>
+                    <div style="width: 25%;">
+                        <el-form-item label="费用标识:" prop="orbitalPrivateTransfer" label-width="160px">
+                            <el-select v-model="OpVisaPriceData.orbitalPrivateTransfer" placeholder="费用标识"
+                                style="width: 100%;">
+                                <el-option key="0" label="公转" :value=0>
+                                </el-option>
+                                <el-option key="1" label="私转" :value=1>
+                                </el-option>
+                            </el-select>
+                        </el-form-item>
+                    </div>
+                </div>
+                <div style="display: flex;">
+                    <div style="width: 100%;">
+                        <el-form-item label="备 注:" prop="Remark" label-width="160px">
+                            <el-input type="textarea" :rows="5" placeholder="备注"
+                                v-model="OpVisaPriceData.cRemark"></el-input>
+                        </el-form-item>
+                    </div>
+                </div>
+                <el-form-item>
+                    <div style="margin-left: 60%;">
+                        <el-button type="primary" @click="addBtn">保存</el-button>
+
+                        <el-button @click="EscAdd">取消</el-button>
+                    </div>
+                </el-form-item>
+            </el-form>
+        </div>
+    </div>
+</template>
+<script>
+import { dE } from '@fullcalendar/core/internal-common';
+export default {
+    data() {
+        return {
+            title: "新增商邀费用",
+            token: '',
+            userId: 0,
+            id: '',
+            isShow: false,
+            delegationInfo: {},
+            delegationInfoList: [],//团组下拉框
+            currencyList: [],//币种下拉框
+            bankCard: [],//卡类型下拉框
+            payment: [],//支付方式下拉框
+            OpVisaPriceData: {
+                status: 0,
+                id: 0,
+                diId: '',
+                visaClient: '',
+                visaPrice: 0,
+                visaCurrency: '',
+                isThird: '',
+                passengerType: '',
+                visaNumber: 0,
+                visaFreeNumber: 0,
+                createUserId: 0,
+                remark: '',
+                payDId: 72,
+                consumptionPatterns: '',
+                consumptionDate: '',
+                ctdId: '',
+                companyBankNo: '',
+                otherBankName: '',
+                otherSideNo: '',
+                otherSideName: '',
+                bankNo: '',
+                cardholderName: '',
+                payee: '',
+                orbitalPrivateTransfer: 0,
+                cRemark: '',
+            },
+            IsAuditGM: 0,
+            VisitDate: '',
+            passengerTypeSelect: [],
+            dateFormat: function (value) {
+
+                // 将value转换为Date对象
+                var date = new Date(value);
+                // 获取年、月、日
+                var year = date.getFullYear();
+                var month = date.getMonth() + 1;
+                var day = date.getDate();
+                // 将月份和日期转换为两位数的格式
+
+                if (month < 10) {
+                    month = '0' + month;
+                }
+                if (day < 10) {
+                    day = '0' + day;
+                }
+                // 返回格式化后的日期字符串
+                return year + '-' + month + '-' + day;
+            },
+            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', 'change'] },
+                ],
+                isThird: [
+                    { required: true, message: '请选择是否第三方代办', trigger: ['blur', 'change'] },
+                ],
+                passengerType: [
+                    { required: true, message: '请选择客户类型', trigger: ['blur', 'change'] },
+
+                ],
+                visaNumber: [
+                    { required: true, message: '请输入办理人数', trigger: ['blur', 'change'] },
+                    { pattern: /^[0-9]\d*$/, message: '请输入正确的数字', trigger: ['blur', 'change'] },
+                ],
+                visaFreeNumber: [
+                    { required: true, message: '请输入办理人数', trigger: ['blur', 'change'] },
+                    { pattern: /^[0-9]\d*$/, message: '请输入正确的数字', trigger: ['blur', 'change'] },
+                ],
+                payDId: [
+                    { required: true, message: '请选择支付方式', trigger: ['blur', 'change'] },
+
+                ],
+                consumptionPatterns: [
+                    { required: true, message: '请输入消费方式', trigger: ['blur', 'change'] },
+
+                ],
+                consumptionDate: [
+                    { required: true, message: '请选择消费日期', trigger: ['blur', 'change'] },
+                ],
+                payee: [
+                    { required: true, message: '请输入收款方', trigger: ['blur', 'change'] },
+                ],
+                ctdId: [
+                    { required: true, message: '请选择卡类型', trigger: ['blur', 'change'] },
+                ],
+                companyBankNo: [{ required: true, message: '公司银行账号', trigger: ['blur', 'change'] },],
+                otherBankName: [{ required: true, message: '对方开户行', trigger: ['blur', 'change'] },],
+                otherSideNo: [{ required: true, message: '对方银行卡号', trigger: ['blur', 'change'] },],
+                totherSideName: [{ required: true, message: '对方姓名', trigger: ['blur', 'change'] },],
+            }
+        }
+    },
+    methods: {
+        //初始化下拉框
+        initializeSelect() {
+            //团组下拉框绑定
+            var url = "/api/Groups/DecreasePaymentsSelect"
+            var that = this
+            this.$axios({
+                method: 'post',
+                url: url,
+                headers: {
+                    Authorization: 'Bearer ' + this.token
+                },
+                data: {
+                    userId: that.userId,
+                    ctId: 80
+                }
+            }).then(function (res) {
+                if (res.data.code == 200) {
+
+                    that.delegationInfoList = res.data.data.groupName;
+                    that.payment = res.data.data.payment
+                    for (let index = 0; index < that.delegationInfoList.length; index++) {
+
+                        if (that.delegationInfoList[index].id == that.OpVisaPriceData.diId) {
+                            that.delegationInfo = that.delegationInfoList[index];
+
+                            that.VisitDate = that.dateFormat(that.delegationInfo.visitStartDate) + '至' + that.dateFormat(that.delegationInfo.visitEndDate);
+                            break;
+                        }
+                    }
+                }
+            })
+
+            var url = "/api/Groups/VisaPriceAddSelect"
+            this.$axios({
+                method: 'post',
+                url: url,
+                headers: {
+                    Authorization: 'Bearer ' + this.token
+                },
+            }).then(function (res) {
+                if (res.data.code == 200) {
+
+                    that.bankCard = res.data.data.bankCard;
+                    that.payment = res.data.data.payment;
+                    that.currencyList = res.data.data.currencyList;
+                    that.passengerTypeSelect = res.data.data.passengerType;
+                }
+            })
+        },
+        DiIdSelectChange() {
+            var that = this;
+            for (let index = 0; index < that.delegationInfoList.length; index++) {
+                if (that.delegationInfoList[index].id == that.OpVisaPriceData.diId) {
+                    that.delegationInfo = that.delegationInfoList[index];
+
+                    that.VisitDate = that.dateFormat(that.delegationInfo.visitStartDate) + '至' + that.dateFormat(that.delegationInfo.visitEndDate);
+                    break;
+                }
+            }
+        },
+        payChange() {
+            this.OpVisaPriceData.ctdId = '';
+            this.OpVisaPriceData.bankNo = '';
+            this.OpVisaPriceData.cardholderName = '';
+            this.OpVisaPriceData.companyBankNo = '';
+            this.OpVisaPriceData.otherBankName = '';
+            this.OpVisaPriceData.otherSideNo = '';
+            this.OpVisaPriceData.otherSideName = '';
+            this.OpVisaPriceData.cRemark = '';
+            if (this.OpVisaPriceData.payDId == 73) {
+                this.OpVisaPriceDataRules.companyBankNo = [{ required: true, message: '公司银行账号', trigger: ['blur', 'change'] },]
+                this.OpVisaPriceDataRules.otherBankName = [{ required: true, message: '对方开户行', trigger: ['blur', 'change'] },]
+                this.OpVisaPriceDataRules.otherSideNo = [{ required: true, message: '对方银行卡号', trigger: ['blur', 'change'] },]
+                this.OpVisaPriceDataRules.otherSideName = [{ required: true, message: '对方姓名', trigger: ['blur', 'change'] },]
+                this.OpVisaPriceDataRules.ctdId = []
+            } else if (this.OpVisaPriceData.payDId == 72) {
+                this.OpVisaPriceDataRules.ctdId = [{ required: true, message: '请选择卡类型', trigger: ['blur', 'change'] },]
+                this.OpVisaPriceDataRules.companyBankNo = []
+                this.OpVisaPriceDataRules.otherBankName = []
+                this.OpVisaPriceDataRules.otherSideNo = []
+                this.OpVisaPriceDataRules.otherSideName = []
+            } else if (this.OpVisaPriceData.payDId == 83) {
+                this.OpVisaPriceDataRules.companyBankNo = []
+                this.OpVisaPriceDataRules.otherBankName = [{ required: true, message: '对方开户行', trigger: ['blur', 'change'] },]
+                this.OpVisaPriceDataRules.otherSideNo = [{ required: true, message: '对方银行卡号', trigger: ['blur', 'change'] },]
+                this.OpVisaPriceDataRules.otherSideName = [{ required: true, message: '对方姓名', trigger: ['blur', 'change'] },]
+                this.OpVisaPriceDataRules.ctdId = []
+            } else {
+                this.OpVisaPriceDataRules.companyBankNo = []
+                this.OpVisaPriceDataRules.otherBankName = []
+                this.OpVisaPriceDataRules.otherSideNo = []
+                this.OpVisaPriceDataRules.otherSideName = []
+                this.OpVisaPriceDataRules.ctdId = []
+            }
+        },
+        ctdChange(id) {
+            this.OpVisaPriceData.cardholderName = 'Zhang Hailin';
+            for (var i = 0; i < this.bankCard.length; i++) {
+                if (this.bankCard[i].id == parseInt(id)) {
+                    this.OpVisaPriceData.bankNo = this.bankCard[i].remark
+                }
+            }
+        },
+        //根据Id获取单挑数据及C表数据
+        QueryVisaById() {
+            var url = "/api/Groups/QueryVisaById"
+            var that = this
+            this.$axios({
+                method: 'post',
+                url: url,
+                headers: {
+                    Authorization: 'Bearer ' + this.token
+                },
+                data: {
+                    id: that.OpVisaPriceData.id
+                }
+            }).then(function (res) {
+                if (res.data.code == 200) {
+                    var CreditCardPayment = res.data.data._CreditCardPayment;
+                    var VisaInfo = res.data.data._VisaInfo;
+                    that.IsAuditGM = CreditCardPayment.isAuditGM;
+                    that.OpVisaPriceData.visaClient = VisaInfo.visaClient;
+                    that.OpVisaPriceData.visaPrice = VisaInfo.visaPrice;
+                    that.OpVisaPriceData.visaCurrency = VisaInfo.visaCurrency;
+                    that.OpVisaPriceData.isThird = VisaInfo.isThird;
+                    that.OpVisaPriceData.passengerType = parseInt(VisaInfo.passengerType);
+                    that.OpVisaPriceData.visaNumber = VisaInfo.visaNumber;
+                    that.OpVisaPriceData.visaFreeNumber = VisaInfo.visaFreeNumber;
+                    that.OpVisaPriceData.createUserId = VisaInfo.createUserId;
+                    that.OpVisaPriceData.remark = VisaInfo.remark;
+                    that.OpVisaPriceData.payDId = CreditCardPayment.payDId;
+                    that.OpVisaPriceData.consumptionPatterns = CreditCardPayment.consumptionPatterns;
+                    that.OpVisaPriceData.consumptionDate = CreditCardPayment.consumptionDate;
+                    that.OpVisaPriceData.ctdId = CreditCardPayment.ctdId;
+                    that.OpVisaPriceData.bankNo = CreditCardPayment.bankNo;
+                    that.OpVisaPriceData.cardholderName = CreditCardPayment.cardholderName;
+                    that.OpVisaPriceData.companyBankNo = CreditCardPayment.companyBankNo
+                    that.OpVisaPriceData.otherBankName = CreditCardPayment.otherBankName
+                    that.OpVisaPriceData.otherSideNo = CreditCardPayment.otherSideNo
+                    that.OpVisaPriceData.otherSideName = CreditCardPayment.otherSideName
+                    that.OpVisaPriceData.payee = CreditCardPayment.payee;
+                    that.OpVisaPriceData.orbitalPrivateTransfer = CreditCardPayment.orbitalPrivateTransfer;
+                    that.OpVisaPriceData.cRemark = CreditCardPayment.remark;
+                }
+            })
+        },
+        addBtn() {
+            if (this.IsAuditGM == 1) {
+                this.$message.error('已通过审核,不可修改!');
+            } else {
+                if (this.OpVisaPriceData.diId == null && this.OpVisaPriceData.diId == undefined && this.OpVisaPriceData.diId == "") {
+                    this.$message.error("请选择团组名称");
+                    return;
+                } else {
+                    const that = this;
+                    that.$refs.OpVisaPriceData.validate((valid) => {
+                        if (valid) {
+                            debugger
+                            that.OpVisaPriceData.createUserId = that.userId;
+                            if (that.OpVisaPriceData.ctdId == '') {
+                                that.OpVisaPriceData.ctdId = 0
+                            }
+
+                            var url = "/api/Groups/OpVisaPrice"
+                            that.$axios({
+                                method: 'post',
+                                url: url,
+                                headers: {
+                                    Authorization: 'Bearer ' + that.token
+                                },
+                                data: that.OpVisaPriceData
+                            }).then(function (res) {
+                                if (res.data.code == 200) {
+                                    that.$message({
+                                        message: res.data.msg,
+                                        type: 'success'
+                                    });
+                                    that.loading = true;
+                                    setTimeout(() => {
+                                        that.$router.push({
+                                            path: "/home/VisaPriec",
+                                            query: {
+                                                diId: that.OpVisaPriceData.diId
+                                            }
+                                        })
+                                    }, 3000);
+                                } else {
+                                    that.$message.error(res.data.msg);
+                                }
+                            })
+                        } else {
+                            this.$message.error('请完善信息在保存!');
+                            return false;
+                        }
+                    })
+                }
+            }
+        },
+        EscAdd() {
+            this.$router.push({
+                path: "/home/VisaPriec",
+                query: {
+                    diId: this.OpVisaPriceData.diId
+                }
+            })
+        }
+    },
+
+    mounted() {
+        this.token = JSON.parse(localStorage.getItem('userinif')).token;
+        this.userId = JSON.parse(localStorage.getItem('userinif')).userInfo.userId
+        this.initializeSelect();
+        this.OpVisaPriceData.diId = parseInt(this.$route.query.DiId)
+        this.OpVisaPriceData.id = this.$route.query.id
+        debugger
+        if (this.OpVisaPriceData.id != null && this.OpVisaPriceData.id != undefined && this.OpVisaPriceData.id != 0) {
+            this.QueryVisaById();
+            this.title = "修改签证费用";
+            this.OpVisaPriceData.status = 2
+            this.isShow = true
+        } else {
+            this.OpVisaPriceData.status = 1
+            this.title = "新增签证费用"
+            this.isShow = false
+        }
+
+    }
+}
+</script>
+<style>
+.communal-list {
+    background-color: #fff;
+    padding: 10px;
+    box-shadow: 0 0 5px #0005;
+    border-radius: 10px;
+}
+
+.car_add .communal-title {
+    display: flex;
+    font-size: 17px;
+    font-weight: 600;
+    color: #555;
+    margin-bottom: 20px;
+    justify-content: space-between;
+    align-items: center;
+}
+
+.appraise-box {
+    display: flex;
+    flex-wrap: wrap;
+    justify-content: space-between;
+    margin: 50px 0;
+}
+
+.appraise-box>div {
+    width: 30%;
+}
+
+.communal-box {
+    display: flex;
+}
+
+.communal-box>button {
+    margin-left: 10px;
+    padding: 8px 20px;
+}
+
+.car_add {
+    background-color: #fff;
+    padding: 20px;
+    box-shadow: 0 0 5px #0005;
+    border-radius: 10px;
+}
+
+@media screen and (max-width: 1700px) {
+    .appraise-box>div {
+        width: 48%;
+    }
+
+    .appraise-box>div el-form-item__content {
+        width: 260px !important;
+    }
+}
+</style>

+ 310 - 0
src/components/OP/VisaPriec.vue

@@ -0,0 +1,310 @@
+<template>
+    <div>
+        <div class="communal-list">
+            <div>
+
+                <div class="communal-title">
+                    <div>签证费用录入列表</div>
+                </div>
+                <div style="display: flex;justify-content: space-between;">
+
+                    <div style="width: 80%;display: flex;">
+                        <div style="width: 25%;">
+                            <el-select v-model="DiId" placeholder="团组选择" clearable filterable @change="VisaSelectChange"
+                                style="width: 100%;">
+                                <el-option v-for="item in delegationInfoList" :key="item.id" :label="item.teamName"
+                                    :value="item.id">
+                                </el-option>
+                            </el-select>
+                        </div>
+                        <div style="width: 25%;"><el-input v-model="VisaClient" placeholder="请输入费用名称" clearable></el-input>
+                        </div>
+                        <div style="width: 25%;margin-left: 10px;"><el-button type="primary"
+                                @click="QueryByVisaClient">查询</el-button>
+                        </div>
+                    </div>
+                    <div style="width: 20%">
+                        <el-button type="primary" style="" @click="addIf">新增</el-button>
+                    </div>
+                </div>
+            </div>
+            <div style="margin:10px 0;color:#606266;">
+                <span style="font-weight: bold;font-size:17px;">团队名称:</span>
+                <span style="color:#606266;">{{ delegationInfo.teamName }}&nbsp;&nbsp;&nbsp;</span>
+                <span style="font-weight: bold;font-size:17px;">客户:</span>
+                <span style="color:#606266;">{{ delegationInfo.clientName }}&nbsp;&nbsp;&nbsp; {{
+}}&nbsp;&nbsp;&nbsp;</span>
+                <span style="font-weight: bold;font-size:17px;">出访国家:</span>
+                <span style="color:#606266;">{{ delegationInfo.visitCountry }}&nbsp;&nbsp;&nbsp;</span>
+                <span style="font-weight: bold;font-size:17px;">起止日期:</span>
+                <span style="color:#606266;">{{ delegationInfo.visitStartDate }}—{{ delegationInfo.visitEndDate
+                }}&nbsp;&nbsp;&nbsp;</span>
+                <span style="font-weight: bold;font-size:17px;">天数/人数:</span>
+                <span style="color:#606266;">{{ delegationInfo.visitDays }}天/{{ delegationInfo.visitPNumber }}人</span>
+            </div>
+
+            <template>
+                <el-table :data="tableDatas.slice((currentPage - 1) * pageSize, currentPage * pageSize)" border
+                    style="width: 100%" v-loading="loading" element-loading-text="拼命加载中...">
+                    <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="visaClient" label="签证客户">
+                    </el-table-column>
+                    <el-table-column prop="visaPrice,visaCurrencyStr" label="签证费用">
+                        <template slot-scope="scope">
+                            {{ scope.row.visaPrice }}({{ scope.row.visaCurrencyStr }})
+                        </template>
+                    </el-table-column>
+                    <el-table-column prop="isAuditGM" label="是否审核">
+                        <template slot-scope="isAuditGM">
+                            <span v-if="isAuditGM.row.isAuditGM == 1">已通过</span>
+                            <span v-else-if="isAuditGM.row.isAuditGM == 0">未审核</span>
+                            <span v-else-if="isAuditGM.row.isAuditGM == 2">未通过</span>
+                            <span v-else>自动审核通过</span>
+                        </template>
+                    </el-table-column>
+                    <el-table-column label="操作">
+                        <template slot-scope="scope">
+                            <el-button-group>
+                                <el-button type="primary" size="mini" icon="el-icon-edit"
+                                    @click="upDate(scope.$index, scope.row)"></el-button>
+                                <el-button type="danger" size="mini" icon="el-icon-delete"
+                                    @click="del(scope.$index, scope.row)"></el-button>
+                            </el-button-group>
+                        </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="tableDatas.length">
+                </el-pagination>
+            </div>
+        </div>
+    </div>
+</template>
+<script>
+import { el } from '@fullcalendar/core/internal-common';
+export default {
+    data() {
+        return {
+            loading: false,
+            tableDatas: [],
+            tableData: [],
+            currentPage: 1, // 当前页码
+            pageSize: 12,// 每页的数据条数
+            input: '',
+            token: '',
+            userId: 0,
+            DiId: '',
+            VisaSelectList: [],
+            VisaClient: '',
+            delegationInfoList: [],
+            delegationInfo: {},
+        }
+    },
+    methods: {
+        //每页条数改变时触发 选择一页显示多少行
+        handleSizeChange(val) {
+            this.currentPage = 1;
+            this.pageSize = val;
+        },
+        //当前页改变时触发 跳转其他页
+        handleCurrentChange(val) {
+            this.currentPage = val;
+        },
+        //团组下拉框
+        visaSelect() {
+            var url = "/api/Groups/DecreasePaymentsSelect"
+            var that = this
+            this.$axios({
+                method: 'post',
+                url: url,
+                headers: {
+                    Authorization: 'Bearer ' + this.token
+                },
+                data: {
+                    UserId: that.userId,
+                    CTId: 80
+                }
+            }).then(function (res) {
+                if (res.data.code == 200) {
+                    debugger
+                    that.delegationInfoList = res.data.data.groupName;
+                    that.DiId = that.$route.query.diId
+                    if (that.DiId == undefined) {
+                        that.delegationInfo = that.delegationInfoList[0]
+                        that.DiId = that.delegationInfoList[0].id;
+                    } else {
+                        for (let index = 0; index < that.delegationInfoList.length; index++) {
+                            debugger
+                            if (that.delegationInfoList[index].id == that.DiId) {
+                                that.delegationInfo = that.delegationInfoList[index];
+                                that.DiId = that.delegationInfoList[index].id;
+                                break;
+                            }
+                        }
+                    }
+
+                    that.PostVisaByDiId()
+                }
+            }).catch(function (error) {
+                that.$message.error("网络错误,请稍后重试");
+            });
+        },
+        VisaSelectChange() {
+            if (this.DiId != "") {
+                this.PostVisaByDiId();
+            } else {
+                this.tableDatas = [];
+                this.tableData = [];
+            }
+        },
+        //团组信息绑定
+        PostVisaByDiId() {
+            var url = "/api/Groups/QueryVisaByDiId"
+            var that = this
+            this.$axios({
+                method: 'post',
+                url: url,
+                headers: {
+                    Authorization: 'Bearer ' + this.token
+                },
+                data: {
+                    pageIndex: 0,
+                    pageSize: 0,
+                    portType: 1,
+                    diID: that.DiId,
+                    VisaClient: that.VisaClient
+                }
+            }).then(function (res) {
+                if (res.data.code == 200) {
+                    debugger
+                    that.tableDatas = res.data.data;
+                    that.tableData = that.tableDatas
+                    if (that.tableDatas.length != 0) {
+                        if (that.tableDatas.slice((that.currentPage - 1) * that.pageSize, that.currentPage * that.pageSize).length == 0) {
+                            if (that.currentPage > 1) {
+                                that.currentPage = that.currentPage - 1;
+                            }
+                        }
+                    }
+
+                }
+
+            }).catch(function (error) {
+
+                that.$message.error("网络错误,请稍后重试");
+            });
+        },
+        QueryByVisaClient() {
+            this.PostVisaByDiId()
+        },
+        upDate(index, row) {
+            this.$router.push({
+                path: "/home/OpVisaPriec",
+                query: {
+                    DiId: this.DiId,
+                    id: row.id
+                }
+            })
+
+        },
+        addIf() {
+            debugger
+            if (this.DiId != 0 && this.DiId != '' && this.DiId != undefined) {
+                this.$router.push({
+                    path: "/home/OpVisaPriec",
+                    query: {
+                        DiId: this.DiId,
+                    }
+                })
+
+            } else {
+                this.$message('请选择团组在进行添加');
+            }
+        },
+        del(index, row) {
+            this.$confirm('此操作将删除该数据, 是否继续?', '提示', {
+                confirmButtonText: '确定',
+                cancelButtonText: '取消',
+                type: 'warning'
+            }).then(() => {
+                var url = "/api/Groups/DelVisaPrice"
+                var that = this
+                this.$axios({
+                    method: 'post',
+                    url: url,
+                    headers: {
+                        Authorization: 'Bearer ' + this.token
+                    },
+                    data: {
+                        Id: row.id,
+                        DeleteUserId: this.userId
+                    }
+                }).then(function (res) {
+                    console.log(res)
+
+                    if (res.data.code == 200) {
+
+                        that.$message({
+                            message: '删除成功',
+                            type: 'success'
+                        });
+                        that.PostVisaByDiId();
+                    } else {
+                        that.$message.error('删除失败!');
+                    }
+                    that.loading = false
+                }).catch(function (error) {
+                    that.loading = false
+                    that.$message.error("网络错误,请稍后重试");
+                });
+            }).catch(() => {
+                this.$message({
+                    type: 'info',
+                    message: '操作已取消!'
+                });
+            });
+        },
+    },
+    mounted() {
+        this.token = JSON.parse(localStorage.getItem('userinif')).token;
+        this.userId = JSON.parse(localStorage.getItem('userinif')).userInfo.userId
+        this.visaSelect();
+        //this.AirTicketResList()
+    }
+}
+</script>
+<style>
+.communal-list {
+    background-color: #fff;
+    padding: 10px;
+    box-shadow: 0 0 5px #0005;
+    border-radius: 10px;
+}
+
+.communal-title {
+    display: flex;
+    font-size: 17px;
+    font-weight: 600;
+    color: #555;
+    margin-top: 8px;
+    margin-bottom: 10px;
+    justify-content: space-between;
+    align-items: center;
+}
+
+.communal-box {
+    display: flex;
+}
+
+.communal-box>button {
+    margin-left: 10px;
+    padding: 8px 20px;
+}
+</style>

+ 0 - 270
src/components/Resource/GroundEntry.vue

@@ -1,270 +0,0 @@
-<template>
-    <div>
-        <div class="groundentry-all">
-            <el-dialog title="新增数据" class="btnpd" :visible.sync="dialogFormVisible">
-                <el-form :model="form">
-                    <div class="add-form">
-                        <el-form-item size="medium" label="团队名称" :label-width="formLabelWidth">
-                            <el-select v-model="form.region" placeholder="请选择活动区域">
-                                <el-option label="区域一" value="shanghai"></el-option>
-                                <el-option label="区域二" value="beijing"></el-option>
-                            </el-select>
-                        </el-form-item>
-                        <el-form-item size="medium" label="团 号" :label-width="formLabelWidth">
-                            <el-input v-model="form.name" autocomplete="off"></el-input>
-                        </el-form-item>
-                        <el-form-item size="medium" label="客 户" :label-width="formLabelWidth">
-                            <el-input v-model="form.name" autocomplete="off"></el-input>
-                        </el-form-item>
-                        <el-form-item size="medium" label="出访国家" :label-width="formLabelWidth">
-                            <el-input v-model="form.name" autocomplete="off"></el-input>
-                        </el-form-item>
-                        <el-form-item size="medium" label="地 区" :label-width="formLabelWidth">
-                            <el-input v-model="form.name" autocomplete="off"></el-input>
-                        </el-form-item>
-                        <el-form-item size="medium" label="服务时间起" :label-width="formLabelWidth">
-                            <el-input v-model="form.name" autocomplete="off"></el-input>
-                        </el-form-item>
-                        <el-form-item size="medium" label="服务时间止" :label-width="formLabelWidth">
-                            <el-input v-model="form.name" autocomplete="off"></el-input>
-                        </el-form-item>
-                        <el-form-item size="medium" label="付款标识" :label-width="formLabelWidth">
-                            <el-input v-model="form.name" autocomplete="off"></el-input>
-                        </el-form-item>
-                        <el-form-item size="medium" label="服务类型" :label-width="formLabelWidth">
-                            <el-select v-model="form.region" placeholder="请选择活动区域">
-                                <el-option label="区域一" value="shanghai"></el-option>
-                                <el-option label="区域二" value="beijing"></el-option>
-                            </el-select>
-                        </el-form-item>
-                        <el-form-item size="medium" label="服务公司" :label-width="formLabelWidth">
-                            <el-input v-model="form.name" autocomplete="off"></el-input>
-                        </el-form-item>
-                        <el-form-item size="medium" label="地接导游" :label-width="formLabelWidth">
-                            <el-input v-model="form.name" autocomplete="off"></el-input>
-                        </el-form-item>
-                        <el-form-item size="medium" label="联系电话" :label-width="formLabelWidth">
-                            <el-input v-model="form.name" autocomplete="off"></el-input>
-                        </el-form-item>
-                        <el-form-item size="medium" label="Bus名称" :label-width="formLabelWidth">
-                            <el-input v-model="form.name" autocomplete="off"></el-input>
-                        </el-form-item>
-                        <el-form-item size="medium" label="Bus描述" :label-width="formLabelWidth">
-                            <el-input v-model="form.name" autocomplete="off"></el-input>
-                        </el-form-item>
-                        <el-form-item size="medium" label="联系电话" :label-width="formLabelWidth">
-                            <el-input v-model="form.name" autocomplete="off"></el-input>
-                        </el-form-item>
-                    </div>
-                    <div class="groundentry-remark">
-                        <el-form-item label="服务描述" :label-width="formLabelWidth">
-                            <el-input :rows="3" type="textarea" v-model="form.name"></el-input>
-                        </el-form-item>
-                        <el-form-item label="备注" :label-width="formLabelWidth">
-                            <el-input :rows="3" type="textarea" v-model="form.name"></el-input>
-                        </el-form-item>
-                    </div>
-                </el-form>
-                <div slot="footer" class="dialog-footer">
-                    <el-button type="primary" @click="dialogFormVisible = false">确 定</el-button>
-                    <el-button @click="dialogFormVisible = false">取 消</el-button>
-                </div>
-            </el-dialog>
-            <div class="groundentry-head">
-                <div class="groundentry-head-li">
-                    <label>团组名称:</label>
-                    <el-select v-model="value" filterable placeholder="请选择">
-                        <el-option
-                        v-for="item in options"
-                        :key="item.id"
-                        :label="item.groupName"
-                        :value="item.id">
-                        </el-option>
-                    </el-select>
-                </div>
-                <div class="groundentry-info">
-                    <div class="groundentry-info-li">
-                        <label>团 号:</label>
-                        <span>团 号:</span>
-                    </div>
-                    <div class="groundentry-info-li">
-                        <label>客 户:</label>
-                        <span>客 户:</span>
-                    </div>
-                    <div class="groundentry-info-li">
-                        <label>出访国家:</label>
-                        <span>出访国家:</span>
-                    </div>
-                    <div class="groundentry-info-li">
-                        <label>起止日期:</label>
-                        <span> 起止日期:</span>
-                    </div>
-                    <div class="groundentry-info-li">
-                        <label>天数/人数:</label>
-                        <span>天数/人数:</span>
-                    </div>
-                </div>
-            </div>
-            <div class="addgroundentry-btn">
-                <el-button type="primary" @click="dialogFormVisible = true">新增数据</el-button>
-            </div>
-            <div class="groundentry-table">
-                <el-table
-                :data="tableData"
-                border
-                style="width: 100%">
-                    <el-table-column
-                    label="序号"
-                    type="index"
-                    width="50">
-                    </el-table-column>
-                    <el-table-column
-                    prop="date"
-                    label="地区"
-                    width="180">
-                    </el-table-column>
-                    <el-table-column
-                    prop="date"
-                    label="服务导游"
-                    width="100">
-                    </el-table-column>
-                    <el-table-column
-                    prop="date"
-                    label="导游联系电话"
-                    width="110">
-                    </el-table-column>
-                    <el-table-column
-                    prop="name"
-                    label="Bus名称"
-                    width="100">
-                    </el-table-column>
-                    <el-table-column
-                    prop="name"
-                    label="Bus联系电话"
-                    width="110">
-                    </el-table-column>
-                    <el-table-column
-                    prop="name"
-                    label="服务时间起"
-                    width="100">
-                    </el-table-column>
-                    <el-table-column
-                    prop="name"
-                    label="服务时间止"
-                    width="100">
-                    </el-table-column>
-                    <el-table-column
-                    prop="name"
-                    label="服务报价"
-                    width="100">
-                    </el-table-column>
-                    <el-table-column
-                    prop="name"
-                    label="是否审核"
-                    width="100">
-                    </el-table-column>
-                    <el-table-column
-                    prop="name"
-                    label="详细费用"
-                    width="100">
-                    </el-table-column>
-                    <el-table-column
-                    prop="address"
-                    label="操 作">
-                    </el-table-column>
-              </el-table>
-            </div>
-        </div>
-    </div>
-</template>
-<script>
-export default {
-    data() {
-        return {
-            value:'',
-            options:[],
-            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 弄'
-            }],
-            dialogFormVisible: false,
-            formLabelWidth:'120px',
-            form: {
-                name: '',
-                region: '',
-                date1: '',
-                date2: '',
-                delivery: false,
-                type: [],
-                resource: '',
-            desc: ''
-            },
-        }
-    },
-}
-</script>
-<style>
-.groundentry-all{
-    background-color: #fff;
-    padding: 10px;
-    box-shadow: 0 0 5px #0005;
-    border-radius: 10px;
-    height: 100%;
-    min-height: 840px;
-}
-.groundentry-head-li label{
-    color: #606266;
-    font-size: 15px;
-    font-weight: 600;
-}
-.groundentry-head{
-    display: flex;
-    justify-content: space-between;
-}
-.groundentry-info{
-    display: flex;
-    margin-top: 10px;
-}
-.groundentry-info-li label{
-    color: #606266;
-    font-size: 15px;
-    font-weight: 600;
-}
-.groundentry-info-li span{ 
-    color: #606266;
-    font-size: 14px;
-}
-.groundentry-table{
-    margin-top: 10px;
-}
-.addgroundentry-btn{
-    margin-top: 10px;
-    text-align: right;
-}
-.add-form{
-    display: flex;
-    flex-wrap:wrap ;
-}
-.add-form .el-form-item{
-    width: 32%;
-}
-.groundentry-remark .el-textarea__inner{
-    width: 95.5%;
-}
-.btnpd  .el-dialog__footer{
-    padding: 10px 54px 20px;
-}
-</style>>

+ 1 - 1
src/components/Resource/InvitationOfficialActivityData.vue

@@ -405,7 +405,7 @@ export default {
         //团组数据
         GetGroupNameList() {
 
-            var url = "/api/Groups/GetGroupNameList"
+            var url = "api/Business/GetGroupNameList"
             var that = this
             this.$axios({
                 method: 'post',

+ 13 - 1
src/components/Resource/LocalGuideOperation.vue

@@ -6,6 +6,15 @@
         <template>
             <el-form :model="addData" :rules="rules" ref="addData" label-width="100px" class="demo-ruleForm">
                 <el-row>
+                    <el-col :span="8">
+                        <el-form-item label="导游地接" prop="StaffType">
+                            <el-select v-model="addData.StaffType" placeholder="导游地接">
+                                <el-option :key="0" label="公司" :value="0"></el-option>
+                                <el-option :key="1" label="个人" :value="1"></el-option>
+
+                            </el-select>
+                        </el-form-item>
+                    </el-col>
                     <el-col :span="8">
                         <el-form-item label="服务评分" prop="Score">
                             <el-select v-model="addData.Score" placeholder="服务评分">
@@ -215,6 +224,7 @@ export default {
                 LocalAndChineseScore: 'A',
                 CreateUserId: '',
                 Remark: '',
+                StaffType: ''
             },
             unitAreas: [],
             restaurants: [],
@@ -243,7 +253,7 @@ export default {
                 }
             }).then(function (res) {
                 if (res.data.code == 200) {
-
+                    debugger
                     that.tableData = res.data.data;
                     that.tableData.forEach(function (item, index) {
                         that.unitAreas.push({
@@ -339,6 +349,7 @@ export default {
                     break;
                 }
             }
+            debugger
             this.addData.Status = 2;
             this.addData.Id = this.LocalGuideData.id;
             this.addData.UnitArea = this.LocalGuideData.unitArea;
@@ -359,6 +370,7 @@ export default {
             this.addData.LocalAndChineseScore = this.LocalGuideData.localAndChineseScore;
             this.addData.CreateUserId = this.LocalGuideData.createUserId;
             this.addData.Remark = this.LocalGuideData.remark;
+            this.addData.StaffType = parseInt(this.LocalGuideData.staffType)
         },
     },
 

+ 1 - 1
src/components/Resource/TicketBlackCode.vue

@@ -94,7 +94,7 @@ export default {
         },
         //下拉框数据绑定
         DelegationSelectFun() {
-            var url = "/api/Groups/GetGroupNameList"
+            var url = "/api/Business/GetGroupNameList"
             var that = this
             this.$axios({
                 method: 'post',

+ 13 - 6
src/components/system/Payroll.vue

@@ -409,7 +409,7 @@
                                 <span class="sx" slot="reference">{{salaryinif.absenteeism.toFixed(2)}}</span>
                             </el-popover>
                         </el-form-item>
-                        <el-form-item label="补卡" :label-width="formLabelWidth">
+                        <el-form-item class="biaoji" label="补卡" :label-width="formLabelWidth">
                             <el-popover
                             placement="top"
                             width="512"
@@ -422,7 +422,10 @@
                                     <el-table-column width="80" property="Deduction" :formatter="rounding" label="扣款金额"></el-table-column>
                                     <el-table-column width="230" property="Reason" label="原因"></el-table-column>
                                 </el-table>
-                                <span slot="reference">{{salaryinif.notPunch.toFixed(2)}}</span>
+                                <el-input-number slot="reference" :precision="2" size="medium" :controls="false" v-model="salaryinif.notPunch">
+                                    <span slot="reference"></span>
+                                </el-input-number>
+                                <!-- <span slot="reference">{{salaryinif.notPunch.toFixed(2)}}</span> -->
                             </el-popover>
                         </el-form-item>
                     </div>
@@ -851,7 +854,7 @@ export default {
                                 if(jiaqininif.Ex_ItemInfo[j].SubType=="病假"){
                                     that.sickleave.push(jiaqininif.Ex_ItemInfo[j])
                                 }
-                                if(jiaqininif.Ex_ItemInfo[j].SubType=="调休假"||jiaqininif.Ex_ItemInfo[j].SubType=="年假"||jiaqininif.Ex_ItemInfo[j].SubType=="婚假"||jiaqininif.Ex_ItemInfo[j].SubType=="产假"||jiaqininif.Ex_ItemInfo[j].SubType=="陪产假"||jiaqininif.Ex_ItemInfo[j].SubType=="丧假"){
+                                if(jiaqininif.Ex_ItemInfo[j].SubType=="调休假"||jiaqininif.Ex_ItemInfo[j].SubType=="年假"||jiaqininif.Ex_ItemInfo[j].SubType=="婚假"||jiaqininif.Ex_ItemInfo[j].SubType=="产假"||jiaqininif.Ex_ItemInfo[j].SubType=="陪产假"||jiaqininif.Ex_ItemInfo[j].SubType=="丧假"||jiaqininif.Ex_ItemInfo[j].SubType=="出差"){
                                     that.transfer.push(jiaqininif.Ex_ItemInfo[j])
                                 }
                             }
@@ -1233,7 +1236,7 @@ export default {
                                 if(jiaqin.Ex_ItemInfo[j].SubType=="病假"){
                                     that.sickleave.push(jiaqin.Ex_ItemInfo[j])
                                 }
-                                if(jiaqin.Ex_ItemInfo[j].SubType=="调休假"||jiaqin.Ex_ItemInfo[j].SubType=="年假"||jiaqin.Ex_ItemInfo[j].SubType=="婚假"||jiaqin.Ex_ItemInfo[j].SubType=="产假"||jiaqin.Ex_ItemInfo[j].SubType=="陪产假"||jiaqin.Ex_ItemInfo[j].SubType=="丧假"){
+                                if(jiaqin.Ex_ItemInfo[j].SubType=="调休假"||jiaqin.Ex_ItemInfo[j].SubType=="年假"||jiaqin.Ex_ItemInfo[j].SubType=="婚假"||jiaqin.Ex_ItemInfo[j].SubType=="产假"||jiaqin.Ex_ItemInfo[j].SubType=="陪产假"||jiaqin.Ex_ItemInfo[j].SubType=="丧假"||jiaqin.Ex_ItemInfo[j].SubType=="出差"){
                                     that.transfer.push(jiaqin.Ex_ItemInfo[j])
                                 }
                             }
@@ -1586,6 +1589,10 @@ export default {
 .payroll-all::-webkit-scrollbar-thumb:hover {
     background-color: #a8a8a8;
 }
-  
-
+.biaoji .el-input-number--medium{
+    width: 90px;
+}
+.biaoji .el-input--medium .el-input__inner{
+    text-align: left;
+}
 </style>

+ 289 - 2
src/components/system/SetWorking.vue

@@ -1,13 +1,251 @@
 <template>
     <div>
         <div class="SetWorking-all">
-            设置时间
+            <div class="SetWorking-btn">
+                <el-button @click="SetWorkday('工作日')" type="primary">设置为工作日</el-button>
+                <el-button @click="SetWorkday('休息日')" type="success">设置为休息日</el-button>
+                <el-button @click="SetWorkday('节假日')" type="warning">设置为节假日</el-button>
+            </div>
+            <div class="calendar-box">
+                <el-calendar ref="calendar" class="aaa" v-model="value">
+                    <template #dateCell="{ data }">
+                      <div :class="datearr.includes(data.day)?'is-selected':''" class="calendar-btn-box" @click="allcalendar(data)">
+                        <div class="calendar-day">
+                            {{ data.day.split("-").slice(2).join("-") }} 
+                        </div>
+                        <div v-if="datayz.includes(data.day)" class="schedule-box">
+                            工作日
+                        </div>
+                        <div v-if="datayzxx.includes(data.day)" class="schedule-boxxx">
+                            休息日
+                        </div>
+                        <div v-if="datayzjj.includes(data.day)" class="schedule-boxjj">
+                            节假日
+                        </div>
+                      </div>
+                    </template>
+                </el-calendar>
+            </div>
         </div>
     </div>
 </template>
 <script>
 export default {
-    
+    data() {
+        return {
+            userId:'',
+            datayz:[],
+            datayzxx:[],
+            datayzjj:[],
+            datayzwsz:[],
+            value:new Date(),
+            datearr:[],
+            parametersarr:[],
+            yearMonth:"",
+            startDate:"",
+            endDate:"",
+        }
+    },
+    methods:{
+        allcalendar(data) {
+            console.log(this.parametersarr)
+            if(this.datearr.indexOf(data.day)>-1){
+                
+                this.datearr.splice(this.datearr.indexOf(data.day),1);
+            }else{
+                this.datearr.push(data.day)
+            }
+            console.log(this.datearr)
+            // const loading = this.$loading({
+            //     lock: true,  //加上这个 页面点击日历的时候会莫名其妙抖动一下 因为我界面上有滚动条,所以我注释了
+            //     text: "Loading",
+            //     spinner: "el-icon-loading",
+            //     background: "rgba(0, 0, 0, 0.7)",
+            // });
+            // setTimeout(() => {
+            //     console.log(data); //取到你需要的日期data.day
+            //     //需要用到这日期做啥事,比如做为调接口的参数
+            //     loading.close();
+            // }, 500);
+        },
+        //处理日期
+        formattedDate(val){
+            const date = new Date(val);
+            const year = date.getFullYear();  
+            const month = (date.getMonth() + 1).toString().padStart(2, '0');  
+            const day = date.getDate().toString().padStart(2, '0');  
+            return year+'-'+month+'-'+day
+        },
+        //处理月份
+        formattedMonth(val){
+            const date = new Date(val);
+            const year = date.getFullYear();  
+            const month = (date.getMonth() + 1).toString().padStart(2, '0');  
+            return year+'-'+month
+        },
+        //获取工作日
+        GetWageSheetMonthWorkday(startDt,endDt){
+            var dataarr=[];
+            var xxrdataarr=[];
+            var jjrdataarr=[];
+            var wszdataarr=[];
+            var that = this
+            this.$axios({
+                method: 'post',
+                url: '/api/PersonnelModule/GetWageSheetMonthWorkdays?startDt='+startDt+'&endDt='+endDt,
+                headers: {
+                    Authorization: 'Bearer ' + this.token
+                }
+            }).then(function (res) {
+                console.log(res)
+                if(res.data.code==200){
+                    console.log(res.data.data)
+                    that.parametersarr=res.data.data;
+                    for(let a=0;a<res.data.data.length;a++){
+                        if(res.data.data[a].isWorkDay){
+                            dataarr.push(res.data.data[a].dt)
+                        }
+                        if(res.data.data[a].holiName=='休息日'){
+                            xxrdataarr.push(res.data.data[a].dt)
+                        }
+                        if(res.data.data[a].holiName=='节假日'){
+                            jjrdataarr.push(res.data.data[a].dt)
+                        }
+                        if(res.data.data[a].holiName==''){
+                            wszdataarr.push(res.data.data[a].dt)
+                        }
+                    }
+                    that.datayz=dataarr
+                    that.datayzxx=xxrdataarr
+                    that.datayzjj=jjrdataarr
+                    that.datayzwsz=wszdataarr
+                }else{
+                    
+                }
+            })
+        },
+        //获取月初月末
+        getMonthEnd(val){
+            let myDate = new Date(val);
+            let month = myDate.getMonth() + 1;
+            month = month < 10 ? "0" + month : month;   //格式化月份,补0
+            let statDateStart = new Date(myDate.getFullYear().toString() +'-'+ month +'-'+ "01"); //月初
+            let dayEnd = new Date(myDate.getFullYear(), month, 0).getDate(); //获取当月一共有多少天
+            let statDateEnd = new Date(myDate.getFullYear().toString() +'-'+ month +'-'+ dayEnd); //月末
+            // return ""+this.formattedDate(statDateStart),""+this.formattedDate(statDateEnd)
+            this.GetWageSheetMonthWorkday(this.formattedDate(statDateStart),this.formattedDate(statDateEnd))
+        },
+        //处理月初月末
+        //设置日类型
+        SetWorkday(text){
+            let datearrnew=[]
+            let myDate = new Date(this.value);
+            let month = myDate.getMonth() + 1;
+            month = month < 10 ? "0" + month : month;   //格式化月份,补0
+            let statDateStart = new Date(myDate.getFullYear().toString() +'-'+ month +'-'+ "01"); //月初
+            let dayEnd = new Date(myDate.getFullYear(), month, 0).getDate(); //获取当月一共有多少天
+            let statDateEnd = new Date(myDate.getFullYear().toString() +'-'+ month +'-'+ dayEnd); //月末
+            console.log(this.formattedDate(statDateStart),this.formattedDate(statDateEnd))
+            this.yearMonth=this.formattedMonth(this.value);
+            this.startDate=this.formattedDate(statDateStart);
+            this.endDate=this.formattedDate(statDateEnd);
+            if(text=='工作日'){
+                for(let j=0;j<this.datearr.length;j++){
+                    datearrnew.push({dt:this.datearr[j],isWorkDay:true,isHoliDay:false,holiName:text,id:0})
+                }
+                for(let m=0;m<this.parametersarr.length;m++){
+                    for(let x=0;x<datearrnew.length;x++){
+                        if(this.parametersarr[m].dt==datearrnew[x].dt){
+                            datearrnew[x].id=this.parametersarr[m].id
+                        }
+                    }
+                }
+                console.log(this.value)
+            }
+            if(text=='休息日'){
+                for(let j=0;j<this.datearr.length;j++){
+                    datearrnew.push({dt:this.datearr[j],isWorkDay:false,isHoliDay:true,holiName:text})
+                }
+                for(let m=0;m<this.parametersarr.length;m++){
+                    for(let x=0;x<datearrnew.length;x++){
+                        if(this.parametersarr[m].dt==datearrnew[x].dt){
+                            datearrnew[x].id=this.parametersarr[m].id
+                        }
+                    }
+                }
+            }
+            if(text=='节假日'){
+                for(let j=0;j<this.datearr.length;j++){
+                    datearrnew.push({dt:this.datearr[j],isWorkDay:false,isHoliDay:true,holiName:text})
+                }
+                for(let m=0;m<this.parametersarr.length;m++){
+                    for(let x=0;x<datearrnew.length;x++){
+                        if(this.parametersarr[m].dt==datearrnew[x].dt){
+                            datearrnew[x].id=this.parametersarr[m].id
+                        }
+                    }
+                }
+            }
+            // console.log(datearrnew,this.userId,this.yearMonth,this.startDate,this.endDate,);
+            this.AddOrEdit(datearrnew);
+        },
+        //设置日期API
+        AddOrEdit(arr){
+            var url = "/api/PersonnelModule/GetWageSheetMonthWorkdaysAddOrEdit"
+            var that = this
+            var data={
+                userId:this.userId,
+                yearMonth:this.yearMonth,
+                startDate:this.startDate,
+                endDate:this.endDate,
+                calendarInfos:arr,
+            }
+            console.log(JSON.stringify(data))
+            this.$axios({
+                method: 'post',
+                url: url,
+                headers: {
+                    Authorization: 'Bearer ' + this.token
+                },
+                data:{
+                    userId:this.userId,
+                    yearMonth:this.yearMonth,
+                    startDate:this.startDate,
+                    endDate:this.endDate,
+                    calendarInfos:arr,
+                }
+            }).then(function (res) {
+                console.log(res)
+                if(res.data.code==200){
+                    that.getMonthEnd(that.value)
+                    that.$message({
+                        message:res.data.msg,
+                        type: 'success'
+                    });
+                }else{
+                    that.$message({
+                        message: res.data.msg,
+                        type: 'warning'
+                    });
+                }
+            }).catch(()=>{})
+        }
+    },
+    watch:{
+        value:{//监听月份变化
+            handler(newValue,oldValue){
+                if(this.formattedMonth(newValue)!=this.formattedMonth(oldValue)){
+                    this.datearr=[]
+                    this.getMonthEnd(newValue)
+                }
+            }
+        }
+    },
+    mounted(){
+        this.userId=JSON.parse(localStorage.getItem('userinif')).userInfo.userId;
+        console.log(this.formattedMonth(this.value))
+        console.log(this.getMonthEnd(this.formattedMonth(this.value)))
+    }
 }
 </script>
 <style>
@@ -19,4 +257,53 @@ export default {
     height: 100%;
     min-height: 830px;
 }
+.is-selected {
+    background: #d1e8ff;
+}
+.calendar-btn-box{
+    text-align: center;
+    height: 100%;
+}
+.calendar-box .el-calendar-day{
+    padding: 0;
+}
+.calendar-day{
+    font-size: 28px;
+    font-weight: 600;
+    line-height: 50px;
+}
+.calendar-box .schedule-box{
+    font-size: 17px;
+    font-weight: 600;
+    text-align: center;
+    color: #409EFF;
+    width: 100%;
+}
+.schedule-boxs{
+    font-size: 17px;
+    font-weight: 600;
+    color: #a8a4a4;
+}
+.schedule-boxxx{
+    font-size: 17px;
+    font-weight: 600;
+    color: #85ce61;
+}
+.schedule-boxjj{
+    font-size: 17px;
+    font-weight: 600;
+    color: #ebb563;
+}
+::v-deep .el-calendar-table:not(.is-range) td.prev,
+::v-deep .el-calendar-table:not(.is-range) td.next {
+    cursor: not-allowed;
+    pointer-events: none;
+}
+.prev>.el-calendar-day>.calendar-btn-box{
+    display: none;
+}
+.next>.el-calendar-day>.calendar-btn-box{
+    display: none;
+}
+
 </style>

+ 35 - 6
src/router/index.js

@@ -68,7 +68,7 @@ import OfficialActivities from '@/components/Resource/OfficialActivities'
 import OpOfficialActivities from '@/components/Resource/OpOfficialActivities'
 import AskData from '@/components/Resource/AskData'
 import OpAskData from '@/components/Resource/OpAskData'
-import HotelReservations from '@/components/Resource/HotelReservations'
+import HotelReservations from '@/components/OP/HotelReservations'
 import DelegationEnData from '@/components/OP/DelegationEnData'
 import OpDelegationEnData from '@/components/OP/OpDelegationEnData'
 import invitationLetter from '@/components/Resource/invitationLetter'
@@ -76,11 +76,15 @@ import EntryDetails from '@/components/OP/EntryDetails'
 import TicketBlackCode from '@/components/Resource/TicketBlackCode'
 import OpTicketBlackCode from '@/components/Resource/OpTicketBlackCode'
 import Payroll from '@/components/system/Payroll';
-import GroundEntry from '@/components/Resource/GroundEntry';
+import VisaPriec from '@/components/OP/VisaPriec';
+import OpVisaPriec from '@/components/OP/OpVisaPriec';
 import GroundDetailedfees from '@/components/Resource/GroundDetailedfees';
 import SetWorking from '@/components/system/SetWorking';
 import ThreeStandards from '@/components/OP/ThreeStandards'
-
+import OpLtinerary from '@/components/OP/OpLtinerary'
+import CarTouristGuideGroundId from '@/components/OP/CarTouristGuideGroundId'
+import OpCarTouristGuideGroundId from '@/components/OP/OpCarTouristGuideGroundId'
+import CarTouristGuideGrounContent from '@/components/OP/CarTouristGuideGrounContent'
 
 Vue.use(Router)
 
@@ -450,9 +454,14 @@ export default new Router({
           component: Payroll
         },
         {
-          path: '/home/GroundEntry',
-          name: 'GroundEntry',
-          component: GroundEntry
+          path: '/home/VisaPriec',
+          name: 'VisaPriec',
+          component: VisaPriec
+        },
+        {
+          path: '/home/OpVisaPriec',
+          name: 'OpVisaPriec',
+          component: OpVisaPriec
         },
         {
           path: '/home/GroundDetailedfees',
@@ -469,6 +478,26 @@ export default new Router({
           name: 'ThreeStandards',
           component: ThreeStandards
         },
+        {
+          path: '/home/OpLtinerary',
+          name: 'OpLtinerary',
+          component: OpLtinerary
+        },
+        {
+          path: '/home/CarTouristGuideGroundId',
+          name: 'CarTouristGuideGroundId',
+          component: CarTouristGuideGroundId
+        },
+        {
+          path: '/home/OpCarTouristGuideGroundId',
+          name: 'OpCarTouristGuideGroundId',
+          component: OpCarTouristGuideGroundId
+        },
+        {
+          path: '/home/CarTouristGuideGrounContent',
+          name: 'CarTouristGuideGrounContent',
+          component: CarTouristGuideGrounContent
+        }
       ]
     },
     {