<style> .lineManagement .query_box { font-size: 12px; padding: 29px 0; padding-right: 30px; display: flex; justify-content: space-between; } .lineManagement .el-switch.is-checked .el-switch__core { border-color: #4bca81; background-color: #4bca81; } .lineManagement .addCompany { width: 440px; max-height: 600px; } .lineManagement .addCompany .el-dialog__body { height: 486px; overflow: auto; } .lineManagement .query_box div label { display: inline-block; min-width: 80px; text-align: right; font-style: normal; margin: 0 20px 0 0; } input::-webkit-outer-spin-button, input::-webkit-inner-spin-button { -webkit-appearance: none; } input[type="number"] { -moz-appearance: textfield; } .lineManagement .lineType { width: 51px; height: 24px; display: inline-block; text-align: center; line-height: 24px; border-radius: 4px; background-color: #ff9c00; color: #ffffff; } .lineManagement .LMTable tr { height: 70px; text-align: center !important; background-color: #fff; } .comPanyNum { font-size: 14px; color: #333333; display: inline-block; font-weight: bold; cursor: pointer; margin-bottom: 5px; text-decoration: underline; } .comPanyNum:hover { color: #e95252; } .Linezhicai { color: #47bf8c; } .partCompany { padding: 0; box-shadow: 0px 1px 3px 0px #dedede; } .partCompany .popper__arrow::after { border-bottom-color: #ededed !important; } .partCompany table { padding: 10px 0 0 20px; background-color: #ededed; border-collapse: collapse; border: 1px solid #d2d2d2; font-size: 12px; } .partCompany table th { background-color: #ededed; padding: 5px; } .partCompany table td { background-color: #ffffff; padding: 9px 15px; color: #333333; border: 1px solid #d2d2d2; } .partCompany table td._d_name { background-color: #ededed; } .partCompany table ._color_666 { color: #666666; } .partCompany table tr._color_666 th { padding: 9px 15px; } .lineManagement .LineName { display: inline-block; width: 120px; margin: 0 0 0 20px; text-align: left; } .lineManagement .LM_Back { background-color: #f2f2f2; } .redType { color: #e95252; } .lineManagement .tbDiv { overflow-y: auto; } .departListDiv { width: 100%; height: 200px; overflow-y: auto; } .lineManagement .tbDiv::-webkit-scrollbar { width: 4px; height: 8px; } .lineManagement .tbDiv::-webkit-scrollbar-track { -webkit-box-shadow: inset 0 0 2px rgba(0, 0, 0, 0.2); border-radius: 4px; background: #ededed; } .lineManagement .tbDiv::-webkit-scrollbar-thumb { border-radius: 4px; -webkit-box-shadow: inset 0 0 2px rgba(0, 0, 0, 0.2); background: #c9c9c9; } .departListDiv::-webkit-scrollbar { width: 4px; height: 8px; } .departListDiv::-webkit-scrollbar-track { -webkit-box-shadow: inset 0 0 2px rgba(0, 0, 0, 0.2); border-radius: 4px; background: #ededed; } .departListDiv::-webkit-scrollbar-thumb { border-radius: 4px; -webkit-box-shadow: inset 0 0 2px rgba(0, 0, 0, 0.2); background: #c9c9c9; } .LMTable { width: 100%; font-size: 12px; } .lineManagement .LMTable tr th { border-bottom: 1px solid #d1d1d1; } .lineManagement .tbDiv .LMTable td { border-bottom: 1px solid #d1d1d1; border-right: 1px solid #d1d1d1; position: relative; text-align: center; padding: 5px; min-width: 250px; } .lineManagement .tbDiv table { padding-right: 80px; margin-top: 10px; border-top: 1px solid #d1d1d1; border-left: 1px solid #d1d1d1; border-right: 1px solid #d1d1d1; } .upFentan { text-decoration: underline; cursor: pointer; position: absolute; right: 13px; top: 32%; } .subCountryList { width: 150px; text-align: left; display: inline-block; text-overflow: ellipsis; overflow: hidden; white-space: nowrap; position: relative; top: 3px; } .lineManagement ._addLineTB tr { height: 40px !important; } .saveCompanyBtn { margin-top: 20px; } .setItem { cursor: pointer; text-decoration: underline; position: absolute; right: 13px; top: 32%; } .lineManagement ._LMComdiv { float: left; width: 32%; text-align: left; } .lineManagement .LineRank { width: 24px; height: 24px; background-color: #2aaef2; border-radius: 50%; text-align: center; line-height: 24px; color: #fff; margin: 0 auto 5px; } .lineManagement .joinDepart { display: inline-block; margin-right: 50px; text-align: left; float: left; width: 180px; } .lineManagement .LM_Rank { text-align: center; } .lineManagement ._LowDisMoney { width: 200px; float: left; text-align: left; margin: 0 0 0 20px; } .lineManagement .LM_Btcontent { position: absolute; right: 100px; top: 10px; text-align: right; margin-left: 20px; } .lineManagement .LM_ul li { margin: 20px 0 0px 0px; transition: linear all 0.5s; background-color: #fff; font-size: 12px; border: 1px solid #dddddd; overflow: hidden; position: relative; padding: 10px 0; } .lineManagement .el-button-group .el-button { padding: 5px; } .lineManagement .LM_ul>li:hover { box-shadow: 0px 0px 20px rgba(191, 191, 191, 1); transition: all linear 0.5s; } .lineManagement .TFimgList { float: left; width: 170px; height: 100px; border-radius: 4px; position: relative; margin: 0 10px 10px 0; overflow: hidden; } .lineManagement .TFimgList img { width: 100%; height: 100%; } .lineManagement .TFIMGzhe { width: 100%; height: 100%; background: rgba(0, 0, 0, 0.4); position: absolute; top: 0; text-align: center; line-height: 115px; border-radius: 4px; display: none; } .lineManagement .TFimgList:hover .TFIMGzhe { display: block; } </style> <template> <div class="flexOne lineManagement"> <div class="query-box"> <ul> <li> <span> <em>{{$t('system.query_lineName')}}</em> <el-input v-model="msg.lineName" :placeholder="$t('system.ph_in')" @keyup.native.enter="getList" class="w210"></el-input> </span> </li> <li> <span> <em>{{$t('Operation.Op_ShortName')}}</em> <el-input v-model="msg.lineShortName" :placeholder="$t('system.ph_in')" @keyup.native.enter="getList" class="w210"></el-input> </span> </li> <li> <span> <em>{{$t('system.ph_xianluCode')}}</em> <el-input v-model="msg.lineCode" :placeholder="$t('system.ph_in')" @keyup.native.enter="getList" class="w210"></el-input> </span> </li> <li> <input type="button" class="hollowFixedBtn" :value="$t('pub.searchBtn')" @click="resetPageIndex(),getList()" /> <input type="button" class="normalBtn" :value="$t('pub.addBtn')" @click="clearInfo(),isShowDIv=true,isShowTwo=false,divTitle='新增线路'" /> </li> </ul> </div> <div class="commonContent" v-loading="loading"> <ul class="LM_ul"> <li v-for="(item,index) in DataList" :key="item.subCode"> <el-row :gutter="10" style="display: flex;align-items: center;"> <el-col :span="3"> <span class="LineName">{{item.lineName}}</span> </el-col> <el-col :span="2"> <span class="lineType">{{item.lineCode}}</span> </el-col> <el-col :span="2"> <div class="_LowDisMoney"> <div>{{$t('Operation.Op_sname')}}</div> {{item.lineShortName}} </div> </el-col> <el-col :span="2"> <div class="_LowDisMoney"> <div>{{item.lowDeposit}}</div> <div>{{$t('Operation.Op_depositAmount')}}</div> </div> </el-col> <el-col :span="2"> <div class="_LowDisMoney"> <div v-if="item.lineDirection==1">{{$t('visa.v_chujing')}}</div> <div v-else-if="item.lineDirection==2">{{$t('Operation.Op_leaveCountry')}}</div> <div v-else-if="item.lineDirection==3">{{$t('op.Onedaytour')}}</div> <div>{{$t('Operation.Op_LineDirection')}}</div> </div> </el-col> <el-col :span="3"> <div class="LineRank">{{item.discountDayNum}}</div> <div class="LM_Rank">{{$t('Operation.Op_EarlybirdDay')}}</div> </el-col> <el-col :span="3"> <div class="LineRank">{{item.rank}}</div> <div class="LM_Rank">{{$t('system.table_rank')}}</div> </el-col> <el-col :span="5"> <div class="_LMComdiv"> <el-popover popper-class="partCompany" width="300" trigger="click"> <div class="departListDiv"> <table width="100%" border="0" cellspacing="0" cellpadding="0"> <tr class="_color_666"> <th>{{$t('system.table_company')}}</th> <th>{{$t('Operation.Op_LossAllocation')}}</th> </tr> <tr v-for="childItem in departCompany" :key="childItem.subCode"> <td width="60%">{{childItem.companyName}}</td> <td width="40%">{{childItem.lossAllocation}}%</td> </tr> </table> </div> <span slot="reference" class="comPanyNum" @click="getLossCompany(item.lineID,1)">{{item.branchCount}}</span> </el-popover> <div class="particCompany">{{$t('Operation.Op_partInCompany')}}</div> </div> <div class="_LMComdiv"> <el-popover popper-class="partCompany" width="350" trigger="click"> <div class="departListDiv"> <table width="100%" border="0" cellspacing="0" cellpadding="0"> <tr class="_color_666"> <th width="40%">{{$t('system.table_company')}}</th> <th width="60%">{{$t('admin.admin_Department')}}</th> </tr> <tr v-for="childItem in departDepartment" :key="childItem.subCode"> <td>{{childItem.companyName}}</td> <td>{{childItem.joinDepartment | getJoinDepName}}</td> </tr> </table> </div> <span slot="reference" class="comPanyNum" @click="getLossCompany(item.lineID,2)">{{$t('pub.clickToView')}}</span> </el-popover> <div class="particCompany">{{$t('Operation.Op_belongDepartment')}}</div> </div> </el-col> <el-col :span="2"> <div class="Linezhicai" :class="{'redType':item.isDirect=='0'}"> {{item.isDirect=="0"?$t('op.feizhicai'):$t('op.zhicai')}}</div> <div class="Linezhicai" :class="{'redType':item.isShow=='0'}"> {{item.isShow=="0"?$t('MarketingActi.notShow'):$t('system.table_isShows')}}</div> <div class="Linezhicai" :class="{'redType':item.is_PacketGroup=='0'}"> {{item.is_PacketGroup =="0"?$t('op.notxiaobaotuan'):$t('Operation.Op_AllowSmallGroup')}}</div> </el-col> <el-col :span="2"> <div> <el-button-group size='mini'> <el-tooltip class="item" effect="dark" :content="$t('system.table_edit')" placement="top-start"> <el-button type="primary" icon="el-icon-edit" @click="isShowDIv = true,divTitle='修改线路',updateData(index)"></el-button> </el-tooltip> <el-tooltip class="item" effect="dark" :content="$t('system.btn_CtrlSet')" placement="top-start"> <el-button type="success" icon="el-icon-setting" @click="getBranchList(item.lineID)"></el-button> </el-tooltip> <el-tooltip class="item" effect="dark" :content="$t('system.table_delete')" placement="top-start"> <el-button type="danger" icon="el-icon-delete" @click="deletelist(item.lineID)"></el-button> </el-tooltip> </el-button-group> </div> </el-col> </el-row> </li> </ul> <div class="noData" v-show="noData"> {{$t('system.content_noData')}} </div> </div> <div class="combottomDiv" v-if="isShowDIv"> <div class="combottomTitle">{{divTitle}}</div> <div class=""> <el-form :model="addMsg" :rules="rules" ref="addMsg" @submit.native.prevent label-width="130px"> <el-col :span="5"> <el-form-item :label="$t('system.query_lineName')" prop="lineName"> <el-input v-model="addMsg.lineName"></el-input> </el-form-item> </el-col> <el-col :span="5"> <el-form-item :label="$t('Operation.Op_ShortName')" prop="lineShortName"> <el-input v-model="addMsg.lineShortName"></el-input> </el-form-item> </el-col> <el-col :span="5"> <el-form-item :label="$t('system.table_lineCode')" prop="lineCode"> <el-input v-model="addMsg.lineCode"></el-input> </el-form-item> </el-col> <el-col :span="5"> <el-form-item :label="$t('Operation.Op_CombinedContry')" style="display:none;"> <el-select v-model="lineCountryArr" class='multiple_input' multiple :placeholder="$t('pub.pleaseSel')"> <el-option v-for="item in countryList" :key="item.ID" :label="item.Name" :value="item.ID"> </el-option> </el-select> </el-form-item> </el-col> <el-col :span="5"> <el-form-item :label="$t('Operation.Op_lowDeposit')" prop="lowDeposit"> <el-input v-model="addMsg.lowDeposit" maxlength="10" @keyup.native="checkPrice(addMsg,'lowDeposit')"> </el-input> </el-form-item> </el-col> <el-col :span="5"> <el-form-item :label="$t('Operation.Op_preferentialDays')"> <el-input v-model="addMsg.discountDayNum" maxlength="3" @keyup.native="checkInteger(addMsg,'discountDayNum')"></el-input> </el-form-item> </el-col> <el-col :span="5"> <el-form-item :label="$t('system.table_rank')"> <el-input v-model="addMsg.Rank" @keyup.native="checkInteger(addMsg,'Rank')"></el-input> </el-form-item> </el-col> <el-col :span="2"> <el-form-item :label="$t('Operation.Op_isDirect')"> <el-switch v-model="addMsg.isDirect" :active-value="isDefaultChecked" :inactive-value="isDefaultUnchecked"></el-switch> </el-form-item> </el-col> <el-col :span="3"> <el-form-item :label="$t('system.table_isShow')"> <el-switch v-model="addMsg.isShow" :active-value="isDefaultChecked" :inactive-value="isDefaultUnchecked"> </el-switch> </el-form-item> </el-col> <el-col :span="3"> <el-form-item :label="$t('Operation.Op_isShared')"> <el-switch v-model="addMsg.IsShare" :active-value="isDefaultChecked" :inactive-value="isDefaultUnchecked"> </el-switch> </el-form-item> </el-col> <el-col :span="2"> <el-form-item :label="$t('Operation.Op_AllowSmallGroup')"> <el-switch v-model="addMsg.Is_PacketGroup" :active-value="isDefaultChecked" :inactive-value="isDefaultUnchecked"></el-switch> </el-form-item> </el-col> <el-col :span="2"> <el-form-item label="结团审批"> <el-switch v-model="addMsg.travelEndAudit" :active-value="isDefaultChecked" :inactive-value="isDefaultUnchecked"></el-switch> </el-form-item> </el-col> <el-col :span="5" v-if='addMsg.travelEndAudit==1'> <el-form-item label="审批人员" prop="auditEmpId"> <el-select v-model="addMsg.auditEmpId" filterable placeholder="审批人员" @change="$forceUpdate()"> <el-option v-for="item in searchList" :label="item.name" :value="item.empId" :key="item.empId"> </el-option> </el-select> </el-form-item> </el-col> <el-col :span="5"> <el-form-item :label="$t('Operation.Op_LineDirection')" prop="LineDirection"> <el-select v-model="addMsg.LineDirection" :placeholder="$t('pub.pleaseSel')"> <el-option :label="$t('Operation.Op_theEntry')" :value='1'></el-option> <el-option :label="$t('Operation.Op_leaveCountry')" :value='2'></el-option> <el-option :label="$t('op.Onedaytour')" :value='3'></el-option> </el-select> </el-form-item> </el-col> <el-col :span="5"> <el-form-item :label="$t('op.rentoufy')"> <el-input v-model="addMsg.RebateMoney" maxlength="10" @keyup.native="checkPrice(addMsg,'RebateMoney')"> </el-input> </el-form-item> </el-col> <el-col :span="5"> <el-form-item label="行程主色"> <el-color-picker v-model="addMsg.LineTripColor"></el-color-picker> </el-form-item> </el-col> <el-col :span="5"> <el-form-item :label="$t('op.b2bxianlubjt')"> <div class="TFimgList"> <img v-if="!addMsg.BackgroundImage" src="../../assets/img/bg_c3@3x.png"> <img v-else :src='addMsg.BackgroundImage'> <div class="TFIMGzhe"> <div class="TFreupload"> <el-upload :file-list="fileList" :http-request="uploadTest" :multiple="true" :limit="2" :on-change="handleChange1" accept="image/jpeg, image/gif, image/png, image/bmp" :show-file-list="false" action=""> <i class="iconfont icon-Edit"></i> </el-upload> </div> </div> </div> </el-form-item> </el-col> <el-col :span="5"> <el-form-item :label="$t('op.b2bxianlucbct')"> <div class="TFimgList" style="width:90px"> <img v-if="!addMsg.BroadsideImage" src="../../assets/img/bg_c3@3x.png"> <img v-else :src='addMsg.BroadsideImage'> <div class="TFIMGzhe"> <div class="TFreupload"> <el-upload :file-list="fileList2" :http-request="uploadTest2" :multiple="true" :limit="2" :on-change="handleChange2" accept="image/jpeg, image/gif, image/png, image/bmp" :show-file-list="false" action=""> <i class="iconfont icon-Edit"></i> </el-upload> </div> </div> </div> </el-form-item> </el-col> <el-col :span="5"> <el-form-item :label="$t('op.apptubiao')"> <div class="TFimgList" style="width:50px;height:50px"> <img v-if="!addMsg.AppLineIcon" src="../../assets/img/bg_c3@3x.png"> <img v-else :src='addMsg.AppLineIcon'> <div class="TFIMGzhe"> <div class="TFreupload"> <el-upload :file-list="fileList3" :http-request="uploadTest3" :multiple="true" :limit="2" :on-change="handleChange3" accept="image/jpeg, image/gif, image/png, image/bmp" :show-file-list="false" action=""> <i class="iconfont icon-Edit"></i> </el-upload> </div> </div> </div> </el-form-item> </el-col> <el-col :span="5"> <el-form-item label="行程顶部图片"> <div class="TFimgList"> <img v-if="!addMsg.TripFeatureTopBg" src="../../assets/img/bg_c3@3x.png"> <img v-else :src='addMsg.TripFeatureTopBg'> <div class="TFIMGzhe"> <div class="TFreupload"> <el-upload :http-request="uploadTripFeatureTopBg" :multiple="false" accept="image/jpeg, image/gif, image/png, image/bmp" :show-file-list="false" action=""> <i class="iconfont icon-Edit"></i> </el-upload> </div> </div> </div> </el-form-item> </el-col> <el-col :span="5"> <el-form-item label="行程底部图片"> <div class="TFimgList"> <img v-if="!addMsg.TripFeatureBottomBg" src="../../assets/img/bg_c3@3x.png"> <img v-else :src='addMsg.TripFeatureBottomBg'> <div class="TFIMGzhe"> <div class="TFreupload"> <el-upload :http-request="uploadTripFeatureBottomBg" :multiple="false" accept="image/jpeg, image/gif, image/png, image/bmp" :show-file-list="false" action=""> <i class="iconfont icon-Edit"></i> </el-upload> </div> </div> </div> </el-form-item> </el-col> <div class="LM_Btcontent"> <input type="button" class="normalBtn" @click="submitForm('addMsg')" :value="$t('pub.saveBtn')" /> <input type="button" class="hollowFixedBtn" @click="isShowDIv=false" :value="$t('pub.cancelBtn')" /> </div> </el-form> </div> </div> <div class="managebtmDiv tbDiv" v-if="isShowTwo"> <table class="LMTable _addLineTB" border="0" cellspacing="0" cellpadding="0"> <tr> <th>{{$t('Operation.Op_Project')}}/{{$t('system.table_company')}}</th> <th v-for="item in getCompanyList" :key="item.subCode">{{item.companyName}}</th> </tr> <tr> <td class="LM_Back">{{$t('Operation.Op_LossAllocation')}}</td> <td v-for="item in getCompanyList" :key="item.subCode"> <span v-if="!item.inputShow">{{item.lossAllocation}}</span> <input type="text" v-model="item.lossAllocation" @blur="setInput(item)" onkeyup="value=value.replace(/[^\d]/g,'')" class="w80" v-if="item.inputShow" /> <span v-if="item.lossAllocation!=null">%</span> <span class="upFentan" v-if="item.lossAllocation>=0&&!item.showSet&&item.selectDepIdArr.length>0" @click="displayInput(item)">{{$t('pub.updateMsg')}}</span> <div v-if="item.showSet&&item.selectDepIdArr.length>0"> <span>{{$t('Operation.Op_notInvoled')}}</span> <span @click="clickedSet(item)" class="setItem">{{$t('leader.leader_Set')}}</span> </div> </td> </tr> <tr> <td v-on:click='closeDepOption()' class="LM_Back">{{$t('Operation.Op_ManageDepartment')}}</td> <td v-on:click='closeDepOption(item)' v-for="item in getCompanyList" :key="item.subCode"> <span class="joinDepart" v-if="!item.seletShow">{{item.joinDepartment | getJoinDepName}}</span> <el-select v-model="item.selectDepIdArr" multiple class='w160 multiple_input' filterable @change="getSelected(item)" :placeholder="$t('pub.pleaseSel')" v-if="item.seletShow"> <el-option v-for="item in item.departMentList" :key="item.DepartmentID" :label="item.DepartmentName" :value="item.DepartmentID"> </el-option> </el-select> <span class="upFentan" v-if="item.selectDepIdArr.length>0" @click.stop="getSelectList(item,item.rB_Branch_id)">{{$t('pub.updateMsg')}}</span> <div v-if="item.showSelectSet"> <span class="joinDepart">{{$t('Operation.Op_notInvoled')}}</span> <span @click.stop="clickedSelectSet(item)" class="setItem">{{$t('leader.leader_Set')}}</span> </div> </td> </tr> <tr> <td class="LM_Back" @click="closeOpTion()">{{$t('op.fuzeop')}}</td> <td v-for="item in getCompanyList" @click="closeOpTion()" :key="item.subCode"> <span class="joinDepart" v-if="!item.seletOpShow">{{item.joinEmployee | getJoinEmpName}}</span> <el-select v-model="item.selectOpIdArr" multiple class='w160 multiple_input' filterable @change="getOPSelected(item)" :placeholder="$t('pub.pleaseSel')" v-if="item.seletOpShow"> <el-option v-for="item in item.employeeList" :key="item.EmployeeId" :label="item.EmName" :value="item.EmployeeId"> </el-option> </el-select> <span class="upFentan" v-if="item.selectOpIdArr.length>0" @click.stop="getOPSelectList(item,item.rB_Branch_id)">{{$t('pub.updateMsg')}}</span> <div v-if="item.showOpSet"> <span class="joinDepart">{{$t('Operation.Op_notInvoled')}}</span> <span @click.stop="clickedOpSet(item)" class="setItem">{{$t('leader.leader_Set')}}</span> </div> </td> </tr> </table> <input type="button" class="normalBtn" @click="isShowTwo=false" :value="$t('pub.cancelBtn')" /> <input type="button" class="normalBtn saveCompanyBtn" @click="saveCompany()" :value="$t('pub.saveBtn')" /> </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> </div> </template> <script> import getters from '../../store/getters'; export default { data() { return { fileList3: [], fileList: [], fileList2: [], msg: { pageIndex: 1, pageSize: 6, lineName: "", lineCode: "", lineShortName: "" }, addMsg: { lineId: 0, lineName: "", lineCode: "", isDirect: "", isShow: "", lineCountryList: [], Rank: 0, lowDeposit: 0.0, discountDayNum: 0, lineShortName: "", IsShare: 0, Is_PacketGroup: 0, LineDirection: 2, BackgroundImage: "", BroadsideImage: '', AppLineIcon: "", RebateMoney: 0, //人头返佣 TripFeatureTopBg: "", //行程特色顶部图片 TripFeatureBottomBg: "", //行程特色顶部图片 travelEndAudit: 0, //结团审批 auditEmpId: '', //审批人 LineTripColor: "", //行程主色 }, departCompany: "", departDepartment: "", countryList: "", lineCountryArr: [], isDefaultUnchecked: 0, isDefaultChecked: 1, isShowDIv: false, divTitle: "", isShowTwo: false, getCompanyList: "", BranchCompanyList: "", upLineId: "", DataList: [], total: 0, currentPage: 1, noData: false, loading: true, rules: { //表单必填验证 lineName: [{ required: true, message: this.$t('system.ph_lineName'), trigger: "blur" }], lineCode: [{ required: true, message: this.$t('op.qingtxxldm'), trigger: "blur" }, { pattern: /^[a-zA-Z]/, message: this.$t('op.qingsrzqdzm') } ], lowDeposit: [{ required: true, message: this.$t('op.qingtxzdje'), trigger: "blur" }], lineShortName: [{ required: true, message: this.$t('op.qingtxxljc'), trigger: "change" }], LineDirection: [{ required: true, message: this.$t('op.qingxzxlfx'), trigger: "change" }], auditEmpId: [{ required: true, message: '审批人员不能为空', trigger: "blur" }], }, searchList: [] }; }, methods: { handleChange3(file, fileList) { this.fileList3 = fileList.slice(-1); }, handleChange1(file, fileList) { this.fileList = fileList.slice(-1); }, handleChange2(file, fileList) { this.fileList2 = fileList.slice(-1); }, //行程特色顶部图片 uploadTripFeatureTopBg(file) { let newArr = []; newArr.push(file.file); let path = "/Upload/DMC/Icon/"; this.UploadSelfFileT(path, newArr, x => { let url = this.domainManager().ViittoFileUrl + x.data.FilePath; this.addMsg.TripFeatureTopBg = url; }); }, uploadTripFeatureBottomBg(file) { let newArr = []; newArr.push(file.file); let path = "/Upload/DMC/Icon/"; this.UploadSelfFileT(path, newArr, x => { let url = this.domainManager().ViittoFileUrl + x.data.FilePath; this.addMsg.TripFeatureBottomBg = url; }); }, uploadTest3(file) { let newArr = []; newArr.push(file.file); let path = "/Upload/DMC/Icon/"; this.UploadSelfFileT(path, newArr, x => { let url = this.domainManager().ViittoFileUrl + x.data.FilePath; this.addMsg.AppLineIcon = url; }); }, uploadTest2(file) { let newArr = []; newArr.push(file.file); let path = "/Upload/DMC/Icon/"; this.UploadSelfFileT(path, newArr, x => { let url = this.domainManager().ViittoFileUrl + x.data.FilePath; this.addMsg.BroadsideImage = url; }); }, uploadTest(file) { let newArr = []; newArr.push(file.file); let path = "/Upload/DMC/Icon/"; this.UploadSelfFileT(path, newArr, x => { let url = this.domainManager().ViittoFileUrl + x.data.FilePath; this.addMsg.BackgroundImage = url; }); }, getList() { //获取现有线路列表 this.loading = true; this.apipost( "line_post_GetPageList", this.msg, res => { this.loading = false; if (res.data.resultCode == 1) { let data = res.data.data.pageData; this.total = res.data.data.count; this.noData = !this.total > 0; this.DataList = data; } else { this.Error(res.data.message); } }, err => {} ); }, getLossCompany(lineId, type) { let msg = { lineId: lineId }; this.departCompany = ""; this.departDepartment = ""; this.apipost( "line_get_join_branch_list", msg, res => { if (res.data.resultCode == 1) { if (type == 1) { this.departCompany = res.data.data; } else if (type == 2) { this.departDepartment = res.data.data; } } }, err => {} ); }, getCountry() { //获取国家 let msg = {}; this.apipost( "dict_post_Destination_GetCountry", msg, res => { this.countryList = res.data.data; }, err => {} ); }, addLine() { //添加线路 this.addMsg.lineCountryList = []; this.lineCountryArr.forEach(countryID => { var countryObj = { countryId: countryID }; this.addMsg.lineCountryList.push(countryObj); }); if (this.addMsg.travelEndAudit == 1) { //结团审核等于1 的时候 审批人员不能为空 if (this.addMsg.auditEmpId == '') { this.Error('请选择结团审批人'); return; } } else { this.addMsg.auditEmpId = 0 } this.apipost( "line_post_Set", this.addMsg, res => { if (res.data.resultCode == 1) { this.Success("保存成功!"); this.getList(); this.resetForm("addMsg"); this.lineCountryArr = []; this.isShowDIv = false; } else { this.Error(res.data.message); } }, err => {} ); }, updateData(index) { //修改线路信息 this.lineCountryArr = []; var getInfo = this.DataList[index]; this.addMsg.lineName = getInfo.lineName; this.addMsg.lineCode = getInfo.lineCode; this.addMsg.lineShortName = getInfo.lineShortName; getInfo.countryList.forEach(x => { this.lineCountryArr.push(x.countryId); }); this.addMsg.isDirect = getInfo.isDirect; this.addMsg.isShow = getInfo.isShow; this.addMsg.lineId = getInfo.lineID; this.addMsg.Rank = getInfo.rank; this.addMsg.lowDeposit = getInfo.lowDeposit; this.addMsg.discountDayNum = getInfo.discountDayNum; this.addMsg.IsShare = getInfo.isShare; this.addMsg.Is_PacketGroup = getInfo.is_PacketGroup; this.addMsg.LineDirection = getInfo.lineDirection; this.addMsg.BackgroundImage = getInfo.backgroundImage; this.addMsg.BroadsideImage = getInfo.broadsideImage; this.addMsg.AppLineIcon = getInfo.appLineIcon; this.addMsg.RebateMoney = getInfo.rebateMoney; this.addMsg.TripFeatureTopBg = getInfo.tripFeatureTopBg; this.addMsg.TripFeatureBottomBg = getInfo.tripFeatureBottomBg; this.addMsg.travelEndAudit = getInfo.travelEndAudit; this.addMsg.auditEmpId = getInfo.auditEmpId == 0 ? '' : getInfo.auditEmpId; this.addMsg.LineTripColor=getInfo.lineTripColor; }, deletelist(lineID) { var that = this; this.Confirm(that.$t('op.sfshanchucxl'), function () { let msg = { ID: lineID }; that.apipost( "line_post_Remove", msg, res => { if (res.data.resultCode == 1) { that.Success(res.data.message); that.getList(); } }, err => {} ); }); }, //获取分公司分摊和设置 getBranchList(lineId) { this.isShowTwo = true; this.isShowDIv = false; this.upLineId = lineId; let msg = { lineId: lineId }; this.apipost("line_get_all_branch_list", msg, res => { if (res.data.resultCode == 1) { this.getCompanyList = res.data.data; this.getCompanyList.map(x => { x.inputShow = false; x.seletShow = false; x.seletOpShow = false; x.departMentList = ""; x.employeeList = []; x.selectDepIdArr = []; x.selectOpIdArr = []; if (x.lossAllocation == null && x.inputShow == false) { x.showSet = true; } else { x.showSet = false; } if (x.joinDepartment.length == 0 && x.seletShow == false) { x.showSelectSet = true; } else { x.showSelectSet = false; } if (x.joinEmployee.length == 0 && x.seletOpShow == false) { x.showOpSet = true; } else { x.showOpSet = false; } if (x.joinDepartment.length > 0) { x.joinDepartment.forEach(y => { x.selectDepIdArr.push(y.departmentId); }); } if (x.joinEmployee.length > 0) { x.joinEmployee.forEach(y => { x.selectOpIdArr.push(y.employeeId); }); } }); } }); }, getSelectList(item, RB_Branch_Id) { var tempCompanyList = JSON.parse(JSON.stringify(this.getCompanyList)); tempCompanyList.forEach(x => { if (x.rB_Branch_id == item.rB_Branch_id) { x.seletShow = true; let userInfo = this.getLocalStorage(); var RB_Group_id = userInfo.RB_Group_id; let msg = { RB_Branch_Id: RB_Branch_Id, //RB_Branch_Id公司ID RB_Group_Id: RB_Group_id, //RB_Group_Id集团ID Status: -1, ParentId: -1, Tier: 0 }; this.apipost("admin_get_DepartmentGetList", msg, res => { if (res.data.resultCode == 1) { x.departMentList = res.data.data; } }); } }); this.getCompanyList = tempCompanyList; }, getOPSelectList(item, RB_Branch_Id) { var tempCompanyList = JSON.parse(JSON.stringify(this.getCompanyList)); tempCompanyList.forEach(x => { if (x.rB_Branch_id == item.rB_Branch_id) { x.seletOpShow = true; let userInfo = this.getLocalStorage(); var RB_Group_id = userInfo.RB_Group_id; let msg = { GroupId: userInfo.RB_Group_id, BranchId: item.rB_Branch_id, DepartmentId: '-1', PostId: '-1', IsLeave: '0' }; this.apipost("admin_get_EmployeeGetList", msg, res => { if (res.data.resultCode == 1) { x.employeeList = res.data.data; } }); } }); this.getCompanyList = tempCompanyList; }, getSelected(item) { if (item.selectDepIdArr.length > 0) { let joinDepartment = []; item.selectDepIdArr.forEach(x => { joinDepartment.push({ departmentId: x, departmentName: "", lossAllocation: null }); }); joinDepartment.forEach(x => { item.departMentList.forEach(y => { if (x.departmentId === y.DepartmentID) { x.departmentName = y.DepartmentName; } }); }); item.joinDepartment = joinDepartment; } else { item.joinDepartment = []; item.lossAllocation = 0; item.showSelectSet = true; item.seletShow = false; } }, getOPSelected(item) { if (item.selectOpIdArr.length > 0) { let ckedJoinEmployee = []; item.selectOpIdArr.forEach(x => { ckedJoinEmployee.push({ employeeId: x, employeeName: "", }); }); ckedJoinEmployee.forEach(x => { item.employeeList.forEach(y => { if (x.employeeId === y.EmployeeId) { x.employeeName = y.EmName; } }); }); item.joinEmployee = ckedJoinEmployee; } else { item.joinEmployee = []; item.showOpSet = true; item.seletOpShow = false; } }, setInput(item) { item.inputShow = false; if (item.lossAllocation == null) { item.showSet = true; } }, clickedSet(item) { var tempCompanyList = JSON.parse(JSON.stringify(this.getCompanyList)); tempCompanyList.forEach(x => { if (x.rB_Branch_id == item.rB_Branch_id) { (x.inputShow = true), (x.showSet = false); } }); this.getCompanyList = tempCompanyList; }, clickedSelectSet(item) { var tempCompanyList = JSON.parse(JSON.stringify(this.getCompanyList)); tempCompanyList.forEach(x => { if (x.rB_Branch_id == item.rB_Branch_id) { let userInfo = this.getLocalStorage(); var RB_Group_id = userInfo.RB_Group_id; let msg = { RB_Branch_Id: item.rB_Branch_id, //RB_Branch_Id公司ID RB_Group_Id: RB_Group_id, //RB_Group_Id集团ID Status: -1, ParentId: -1, Tier: 0 }; this.apipost("admin_get_DepartmentGetList", msg, res => { if (res.data.resultCode == 1) { x.departMentList = res.data.data; } }); (x.seletShow = true), (x.showSelectSet = false); } }); this.getCompanyList = tempCompanyList; }, //点击设置OP开始设置 clickedOpSet(item) { var tempCompanyList = JSON.parse(JSON.stringify(this.getCompanyList)); tempCompanyList.forEach(x => { if (x.rB_Branch_id == item.rB_Branch_id) { let userInfo = this.getLocalStorage(); var RB_Group_id = userInfo.RB_Group_id; let msg = { GroupId: userInfo.RB_Group_id, BranchId: item.rB_Branch_id, DepartmentId: '-1', PostId: '-1', IsLeave: '0' }; this.apipost("admin_get_EmployeeGetList", msg, res => { if (res.data.resultCode == 1) { x.employeeList = res.data.data; } }); (x.seletOpShow = true), (x.showOpSet = false); } }); this.getCompanyList = tempCompanyList; }, clearInfo() { this.addMsg = { lineId: 0, lineName: "", lineCode: "", isDirect: "", isShow: "", IsShare: 0, lineCountryList: [], Is_PacketGroup: 0, LineDirection: 2, }; this.lineCountryArr = []; }, displayInput(item) { var tempCompanyList = JSON.parse(JSON.stringify(this.getCompanyList)); tempCompanyList.forEach(x => { if (x.rB_Branch_id == item.rB_Branch_id) { x.inputShow = true; } }); this.getCompanyList = tempCompanyList; }, saveCompany() { var lineBranchList = []; var lineBranchOPList = []; this.getCompanyList.forEach(x => { if (x.joinDepartment.length > 0) { x.joinDepartment.forEach(y => { var lineBranch = { rB_Branch_id: x.rB_Branch_id, departmentId: y.departmentId, lossAllocation: x.lossAllocation }; lineBranchList.push(lineBranch); }); } if (x.joinEmployee.length > 0) { x.joinEmployee.forEach(y => { var opBranch = { rB_Branch_id: x.rB_Branch_id, EmployeeId: y.employeeId }; lineBranchOPList.push(opBranch); }); } }); let msg = { lineId: this.upLineId, lineBranchList: lineBranchList, lineBranchOPList: lineBranchOPList }; this.apipost( "line_Set_join_branch", msg, res => { if (res.data.resultCode == 1) { this.Success(res.data.message); this.isShowTwo = false; } }, err => {} ); }, submitForm(addMsg) { //提交创建、修改表单 this.$refs[addMsg].validate(valid => { if (valid) { this.addLine(); } else { return false; } }); }, handleCurrentChange(val) { //翻页功能按钮 this.msg.pageIndex = val; this.getList(); }, resetPageIndex() { //查询初始化页码 this.msg.pageIndex = 1; this.currentPage = 1; }, closeChangeMachie(done) { done(); this.resetForm("addMsg"); }, resetForm(formName) { this.$refs[formName].resetFields(); }, getCompanyJoinDepName(depList) { let returnStr = ""; if (depList.length > 0) { let depName = []; depList.forEach(x => { depName.push(x.departmentName); }); returnStr = depName.join(","); } return returnStr; }, closeDepOption(item) { this.getCompanyList.forEach(x => { x.seletShow = false; if (x.selectDepIdArr.length == 0) { x.showSelectSet = true; } }); }, closeOpTion() { this.getCompanyList.forEach(x => { x.seletOpShow = false; if (x.selectOpIdArr.length == 0) { x.showOpSet = true; } }); }, getEmployee() { //所有人员下拉 let employeeMsg = { RB_Group_id: "0", RB_Branch_id: "-1", departmentId: "0", IsLeave: "0", } this.apipost( "app_get_company_employee", employeeMsg, res => { if (res.data.resultCode == 1) { this.searchList = res.data.data; } }, err => {} ); }, }, mounted() { this.getList(); this.getCountry(); this.getEmployee() }, filters: { getJoinDepName: function (depList) { let returnStr = ""; if (depList.length > 0) { let depName = []; depList.forEach(x => { depName.push(x.departmentName); }); returnStr = depName.join(","); } return returnStr; }, getJoinEmpName: function (depList) { let returnStr = ""; if (depList.length > 0) { let depName = []; depList.forEach(x => { depName.push(x.employeeName); }); returnStr = depName.join(","); } return returnStr; }, } }; </script>