diff --git a/src/components/TravelManager/TravelList/TravelPassengerList2.vue b/src/components/TravelManager/TravelList/TravelPassengerList2.vue
index 95fdce0ec699e55870e3d32695821fc8420cf3ee..91b7330eb310d5b78724306e6a7508d7f6c09924 100644
--- a/src/components/TravelManager/TravelList/TravelPassengerList2.vue
+++ b/src/components/TravelManager/TravelList/TravelPassengerList2.vue
@@ -88,6 +88,7 @@
         <th width="50">房号</th>
         <th width="130">酒店及房型</th>
         <th width="130">旅客姓名</th>
+        <th width="120">占床</th>
         <th width="110">英文姓</th>
         <th width="145">英文名</th>
         <th width="45">性别</th>
@@ -107,7 +108,7 @@
         <th width="120">签证类型</th>
       </tr>
       <tr>
-        <td v-show="QueryMsg.dataList.Length==0" colspan="22" align="center">暂无数据</td>
+        <td v-show="QueryMsg.dataList.Length==0" colspan="23" align="center">暂无数据</td>
       </tr>
       <!-- <template v-for="(item, index) in QueryMsg.dataList"> -->
         <tr v-for="(subItem, subIndex) in dataList" :class="{'redTr':subItem.VisaState==1}">
@@ -135,6 +136,7 @@
             </el-select>
           </td>
           <td>{{subItem.GuestName}}</td>
+          <td>{{subItem.IsBed == 1 ? '占床' : '不占床'}}</td>
           <td>{{subItem.ESurName}}</td>
           <td>{{subItem.EName}}</td>
           <td>{{getSexStr(subItem)}}</td>
@@ -157,7 +159,7 @@
         </tr>
       <!-- </template> -->
       <tr v-if="!allDIs">
-        <td style="text-align:right" colspan="22"><input type="button" value="保存" class="leader2Btn" @click="saveOPSetGuestHouse"></td>
+        <td style="text-align:right" colspan="23"><input type="button" value="保存" class="leader2Btn" @click="saveOPSetGuestHouse"></td>
       </tr>
     </table>
   </div>
@@ -355,7 +357,7 @@ export default {
             this.IsLeaderGuide=res.data.data.pageData.IsLeaderGuide;
             this.houseList = res.data.data.pageData.houseList;
             let disNum = [],numberList = this.numberList;
-            this.allDIs = res.data.data.pageData.houseList.OpSureHouse==2 ? true : false
+            this.allDIs = res.data.data.pageData.OpSureHouse==2 ? true : false
             list.map(x=>{
               if (x.HouseType == 1 && this.IsLeaderGuide == 1){
                 disNum.push(x.HouseNo)
diff --git a/src/components/TravelManager/TravelList/TravelPassengerList3.vue b/src/components/TravelManager/TravelList/TravelPassengerList3.vue
index 19dd976a4c3fdfe2ea7c34bc5409f3465dab7e90..890db174c3e51512487afd74951132d5729fa2b6 100644
--- a/src/components/TravelManager/TravelList/TravelPassengerList3.vue
+++ b/src/components/TravelManager/TravelList/TravelPassengerList3.vue
@@ -285,12 +285,9 @@
         if (this.editList.length < 1) {
           return this.$message.error('请修改房间类型后在保存!')
         }
-        var TCID = 0;
         this.editList.forEach((sItem, sIndex) => {
-          if (sIndex == 0) {
-            TCID = sItem.TCID;
-          } else {
-            sItem.TCID = TCID;
+          if (sIndex > 0) {
+            sItem.TCID = this.editList[0].TCID;
           }
         });
         //console.log("this.editList",this.editList);
diff --git a/src/components/administrative/LianMengManagement.vue b/src/components/administrative/LianMengManagement.vue
index de4096e2d9f7f5e9a4c35e85b3992b1999501139..dfef9341045a9099b8614a091ed531abd5e30625 100644
--- a/src/components/administrative/LianMengManagement.vue
+++ b/src/components/administrative/LianMengManagement.vue
@@ -55,10 +55,13 @@ export default {
       YouJiShow: false,
       showID: 0,
       dialogTitle: '',
+      msg: {
+        
+      }
     }
-  },mounted() { 
+  },mounted() {
     // this.getList();
-  },methods: { 
+  },methods: {
     getList: function () {
       this.apipost('', {TCID: TCID, OrderID: OrderID}, res=>{
         if (res.data.resultCode === 1) {
diff --git a/src/components/administrative/happyMoney.vue b/src/components/administrative/happyMoney.vue
new file mode 100644
index 0000000000000000000000000000000000000000..78e424fd02b668c0c9c5e8ce7c45b6e02f13fa61
--- /dev/null
+++ b/src/components/administrative/happyMoney.vue
@@ -0,0 +1,310 @@
+<style>
+.happyMoney .tit {
+  margin: 20px 0;
+}
+.happyMoney .tit .name {
+  width: 284px;
+  height: 28px;
+  background: #e3e3e3;
+  line-height: 28px;
+  font-size: 14px;
+  font-weight: bold;
+  color: rgba(51, 51, 51, 1);
+  text-align: center;
+}
+.happyMoney .content-box {
+  background-color: white;
+  padding: 30px 20px;
+}
+.happyMoney .content-box-tit {
+  font-size: 14px;
+}
+.happyMoney .content-box-tit p {
+  margin-bottom: 10px;
+}
+.happyMoney .content-box-tit p .blod {
+  font-weight: 800;
+}
+.happyMoney .content-box-tit p .red {
+  color: #e95252;
+}
+.happyMoney table tr td input {
+  border: none;
+}
+.happyMoney ._addUpload_box {
+  display: block;
+  margin-top: 15px;
+}
+.happyMoney ._addUpload_box img {
+  width: 100%;
+}
+.happyMoney ._addUpload_box > div {
+  float: left;
+  width: 138px;
+  height: 92px;
+  border: 1px dashed rgba(210, 210, 210, 1);
+  border-radius: 2px;
+  cursor: pointer;
+  margin-bottom: 10px;
+  padding: 5px;
+  margin-right: 10px;
+  position: relative;
+}
+.happyMoney ._addUpload_box > div:hover {
+  background-color: #f5f5f5;
+}
+.happyMoney ._addFile_name {
+  padding-left: 15px;
+  max-width: 450px;
+  overflow: hidden;
+  text-overflow: ellipsis;
+  white-space: nowrap;
+}
+.happyMoney ._addUpload_box .icon-guanbi1 {
+  font-size: 12px;
+  color: white;
+  display: inline-block;
+  margin-left: 15px;
+  position: absolute;
+  right: -6px;
+  top: -9px;
+  background-color: #f56c6c;
+  border-radius: 50%;
+  height: 20px;
+  width: 20px;
+  text-align: center;
+  line-height: 20px;
+}
+.happyMoney ._addUpload_box .icon-guanbi1:hover {
+  font-size: 12px;
+  color: #c94052;
+}
+.happyMoney ._addUpload_box .icon-excel,
+.happyMoney ._addUpload_box .icon-pdf {
+  text-align: center;
+  font-size: 38px;
+  color: green;
+  line-height: 75px;
+}
+.happyMoney ._show_img_box {
+  position: fixed;
+  background: rgba(0, 0, 0, 0.6);
+  left: 0;
+  top: 0;
+  width: 100%;
+  height: 100%;
+  z-index: 999;
+  text-align: center;
+}
+.happyMoney ._pic_upload .el-upload-dragger {
+  font-size: 28px;
+  color: #8c939d;
+  width: 126px;
+  height: 80px;
+  line-height: 41px;
+  text-align: center;
+}
+.happyMoney ._pic_upload .el-upload--text.el-upload .el-upload__text {
+  font-size: 14px;
+}
+.happyMoney .avatar-uploader-icon {
+  height: 30px;
+}
+</style>
+<template>
+  <div class="happyMoney">
+    <div class="tit">
+      <div class="name">XXXXXXXXXXX2019年度大红包结算</div>
+    </div>
+    <el-row>
+      <el-col span="16">
+        <div class="content-box">
+          <div class="content-box-tit">
+            <p>
+              经系统统计本联盟在
+              <span class="blod">2009å¹´</span>
+              <span class="red">销售额为¥500万</span>,
+              <span>合计</span>
+              <span class="red">人头数200人</span>
+            </p>
+            <p>
+              按大红包规则获得《
+              <span class="blod">50万-90万》返4%</span>,因而将
+              <span class="red">返回给本联盟50000元</span>到幸福存折,以下为所有门店交易明细,请及时确认
+            </p>
+          </div>
+          <table
+            class="singeRowTable"
+            border="0"
+            cellspacing="0"
+            cellpadding="0"
+            v-loading="loading"
+          >
+            <tr>
+              <th>名称</th>
+              <th>交易金额</th>
+              <th>交易人头</th>
+              <th>预计返现</th>
+              <th width="200">确认返现</th>
+            </tr>
+            <tr>
+              <td>XXXXXXXX旅行社</td>
+              <td>Â¥12653.00</td>
+              <td>1256人</td>
+              <td>Â¥9856.00</td>
+              <td>
+                <input type="number" placeholder="请输入返现金额" />
+              </td>
+            </tr>
+          </table>
+          <div class="_addUpload_box clearfix">
+            <template v-for="(file,fIndex) in saveMsg">
+              <div v-if="file.Type==3">
+                <div style="width:100%;height:100%;overflow: hidden;">
+                  <img :src="file.Url?file.Url:file.Content" @click="showUpLoadFile(file)" />
+                </div>
+                <span class="iconfont icon-guanbi1" @click="deleteUploadFile(fIndex)"></span>
+              </div>
+              <div v-if="file.Type==1">
+                <div
+                  class="iconfont"
+                  :class="file.Content.substring(file.Content.lastIndexOf('.')+1,file.Content.length).toUpperCase()=='PDF'? 'icon-pdf' : 'icon-excel'"
+                  @click="showUpLoadFile(file)"
+                ></div>
+                <span class="iconfont icon-guanbi1" @click="deleteUploadFile(fIndex)"></span>
+              </div>
+              <div v-if="file.Type==2">
+                <div class="iconfont icon-excel" @click="showUpLoadFile(file)"></div>
+                <span class="iconfont icon-guanbi1" @click="deleteUploadFile(fIndex)"></span>
+              </div>
+            </template>
+            <div class="_pic_upload">
+              <el-upload
+                drag
+                :http-request="uploadFileBtn"
+                :multiple="true"
+                :show-file-list="false"
+                action
+              >
+                <i class="el-icon-plus avatar-uploader-icon"></i>
+                <div class="el-upload__text">{{$t('active.ld_djscwj')}}</div>
+              </el-upload>
+            </div>
+          </div>
+        </div>
+      </el-col>
+    </el-row>
+    <div v-if="picIsShow" class="_show_img_box" @click="picIsShow=false,picObj=[]">
+      <div
+        style="position: absolute; width: 800px; height: 600px; left: 50%; top: 50%; margin-left: -400px; margin-top: -300px;"
+      >
+        <el-carousel :initial-index="initialIndex" height="600px" :interval="5000" trigger="click">
+          <el-carousel-item
+            style="height: 600px;overflow:auto;"
+            v-for="(item,index) in picObj"
+            :key="index"
+          >
+            <img :src="item" style />
+          </el-carousel-item>
+        </el-carousel>
+      </div>
+    </div>
+  </div>
+</template>
+<script>
+export default {
+  data() {
+    return {
+      loading: false,
+      saveMsg: []
+    };
+  },
+  mounted() {
+    // this.getList();
+  },
+  methods: {
+    getList: function() {
+      this.apipost(
+        "",
+        { TCID: TCID, OrderID: OrderID },
+        res => {
+          if (res.data.resultCode === 1) {
+            this.dataList = res.data.data;
+          }
+        },
+        null
+      );
+    },
+    showUpLoadFile(i) {
+      // 预览上传文件
+      if (i.Type == 3) {
+        this.picObj.push(i.Url);
+        this.imgList.push(i.Url);
+        this.picIsShow = true;
+      } else {
+        if (
+          i.Content.substring(
+            i.Content.lastIndexOf(".") + 1,
+            i.Content.length
+          ).toUpperCase() == "PDF"
+        ) {
+          this.previewPDF(i.Url);
+        } else {
+          window.open(
+            "https://view.officeapps.live.com/op/view.aspx?src=" + i.Url
+          );
+        }
+      }
+    },
+    deleteUploadFile(i) {
+      // 删除上传文件
+      this.saveMsg.splice(i, 1);
+    },
+    uploadFileBtn(file) {
+      //上传
+      if (file.file.size > 1024 * 1024 * 10) {
+        this.$message.warning(this.$t("tips.wjdxbncgsz"));
+        return;
+      }
+      //  1 文档  2 数据 3 图片
+      let typeArr = [
+        { stringArr: "GIF|JPG|JPEG|PNG|BMP", type: 3 },
+        { stringArr: "DOCX|DOC|XLSX|XLS|PPT|PPTX|PDF", type: 1 }
+      ];
+      let ft = file.file.name
+        .substring(file.file.name.lastIndexOf(".") + 1, file.file.name.length)
+        .toUpperCase();
+      let fileTypeNumber = 2;
+      let typeOk = false;
+      typeArr.forEach(x => {
+        if (x.stringArr.indexOf(ft) != "-1") {
+          fileTypeNumber = x.type;
+          typeOk = true;
+        }
+      });
+      if (!typeOk) return this.$message.error(this.$t("tips.qscWEfile"));
+      let newArr = [];
+      newArr.push(file.file);
+      let path = "/Upload/Temporary/";
+      this.$message.info(this.$t("tips.shangchuanzhong"));
+      this.UploadSelfFileT(
+        path,
+        newArr,
+        x => {
+          let fileSize =
+            file.file.size < 1024
+              ? file.file.size
+              : (file.file.size / 1024).toFixed(0);
+          this.saveMsg.push({
+            Content: x.data.FilePath,
+            ID: 0,
+            Type: fileTypeNumber,
+            Url: this.domainManager().ViittoFileUrl + x.data.FilePath
+          });
+        },
+        1
+      );
+    }
+  }
+};
+</script>
diff --git a/src/router/config.js b/src/router/config.js
index 50884fcafb826d4c3d2d0a38de1eb6be27cdcabf..923b1dc19ff40750a6cf0eeb1f1133f66f71d523 100644
--- a/src/router/config.js
+++ b/src/router/config.js
@@ -550,6 +550,14 @@ export default {
                                 title: '联盟管理'
                             },
                         },
+                        {
+                            path: '/happyMoney', //幸福存折
+                            name: 'happyMoney',
+                            component: resolve => require(['@/components/administrative/happyMoney'], resolve),
+                            meta: {
+                                title: '联盟管理'
+                            },
+                        },
                         {
                             path: '/statisticsDetail', //每日
                             name: 'statisticsDetail',