Commit cd61ae53 authored by 黄奎's avatar 黄奎
parents 9d5f31a0 9cc9880f
...@@ -96,6 +96,91 @@ ...@@ -96,6 +96,91 @@
width: 757px !important; width: 757px !important;
} }
._addUpload_tips {
font-size: 12px;
color: #999999;
}
._addUpload_box {
display: block;
margin-top: 15px
}
._addUpload_box img {
width: 100%;
height: 100%;
}
._addUpload_box>div {
float: left;
width: 138px;
height: 92px;
border: 1px dashed rgba(210, 210, 210, 1);
border-radius: 2px;
cursor: pointer;
margin-bottom: 10px;
padding: 5px;
margin-right: 10px;
position: relative;
}
._addUpload_box>div:hover {
background-color: #f5f5f5;
}
._addFile_name {
padding-left: 15px;
max-width: 450px;
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
}
._addUpload_box .icon-guanbi1 {
font-size: 12px;
color: white;
display: inline-block;
margin-left: 15px;
position: absolute;
right: -6px;
top: -9px;
background-color: #f56c6c;
border-radius: 50%;
height: 20px;
width: 20px;
text-align: center;
line-height: 20px;
}
._addUpload_box .icon-guanbi1:hover {
font-size: 12px;
color: #c94052;
}
._addUpload_box .icon-excel,
._addUpload_box .icon-pdf {
text-align: center;
font-size: 38px;
color: green;
line-height: 75px;
}
._show_img_box {
position: fixed;
background: rgba(0, 0, 0, .6);
left: 0;
top: 0;
width: 100%;
height: 100%;
z-index: 999;
text-align: center;
}
.AC_content .el-upload-dragger {
width: 126px !important;
height: 80px !important;
}
</style> </style>
<template> <template>
...@@ -140,6 +225,42 @@ ...@@ -140,6 +225,42 @@
</li> </li>
</ul> </ul>
</div> </div>
<div v-if="userInfo.SimpleEasy==1">
<p>{{$t('fnc.scfujian')}}<span class="_addUpload_tips">{{$t('tips.wjdxbncgsz')}}</span></p>
<div class="_addUpload_box clearfix">
<template v-for="(file,fIndex) in saveMsg">
<div v-if="file.FileType==3">
<div style="width:100%;height:100%;overflow: hidden;">
<img :src="file.Url?file.Url:file.Content" @click="showUpLoadFile(file)">
</div>
<span class="iconfont icon-guanbi1" @click="deleteUploadFile(fIndex)"></span>
</div>
<div v-if="file.FileType==1">
<div class="iconfont "
:class="file.Content.substring(file.Content.lastIndexOf('.')+1,file.Content.length).toUpperCase()=='PDF'? 'icon-pdf' : 'icon-excel'"
@click="showUpLoadFile(file)">
</div>
<span class="iconfont icon-guanbi1" @click="deleteUploadFile(fIndex)"></span>
</div>
<div v-if="file.FileType==2">
<div class="iconfont icon-excel" @click="showUpLoadFile(file)">
</div>
<span class="iconfont icon-guanbi1" @click="deleteUploadFile(fIndex)"></span>
</div>
</template>
<div class="_pic_upload">
<el-upload drag :http-request="uploadFileBtn" :multiple="true" :show-file-list="false" action="">
<i class="el-icon-plus avatar-uploader-icon"></i>
<div class="el-upload__text">{{$t('active.ld_djscwj')}}</div>
</el-upload>
</div>
</div>
</div>
<el-input type="textarea" style="margin-top:10px;" :rows="5" v-model="EditMsg.Description" :placeholder="$t('objFill.v101.Complaints.jutiwtmstsr')"></el-input> <el-input type="textarea" style="margin-top:10px;" :rows="5" v-model="EditMsg.Description" :placeholder="$t('objFill.v101.Complaints.jutiwtmstsr')"></el-input>
<p style="margin: 15px 0">{{$t('objFill.v101.Complaints.zhidinclr')}}</p> <p style="margin: 15px 0">{{$t('objFill.v101.Complaints.zhidinclr')}}</p>
<el-select class="w150" v-model="EditMsg.NextPersion" filterable :placeholder="$t('pub.pleaseSel')"> <el-select class="w150" v-model="EditMsg.NextPersion" filterable :placeholder="$t('pub.pleaseSel')">
...@@ -152,12 +273,24 @@ ...@@ -152,12 +273,24 @@
<!--<input type="button" class="normalBtn" value="暂存" @click="SaveData(1)"/>--> <!--<input type="button" class="normalBtn" value="暂存" @click="SaveData(1)"/>-->
<input type="button" class="normalBtn" :value="$t('pub.cancelBtn')"/> <input type="button" class="normalBtn" :value="$t('pub.cancelBtn')"/>
</p> </p>
<div v-if='picIsShow' class="_show_img_box" @click="picIsShow=false,picObj=[]">
<div
style="position: absolute; width: 800px; height: 600px; left: 50%; top: 50%; margin-left: -400px; margin-top: -300px;">
<el-carousel :initial-index=initialIndex height="600px" :interval="5000" trigger="click">
<el-carousel-item style="height: 600px;overflow:auto;" v-for="(item,index) in picObj" :key="index">
<img :src="item" style="" />
</el-carousel-item>
</el-carousel>
</div>
</div>
</div> </div>
</template> </template>
<script> <script>
export default { export default {
data() { data() {
return { return {
userInfo:{},
//主题内容 //主题内容
themeList: [], themeList: [],
//严重程度 //严重程度
...@@ -168,6 +301,10 @@ ...@@ -168,6 +301,10 @@
severityCked: [], severityCked: [],
//员工 //员工
EmployeeList: [], EmployeeList: [],
saveMsg:[],
picObj: [],
picIsShow:false,
initialIndex: 0,
//添加修改投诉 //添加修改投诉
EditMsg: { EditMsg: {
ID: 0,//编号 ID: 0,//编号
...@@ -181,6 +318,7 @@ ...@@ -181,6 +318,7 @@
NextPersion: '',//下一个审核人 NextPersion: '',//下一个审核人
LineID: 0,// 线路id LineID: 0,// 线路id
LineteamId: 0,//系列id LineteamId: 0,//系列id
FileDataList:[],
}, },
//查询参数 //查询参数
QMsg: { QMsg: {
...@@ -195,6 +333,64 @@ ...@@ -195,6 +333,64 @@
mounted() { mounted() {
}, },
methods: { methods: {
showUpLoadFile(i) { // 预览上传文件
if (i.FileType == 3) {
this.picObj.push(i.Url);
this.picIsShow = true;
} else {
if (i.Content.substring(i.Content.lastIndexOf('.') + 1, i.Content.length).toUpperCase() == 'PDF') {
this.previewPDF(i.Url)
} else {
window.open("https://view.officeapps.live.com/op/view.aspx?src=" + i.Url)
}
}
},
deleteUploadFile(i) { // 删除上传文件
this.saveMsg.splice(i, 1);
},
uploadFileBtn(file) { //上传
if (file.file.size > 1024 * 1024 * 10) {
this.$message.warning(this.$t('tips.wjdxbncgsz'))
return
}
// 1 文档 2 数据 3 图片
let typeArr = [{
stringArr: 'GIF|JPG|JPEG|PNG|BMP',
type: 3
},
{
stringArr: 'DOCX|DOC|XLSX|XLS|PPT|PPTX|PDF',
type: 1
},
]
let ft = file.file.name.substring(file.file.name.lastIndexOf('.') + 1, file.file.name.length).toUpperCase();
let fileTypeNumber = 2;
let typeOk = false;
typeArr.forEach(x => {
if (x.stringArr.indexOf(ft) != '-1') {
fileTypeNumber = x.type;
typeOk = true;
}
})
if (!typeOk) return this.$message.error(this.$t('tips.qscWEfile'));
let newArr = [];
newArr.push(file.file)
let path = "/Upload/Temporary/"
this.$message.info(this.$t('tips.shangchuanzhong'))
this.UploadSelfFileT(path, newArr, x => {
let fileSize = file.file.size < 1024 ? file.file.size : (file.file.size / 1024).toFixed(0);
this.saveMsg.push({
Content: x.data.FilePath,
ID: 0,
FileType: fileTypeNumber,
Name:x.data.SourceFileName,
Url: this.domainManager().ViittoFileUrl + x.data.FilePath,
})
this.$message.success(this.$t('tips.scchenggong'))
console.log("this.saveMsg",this.saveMsg);
}, 1);
},
//选取主题内容 //选取主题内容
getTheme(item) { getTheme(item) {
item.isCheck = !item.isCheck; item.isCheck = !item.isCheck;
...@@ -283,6 +479,12 @@ ...@@ -283,6 +479,12 @@
this.EditMsg.SeverityLevel = x.Id; this.EditMsg.SeverityLevel = x.Id;
} }
}); });
if(this.saveMsg!=null&&this.saveMsg.length>0){
this.EditMsg.FileDataList=this.saveMsg;
}
else{
this.EditMsg.FileDataList=[];
}
this.apipost('conplain_post_Set', this.EditMsg, res => { this.apipost('conplain_post_Set', this.EditMsg, res => {
if (res.data.resultCode == 1) { if (res.data.resultCode == 1) {
this.Success(this.$t('objFill.v101.administrative.tianjiacg')); this.Success(this.$t('objFill.v101.administrative.tianjiacg'));
...@@ -341,6 +543,7 @@ ...@@ -341,6 +543,7 @@
this.EditMsg.ID = this.$route.query.id; this.EditMsg.ID = this.$route.query.id;
}, },
mounted() { mounted() {
this.userInfo = this.getLocalStorage();
this.getEnumeration(); this.getEnumeration();
this.getEmployeeList(); this.getEmployeeList();
} }
......
This diff is collapsed.
...@@ -1773,8 +1773,23 @@ ...@@ -1773,8 +1773,23 @@
</el-row> </el-row>
</div> </div>
<!-- 表格 --> <!-- 表格 -->
<div style="width: 100%; height: auto; overflow-x: auto" class="ownScrollbarStyle"> <div style="width: 100%; height: auto; overflow-x: auto" class="ownScrollbarStyle" v-loading="loading">
<table class="groupTourOrderSearchTable" border="0" cellspacing="0" cellpadding="0" v-loading="loading"> <groupOrder v-if="userInfo.SimpleEasy==1" :list="list" :orderList="orderList"
:logList="logList" :redBagList="redBagList" :qjGroupId="qjGroupId" :isShow="isShow"
:showID="showID" :TransferMission="TransferMission" :isEditOrderCreate="isEditOrderCreate"
@goIisDetail="goIisDetail" @goUrlTS="goUrlTS" @goContract="goContract"
@goSingleContract="goSingleContract" @goProtocol="goProtocol" @goDisclaimer="goDisclaimer"
@goInvetig="goInvetig" @SpecialAPP="SpecialAPP" @deleteItem="deleteItem"
@ShenQingPhoto="ShenQingPhoto" @Discount="Discount" @goUrlAdd="goUrlAdd"
@getOrderGender="getOrderGender" @transfer="transfer" @getHouse="getHouse"
@toTrip="toTrip" @getSalerInfo="getSalerInfo" @getLogDetail="getLogDetail"
@getRemarks="getRemarks" @getDetail="getDetail" @downLoadFile="downLoadFile"
@getMembersDetail="getMembersDetail" @seeBJD="seeBJD" @gotoProduct="gotoProduct"
@goUrlX="goUrlX" @getOrderDetail="getOrderDetail" @goUrlHappy="goUrlHappy"
@getRedBag="getRedBag" @goUrlT="goUrlT" @setChargeLoss="setChargeLoss"
@goUrlSFD="goUrlSFD" @uploadFileBtn="uploadFileBtn" @childByValue="childByValue"
></groupOrder>
<table v-else class="groupTourOrderSearchTable" border="0" cellspacing="0" cellpadding="0">
<tr> <tr>
<th width="210">{{ $t("fnc.danhao") }}&{{ $t("visa.v_tuanhao") }}</th> <th width="210">{{ $t("fnc.danhao") }}&{{ $t("visa.v_tuanhao") }}</th>
<th width="120">{{ $t("fnc.khxinxi") }}</th> <th width="120">{{ $t("fnc.khxinxi") }}</th>
...@@ -2707,14 +2722,15 @@ ...@@ -2707,14 +2722,15 @@
import orderRemark from "../orderCommon/order-remark.vue"; //订单备注 import orderRemark from "../orderCommon/order-remark.vue"; //订单备注
import PriceDetail from '../orderCommon/PriceDetail.vue'; import PriceDetail from '../orderCommon/PriceDetail.vue';
import DateLimit from '../public/DateLimit.vue'; import DateLimit from '../public/DateLimit.vue';
import pinkDrawer from './components/pinkDrawer.vue'; import pinkDrawer from '../common/pinkDrawer.vue';
import addOrder from './components/addOrder.vue'; import addOrder from './components/addOrder.vue';
import addConfig from "./components/addConfig.js"; import addConfig from "./components/addConfig.js";
import groupOrder from "./components/groupOrder.vue";
export default { export default {
data() { data() {
return { return {
selectedSpotData: null, selectedSpotData: null,
showType: 1, showType: 1,//团信息
pickerBeginDateAfter: { pickerBeginDateAfter: {
disabledDate: time => { disabledDate: time => {
let startTime = new Date(this.msg.QStartDate); let startTime = new Date(this.msg.QStartDate);
...@@ -3063,6 +3079,7 @@ ...@@ -3063,6 +3079,7 @@
DateLimit, DateLimit,
pinkDrawer, pinkDrawer,
addOrder, addOrder,
groupOrder,
}, },
filters: { filters: {
priceFormat(value) { priceFormat(value) {
...@@ -3091,11 +3108,13 @@ ...@@ -3091,11 +3108,13 @@
}, },
methods: { methods: {
addOrders() { addOrders() {
this.selectedSpotData = null
this.$refs.addOrders.openDrawer(); this.$refs.addOrders.openDrawer();
}, },
handleSaveSuccess() { handleSaveSuccess() {
this.$refs.addOrders.handleDrawerClose(); this.$refs.addOrders.handleDrawerClose();
this.getList(); this.getList();
this.getCount()
this.$message.success('保存成功'); this.$message.success('保存成功');
}, },
gotoProduct(item) { gotoProduct(item) {
...@@ -3958,6 +3977,14 @@ ...@@ -3958,6 +3977,14 @@
} }
}, },
getDetail(obj) { getDetail(obj) {
if(this.userInfo.SimpleEasy==1){
this.OperationType = 1
this.showType = 1
obj.OperationType = 1
this.selectedSpotData = obj;
this.$refs.addOrders.openDrawer(obj);
return;
}
this.goLVurl.orderId = obj.orderId; this.goLVurl.orderId = obj.orderId;
this.goLVurl.tcid = obj.tcid; this.goLVurl.tcid = obj.tcid;
this.goLVurl.tcnum = obj.tcnum; this.goLVurl.tcnum = obj.tcnum;
...@@ -4065,7 +4092,6 @@ ...@@ -4065,7 +4092,6 @@
if (x.ClientSource == 1) { if (x.ClientSource == 1) {
this.isPingtai = true; this.isPingtai = true;
} }
this.isShowLayer = true; this.isShowLayer = true;
this.isShowHouse = false; this.isShowHouse = false;
this.isShowLayerRemarks = false; this.isShowLayerRemarks = false;
......
...@@ -53,7 +53,7 @@ ...@@ -53,7 +53,7 @@
<div class="HotelWorkList" @click="showWarningSearch=false"> <div class="HotelWorkList" @click="showWarningSearch=false">
<div class="query-box HotelWorkInput" style="border-bottom: none;"> <div class="query-box HotelWorkInput" style="border-bottom: none;">
<ul> <ul>
<li> <!-- <li>
<span> <span>
<em>{{$t('OrderList.search.status')}}</em> <em>{{$t('OrderList.search.status')}}</em>
<el-select v-model="msg.OrderStatus" class="w200 HworkInput"> <el-select v-model="msg.OrderStatus" class="w200 HworkInput">
...@@ -61,7 +61,7 @@ ...@@ -61,7 +61,7 @@
<el-option v-for="item in OrderStatusList" :key="item.Id" :label="item.Name" :value="item.Id"></el-option> <el-option v-for="item in OrderStatusList" :key="item.Id" :label="item.Name" :value="item.Id"></el-option>
</el-select> </el-select>
</span> </span>
</li> </li> -->
<li v-if="Title!='销售'"> <li v-if="Title!='销售'">
<span> <span>
<em>{{$t('visa.v_yewuyuan')}}</em> <em>{{$t('visa.v_yewuyuan')}}</em>
...@@ -73,7 +73,7 @@ ...@@ -73,7 +73,7 @@
</el-select> </el-select>
</span> </span>
</li> </li>
<li v-if="Title!='销售'"> <!-- <li v-if="Title!='销售'">
<span> <span>
<em>{{$t('objFill.yinliuren')}}</em> <em>{{$t('objFill.yinliuren')}}</em>
<el-select filterable v-model='msg.CreateBy' class="w200"> <el-select filterable v-model='msg.CreateBy' class="w200">
...@@ -83,7 +83,7 @@ ...@@ -83,7 +83,7 @@
</el-option> </el-option>
</el-select> </el-select>
</span> </span>
</li> </li> -->
<li> <li>
<span> <span>
<em>{{$t('hotel.hotel_OrderStates')}}</em> <em>{{$t('hotel.hotel_OrderStates')}}</em>
...@@ -110,11 +110,11 @@ ...@@ -110,11 +110,11 @@
class="w200" /> class="w200" />
</span> </span>
</li> </li>
<li> <!-- <li>
<span><em>{{$t('ground.CustomerName')}}</em> <span><em>{{$t('ground.CustomerName')}}</em>
<el-input clearable v-model="msg.GuestName" :placeholder="$t('ground.CustomerName')" class="w200" /> <el-input clearable v-model="msg.GuestName" :placeholder="$t('ground.CustomerName')" class="w200" />
</span> </span>
</li> </li> -->
<li> <li>
<span> <span>
<em>{{$t('objFill.baomingshijian')}}</em> <em>{{$t('objFill.baomingshijian')}}</em>
...@@ -137,58 +137,17 @@ ...@@ -137,58 +137,17 @@
</span> </span>
</li> </li>
<li> <li>
<span>
<em @click.stop="showWarningSearch=true" style="margin-top: 10px;cursor: pointer;"> {{$t('visa.v_gjchaxun')}} <i
class="el-icon-caret-bottom"></i></em>
<el-popover width="300" v-model="showWarningSearch" trigger="click">
<div>
<div class="TC_queryTitle">{{$t('objFill.v101.jipgjcxun')}}</div>
<div class="clearfix">
<div class="TC_leftSearch">
<div>
<span>{{$t('salesModule.TicketStatus')}}</span>
<el-select v-model='msg.TicketStatus' class="w150">
<el-option :value="0" :label="$t('pub.unlimitedSel')"></el-option>
<el-option v-for='item in ticketingStatusList' :label='item.Name' :value='item.Id'
:key='item.Id'>
</el-option>
</el-select>
</div>
<div>
<span>{{$t('objFill.v101.chuqianzt')}}</span>
<el-select v-model='msg.VisaStatus' class="w150">
<el-option v-for='item in VisaList' :label='item.Name' :value='item.Id' :key='item.Id'>
</el-option>
</el-select>
</div>
<div>
<span>{{$t('objFill.wangjie')}}{{$t('salesModule.Time')}}</span> <span>{{$t('objFill.wangjie')}}{{$t('salesModule.Time')}}</span>
<!-- <el-date-picker style="height: 34px;width: 210px;" value-format="yyyy-MM-dd" v-model="Datelist" <StartDateLimit :clearable="true" :dateTime="Datelist" @change="(startDate,endDate)=>{Datelist=[startDate,endDate],getDates()}"></StartDateLimit>
type="daterange" :range-separator="$t('OrderList.zhi')" </li>
:start-placeholder="$t('OrderList.star')" :end-placeholder="$t('OrderList.end')" <li>
@change="getDates">
</el-date-picker> -->
<StartDateLimit :clearable="true" :dateTime="Datelist" @change="(startDate,endDate)=>{Datelist=[startDate,endDate],getDates()}" style="width: 210px;"></StartDateLimit>
</div>
<div>
<span>{{$t('objFill.v101.FinancialModule.chuxings')}}</span> <span>{{$t('objFill.v101.FinancialModule.chuxings')}}</span>
<el-input v-model='msg.StartCityName' style="width: 210px;"></el-input> <el-input v-model='msg.StartCityName'></el-input>
</div>
</div>
<div style="text-align: right;margin-top: 10px;">
<button class="normalBtn TC_SearchBtn"
@click.stop="GetList(),showWarningSearch=false">{{$t('pub.searchBtn')}}
</button>
</div>
</div>
</div>
</el-popover>
</span>
</li> </li>
<li> <li>
<input v-if="userInfo.SimpleEasy==1" type="button" class="normalBtn" value="新增机票" @click="AddAirTicket()" />
<input type="button" class="normalBtn" :value="$t('pub.searchBtn')" <input type="button" class="normalBtn" :value="$t('pub.searchBtn')"
@click.stop="msg.pageIndex=1,currentPage=1,GetList()" /> @click.stop="msg.pageIndex=1,currentPage=1,GetList()" />
</li> </li>
...@@ -252,25 +211,37 @@ ...@@ -252,25 +211,37 @@
</el-row> </el-row>
</div> </div>
<OrderList :pagesTitle="Title" :OrderList="OrderList" v-loading="loading" @success="msg.pageIndex=1,GetList()"> <OrderList :pagesTitle="Title" :OrderList="OrderList" v-loading="loading" @success="msg.pageIndex=1,GetList()" @getlist="GetList()">
</OrderList> </OrderList>
<div v-if="OrderList&&OrderList.length==0" style="text-align: center;padding: 100px;">{{$t('system.content_noData')}}</div> <div v-if="OrderList&&OrderList.length==0" style="text-align: center;padding: 100px;">{{$t('system.content_noData')}}</div>
<el-pagination v-if="OrderList&&OrderList.length>0" background @current-change="handleCurrentChange" <el-pagination v-if="OrderList&&OrderList.length>0" background @current-change="handleCurrentChange"
:current-page.sync="currentPage" layout="total,prev, pager, next, jumper" :page-size=msg.pageSize :total=total> :current-page.sync="currentPage" layout="total,prev, pager, next, jumper" :page-size=msg.pageSize :total=total>
</el-pagination> </el-pagination>
<!-- 添加机票订单 -->
<div v-if="dialogTicketOrderVisible">
<ticketOrderDialog :name="dialogTicketOrderVisibleName" :ID="TicketOrderID" :GuestId="GuestId" :obj="editObj" type="1" @closeDialog="dialogTicketOrderVisible=false" @getlist="GetList()"></ticketOrderDialog>
</div>
</div> </div>
</template> </template>
<script> <script>
import OrderList from './OrderList.vue'; import ticketOrderDialog from './ticketOrderDialog.vue';
import StartDateLimit from '../../public/StartDateLimit.vue'; import StartDateLimit from '../../public/StartDateLimit.vue';
import OrderList from './OrderList.vue';
export default { export default {
props: ['pagesTitle', 'dataObj'], props: ['pagesTitle', 'dataObj'],
components: { components: {
OrderList, OrderList,
StartDateLimit StartDateLimit,
ticketOrderDialog
}, },
data() { data() {
return { return {
GuestId:0,
TicketOrderID:0,
editObj:{},
dialogTicketOrderVisible:false,
dialogTicketOrderVisibleName:'',
showWarningSearch: false, showWarningSearch: false,
TotalMsg: null, TotalMsg: null,
MultipleChoiceList: [ //多选项目 MultipleChoiceList: [ //多选项目
...@@ -510,14 +481,13 @@ ...@@ -510,14 +481,13 @@
//获取酒店订单列表 //获取酒店订单列表
GetList() { GetList() {
this.loading = true this.loading = true
let url = "/api/Order/GetGuestOrderStatisticsPageList"
// 销售 OP // 销售 OP
if (this.pagesTitle == '销售') { if (this.pagesTitle == '销售') {
this.msg.IsMyOrder = '1' this.msg.IsMyOrder = '1'
} else { } else {
this.msg.IsMyOrder = '0' this.msg.IsMyOrder = '0'
} }
this.crmapipost(url, this.msg, this.apipost('ticket_post_GetAirOrderStatisticsPageList', this.msg,
res => { res => {
if (res.data.resultCode == 1) { if (res.data.resultCode == 1) {
let data = res.data.data.Data.pageData let data = res.data.data.Data.pageData
...@@ -657,6 +627,11 @@ ...@@ -657,6 +627,11 @@
//设置table的行高 //设置table的行高
this.tableHeight = h; this.tableHeight = h;
}, },
AddAirTicket(){
this.TicketOrderID=0;
this.dialogTicketOrderVisible=true;
this.dialogTicketOrderVisibleName="新建机票订单";
}
}, },
created() { created() {
if (this.$route.query.OrderId) { if (this.$route.query.OrderId) {
......
...@@ -29,6 +29,7 @@ export const listManagerMixin = { ...@@ -29,6 +29,7 @@ export const listManagerMixin = {
IsLeave: 0, IsLeave: 0,
}, },
EmployeeList: [],//员工 EmployeeList: [],//员工
BranchList:[],//公司
//单选产品订单状态 //单选产品订单状态
OrderStatusType: [ OrderStatusType: [
// { Name: this.$t('OrderList.orderStatus.apply'), ID: '1' }, // { Name: this.$t('OrderList.orderStatus.apply'), ID: '1' },
...@@ -58,6 +59,22 @@ export const listManagerMixin = { ...@@ -58,6 +59,22 @@ export const listManagerMixin = {
} }
},
async getBranch() { //公司
try {
this.apipost('admin_Get_GetCompanyDepartMentEmployeeForChar', {}, res => {
if (res.data.resultCode == 1) {
this.BranchList = res.data.data;
}
}, err => {})
} catch (error) {
console.error("加载数据失败:", error);
this.$message.error("网络请求失败");
return null;
} finally {
}
}, },
// 通用数据加载方法 // 通用数据加载方法
async loadData(apiName, params = {}) { async loadData(apiName, params = {}) {
......
...@@ -427,8 +427,9 @@ ...@@ -427,8 +427,9 @@
<div class="flexOne changInfo" :class="{ 'drawer-mode': isDrawerMode }"> <div class="flexOne changInfo" :class="{ 'drawer-mode': isDrawerMode }">
<!-- 正常内容 --> <!-- 正常内容 -->
<div class="resource-content clearfix"> <div class="resource-content clearfix">
<!-- :disabled="addMsg.OrderId>0&&(activeTab=='basic'||activeTab=='contact')" -->
<el-form :model="addMsg" :rules="rules" class="h-full" ref="addMsg" label-width="120px" <el-form :model="addMsg" :rules="rules" class="h-full" ref="addMsg" label-width="120px"
:disabled="addMsg.OrderId>0&&(activeTab=='basic'||activeTab=='contact')"> >
<div class="hotel-form-container h-full"> <div class="hotel-form-container h-full">
<el-tabs v-model="activeTab" type="border-card" class="hotel-tabs"> <el-tabs v-model="activeTab" type="border-card" class="hotel-tabs">
<el-tab-pane label="基础资料" name="basic"> <el-tab-pane label="基础资料" name="basic">
...@@ -682,7 +683,8 @@ ...@@ -682,7 +683,8 @@
</el-dialog> </el-dialog>
<div class="btn-list"> <div class="btn-list">
<div class="btn-actions"> <div class="btn-actions">
<button v-if="!addMsg.OrderId" class="save-Btn" @click="submitForm('addMsg')" :disabled="isSaving"> <!-- v-if="!addMsg.OrderId" -->
<button class="save-Btn" @click="submitForm('addMsg')" :disabled="isSaving">
<i v-if="isSaving" class="el-icon-loading" style="margin-right: 4px;"></i> <i v-if="isSaving" class="el-icon-loading" style="margin-right: 4px;"></i>
{{ isSaving ? '' : $t('pub.saveBtn') }} {{ isSaving ? '' : $t('pub.saveBtn') }}
</button> </button>
......
...@@ -54,7 +54,7 @@ export const spotListConfig = { ...@@ -54,7 +54,7 @@ export const spotListConfig = {
prop: 'CouponsName', prop: 'CouponsName',
minWidth: 150, minWidth: 150,
fixed: 'left', fixed: 'left',
type: 'link', // type: 'link',
slotName: 'CouponsName', slotName: 'CouponsName',
filter: { filter: {
type: 'input', type: 'input',
......
...@@ -20,11 +20,11 @@ ...@@ -20,11 +20,11 @@
@add-click="addSpot" @add-click="addSpot"
> >
<!-- 插槽 --> <!-- 插槽 -->
<template slot="CouponsName" slot-scope="{ row }"> <!-- <template slot="CouponsName" slot-scope="{ row }">
<span class="name-link" @click="editSpot(row)"> <span class="name-link" @click="editSpot(row)">
{{ row.CouponsName }} {{ row.CouponsName }}
</span> </span>
</template> </template> -->
<template slot="profit" slot-scope="{ row }"> <template slot="profit" slot-scope="{ row }">
{{ row.Income-row.CostMoney-row.Refund>0?(row.Income-row.CostMoney-row.Refund).toFixed(2):'-' }} {{ row.Income-row.CostMoney-row.Refund>0?(row.Income-row.CostMoney-row.Refund).toFixed(2):'-' }}
</template> </template>
...@@ -114,6 +114,12 @@ ...@@ -114,6 +114,12 @@
<!-- <el-button type="text" size="mini" @click="manageData(row)">邮轮</el-button> --> <!-- <el-button type="text" size="mini" @click="manageData(row)">邮轮</el-button> -->
<!-- <el-button type="text" size="mini" @click="editSpot(row)">编辑</el-button> --> <!-- <el-button type="text" size="mini" @click="editSpot(row)">编辑</el-button> -->
<div class="row"> <div class="row">
<span v-if="row.OrderStatus == 2"
class="c059FF6 mr-xs pointer"
@click="editSpot(row)"
>{{$t('pub.edit')}}</span>
<span v-if="row.OrderStatus == 1 && row.IncomeList.length == 0 && row.RefundList.length == 0 && row.CostList.length == 0" <span v-if="row.OrderStatus == 1 && row.IncomeList.length == 0 && row.RefundList.length == 0 && row.CostList.length == 0"
class="delete-btn mr-xs pointer" class="delete-btn mr-xs pointer"
@click="cancelOrder(row)" @click="cancelOrder(row)"
...@@ -124,7 +130,7 @@ ...@@ -124,7 +130,7 @@
@click="clickOperation(row,3)" @click="clickOperation(row,3)"
>{{$t('fnc.shousun')}}</span> >{{$t('fnc.shousun')}}</span>
<!-- v-if="row.OrderStatus>1&&!row.OrderStatus!=3&&!row.OrderStatus!=4&&isOP&&userInfo.ActionMenuCode.indexOf('is_correlationOP') != -1" --> <!-- v-if="row.OrderStatus>1&&!row.OrderStatus!=3&&!row.OrderStatus!=4&&isOP&&userInfo.ActionMenuCode.indexOf('is_correlationOP') != -1" -->
<span <!-- <span
class="c059FF6 mr-xs pointer" class="c059FF6 mr-xs pointer"
@click="clickOperation(row,4)" @click="clickOperation(row,4)"
>{{$t('pub.edit')}}OP</span> >{{$t('pub.edit')}}OP</span>
...@@ -132,7 +138,7 @@ ...@@ -132,7 +138,7 @@
<span v-if="row.OrderStatus!=3" <span v-if="row.OrderStatus!=3"
class="c059FF6 mr-xs pointer" class="c059FF6 mr-xs pointer"
@click="clickOperation(row,5)" @click="clickOperation(row,5)"
>{{$t('pub.edit')}}{{$t('fnc.a_zongjine')}}</span> >{{$t('pub.edit')}}{{$t('fnc.a_zongjine')}}</span> -->
<ApplyFoInvoice class="pointer" v-if="userInfo&&userInfo.RB_Group_id==2&&userInfo.EmployeeId==row.EnterID" <ApplyFoInvoice class="pointer" v-if="userInfo&&userInfo.RB_Group_id==2&&userInfo.EmployeeId==row.EnterID"
:obj="row" :type="7"></ApplyFoInvoice> :obj="row" :type="7"></ApplyFoInvoice>
......
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
// 邮轮列表配置
export const spotListConfig = {
// 表格基础配置
tableConfig: {
height: '100%',
border: true,
stripe: false,
size: 'mini',
multiple: false,//是否支持多选
'empty-text': '暂无数据'
},
// 分页配置
paginationConfig: {
background: true,
layout: 'total, sizes, prev, pager, next, jumper',
'pager-count': 7,
'hide-on-single-page': false,
'page-sizes': [10, 14, 20, 25, 50, 100],
'page-size': 14,
'current-page': 1,
small: false,
disabled: false,
'prev-text': '',
'next-text': '',
total: 0
},
// 分页默认配置
defaultPagination: {
currentPage: 1,
pageSize: 14,
total: 0,
pageSizes: [10, 14, 20, 25, 50, 100]
},
// 列配置工厂函数
createColumns: (options = {}) => [
{
type: 'selection',
minWidth: 55,
fixed: 'left',
slotName: 'FrID',
},
{
id: 'FrID',
label: '单号',
prop: 'FrID',
minWidth: 30,
// fixed: 'left',
slotName: 'FrID',
},
{
label: '公司',
prop: 'BranchName',
minWidth: 90,
slotName: 'BranchName',
},
{
label: '费用类型',
prop: 'CostTypeName',
minWidth: 80,
slotName: 'CostTypeName',
},
{
label: '币种',
prop: 'CurrencyName',
minWidth: 30,
slotName: 'CurrencyName',
},
{
label: '汇率',
prop: 'Rate',
minWidth: 30,
slotName: 'Rate',
},
{
label: '金额',
prop: 'Money',
minWidth: 80,
slotName: 'Money',
},
{
label: '冲抵金额',
prop: 'MatchMoney',
minWidth: 80,
slotName: 'MatchMoney',
},
{
label: '状态',
prop: 'StatusStr',
minWidth: 30,
slotName: 'StatusStr',
},
{
label: '付款对象',
prop: 'ClientTypeName',
minWidth: 80,
slotName: 'ClientTypeName',
},
{
label: '备注',
prop: 'Remark',
minWidth: 80,
slotName: 'Remark',
}
],
// 操作列配置
actionColumn: {
label: '操作',
width: 240,
minWidth: 150,
fixed: 'right'
},
// 高级查询配置
advancedSearchConfig: {
title: '高级查询',
buttonText: '高级查询',
width: 600,
fields: [
{
key: 'FrID',
label: '编号',
type: 'input',
placeholder: '单据编号',
span: 8,
options: [] // 动态填充
},
{
key: 'CostTypeID',
label: '费用类型',
type: 'select',
span: 8,
options: [] // 动态填充
},
{
key: 'Datelist',
label: '交易时间',
type: 'date',
dateType: 'daterange',
placeholder: '选择交易时间',
span: 8,
}
]
},
// 工具操作配置
toolActions: [
{
command: 'refresh',
label: '刷新',
icon: 'el-icon-refresh',
type: 'default'
},
{
command: 'clearFilters',
label: '清除筛选',
icon: 'el-icon-delete',
type: 'warning'
}
],
// 抽屉配置
drawerConfig: {
title: '冲抵信息',
size: '90%',
direction: 'rtl'
},
// API 配置
apiConfig: {
list: 'Financial_get_GetAdvanceFinancePageList',//列表
costType: 'Financial_get_GetAdvanceCostTypeList',
},
// 默认查询参数
defaultQueryParams: {
pageIndex: 1,
pageSize: 16,
FrID: 0,
CostTypeID:'',
sTradeDate:'',
eTradeDate:'',
IsAdvanceFinance:1,
Datelist: [],
},
// 分页配置工具方法
createPaginationConfig: (options = {}) => ({
...spotListConfig.paginationConfig,
...options
}),
// 验证分页参数
validatePaginationParams: (pageIndex, pageSize, total) => {
const validPageSizes = [10, 14, 20, 25, 50, 100]
const normalizedPageSize = validPageSizes.includes(pageSize) ? pageSize : 14
const maxPage = total > 0 ? Math.ceil(total / normalizedPageSize) : 1
const normalizedPageIndex = Math.max(1, Math.min(pageIndex, maxPage))
return {
pageIndex: normalizedPageIndex,
pageSize: normalizedPageSize,
isValid: pageIndex === normalizedPageIndex && pageSize === normalizedPageSize
}
}
}
// 导出默认配置
export default spotListConfig
// 导出分页配置工具方法
export const createPaginationConfig = spotListConfig.createPaginationConfig
export const validatePaginationParams = spotListConfig.validatePaginationParams
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
// 邮轮列表配置
export const scenicSpotListConfig = {
// 表格基础配置
tableConfig: {
height: '100%',
border: true,
stripe: true,
size: 'mini',
'empty-text': '暂无邮轮数据'
},
// 分页配置
paginationConfig: {
background: true,
layout: 'total, sizes, prev, pager, next, jumper',
'pager-count': 7,
'hide-on-single-page': false,
'page-sizes': [10, 14, 20, 25, 50, 100],
'page-size': 14,
'current-page': 1,
small: false,
disabled: false,
'prev-text': '',
'next-text': '',
total: 0
},
// 分页默认配置
defaultPagination: {
currentPage: 1,
pageSize: 14,
total: 0,
pageSizes: [10, 14, 20, 25, 50, 100]
},
// 列配置工厂函数
createColumns: (options = {}) => [
{
id: 'scenic-name-column',
label: '邮轮名称',
prop: 'Name',
minWidth: 150,
// fixed: 'left',
type: 'link',
slotName: 'scenicName',
filter: {
type: 'input',
key: 'NameFilter',
placeholder: '输入邮轮名称'
}
},
{
id: 'city-column',
label: '城市',
prop: 'CityName',
minWidth: 100,
slotName: 'cityName',
filter: {
type: 'select',
key: 'CityFilter',
placeholder: '选择城市',
searchable: true,
multiple: true,
options: options.cityList || []
}
},
{
id: 'ticket-type-column',
label: '邮轮类型',
prop: 'TicketTypeName',
minWidth: 120,
slotName: 'ticketType',
filter: {
type: 'select',
key: 'TicketTypeFilter',
placeholder: '选择邮轮类型',
multiple: true,
options: options.ticketTypeList || []
}
},
{
label: '邮轮名称英文',
prop: 'RealName',
minWidth: 150,
slotName: 'realName',
emptyText: '-',
filter: {
type: 'input',
key: 'EnNameFilter',
placeholder: '输入邮轮英文名称'
}
},
{
label: '营业时间',
prop: 'OpeningHours',
minWidth: 150,
slotName: 'businessHours',
emptyText: '-'
},
{
label: '最后更新时间',
prop: 'UpdateDate',
minWidth: 150,
slotName: 'updateDate',
emptyText: '-'
},
{
label: '状态',
prop: 'Status',
minWidth: 80,
slotName: 'status',
filter: {
type: 'select',
key: 'StatusFilter',
placeholder: '选择状态',
options: [
{ label: '正常', value: '0' },
{ label: '删除', value: '1' }
]
}
}
],
// 操作列配置
actionColumn: {
label: '操作',
width: 120,
fixed: 'right'
},
// 高级查询配置
advancedSearchConfig: {
title: '高级查询',
buttonText: '高级查询',
width: 600,
fields: [
{
key: 'QCountry',
label: '国家',
type: 'select',
placeholder: '选择国家',
span: 8,
options: [] // 动态填充
},
{
key: 'QProvince',
label: '省份',
type: 'select',
placeholder: '选择省份',
span: 8,
options: [] // 动态填充
}
]
},
// 工具操作配置
toolActions: [
// {
// command: 'add',
// label: '添加邮轮',
// type: 'primary',
// icon: 'el-icon-plus',
// permission: 'scenic.add'
// },
{
command: 'export',
label: '导出数据',
icon: 'el-icon-download',
permission: 'scenic.export'
},
{
command: 'importData',
label: '导入数据',
icon: 'el-icon-upload2',
permission: 'scenic.import'
},
{
command: 'refresh',
label: '刷新',
icon: 'el-icon-refresh',
type: 'default'
},
{
command: 'clearFilters',
label: '清除筛选',
icon: 'el-icon-delete',
type: 'warning'
}
],
// 抽屉配置
drawerConfig: {
title: '邮轮信息',
size: '90%',
direction: 'rtl'
},
// API 配置
apiConfig: {
list: 'ticketcoupons_post_GetPageList',
delete: 'ticketcoupons_post_Remove',
export: 'dmcstatistics_post_GetTicketCouponsExport',
import: 'ticketcoupons_post_ImportData',
countryList: 'dict_post_Destination_GetCountry',
provinceList: 'dict_post_Destination_GetChildList',
employeeList: 'admin_get_EmployeeGetList',
ticketTypeList: 'ticketcoupons_get_GetBYTicketTypeEnumList',
batchDelete: 'ticketcoupons_post_BatchRemove',
uploadTemplate: 'file_post_UploadTemplate',
cityList:'dict_post_Destination_GetCityList'
},
// 默认查询参数
defaultQueryParams: {
pageIndex: 1,
pageSize: 14,
Name: "",
QCountry: "",
QProvince: "",
QCity: "",
QDistrict: "",
Status: "0",
TicketType: "-1",
UpdateBy: 0,
SelectType: 1
},
// 分页配置工具方法
createPaginationConfig: (options = {}) => ({
...scenicSpotListConfig.paginationConfig,
...options
}),
// 验证分页参数
validatePaginationParams: (pageIndex, pageSize, total) => {
const validPageSizes = [10, 14, 20, 25, 50, 100]
const normalizedPageSize = validPageSizes.includes(pageSize) ? pageSize : 14
const maxPage = total > 0 ? Math.ceil(total / normalizedPageSize) : 1
const normalizedPageIndex = Math.max(1, Math.min(pageIndex, maxPage))
return {
pageIndex: normalizedPageIndex,
pageSize: normalizedPageSize,
isValid: pageIndex === normalizedPageIndex && pageSize === normalizedPageSize
}
}
}
// 导出默认配置
export default scenicSpotListConfig
// 导出分页配置工具方法
export const createPaginationConfig = scenicSpotListConfig.createPaginationConfig
export const validatePaginationParams = scenicSpotListConfig.validatePaginationParams
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment