<style> .page_MyCustomer ._mc_addbox { height: 52px; width: 100%; margin-top: 20px; } .page_MyCustomer ._mc_addbox > li { float: left; width: 116px; font-size: 14px; height: 52px; color: #666; text-align: center; line-height: 52px; background: #e9e9e9; cursor: pointer; } .page_MyCustomer ._mc_addbox > li.active { background: #fff; color: #333; } .page_MyCustomer ._mc_addbox .divActive { margin: -3px auto; width: 26px; height: 3px; background: #e95252; } .page_MyCustomer ._mc_edit { overflow: auto; display: none; position: fixed; z-index: 50; bottom: 0; left: 50px; border-top: 3px solid #38425d; background-color: #f9f9f9; padding: 10px; width: calc(100% - 50px); min-width: 1146px; } .page_MyCustomer .edHeight { display: block; height: 191px; } .page_MyCustomer ._mc_list { overflow-x: auto; background: #fff; padding-top: 20px; padding-left: 15px; } .page_MyCustomer ._scrollbar::-webkit-scrollbar { width: 4px; height: 8px; } .page_MyCustomer ._scrollbar::-webkit-scrollbar-thumb { border-radius: 4px; -webkit-box-shadow: inset 0 0 2px rgba(0, 0, 0, 0.2); background: #c9c9c9; } .page_MyCustomer ._scrollbar::-webkit-scrollbar-track { -webkit-box-shadow: inset 0 0 2px rgba(0, 0, 0, 0.2); border-radius: 4px; background: #ededed; } .page_MyCustomer ._mc_edit ._tit { padding-left: 10px; border-left: 3px solid #e95252; font-size: 16px; font-family: "PingFangSc-Fine"; color: #000000; } .page_MyCustomer ._mc_edit ._info_box ul._form li { float: left; } .page_MyCustomer ._check_list { padding-left: 120px; margin-bottom: 20px; } .page_MyCustomer ._check_box .el-form-item { margin-bottom: 0; } .page_MyCustomer ._info_box .el-form-item__label { font-size: 12px; color: #666; } ._remark textarea { resize: none; width: 646px; height: 100px; } .page_MyCustomer .avatar { width: 148px; height: 148px; display: block; } .page_MyCustomerSearch { width: 100%; min-height: auto; overflow: hidden; padding: 0 0 20px 0; } .page_MyCustomerSearch li { float: left; font-size: 12px; color: #666; margin: 20px 0 0px 0; } .page_MyCustomerSearch li > span { display: inline-block; } .page_MyCustomerSearch li span > em { display: inline-block; min-width: 60px; text-align: right; font-style: normal; margin: 0 12px 0 0; } .page_MyCustomerSearch li:last-child { float: right; } .VisaProductTable { width: 100%; font-size: 14px; color: #333; } .VisaProductTable tr th { background: #e6e6e6; height: 30px; font-size: 12px; text-align: left; text-indent: 25px; } .VisaProductTable tr { background: #fff; text-align: left; } .VisaProductTable tr td { height: 60px; padding-left: 25px; border: 1px solid #cccccc; font-size: 14px; color: #333; } .VisaProductTable tr td > img { width: 24px; height: 24px; border-radius: 50%; float: left; margin-right: 5px; } .VisaProductTable tr td .tuanqian { vertical-align: middle; font-weight: 400; display: table-cell; text-align: center; width: 44px; font-size: 12px; height: 19px; color: #ffffff; background: #2aaef2; } .VisaProductTable tr td .geqian { vertical-align: middle; font-weight: 400; display: table-cell; text-align: center; width: 44px; font-size: 12px; height: 19px; color: #ffffff; background: #ff9000; } .page_MyCustomer ._edHeight { height: 340px; } .dateClass { width: 171px !important; } .surplusNum { color: #e95252 !important; } .peopleNum { height: 15px; font-size: 16px; font-weight: 400; color: rgba(51, 51, 51, 1); line-height: 24px; } .orderNum { cursor: pointer; text-decoration: underline; width: 18px; height: 16px; font-size: 16px; font-weight: 400; color: rgba(51, 51, 51, 1); line-height: 24px; } .VisaProductTable tr td .createName { vertical-align: middle; display: table-cell; text-align: left; padding-left: 3px; height: 21px; } .groupTourOrderIcon button { width: 28px; height: 28px; border-radius: 4px; } .groupTourOrderIcon .el-button--primary { padding: 5px; margin: 0; font-size: 14px !important; } </style> <template> <div class="page_MyCustomer"> <div class="query-box" style="border:none"> <ul> <li> <span> <em>出团公司</em> <el-select class="w210" v-model="msg.BranchId" filterable :placeholder="$t('pub.pleaseSel')" > <el-option v-for="item in companyList" :label="item.BName" :value="item.Id" :key="item.Id" ></el-option> </el-select> </span> </li> <li> <span> <em>产品ID</em> <el-input class="w210" v-model="msg.ProductID" placeholder="请输入"></el-input> </span> </li> <li> <span> <em>产品名称</em> <el-input class="w210" v-model="msg.ProductName" placeholder="请输入"></el-input> </span> </li> <li> <span> <em>创建人</em> <el-select v-model="msg.EmId"> <el-option label="不限" value="-1" key="-1"></el-option> <el-option v-for="item in EmployeeList" :label="item.EmName" :value="item.EmployeeId" :key="item.EmployeeId" ></el-option> </el-select> </span> </li> <li> <span> <em>状态</em> </span> <el-select v-model="msg.VisaStatus"> <el-option label="不限" value="-1" key="-1"></el-option> <el-option label="上架" value="1" key="1"></el-option> <el-option label="下架" value="2" key="2"></el-option> </el-select> </li> <li> <span> <em>价格有效日期</em> <el-date-picker v-model="msg.StartTime" class="w135" value-format="yyyy-MM-dd" type="date" ></el-date-picker>- <el-date-picker v-model="msg.EndTime" class="w135" value-format="yyyy-MM-dd" type="date" ></el-date-picker> </span> </li> <li> <button class="hollowFixedBtn" @click="getList()">查询</button> <!-- <button class="normalBtn" v-show="!buttonshow" @click="cancelEdit(),addShow=true" v-if="msg.isFinacial==1">添加</button> --> <button class="normalBtn" @click="AddVisaProduct" v-if="msg.isFinacial==1">添加</button> </li> </ul> </div> <table class="VisaProductTable" border="0" cellspacing="0" cellpadding="0" v-loading="loading"> <tr> <th width="10%">产品名称</th> <th width="5%">签证类型</th> <th width="12%">价格有效日期</th> <th width="8%">成本价</th> <th width="7%">同业价</th> <th width="8%">直客价</th> <th width="6%">状态</th> <th width="6%">订单数</th> <!-- <th width="12%">总人数(剩余人数)</th> --> <th width="8%">创建者</th> <th width="10%">广告图</th> <th width="10%">申请表</th> <th width="14%">操作</th> </tr> <tr v-for="item in dataList"> <td>{{item.Name}}</td> <td> <span v-if="item.VisaType==1" class="geqian">个签</span> <span v-else class="tuanqian">团签</span> </td> <td> <p> 结束日期:<span class="fbold">{{item.SendVisaDate}}</span> </p> <p> 开始日期:<span class="fbold">{{item.EffectiveStartDate}}</span> </p> </td> <td> <span class="totalPrice fbold" style="color: #47BF8C;">¥{{moneyFormat(item.CostPrice)}}</span> </td> <td> <span class="totalPrice fbold" style="color: #f90;">¥{{moneyFormat(item.VisaPrice)}}</span> </td> <td> <span class="totalPrice fbold" style="color: #f90;">¥{{moneyFormat(item.VisaB2CPrice)}}</span> </td> <td> <i v-if="item.VisaStatus==1" class="iconfont icon-shangjia" style="color:#4BCA81;"></i> <i v-else class="iconfont icon-xiajia" style="color:#4BCA81;"></i> {{item.VisaStatus==1?"上架":"下架"}} </td> <td> <span class="orderNum" @click="goUrl(item)">{{item.OrderNum}}</span> </td> <!-- <td> <span class="peopleNum">{{item.PeopleNum}}(<span class="surplusNum">{{item.SurplusNum}}</span>)</span> </td>--> <td> <img v-if="!item.CreatePhoto" src="../../assets/img/litheader.png"> <img v-if="item.CreatePhoto" :onerror="defaultImg" :src="item.CreatePhoto"> <span class="createName">{{item.CreateName}}</span> </td> <td> <p v-for="(item2, index2) in item.AdvertisingFileList" :key="index2"> <span style="cursor:pointer;text-decoration: underline;" @click="downloadFile(item2)" >{{item2.Name}}</span> <i class="iconfont icon-Close" style="font-size:12px;cursor:pointer;" @click="delUnpload(item.Id,item2,'广告图',1)" ></i> </p> <el-upload :http-request="uploadImg" :data="item" ref="upload" :multiple="false" :show-file-list="false" action > <span style="color:#00C6FF;cursor:pointer;" @click="saveitem(item.Id,1)">上传广告图</span> </el-upload> </td> <td> <p v-for="(item2, index2) in item.ApplyForCounterfoilList" :key="index2+100"> <span style="cursor:pointer;text-decoration: underline;" @click="downloadFile(item2)" >{{item2.Name}}</span> <i class="iconfont icon-Close" style="font-size:12px;cursor:pointer;" @click="delUnpload(item.Id,item2,'申请表',2)" ></i> </p> <el-upload :http-request="uploadImg" :data="item" ref="upload" :multiple="false" :show-file-list="false" action > <span style="color:#00C6FF;cursor:pointer;" @click="saveitem(item.Id,2)">上传申请表</span> </el-upload> </td> <td class="groupTourOrderIcon"> <el-button-group> <!-- <el-tooltip class="item" effect="dark" content="修改" placement="top-start" v-if="item.SendVisaStatus==1&&msg.isFinacial==1" > <el-button v-show="!buttonshow" type="primary" style="background:#409EFF; border-color:#409EFF" icon="iconfont icon-img_bianji_small" @click="getDetail(item)" ></el-button> </el-tooltip> --> <div style="display:inline-block"> <el-tooltip class="item" effect="dark" content="修改" placement="top-start" v-if="item.SendVisaStatus==1&&msg.isFinacial==1" > <el-button type="primary" style="background:#409EFF; border-color:#409EFF" icon="iconfont icon-img_bianji_small" @click="EditVisaProduct(item)" ></el-button> </el-tooltip> <el-tooltip class="item" effect="dark" content="查看详情" placement="top-start" v-else > <el-button style="background:#E95252; border-color:#E95252;color:#fff" icon="iconfont icon-chakan" @click="ChaKan(item)" ></el-button> </el-tooltip> </div> <el-tooltip effect="dark" content="查看" placement="top-start" v-if="msg.isFinacial==1"> <el-button type="primary" style="background:#25C1C3; border-color:#25C1C3" @click="goUrl(item)" icon="iconfont icon-img_cz" ></el-button> </el-tooltip> <el-tooltip effect="dark" content="签证列表" placement="top-start" v-if="item.VisaManagementId>0" > <el-button type="primary" @click="goUrlVisaList(item)" style="background:#47BF8C; border-color:#47BF8C" icon="iconfont icon-biaoge" ></el-button> </el-tooltip> <el-tooltip v-if="item.OrderNum>0&&msg.isFinacial==1" effect="dark" content="结算" placement="top-start" > <el-button type="primary" @click="goUrlJS(item)" style="background:#5EBB64; border-color:#5EBB64" icon="iconfont icon-qian" ></el-button> </el-tooltip> <el-tooltip v-if="item.VisaStatus==1&&msg.isFinacial==1" effect="dark" content="下架" placement="top-start" > <el-button type="primary" style="background:#F0A748; border-color:#F0A748" icon="iconfont icon-xiajia1" @click="updateVisaStatus(item)" ></el-button> </el-tooltip> <el-tooltip v-if="item.VisaStatus==2&&item.SendVisaStatus==1&&msg.isFinacial==1" effect="dark" content="上架" placement="top-start" > <el-button type="primary" style="background:#F0A748; border-color:#F0A748" icon="iconfont icon-shangjia1" @click="updateVisaStatus(item)" ></el-button> </el-tooltip> </el-button-group> </td> </tr> <tr v-show="dataList.length==0"> <td v-show="dataList.length==0" colspan="10" align="center">暂无数据</td> </tr> </table> <el-pagination background @current-change="handleCurrentChange" :current-page.sync="currentPage" layout="total,prev, pager, next, jumper" :page-size="this.msg.pageSize" :total="total" ></el-pagination> <div class="_mc_edit _scrollbar" :class="addShow==true?'edHeight':''"> <p class="_tit"> 签证产品 <span class="fr"> <button class="hollowFixedBtn" type="button" @click="cancelEdit()">{{$t('pub.cancelBtn')}}</button> <button type="button" class="normalBtn" @click="saveVisa()">{{$t('pub.saveBtn')}}</button> </span> </p> <el-form class="_info_box clearfix" :model="addMsg" :rules="rules" ref="addMsg" label-width="120px" > <el-row :gutter="20"> <el-col :span="5"> <el-form-item label="产品名称" prop="Name"> <el-input v-model="addMsg.Name" placeholder="请输入" class="dateClass"></el-input> </el-form-item> </el-col> <el-col :span="5"> <el-form-item label="类型" prop="VisaType"> <el-select v-model="addMsg.VisaType" @change="getVisaManagementList"> <!-- <el-option label='不限' value='-1' key='-1'></el-option> --> <el-option label="个签" value="1" key="1"></el-option> <el-option label="团签" value="2" key="2"></el-option> </el-select> </el-form-item> </el-col> <!-- <el-col :span="4"> <el-form-item label="人数" prop="PeopleNum"> <el-input @keyup.native="checkInteger(addMsg,'PeopleNum')" v-model="addMsg.PeopleNum" placeholder="请输入" maxlength="20"></el-input> </el-form-item> </el-col>--> <el-col :span="5"> <el-form-item label="成本价" prop="CostPrice"> <el-input v-model="addMsg.CostPrice" placeholder="请输入" maxlength="20"></el-input> </el-form-item> </el-col> <el-col :span="5"> <el-form-item label="签证国家" prop="VisaManagementId"> <el-select v-model="addMsg.VisaManagementId" class="dateClass"> <el-option v-for="item in VisaManagementList" :label="item.Name" :value="item.Id" :key="item.Id" ></el-option> </el-select> </el-form-item> </el-col> </el-row> <el-row :gutter="20"> <el-col :span="5"> <el-form-item label="同业价" prop="VisaPrice"> <el-input v-model="addMsg.VisaPrice" placeholder="请输入" maxlength="20"></el-input> </el-form-item> </el-col> <el-col :span="5"> <el-form-item label="直客价" prop="VisaB2CPrice"> <el-input v-model="addMsg.VisaB2CPrice" placeholder="请输入" maxlength="20"></el-input> </el-form-item> </el-col> <el-col :span="5"> <el-form-item label="提成金额" prop="CommissionPrice"> <el-input v-model="addMsg.CommissionPrice" placeholder="请输入"></el-input> </el-form-item> </el-col> <el-col :span="5"> <el-form-item label="价格有效日期" prop="SendVisaDate"> <el-date-picker v-model="addMsg.SendVisaDate" class="dateClass" value-format="yyyy-MM-dd" type="date" placeholder="请选择" ></el-date-picker> </el-form-item> </el-col> </el-row> </el-form> </div> </div> </template> <script> export default { data() { return { uploadTCID: 0, defaultImg: 'this.src="' + require("../../assets/img/litheader.png") + '"', companyList: [], msg: { pageIndex: 1, pageSize: 12, ProductName: "", StartTime: "", EndTime: "", EmId: "-1", ProductID: 0, VisaStatus: "-1", isFinacial: 1, BranchId: "-1" }, addMsg: { Id: 0, Name: "", VisaType: "", SendVisaDate: "", VisaPrice: "", PeopleNum: "0", CostPrice: "", CommissionPrice: "", VisaManagementId: "", VisaB2CPrice: "" }, rules: { Name: [{ required: true, message: "请输入产品名称", trigger: "blur" }], customerName: [ { required: true, message: "请输入客户名", trigger: "blur" } ], VisaPrice: [ { required: true, message: "请输入同业价", trigger: "blur" }, { pattern: this.$commonUtils.Regex.el_Isdecimal, message: "请输入同业价" } ], VisaB2CPrice: [ { required: true, message: "请输入直客价", trigger: "blur" }, { pattern: this.$commonUtils.Regex.el_Isdecimal, message: "请输入直客价" } ], CostPrice: [ { required: true, message: "请输入成本价", trigger: "blur" }, { pattern: this.$commonUtils.Regex.el_Isdecimal, message: "请输入成本价" } ], VisaType: [ { required: true, message: "请选择类型", trigger: "change" } ], PeopleNum: [{ required: true, message: "请输入人数", trigger: "blur" }], CommissionPrice: [ { required: true, message: "请输入提成金额", trigger: "blur" }, { pattern: this.$commonUtils.Regex.el_Isdecimal, message: "请输入提成金额" } ], SendVisaDate: [ { required: true, message: "请输入价格有效期", trigger: "blur" } ] }, dataList: [], EmployeeList: [], loading: true, total: 0, addShow: false, currentPage: 1, VisaManagementList: [], // buttonshow:false, Type:0, }; }, created(){ // let locationName = window.location.hostname; // if (locationName.indexOf('viitto') !== -1 || locationName.indexOf('www') !== -1){ // this.buttonshow=true; // } }, methods: { // 只能查看,不能修改 ChaKan(item){ this.$router.push({ name: "ModifyVisaProduct", query: { Id:item.Id, blank: "y", save:false, tab: "配置签证产品" } }); }, // 修改签证产品 EditVisaProduct(item){ this.$router.push({ name: "ModifyVisaProduct", query: { Id:item.Id, blank: "y", tab: "配置签证产品" } }); }, // 添加签证产品 AddVisaProduct(){ this.$router.push({ name: "ModifyVisaProduct", query: { blank: "y", tab: "配置签证产品" } }); }, saveitem(tcid,Type) { this.uploadTCID = tcid; this.Type=Type; }, //上传 uploadImg(file) { let newArr = []; newArr.push(file.file); let path = "/Upload/Temporary/"; this.UploadSelfFileT(path, newArr, x => { this.apipost( "dmc_get_visa_UploadVisaAdvertisingImage", { Path: this.domainManager().ViittoFileUrl + x.data.FilePath, FileName: file.file.name, Status: 1, VId: this.uploadTCID, Type:this.Type, }, res => { if (res.data.resultCode === 1) { this.$message.success("上传成功"); this.getList(); } else { this.$message.error("上传失败"); } } ); }); }, delUnpload: function(tcid, item,str,Type) { this.$confirm( `是否删除该${str}?`, "提示", { confirmButtonText: "确定", cancelButtonText: "取消", type: "warning" }).then(() => { this.apipost( "dmc_get_visa_UploadVisaAdvertisingImage", { Path: item.FullUrl, FileName: item.Name, Status: 2, VId: tcid, Type:Type, }, res => { if (res.data.resultCode === 1) { this.$message.success("删除成功"); this.getList(); } else { this.$message.error("删除失败"); } } ); }); }, downloadFile: function(item) { let reg = /^http(s)?:\/\/(.*?)\//; this.downloadFileRename(item.FullUrl.replace(reg, ""), item.Name); }, getCompanyList() { let userInfo = this.getLocalStorage(); let RB_Group_id = userInfo.RB_Group_id; let msg = { Status: 0, is_show: 0, RB_Group_Id: RB_Group_id }; this.apipost( "admin_get_BranchGetList", msg, res => { if (res.data.resultCode == 1) { this.companyList = [ { Id: "-1", BName: "不限" } ]; res.data.data.forEach(x => { var obj = { Id: "", BName: "" }; obj.Id = x.Id.toString(); obj.BName = x.BName; this.companyList.push(obj); }); } }, err => {} ); }, getVisaManagementList() { // 获取签证管理 this.VisaManagementList = []; this.addMsg.VisaManagementId = ""; this.apipost( "dmc_get_visa_GetVisaManagementList", { Status: -1, BranchId: -1, SignStatus: this.addMsg.VisaType }, res => { if (res.data.resultCode == 1) { this.VisaManagementList = res.data.data; } else { this.$message.error(res.data.message); } }, err => {} ); }, goUrl(obj) { this.$router.push({ name: "VisaProductOrder", query: { id: obj.Id, name: obj.Name, sendDate: obj.SendVisaDate, isShow: 0, EmId: "-1", blank: "y", tab: "详情" } }); }, goUrlVisaList(obj) { this.$router.push({ name: "visaList2", query: { id: obj.Id, blank: "y", tab: "签证列表" } }); }, goUrlJS(obj) { this.$router.push({ name: "saleOrderSettlement", query: { id: obj.Id, branchId: obj.RB_Branch_Id, blank: "y", tab: "结算列表" } }); }, getList() { // 获取列表数据 this.apipost( "dmc_get_visa_GetVisaProductList", this.msg, res => { if (res.data.resultCode == 0) { this.loading = false; this.dataList = []; } else { this.dataList = res.data.data.pageData; this.total = res.data.data.count; this.loading = false; } }, err => {} ); }, getDetail(obj) { this.addMsg.Id = obj.Id; this.apipost( "dmc_get_visa_GetVisaProductInfo", { Pid: obj.Id }, res => { if (res.data.resultCode == 1) { this.addMsg.VisaType = res.data.data.VisaType.toString(); this.getVisaManagementList(); this.addMsg.VisaManagementId = res.data.data.VisaManagementId; this.addMsg.Name = res.data.data.Name; this.addMsg.SendVisaDate = res.data.data.SendVisaDate; if (res.data.data.CostPrice) { this.addMsg.CostPrice = res.data.data.CostPrice.toString(); } else { this.addMsg.CostPrice = ""; } this.addMsg.VisaPrice = res.data.data.VisaPrice.toString(); this.addMsg.VisaB2CPrice = res.data.data.VisaB2CPrice.toString(); // this.addMsg.PeopleNum=res.data.data.PeopleNum.toString() this.addMsg.CommissionPrice = res.data.data.CommissionPrice.toString(); this.addShow = true; } else { } }, err => {} ); }, updateVisaStatus(obj) { this.addMsg.Id = obj.Id; this.apipost( "dmc_post_visa_SetVisaProductStatus", { Pid: obj.Id }, res => { if (res.data.resultCode == 1) { this.addShow = false; this.getList(); this.$message.success(res.data.message); } else { this.$message.error(res.data.message); } }, err => {} ); }, getEmployeeList() { // 获取人 this.apipost( "admin_get_GetEmployeeByUserDepartmentId", {}, res => { if (res.data.resultCode == 1) { this.EmployeeList = res.data.data; } else { this.$message.error(res.data.message); } }, err => {} ); }, saveVisa() { // 保存 this.$refs["addMsg"].validate(valid => { if (valid) { this.addMsg.VisaManagementId == "" ? "0" : this.addMsg.VisaManagementId; this.apipost( "dmc_post_visa_SetVisaProduct", this.addMsg, res => { if (res.data.resultCode == 1) { this.addMsg = { Id: 0, Name: "", VisaType: "", SendVisaDate: "", VisaPrice: "", PeopleNum: "0", CostPrice: "", CommissionPrice: "" }; this.$message.success(res.data.message); this.addShow = false; this.getList(); } else { this.$message.error(res.data.message); } }, err => {} ); } else { return false; } }); }, cancelEdit() { // 取消新增 this.addShow = false; this.addMsg = { Id: 0, Name: "", VisaType: "", SendVisaDate: "", VisaPrice: "", PeopleNum: "0", CostPrice: "", CommissionPrice: "", VisaManagementId: "" }; this.resetForm("addMsg"); }, resetForm(formName) { // 重置表单 this.$refs[formName].resetFields(); }, handleCurrentChange(val) { this.msg.pageIndex = val; this.getList(); } }, mounted() { this.userId = this.getLocalStorage().EmployeeId; this.msg.BranchId = this.getLocalStorage().RB_Branch_id.toString(); this.msg.ProductID = this.$route.query.VisaID; this.msg.isFinacial = this.$route.query.isFinacial != undefined ? this.$route.query.isFinacial : 1; this.getList(); this.getCompanyList(); this.getEmployeeList(); } }; </script>