Ver código fonte

修改机票费用录入修改页面

wangh 1 ano atrás
pai
commit
fd502aef13
2 arquivos alterados com 284 adições e 66 exclusões
  1. 7 3
      src/components/OP/AirTicketRes.vue
  2. 277 63
      src/components/OP/OpAirTicketRes.vue

+ 7 - 3
src/components/OP/AirTicketRes.vue

@@ -48,7 +48,7 @@
                     </el-table-column>
                     <el-table-column prop="flightDescription" label="航班简述" width="500">
                     </el-table-column>
-                    <el-table-column prop="clientName" label="客人名单" width="280">
+                    <el-table-column prop="clientNameStr" label="客人名单" width="280">
                     </el-table-column>
                     <el-table-column prop="clientNum" label="客人人数" width="100">
                     </el-table-column>
@@ -131,8 +131,11 @@ export default {
                 if (res.data.code == 200) {
                     that.AirTicketResSelectData = res.data.data.groupName;
                     debugger
-                    that.DiId = that.AirTicketResSelectData[0].id;
-                    that.AirTicketResList()
+                    if (that.AirTicketResSelectData.length != 0) {
+                        that.DiId = that.AirTicketResSelectData[0].id;
+                        that.AirTicketResList()
+                    }
+
                 }
             }).catch(function (error) {
                 that.$message.error("网络错误,请稍后重试");
@@ -156,6 +159,7 @@ export default {
                 }
             }).then(function (res) {
                 if (res.data.code == 200) {
+                    debugger
                     that.tableDatas = res.data.data.airTicketReservations;
                     that.tableData = that.tableDatas
                     if (that.tableDatas.length != 0) {

+ 277 - 63
src/components/OP/OpAirTicketRes.vue

@@ -25,7 +25,7 @@
         <div>
             <el-form :model="delegationInfo" label-width="100px" class="demo-ruleForm">
                 <div style="display: flex;">
-                    <div style="width: 33%;">
+                    <div style="width: 25%;">
                         <el-form-item label="团组名称:" label-width="160px">
                             <el-select v-model="DiIdSelect" clearable filterable placeholder="团组选择"
                                 @change="AirTicketResChange" :disabled="isShow" style="width: 100%;">
@@ -35,13 +35,13 @@
                             </el-select>
                         </el-form-item>
                     </div>
-                    <div style="width: 33%;">
+                    <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: 33%;">
+                    <div style="width: 25%;">
                         <el-form-item label="客户:" prop="clientName" label-width="160px">
                             <el-input placeholder="客户" v-model="delegationInfo.clientName" :disabled="true">
                             </el-input>
@@ -50,7 +50,7 @@
 
                 </div>
                 <div style="display: flex;">
-                    <div style="width: 33%;">
+                    <div style="width: 25%;">
                         <el-form-item label="出访国家:" prop="visitCountry" label-width="160px">
                             <el-input placeholder="出访国家" v-model="delegationInfo.visitCountry" :disabled="true">
                             </el-input>
@@ -61,15 +61,16 @@
             <el-form :model="airTicketResOpData" :rules="airTicketResRules" ref="airTicketResOpData" label-width="100px"
                 class="demo-ruleForm">
                 <div style="display: flex;">
-                    <div style="width: 33%;">
+                    <div style="width: 25%;">
                         <el-form-item label="舱类型:" label-width="160px" prop="cType">
-                            <el-select v-model="airTicketResOpData.cType" placeholder="舱类型" style="width: 100%;">
+                            <el-select v-model="airTicketResOpData.cType" placeholder="舱类型" style="width: 100%;"
+                                @change="tankTypeChange">
                                 <el-option v-for="item in ticketClass" :key="item.id" :label="item.name" :value="item.id">
                                 </el-option>
                             </el-select>
                         </el-form-item>
                     </div>
-                    <div style="width: 33%;">
+                    <div style="width: 25%;">
                         <el-form-item label="机票单价:" prop="prePrice" label-width="160px">
                             <el-input placeholder="机票单价" v-model="airTicketResOpData.prePrice" style="width: 58%;"
                                 @input="peiceinput">
@@ -82,7 +83,7 @@
                             </el-select>
                         </el-form-item>
                     </div>
-                    <div style="width: 33%;">
+                    <div style="width: 25%;">
                         <el-form-item label="机票总价:" prop="price" label-width="160px">
                             <el-input placeholder="机票总价" v-model="airTicketResOpData.price" style="width: 58%;"
                                 :disabled="true">
@@ -98,13 +99,59 @@
 
                 </div>
                 <div style="display: flex;">
-                    <div style="width: 33%;">
+                    <div style="width: 100%;">
+                        <el-form-item label="航班描述:" prop="flightsDescription" label-width="160px">
+                            <el-input type="textarea" :rows="5"
+                                placeholder="请严格遵守此格式!!! 1. EK363 R1 WE08MAR CANDXB HK7 0015 0515 SEAME 2 3 (注意空格以及多条数据换行)"
+                                v-model="airTicketResOpData.flightsDescription" @change="flightsCodeChange"></el-input>
+
+                        </el-form-item>
+                    </div>
+                </div>
+                <div style="display: flex;">
+                    <div style="width: 25%;">
+                        <el-form-item label="航班简述:" label-width="160px" prop="flightsCode">
+                            <el-input placeholder="航班简述" v-model="airTicketResOpData.flightsCode">
+                            </el-input>
+                        </el-form-item>
+                    </div>
+                    <div style="width: 25%;">
+                        <el-form-item label="城 市:" prop="flightsCity" label-width="160px">
+                            <el-input placeholder="城市" v-model="airTicketResOpData.flightsCity">
+                            </el-input>
+                        </el-form-item>
+                    </div>
+                    <div style="width: 25%;">
+                        <el-form-item label="航班日期:" prop="flightsDate" label-width="160px">
+                            <el-date-picker v-model="airTicketResOpData.flightsDate" type="date" placeholder="航班日期">
+                            </el-date-picker>
+                        </el-form-item>
+                    </div>
+                    <div style="width: 25%;">
+                        <el-form-item label="航班时间:" prop="flightsTime" label-width="160px">
+
+                            <el-time-select v-model="airTicketResOpData.flightsTime" placeholder="航班时间">
+                            </el-time-select>
+                        </el-form-item>
+                    </div>
+                </div>
+                <div style="display: flex;">
+                    <div style="width: 25%;">
+                        <el-form-item label="此舱位客人名称:" prop="clientNameList" label-width="160px">
+                            <el-select v-model="clientNameList" placeholder="此舱位客人名称" multiple clearable filterable>
+                                <el-option v-for="item in clientNameId" :key="item.id"
+                                    :label="item.pinyin + '(' + item.name + ')'" :value="item.id">
+                                </el-option>
+                            </el-select>
+                        </el-form-item>
+                    </div>
+                    <div style="width: 25%;">
                         <el-form-item label="此舱位人数:" prop="clientNum" label-width="160px">
                             <el-input placeholder="此舱位人数" v-model="airTicketResOpData.clientNum" @input="peiceinput">
                             </el-input>
                         </el-form-item>
                     </div>
-                    <div style="width: 33%;">
+                    <div style="width: 25%;">
                         <el-form-item label="是否值机: " label-width="160px">
                             <el-radio-group v-model="airTicketResOpData.isCheckIn">
                                 <el-radio :label=1>是</el-radio>
@@ -112,7 +159,7 @@
                             </el-radio-group>
                         </el-form-item>
                     </div>
-                    <div style="width: 33%;">
+                    <div style="width: 25%;">
                         <el-form-item label="是否选座:" label-width="160px">
                             <el-radio-group v-model="airTicketResOpData.isSetSeat">
                                 <el-radio :label=1>是</el-radio>
@@ -123,7 +170,7 @@
 
                 </div>
                 <div style="display: flex;">
-                    <div style="width: 33%;">
+                    <div style="width: 25%;">
                         <el-form-item label="是否购买行李:" label-width="160px">
                             <el-radio-group v-model="airTicketResOpData.isPackage">
                                 <el-radio :label=1>是</el-radio>
@@ -131,7 +178,7 @@
                             </el-radio-group>
                         </el-form-item>
                     </div>
-                    <div style="width: 33%;">
+                    <div style="width: 25%;">
                         <el-form-item label="是否行李直挂:" label-width="160px">
                             <el-radio-group v-model="airTicketResOpData.isBagHandle">
                                 <el-radio :label=1>是</el-radio>
@@ -139,7 +186,7 @@
                             </el-radio-group>
                         </el-form-item>
                     </div>
-                    <div style="width: 33%;">
+                    <div style="width: 25%;">
                         <el-form-item label="是否火车票出票选座:" label-width="160px">
                             <el-radio-group v-model="airTicketResOpData.isTrain">
                                 <el-radio :label=1>是</el-radio>
@@ -148,42 +195,16 @@
                         </el-form-item>
                     </div>
                 </div>
+
                 <div style="display: flex;">
-                    <div style="width: 50%;">
-                        <el-form-item label="航班简述:" label-width="160px" prop="flightsCode">
-                            <el-input placeholder="航班简述" v-model="airTicketResOpData.flightsCode">
-                            </el-input>
-                        </el-form-item>
-                    </div>
-                    <div style="width: 50%;">
-                        <el-form-item label="城 市:" prop="flightsCity" label-width="160px">
-                            <el-input placeholder="城市" v-model="airTicketResOpData.flightsCity">
-                            </el-input>
-                        </el-form-item>
-                    </div>
-                </div>
-                <div style="display: flex;">
-                    <div style="width: 100%;">
-                        <el-form-item label="此舱位客人名称:" prop="clientName" label-width="160px">
-                            <el-input placeholder="此舱位客人名称" v-model="airTicketResOpData.clientName">
-                            </el-input>
-                        </el-form-item>
-                    </div>
+
                 </div>
                 <!-- <div>
                     <span style="color: red; padding-left: 100px;">
                         请严格遵守此格式!!! 1. EK363 R1 WE08MAR CANDXB HK7 0015 0515 SEAME 2 3 (注意空格以及多条数据换行)
                     </span>
                 </div> -->
-                <div style="display: flex;">
-                    <div style="width: 100%;">
-                        <el-form-item label="航班描述:" prop="flightsDescription" label-width="160px">
-                            <el-input type="textarea" :rows="5"
-                                placeholder="请严格遵守此格式!!! 1. EK363 R1 WE08MAR CANDXB HK7 0015 0515 SEAME 2 3 (注意空格以及多条数据换行)"
-                                v-model="airTicketResOpData.flightsDescription"></el-input>
-                        </el-form-item>
-                    </div>
-                </div>
+
                 <div style="display: flex;">
                     <div style="width: 100%;">
                         <el-form-item label="费用描述:" prop="priceDescription" label-width="160px">
@@ -391,8 +412,8 @@ export default {
                 flightsCity: [
                     { required: true, message: '请输入城市', trigger: 'change' },
                 ],
-                clientName: [
-                    { required: true, message: '请输入客人姓名', trigger: 'change' },
+                clientNameList: [
+                    { type: "array", required: true, message: '请选择责任人', trigger: ['blur', 'change'] }
                 ],
                 flightsDescription: [
                     { required: true, message: '请严格遵守格式,正确填写', trigger: 'change' },
@@ -429,6 +450,8 @@ export default {
             cardType: [],//卡类型下拉框
             airTicketAgents: [],//合作的代理资料
             airTicketAgentsId: '',
+            clientNameId: [],//客人姓名
+            clientNameList: [],
             airGroupCostParameter: {},//机票成本预算
             jjccb: 0,
             jjcrs: 0,
@@ -440,7 +463,7 @@ export default {
             airTicketResOpData: {
                 id: 0,
                 diId: 0,
-                cType: '',
+                cType: 460,
                 prePrice: 0,
                 preCurrency: 48,
                 price: 0,
@@ -453,6 +476,8 @@ export default {
                 isBagHandle: 0,
                 isTrain: 0,
                 flightsCode: '',
+                flightsDate: '',
+                flightsTime: '',
                 flightsCity: '',
                 flightsDescription: '',
                 priceDescription: '',
@@ -501,13 +526,15 @@ export default {
                 }
             }).then(function (res) {
                 if (res.data.code == 200) {
+
                     that.AirTicketResSelectData = res.data.data.groupName;
                     that.ticketClass = res.data.data.ticketClass;//舱位下拉框
                     that.payment = res.data.data.payment;//支付方式下拉框
                     that.cardType = res.data.data.cardType;//卡类型下拉框
                     that.airTicketAgents = res.data.data.airTicketAgents//合作方资料下拉框
                     that.DiIdSelect = parseInt(that.DiId)
-                    that.AirTicketResList()
+                    that.QueryTankType();
+
                 }
 
             })
@@ -515,6 +542,7 @@ export default {
         AirTicketResChange() {
             this.AirTicketResList();
         },
+
         AirTicketResList() {
             var url = "/api/Groups/AirTicketResList"
             var that = this
@@ -528,31 +556,48 @@ export default {
                     diId: that.DiIdSelect
                 }
             }).then(function (res) {
-
                 if (res.data.code == 200) {
 
                     that.delegationInfo = res.data.data.delegationInfo
                     that.airGroupCostParameter = res.data.data.airGroupCostParameter
                 }
             })
-            if (that.DiId != undefined && that.id != undefined) {
-                that.status = 2;
-                that.isShow = true
-                that.AirTicketResById();
-            } else {
-                that.isShow = false
-                that.status = 1;
-            }
+
+        },
+        QueryTankType() {
+            var url = "/api/Groups/tankType"
+            var that = this
+            this.$axios({
+                method: 'post',
+                url: url,
+                headers: {
+                    Authorization: 'Bearer ' + that.token
+                },
+                data: {
+                    id: that.airTicketResOpData.cType
+                }
+            }).then(function (res) {
+                if (res.data.code == 200) {
+
+                    that.clientNameId = res.data.data
+                    that.AirTicketResList()
+                }
+            })
+        },
+        tankTypeChange() {
+            this.QueryTankType();
         },
         //点击保存事件
         addBtn() {
-            if (this.IsAuditGM = 1) {
+
+            if (this.IsAuditGM == 1) {
                 this.$message.error('审核已通过,不可修改!');
             } else {
                 if (this.DiId == null && this.DiId == undefined && this.DiId == "") {
                     this.$message.error("请选择团组名称");
                     return;
                 }
+
                 const that = this;
                 let formArr = ['airTicketResOpData', 'cardPaymentOpData']//三个form表单的ref
                 var resultArr = [] //用来接受返回结果的数组
@@ -570,9 +615,14 @@ export default {
                     checkForm(item)
                 })
                 Promise.all(resultArr).then(values => {
+
                     that.airTicketResOpData.diId = that.DiId;
                     that.airTicketResOpData.createUserId = that.userId;
-
+                    var clientNameStr = ''
+                    that.clientNameList.forEach(function (item) {
+                        clientNameStr += item + ","
+                    });
+                    that.airTicketResOpData.clientName = clientNameStr.substring(0, clientNameStr.length - 1)
                     that.cardPaymentOpData.createUserId = that.userId;
                     that.cardPaymentOpData.diId = that.DiId;
                     if (that.cardPaymentOpData.ctdId == '') {
@@ -627,16 +677,25 @@ export default {
                 if (res.data.code == 200) {
 
                     that.airTicketResOpData = res.data.data.airTicket;
+                    that.$delete(that.airTicketResOpData, 'deleteUserId')
+                    that.$delete(that.airTicketResOpData, 'deleteTime')
+
+                    var s = that.airTicketResOpData.clientName.split(',')
+
+                    s.forEach(function (item) {
+                        that.clientNameList.push(parseInt(item))
+                    });
                     that.prePrice = res.data.data.airTicket.prePrice
                     that.currencyId = res.data.data.airTicket.preCurrency
                     that.clientNum = res.data.data.airTicket.clientNum
                     that.cardPaymentOpData = res.data.data.creditCard;
                     that.IsAuditGM = that.cardPaymentOpData.isAuditGM
-                    debugger
+
                     if (that.cardPaymentOpData.ctdId == 0) {
                         that.cardPaymentOpData.ctdId = ""
                     }
-
+                    that.$delete(that.cardPaymentOpData, 'deleteUserId')
+                    that.$delete(that.cardPaymentOpData, 'deleteTime')
                     that.cardPaymentOpData.orbitalPrivateTransfer = parseInt(that.cardPaymentOpData.orbitalPrivateTransfer)
                 }
             })
@@ -670,13 +729,13 @@ export default {
             this.airTicketAgentsId = '';
             for (var i = 0; i < this.cardType.length; i++) {
                 if (this.cardType[i].id == parseInt(id)) {
-                    console.log(this.cardType[i].remark)
                     this.cardPaymentOpData.bankNo = this.cardType[i].remark
                 }
             }
         },
         //单价值改变事件
         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)
@@ -685,16 +744,171 @@ export default {
             this.cardPaymentOpData.paymentCurrency = Id;
             this.airTicketResOpData.preCurrency = Id;
             this.airTicketResOpData.currency = Id;
-        }
+        },
+        //航班描述值改变事件
+        flightsCodeChange(val) {
+            var reg = /[\r\n]+/g;
+            var kg = /\s/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();
+                        if (!ss[i]) {
+                            ss.splice(i, 1);
+                            i--;
+                        }
+                    }
+                    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)
+                    switch (dateStr) {
+                        case "JAN":
+                            dateStr = "01";
+                            break;
+                        case "FEB":
+                            dateStr = "02";
+                            break;
+                        case "MAR":
+                            dateStr = "03";
+                            break;
+                        case "APR":
+                            dateStr = "04";
+                            break;
+                        case "MAY":
+                            dateStr = "05";
+                            break;
+                        case "JUN":
+                            dateStr = "06";
+                            break;
+                        case "JUL":
+                            dateStr = "07";
+                            break;
+                        case "AUG":
+                            dateStr = "08";
+                            break;
+                        case "SEP":
+                            dateStr = "09";
+                            break;
+                        case "OCT":
+                            dateStr = "10";
+                            break;
+                        case "NOV":
+                            dateStr = "11";
+                            break;
+                        case "DEC":
+                            dateStr = "12";
+                            break;
+                    }
+
+                    dateTime.push({
+                        date: new Date(new Date().getFullYear() + '-' + dateStr + '-' + ss[3].substring(2, 4)),
+                        time: ss[6].substring(0, 2) + ':' + ss[6].substring(2)
+                    })//日期
+                });
+                that.airTicketResOpData.flightsCode = that.airTicketResOpData.flightsCode.substring(0, that.airTicketResOpData.flightsCode.length - 1)//航班号
+                that.airTicketResOpData.flightsCity = that.airTicketResOpData.flightsCity.substring(0, that.airTicketResOpData.flightsCity.length - 1)//城市
+
+                var compare = function (obj1, obj2) {
+                    var val1 = obj1.date;
+                    var val2 = obj2.date;
+                    if (val1 < val2) {
+                        return -1;
+                    } else if (val1 > val2) {
+                        return 1;
+                    } else {
+                        return 0;
+                    }
+                }
+                dateTime = dateTime.sort(compare);
+                that.airTicketResOpData.flightsTime = dateTime[dateTime.length - 1].time
+                that.airTicketResOpData.flightsDate = dateTime[dateTime.length - 1].date
+            } else {
+                var ss = val.split(' ')
+                for (var i = 0; i < ss.length; i++) {
+                    ss[i] = ss[i].trim();
+                    if (!ss[i]) {
+                        ss.splice(i, 1);
+                        i--;
+                    }
+                }
+                ss = ss;
+                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":
+                        dateStr = "01";
+                        break;
+                    case "FEB":
+                        dateStr = "02";
+                        break;
+                    case "MAR":
+                        dateStr = "03";
+                        break;
+                    case "APR":
+                        dateStr = "04";
+                        break;
+                    case "MAY":
+                        dateStr = "05";
+                        break;
+                    case "JUN":
+                        dateStr = "06";
+                        break;
+                    case "JUL":
+                        dateStr = "07";
+                        break;
+                    case "AUG":
+                        dateStr = "08";
+                        break;
+                    case "SEP":
+                        dateStr = "09";
+                        break;
+                    case "OCT":
+                        dateStr = "10";
+                        break;
+                    case "NOV":
+                        dateStr = "11";
+                        break;
+                    case "DEC":
+                        dateStr = "12";
+                        break;
+                }
+                that.airTicketResOpData.flightsDate = new Date().getFullYear() + '-' + dateStr + '-' + ss[3].substring(2, 4)
+            }
+
+        },
+
     },
 
     mounted() {
 
         this.token = JSON.parse(localStorage.getItem('userinif')).token;
         this.userId = JSON.parse(localStorage.getItem('userinif')).userInfo.userId
-        this.AirTicketResSelect();
+
         this.id = this.$route.query.id
         this.DiId = this.$route.query.DiId
+        this.AirTicketResSelect()
+        var that = this
+        if (that.DiId != undefined && that.id != undefined) {
+            that.status = 2;
+            that.isShow = true
+            that.AirTicketResById();
+        } else {
+            that.isShow = false
+            that.status = 1;
+        }
     }
 }
 </script>