<style> .webSiteBg { padding: 20px; background-color: #fff; height: 100%; } .WebSiteSearch .el-tabs__content { height: calc(100% - 55px); } </style> <template> <!--网站设定(网站设置)--> <div class="WebSiteSearch" style="height:100%"> <el-form :model="PostMsg" ref="PostMsg" label-width="130px" style="height:100%"> <el-tabs v-model="activeName" style="height:100%;"> <el-tab-pane :label="$t('objFill.v101.jibenshedin')" name="first"> <div class="webSiteBg"> <el-row> <el-col :span="8"> <el-form-item label="顯示標題"> <el-input v-model="PostMsg.ShowTitle"></el-input> </el-form-item> </el-col> </el-row> <el-row> <el-col :span="8"> <el-form-item label="編輯熱門關鍵字"> <el-input v-model="keywords" @keyup.native.enter="addKeyWords"> <el-button slot="append" @click="addKeyWords()">{{$t('pub.addBtn')}}</el-button> </el-input> </el-form-item> </el-col> </el-row> <el-row> <el-col :span="24"> <el-form-item> <el-tag v-for="(tag,index) in keyWordsArr" :key="tag" closable :type="tag" @close="closeTag(index)" style="margin-right:10px;" >{{tag}}</el-tag> </el-form-item> </el-col> </el-row> <el-row> <el-col :span="24"> <el-form-item> <el-button type="primary" size="small" @click="saveData()">{{$t('objFill.v101.cunchuxiug')}}</el-button> </el-form-item> </el-col> </el-row> </div> </el-tab-pane> <el-tab-pane label="地區" name="second"> <div class="webSiteBg"> <el-row> <el-checkbox-group v-model="SearchAreaArr"> <el-col :span="6" v-for="(item,index) in areaData" :key="index" style="margin-bottom:20px;" > <el-checkbox :label="item.Id" :key="item.AreaName">{{item.AreaName}}</el-checkbox> </el-col> </el-checkbox-group> </el-row> <el-row> <el-col :span="24"> <el-button type="primary" size="small" style="margin:40px 0" @click="saveData()" >{{$t('objFill.v101.cunchuxiug')}}</el-button> </el-col> </el-row> </div> </el-tab-pane> <el-tab-pane label="供應商旅行社" name="third" style="height:100%"> <div class="webSiteBg"> <!-- <el-button :disabled="chooseTAArray.length>0?false:true" @click="setTravelagencyArea(1)" style="padding-bottom:10px;">批次設定區域</el-button> --> <el-table v-loading="isLoadingAgentArea" ref="multipleTable" :data="PostMsg.TravelagencyList" tooltip-effect="dark" style="width: 100%;height:calc(100% - 50px);overflow-y:auto;" @selection-change="handleSelectionChange" > <el-table-column type="selection" width="100px"></el-table-column> <el-table-column prop="IsOpenSearch" label="開放搜尋" width="100px"> <template slot-scope="scope"> <el-switch v-model="scope.row.IsOpenSearch" :active-value="1" :inactive-value="0" active-color="#13ce66" inactive-color="#dcdfe6" :disabled="scope.row.SyncStatus==0" ></el-switch> </template> </el-table-column> <el-table-column prop="AgencyName" :label="$t('objFill.v101.lvxingshe')" width="300px"></el-table-column> <el-table-column label="設定區域" width="200px"> <template slot-scope="scope"> <el-button v-if="scope.row.SyncStatus==1" type="primary" size="small" @click="getAgentArea(scope.row)" >設定</el-button> <span v-else style="color:#f45c43;">正在接入,敬請期待</span> </template> </el-table-column> <el-table-column prop="SetArea" label="開放區域"> <template slot-scope="scope">{{getAreaName(scope.row.SetArea)}}</template> </el-table-column> </el-table> <el-button type="primary" size="small" style="margin-top:20px;" @click="saveData()">{{$t('objFill.v101.cunchuxiug')}}</el-button> </div> </el-tab-pane> <el-tab-pane label="搜尋結果頁面" name="fourth"> <div class="webSiteBg"> <el-row> <el-col :span="8"> <el-form-item label="顯示類型"> <el-select v-model="PostMsg.ShowType" style="width:100%"> <el-option label="豆腐格" :value="0" :key="0"></el-option> <el-option label="篩選式列表" :value="1" :key="1"></el-option> </el-select> </el-form-item> <el-form-item> <el-button type="primary" size="small" style="margin:40px 0" @click="saveData()" >{{$t('objFill.v101.cunchuxiug')}}</el-button> </el-form-item> </el-col> </el-row> </div> </el-tab-pane> </el-tabs> </el-form> <el-dialog custom-class="w450" title="設定區域" :visible.sync="outerVisible" center> <el-row> <el-checkbox-group v-model="taAreaArr"> <el-col :span="6" v-for="(item,index) in areaData" :key="index" style="margin-bottom:20px;" > <el-checkbox :label="item.Id" :key="item.AreaName">{{item.AreaName}}</el-checkbox> </el-col> </el-checkbox-group> </el-row> <div slot="footer" class="dialog-footer"> <button class="hollowFixedBtn" @click="closeArea()">{{$t('pub.cancelBtn')}}</button> <button class="normalBtn" @click="sureTAArea()">{{$t('pub.sureBtn')}}</button> </div> </el-dialog> <el-dialog custom-class="w450" title="選擇您需要的區域" :visible.sync="showAgentArea" center> <transition name="el-zoom-in-top"> <el-row v-show="chosenStep==0"> <el-checkbox-group v-model="agentChosenArea"> <el-col :span="6" v-for="(item,index) in agentArea" :key="index" style="margin-bottom:20px;" > <el-checkbox :label="item" :key="item.AreaName">{{item.AreaName}}</el-checkbox> </el-col> </el-checkbox-group> </el-row> </transition> <transition name="el-zoom-in-bottom"> <el-row v-show="chosenStep==1"> <el-row style="margin-bottom:10px;"> <el-col :span="10" style="font-size:16px;color:#33B3FF">{{agentName}}</el-col> <el-col :span="4"> </el-col> <el-col :span="10" style="font-size:16px;color:#33B3FF">您的分區</el-col> </el-row> <el-row type="flex" style="margin-bottom:10px;" align="middle" v-for="(x,i) in agentChosenArea" :key="i"> <el-col :span="10" style="font-size:14px">{{x.AreaName}}</el-col> <el-col :span="4" style="color:#ccc;"> <i style="font-size:16px;" class="iconfont icon-gengduojiantou"></i> </el-col> <el-col :span="10" style="font-size:12px"> <el-select v-model="x.targetId" filterable :placeholder="$t('pub.pleaseSel')" @change="changeMapping"> <el-option v-for="(y,yi) in areaData" :key="yi" :label="y.AreaName" :value="`${y.Id}_${i}`"> </el-option> </el-select> </el-col> </el-row> </el-row> </transition> <div slot="footer" class="dialog-footer"> <button class="hollowFixedBtn" @click="closeArea()">{{$t('pub.cancelBtn')}}</button> <button class="hollowFixedBtn" @click="goPrevSetup" v-if="chosenStep==1">上一步</button> <button class="normalBtn" @click="sureAgentArea()">{{chosenStep==0?"下一步":"完成"}}</button> </div> </el-dialog> </div> </template> <script> export default { data() { return { //是否显示弹窗 outerVisible: false, //选项卡 activeName: "first", //关键字 keywords: "", keyWordsArr: [], //关键字数组 PostMsg: { Id: 0, ShowTitle: "", HotWords: "", SearchAreaIds: "", ShowType: 0, TravelagencyList: [], }, //地区数据 areaData: [], //总数据 dataList: [], //选中的地区 SearchAreaArr: [], //选中的旅行社 chooseTAArray: [], //旅行社区域 taAreaArr: [], agentArea:[], isLoadingAgentArea:false, showAgentArea:false, agentChosenArea:[], chosenStep:0, agentName:"", isPreOpenSearch:false, chosenAgentId:0 }; }, mounted() { this.getData(); this.getAreaList(); }, methods: { //获取配置 getData() { this.apipost( "ws_get_GetSearchConfig", {}, (res) => { if (res.data.resultCode == 1) { var tempData = res.data.data; if (tempData) { if (tempData.Id) { this.PostMsg.Id = tempData.Id; } if (tempData.ShowTitle) { this.PostMsg.ShowTitle = tempData.ShowTitle; } if (tempData.HotWords) { this.PostMsg.HotWords = tempData.HotWords; } if (tempData.HotWordsList && tempData.HotWordsList.length > 0) { this.keyWordsArr = tempData.HotWordsList; } if (tempData.SearchAreaIds) { this.PostMsg.SearchAreaIds = tempData.SearchAreaIds; } if ( tempData.SearchAreaIdsList && tempData.SearchAreaIdsList.length > 0 ) { this.SearchAreaArr = tempData.SearchAreaIdsList; } if (tempData.ShowType) { this.PostMsg.ShowType = tempData.ShowType; } if (tempData.TravelagencyList) { this.PostMsg.TravelagencyList = tempData.TravelagencyList; } } this.$forceUpdate() } else { this.Error(res.data.message); } }, (err) => {} ); }, getCheckStatus(id){ return this.agentChosenArea.findIndex(x=>x.Id==id)!=-1 }, goPrevSetup(){ this.chosenStep=0 }, changeMapping(d){ if(d){ let t=d.split('_') this.agentChosenArea[t[1]].targetId=d this.$forceUpdate() } }, sureAgentArea(){ if(this.chosenStep==0 && this.agentChosenArea.length>0){ this.agentChosenArea.forEach(x=>{ x.targetId=x.targetId?x.targetId:'' }) this.chosenStep=1 } else if(this.chosenStep==0 && this.agentChosenArea.length==0){ this.Error("請選擇您需要使用的區域"); } else if(this.chosenStep==1 && this.agentChosenArea.length>0){ let errorMsg="" let msg={ SetArea:[] }; this.agentChosenArea.forEach(x=>{ if(x.targetId!=''){ msg.SetArea.push({ "agentAreaId":x.Id, "agentAreaName":x.AreaName, "targetId":x.targetId.split('_')[0] }); }else{ errorMsg="請選擇對應分區" } }) if(errorMsg==""){ msg.IsOpenSearch=this.isPreOpenSearch?1:0 msg.AgencyId=this.chosenAgentId msg.SetArea=JSON.stringify(msg.SetArea) this.apipost("ws_set_agentarea", msg, (res) => { if(res.data.resultCode==1){ this.closeArea() this.getData() }else{ this.Error("設置失敗,請嘗試刷新頁面"); } this.isLoadingAgentArea=false }); }else{ this.Error(errorMsg); } } }, getAgentArea(row) { this.isLoadingAgentArea=true let msg = { 'agentid':row.AgencyId }; this.apipost("ws_get_getagent_areafirstlevel", msg, (res) => { if(res.data.resultCode==1){ this.agentArea=res.data.data this.agentChosenArea=[] this.formatChosenInit(row) this.showAgentArea=true this.chosenStep=0 this.agentName=row.AgencyName this.chosenAgentId=row.AgencyId }else{ this.Error("加載失敗,請嘗試刷新頁面"); } this.isLoadingAgentArea=false }); }, formatChosenInit(row){ if(row.SetArea){ try { let area=JSON.parse(row.SetArea) if(area.length>0){ this.agentChosenArea=this.agentArea.filter(x=>{ let t=area.find(n=>n.agentAreaId==x.Id) if(t){ x.targetId=t.targetId return x } return false }) this.agentChosenArea.forEach((x,i)=>{ x.targetId= x.targetId+"_"+i }) } } catch (error) {} } }, //保存数据 saveData() { //区域 var tempSearchAreaIds = ""; if (this.SearchAreaArr && this.SearchAreaArr.length > 0) { this.SearchAreaArr.forEach((item) => { tempSearchAreaIds += item + ","; }); this.PostMsg.SearchAreaIds = tempSearchAreaIds.substr( 0, tempSearchAreaIds.length - 1 ); } else { this.PostMsg.SearchAreaIds = tempSearchAreaIds; } //热门关键词 var tempHotWords = ""; if (this.keyWordsArr && this.keyWordsArr.length > 0) { this.keyWordsArr.forEach((item) => { tempHotWords += item + ","; }); this.PostMsg.HotWords = tempHotWords.substr(0, tempHotWords.length - 1); } else { this.PostMsg.HotWords = tempHotWords; } this.apipost( "ws_post_SetSearchConfig", this.PostMsg, (res) => { if (res.data.resultCode == 1) { this.getData(); this.Success(res.data.message); } else { this.Error(res.data.message); } }, (err) => {} ); }, //获取地区 getAreaList() { this.apipost( "ws_get_GetRootArea", {}, (res) => { if (res.data.resultCode == 1) { this.areaData = res.data.data; } else { this.Error(res.data.message); } }, (err) => {} ); }, //关闭标签 closeTag(index) { this.keyWordsArr.splice(index, 1); }, //多选 handleSelectionChange(val) { this.chooseTAArray = JSON.parse(JSON.stringify(val)); }, //返回地区名称 getAreaName(areaIds) { var nameStr = ""; try{ var t=JSON.parse(areaIds) if(t && t.length>0){ t.forEach(x=>{ nameStr += x.agentAreaName + "、"; }) } }catch(e){} // if (areaIds) { // var tempArray = areaIds.split(","); // if (tempArray && tempArray.length > 0) { // tempArray.forEach((item) => { // var areaItem = this.areaData.find((member) => { // return member.Id == item; // }); // if (areaItem) { // nameStr += areaItem.AreaName + "、"; // } // }); // } // } // if (nameStr && nameStr.length > 0) { // nameStr = nameStr.substr(0, nameStr.length - 1); // } return nameStr; }, //设置旅行区域 setTravelagencyArea(type, item) { this.taAreaArr = []; if (type == 1) { if (this.chooseTAArray && this.chooseTAArray.length > 0) { this.outerVisible = true; this.chooseTAArray.forEach((subItem) => { var tempArray = subItem.SetArea.split(","); if (tempArray && tempArray.length > 0) { tempArray.forEach((sItem) => { //数组里面不存在 if (this.taAreaArr.indexOf(Number(sItem)) == -1) { this.taAreaArr.push(Number(sItem)); } }); } }); } else { this.Info("请选择要设置的旅行社!"); } } else { this.outerVisible = true; if (item) { if (item.SetArea) { var tempArray = item.SetArea.split(","); if (tempArray && tempArray.length > 0) { tempArray.forEach((sItem) => { this.taAreaArr.push(Number(sItem)); }); } } this.chooseTAArray.push(item); } } }, //新增关键字 addKeyWords() { if (this.keywords != "") { this.keyWordsArr.push(this.keywords); this.keywords = ""; } }, //关闭弹窗 closeArea() { this.outerVisible = false; this.showAgentArea=false; }, //选中区域确定 sureTAArea() { var tempAreaIds = ""; if (this.taAreaArr && this.taAreaArr.length > 0) { this.taAreaArr.sort().forEach((item) => { tempAreaIds += item + ","; }); if (tempAreaIds && tempAreaIds.length > 0) { tempAreaIds = tempAreaIds.substr(0, tempAreaIds.length - 1); } } if (this.chooseTAArray && this.chooseTAArray.length > 0) { var jsonData = JSON.parse(JSON.stringify(this.chooseTAArray)); var that = this; jsonData.forEach((item) => { that.PostMsg.TravelagencyList.forEach((subItem) => { if (item.AgencyId == subItem.AgencyId) { subItem.SetArea = tempAreaIds; } }); }); this.chooseTAArray = []; this.taAreaArr = []; } this.outerVisible = false; }, }, }; </script>