<style> @import "../../../assets/css/font"; </style> <template> <div> <div class="TravelNotice" :class="{'foldHeight':isFold==1}"> <span class="TMTitle"><i></i>补充信息</span> <span class="foldList" @click="fold" v-if="isFold==''">点击折叠</span> <span class="foldList" @click="fold" v-if="isFold==1">点击展开</span> <div> <div class="TNtitle NotContain"> 费用包含 </div> <my-edit v-on:edit-value="NoticeData.FeeInclude = arguments[0]" v-bind:editValue="NoticeData.FeeInclude" v-bind:toolbarShow="toolbar" v-bind:referenceList="FreeIncludeArr"></my-edit> <div class="TNtitle NotContain"> 费用不含 </div> <my-edit v-on:edit-value="NoticeData.FeeNonInclude = arguments[0]" v-bind:editValue="NoticeData.FeeNonInclude" v-bind:toolbarShow="toolbar" v-bind:referenceList="FeeNonIncludeArr"></my-edit> <div class="TNtitle NotContain"> 自费安排 </div> <table class="TFTable TNtable"> <thead> <tr> <th>城市</th> <th>自费项目</th> <th>预计费用</th> <th>说明</th> <th width="100">操作</th> </tr> </thead> <tbody> <tr v-for="(selfItem,selfIndex) in SelfpayingAllList"> <td> <span v-if="selfItem.IsShow==0">{{selfItem.CityName}}</span> <el-select class='w120' :placeholder="$t('pub.pleaseSel')" filterable v-model="selfItem.CityId" v-else-if="selfItem.IsShow==1"> <el-option :label="$t('pub.unlimitedSel')" :value='DefaultSelectValue'></el-option> <el-option v-for="item in AllCityList" :label='item.Name' :value='item.ID' :key='item.ID'> </el-option> </el-select> </td> <td> <span v-if="selfItem.IsShow==0">{{selfItem.ItemName}}</span> <el-input v-model="selfItem.ItemName" class='w200' v-else></el-input> </td> <td> <span v-if="selfItem.IsShow==0">{{selfItem.EstimatedCost}}</span> <el-input v-model="selfItem.EstimatedCost" class='w200' v-else></el-input> </td> <td> <span v-if="selfItem.IsShow==0">{{selfItem.Explain}}</span> <el-input v-model="selfItem.Explain" class='w400' v-else></el-input> </td> <td> <el-tooltip class="item" effect="dark" content="修改" placement="top-start" v-if="(selfItem.IsShow==0)"> <el-button type="primary" icon="el-icon-edit" circle @click="SelfpayingShow(selfItem)"></el-button> </el-tooltip> <el-tooltip class="item" effect="dark" content="保存" placement="top-start" v-if="selfItem.IsShow==1"> <el-button type="primary" icon="iconfont icon-baocun" circle @click="SaveSelfpaying(selfItem)"></el-button> </el-tooltip> <el-tooltip class="item" effect="dark" content="取消" placement="top-start" v-if="selfItem.IsShow==1 "> <el-button type="danger" icon="iconfont icon-guanbi" circle @click="SelfpayingHide(selfItem,selfIndex)"></el-button> </el-tooltip> <el-tooltip class="item" effect="dark" content="删除" placement="top-start" v-if="selfItem.IsShow==0"> <el-button type="danger" icon="iconfont icon-guanbi" circle @click="DelSelfpaying(selfItem,selfIndex)"></el-button> </el-tooltip> </td> </tr> </tbody> <tfoot> <tr> <td colspan="5"> <div class="TFAddFlight" @click="AddSelfpaying()"> <i class="iconfont icon-img_haha" @click="AddSelfpaying()"></i> </div> </td> </tr> </tfoot> </table> <div class="TNtitle NotContain"> 重要提示 </div> <my-edit v-on:edit-value="NoticeData.ImportantTip = arguments[0]" v-bind:editValue="NoticeData.ImportantTip" v-bind:toolbarShow="toolbar" v-bind:referenceList="ImportantTipArr"></my-edit> <div class="TNtitle NotContain"> 温馨提示 </div> <my-edit v-on:edit-value="NoticeData.WarmTip = arguments[0]" v-bind:editValue="NoticeData.WarmTip" v-bind:toolbarShow="toolbar" v-bind:referenceList="WarmTipArr"></my-edit> <div class="TNtitle NotContain"> 同行备注 </div> <my-edit v-on:edit-value="NoticeData.B2BRemark = arguments[0]" v-bind:editValue="NoticeData.B2BRemark" v-bind:toolbarShow="toolbar" v-bind:referenceList="B2BRemarkArr"></my-edit> <div class="TNtitle NotContain"> 购物店(补充协议书) </div> <my-edit v-on:edit-value="NoticeData.ShopRemark = arguments[0]" v-bind:editValue="NoticeData.ShopRemark" v-bind:toolbarShow="toolbar" v-bind:referenceList="ShopRemarkArr"></my-edit> <div class="TNtitle NotContain"> 购物店安排 </div> <table class="TFTable TNtable"> <thead> <tr> <th>城市</th> <th>购物店名称</th> <th>参观时间</th> <th width='100'>操作</th> </tr> </thead> <tbody> <tr v-for="(shopItem,shopIndex) in ShopAllList"> <td class='w250'> {{shopItem.CityName}} </td> <td> <span v-if="shopItem.IsShow==0">{{shopItem.ShopName}}</span> <el-select class='w250' :placeholder="$t('pub.pleaseSel')" filterable v-model="shopItem.ShopId" @visible-change="getShopItemList($event)" @change="GetCityName(shopItem.ShopId,shopItem)" v-else> <el-option :label="$t('pub.unlimitedSel')" :value='DefaultSelectValue'></el-option> <el-option v-for="item in ShopItemList" :label='item.Name' :value='item.ID' :key='item.ID'> </el-option> </el-select> </td> <td> <span v-if="shopItem.IsShow==0">{{shopItem.VisitTime}}</span> <el-input v-model="shopItem.VisitTime" class='w400' v-else></el-input> </td> <td> <el-tooltip class="item" effect="dark" content="修改" placement="top-start" v-if="(shopItem.IsShow==0)"> <el-button type="primary" icon="el-icon-edit" circle @click="ShopShow(shopItem)"></el-button> </el-tooltip> <el-tooltip class="item" effect="dark" content="保存" placement="top-start" v-if="shopItem.IsShow==1"> <el-button type="primary" icon="iconfont icon-baocun" circle @click="SaveShop(shopItem)"></el-button> </el-tooltip> <el-tooltip class="item" effect="dark" content="取消" placement="top-start" v-if="shopItem.IsShow==1 "> <el-button type="danger" icon="iconfont icon-guanbi" circle @click="ShopHide(shopItem,shopIndex)"></el-button> </el-tooltip> <el-tooltip class="item" effect="dark" content="删除" placement="top-start" v-if="shopItem.IsShow==0"> <el-button type="danger" icon="iconfont icon-guanbi" circle @click="DelShop(shopItem,shopIndex)"></el-button> </el-tooltip> </td> </tr> </tbody> <tfoot> <tr> <td colspan="4"> <div class="TFAddFlight" @click="AddShop()"> <i class="iconfont icon-img_haha"></i> </div> </td> </tr> </tfoot> </table> <div class="TNtitle NotContain"> 签证说明 </div> <my-edit v-on:edit-value="NoticeData.VisaRemark = arguments[0]" v-bind:editValue="NoticeData.VisaRemark" v-bind:toolbarShow="toolbar" v-bind:referenceList="VisaRemarkArr"></my-edit> </div> </div> </div> </template> <script> import { quillEditor } from "vue-quill-editor"; import * as Quill from "quill"; //引入编辑器 import MyEdit from "../../EditTemplate.vue"; //quill编辑器的字体 var fonts = [ "SimSun", "SimHei", "Microsoft-YaHei", "KaiTi", "FangSong", "Arial", "Times-New-Roman", "sans-serif" ]; var Font = Quill.import("formats/font"); Font.whitelist = fonts; //将字体加入到白名单 Quill.register(Font, true); export default { props: [ "subArray", "NoticeData", "ShopList", "SelfpayingList", "AllCityList", "CountryID" //国家编号 ], data() { return { //字体样式 fonts: [ "SimSun", "SimHei", "Microsoft-YaHei", "KaiTi", "FangSong", "Arial", "Times-New-Roman", "sans-serif" ], //下拉框默认值 DefaultSelectValue: 0, //引用的数据 referenceList: [], // 获取相似行程数组 FreeIncludeArr: [], FeeNonIncludeArr: [], ImportantTipArr: [], WarmTipArr: [], B2BRemarkArr: [], ShopRemarkArr: [], VisaRemarkArr: [], //购物店下拉框 ShopItemList: [], ShopAllList: [], SelfpayingAllList: [], toolbar: { clean: false, //加粗 font: false, //字体 narrative: true //叙述, }, //折叠展开 isFold: "" }; }, components: { "my-edit": MyEdit }, methods: { GetCityName(shopId, item) { if (shopId != 0) { //获取当前选中的对象 let obj = {}; obj = this.ShopItemList.find(item => { return item.ID === shopId; //筛选出匹配数据 }); if (obj != undefined) { item.CityName = obj.CityName; item.CityId = obj.CityId; } } }, onEditorChange({ editor, html, text }, typeStr) { //富文本编辑器 文本改变时 设置字段值 switch (typeStr) { case "FeeInclude": this.NoticeData.FeeInclude = html; break; case "FeeNonInclude": this.NoticeData.FeeNonInclude = html; break; case "ImportantTip": this.NoticeData.ImportantTip = html; break; case "WarmTip": this.NoticeData.WarmTip = html; break; case "B2BRemark": this.NoticeData.B2BRemark = html; break; case "ShopRemark": this.NoticeData.ShopRemark = html; break; case "VisaRemark": this.NoticeData.VisaRemark = html; break; } }, //点击折叠 fold() { if (this.isFold == "") { this.isFold = 1; } else { this.isFold = ""; } }, //获取相似的行程特色列表 GetSameFeatureList() { var msg = { ID: this.subArray.ConfigId, LineId: this.subArray.LineID, LineteamId: this.subArray.LineteamId }; this.apipost( "travel_get_GetTopTenSameFeatureList", msg, res => { if (res.data.resultCode == 1) { this.FreeIncludeArr = []; this.FeeNonIncludeArr = []; this.ImportantTipArr = []; this.WarmTipArr = []; this.B2BRemarkArr = []; this.ShopRemarkArr = []; res.data.data.forEach(x => { if (x.FeeInclude != null) { this.FreeIncludeArr.push(x.FeeInclude); } if (x.FeeNonInclude != null) { this.FeeNonIncludeArr.push(x.FeeNonInclude); } if (x.ImportantTip != null) { this.ImportantTipArr.push(x.ImportantTip); } if (x.WarmTip != null) { this.WarmTipArr.push(x.WarmTip); } if (x.B2BRemark != null) { this.B2BRemarkArr.push(x.B2BRemark); } if (x.ShopRemark != null) { this.ShopRemarkArr.push(x.ShopRemark); } }); } }, err => {} ); }, getVisaDescribe() { this.apipost( "dmc_get_visa_GetAllVisaDescribe", {}, res => { if (res.data.resultCode == 1) { this.VisaRemarkArr = res.data.data; } }, err => {} ); }, //获取购物店下拉框 getShopItemList() { if (event) { var qmsg = { QCountry: this.CountryID }; this.apipost( "Shopping_Post_GetList", qmsg, res => { if (res.data.resultCode == 1) { this.ShopItemList = res.data.data; } }, err => {} ); } }, SelfpayingShow(item) { item.IsShow = 1; }, SelfpayingHide(item, selfIndex) { if (item.Id > 0) { item.IsShow = 0; } else { this.SelfpayingAllList.splice(selfIndex, 1); } }, //新增购物店 AddShop() { let haveNotSaveData = false; if (this.ShopAllList.length > 0) { this.ShopAllList.forEach(x => { if (x.Id === 0) { haveNotSaveData = true; } }); } if (haveNotSaveData) { this.Info("请先完善或删除未保存的购物店数据"); } else { var obj = { Id: 0, ConfigId: this.subArray.ConfigId, CityId: 0, ShopId: 0, VisitTime: "", IsShow: 1 }; this.ShopAllList.push(obj); } }, //保存购物店 SaveShop(item) { this.apipost( "travel_Post_SetShop", item, res => { if (res.data.resultCode == 1) { this.GetShopList(); } }, err => {} ); }, //删除购物店 DelShop(shopItem, shopIndex) { this.ShopAllList.splice(shopIndex, 1); if (shopItem.Id > 0) { this.apipost( "travel_Post_RemoveShop", { ID: shopItem.Id }, res => { if (res.data.resultCode == 1) { this.GetShopList(); } }, err => {} ); } }, //购物店列表 GetShopList() { this.apipost( "travel_Get_GetShopList", { ConfigId: this.subArray.ConfigId }, res => { if (res.data.resultCode == 1) { this.ShopAllList = res.data.data; } }, err => {} ); }, ShopShow(item) { item.IsShow = 1; }, ShopHide(item, shopIndex) { if (item.Id > 0) { item.IsShow = 0; } else { this.ShopAllList.splice(shopIndex, 1); } }, //新增自费购物 AddSelfpaying() { let haveNotSaveData = false; if (this.SelfpayingAllList.length > 0) { this.SelfpayingAllList.forEach(x => { if (x.Id === 0) { haveNotSaveData = true; } }); } if (haveNotSaveData) { this.Info("请先完善或删除未保存的自费安排"); } else { var obj = { Id: 0, ConfigId: this.subArray.ConfigId, CityId: 0, ItemName: "", EstimatedCost: "", Explain: "", IsShow: 1 }; this.SelfpayingAllList.push(obj); } }, //保存自费项目 SaveSelfpaying(item) { this.apipost( "travel_Post_SetSelfpaying", item, res => { if (res.data.resultCode == 1) { this.GetSelfpayingList(); } }, err => {} ); }, //删除自费项目 DelSelfpaying(selfItem, shopIndex) { this.SelfpayingAllList.splice(shopIndex, 1); if (selfItem.Id > 0) { this.apipost( "travel_Post_RemoveSelfpaying", { ID: selfItem.Id }, res => { if (res.data.resultCode == 1) { this.GetSelfpayingList(); } }, err => {} ); } }, //获取自费项目列表 GetSelfpayingList() { this.apipost( "travel_Get_GetSelfpayingList", { ConfigId: this.subArray.ConfigId }, res => { if (res.data.resultCode == 1) { this.SelfpayingAllList = res.data.data; } }, err => {} ); } }, mounted() { this.GetSameFeatureList(); this.getVisaDescribe(); }, created() { // this.getShopItemList(); }, watch: { //监听参数 subArray: { handler: function(val, oldVal) { if (val.ConfigId != "0") { this.GetSameFeatureList(); } }, deep: true }, NoticeData: { //深度监听,可监听到对象、数组的变化 handler: function(val, oldVal) { this.$emit("headCallBack", this.NoticeData); }, deep: true }, ShopList: { handler: function(val, oldVal) { this.ShopAllList = this.ShopList; }, deep: true }, SelfpayingList: { handler: function(val, oldVal) { this.SelfpayingAllList = this.SelfpayingList; }, deep: true } } }; </script>