Commit 94eaddce authored by liudong1993's avatar liudong1993
parents eb72ca93 1fea9227
...@@ -406,6 +406,9 @@ ...@@ -406,6 +406,9 @@
.c059FF6 { .c059FF6 {
color: #059ff6; color: #059ff6;
} }
.c3FC4FF {
color: #3fc4ff;
}
.c9e { .c9e {
color: #9e9e9e; color: #9e9e9e;
} }
......
...@@ -8209,6 +8209,7 @@ export const obj = { ...@@ -8209,6 +8209,7 @@ export const obj = {
zuoyewangcheng: '作业完成', zuoyewangcheng: '作业完成',
biangengshenqing: '变更申请', biangengshenqing: '变更申请',
biangengyuanyin: '变更原因', biangengyuanyin: '变更原因',
danxiangyoulun: '单项邮轮订单'
} }
//#endregion //#endregion
} }
......
...@@ -161,4 +161,88 @@ ...@@ -161,4 +161,88 @@
} }
.pointer{ .pointer{
cursor: pointer; cursor: pointer;
} }
\ No newline at end of file
.bgf {
background: #ffffff;
}
.bgf5 {
background: #f5f5f5;
}
.bgE8F5E9 {
background: #e8f5e9;
}
.bgD9F3FF {
background: #d9f3ff;
}
.bgFAEAED {
background: #faeaed;
}
.bg3FC4FF {
background: #3FC4FF;
}
.bgF1416C{
background: #F1416C;
}
.bgff9800{
background: #ff9800;
}
.bj {
background: #ffffff;
}
.bjFFF3E0 {
background: #FFF3E0;
}
.radius5 {
border-radius: 5px;
}
.cblack {
color: black;
}
.cf {
color: #ffffff;
}
.c9e {
color: #9e9e9e;
}
.c20C997 {
color: #20c997;
}
.c02C854 {
color: #02c854;
}
.cff9800 {
color: #ff9800;
}
.cF1416C {
color: #f1416c;
}
.cF57A98 {
color: #f57a98;
}
.c04C8C8 {
color: #04c8c8;
}
.c059FF6 {
color: #059ff6;
}
.c3FC4FF {
color: #3fc4ff;
}
...@@ -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();
} }
......
...@@ -900,8 +900,14 @@ ...@@ -900,8 +900,14 @@
<div v-if="GetDetail.OtherType==61||GetDetail.OtherType==62" class="illustrate-right fygsbumen-box-right" <div v-if="GetDetail.OtherType==61||GetDetail.OtherType==62" class="illustrate-right fygsbumen-box-right"
@click="ImpressionSingleDetails(isOrderOP?'singleProductHotelOrderOP':'singleProductHotelOrder')">{{$t('objFill.dxjddd')+':'+GetDetail.ReFinanceId}}</div> @click="ImpressionSingleDetails(isOrderOP?'singleProductHotelOrderOP':'singleProductHotelOrder')">{{$t('objFill.dxjddd')+':'+GetDetail.ReFinanceId}}</div>
<div v-if="GetDetail.OtherType==66" class="illustrate-right fygsbumen-box-right"
<template v-if="GetDetail.OtherType==66">
<div v-if="userInfo.SimpleEasy" class="illustrate-right fygsbumen-box-right"
@click="ImpressionSingleDetails(isOrderOP?'cruiseShipOrderListOP':'cruiseShipOrderList')">{{$t('objFill.v103.danxiangyoulun')+':'+GetDetail.ReFinanceId}}</div>
<div v-else class="illustrate-right fygsbumen-box-right"
@click="ImpressionSingleDetails(isOrderOP?'SingleticketOrderListOP':'SingleticketOrderList')">{{$t('objFill.dxmpdd')+':'+GetDetail.ReFinanceId}}</div> @click="ImpressionSingleDetails(isOrderOP?'SingleticketOrderListOP':'SingleticketOrderList')">{{$t('objFill.dxmpdd')+':'+GetDetail.ReFinanceId}}</div>
</template>
<div v-if="GetDetail.OtherType==67||GetDetail.OtherType==68" class="illustrate-right fygsbumen-box-right" <div v-if="GetDetail.OtherType==67||GetDetail.OtherType==68" class="illustrate-right fygsbumen-box-right"
@click="ImpressionSingleDetails(isOrderOP?'CharterOrderListOP':'CharterOrderList')">{{$t('objFill.dxcdd')+':'+GetDetail.ReFinanceId}}</div> @click="ImpressionSingleDetails(isOrderOP?'CharterOrderListOP':'CharterOrderList')">{{$t('objFill.dxcdd')+':'+GetDetail.ReFinanceId}}</div>
<div v-if="GetDetail.OtherType==80"> <div v-if="GetDetail.OtherType==80">
......
...@@ -925,9 +925,17 @@ ...@@ -925,9 +925,17 @@
<div v-if="GetDetail.OtherType==61||GetDetail.OtherType==62" class="illustrate-right fygsbumen-box-right" <div v-if="GetDetail.OtherType==61||GetDetail.OtherType==62" class="illustrate-right fygsbumen-box-right"
@click="ImpressionSingleDetails(isOrderOP?'singleProductHotelOrderOP':'singleProductHotelOrder')"> @click="ImpressionSingleDetails(isOrderOP?'singleProductHotelOrderOP':'singleProductHotelOrder')">
{{$t('objFill.dxjddd')+':'+GetDetail.ReFinanceId}}</div> {{$t('objFill.dxjddd')+':'+GetDetail.ReFinanceId}}</div>
<div v-if="GetDetail.OtherType==66" class="illustrate-right fygsbumen-box-right"
<template v-if="GetDetail.OtherType==66">
<div v-if="userInfo.SimpleEasy" class="illustrate-right fygsbumen-box-right"
@click="ImpressionSingleDetails(isOrderOP?'cruiseShipOrderListOP':'cruiseShipOrderList')">
{{$t('objFill.v103.danxiangyoulun')+':'+GetDetail.ReFinanceId}}</div>
<div v-else class="illustrate-right fygsbumen-box-right"
@click="ImpressionSingleDetails(isOrderOP?'SingleticketOrderListOP':'SingleticketOrderList')"> @click="ImpressionSingleDetails(isOrderOP?'SingleticketOrderListOP':'SingleticketOrderList')">
{{$t('objFill.dxmpdd')+':'+GetDetail.ReFinanceId}}</div> {{$t('objFill.dxmpdd')+':'+GetDetail.ReFinanceId}}</div>
</template>
<div v-if="GetDetail.OtherType==67||GetDetail.OtherType==68" class="illustrate-right fygsbumen-box-right" <div v-if="GetDetail.OtherType==67||GetDetail.OtherType==68" class="illustrate-right fygsbumen-box-right"
@click="ImpressionSingleDetails(isOrderOP?'CharterOrderListOP':'CharterOrderList')"> @click="ImpressionSingleDetails(isOrderOP?'CharterOrderListOP':'CharterOrderList')">
{{$t('objFill.dxcdd')+':'+GetDetail.ReFinanceId}}</div> {{$t('objFill.dxcdd')+':'+GetDetail.ReFinanceId}}</div>
......
// 邮轮列表配置
export const addConfig = {
// 抽屉配置
drawerConfig: {
title: '跟团游信息',
size: '90%',
direction: 'rtl'
},
}
// 导出默认配置
export default addConfig
This diff is collapsed.
This diff is collapsed.
<style> <style>
@import "../../assets/css/newTravelManager.css"; @import "../../assets/css/newTravelManager.css";
@import '../common/BaseListManager.css';
.color_red_order { .color_red_order {
color: #e95252 !important; color: #e95252 !important;
} }
...@@ -1647,6 +1647,7 @@ ...@@ -1647,6 +1647,7 @@
</el-popover> </el-popover>
</li> </li>
<li> <li>
<input v-if="userInfo.SimpleEasy==1" type="button" class="hollowFixedBtn" :value="$t('pub.addBtn')" @click="addOrders"/>
<input type="button" class="hollowFixedBtn" :value="$t('pub.searchBtn')" @click=" <input type="button" class="hollowFixedBtn" :value="$t('pub.searchBtn')" @click="
getList(); getList();
resetPageIndex(); resetPageIndex();
...@@ -1772,8 +1773,23 @@ ...@@ -1772,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>
...@@ -2685,6 +2701,14 @@ ...@@ -2685,6 +2701,14 @@
</button> </button>
</div> </div>
</el-dialog> --> </el-dialog> -->
<pinkDrawer ref="addOrders"
:drawer-config="drawerConfig">
<template slot="drawer" slot-scope="{ visible, close }">
<addOrder v-if="visible&&showType==1" :isDrawerMode="true"
:details="selectedSpotData"
@close="close" @save-success="handleSaveSuccess"></addOrder>
</template>
</pinkDrawer>
</div> </div>
</template> </template>
...@@ -2698,9 +2722,15 @@ ...@@ -2698,9 +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 '../common/pinkDrawer.vue';
import addOrder from './components/addOrder.vue';
import addConfig from "./components/addConfig.js";
import groupOrder from "./components/groupOrder.vue";
export default { export default {
data() { data() {
return { return {
selectedSpotData: null,
showType: 1,//团信息
pickerBeginDateAfter: { pickerBeginDateAfter: {
disabledDate: time => { disabledDate: time => {
let startTime = new Date(this.msg.QStartDate); let startTime = new Date(this.msg.QStartDate);
...@@ -3046,7 +3076,10 @@ ...@@ -3046,7 +3076,10 @@
commissionDialog, commissionDialog,
orderRemark: orderRemark, orderRemark: orderRemark,
PriceDetail, PriceDetail,
DateLimit DateLimit,
pinkDrawer,
addOrder,
groupOrder,
}, },
filters: { filters: {
priceFormat(value) { priceFormat(value) {
...@@ -3062,12 +3095,27 @@ ...@@ -3062,12 +3095,27 @@
return x1 + x2; return x1 + x2;
}, },
}, },
watch: { watch: {
SQcheckdAll(val) { SQcheckdAll(val) {
this.checkdAll(val); this.checkdAll(val);
}, },
}, },
computed: {
// 抽屉配置
drawerConfig() {
return addConfig.drawerConfig;
},
},
methods: { methods: {
addOrders() {
this.$refs.addOrders.openDrawer();
},
handleSaveSuccess() {
this.$refs.addOrders.handleDrawerClose();
this.getList();
this.getCount()
this.$message.success('保存成功');
},
gotoProduct(item) { gotoProduct(item) {
var path = "productQuery"; var path = "productQuery";
if (item.teamType == 4) { if (item.teamType == 4) {
...@@ -3928,6 +3976,14 @@ ...@@ -3928,6 +3976,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;
...@@ -4035,7 +4091,6 @@ ...@@ -4035,7 +4091,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;
......
...@@ -219,12 +219,15 @@ ...@@ -219,12 +219,15 @@
var tipMsg = "是否要取消【" + (item.DMCNum ? item.DMCNum : item.TCNUM) + "】此车订单?" var tipMsg = "是否要取消【" + (item.DMCNum ? item.DMCNum : item.TCNUM) + "】此车订单?"
that.Confirm(tipMsg, function () { that.Confirm(tipMsg, function () {
var orderMsg = { var orderMsg = {
MainId: item.MainId, //MainId: item.MainId,
OrderId:item.OrderId,
CancelRemark: 'ERP取消车订单' CancelRemark: 'ERP取消车订单'
}; };
that.loading = true; that.loading = true;
that.loadingText = "正在取消数据..."; that.loadingText = "正在取消数据...";
that.apipost('JapanCar_get_CancelJapanOrderMain', orderMsg, res => { //JapanCar_get_CancelJapanOrder 取消子订单
//JapanCar_get_CancelJapanOrderMain 取消主订单
that.apipost('JapanCar_get_CancelJapanOrder', orderMsg, res => {
that.loading = false; that.loading = false;
if (res.data.resultCode == 1) { if (res.data.resultCode == 1) {
that.Success(res.data.message); that.Success(res.data.message);
......
...@@ -2,6 +2,14 @@ ...@@ -2,6 +2,14 @@
<div class="base-list-manager" :class="customClass"> <div class="base-list-manager" :class="customClass">
<!-- 查询工具栏 --> <!-- 查询工具栏 -->
<div class="query-toolbar"> <div class="query-toolbar">
<div v-if="headConfiguration">
<div v-if="headConfiguration.DocumentStatus" class="row justify-end mb-sm">
<p>
<span class="groupTourOrderByTuan_ico fz14"><i class="bg3FC4FF"></i><span>{{$t('fnc.yidadan')}}</span></span>
<span class="groupTourOrderByTuan_ico fz14"><i class="bgF1416C"></i><span>{{$t('fnc.yhcnyshenhe')}}</span></span>
<span class="groupTourOrderByTuan_ico fz14"><i class="bgff9800"></i><span>{{$t('fnc.ytongguo')}}</span></span></p>
</div>
</div>
<el-button v-if="addActionConfig" size="medium" @click="handleAddAction">{{addActionConfig.buttonText||'新增'}}</el-button> <el-button v-if="addActionConfig" size="medium" @click="handleAddAction">{{addActionConfig.buttonText||'新增'}}</el-button>
<!-- 高级查询 --> <!-- 高级查询 -->
...@@ -24,12 +32,12 @@ ...@@ -24,12 +32,12 @@
<el-form-item :label="field.label"> <el-form-item :label="field.label">
<!-- 输入框 --> <!-- 输入框 -->
<el-input v-if="field.type === 'input'" v-model="advancedFilters[field.key]" <el-input v-if="field.type === 'input'" v-model="advancedFilters[field.key]"
:placeholder="field.placeholder" :type="field.inputType || 'text'" size="small"> :placeholder="field.placeholder" clearable :type="field.inputType || 'text'" size="small">
</el-input> </el-input>
<!-- 选择器 --> <!-- 选择器 -->
<el-select v-else-if="field.type === 'select'" v-model="advancedFilters[field.key]" <el-select v-else-if="field.type === 'select'" v-model="advancedFilters[field.key]"
:placeholder="field.placeholder" clearable size="small"> :placeholder="field.placeholder" clearable size="small" :filterable="field.filterable">
<el-option v-for="option in field.options" :key="option.value" :label="option.label" <el-option v-for="option in field.options" :key="option.value" :label="option.label"
:value="option.value"> :value="option.value">
</el-option> </el-option>
...@@ -37,7 +45,7 @@ ...@@ -37,7 +45,7 @@
<!-- 日期选择器 --> <!-- 日期选择器 -->
<el-date-picker v-else-if="field.type === 'date'" v-model="advancedFilters[field.key]" <el-date-picker v-else-if="field.type === 'date'" v-model="advancedFilters[field.key]"
:type="field.dateType || 'date'" :placeholder="field.placeholder" size="small" :type="field.dateType || 'date'" :placeholder="field.placeholder" clearable size="small"
style="width: 100%;" :value-format="field.valueFormat || 'yyyy-MM-dd'"> style="width: 100%;" :value-format="field.valueFormat || 'yyyy-MM-dd'">
</el-date-picker> </el-date-picker>
</el-form-item> </el-form-item>
...@@ -72,8 +80,9 @@ ...@@ -72,8 +80,9 @@
<!-- 表格区域 --> <!-- 表格区域 -->
<div class="table-container"> <div class="table-container">
<el-table ref="table" :data="dataList" :loading="loading" v-bind="tableConfig" <el-table ref="table" :data="dataList" :loading="loading" v-bind="tableConfig"
@selection-change="handleSelectionChange" @sort-change="handleSortChange" @row-click="handleRowClick"> @selection-change="handleSelectionChange" @sort-change="handleSortChange"
@row-click="handleRowClick">
<!-- 调试信息 --> <!-- 调试信息 -->
<!-- <div v-if="dataList.length === 0" style="padding: 20px; text-align: center; color: red;"> <!-- <div v-if="dataList.length === 0" style="padding: 20px; text-align: center; color: red;">
...@@ -83,7 +92,7 @@ ...@@ -83,7 +92,7 @@
<!-- 动态列 --> <!-- 动态列 -->
<template v-for="(column, index) in columns"> <template v-for="(column, index) in columns">
<!-- 选择列 --> <!-- 选择列 -->
<el-table-column v-if="column.type === 'selection'" :key="index" type="selection" v-bind="column"> <el-table-column v-if="column.type === 'selection'" :key="index" type="selection" v-bind="column" :selectable="selectable">
</el-table-column> </el-table-column>
<!-- 索引列 --> <!-- 索引列 -->
...@@ -191,6 +200,7 @@ ...@@ -191,6 +200,7 @@
<!-- 列内容 --> <!-- 列内容 -->
<template #default="scope"> <template #default="scope">
<!-- 这里判断是否有插槽 --> <!-- 这里判断是否有插槽 -->
<template v-if="$scopedSlots[column.slotName]"> <template v-if="$scopedSlots[column.slotName]">
<slot <slot
:name="column.slotName" :name="column.slotName"
...@@ -199,7 +209,6 @@ ...@@ -199,7 +209,6 @@
:$index="scope.$index" :$index="scope.$index"
/> />
</template> </template>
<!-- 链接类型 --> <!-- 链接类型 -->
<span v-else-if="column.type === 'link'" class="table-link" @click="handleLinkClick(scope.row, column)"> <span v-else-if="column.type === 'link'" class="table-link" @click="handleLinkClick(scope.row, column)">
{{ getColumnValue(scope.row, column) }} {{ getColumnValue(scope.row, column) }}
...@@ -213,7 +222,6 @@ ...@@ -213,7 +222,6 @@
<!-- 默认文本 --> <!-- 默认文本 -->
<span v-else :class="column.className"> <span v-else :class="column.className">
{{ getColumnValue(scope.row, column) || (column.emptyText || '-') }} {{ getColumnValue(scope.row, column) || (column.emptyText || '-') }}
</span> </span>
</template> </template>
</el-table-column> </el-table-column>
...@@ -262,7 +270,7 @@ export default { ...@@ -262,7 +270,7 @@ export default {
default: () => ({ default: () => ({
height: '100%', height: '100%',
border: true, border: true,
stripe: true, // stripe: true,
size: 'mini' size: 'mini'
}) })
}, },
...@@ -337,7 +345,13 @@ export default { ...@@ -337,7 +345,13 @@ export default {
customClass: { customClass: {
type: String, type: String,
default: '' default: ''
} },
// 头部额外配置
headConfiguration: {
type: Object,
default: null
},
}, },
data() { data() {
...@@ -359,7 +373,10 @@ export default { ...@@ -359,7 +373,10 @@ export default {
drawerData: null, drawerData: null,
// 选中行 // 选中行
selectedRows: [] selectedRows: [],
currentRow: null,//单选行
} }
}, },
...@@ -425,7 +442,6 @@ export default { ...@@ -425,7 +442,6 @@ export default {
} }
}, },
}, },
mounted() { mounted() {
...@@ -441,6 +457,19 @@ export default { ...@@ -441,6 +457,19 @@ export default {
}, },
methods: { methods: {
toggleSelection(rows) {
if (rows) {
rows.forEach(row => {
this.$refs.table.toggleRowSelection(row);
});
} else {
this.$refs.table.clearSelection();
}
},
// 行是否可选
selectable(row, index) {
return true;
},
// Popover 管理 // Popover 管理
closeAllPopovers() { closeAllPopovers() {
this.advancedSearchVisible = false; this.advancedSearchVisible = false;
...@@ -508,6 +537,12 @@ export default { ...@@ -508,6 +537,12 @@ export default {
// 表格事件处理 // 表格事件处理
handleSelectionChange(selection) { handleSelectionChange(selection) {
// 处理单选
if(!this.tableConfig.multiple){
for (let i = 0; i < selection.length - 1; i++) {
this.$refs.table.toggleRowSelection(selection[i]);
}
}
this.selectedRows = selection; this.selectedRows = selection;
this.$emit('selection-change', selection); this.$emit('selection-change', selection);
}, },
...@@ -644,4 +679,14 @@ export default { ...@@ -644,4 +679,14 @@ export default {
<style> <style>
@import './BaseListManager.css'; @import './BaseListManager.css';
@import '../../assets/css/flex.css';
/deep/.base-list-manager .el-table--border .el-table__cell:first-child .cell{
display: flex;
justify-content: center;
align-items: center;
}
/deep/.base-list-manager .el-table th.el-table__cell>.cell{
padding-left: 0 !important;
padding-right: 0 !important;
}
</style> </style>
// 列表管理通用 Mixin
export const addEditMixin = {
data() {
return {
//用户信息
userInfo: {},
//单选产品订单状态
OrderStatusType: [
{ Name: this.$t('OrderList.orderStatus.apply'), ID: '1' },
{ Name: this.$t('OrderList.orderStatus.check'), ID: '2' },
{ Name: this.$t('OrderList.orderStatus.cancel'), ID: '3' },
{ Name: this.$t('OrderList.orderStatus.sun'), ID: '4' },
],
//取消订单备注
cancelRemark: '',
};
},
created() {
this.getUserInfo()
},
methods: {
getUserInfo(){
this.userInfo =this.getLocalStorage()
},
}
};
export default addEditMixin;
...@@ -29,6 +29,14 @@ export const listManagerMixin = { ...@@ -29,6 +29,14 @@ export const listManagerMixin = {
IsLeave: 0, IsLeave: 0,
}, },
EmployeeList: [],//员工 EmployeeList: [],//员工
BranchList:[],//公司
//单选产品订单状态
OrderStatusType: [
// { Name: this.$t('OrderList.orderStatus.apply'), ID: '1' },
{ Name: this.$t('OrderList.orderStatus.check'), ID: '2' },
{ Name: this.$t('OrderList.orderStatus.cancel'), ID: '3' },
{ Name: this.$t('OrderList.orderStatus.sun'), ID: '4' },
],
}; };
}, },
created() { created() {
...@@ -51,6 +59,22 @@ export const listManagerMixin = { ...@@ -51,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 = {}) {
......
// 用户相关数据通用 Mixin
export const userMixin = {
data() {
return {
//用户信息
userInfo: {},
};
},
created() {
this.getUserInfo()
},
methods: {
getUserInfo(){
this.userInfo =this.getLocalStorage()
},
}
};
export default userMixin;
<template>
<div>
<el-drawer v-if="drawerConfig" :visible.sync="drawerVisible" v-bind="drawerConfig" @close="handleDrawerClose">
<slot name="drawer" :visible="drawerVisible" :data="drawerData" :close="handleDrawerClose">
</slot>
</el-drawer>
</div>
</template>
<script>
export default {
props: {
// 抽屉配置
drawerConfig: {
type: Object,
default: null
},
},
data() {
return {
// 抽屉状态
drawerVisible: false,
drawerData: null,
}
},
mounted() {
},
methods: {
// 抽屉相关方法
openDrawer(data = null) {
this.drawerData = data;
this.drawerVisible = true;
},
handleDrawerClose() {
this.drawerVisible = false;
this.drawerData = null;
this.$emit('drawer-close');
},
},
}
</script>
\ No newline at end of file
...@@ -36,6 +36,7 @@ ...@@ -36,6 +36,7 @@
flex-direction: column; flex-direction: column;
border: none; border: none;
box-shadow: none; box-shadow: none;
overflow: hidden;
} }
.drawer-mode .hotel-tabs .el-tabs__header { .drawer-mode .hotel-tabs .el-tabs__header {
...@@ -82,7 +83,6 @@ ...@@ -82,7 +83,6 @@
} }
.drawer-mode .tab-content.hidden { .drawer-mode .tab-content.hidden {
height: calc(100vh - 160px);
overflow: hidden; overflow: hidden;
display: flex; display: flex;
flex-direction: column; flex-direction: column;
...@@ -426,16 +426,16 @@ ...@@ -426,16 +426,16 @@
<template> <template>
<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">
<el-form :model="addMsg" :rules="rules" class="h-full" ref="addMsg" label-width="0"> <el-form :model="addMsg" :rules="rules" class="h-full" ref="addMsg" label-width="80px">
<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="OP" name="basic"> <el-tab-pane label="编辑OP" name="basic">
<div class="tab-content"> <div class="tab-content">
<el-row :gutter="16"> <el-row :gutter="16">
<el-col :span="24"> <el-col :span="19">
<el-form-item label="" prop="OpEmpId"> <el-form-item label="OP" prop="AppointOPList">
<el-select v-model="addMsg.OpEmpId" <el-select v-model="addMsg.AppointOPList"
multiple filterable collapse-tags placeholder="请选择OP"> multiple filterable placeholder="请选择OP" clearable>
<el-option v-for='item in EmployeeList' :label='item.EmName' <el-option v-for='item in EmployeeList' :label='item.EmName'
:value='item.EmployeeId' :key='item.EmployeeId'></el-option> :value='item.EmployeeId' :key='item.EmployeeId'></el-option>
</el-select> </el-select>
...@@ -485,13 +485,14 @@ ...@@ -485,13 +485,14 @@
activeTab: 'basic', activeTab: 'basic',
addMsg: { addMsg: {
OrderId: 0,// 订单号 OrderId: 0,// 订单号
OpEmpId: null, OpEmpId: '',
AppointOPList: [],
}, },
rules: { rules: {
OpEmpId: [{ AppointOPList: [{
required: true, required: true,
message: '请选择OP', message: '请选择OP',
trigger: "blur" trigger: "change"
}], }],
}, },
CruiseShipList: [],//邮轮 CruiseShipList: [],//邮轮
...@@ -510,7 +511,7 @@ ...@@ -510,7 +511,7 @@
handler(newVal) { handler(newVal) {
if (newVal && newVal.OrderId !== this.addMsg.OrderId) { if (newVal && newVal.OrderId !== this.addMsg.OrderId) {
this.addMsg.OrderId = newVal.OrderId; this.addMsg.OrderId = newVal.OrderId;
this.addMsg.OpEmpId = newVal.AppointOPList.map(item => item.OPId); this.addMsg.AppointOPList = newVal.AppointOPList.length>0? newVal.AppointOPList.map(item => item.OPId):[]
} }
} }
} }
......
...@@ -36,6 +36,7 @@ ...@@ -36,6 +36,7 @@
flex-direction: column; flex-direction: column;
border: none; border: none;
box-shadow: none; box-shadow: none;
overflow: hidden;
} }
.drawer-mode .hotel-tabs .el-tabs__header { .drawer-mode .hotel-tabs .el-tabs__header {
...@@ -82,7 +83,6 @@ ...@@ -82,7 +83,6 @@
} }
.drawer-mode .tab-content.hidden { .drawer-mode .tab-content.hidden {
height: calc(100vh - 160px);
overflow: hidden; overflow: hidden;
display: flex; display: flex;
flex-direction: column; flex-direction: column;
...@@ -432,9 +432,9 @@ ...@@ -432,9 +432,9 @@
<el-tab-pane label="收损" name="basic"> <el-tab-pane label="收损" name="basic">
<div class="tab-content"> <div class="tab-content">
<el-row :gutter="16"> <el-row :gutter="16">
<el-col :span="24"> <el-col :span="19">
<el-form-item label="" prop="LossMoney"> <el-form-item label="" prop="LossMoney">
<el-input type="number" v-model="addMsg.LossMoney" placeholder="收损金额"></el-input> <el-input type="number" v-model="addMsg.LossMoney" placeholder="输入收损金额"></el-input>
</el-form-item> </el-form-item>
</el-col> </el-col>
</el-row> </el-row>
......
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
...@@ -36,6 +36,7 @@ ...@@ -36,6 +36,7 @@
flex-direction: column; flex-direction: column;
border: none; border: none;
box-shadow: none; box-shadow: none;
overflow: hidden;
} }
.drawer-mode .hotel-tabs .el-tabs__header { .drawer-mode .hotel-tabs .el-tabs__header {
...@@ -82,7 +83,6 @@ ...@@ -82,7 +83,6 @@
} }
.drawer-mode .tab-content.hidden { .drawer-mode .tab-content.hidden {
height: calc(100vh - 160px);
overflow: hidden; overflow: hidden;
display: flex; display: flex;
flex-direction: column; flex-direction: column;
...@@ -429,10 +429,10 @@ ...@@ -429,10 +429,10 @@
<el-form :model="addMsg" :rules="rules" class="h-full" ref="addMsg" label-width="0"> <el-form :model="addMsg" :rules="rules" class="h-full" ref="addMsg" label-width="0">
<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">
<div class="tab-content"> <div class="tab-content">
<el-row :gutter="16"> <el-row :gutter="16">
<el-col :span="24"> <el-col :span="19">
<el-form-item label=""> <el-form-item label="">
<el-input type="textarea" v-model="addMsg.Remark" placeholder="订单取消备注" <el-input type="textarea" v-model="addMsg.Remark" placeholder="订单取消备注"
:autosize="{ minRows: 10, maxRows: 20}"></el-input> :autosize="{ minRows: 10, maxRows: 20}"></el-input>
......
This diff is collapsed.
...@@ -36,6 +36,7 @@ ...@@ -36,6 +36,7 @@
flex-direction: column; flex-direction: column;
border: none; border: none;
box-shadow: none; box-shadow: none;
overflow: hidden;
} }
.drawer-mode .hotel-tabs .el-tabs__header { .drawer-mode .hotel-tabs .el-tabs__header {
...@@ -82,7 +83,6 @@ ...@@ -82,7 +83,6 @@
} }
.drawer-mode .tab-content.hidden { .drawer-mode .tab-content.hidden {
height: calc(100vh - 160px);
overflow: hidden; overflow: hidden;
display: flex; display: flex;
flex-direction: column; flex-direction: column;
...@@ -428,7 +428,7 @@ ...@@ -428,7 +428,7 @@
<!-- 正常内容 --> <!-- 正常内容 -->
<div class="resource-content clearfix"> <div class="resource-content clearfix">
<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"> :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">
...@@ -776,7 +776,7 @@ ...@@ -776,7 +776,7 @@
CompanyPhone: '',// 电话 CompanyPhone: '',// 电话
OpeningBank: '',// 开户行 OpeningBank: '',// 开户行
BankNo: '',// 开户账号 BankNo: '',// 开户账号
AppointOPList: '',// op 格式:([1,2,3]) AppointOPList: [],// op 格式:([1,2,3])
GuestList: [],// 旅客名单 GuestList: [],// 旅客名单
FinalPriceTips: '',// 尾款提醒设置 FinalPriceTips: '',// 尾款提醒设置
}, },
......
...@@ -39,16 +39,21 @@ export const spotListConfig = { ...@@ -39,16 +39,21 @@ export const spotListConfig = {
id: 'OrderId', id: 'OrderId',
label: '订单Id', label: '订单Id',
prop: 'OrderId', prop: 'OrderId',
minWidth: 80, minWidth: 100,
// fixed: 'left', fixed: 'left',
slotName: 'OrderId', slotName: 'OrderId',
filter: {
type: 'input',
key: 'OrderId',
placeholder: '输入订单Id'
}
}, },
{ {
id: 'scenic-name-column', id: 'scenic-name-column',
label: '邮轮名称', label: '邮轮名称',
prop: 'CouponsName', prop: 'CouponsName',
minWidth: 150, minWidth: 150,
// fixed: 'left', fixed: 'left',
type: 'link', type: 'link',
slotName: 'CouponsName', slotName: 'CouponsName',
filter: { filter: {
...@@ -60,14 +65,25 @@ export const spotListConfig = { ...@@ -60,14 +65,25 @@ export const spotListConfig = {
{ {
label: '使用时间', label: '使用时间',
prop: 'UseDate', prop: 'UseDate',
minWidth: 80, minWidth: 90,
slotName: 'UseDate', emptyText: '-',
filter: {
type: 'rangeDate',
key: 'DatelistUse',
startplaceholder: '开始日期',
endplaceholder: '结束日期',
}
}, },
{ {
label: '旅客名单', label: '旅客名单',
prop: 'OrderGuestList', prop: 'OrderGuestList',
minWidth: 150, minWidth: 150,
slotName: 'OrderGuestList', slotName: 'OrderGuestList',
filter: {
type: 'input',
key: 'Name',
placeholder: '输入旅客名称'
}
}, },
{ {
label: '指定OP', label: '指定OP',
...@@ -90,7 +106,7 @@ export const spotListConfig = { ...@@ -90,7 +106,7 @@ export const spotListConfig = {
{ {
label: '应收总金额', label: '应收总金额',
prop: 'Money', prop: 'Money',
minWidth: 80, minWidth: 120,
slotName: 'Money', slotName: 'Money',
}, },
{ {
...@@ -129,12 +145,52 @@ export const spotListConfig = { ...@@ -129,12 +145,52 @@ export const spotListConfig = {
minWidth: 80, minWidth: 80,
slotName: 'Refund', slotName: 'Refund',
}, },
{
label: '收款单据',
prop: 'IncomeList',
minWidth: 125,
slotName: 'IncomeList',
},
{
label: '退款单据',
prop: 'RefundList',
minWidth: 125,
slotName: 'RefundList',
emptyText: '-'
},
{
label: '成本单据',
prop: 'CostList',
minWidth: 125,
slotName: 'CostList',
emptyText: '-'
},
{
label: '发票单据',
prop: 'InvoiceApplyList',
minWidth: 125,
slotName: 'InvoiceApplyList',
emptyText: '-'
},
{
label: '下单备注',
prop: 'Remark',
minWidth: 100,
slotName: 'Remark',
emptyText: '-'
},
{ {
label: '创建时间', label: '创建时间',
prop: 'CreateTime', prop: 'CreateTime',
minWidth: 100, minWidth: 120,
slotName: 'CreateTime', slotName: 'CreateTime',
emptyText: '-' emptyText: '-',
filter: {
type: 'rangeDate',
key: 'Datelist',
startplaceholder: '开始日期',
endplaceholder: '结束日期',
}
}, },
{ {
label: '状态', label: '状态',
...@@ -157,10 +213,13 @@ export const spotListConfig = { ...@@ -157,10 +213,13 @@ export const spotListConfig = {
} }
], ],
// 操作列配置 // 操作列配置
actionColumn: { actionColumn: {
label: '操作', label: '操作',
width: 150, width: 240,
minWidth: 150,
fixed: 'right' fixed: 'right'
}, },
...@@ -218,10 +277,10 @@ export const spotListConfig = { ...@@ -218,10 +277,10 @@ export const spotListConfig = {
}, },
{ {
key: 'Datelist', key: 'Datelist',
label: '邮轮时间', label: '使用时间',
type: 'date', type: 'date',
dateType: 'daterange', dateType: 'daterange',
placeholder: '选择邮轮时间', placeholder: '选择使用时间',
span: 8, span: 8,
} }
] ]
...@@ -230,24 +289,17 @@ export const spotListConfig = { ...@@ -230,24 +289,17 @@ export const spotListConfig = {
// 工具操作配置 // 工具操作配置
toolActions: [ toolActions: [
// { // {
// command: 'add', // command: 'export',
// label: '添加邮轮', // label: '导出数据',
// type: 'primary', // icon: 'el-icon-download',
// icon: 'el-icon-plus', // permission: 'scenic.export'
// permission: 'scenic.add' // },
// {
// command: 'importData',
// label: '导入数据',
// icon: 'el-icon-upload2',
// permission: 'scenic.import'
// }, // },
{
command: 'export',
label: '导出数据',
icon: 'el-icon-download',
permission: 'scenic.export'
},
{
command: 'importData',
label: '导入数据',
icon: 'el-icon-upload2',
permission: 'scenic.import'
},
{ {
command: 'refresh', command: 'refresh',
label: '刷新', label: '刷新',
...@@ -289,7 +341,7 @@ export const spotListConfig = { ...@@ -289,7 +341,7 @@ export const spotListConfig = {
// 默认查询参数 // 默认查询参数
defaultQueryParams: { defaultQueryParams: {
pageIndex: 1, pageIndex: 1,
pageSize: 25, pageSize: 15,
Name: '', Name: '',
StartTime: '', StartTime: '',
EndTime: '', EndTime: '',
...@@ -307,6 +359,11 @@ export const spotListConfig = { ...@@ -307,6 +359,11 @@ export const spotListConfig = {
Datelist: [], Datelist: [],
}, },
// 头部额外配置
headConfiguration: {
},
// 分页配置工具方法 // 分页配置工具方法
createPaginationConfig: (options = {}) => ({ createPaginationConfig: (options = {}) => ({
...spotListConfig.paginationConfig, ...spotListConfig.paginationConfig,
......
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
...@@ -1987,5 +1987,29 @@ export default { ...@@ -1987,5 +1987,29 @@ export default {
var language = localStorage.getItem('language') var language = localStorage.getItem('language')
return language; return language;
} }
Vue.prototype.deepFirstLetterToLower = function (obj) {
if (typeof obj !== 'object' || obj === null) return obj; // 非对象直接返回
// 处理数组:遍历每个元素递归转换
if (Array.isArray(obj)) {
return obj.map(item => deepFirstLetterToLower(item));
}
// 处理普通对象:遍历键值对递归转换
const newObj = {};
for (const key in obj) {
const value = obj[key];
// 键名首字母转小写(可选,根据需求)
const newKey = firstLetterToLower(key);
newObj[newKey] = deepFirstLetterToLower(value);
}
return newObj;
}
// 基础首字母转小写函数(同上)
Vue.prototype.firstLetterToLower = function (str) {
if (typeof str !== 'string' || str.length === 0) return '';
return str.charAt(0).toLowerCase() + str.slice(1);
}
} }
} }
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