<style> .guidScheduleMg .el-input--prefix .el-input__inner { padding-left: 30px; } .guidScheduleMg .query-box ul .el-input { width: 150px; } .guidScheduleMg .guidScheduleMg_list { padding: 20px 0; } .guidScheduleMg .guidScheduleMg_list>li { float: left; height: 180px; width: 300px; margin: 0 15px; margin-bottom: 20px; overflow: hidden; background: rgba(255, 255, 255, 1); -webkit-box-shadow: 0px 0px 20px rgba(191, 191, 191, 1); box-shadow: 0px 0px 20px rgba(191, 191, 191, 1); } .guidScheduleMg .guidScheduleMg_list>li>div { height: 180px; position: relative; border-radius: 4px; overflow: hidden; } .guidScheduleMg .guidScheduleMg_list>li .hl_img { width: 100%; height: 100%; filter: blur(10px); position: absolute; } .guidScheduleMg .hl_top { color: #ffffff; } .guidScheduleMg .hl_tit { width: 230px; font-size: 14px; position: absolute; left: 10px; top: 10px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; text-decoration: underline; cursor: pointer; } .guidScheduleMg .hl_radius { width: 80px; height: 80px; background-color: #ffffff; border: solid 4px rgba(193, 193, 193, 0.46); line-height: 75px; font-size: 16px; border-radius: 50%; position: absolute; left: 50%; top: 50%; transform: translate(-50%, -50%); color: #e95252; text-align: center; font-size: 16px; } .guidScheduleMg .hl_row { width: 80%; height: 30px; background: rgba(23, 21, 26, 0.2); position: absolute; bottom: 0; left: 0; display: flex; font-size: 12px; align-items: center; justify-content: space-between; padding: 0 10%; } .guidScheduleMg .hl_row>li { list-style: disc; } .guidScheduleMg .guidScheduleMg_info { padding: 0 65px; } .guidScheduleMg .guidScheduleMg_info .hl_info { color: #333333; } .guidScheduleMg .guidScheduleMg_info .hl_info span { color: #666666; } .guidScheduleMg .hl_flight { padding-top: 20px; } .guidScheduleMg .hl_flight li { display: flex; align-items: center; } .guidScheduleMg ._go { display: inline-block; height: 20px; width: 20px; background-color: #ff7862; color: white; font-size: 14px; text-align: center; line-height: 20px; border-radius: 4px; margin-right: 10px; } .guidScheduleMg ._textB14 { color: #333333; font-size: 14px; } .guidScheduleMg ._timeCity { margin: 15px 49px; } .guidScheduleMg ._time { color: #666666; font-size: 18px; font-weight: 700; } .guidScheduleMg ._city { color: #ff7862; font-size: 14px; text-align: center; } .guidScheduleMg ._line { display: flex; align-items: center; } .guidScheduleMg ._line span { display: inline-block; width: 50px; height: 2px; background-color: #ff7862; } .guidScheduleMg ._line span._lr { width: 8px; height: 8px; border-radius: 50%; border: solid 2px #ff7862; background-color: white; } .guidScheduleMg ._flight_num, ._flight_name { color: #999999; font-size: 14px; font-weight: 700; margin-left: 15px; } .guidScheduleMg ._flight_name { font-weight: lighter; } .guidScheduleMg ._margintop30 { margin-top: 30px; } .guidScheduleMg ._details { margin-left: 20px; padding-top: 20px; } .guidScheduleMg ._details>li { border-left: 1px solid #e9e9e9; position: relative; padding-bottom: 15px; padding-left: 40px; padding-top: 15px; } .guidScheduleMg ._d_radius { width: 40px; height: 40px; border-radius: 50%; display: inline-block; position: absolute; left: -20px; top: 0px; background-color: #e95252; text-align: center; line-height: 40px; font-size: 18px; color: white; font-weight: 700; } .guidScheduleMg ._Itinerary { color: #333333; font-size: 18px; display: flex; align-items: center; } .guidScheduleMg ._Itinerary .iconfont { color: #666666; } .guidScheduleMg ._d_city, ._d_time { display: inline-block; padding: 0 20px; } .guidScheduleMg ._d_time { padding: 0 10px 0 0; } .guidScheduleMg ._d_info { color: #666666; font-size: 14px; line-height: 22px; padding-top: 16px; } .guidScheduleMg ._food_hotel { padding-top: 25px; } .guidScheduleMg ._food_hotel ._food, ._hotel { float: left; width: 50%; } .guidScheduleMg ._food_hotel .iconfont::before { font-size: 18px; color: #07a767; } .guidScheduleMg ._food_hotel ._hotel .iconfont::before { color: #2595ee; } .guidScheduleMg ._fh_tit { font-size: 16px; } .guidScheduleMg ._fist { padding-bottom: 10px; } .guidScheduleMg ._meidonfxi { text-align: center; padding: 25px 0; } .guidScheduleMg ._meidonfxi .iconfont { display: block; font-size: 50px; color: #d6d6d6; } .guidScheduleMg ._meidonfxi p { color: #999999; font-size: 14px; } .guidScheduleMg .el-dialog__header .el-dialog__title { display: -webkit-box; -webkit-line-clamp: 1; -webkit-box-orient: vertical; overflow: hidden; text-overflow: ellipsis; max-width: 80%; margin: 0 auto; } .guidScheduleMg .TypeOne { color: #47bf8c; } .guidScheduleMg .TypeTwo { color: #e95252; } .guidScheduleMg .typeThree { color: #666666; } .guidScheduleMg .leaderName { position: relative; top: -10px; left: 5px; } .guidScheduleMg .headerImg { width: 34px; height: 34px; border-radius: 50%; display: inline-block; } .guidScheduleMg .headerImg img { width: 100%; height: 100%; border-radius: 50%; } .guidScheduleMg .grayLi img { -webkit-filter: grayscale(1) blur(10px) !important; } .guidScheduleMg ._vMG_edit { display: none; position: absolute; bottom: 0; font-family: 'PingFangSc-Fine'; left: 0; border-top: 3px solid #38425d; background-color: #fff; padding: 10px; width: 100%; } .guidScheduleMg ._vMG_edit ._tit { padding-left: 10px; border-left: 3px solid #E95252; font-size: 16px; color: #000000 } .guidScheduleMg ._vMG_edit ._tit span { color: #666666; font-size: 14px } .guidScheduleMg ._edHeight { height: 400px; } .guidScheduleMg .edHeight { display: block !important; height: 170px; } .guidScheduleMg .edHeight form { padding-top: 20px; } .guidScheduleMg ._vMG_edit .el-date-editor.el-input, .guidScheduleMg ._vMG_edit .el-date-editor.el-input__inner { width: 100% !important; } </style> <template> <div class="flexOne guidScheduleMg"> <div class="query-box"> <ul> <li> <span> <em>{{$t('leader.leader_leaderGuid')}}</em> <el-select v-model="msg.LeaderId" filterable :placeholder="$t('admin.admin_phBirthPlace')" class="w210"> <el-option :label="$t('pub.unlimitedSel')" :value="-1"> </el-option> <el-option v-for='item in leaderList' :key="item.ID" :label="item.Name" :value="item.ID"> </el-option> </el-select> </span> </li> <li> <span> <em>{{$t('leader.leader_ScheduleType')}}</em> <el-select v-model="msg.ScheduleType" filterable :placeholder="$t('admin.admin_phBirthPlace')" class="w210"> <el-option :label="$t('system.ph_buxian')" :value='0'></el-option> <el-option :label="$t('leader.leader_Vacation')" value='1'></el-option> <el-option :label="$t('leader.leader_Leader')" value='2'></el-option> <el-option :label="$t('leader.leader_LandG')" value='3'></el-option> <el-option :label="$t('leader.leader_Guide')" value='4'></el-option> </el-select> </span> </li> <li> <span> <em>{{$t('adm.adm_time')}}</em> <el-date-picker v-model="msg.YearMonth" value-format="yyyy-MM" type="month" :placeholder="$t('op.ChoiceMonth')"> </el-date-picker> </span> </li> <li> <input type="button" class="normalBtn" :value="$t('op.Addschedule')" @click="addMsg.LeaderId = msg.LeaderId, addShow = true,text='新增',resetForm('addMsg')" /> <input type="button" class="hollowFixedBtn" :value="$t('pub.searchBtn')" @click="resetPageIndex(),getList()" /> </li> </ul> </div> <div :class="addShow==true?'_edHeight':''"> <table border="0" cellspacing="1" cellpadding="0" class="singeRowTable" v-loading="loading" style="border: 1px solid rgb(230, 230, 230);background: #ccc;width: 100%"> <tr> <th>{{$t('op.LeaderGuildName')}}</th> <th>{{$t('hotel.hotel_StartDate')}}</th> <th>{{$t('hotel.hotel_EndDate')}}</th> <th>{{$t('leader.leader_ScheduleType')}}</th> <th>{{$t('scen.sc_temID')}}</th> <th>{{$t('pub.pubRemark')}}</th> <th>{{$t('admin.admin_czPerson')}}</th> <th>{{$t('admin.admin_operate')}}</th> </tr> <tr v-for="(item, index) in dataList"> <td>{{item.LeaderName}}/{{item.GuideName}} </td> <td>{{item.StartDate}}</td> <td>{{item.EndDate}}</td> <td> <span v-if="item.TypeId===0">{{$t('op.SysCantuan')}}</span> <span v-if="item.TypeId===1">{{$t('leader.leader_Vacation')}}</span> </td> <td><span style="text-decoration: underline;cursor: pointer;color: #3980C8;" @click="goUrl('productQuery',item.TCID)">{{item.TCID}}</span></td> <td>{{item.Remarks}}</td> <td>{{item.OperationName}}</td> <td> <el-tooltip class="item" effect="dark" :content="$t('pub.updateMsg')" placement="top-start"> <el-button type="primary" class="iconfont icon-bianji-smal" circle @click="editLeader(item)"></el-button> </el-tooltip> <el-tooltip class="item" effect="dark" :content="$t('system.table_delete')" placement="top-start"> <el-button type="danger" class="iconfont icon-img_delete_small" circle @click="removeLeader(item)"> </el-button> </el-tooltip> </td> </tr> </table> </div> <div class="_vMG_edit" :class="addShow==true?'edHeight':''"> <el-row> <el-col :span="20"> <p class="_tit">{{text}}{{$t('op.DQZL')}}</p> </el-col> <el-col :span="4" class="_add_saveBtn"> <button type="button" class="normalBtn" @click="loading ? '' : submitForm('addMsg')">{{$t('pub.saveBtn')}}</button> <button class="hollowFixedBtn" type="button" @click="resetForm('addMsg'),addShow=false">{{$t('pub.cancelBtn')}}</button> </el-col> </el-row> <el-form class=" clearfix" :model="addMsg" ref="addMsg" :rules="rules" label-width="100px"> <el-row> <el-col :span="4"> <el-form-item :label="$t('system.query_airName')" prop="LeaderId"> <el-select v-model="addMsg.LeaderId" filterable :placeholder="$t('admin.admin_phBirthPlace')"> <el-option :label="$t('pub.unlimitedSel')" :value="0"> </el-option> <el-option v-for='item in leaderList' :key="item.ID" :label="item.Name" :value="item.ID"> </el-option> </el-select> </el-form-item> </el-col> <el-col :span="4"> <el-form-item :label="$t('system.table_begTime')" prop="sDate"> <el-date-picker v-model="addMsg.StartDate" type="date" :placeholder="$t('pub.pleaseSel')" value-format="yyyy-MM-dd"> </el-date-picker> </el-form-item> </el-col> <el-col :span="4"> <el-form-item :label="$t('salesModule.EndTime')" prop="eDate"> <el-date-picker v-model="addMsg.EndDate" type="date" :placeholder="$t('pub.pleaseSel')" value-format="yyyy-MM-dd"> </el-date-picker> </el-form-item> </el-col> <el-col :span="12"> <el-form-item :label="$t('pub.pubRemark')" prop="eDate"> <el-input type="textarea" v-model="addMsg.Remarks"></el-input> </el-form-item> </el-col> </el-row> </el-form> </div> <div class="noData" v-show="noData"> {{$t('system.content_noData')}} </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: 10, LeaderId: -1, ScheduleType: 0, YearMonth: "", TCID: 0, }, addMsg: { LeaderId: 0, StartDate: '', EndDate: '', Remarks: '', }, LeaderName: "", EmPhoto: "", TripList: "", dataList: "", total: 0, currentPage: 1, loading: false, noData: false, outerVisible: false, addShow: false, tripTitle: "", leaderList: [], text: '', rules: { //表单必填验证 LeaderId: [{ required: true, message: '请填写领队名称', trigger: 'blur' }], StartDate: [{ type: 'date', required: true, message: '请选择开始时间', trigger: 'change' }], EndDate: [{ type: 'date', required: true, message: '请选择结束时间', trigger: 'change' }], }, }; }, created() { let date = new Date(); let year = date.getFullYear(); let month = date.getMonth() < 10 ? ('0' + (date.getMonth() + 1)) : date.getMonth() + 1; this.msg.YearMonth = year + '-' + month; }, components: { commonTeamInfo: commonTeamInfo }, methods: { goUrl: function (path, id) { // 页面跳转 this.$router.push({ path: path, query: { TCIDList: id, blank: 'y', isShow: false } }) }, removeLeader: function (obj) { // 删除安排 if (obj.ScheduleType === 1) { this.$confirm('是否删除“' + obj.LeaderName + '”的休假安排?', '提示', { confirmButtonText: '确定', cancelButtonText: '取消', type: 'warning' }).then(() => { this.apipost('LeaderSchedule_post_RemoveHoliday', { Id: obj.Id }, res => { if (res.data.resultCode === 1) { this.$message.success(res.data.message); this.getList(); } else { this.$message.error(res.data.message); } }, null) }).catch(() => { this.$message({ type: 'info', message: '已取消删除' }); }); } else { this.$message.error('系统参团安排,请联系合作专线人员,凭团号,在报名清单处协助处理!') } }, editLeader: function (obj) { // 修改 if (obj.ScheduleType === 1) { this.text = '修改'; this.addMsg = JSON.parse(JSON.stringify(obj)); this.addShow = true; } else { this.$message.error('系统参团安排,请联系合作专线人员,凭团号,在报名清单处协助处理!') } }, submitForm: function (addMsg) { //提交创建、修改表单 let that = this; that.$refs[addMsg].validate((valid) => { if (valid) { that.addDC() } else { return false; } }); }, resetForm: function (formName) { //弹出框取消 初始化谈框内表单 this.$refs[formName].resetFields(); this.addMsg = { LeaderId: 0, StartDate: '', EndDate: '', Remarks: '', } }, addDC: function () { // 保存数据 this.loading = true; this.apipost('LeaderSchedule_post_SetHolidaySchedule', this.addMsg, res => { if (res.data.resultCode === 1) { this.$message.success(res.data.message); this.getList(); this.addShow = false; } else { this.$message.error(res.data.message); } this.loading = false; }, null) }, getLeaderList: function () { // 获取领队下拉列表 this.apipost('leader_post_GetList', { Type: 0 }, res => { if (res.data.resultCode === 1) { this.leaderList = res.data.data; this.getList(); } else { this.$message.error(res.data.message); } }, null) }, getList: function () { // 获取数据列表 this.loading = true; //获取列表数据 this.apipost( "LeaderSchedule_post_GetLeaderGuideSchedulePageList", this.msg, res => { this.loading = false; if (res.data.resultCode == 1) { this.LeaderName = res.data.data.pageData.LeaderName; this.EmPhoto = res.data.data.pageData.EmPhoto; this.total = res.data.data.count; this.dataList = res.data.data.pageData; this.noData = !this.total > 0; } else { this.Error(res.data.message); } }, err => {} ); }, resetPageIndex: function () { //查询初始化页码 this.msg.pageIndex = 1; this.currentPage = 1; }, handleCurrentChange: function (val) { //翻页功能按钮 this.msg.pageIndex = val; this.getList(); } }, mounted() { if (this.$route.query.TCID) { this.msg.TCID = this.$route.query.TCID; } this.getLeaderList(); } }; </script>