<style> .leaderArrangement .query-box { border-bottom: none; } .leaderArrangement .topList { padding: 20px 0; border: 1px solid #ededed; font-size: 12px; width: 100%; background-color: #fff; /* min-width: 1120px; */ padding: 10px 0 20px 20px; overflow: auto; } .leaderArrangement .topList::-webkit-scrollbar { width: 4px; height: 8px; } .leaderArrangement .topList::-webkit-scrollbar-track { -webkit-box-shadow: inset 0 0 2px rgba(0, 0, 0, 0.2); border-radius: 4px; background: #ededed; } .leaderArrangement .topList::-webkit-scrollbar-thumb { border-radius: 4px; -webkit-box-shadow: inset 0 0 2px rgba(0, 0, 0, 0.2); background: #c9c9c9; } .leaderArrangement .topList span { display: inline-block; } .leaderArrangement .Llist { float: left; margin: 20px 20px 0 0; text-align: center; } .leaderArrangement .leaderList { min-width: 1300px; } .leaderArrangement .headerImg { width: 40px; height: 40px; border-radius: 50%; margin-bottom: 5px; } .leaderArrangement .headerImg img { width: 100%; height: 100%; border-radius: 50%; } .leaderArrangement .leaderInfo { width: 100%; height: 100px; background-color: #fff; margin-top: 20px; line-height: 100px; border: 1px solid #dddddd; font-size: 12px; } .leaderArrangement .leaderInfo:hover { box-shadow: 0px 0px 20px rgba(191, 191, 191, 1); transition: all linear 0.5s; } .leaderArrangement .Lleader { text-overflow: ellipsis; overflow: hidden; white-space: nowrap; margin: 0 30px 0 20px; text-decoration: underline; cursor: pointer; } .leaderArrangement .expectDay, .LtimeList { min-width: 120px; } .leaderArrangement .sxDay { min-width: 82px; } .leaderArrangement .expectDay span { font-size: 18px; font-family: PingFangSC-Semibold, sans-serif; } .leaderArrangement .Arrange_Y1 { color: #32cc8a; margin: 0 3px; } .leaderArrangement .Arrange_Y2 { color: #2aaef2; margin: 0 3px; } .leaderArrangement .forSaling { color: #32cc8a; text-align: center; border-right: 1px dashed #dcdfe6; } .leaderArrangement .notAssigned { width: 130px; text-align: center; margin-left: 10px; } .leaderArrangement .litCircle { width: 40px; height: 40px; border-radius: 50%; margin: 5px auto; } .leaderArrangement .litCircle img { width: 100%; height: 100%; border-radius: 50%; } .leaderArrangement .Assied>div:first-child { margin-left: 20px; text-align: center; } .leaderArrangement .AssList { float: left; margin: 5px 10px 0 0; height: 80px; line-height: 1; text-align: center; } .leaderArrangement .btmList { position: fixed; width: 100%; min-width: 1120px; height: 160px; background-color: #fff; bottom: 0; display: none; padding: 20px; border-top: 1px solid #d2d2d2; font-size: 12px; color: #666; } .leaderArrangement .btList { margin: 20px 20px; } .leaderArrangement .isShow { display: block; } .leaderArrangement .noWork { width: 100%; display: inline-block; border-bottom: 1px dashed #dcdfe6; padding-bottom: 10px; color: #47bf8c; margin-top: 5px; } .leaderArrangement ._ol_color { font-size: 12px; width: 100%; margin: 20px 0; } .leaderArrangement ._ol_color li { float: left; padding: 0 15px; display: flex; align-items: center; } .leaderArrangement ._ol_color li:first-child { color: #e95252; } .leaderArrangement ._ol_color li:nth-child(2) { color: #47bf8c; } .leaderArrangement ._ol_color li ._cl { border-radius: 3px; display: inline-block; width: 5px; height: 12px; margin-right: 5px; } .leaderArrangement ._ol_color li ._c2 { border-radius: 3px; display: inline-block; width: 5px; height: 12px; margin-right: 5px; } .leaderArrangement ._red { background-color: #e95252; } .leaderArrangement ._green { background-color: #47bf8c; } .leaderArrangement ._oll_line { float: left; width: 5px; height: 100px; background-color: #e95252; border-top-left-radius: 4px; border-bottom-left-radius: 4px; } .leaderArrangement ._o_green { background-color: #47bf8c; } .leaderArrangement .goType { display: inline-block; background-color: #ff7862; color: #fff; height: 20px; width: 20px; text-align: center; line-height: 20px; margin-right: 10px; } .leaderArrangement .icon-img-rili { color: #cccccc; margin-right: 10px; } .leaderArrangement .setTitle { border-left: 3px solid #e95252; padding-left: 10px; } .leaderArrangement .LeDis { margin-left: 30px; } .leaderArrangement .btnList { position: absolute; right: 300px; top: 80px; } .leaderArrangement .w150 .el-input { width: 150px !important; } .leaderArrangement::-webkit-scrollbar { width: 4px; height: 8px; } .leaderArrangement::-webkit-scrollbar-track { -webkit-box-shadow: inset 0 0 2px rgba(0, 0, 0, 0.2); border-radius: 4px; background: #ededed; } .leaderArrangement::-webkit-scrollbar-thumb { border-radius: 4px; -webkit-box-shadow: inset 0 0 2px rgba(0, 0, 0, 0.2); background: #c9c9c9; } .leaderArrangement .btList .el-form-item { float: left; margin-right: 20px; } .leaderArrangement .leaderInfo .hollowFixedBtn { width: 80px; } .leaderArrangement .fmain { height: auto; margin: auto; float: left; min-width: 900px; overflow: hidden; } .leaderArrangement .leftArrow, .rightArrow { float: left; width: 30px; height: 30px; margin: 30px 20px 0 0; } .rightArrow { float: left !important; } .leaderArrangement .leftArrow i, .rightArrow i { cursor: pointer; font-size: 28px; } .disNone { color: #cccccc; } </style> <template> <div class="flexOne leaderArrangement"> <div class="query-box"> <ul> <li> <span> <em>{{$t('hotel.hotel_country')}}</em> <el-select v-model="CountryIDStr" clearable class="w150" filterable :placeholder="$t('hotel.hotel_country')"> <el-option :label="$t('pub.unlimitedSel')" value=''></el-option> <el-option v-for='item in countryList' :key="item.ID" :label="item.Name" :value="item.ID"> </el-option> </el-select> </span> </li> <li> <span> <em>{{$t('scen.sc_ftTime')}}</em> <el-date-picker class="w150" v-model="msg.QStartDateStr" type="date" :picker-options="pickerOptions1" value-format="yyyy-MM-dd" placeholder=""> </el-date-picker> <el-date-picker class="w150" v-model="msg.QEndDateStr" type="date" value-format="yyyy-MM-dd" :picker-options="pickerOptions2" placeholder=""> </el-date-picker> </span> </li> <li> <span> <em>{{$t('scen.sc_temID')}}</em> <el-input v-model="msg.QTCID" maxlength="50" @keyup.native.enter="getList" class="w150"></el-input> </span> </li> <li> <span> <em>{{$t('scen.sc_temStatu')}}</em> <el-select v-model="msg.TCState" filterable :placeholder="$t('system.table_country')" class="w150"> <el-option :label="$t('pub.unlimitedSel')" value='0'></el-option> <el-option v-for='item in TeamSaleStateList' :key="item.Id" :label="item.Name" :value="item.Id"> </el-option> </el-select> </span> </li> <li> <span> <em>{{$t('leader.leader_assigned')}}</em> <el-select v-model="msg.QIsAssign" filterable :placeholder="$t('pub.pleaseImport')" class="w150"> <el-option :label="$t('pub.unlimitedSel')" value='0'></el-option> <el-option v-for='item in QIsAssignList' :key="item.value" :label="item.label" :value="item.value"> </el-option> </el-select> </span> </li> <li> <input type="button" class="hollowFixedBtn" :value="$t('pub.searchBtn')" @click="getList()" /> </li> </ul> </div> <div v-loading="loading" class="commonContent"> <div class="topList clearfix"> <span>{{$t('leader.leader_noTask')}}</span> <span class="noWork">{{$t('ground.tuozhuaishezhi')}}<el-input :placeholder="$t('rule.qsrname')" v-model="noTaskLeaderMsg.LeaderName" maxlength="50" @keyup.native.enter="noTaskLeaderMsg.pageIndex=1,getNoTaskLeader()" class="w150"> </el-input> <input type='button' :value='$t("pub.searchBtn")' class="hollowFixedBtn" @click="noTaskLeaderMsg.pageIndex=1,getNoTaskLeader()" /> </span> <div class="leaderList clearfix"> <div class="leftArrow" v-if="this.noTaskLeaderMsg.PageCount>2"> <i class="iconfont icon-previewleft" :class="{'disNone':this.noTaskLeaderMsg.pageIndex==1}" @click="LeaderMove(-1)"></i> </div> <div class="fmain"> <ul class="uu clearfix"> <li class="Llist" v-for="leader in LeaderList" draggable="true" @dragstart="drag($event,leader.LeaderId,leader.Type)" :key="leader.subCode"> <div class="headerImg"> <img v-if="!leader.EmPhoto" src="../../assets/img/default_head_img.jpg"> <img v-else :src="imgBeforeFile+leader.EmPhoto" :onerror='defaultImg' /> </div> <span>{{leader.LeaderName}}</span> </li> </ul> </div> <div class="rightArrow" v-if="this.noTaskLeaderMsg.PageCount>2"> <i class="iconfont icon-arrow-right" :class="{'disNone':this.noTaskLeaderMsg.pageIndex==this.noTaskLeaderMsg.PageCount}" @click="LeaderMove(1)"></i> </div> </div> </div> <ul class="_ol_color clearfix"> <li><span class="_red _c2"></span><span class="_red_text">{{$t('Airticket.Air_redType')}}:</span>{{$t('leader.leader_noAssigned')}} </li> <li><span class="_green _cl"></span><span class="_green_text">{{$t('Airticket.Air_greenType')}}:</span>{{$t('leader.leader_hasAssigned')}} </li> </ul> <div class="leaderInfo afterfix" v-for="item in dataList" :key="item.subCode" @drop="drop($event,item.TCID,item.Id)" @dragover="allowDrop($event)"> <el-row :gutter="10"> <el-col :span="4"> <div class="_oll_line" v-if="item.LeaderType==0"></div> <div class="_oll_line _o_green" v-if="item.LeaderType>0"></div> <el-tooltip class="item" effect="dark" :content="item.Title" placement="top-start" popper-class="max-w250"> <div class="Lleader" @click="getJourney(0,item.TCID,item.Title)">{{item.Title}}</div> </el-tooltip> </el-col> <el-col :span="2"> <div class="LtimeList"><span class="goType">{{$t('leader.leader_start')}}</span>{{item.StartDate}}</div> </el-col> <el-col :span="2"> <div class="LtimeList"><span class="goType">{{$t('leader.leader_back')}}</span>{{item.EndDate}}</div> </el-col> <el-col :span="2"> <div class="expectDay"><i class="iconfont icon-img-rili"></i>{{$t("visa.v_xcdays")}}<span class="Arrange_Y1">{{item.DayNum}}</span>{{$t('hotel.hotel_day')}} </div> </el-col> <el-col :span="3"> <div class="expectDay">{{$t('leader.leader_planNum')}}<span class="Arrange_Y2">{{item.TotalNumber}}</span>{{$t('hotel.hotel_people')}} </div> </el-col> <el-col :span="2"> <div class="sxDay">{{$t('leader.leader_registraNum')}}<span class="Arrange_Y1">{{item.FinishedNumber}}</span>{{$t('hotel.hotel_people')}} </div> </el-col> <el-col :span="2"> <div class="forSaling">{{item.TCStateStr}}{{$t('hotel.hotel_Inthe')}}</div> </el-col> <el-col :span="5"> <div class="notAssigned" v-if="item.LeaderId===0&&item.GuideId===0"> {{$t('leader.leader_notAssigned')}} </div> <div class="Assied clearfix" v-if="item.LeaderId!=0||item.GuideId!=0"> <div class="AssList clearfix" v-if="item.LeaderId>0"> <div class="litCircle"> <img v-if="!item.LeaderPhoto" src="../../assets/img/default_head_img.jpg"> <img v-else :src="imgBeforeFile+item.LeaderPhoto" :onerror='defaultImg' /> </div> <div>{{item.LeaderName}}/{{$t('leader.leader_Leader')}}</div> </div> <div class="AssList clearfix" v-if="item.GuideId>0"> <div class="litCircle"> <img v-if="!item.GuidePhoto" src="../../assets/img/default_head_img.jpg"> <img v-else :src="imgBeforeFile+item.GuidePhoto" :onerror='defaultImg' /> </div> <div style="white-space:nowrap;">{{item.GuideName}}/{{$t('leader.leader_Guide')}}</div> <div style="white-space:nowrap;margin:5px 0;">{{$t('system.table_phone')}}:{{item.GuideMobilePhone}}</div> <div style="white-space:nowrap;" v-if="item.SpareTel!=null&&item.SpareTel!=''">{{$t('ground.jingwaihao')}}:{{item.SpareTel}} </div> </div> </div> </el-col> <el-col :span="2"> <input type="button" class="hollowFixedBtn" v-if='item.Id>0&&item.GuideId>0' @click="cancelLeader(item.Id)" :value="$t('ground.quxiaodaoyou')"> </el-col> </el-row> </div> </div> <el-pagination background @current-change="handleCurrentChange" :current-page.sync="currentPage" layout="total,prev, pager, next, jumper" :page-size="msg.pageSize" :total="total"> </el-pagination> <el-dialog custom-class='ComTeamPlan_info_box' :title="tripTitle" :visible.sync="outerVisible" center> <commonTeamInfo ref="comTeam"></commonTeamInfo> </el-dialog> </div> </template> <script> import commonTeamInfo from "../commonPage/commonTeamInfo.vue"; export default { data() { return { msg: { pageIndex: 1, pageSize: 4, QStartDateStr: new Date().Format("yyyy-MM-dd"), QEndDateStr: this.setEdate(), TCState: "0", QIsAssign: "0", QTCID: "" }, noTaskLeaderMsg: { pageIndex: 1, pageSize: 20, LeaderName: "", PageCount: 0, QStartDateStr: "", QEndDateStr: "", }, addMsg: { Id: "0", LeaderType: "1", LeaderId: "0", GuideId: "0", TCID: "", IsSure: 0, }, QIsAssignList: [{ value: "1", label: this.$t('leader.leader_noAssigned') }, { value: "2", label: this.$t('leader.leader_hasAssigned') } ], CountryIDStr: "", defaultImg: 'this.src="' + require("../../assets/img/default_head_img.jpg") + '"', imgBeforeFile: this.domainManager().ViittoFileUrl, outerVisible: false, TeamSaleStateList: "", loading: false, total: 0, dataList: "", LeaderList: "", guidArr: "", LeaderArr: "", guidAndLeader: "", currentPage: 1, isShow: false, tripTitle: "", countryList: "", pickerOptions1: { disabledDate: time => { if (this.msg.QEndDateStr == null) { return false; } else { let endTime = new Date(this.msg.QEndDateStr) return endTime.getTime() < time.getTime() } } }, pickerOptions2: { disabledDate: time => { let startTime = new Date(this.msg.QStartDateStr); return startTime.getTime() >= time.getTime(); } }, dragId: "", leaderType: "", rules: { //表单必填验证 LeaderId: [{ required: true, message: this.$t("ground.qingxuanzetuandui") }] } }; }, components: { commonTeamInfo: commonTeamInfo }, methods: { getList() { this.loading = true; this.apipost( "LeaderSchedule_get_GetLeaderSchedulePageList", this.msg, res => { this.loading = false; if (res.data.resultCode == 1) { this.total = res.data.data.count; this.dataList = res.data.data.pageData; } else { this.Error(res.data.message); } }, err => {} ); }, LeaderMove(num) { if (num < 0) { if (this.noTaskLeaderMsg.pageIndex != 1) { this.noTaskLeaderMsg.pageIndex = this.noTaskLeaderMsg.pageIndex - 1; this.getNoTaskLeader(); } } else { if ( Number(this.noTaskLeaderMsg.pageIndex) < Number(this.noTaskLeaderMsg.PageCount) ) { this.noTaskLeaderMsg.pageIndex = this.noTaskLeaderMsg.pageIndex + 1; this.getNoTaskLeader(); } } }, getNoTaskLeader() { this.noTaskLeaderMsg.QStartDateStr = this.msg.QStartDateStr; this.noTaskLeaderMsg.QEndDateStr = this.msg.QEndDateStr; this.apipost( "LeaderSchedule_get_GetNoTaskLeaderList", this.noTaskLeaderMsg, res => { if (res.data.resultCode == 1) { this.LeaderList = res.data.data.pageData; this.noTaskLeaderMsg.PageCount = res.data.data.pageCount; } else { this.Error(res.data.message); } }, err => {} ); }, handleCurrentChange(val) { this.msg.pageIndex = val; this.getList(); }, resetPageIndex() { this.msg.pageIndex = 1; this.currentPage = 1; }, setEdate() { //默认查询三个月时间 return this.addMoth(new Date().Format("yyyy-MM-dd"), 1); }, addMoth(d, m) { let ds = d.split("-"), _d = ds[2] - 0; let nextM = new Date(ds[0], ds[1] - 1 + m + 1, 0); let max = nextM.getDate(); d = new Date(ds[0], ds[1] - 1 + m, _d > max ? max : _d); return d .toLocaleDateString() .match(/\d+/g) .join("-"); }, GetTeamSaleStateList() { //获取销售状态列表 this.apipost( "travel_get_GetTeamSaleStateList", {}, res => { this.TeamSaleStateList = res.data.data; }, err => {} ); }, resetForm(formName) { this.$refs[formName].resetFields(); }, getJourney(id,TCID, title) { //根据ID 获取行程内容 var that = this; this.tripTitle = title; this.$nextTick(() => { that.$refs.comTeam.GetTrip(id,TCID); }); that.outerVisible = true; }, //获取国家 getCountryList() { let msg = {}; this.apipost( "dict_post_Destination_GetCountry", msg, res => { this.countryList = res.data.data; }, err => {} ); }, allowDrop(e) { e.preventDefault(); }, drag(e, leaderId, leaderType) { this.dragId = leaderId; this.leaderType = leaderType; }, drop(e, TCID, Id) { this.addMsg.GuideId = this.dragId; this.addMsg.LeaderType = this.leaderType; if (this.addMsg.LeaderType === 2) { this.addMsg.LeaderId = this.dragId; } if (this.addMsg.GuideId == "") { this.addMsg.GuideId = "0"; } this.addMsg.TCID = TCID; this.addMsg.Id = Id; var that = this; this.apipost( "LeaderSchedule_post_Set", this.addMsg, res => { if (res.data.resultCode == 1) { this.getList(); this.getNoTaskLeader(); this.Success(this.$t("ground.shezhichenggong")); this.isShow = false; } else { that.Confirm(that.$t('ground.sheizhichongtu'), function () { that.addMsg.IsSure = 1; that.apipost( "LeaderSchedule_post_Set", that.addMsg, res => { if (res.data.resultCode == 1) { that.getList(); that.getNoTaskLeader(); that.Success(that.$t("ground.shezhichenggong")); that.isShow = false; } }, err => {} ); }); } }, err => {} ); }, //取消领队安排 cancelLeader(ID) { var that = this; this.Confirm(this.$t('ground.querenquxiao'), function () { let msg = { ID: ID }; that.apipost("LeaderSchedule_Post_Remove", msg, res => { if (res.data.resultCode == 1) { that.Success(that.$t('ground.quxiaochenggong')); that.getList(); } else { that.Error(res.data.message); } }); }); } }, mounted() { this.msg.QTCID = this.$route.query.id; if (this.msg.QTCID != undefined) { this.msg.QStartDateStr = ''; this.msg.QEndDateStr = ''; } this.getCountryList(); this.GetTeamSaleStateList(); this.getList(); } }; </script>