Commit 1c623e9c authored by youjie's avatar youjie
parents 029c5f92 e3e2da93
......@@ -96,6 +96,91 @@
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>
<template>
......@@ -140,6 +225,42 @@
</li>
</ul>
</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>
<p style="margin: 15px 0">{{$t('objFill.v101.Complaints.zhidinclr')}}</p>
<el-select class="w150" v-model="EditMsg.NextPersion" filterable :placeholder="$t('pub.pleaseSel')">
......@@ -152,12 +273,24 @@
<!--<input type="button" class="normalBtn" value="暂存" @click="SaveData(1)"/>-->
<input type="button" class="normalBtn" :value="$t('pub.cancelBtn')"/>
</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>
</template>
<script>
export default {
data() {
return {
userInfo:{},
//主题内容
themeList: [],
//严重程度
......@@ -168,6 +301,10 @@
severityCked: [],
//员工
EmployeeList: [],
saveMsg:[],
picObj: [],
picIsShow:false,
initialIndex: 0,
//添加修改投诉
EditMsg: {
ID: 0,//编号
......@@ -181,6 +318,7 @@
NextPersion: '',//下一个审核人
LineID: 0,// 线路id
LineteamId: 0,//系列id
FileDataList:[],
},
//查询参数
QMsg: {
......@@ -195,6 +333,64 @@
mounted() {
},
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) {
item.isCheck = !item.isCheck;
......@@ -283,6 +479,12 @@
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 => {
if (res.data.resultCode == 1) {
this.Success(this.$t('objFill.v101.administrative.tianjiacg'));
......@@ -341,6 +543,7 @@
this.EditMsg.ID = this.$route.query.id;
},
mounted() {
this.userInfo = this.getLocalStorage();
this.getEnumeration();
this.getEmployeeList();
}
......
......@@ -29,6 +29,7 @@ export const listManagerMixin = {
IsLeave: 0,
},
EmployeeList: [],//员工
BranchList:[],//公司
//单选产品订单状态
OrderStatusType: [
// { Name: this.$t('OrderList.orderStatus.apply'), ID: '1' },
......@@ -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 = {}) {
......
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.
// 邮轮列表配置
export const spotListConfig = {
// 表格基础配置
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: 'OrderId',
label: '订单Id',
prop: 'OrderId',
minWidth: 100,
fixed: 'left',
slotName: 'OrderId',
filter: {
type: 'input',
key: 'OrderId',
placeholder: '输入订单Id'
}
},
{
id: 'scenic-name-column',
label: '邮轮名称',
prop: 'CouponsName',
minWidth: 150,
fixed: 'left',
type: 'link',
slotName: 'CouponsName',
filter: {
type: 'input',
key: 'CouponsName',
placeholder: '输入邮轮名称'
}
},
{
label: '使用时间',
prop: 'UseDate',
minWidth: 90,
emptyText: '-',
filter: {
type: 'rangeDate',
key: 'DatelistUse',
startplaceholder: '开始日期',
endplaceholder: '结束日期',
}
},
{
label: '旅客名单',
prop: 'OrderGuestList',
minWidth: 150,
slotName: 'OrderGuestList',
filter: {
type: 'input',
key: 'Name',
placeholder: '输入旅客名称'
}
},
{
label: '指定OP',
prop: 'AppointOPList',
minWidth: 150,
slotName: 'AppointOPList',
},
{
label: '供应商',
prop: 'SupplierModel',
minWidth: 150,
slotName: 'SupplierModel',
},
{
label: '成本',
prop: 'Meet',
minWidth: 80,
slotName: 'Meet',
},
{
label: '应收总金额',
prop: 'Money',
minWidth: 120,
slotName: 'Money',
},
{
label: '实收',
prop: 'Income',
minWidth: 80,
slotName: 'Income',
},
{
label: '待收',
prop: 'DueInMoney',
minWidth: 80,
slotName: 'DueInMoney',
},
{
label: '平台税金',
prop: 'PlatformTax',
minWidth: 80,
slotName: 'PlatformTax',
},
{
label: '平台在途',
prop: 'PlatformMoney',
minWidth: 80,
slotName: 'PlatformMoney',
},
{
label: '利润',
prop: 'profit',
minWidth: 80,
slotName: 'profit',
},
{
label: '退款',
prop: 'Refund',
minWidth: 80,
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: '创建时间',
prop: 'CreateTime',
minWidth: 120,
slotName: 'CreateTime',
emptyText: '-',
filter: {
type: 'rangeDate',
key: 'Datelist',
startplaceholder: '开始日期',
endplaceholder: '结束日期',
}
},
{
label: '状态',
prop: 'OrderStatusName',
minWidth: 80,
slotName: 'OrderStatusName',
filter: {
type: 'select',
key: 'StatusFilter',
placeholder: '选择状态',
options: [
{ label: '待确认', value: '1' },
{ label: '已确认', value: '2' },
{ label: '已取消', IvalueD: '3' },
{ label: '受损订单', value: '4' },
// { label: '正常', value: '0' },
// { label: '删除', value: '1' }
]
}
}
],
// 操作列配置
actionColumn: {
label: '操作',
width: 240,
minWidth: 150,
fixed: 'right'
},
// 高级查询配置
advancedSearchConfig: {
title: '高级查询',
buttonText: '高级查询',
width: 600,
fields: [
// {
// key: 'VisaTCNUM',
// label: '单号',
// type: 'input',
// span: 8,
// options: [] // 动态填充
// },
{
key: 'OrderId',
label: '订单号',
type: 'input',
span: 8,
},
{
key: 'Name',
label: '产品名称',
type: 'input',
span: 8,
},
{
key: 'VisaOrderStatus',
label: '订单状态',
type: 'select',
placeholder: '订单状态',
span: 8,
options: [] // 动态填充
},
{
key: 'IsFinish',
label: '完结状态',
type: 'select',
placeholder: '完结状态',
span: 8,
options: [] // 动态填充
},
{
key: 'CreateBy',
label: '业务员',
type: 'select',
placeholder: '业务员',
span: 8,
options: [] // 动态填充
},
{
key: 'OpEmpId',
label: 'OP',
type: 'select',
placeholder: 'OP',
span: 8,
options: [] // 动态填充
},
{
key: 'RB_Branch_Id',
label: '公司',
type: 'select',
placeholder: '公司',
span: 8,
options: [] // 动态填充
},
{
key: 'StartDate',
label: '报名日期',
type: 'date',
dateType: 'daterange',
placeholder: '选择报名日期',
span: 8,
},
{
key: 'FinishSDate',
label: '完结日期',
type: 'date',
dateType: 'daterange',
placeholder: '选择完结日期',
span: 8,
}
]
},
// 工具操作配置
toolActions: [
// {
// 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: 'dmc_get_visa_GetOrderVisaOrderList',//列表
listOP: 'dmc_get_visa_GetAdminVisaOrderList',//OP列表
cancel: 'ticket_post_CancelSaleTicketOrder',//取消
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:12,
StartDate:"",
EndDate:"",
FinishSDate:"",
FinishEDate:"",
SendStartDate:"",
SendEndDate:"",
Name:"",
VisaTCNUM:"",
VisaOrderStatus:"0",
CreateBy:0,
RB_Branch_Id:-1,
OrderId:0,
IsFinish:"0",
OpEmpId:0,
EnterID: 0,
DatelistUse: [],
Datelist: [],
},
// 头部额外配置
headConfiguration: {
},
// 分页配置工具方法
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.
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