jinhui.wang

ver:1.4.0,增加数据字典/虚拟航班维护页面,增加航班预审页面,修改输入框大小,状态,文本修正

Showing 42 changed files with 2792 additions and 2086 deletions
......@@ -6,4 +6,12 @@ export const getRouters = () => {
url: '/auth/getRouters',
method: 'post'
})
}
// 获取tableHeader
export const getTableHeader = () => {
return request({
url: '/table/getTableHeader',
method: 'get'
})
}
\ No newline at end of file
......
import request from '@/utils/request'
//数据字典名称
/**
* @param
*/
export function getDictNameList() {
return request({
url: '/dictionary/queryMain',
method: 'get',
})
}
//字典表查询
/**
* @param dictCode 字典名 *
* @param chineseName 数据名称
* @param page 页数 null
* @param size 每页长度 null
*/
export function getDictionaryList(data) {
return request({
url: '/dictionary/query',
method: 'post',
data: data
})
}
//serviceCode字典表查询
/**
* @param
*/
export function getServiceCodeList() {
return request({
url: '/dictionary/queryServiceCode',
method: 'get',
})
}
//新增字典(单条)
/**
* @param chineseName 字典名称 *
* @param description 描述
* @param dictCode 字典表名称 *
*/
export function addDict(data) {
return request({
url: '/dictionary/addDict',
method: 'POST',
data: data
})
}
//新增字典(批量)
/**
* @param nameList 字典名称 * list
* @param dictCode 字典表名称 *
*/
export function addDictBatch(data) {
return request({
url: '/dictionary/addDictBatch',
method: 'POST',
data: data
})
}
//serviceCode子字典添加
/**
* @param array [{}]
* @param serviceCodeKey serviceCode父级key *
* @param serviceCodeValue 字典名称 *
*/
export function addServiceCodeBatch(data) {
return request({
url: '/dictionary/addServiceCodeBatch',
method: 'POST',
data: data
})
}
//serviceCode子字典删除
/**
* @param array []
* @param serviceCodeValue 字典名称 *
*/
export function delServiceCodeCihild(data) {
return request({
url: '/dictionary/delServiceCodeCihild',
method: 'POST',
data: data
})
}
//字典删除
/**
* @param array []
* @param id 字典ID *
*/
export function delDict(data) {
return request({
url: '/dictionary/delDict',
method: 'POST',
data: data
})
}
//虚拟航班查询
/**
* @param flightNo 航班名称
* @param page 页数 null *
* @param size 每页长度 null *
*/
export function flightType(data) {
return request({
url: '/dictionary/flightType',
method: 'post',
data: data
})
}
//虚拟航班新增
/**
* @param flightNo 航班名称 list *
*/
export function addFlight(data) {
return request({
url: '/dictionary/addFlight',
method: 'post',
data: data
})
}
//虚拟航班新增
/**
* @param flightNo 航班名称 list *
*/
export function delFlight(data) {
return request({
url: '/dictionary/delFlight',
method: 'post',
data: data
})
}
\ No newline at end of file
......@@ -16,4 +16,15 @@ export function getDmDataList(data) {
method: 'post',
data: data
})
}
\ No newline at end of file
}
// 流水查询
/**
* @param accsId accsid *
*/
export function getDmFlowInformation(data) {
return request({
url: '/dmDataLog/getDmFlowInformation?' + data,
method: 'post',
})
}
......
import request from '@/utils/request'
//预审航班查询
/**
* @param fltNo 航班号
* @param suatus 状态
* @param page 页数
* @param size 每页条数
*/
export function getpreAudit(data) {
return request({
url: '/preAudit/query',
method: 'post',
data: data
})
}
//添加预审航班
/**
* @param 航班号 *
*/
export function addPreFlight(data) {
return request({
url: '/preAudit/addFlight',
method: 'post',
data: data
})
}
//添加预审航班
/**
* @param id 航班id *
* @param status 状态 * 0关闭 1开启 2删除
*/
export function updatePreStatus(data) {
return request({
url: '/preAudit/updateStatus',
method: 'post',
data: data
})
}
import request from '@/utils/request'
import { praseStrEmpty } from "@/utils/FedEx";
// // 修改用户
// export function updateUser(data) {
// return request({
// url: '/system/user',
// method: 'put',
// data: data
// })
// }
// // 导出用户
// export function exportUser(query) {
// return request({
// url: '/system/user/export',
// method: 'get',
// params: query
// })
// }
// // 用户密码重置
// export function resetUserPwd(userId, password) {
// const data = {
// userId,
// password
// }
// return request({
// url: '/system/user/resetPwd',
// method: 'put',
// data: data
// })
// }
// // 用户状态修改
// export function changeUserStatus(userId, status) {
// const data = {
// userId,
// status
// }
// return request({
// url: '/system/user/changeStatus',
// method: 'put',
// data: data
// })
// }
// // 查询用户个人信息
// export function getUserProfile() {
// return request({
// url: '/system/user/profile',
// method: 'get'
// })
// }
// // 修改用户个人信息
// export function updateUserProfile(data) {
// return request({
// url: '/system/user/profile',
// method: 'put',
// data: data
// })
// }
// // 用户密码重置
// export function updateUserPwd(oldPassword, newPassword) {
// const data = {
// oldPassword,
// newPassword
// }
// return request({
// url: '/system/user/profile/updatePwd',
// method: 'put',
// params: data
// })
// }
// // 用户头像上传
// export function uploadAvatar(data) {
// return request({
// url: '/system/user/profile/avatar',
// method: 'post',
// data: data
// })
// }
// // 下载用户导入模板
// export function importTemplate() {
// return request({
// url: '/system/user/importTemplate',
// method: 'get'
// })
// }
// 查询用户列表
/**
* @param page 页码 *
......@@ -258,4 +167,28 @@ export function changeCurrentPort(data) {
method: 'post',
data: data
})
}
//获取用户设置表头
/**
* @param tableName 表名 *
*/
export function getHeaderOrder(data) {
return request({
url: '/table/getHeaderOrder?' + data,
method: 'get',
})
}
//保存用户设置表头
/**
* @param tableName 表名 *
* @param idList 显示表头集合 *
*/
export function saveTableHeader(data) {
return request({
url: '/table/saveTableHeader',
method: 'post',
data: data
})
}
\ No newline at end of file
......
......@@ -7,16 +7,6 @@ let ductLabels = {
"releasing": {
"1": "正在释放"
},
"cargoAllocationDataStatus": {
"已推送": "已推送",
"不推送": "不推送",
"已配": " ",
"待推送": "待推送",
"手动配舱": ' ',
"已释放": ' ',
"原航班配舱": ' ',
"顺位配舱": ' ',
},
},
"menu": {//菜单设置
"menuType": {
......@@ -49,6 +39,7 @@ let ductLabels = {
"needRequired": {
"1": "是",
"0": "否",
"2": "未设置"
},
"highLowPriceFlg": {
"1": "开启",
......@@ -59,16 +50,71 @@ let ductLabels = {
"2": "否",
},
},
"logDmData": {//DM数据
"flightRand": {//航班顺位设置
"status": {
"0": "执行中",
"1": "有效",
"3": "停用"
}
},
"FlightAlloc": {//航班配舱设置
"status": {
"0": "无效",
"1": "有效",
"2": "配置中",
"3": "停用"
}
},
"logDmData": {//DM数据
"statusDetailCode": {
"0": "未处理",
"1": "已处理",
"2": "无需处理",
"3": "处理失败",
"4": "校验不通过",
"5": "数据不能被多次处理",
"1": "处理成功",
"2_1": "已处理(数据丢弃)",
"2_2": "已处理(数据丢弃)",
"2_3": "已处理(数据丢弃)",
"2_4": "已处理(数据丢弃)",
"3_1": "已处理(异常处理)",
"3_2": "处理失败(系统异常)",
"3_3": "处理失败(系统异常)",
"3_4": "处理失败(系统异常)",
"4_1": "处理失败(数据异常)",
"4_2": "处理失败(数据异常)",
"4_3": "处理失败(其他系统异常)",
"5": "处理失败(系统异常)",
"9": "处理中",
},
"weatherGenerateWater": {
"1": "是",
"0": "否"
},
"sendLogSendResult": {
"0": "未推",
"1": "推送成功",
"2": "推送失败"
}
},
"weatherTable": {
"highLowPriceFlg": {
"1": "开启",
"0": "关闭"
},
"operationSource": {
"1": "pre-MD cutoff",
"2": "航班迁转手动释放",
"3": "预审不通过定时任务",
"4": "自动配舱"
},
"weightMark": {
"1": "增加",
"-1": "减少"
}
},
"preFlight": {//航班预审
"status": {
"0": "关闭",
"1": "开启"
}
}
}
......
......@@ -2,1129 +2,1182 @@ let tableHeaders = {
//货物查询
"cargo": [
{
name: "口岸代码",
value: "portName",
width: "100",
align: "center",
sorTable: true,
columnChineseName: "口岸代码",
columnName: "portName",
columnWidth: "100",
ext1: "sorTable",
status: 1
},
{
name: "取件日期",
value: "pickUpDate",
width: "120",
align: "center",
sorTable: true,
columnChineseName: "取件日期",
columnName: "pickUpDate",
columnWidth: "120",
ext1: "sorTable",
status: 1
},
{
name: "取件扫描号",
value: "pickUpScanNo",
width: "120",
align: "center",
sorTable: true,
columnChineseName: "取件扫描号",
columnName: "pickUpScanNo",
columnWidth: "120",
ext1: "sorTable",
status: 1
},
{
name: "站点",
value: "siteName",
width: "80",
align: "center",
sorTable: true,
columnChineseName: "站点",
columnName: "siteName",
columnWidth: "80",
ext1: "sorTable",
status: 1
},
{
name: "运单号",
value: "waybillNo",
width: "120",
align: "center",
sorTable: true,
columnChineseName: "运单号",
columnName: "waybillNo",
columnWidth: "120",
ext1: "sorTable",
status: 1
},
{
name: "总单号",
value: "totalWaybillNo",
width: "120",
align: "center",
sorTable: true,
columnChineseName: "总单号",
columnName: "totalWaybillNo",
columnWidth: "120",
ext1: "sorTable",
status: 1
},
{
name: "服务类型",
value: "serviceTypeName",
width: "100",
align: "center",
sorTable: true,
columnChineseName: "服务类型",
columnName: "serviceTypeName",
columnWidth: "100",
ext1: "sorTable",
status: 1
},
{
name: "服务代码",
value: "serviceCode",
width: "100",
align: "center",
sorTable: false,
columnChineseName: "服务代码",
columnName: "serviceCode",
columnWidth: "100",
status: 1
},
{
name: "URSA",
value: "ursa",
width: "100",
align: "center",
sorTable: true,
columnChineseName: "URSA",
columnName: "ursa",
columnWidth: "100",
ext1: "sorTable",
status: 1
},
{
name: "推送状态",
value: "cargoAllocationDataStatus",
width: "100",
align: "center",
sorTable: true,
columnChineseName: "推送状态",
columnName: "cargoPushStatus",
columnWidth: "100",
ext1: "sorTable",
status: 1
},
{
name: "配舱状态",
value: "flightIdImac",
width: "100",
align: "center",
sorTable: true,
columnChineseName: "配舱状态",
columnName: "flightIdImac",
columnWidth: "100",
ext1: "sorTable",
status: 1
},
{
name: "释放状态",
value: "releasing",
width: "100",
align: "center",
sorTable: true,
columnChineseName: "释放状态",
columnName: "releasing",
columnWidth: "100",
ext1: "sorTable",
status: 1
},
{
name: "申报类型",
value: "typeName",
width: "100",
align: "center",
sorTable: true,
columnChineseName: "申报类型",
columnName: "typeName",
columnWidth: "100",
ext1: "sorTable",
status: 1
},
{
name: "ACCSpool",
value: "accsPool",
width: "120",
align: "center",
sorTable: true,
columnChineseName: "ACCSpool",
columnName: "accsPool",
columnWidth: "120",
ext1: "sorTable",
status: 1
},
{
name: "HandlingCode",
value: "handingCode",
width: "150",
align: "center",
sorTable: true,
columnChineseName: "HandlingCode",
columnName: "handingCode",
columnWidth: "150",
ext1: "sorTable",
status: 1
},
{
name: "subcategory",
value: "subCategory",
width: "140",
align: "center",
sorTable: true,
columnChineseName: "subcategory",
columnName: "subCategory",
columnWidth: "140",
ext1: "sorTable",
status: 1
},
{
name: "件数",
value: "qty",
width: "80",
align: "center",
sorTable: true,
columnChineseName: "件数",
columnName: "qty",
columnWidth: "80",
ext1: "sorTable",
status: 1
},
{
name: "实际重量",
value: "actualWeight",
width: "100",
align: "center",
sorTable: true,
columnChineseName: "实际重量",
columnName: "actualWeight",
columnWidth: "100",
ext1: "sorTable",
status: 1
},
{
name: "收件人国家代码",
value: "consigneeCountry",
width: "150",
align: "center",
sorTable: true,
columnChineseName: "收件人国家代码",
columnName: "consigneeCountry",
columnWidth: "150",
ext1: "sorTable",
status: 1
},
{
name: "品名描述",
value: "nameDescription",
width: "100",
align: "center",
sorTable: false,
columnChineseName: "品名描述",
columnName: "nameDescription",
columnWidth: "100",
status: 1
},
{
name: "海关回执状态",
value: "customsReceiptStatusName",
width: "140",
align: "center",
sorTable: true,
columnChineseName: "海关回执状态",
columnName: "customsReceiptStatusName",
columnWidth: "140",
ext1: "sorTable",
status: 1
},
{
name: "预审状态",
value: "preQualificationStatus",
width: "100",
align: "center",
sorTable: true,
columnChineseName: "预审状态",
columnName: "preQualificationStatus",
columnWidth: "100",
ext1: "sorTable",
status: 1
},
{
name: "航班预审意见",
value: "caPretrialOpinion",
width: "120",
align: "center",
sorTable: false,
columnChineseName: "航班预审意见",
columnName: "caPretrialOpinion",
columnWidth: "120",
status: 1
},
{
name: "货物状态",
value: "statusName",
width: "100",
align: "center",
sorTable: true,
columnChineseName: "货物状态",
columnName: "statusName",
columnWidth: "100",
ext1: "sorTable",
status: 1
},
{
name: "终配航班号",
value: "finalFlightNo",
width: "120",
align: "center",
sorTable: true,
columnChineseName: "终配航班号",
columnName: "finalFlightNo",
columnWidth: "120",
ext1: "sorTable",
status: 1
},
{
name: "终配航班日期",
value: "finalFlightTime",
width: "140",
align: "center",
sorTable: true,
columnChineseName: "终配航班日期",
columnName: "finalFlightTime",
columnWidth: "140",
ext1: "sorTable",
status: 1
},
{
name: "二配航班号",
value: "twoMatchFlightNo",
width: "120",
align: "center",
sorTable: true,
columnChineseName: "二配航班号",
columnName: "twoMatchFlightNo",
columnWidth: "120",
ext1: "sorTable",
status: 1
},
{
name: "二配航班日期",
value: "twoMatchFlightTime",
width: "150",
align: "center",
sorTable: true,
columnChineseName: "二配航班日期",
columnName: "twoMatchFlightTime",
columnWidth: "150",
ext1: "sorTable",
status: 1
},
{
name: "预配航班号",
value: "preplanFlightNo",
width: "120",
align: "center",
sorTable: true,
columnChineseName: "预配航班号",
columnName: "preplanFlightNo",
columnWidth: "120",
ext1: "sorTable",
status: 1
},
{
name: "预配航班日期",
value: "preplanFlightTime",
width: "150",
align: "center",
sorTable: true,
columnChineseName: "预配航班日期",
columnName: "preplanFlightTime",
columnWidth: "150",
ext1: "sorTable",
status: 1
},
{
name: "ACCS原航班号",
value: "fltNoAccs",
width: "150",
align: "center",
sorTable: true,
columnChineseName: "ACCS原航班号",
columnName: "fltNoAccs",
columnWidth: "150",
ext1: "sorTable",
status: 1
},
{
name: "ACCS原航班日期",
value: "fltDateAccs",
width: "150",
align: "center",
sorTable: true,
columnChineseName: "ACCS原航班日期",
columnName: "fltDateAccs",
columnWidth: "150",
ext1: "sorTable",
status: 1
},
{
name: "ACCS原航线",
value: "accsFlightRoute",
width: "140",
align: "center",
sorTable: true,
columnChineseName: "ACCS原航线",
columnName: "accsFlightRoute",
columnWidth: "140",
ext1: "sorTable",
status: 1
},
{
name: "是否RDE手工录入",
value: "manualRde",
width: "170",
align: "center",
sorTable: true,
columnChineseName: "是否RDE手工录入",
columnName: "manualRde",
columnWidth: "170",
ext1: "sorTable",
status: 1
},
{
name: "是否自动",
value: "cargoRulesStatus",
width: "100",
align: "center",
sorTable: true,
columnChineseName: "是否自动",
columnName: "cargoRulesStatus",
columnWidth: "100",
ext1: "sorTable",
status: 1
},
{
name: "发件人账号",
value: "shipperAccount",
width: "120",
align: "center",
columnChineseName: "发件人账号",
columnName: "shipperAccount",
columnWidth: "120",
status: 1
},
{
name: "发件公司中文名称",
value: "shipperCompany",
width: "150",
align: "center",
columnChineseName: "发件公司中文名称",
columnName: "shipperCompany",
columnWidth: "150",
status: 1
},
{
name: "始发地城市名称",
value: "originCity",
width: "130",
align: "center",
sorTable: false,
columnChineseName: "始发地城市名称",
columnName: "originCity",
columnWidth: "130",
status: 1
},
{
name: "收件地",
value: "destinationSiteName",
width: "90",
align: "center",
columnChineseName: "收件地",
columnName: "destinationSiteName",
columnWidth: "90",
status: 1
},
{
name: "尺寸",
value: "sizeStr",
width: "80",
align: "center",
sorTable: true,
columnChineseName: "尺寸",
columnName: "sizeStr",
columnWidth: "80",
ext1: "sorTable",
status: 1
},
{
name: "大货预审意见(是否可以配置航班)",
value: "bigPretrialOpinion",
width: "200",
align: "center",
columnChineseName: "大货预审意见(是否可以配置航班)",
columnName: "bigPretrialOpinion",
columnWidth: "200",
status: 1
},
{
name: "大货预审时间",
value: "bigPretrialTime",
width: "120",
align: "center",
columnChineseName: "大货预审时间",
columnName: "bigPretrialTime",
columnWidth: "120",
status: 1
},
{
name: "海关回执时间",
value: "customsReceiptTime",
width: "150",
align: "center",
sorTable: true,
columnChineseName: "海关回执时间",
columnName: "customsReceiptTime",
columnWidth: "150",
ext1: "sorTable",
status: 1
},
{
name: "航班预审时间",
value: "caPretrialTime",
width: "150",
align: "center",
sorTable: true,
columnChineseName: "航班预审时间",
columnName: "caPretrialTime",
columnWidth: "150",
ext1: "sorTable",
status: 1
},
{
name: "创建人",
value: "createUserName",
width: "90",
align: "center",
sorTable: true,
columnChineseName: "创建人",
columnName: "createUserName",
columnWidth: "90",
ext1: "sorTable",
status: 1
},
{
name: "创建时间",
value: "createTime",
width: "100",
align: "center",
sorTable: true,
columnChineseName: "创建时间",
columnName: "createTime",
columnWidth: "100",
ext1: "sorTable",
status: 1
},
],
//航班信息维护
"FlightInformation": [
{
name: "航班日期",
value: "fltDate",
width: "100",
align: "center",
columnChineseName: "航班日期",
columnName: "fltDate",
columnWidth: "100",
status: 1
},
{
name: "航班起飞时间",
value: "takeOffTime",
width: "120",
align: "center",
columnChineseName: "航班起飞时间",
columnName: "takeOffTime",
columnWidth: "120",
status: 1
},
{
name: "Pre-MDE CutOff时间",
value: "cutOffTime",
width: "150",
align: "center",
columnChineseName: "Pre-MDE CutOff时间",
columnName: "cutOffTime",
columnWidth: "150",
status: 1
},
{
name: "航班号",
value: "fltNo",
width: "100",
align: "center",
columnChineseName: "航班号",
columnName: "fltNo",
columnWidth: "100",
status: 1
},
{
name: "航班路线",
value: "route",
width: "140",
align: "center",
columnChineseName: "航班路线",
columnName: "route",
columnWidth: "140",
status: 1
},
{
name: "航班类型",
value: "typeName",
width: "100",
align: "center",
columnChineseName: "航班类型",
columnName: "typeName",
columnWidth: "100",
status: 1
},
{
name: "航班种类",
value: "flightKindName",
width: "100",
align: "center",
columnChineseName: "航班种类",
columnName: "flightKindName",
columnWidth: "100",
status: 1
},
{
name: "航班状态",
value: "statusName",
width: "100",
align: "center",
columnChineseName: "航班状态",
columnName: "statusName",
columnWidth: "100",
status: 1
},
{
name: "是否自动推送",
value: "pushDateSwitch",
width: "120",
align: "center",
columnChineseName: "是否自动推送",
columnName: "pushDateSwitch",
columnWidth: "120",
status: 1
},
{
name: "总重量",
value: "totalWeight",
width: "90",
align: "center",
columnChineseName: "总重量",
columnName: "totalWeight",
columnWidth: "90",
status: 1
},
{
name: "原始重量(KG)",
value: "originalWeight",
width: "120",
align: "center",
columnChineseName: "原始重量(KG)",
columnName: "originalWeight",
columnWidth: "120",
status: 1
},
{
name: "已配重量",
value: "alloctedWeight",
width: "90",
align: "center",
columnChineseName: "已配重量",
columnName: "alloctedWeight",
columnWidth: "90",
status: 1
},
{
name: "总体积(cm³)",
value: "totalVolume",
width: "100",
align: "center",
columnChineseName: "总体积(cm³)",
columnName: "totalVolume",
columnWidth: "100",
status: 1
},
{
name: "已配体积(cm³)",
value: "alloctedVolume",
width: "120",
align: "center",
columnChineseName: "已配体积(cm³)",
columnName: "alloctedVolume",
columnWidth: "120",
status: 1
},
{
name: "是否需要预审",
value: "needRequired",
width: "130",
align: "center",
columnChineseName: "是否需要预审",
columnName: "needRequired",
columnWidth: "130",
status: 1
},
{
name: "是否开启高低价",
value: "highLowPriceFlg",
width: "140",
align: "center",
columnChineseName: "是否开启高低价",
columnName: "highLowPriceFlg",
columnWidth: "140",
status: 1
},
{
name: "是否限制一票一件",
value: "ticketToPiece",
width: "140",
align: "center",
columnChineseName: "是否限制一票一件",
columnName: "ticketToPiece",
columnWidth: "140",
status: 1
},
{
name: "额外增重百分比",
value: "extraWeightPercent",
width: "140",
align: "center",
columnChineseName: "额外增重百分比",
columnName: "extraWeightPercent",
columnWidth: "140",
status: 1
},
{
name: "高价百分比",
value: "highPriceWeightPercent",
width: "120",
align: "center",
columnChineseName: "高价百分比",
columnName: "highPriceWeightPercent",
columnWidth: "120",
status: 1
},
{
name: "低价百分比",
value: "lowPriceWeightPercent",
width: "120",
align: "center",
columnChineseName: "低价百分比",
columnName: "lowPriceWeightPercent",
columnWidth: "120",
status: 1
},
{
name: "航班优先级",
value: "priorityName",
width: "100",
align: "center",
columnChineseName: "航班优先级",
columnName: "priorityName",
columnWidth: "100",
status: 1
},
{
name: "配舱优先级",
value: "priorityRuleName",
width: "100",
align: "center",
columnChineseName: "配舱优先级",
columnName: "priorityRuleName",
columnWidth: "100",
status: 1
},
{
name: "创建人",
value: "createUserName",
width: "90",
align: "center",
columnChineseName: "创建人",
columnName: "createUserName",
columnWidth: "90",
status: 1
},
{
name: "创建时间",
value: "createTime",
width: "100",
align: "center",
columnChineseName: "创建时间",
columnName: "createTime",
columnWidth: "100",
status: 1
},
{
name: "最后修改人",
value: "lastModifyUserName",
width: "120",
align: "center",
columnChineseName: "最后修改人",
columnName: "lastModifyUserName",
columnWidth: "120",
status: 1
},
{
name: "最后修改时间",
value: "lastModifyTime",
width: "120",
align: "center",
columnChineseName: "最后修改时间",
columnName: "lastModifyTime",
columnWidth: "120",
status: 1
},
],
//手动配舱
"cargoAllocation": [
"allocationCargo": [
{
name: "口岸代码",
value: "portName",
width: "100",
align: "center",
sorTable: true,
columnChineseName: "口岸代码",
columnName: "portName",
columnWidth: "100",
ext1: "sorTable",
status: 1
},
{
name: "取件日期",
value: "pickUpDate",
width: "120",
align: "center",
sorTable: true,
columnChineseName: "取件日期",
columnName: "pickUpDate",
columnWidth: "120",
ext1: "sorTable",
status: 1
},
{
name: "取件扫描号",
value: "pickUpScanNo",
width: "120",
align: "center",
sorTable: true,
columnChineseName: "取件扫描号",
columnName: "pickUpScanNo",
columnWidth: "120",
ext1: "sorTable",
status: 1
},
{
name: "站点",
value: "siteName",
width: "80",
align: "center",
sorTable: true,
columnChineseName: "站点",
columnName: "siteName",
columnWidth: "80",
ext1: "sorTable",
status: 1
},
{
name: "运单号",
value: "waybillNo",
width: "120",
align: "center",
sorTable: true,
columnChineseName: "运单号",
columnName: "waybillNo",
columnWidth: "120",
ext1: "sorTable",
status: 1
},
{
name: "总单号",
value: "totalWaybillNo",
width: "120",
align: "center",
sorTable: true,
columnChineseName: "总单号",
columnName: "totalWaybillNo",
columnWidth: "120",
ext1: "sorTable",
status: 1
},
{
name: "服务类型",
value: "serviceTypeName",
width: "100",
align: "center",
sorTable: true,
columnChineseName: "服务类型",
columnName: "serviceTypeName",
columnWidth: "100",
ext1: "sorTable",
status: 1
},
{
name: "服务代码",
value: "serviceCode",
width: "100",
align: "center",
sorTable: false,
columnChineseName: "服务代码",
columnName: "serviceCode",
columnWidth: "100",
ext1: false,
status: 1
},
{
name: "URSA",
value: "ursa",
width: "100",
align: "center",
sorTable: true,
columnChineseName: "URSA",
columnName: "ursa",
columnWidth: "100",
ext1: "sorTable",
status: 1
},
{
name: "申报类型",
value: "typeName",
width: "100",
align: "center",
sorTable: true,
columnChineseName: "申报类型",
columnName: "typeName",
columnWidth: "100",
ext1: "sorTable",
status: 1
},
{
name: "HandlingCode",
value: "handingCode",
width: "150",
align: "center",
sorTable: true,
columnChineseName: "HandlingCode",
columnName: "handingCode",
columnWidth: "150",
ext1: "sorTable",
status: 1
},
{
name: "subcategory",
value: "subCategory",
width: "140",
align: "center",
sorTable: true,
columnChineseName: "subcategory",
columnName: "subCategory",
columnWidth: "140",
ext1: "sorTable",
status: 1
},
{
name: "件数",
value: "qty",
width: "80",
align: "center",
sorTable: true,
columnChineseName: "件数",
columnName: "qty",
columnWidth: "80",
ext1: "sorTable",
status: 1
},
{
name: "实际重量",
value: "actualWeight",
width: "100",
align: "center",
sorTable: true,
columnChineseName: "实际重量",
columnName: "actualWeight",
columnWidth: "100",
ext1: "sorTable",
status: 1
},
{
name: "收件人国家代码",
value: "consigneeCountry",
width: "150",
align: "center",
sorTable: true,
columnChineseName: "收件人国家代码",
columnName: "consigneeCountry",
columnWidth: "150",
ext1: "sorTable",
status: 1
},
{
name: "品名描述",
value: "nameDescription",
width: "100",
align: "center",
sorTable: false,
columnChineseName: "品名描述",
columnName: "nameDescription",
columnWidth: "100",
status: 1
},
{
name: "海关回执状态",
value: "customsReceiptStatusName",
width: "140",
align: "center",
sorTable: true,
columnChineseName: "海关回执状态",
columnName: "customsReceiptStatusName",
columnWidth: "140",
ext1: "sorTable",
status: 1
},
{
name: "预审状态",
value: "preQualificationStatus",
width: "100",
align: "center",
sorTable: true,
columnChineseName: "预审状态",
columnName: "preQualificationStatus",
columnWidth: "100",
ext1: "sorTable",
status: 1
},
{
name: "航班预审意见",
value: "caPretrialOpinion",
width: "120",
align: "center",
columnChineseName: "航班预审意见",
columnName: "caPretrialOpinion",
columnWidth: "120",
status: 1
},
{
name: "货物状态",
value: "statusName",
width: "100",
align: "center",
sorTable: true,
columnChineseName: "货物状态",
columnName: "statusName",
columnWidth: "100",
ext1: "sorTable",
status: 1
},
{
name: "终配航班号",
value: "finalFlightNo",
width: "120",
align: "center",
sorTable: true,
columnChineseName: "终配航班号",
columnName: "finalFlightNo",
columnWidth: "120",
ext1: "sorTable",
status: 1
},
{
name: "终配航班日期",
value: "finalFlightTime",
width: "140",
align: "center",
sorTable: true,
columnChineseName: "终配航班日期",
columnName: "finalFlightTime",
columnWidth: "140",
ext1: "sorTable",
status: 1
},
{
name: "二配航班号",
value: "twoMatchFlightNo",
width: "120",
align: "center",
sorTable: true,
columnChineseName: "二配航班号",
columnName: "twoMatchFlightNo",
columnWidth: "120",
ext1: "sorTable",
status: 1
},
{
name: "二配航班日期",
value: "twoMatchFlightTime",
width: "150",
align: "center",
sorTable: true,
columnChineseName: "二配航班日期",
columnName: "twoMatchFlightTime",
columnWidth: "150",
ext1: "sorTable",
status: 1
},
{
name: "预配航班号",
value: "preplanFlightNo",
width: "120",
align: "center",
sorTable: true,
columnChineseName: "预配航班号",
columnName: "preplanFlightNo",
columnWidth: "120",
ext1: "sorTable",
status: 1
},
{
name: "预配航班日期",
value: "preplanFlightTime",
width: "150",
align: "center",
sorTable: true,
columnChineseName: "预配航班日期",
columnName: "preplanFlightTime",
columnWidth: "150",
ext1: "sorTable",
status: 1
},
{
name: "ACCS原航班号",
value: "fltNoAccs",
width: "150",
align: "center",
sorTable: true,
columnChineseName: "ACCS原航班号",
columnName: "fltNoAccs",
columnWidth: "150",
ext1: "sorTable",
status: 1
},
{
name: "ACCS原航班日期",
value: "fltDateAccs",
width: "150",
align: "center",
sorTable: true,
columnChineseName: "ACCS原航班日期",
columnName: "fltDateAccs",
columnWidth: "150",
ext1: "sorTable",
status: 1
},
{
name: "ACCS原航线",
value: "accsFlightRoute",
width: "140",
align: "center",
sorTable: true,
columnChineseName: "ACCS原航线",
columnName: "accsFlightRoute",
columnWidth: "140",
ext1: "sorTable",
status: 1
},
{
name: "是否RDE手工录入",
value: "manualRde",
width: "170",
align: "center",
sorTable: true,
columnChineseName: "是否RDE手工录入",
columnName: "manualRde",
columnWidth: "170",
ext1: "sorTable",
status: 1
},
{
name: "是否自动",
value: "cargoRulesStatus",
width: "100",
align: "center",
sorTable: true,
columnChineseName: "是否自动",
columnName: "cargoRulesStatus",
columnWidth: "100",
ext1: "sorTable",
status: 1
},
{
name: "发件人账号",
value: "shipperAccount",
width: "120",
align: "center",
columnChineseName: "发件人账号",
columnName: "shipperAccount",
columnWidth: "120",
status: 1
},
{
name: "发件公司中文名称",
value: "shipperCompany",
width: "150",
align: "center",
columnChineseName: "发件公司中文名称",
columnName: "shipperCompany",
columnWidth: "150",
status: 1
},
{
name: "始发地城市名称",
value: "originCity",
width: "130",
align: "center",
columnChineseName: "始发地城市名称",
columnName: "originCity",
columnWidth: "130",
status: 1
},
{
name: "收件地",
value: "destinationSiteName",
width: "90",
align: "center",
columnChineseName: "收件地",
columnName: "destinationSiteName",
columnWidth: "90",
status: 1
},
{
name: "尺寸",
value: "sizeStr",
width: "80",
align: "center",
sorTable: true,
columnChineseName: "尺寸",
columnName: "sizeStr",
columnWidth: "80",
ext1: "sorTable",
status: 1
},
{
name: "大货预审意见(是否可以配置航班)",
value: "bigPretrialOpinion",
width: "250",
align: "center",
columnChineseName: "大货预审意见(是否可以配置航班)",
columnName: "bigPretrialOpinion",
columnWidth: "250",
status: 1
},
{
name: "大货预审时间",
value: "bigPretrialTime",
width: "120",
align: "center",
columnChineseName: "大货预审时间",
columnName: "bigPretrialTime",
columnWidth: "120",
status: 1
},
{
name: "海关回执时间",
value: "customsReceiptTime",
width: "150",
align: "center",
sorTable: true,
columnChineseName: "海关回执时间",
columnName: "customsReceiptTime",
columnWidth: "150",
ext1: "sorTable",
status: 1
},
{
name: "航班预审时间",
value: "caPretrialTime",
width: "150",
align: "center",
sorTable: true,
columnChineseName: "航班预审时间",
columnName: "caPretrialTime",
columnWidth: "150",
ext1: "sorTable",
status: 1
},
{
name: "创建人",
value: "createUserName",
width: "90",
align: "center",
sorTable: true,
columnChineseName: "创建人",
columnName: "createUserName",
columnWidth: "90",
ext1: "sorTable",
status: 1
},
{
name: "创建时间",
value: "createTime",
width: "100",
align: "center",
sorTable: true,
columnChineseName: "创建时间",
columnName: "createTime",
columnWidth: "100",
ext1: "sorTable",
status: 1
},
],
//航班顺位
"flightRand": [
{
columnChineseName: "原航班",
columnName: "sourceFlightNo",
columnWidth: "",
status: 1
},
{
columnChineseName: "配载航班排序",
columnName: "flightRank",
columnWidth: "",
status: 1
},
{
columnChineseName: "周期",
columnName: "dayOfWeek",
columnWidth: "",
status: 1
},
{
columnChineseName: "状态",
columnName: "status",
columnWidth: "",
status: 1
},
{
columnChineseName: "开始时间",
columnName: "startDate",
columnWidth: "",
status: 1
},
{
columnChineseName: "结束时间",
columnName: "endDate",
columnWidth: "",
status: 1
},
{
columnChineseName: "最后修改人",
columnName: "updateUserName",
columnWidth: "",
status: 1
},
{
columnChineseName: "最后修改时间",
columnName: "updateTime",
columnWidth: "",
status: 1
},
],
//航班配舱
"flightAlloc": [
{
columnChineseName: "航班号",
columnName: "purposeOfFlightNo",
columnWidth: "",
status: 1
},
{
columnChineseName: "状态",
columnName: "status",
columnWidth: "",
status: 1
},
{
columnChineseName: "操作人",
columnName: "createUserName",
columnWidth: "",
status: 1
},
{
columnChineseName: "更新时间",
columnName: "createTime",
columnWidth: "",
status: 1
},
],
//角色设置
"role": [
{
name: "角色名称",
value: "name",
width: "150px",
align: "center",
columnChineseName: "角色名称",
columnName: "name",
columnWidth: "150px",
status: 1
},
{
name: "角色状态",
value: "valid",
width: "150px",
align: "center",
columnChineseName: "角色状态",
columnName: "valid",
columnWidth: "150px",
status: 1
},
{
name: "创建人",
value: "createUserName",
width: "150px",
align: "center",
columnChineseName: "创建人",
columnName: "createUserName",
columnWidth: "150px",
status: 1
},
{
name: "创建时间",
value: "createTime",
width: "150px",
align: "center",
columnChineseName: "创建时间",
columnName: "createTime",
columnWidth: "150px",
status: 1
},
{
name: "修改时间",
value: "updateTime",
width: "150px",
align: "center",
columnChineseName: "修改时间",
columnName: "updateTime",
columnWidth: "150px",
status: 1
},
{
name: "备注",
value: "remark",
width: "400px",
align: "center",
columnChineseName: "备注",
columnName: "remark",
columnWidth: "400px",
status: 1
},
],
//用户设置
"user": [
{
name: "员工号",
value: "loginName",
width: "150px",
align: "center",
columnChineseName: "员工号",
columnName: "loginName",
columnWidth: "150px",
status: 1
},
{
name: "用户姓名",
value: "username",
width: "150px",
align: "center",
columnChineseName: "用户姓名",
columnName: "username",
columnWidth: "150px",
status: 1
},
{
name: "所属口岸",
value: "portName",
width: "150px",
align: "center",
columnChineseName: "所属口岸",
columnName: "portName",
columnWidth: "150px",
status: 1
},
{
name: "所属角色",
value: "roleNames",
width: "150px",
align: "center",
columnChineseName: "所属角色",
columnName: "roleNames",
columnWidth: "150px",
status: 1
},
{
name: "电子邮箱",
value: "email",
width: "150px",
align: "center",
columnChineseName: "电子邮箱",
columnName: "email",
columnWidth: "150px",
status: 1
},
{
name: "用户状态",
value: "isValid",
width: "100px",
align: "center",
columnChineseName: "用户状态",
columnName: "isValid",
columnWidth: "100px",
status: 1
},
{
name: "修改时间",
value: "updateTime",
width: "150px",
align: "center",
columnChineseName: "修改时间",
columnName: "updateTime",
columnWidth: "150px",
status: 1
},
{
name: "备注",
value: "remark",
width: "150px",
align: "center",
columnChineseName: "备注",
columnName: "remark",
columnWidth: "150px",
status: 1
},
],
//dm数据处理
"DM": [
{
name: "DMaccsId",
value: "dmAccsId",
width: "",
align: "center",
columnChineseName: "运单号",
columnName: "awbNbr",
columnWidth: "150",
status: 1,
slot: true
},
{
columnChineseName: "配舱备注",
columnName: "remarksDetail",
columnWidth: "450",
status: 1
},
{
columnChineseName: "回推ACCS结果",
columnName: "sendLogSendResult",
columnWidth: "120",
status: 1
},
{
columnChineseName: "处理状态",
columnName: "statusDetailCode",
columnWidth: "150",
status: 1
},
{
columnChineseName: "处理结果",
columnName: "statusDetailDesc",
columnWidth: "250",
status: 1
},
{
columnChineseName: "是否生成上架流水",
columnName: "weatherGenerateWater",
columnWidth: "130",
status: 1
},
{
columnChineseName: "当前配载航班号",
columnName: "flightFltNo",
columnWidth: "130",
status: 1,
slot: true
},
{
columnChineseName: "当前配载航班日期",
columnName: "flightFltDate",
columnWidth: "130",
status: 1
},
{
columnChineseName: "DM推送时间",
columnName: "dmSendTime",
columnWidth: "150",
status: 1
},
{
columnChineseName: "数据接收时间",
columnName: "dmCreateTime",
columnWidth: "150",
status: 1
},
{
columnChineseName: "货物创建时间",
columnName: "cargoCreateTime",
columnWidth: "150",
status: 1
},
{
columnChineseName: "回推ACCS时间",
columnName: "sendLogSendTime",
columnWidth: "150",
status: 1
},
{
columnChineseName: "配舱类型",
columnName: "cargoAllocationType",
columnWidth: "100",
status: 1
},
{
columnChineseName: "航班顺位规则",
columnName: "targetFlight",
columnWidth: "180",
status: 1
},
{
columnChineseName: "ACCS航班号",
columnName: "dmFlightNbr",
columnWidth: "120",
status: 1
},
{
columnChineseName: "ACCS航班日期",
columnName: "dmFlightDate",
columnWidth: "150",
status: 1
},
{
columnChineseName: "推送状态",
columnName: "cargoPushStatus",
columnWidth: "",
status: 1
},
{
columnChineseName: "AccsId",
columnName: "dmAccsId",
columnWidth: "120",
status: 1
},
{
columnChineseName: "口岸代码",
columnName: "routeDest",
columnWidth: "",
status: 1
},
{
columnChineseName: "Accs Pool",
columnName: "accsPool",
columnWidth: "100",
status: 1
},
],
//流水表
"weatherTable": [
{
columnChineseName: "运单号",
columnName: "waybillNo",
columnWidth: "",
status: 1
},
{
name: "创建时间",
value: "dmCreateTime",
width: "",
align: "center",
columnChineseName: "航班号",
columnName: "flightNo",
columnWidth: "",
status: 1
},
{
name: "落地时间",
value: "dmSendTime",
width: "",
align: "center",
columnChineseName: "航班日期",
columnName: "flightTime",
columnWidth: "",
status: 1
},
{
name: "航班号",
value: "dmFlightNbr",
width: "",
align: "center",
columnChineseName: "是否开启高地价",
columnName: "highLowPriceFlg",
columnWidth: "",
status: 1
},
{
name: "航班日期",
value: "dmFlightDate",
width: "",
align: "center",
columnChineseName: "增加重量",
columnName: "increaseWeight",
columnWidth: "",
status: 1
},
{
name: "货物创建时间",
value: "cargoCreateTime",
width: "",
align: "center",
columnChineseName: "减轻重量",
columnName: "reduceWeight",
columnWidth: "",
status: 1
},
{
name: "推送状态",
value: "cargoAllocationDataStatus",
width: "",
align: "center",
columnChineseName: "航班剩余重量",
columnName: "surplusWeight",
columnWidth: "",
status: 1
},
{
name: "ACCS航线",
value: "flightFltDate",
width: "",
align: "center",
columnChineseName: "AccsId",
columnName: "accsId",
columnWidth: "",
status: 1
},
{
name: "ACCS Pool",
value: "flightFltNo",
width: "",
align: "center",
columnChineseName: "申报类别",
columnName: "declarationCategory",
columnWidth: "",
status: 1
},
{
name: "消息代码",
value: "sendLogSendTime",
width: "",
align: "center",
columnChineseName: "操作来源",
columnName: "operationSource",
columnWidth: "",
status: 1
},
{
name: "消息发送时间",
value: "sendLogSendResult",
width: "",
align: "center",
columnChineseName: "重量增加减少",
columnName: "weightMark",
columnWidth: "",
status: 1
},
],
//数据字典
"dict": [
{
name: "数据名称",
value: "chineseName",
width: "",
align: "center",
columnChineseName: "数据名称",
columnName: "chineseName",
columnWidth: "",
status: 1
},
{
name: "字典CODE",
value: "code",
width: "",
align: "center",
columnChineseName: "字典CODE",
columnName: "code",
columnWidth: "",
status: 1
},
{
name: "描述",
value: "description",
width: "",
align: "center",
columnChineseName: "描述",
columnName: "description",
columnWidth: "",
status: 1
}
],
"dictServiceCode": [
{
name: "",
value: "serviceCodeMapperList",
width: "",
align: "center",
columnChineseName: " ",
columnName: "serviceCodeMapperList",
columnWidth: "",
expand: true,
status: 1
},
{
name: "数据名称",
value: "chineseName",
width: "",
align: "center",
columnChineseName: "数据名称",
columnName: "chineseName",
columnWidth: "",
status: 1
},
{
name: "字典CODE",
value: "code",
width: "",
align: "center",
columnChineseName: "字典CODE",
columnName: "code",
columnWidth: "",
status: 1
},
{
name: "描述",
value: "description",
width: "",
align: "center",
columnChineseName: "描述",
columnName: "description",
columnWidth: "",
status: 1
}
],
"dictServiceCodeChildren": [
{
name: "数据名称",
value: "serviceCodeValue",
width: "",
align: "center",
columnChineseName: "数据名称",
columnName: "serviceCodeValue",
columnWidth: "",
status: 1
},
]
......
......@@ -9,8 +9,8 @@
}
.wid95 {
width: 95% !important;
}
width: 95% !important;
}
.wid90 {
width: 90% !important;
......@@ -80,13 +80,13 @@
margin-bottom: 20px;
}
.m20 {
.ml20 {
margin-left: 20px;
}
// .el-dialog:not(.is-fullscreen) {
// margin-top: 6vh !important;
// }
// .el-dialog:not(.is-fullscreen) {
// margin-top: 6vh !important;
// }
.el-table {
......
......@@ -26,9 +26,9 @@ html {
height: 100%;
}
input {
background-color: #fff !important;
}
// input {
// background-color: #fff !important;
// }
*,
*:before,
......@@ -194,11 +194,12 @@ aside {
z-index: 1000 !important;
}
.el-table__body-wrapper {
.el-table__body-wrapper,
.el-textarea__inner,
body {
&::-webkit-scrollbar {
height: 7px;
width: 7px;
height: 7px;
}
&::-webkit-scrollbar-track {
......@@ -207,20 +208,33 @@ aside {
&::-webkit-scrollbar-thumb {
background-color: #ccc;
border-radius: 20px;
}
&::-webkit-scrollbar-thumb:hover {
background-color: #409eff;
}
&::-webkit-scrollbar-track-piece {
background: #F2F6FC;
}
}
.el-scrollbar__wrap {
&::-webkit-scrollbar {
height: 0px;
width: 0px;
.el-table__header-wrapper {
.has-gutter {
.gutter {
display: none !important;
}
}
}
// .el-scrollbar__wrap {
// &::-webkit-scrollbar {
// height: 7px;
// width: 7px;
// }
// }
// 解决表格固定列问题
.el-table__fixed,
.el-table__fixed-right {
......@@ -247,4 +261,35 @@ aside {
// 当表格只有横向滚动条,没有纵向滚动条时
.el-table--scrollable-x:not(.el-table--scrollable-y) .el-table__fixed-right {
right: 0 !important;
}
.el-checkbox-group {
.el-checkbox {
width: 100%;
.el-checkbox__input {
top: -5px;
}
.el-checkbox__label {
width: 90%;
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
}
}
}
.el-transfer-panel__body {
.el-checkbox-group {
.el-checkbox {
.el-checkbox__input {
top: 6px !important;
}
}
}
}
.el-select-dropdown {
max-width: 300px;
}
\ No newline at end of file
......
<template>
<div>
<el-button v-if="buttonShow" class="mt5" size="mini" icon="el-icon-edit-outline" circle @click="visibleOpen">
</el-button>
<el-dialog title="表格显示设置" :visible.sync="open" width="40%" :close-on-click-modal="false" :show-close="false"
append-to-body center>
<div style="text-align: center">
<el-transfer style="text-align: left; display: inline-block" :data="transferData"
:right-default-checked="rightDefaultChecked" v-model="transferValue" :titles="transferTitle"
:props="props" v-loading="transferLoading" @change="change" @right-check-change="rightCheckChange">
<template slot="left-footer">
<div></div>
</template>
<template slot="right-footer">
<el-button style="margin-left:20px" type="primary" size="mini" icon="el-icon-top"
:disabled="updisabled" @click="up">
</el-button>
<el-button type="primary" size="mini" icon="el-icon-bottom" :disabled="downdisabled"
@click="down"></el-button>
</template>
</el-transfer>
</div>
<div slot="footer" class="dialog-footer">
<el-button type="primary" :loading="loading" @click="submit">确 定</el-button>
<el-button @click="close">取 消</el-button>
</div>
</el-dialog>
</div>
</template>
<script>
import { getHeaderOrder, saveTableHeader } from "@/api/system/user.js";
export default {
props: {
tableName: {
type: String,
default: ''
}
},
data() {
return {
transferData: [],//穿梭框数据
transferValue: [],//已选择数据key
rightDefaultChecked: [],//右侧复选框选中
transferTitle: ['未显示列', '已显示列'],
props: { key: 'id', label: 'columnChineseName' },
open: false,
loading: false,
updisabled: true,
downdisabled: true,
buttonShow: true,
transferLoading: false
}
},
created() {
if (this.$store.getters.tableHeader) {
this.buttonShow = true
} else {
this.buttonShow = false
}
},
watch: {
open(val, oldVal) {
if (val) {
this.transferData = this.$store.getters.tableHeader[this.tableName]
this.transferLoading = true
// 获取用户显示表头
getHeaderOrder(`tableName=${this.tableName}`).then(res => {
this.transferLoading = false
if (res.code == 200) {
this.transferValue = res.data
} else {
this.msgwarning(res.msg)
}
}).catch(err => {
this.transferLoading = false
console.log(err)
})
}
}
},
methods: {
// 确定
submit() {
this.loading = true
let obj = this.$store.getters.tableHeader
// 保存设置
saveTableHeader({ tableName: this.tableName, idList: this.transferValue }).then(res => {
if (res.code === 200) {
obj[this.tableName] = res.data
this.$store.dispatch('SavetableHeader', obj)
this.msgSuccess('操作成功')
this.close(1)
} else {
this.msgWarning(res.msg)
}
this.$nextTick(() => {
this.loading = false
})
}).catch(err => {
this.loading = false
console.log(err)
})
},
//dialog开启
visibleOpen() {
this.open = true
},
// transferChange
change(val) {
let arr = []
let status0 = []
this.transferValue = val
this.transferData.forEach((item, i) => {
if (!this.transferValue.includes(item.id)) {
status0.push(item)
} else {
this.transferValue.forEach((vals, index) => {
if (vals == item.id) {
arr.push(item)
}
})
}
})
this.transferData = arr.concat(status0)
this.rightDefaultChecked = []
this.updisabled = true
this.downdisabled = true
},
//右侧选中,上下移动按钮状态设置
rightCheckChange(val) {
this.rightDefaultChecked = val
if (val.length == 1) {
if (this.transferValue.length > 1) {
this.transferValue.forEach((item, index) => {
if (item === val[0]) {
if (index === 0) {
this.updisabled = true
this.downdisabled = false
} else if (index === this.transferValue.length - 1) {
this.updisabled = false
this.downdisabled = true
} else {
this.updisabled = false
this.downdisabled = false
}
}
})
}
} else {
this.updisabled = true
this.downdisabled = true
}
},
//当前数据整理
tableHeadersSort() {
let arr = []
let status0 = []
this.transferData.forEach((item, i) => {
if (!this.transferValue.includes(item.id)) {
status0.push(item)
} else {
this.transferValue.forEach((val, index) => {
if (val == item.id) {
arr[index] = item
}
})
}
})
arr = arr.concat(status0)
this.transferData = arr
},
//右侧单条数据上移
up() {
if (!this.updisabled) {
let str = ''
this.transferValue.forEach((item, index) => {
if (item == this.rightDefaultChecked[0]) {
str = item
this.transferValue[index] = this.transferValue[index - 1]
this.transferValue[index - 1] = str
return
}
})
this.tableHeadersSort()
this.rightCheckChange([str])
}
},
//右侧单条数据下移
down() {
if (!this.downdisabled) {
let str = ''
let int = 1
this.transferValue.forEach((item, index) => {
if (item == this.rightDefaultChecked[0] && int === 1) {
str = item
this.transferValue[index] = this.transferValue[index + 1]
this.transferValue[index + 1] = str
int++
return
}
})
this.tableHeadersSort()
this.rightCheckChange([str])
}
},
//dialog关闭
close(val) {
this.rightDefaultChecked = []
this.updisabled = true
this.downdisabled = true
this.open = false
this.$emit('close', val)
}
}
}
</script>
<style lang="scss">
.el-transfer-panel__body.is-with-footer {
padding-bottom: 0px;
margin-bottom: 40px
}
.el-transfer {
.el-transfer-panel {
width: 220px;
.el-transfer-panel__list {
overflow-x: hidden;
overflow-y: scroll;
}
.el-transfer-panel__list::-webkit-scrollbar {
width: 5px;
height: 5px;
}
.el-transfer-panel__list::-webkit-scrollbar-thumb {
border-radius: 10px;
-webkit-box-shadow: inset 0 0 5px rgba(0, 0, 0, 0.2);
background: rgba(0, 0, 0, 0.2);
}
}
.el-transfer__buttons {
.el-button {
display: block;
padding: 9px 15px;
font-size: 12px;
border-radius: 3px;
}
.el-button+.el-button {
margin-left: 0px
}
}
}
</style>
\ No newline at end of file
<template>
<div class="w-table" :class="{ 'w-table_moving': dragState.dragging }">
<div class="w-table w-table_moving">
<el-table :ref="tableName" :data="data" :border="border" :stripe="stripe" :size="size" :fit="fit" :indent="indent"
:show-header="showHeader" :height="height" :highlight-current-row="highlightCurrentRow" :lazy="lazy"
:downShiftKey="shiftKey" :limitStart="limitStart" :row-key="rowKey" :default-expand-all="defaultExpandAll"
:tree-props="{ children: 'children', hasChildren: 'hasChildren' }" v-loading="loading"
:cell-class-name="cellClassName" :header-cell-class-name="headerCellClassName" @sort-change="sortChange"
:tree-props="{ children: 'children', hasChildren: 'hasChildren' }" v-loading="loading" @sort-change="sortChange"
@select="tableSelect" @select-all="tableSelectAll" @select-change="SelectChange">
<!-- 多选框 -->
<el-table-column v-if="selection" type="selection" width="50" align="center" :fixed="true"></el-table-column>
<el-table-column v-if="selection" type="selection" width="50" :align="tableAlign" :fixed="selectFixed"
:header-align="headerAlign">
</el-table-column>
<!-- 序号 -->
<el-table-column v-if="order" type="index" width="70" align="center" :index="indexAdd" show-overflow-tooltip></el-table-column>
<template v-for="(item, index) in headerData" v-if="item.status == 1">
<el-table-column v-if="order" label="序号" type="index" width="70" :align="tableAlign" :index="indexAdd"
:header-align="headerAlign" show-overflow-tooltip>
</el-table-column>
<template v-for="(item, index) in headerData" :key="" v-if="item.status == 1">
<!-- 自定义插槽 -->
<el-table-column v-if="item.slot" :prop="item.value" :label="item.name" :width="item.width" :align="item.align"
:fixed="item.fixed ? item.fixed : false" :show-overflow-tooltip="showOverflowTooltip"
:sortable="item.sorTable ? true : false" :formatter="formatter" header-align="center"
:sort-orders="['descending', 'ascending', null]" :slotHeader="slotHeader" :render-header="renderHeader"
:key="index">
<el-table-column v-if="item.slot" :prop="item.columnName" :label="item.columnChineseName"
:width="item.columnWidth" :align="tableAlign" :fixed="item.fixed ? item.fixed : false"
:show-overflow-tooltip="showOverflowTooltip" :sortable="item.ext1 == 'sorTable' ? true : false"
:formatter="formatter" :header-align="headerAlign" :column-key="index.toString()"
:sort-orders="['descending', 'ascending', null]" :slotHeader="slotHeader" :key="item.columnName">
<template slot="header" slot-scope="scope">
<Tooltips :content="scope.column.label" :refName="scope.column.columnName"></Tooltips>
</template>
<template slot-scope="scope">
<slot :name="item.value" :row="scope.row"></slot>
<slot :name="item.columnName" :row="scope.row"></slot>
</template>
</el-table-column>
<!-- 隐藏行 -->
<el-table-column v-else-if="item.expand" type="expand" :prop="item.value" :label="item.name" :index="item.index"
:width="item.width" :align="item.align" :fixed="item.fixed ? item.fixed : false"
:sortable="item.sorTable ? true : false" :column-key="index.toString()"
:show-overflow-tooltip="showOverflowTooltip" header-align="center"
:sort-orders="['descending', 'ascending', null]" :slotHeader="slotHeader" :render-header="renderHeader"
:formatter="formatter" :key="item.index">
<el-table-column v-else-if="item.expand" type="expand" :prop="item.columnName" :label="item.columnChineseName"
:index="item.index" :width="item.columnWidth" :align="tableAlign" :fixed="item.fixed ? item.fixed : false"
:sortable="item.ext1 == 'sorTable' ? true : false" :column-key="index.toString()"
:show-overflow-tooltip="showOverflowTooltip" :header-align="headerAlign"
:sort-orders="['descending', 'ascending', null]" :slotHeader="slotHeader" :formatter="formatter"
:key="item.index">
<template slot="header" slot-scope="scope">
<Tooltips :content="scope.column.label" :refName="scope.column.columnName"></Tooltips>
</template>
<template slot-scope="scope">
<slot :name="item.value" :row="scope.row"></slot>
<slot :name="item.columnName" :row="scope.row"></slot>
</template>
</el-table-column>
<!-- 默认数据 -->
<el-table-column v-else :prop="item.value" :label="item.name" :index="item.index" :width="item.width"
:align="item.align" :fixed="item.fixed ? item.fixed : false" :sortable="item.sorTable ? true : false"
:column-key="index.toString()" :show-overflow-tooltip="showOverflowTooltip" header-align="center"
:sort-orders="['descending', 'ascending', null]" :slotHeader="slotHeader" :render-header="renderHeader"
:formatter="formatter" :key="item.id">
<el-table-column v-else :prop="item.columnName" :label="item.columnChineseName" :index="item.index"
:width="item.columnWidth" :align="tableAlign" :fixed="item.fixed ? item.fixed : false"
:sortable="item.ext1 == 'sorTable' ? true : false" :column-key="index.toString()"
:show-overflow-tooltip="showOverflowTooltip" :header-align="headerAlign"
:sort-orders="['descending', 'ascending', null]" :slotHeader="slotHeader" :formatter="formatter"
:key="item.id">
<template slot="header" slot-scope="scope">
<Tooltips :content="scope.column.label" :refName="scope.column.columnName"></Tooltips>
</template>
</el-table-column>
</template>
<slot name="optionColumn"></slot>
......@@ -50,8 +63,7 @@
</template>
<script>
import dictLabels from "../../assets/languages/dictLabels.js";
import { scrollTo } from "@/utils/scroll-to";
export default {
name: "Table",
props: {
......@@ -81,6 +93,10 @@ export default {
type: Boolean,
default: true,
},
selectFixed: {
type: Boolean,
default: true
},
size: {
type: String,
default: "mini",
......@@ -182,6 +198,14 @@ export default {
type: String,
default: 'total,prev, pager, next, jumper, ->, sizes'
},
tableAlign: {
type: String,
default: 'center'
},
headerAlign: {
type: String,
default: 'center'
},
// treeProps: {
// type: Object,
// default: { children: 'children', hasChildren: 'hasChildren' }
......@@ -202,19 +226,14 @@ export default {
pageNum: 1,
start: -1,
show: false,
dragState: {
start: -9, // 起始元素的 index
end: -9, // 移动鼠标时所覆盖的元素 index
dragging: false, // 是否正在拖动
direction: undefined, // 拖动方向
},
//表头数据格式
// {
// name: "",
// value: "",
// width: "",
// columnChineseName: "",
// columnName: "",
// columnWidth: "",
// align: "center",
// sorTable: false,
// status: 1
// },
};
},
......@@ -243,7 +262,6 @@ export default {
page: this.pageNum + 1,
start: this.limitStart + this.limitSize,
});
scrollTo(0, 800);
},
//上一页
prevClick() {
......@@ -251,7 +269,6 @@ export default {
page: this.pageNum - 1,
start: this.limitStart - this.limitSiz,
});
scrollTo(0, 800);
},
//某页
currentChange(val) {
......@@ -259,7 +276,6 @@ export default {
page: val,
start: val > 1 ? (val - 1) * this.limitSize + 1 : val,
});
scrollTo(0, 800);
},
//连续序号
indexAdd(index) {
......@@ -352,41 +368,12 @@ export default {
}
};
},
//自定义表头
renderHeader(createElement, { column }) {
return createElement(
"div",
{
class: ["thead-cell"],
},
[
// 添加 <a> 用于显示表头 label
createElement("div", column.label),
]
);
},
headerCellClassName({ column, columnIndex }) {
let active =
columnIndex - 1 === this.dragState.end
? `darg_active_${this.dragState.direction}`
: "";
let start = columnIndex - 1 === this.dragState.start ? `darg_start` : "";
return `${active} ${start}`;
},
cellClassName({ column, columnIndex }) {
return columnIndex - 1 === this.dragState.start ? `darg_start` : "";
},
//无限滚动
infiniteScroll() {
},
//数据格式化
formatter(row, column, cellValue, index) {
if (dictLabels[this.ductName]) {
if (dictLabels[this.ductName][column.property]) {
if (dictLabels[this.ductName][column.property][cellValue]) {
return dictLabels[this.ductName][column.property][cellValue];
if (this.dictLabels[this.ductName]) {
if (this.dictLabels[this.ductName][column.property]) {
if (this.dictLabels[this.ductName][column.property][cellValue]) {
return this.dictLabels[this.ductName][column.property][cellValue];
}
}
}
......@@ -415,79 +402,49 @@ export default {
background-color: #f3f3f3;
}
.el-table th {
padding: 0;
.virtual {
position: absolute;
display: block;
width: 0;
height: 0;
top: 0px;
left: 0px;
background: none;
border: none;
}
.el-table {
th {
padding: 0;
&.darg_active_left {
.virtual {
border-left: 2px dotted #666;
z-index: 99;
}
}
.cell {
min-width: 24px;
&.darg_active_right {
.virtual {
border-right: 2px dotted #666;
z-index: 99;
.caret-wrapper {
position: absolute;
top: -20%;
right: 3%;
}
}
}
}
.cell {
min-width: 24px;
.thead-cell {
width: 100%;
padding: 0;
display: inline-flex;
flex-direction: column;
align-items: left;
overflow: initial;
&:before {
content: "";
.virtual {
position: absolute;
top: 0;
left: 0;
bottom: 0;
right: 0;
display: block;
width: 0;
height: 0;
top: 0px;
left: 0px;
background: none;
border: none;
}
div {
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
&.darg_active_left {
.virtual {
border-left: 2px dotted #666;
z-index: 99;
}
}
}
.caret-wrapper {
position: absolute;
top: -20%;
right: 3%;
&.darg_active_right {
.virtual {
border-right: 2px dotted #666;
z-index: 99;
}
}
}
}
&.w-table_moving {
.el-table th .thead-cell {
cursor: move !important;
}
.el-table__fixed {
cursor: not-allowed;
}
}
}
.tableList {
......
<template>
<div class="text-tooltip">
<el-tooltip class="item" effect="dark" :disabled="isShowTooltip" :content="content" :placement="placement">
<div class="over-flow" @mouseover="onMouseOver(refName)">
<span :ref="refName">{{ content }}</span>
</div>
</el-tooltip>
</div>
</template>
<script>
export default {
name: 'textTooltip',
props: {
// 显示的文字内容
content: {
type: String,
default: () => {
return ''
}
},
refName: {
type: String,
default: () => {
return ''
}
},
placement: {
type: String,
default: 'top'
}
},
data() {
return {
isShowTooltip: true
}
},
methods: {
onMouseOver(str) {
if (this.$refs[str]) {
const parentWidth = this.$refs[str].parentNode.offsetWidth;
const contentWidth = this.$refs[str].offsetWidth;
// 判断是否开启tooltip功能
if (contentWidth > parentWidth) {
this.isShowTooltip = false;
} else {
this.isShowTooltip = true;
}
}
}
}
}
</script>
<style scoped>
.over-flow {
overflow: hidden;
white-space: nowrap;
text-overflow: ellipsis;
}
</style>
\ No newline at end of file
......@@ -11,16 +11,20 @@ import App from './App'
import store from './store'
import router from './router'
import permission from './directive/permission'
import i18n from './i18n/index'
import './assets/icons' // icon
import './permission' // permission control
import { parseTime, resetForm, addDateRange, selectDictLabel, selectDictLabels, download, handleTree, upCase, nowDate } from "@/utils/FedEx";
import { isArray } from "@/utils/validate";
import Pagination from "@/components/Pagination";
// 自定义表格工具扩展
import RightToolbar from "@/components/RightToolbar"
import Table from "@/components/Table"
import Tooltip from "@/components/Tooltip"
import HeaderSetting from "@/components/HeaderSetting"
import tableHeaders from '@/assets/languages/tableHeaders'
import dictLabels from "@/assets/languages/dictLabels.js";
import settings from './settings.js'
// 全局方法挂载
Vue.prototype.parseTime = parseTime
......@@ -32,7 +36,10 @@ Vue.prototype.download = download
Vue.prototype.handleTree = handleTree
Vue.prototype.upCase = upCase
Vue.prototype.nowDate = nowDate
Vue.prototype.isArray = isArray
Vue.prototype.tableHeaders = tableHeaders
Vue.prototype.dictLabels = dictLabels
Vue.prototype.settings = settings
Vue.prototype.msgSuccess = function (msg) {
this.$message({ showClose: true, message: msg, type: "success" });
......@@ -54,6 +61,8 @@ Vue.prototype.msgInfo = function (msg) {
Vue.component('Pagination', Pagination)
Vue.component('RightToolbar', RightToolbar)
Vue.component('Tables', Table)
Vue.component('Tooltips', Tooltip)
Vue.component('HeaderSetting', HeaderSetting)
Vue.use(permission)
/**
......@@ -65,6 +74,13 @@ Vue.use(permission)
* please remove it before going online! ! !
*/
window.addEventListener("keydown", (code) => {
if (code.keyCode === 13) {
return false
}
});
Vue.use(Element, {
//size: Cookies.get('size') || 'medium' // set element-ui default size
// size: localStorage.getItem('size') || 'medium' // set element-ui default size
......@@ -76,6 +92,5 @@ new Vue({
el: '#app',
router,
store,
i18n,
render: h => h(App)
})
......
import router from './router'
import store from './store'
import { Message } from 'element-ui'
//import NProgress from 'nprogress'
//import 'nprogress/nprogress.css'
import { getToken } from '@/utils/auth'
//NProgress.configure({ showSpinner: false })
const whiteList = ['/login', '/auth-redirect', '/bind', '/register']
router.beforeEach((to, from, next) => {
//NProgress.start()
if (getToken()) {
/* has token*/
if (to.path === '/login') {
next({ path: '/' })
//NProgress.done()
} else {
if (store.getters.roles.length === 0) {
// 判断当前用户是否已拉取完user_info信息
store.dispatch('GetInfo').then(() => {
store.dispatch('GenerateRoutes').then(accessRoutes => {
// 根据roles权限生成可访问的路由表
router.addRoutes(accessRoutes) // 动态添加可访问路由表
next({ ...to, replace: true }) // hack方法 确保addRoutes已完成
//获取用户表头
store.dispatch('GetTableHeaders').then(() => {
store.dispatch('GenerateRoutes').then(accessRoutes => {
// 根据roles权限生成可访问的路由表
router.addRoutes(accessRoutes) // 动态添加可访问路由表
next({ ...to, replace: true }) // hack方法 确保addRoutes已完成
})
})
}).catch(err => {
store.dispatch('LogOut').then(() => {
Message.error(err)
next({ path: '/' })
})
store.dispatch('LogOut').then(() => {
Message.error(err)
next({ path: '/' })
})
})
} else {
next()
}
......@@ -42,11 +39,9 @@ router.beforeEach((to, from, next) => {
next()
} else {
next(`/login?redirect=${to.fullPath}`) // 否则全部重定向到登录页
//NProgress.done()
}
}
})
router.afterEach(() => {
//NProgress.done()
})
......
......@@ -42,7 +42,7 @@ module.exports = {
/**
* logout
*/
logoutURL: 'http://47.103.140.98/test',
logoutURL: '/test/index',
/**
* 后端接口
......@@ -58,5 +58,5 @@ module.exports = {
/**
* 版本号
*/
version: 'version:1.3.0'
version: 'version:1.4.0'
}
......
......@@ -17,5 +17,6 @@ const getters = {
defaultRoutes: state => state.permission.defaultRoutes,
sidebarRouters: state => state.permission.sidebarRouters,
filghtAllData: state => state.permission.filghtAllData,
tableHeader: state => state.user.tableHeader
}
export default getters
......
......@@ -15,15 +15,12 @@ const mutations = {
state.sidebar.opened = !state.sidebar.opened
state.sidebar.withoutAnimation = false
if (state.sidebar.opened) {
//Cookies.set('sidebarStatus', 1)
localStorage.setItem('sidebarStatus', 1)
} else {
Cookies.set('sidebarStatus', 0)
localStorage.setItem('sidebarStatus', 0)
}
},
CLOSE_SIDEBAR: (state, withoutAnimation) => {
//Cookies.set('sidebarStatus', 0)
localStorage.setItem('sidebarStatus', 0)
state.sidebar.opened = false
state.sidebar.withoutAnimation = withoutAnimation
......@@ -33,7 +30,6 @@ const mutations = {
},
SET_SIZE: (state, size) => {
state.size = size
//Cookies.set('size', size)
localStorage.setItem('size', size)
}
}
......
import { login, logout, getInfo } from '@/api/login'
import { getTableHeader } from '@/api/menu'
import { changeCurrentPort } from "@/api/system/user.js";
import { getToken, setToken, removeToken } from '@/utils/auth'
import { Message } from 'element-ui'
......@@ -9,9 +10,10 @@ const user = {
name: '',
avatar: '',
activePortName: '',
portNames:[],
portNames: [],
roles: [],
permissions: []
permissions: [],
tableHeader: null
},
mutations: {
......@@ -28,7 +30,7 @@ const user = {
state.activePortName = activePortName
sessionStorage.setItem('portName', activePortName)
},
SET_PORTNAMES:(state,portNames)=>{
SET_PORTNAMES: (state, portNames) => {
state.portNames = portNames
},
SET_ROLES: (state, roles) => {
......@@ -36,7 +38,10 @@ const user = {
},
SET_PERMISSIONS: (state, permissions) => {
state.permissions = permissions
}
},
SAVE_TABLEHEADER: (state, table) => {
state.tableHeader = table
},
},
actions: {
......@@ -49,7 +54,7 @@ const user = {
return new Promise((resolve, reject) => {
login(username, password, rememberMe).then(res => {
if(res.code === 200){
if (res.code === 200) {
setToken(res.data)
commit('SET_TOKEN', res.data)
}
......@@ -60,33 +65,54 @@ const user = {
})
},
//获取表头
GetTableHeaders({ commit, state }) {
return new Promise((resolve, reject) => {
getTableHeader().then(res => {
if (res.code === 200) {
commit('SAVE_TABLEHEADER', res.data)
}
resolve(res)
}).catch(err => {
reject(err)
})
})
},
//保存表头
SavetableHeader({ commit, state }, data) {
commit('SAVE_TABLEHEADER', data)
},
// 获取用户信息
GetInfo({ commit, state }) {
return new Promise((resolve, reject) => {
getInfo().then(res => {
const user = res.data.user
const avatar = user.avatar == "" ? require("@/assets/images/profile.jpg") : process.env.VUE_APP_BASE_API + user.avatar;
let ports = [];
if(user.portName){
ports = user.portName.split(',');
commit('SET_PORTNAMES',ports)
commit('SET_ACTIVEPORTNAME', sessionStorage.getItem('portName')?sessionStorage.getItem('portName'):state.portNames[0])
}else{
Message({
message: "未找到口岸信息!请确认后再登录",
type: 'error'
})
this.login()
}
if (res.data.roles && res.data.roles.length > 0) { // 验证返回的roles是否是一个非空数组
commit('SET_ROLES', res.data.roles)
commit('SET_PERMISSIONS', res.data.permissions)
} else {
commit('SET_ROLES', ['ROLE_DEFAULT'])
if (res.code === 200) {
const user = res.data.user
const avatar = user.avatar == "" ? require("@/assets/images/profile.jpg") : process.env.VUE_APP_BASE_API + user.avatar;
let ports = [];
if (user.portName) {
ports = user.portName.split(',');
commit('SET_PORTNAMES', ports)
commit('SET_ACTIVEPORTNAME', sessionStorage.getItem('portName') ? sessionStorage.getItem('portName') : state.portNames[0])
} else {
Message({
message: "未找到口岸信息!请确认后再登录",
type: 'error'
})
this.login()
}
if (res.data.roles && res.data.roles.length > 0) { // 验证返回的roles是否是一个非空数组
commit('SET_ROLES', res.data.roles)
commit('SET_PERMISSIONS', res.data.permissions)
} else {
commit('SET_ROLES', ['ROLE_DEFAULT'])
}
commit('SET_NAME', user.userName)
commit('SET_AVATAR', avatar)
resolve(res)
}
commit('SET_NAME', user.userName)
commit('SET_AVATAR', avatar)
resolve(res)
}).catch(error => {
reject(error)
})
......@@ -96,12 +122,12 @@ const user = {
//切换口岸
changePort({ commit }, portName) {
return new Promise((resolve, reject) => {
changeCurrentPort({ portName: portName }).then(res=>{
if(res.code === 200){
commit('SET_ACTIVEPORTNAME',portName)
changeCurrentPort({ portName: portName }).then(res => {
if (res.code === 200) {
commit('SET_ACTIVEPORTNAME', portName)
}
resolve(res)
}).catch(err=>{
}).catch(err => {
reject(err)
})
})
......@@ -111,7 +137,6 @@ const user = {
LogOut({ commit, state }) {
return new Promise((resolve, reject) => {
logout(state.token).then(() => {
// window.location.href = "https://sso.secure.fedex.com/logout";//wsso系统跳转
commit('SET_TOKEN', '')
commit('SET_ROLES', [])
commit('SET_PERMISSIONS', [])
......@@ -126,7 +151,6 @@ const user = {
// 前端 登出
FedLogOut({ commit }) {
return new Promise(resolve => {
// window.location.href = "https://sso.secure.fedex.com/logout";//wsso系统跳转
commit('SET_TOKEN', '')
removeToken()
resolve()
......
......@@ -177,7 +177,7 @@ export function handleTree(data, id, parentId, children) {
//字符串英文转大写,;转英文;
export function upCase(str) {
let newStr = str.replace(/;/g, ";").toUpperCase();
let newStr = str.replace(/;/g, ";").toUpperCase().trim();
return newStr;
}
......
......@@ -10,7 +10,7 @@ axios.defaults.headers['Content-Type'] = 'application/json;charset=utf-8'
const service = axios.create({
// axios中请求配置有baseURL选项,表示请求URL公共部分
//baseURL: process.env.VUE_APP_BASE_API,
baseURL: settings.baseURL, //阿里云服务器
baseURL: settings.baseURL,
// 超时
timeout: 30000
......@@ -61,8 +61,9 @@ service.interceptors.response.use(res => {
const msg = errorCode[code] || res.data.msg || errorCode['default']
if (code === 301) {
MessageBox.confirm('登录状态已过期,您可以继续留在该页面,或者重新登录', '系统提示', {
closeOnClickModal: false,
showCancelButton: false,
confirmButtonText: '重新登录',
cancelButtonText: '取消',
type: 'warning'
}
).then(() => {
......
......@@ -6,9 +6,7 @@ const mimeMap = {
xlsx: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet',
zip: 'application/zip'
}
// const baseUrl = 'https://imacuat.zmd.apac.fedex.com/iMAC' //uat服务器
const baseUrl = settings.downLoadURL //阿里云服务器
// const baseUrl = 'http://192.168.1.133:7001/iMAC' //测试服务器
export function downLoadZip(str, filename) {
var url = baseUrl + str
......
......@@ -19,6 +19,7 @@
<el-select placeholder="不限" v-model="formData.customsReceiptStatusId" class="formItem" multiple clearable>
<el-option v-for="item in selectData.findConditionData
.cargoCustomsReturnStatus" :label="item.chineseName" :value="item.id" :key="item.id">
<Tooltips :content="item.chineseName" :refName="item.code"></Tooltips>
</el-option>
</el-select>
</el-form-item>
......@@ -45,12 +46,6 @@
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="运单号">
<el-input class="formItem" type="textarea" :rows="1" placeholder="请输入运单号(回车分割)" :maxlength="12000"
v-model="formData.waybillNo" clearable></el-input>
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="申报类别">
<el-select placeholder="不限" v-model="formData.typeId" class="formItem" clearable>
<el-option v-for="item in selectData.findConditionData.cargoType" :label="item.chineseName"
......@@ -64,34 +59,22 @@
<el-select placeholder="不限" v-model="formData.serviceTypeId" class="formItem" clearable>
<el-option v-for="item in selectData.findConditionData.cargoServiceType" :label="item.chineseName"
:value="item.id" :key="item.id">
<Tooltips :content="item.chineseName" :refName="item.code"></Tooltips>
</el-option>
</el-select>
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="URSA">
<el-input class="formItem" type="textarea" placeholder="S_;P_;E2" v-model="ursa" :rows="1" clearable>
</el-input>
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="站点">
<el-input class="formItem" type="textarea" placeholder="PVG;PEK" v-model="siteName" :rows="1" clearable>
</el-input>
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="重量区间">
<el-row>
<el-col :span="10">
<el-input-number class="formItem wid100" size="mini" v-model="formData.minWeight" :controls="false"
:min="0" :precision="2" clearable></el-input-number>
<el-input-number class="wid100" size="mini" v-model="formData.minWeight" :controls="false" :min="0"
:precision="2" clearable></el-input-number>
</el-col>
<el-col :span="1"></el-col>
<el-col class="line" :span="2">-</el-col>
<el-col :span="1"></el-col>
<el-col class="line" :span="3">-</el-col>
<el-col :span="10">
<el-input-number class="formItem wid100" size="mini" v-model="formData.maxWeight" :controls="false"
<el-input-number class="wid100" size="mini" v-model="formData.maxWeight" :controls="false"
:min="formData.minWeight" :precision="2" clearable></el-input-number>
</el-col>
</el-row>
......@@ -105,8 +88,7 @@
:min="0" clearable></el-input-number>
</el-col>
<el-col :span="1"></el-col>
<el-col class="line" :span="2">-</el-col>
<el-col :span="1"></el-col>
<el-col class="line" :span="3">-</el-col>
<el-col :span="10">
<el-input-number class="formItem wid100" size="mini" v-model="formData.maxNumber" :controls="false"
:min="formData.minNumber" clearable></el-input-number>
......@@ -121,14 +103,37 @@
</el-date-picker>
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="URSA">
<el-input class="formItem" type="textarea" placeholder="S_;P_;E2" v-model="ursa" :rows="1" clearable>
</el-input>
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="站点">
<el-input class="formItem" type="textarea" placeholder="PVG;PEK" v-model="siteName" :rows="1" clearable>
</el-input>
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="运单号">
<el-input class="formItem" type="textarea" :rows="4" placeholder="请输入运单号(回车分割)" :maxlength="12000"
v-model="formData.waybillNo" clearable></el-input>
</el-form-item>
</el-col>
<el-col :span="24">
<el-form-item label="Handling Code">
<el-empty description="暂无数据" v-if="
!selectData.HandlingCode || selectData.HandlingCode.length == 0
"></el-empty>
<el-checkbox-group v-model="handingCodes" v-else>
<el-checkbox v-for="item in selectData.HandlingCode" :label="item.chineseName" v-model="item.englishName"
:key="item.id"></el-checkbox>
<el-row>
<el-col :span="2" v-for="item in selectData.HandlingCode" :key="item.id">
<el-checkbox :label="item.chineseName" v-model="item.chineseName">
<Tooltips :content="item.chineseName" :refName="item.code"></Tooltips>
</el-checkbox>
</el-col>
</el-row>
</el-checkbox-group>
</el-form-item>
</el-col>
......@@ -138,8 +143,13 @@
!selectData.SubCategory || selectData.SubCategory.length == 0
"></el-empty>
<el-checkbox-group v-model="subCategorys" v-else>
<el-checkbox v-for="item in selectData.SubCategory" :label="item.chineseName" v-model="item.englishName"
:key="item.id"></el-checkbox>
<el-row>
<el-col :span="2" v-for="item in selectData.SubCategory" :key="item.id">
<el-checkbox :label="item.chineseName" v-model="item.chineseName">
<Tooltips :content="item.chineseName" :refName="item.code"></Tooltips>
</el-checkbox>
</el-col>
</el-row>
</el-checkbox-group>
</el-form-item>
</el-col>
......@@ -162,6 +172,8 @@
<span style="paddingRight: 50px">总重量:{{ allWeight }}</span>
<span>总件数:{{ allQty }}</span>
</div>
<HeaderSetting class="mr20" tableName="allocationCargo" style="float: right" @close="headerSetClose">
</HeaderSetting>
</div>
</el-form>
<Tables ref="newTables" ductName="cargo" :data="tableData" :headerData="tableHeader" :totalCount="totalCount"
......@@ -208,7 +220,7 @@ export default {
customsReceiptStatusId: null,
accsPool: "OSPR"
}, //查询数据
tableHeader: this.tableHeaders['cargoAllocation'], //表头数据
tableHeader: [], //表头数据
tableData: [], //表格数据
tableSelection: [], //选中数据
selectData: {
......@@ -240,6 +252,11 @@ export default {
};
},
created() {
if (this.$store.getters.tableHeader) {
this.tableHeader = this.$store.getters.tableHeader['allocationCargo']
} else {
this.tableHeader = this.tableHeaders['allocationCargo']
}
this.seleData();
if (this.$store.state.tagsView.cachedViews.length == 0) {
this.select();
......@@ -290,7 +307,7 @@ export default {
.catch(() => { });
},
//查询
select(val) {
async select(val) {
this.loading = true;
this.dataInfo();
if (val === 0) {
......@@ -458,6 +475,17 @@ export default {
this.select();
}
},
//设置关闭
headerSetClose(val) {
if (val === 1) {
this.tableHeader = []
this.tableData = []
this.$nextTick(() => {
this.select();
this.tableHeader = this.$store.getters.tableHeader['allocationCargo']
})
}
}
},
computed: {
fltNo: {
......
<template>
<div>
<el-form :inline="true" :model="queryParams" class="form-header" size="medium" label-position="right"
label-width="auto">
<el-form ref="flightAllocForm" :inline="true" :model="queryParams" class="form-header" size="medium"
label-position="right" label-width="auto">
<el-form-item label="航班号">
<el-input v-model.trim="purposeOfFlightNo" placeholder="航班号" @keyup.enter.native="getList"></el-input>
</el-form-item>
......@@ -12,11 +12,11 @@
</el-select>
</el-form-item>
<el-form-item>
<el-button type="primary" icon="el-icon-search" @click="getList" size="mini">查询</el-button>
<el-button type="primary" icon="el-icon-search" :loading="loading" @click="getList" size="mini">查询</el-button>
</el-form-item>
<div>
<el-button style="margin-bottom: 20px" type="primary" icon="el-icon-plus" size="mini"
v-hasPermi="['allocation:alloc:add']" @click="
<el-button class="mb20" type="primary" icon="el-icon-plus" size="mini" v-hasPermi="['allocation:alloc:add']"
@click="
$router.push({
name: 'FlightAllocConfigAdd',
params: { handle: 'add' },
......@@ -24,39 +24,27 @@
">添加</el-button>
</div>
</el-form>
<el-table :data="flyList" v-loading="loading" size="small" highlight-current-row border stripe>
<el-table-column prop="purposeOfFlightNo" label="航班号" align="center"></el-table-column>
<el-table-column prop="status" label="状态" align="center">
<template slot-scope="scope">
<span v-if="scope.row.status === '0'">无效</span>
<span v-if="scope.row.status === '1'">有效</span>
<span v-if="scope.row.status === '2'">配置中</span>
<span v-if="scope.row.status === '3'">停用</span>
</template>
</el-table-column>
<el-table-column prop="createUserName" label="操作人" align="center">
</el-table-column>
<el-table-column prop="createTime" label="更新时间" align="center">
</el-table-column>
<el-table-column label="操作" prop="id" align="center">
<template slot-scope="scope">
<el-button type="text" size="mini" icon="el-icon-view" @click="handleClick(scope.row.id, 'detail')">查看
</el-button>
<el-button type="text" size="mini" icon="el-icon-edit" v-hasPermi="['allocation:alloc:update']"
@click="handleClick(scope.row.id, 'update')">修改</el-button>
<el-button type="text" size="mini" icon="el-icon-delete" style="color:#ff4949"
v-hasPermi="['allocation:alloc:delete']" @click="del(scope.row.id, scope.row.status)">删除</el-button>
<el-button type="text" size="mini" icon="el-icon-video-pause" v-hasPermi="['allocation:alloc:openClose']"
@click="changeStatus(scope.row.id, 3)" v-if="scope.row.status == '1'">停用</el-button>
<el-button type="text" size="mini" icon="el-icon-video-play" v-hasPermi="['allocation:alloc:openClose']"
@click="changeStatus(scope.row.id, 1)" v-else>启用</el-button>
</template>
</el-table-column>
</el-table>
<el-pagination @size-change="getList" @current-change="getList" :current-page.sync="curPage"
:page-sizes="[10, 20, 30, 40]" :page-size.sync="limit" layout="prev, pager, next, jumper, sizes, total"
:total="total" background :hide-on-single-page="true" style="margin-top: 40px; text-align: right">
</el-pagination>
<Tables ref="newTables" ductName="FlightAlloc" :data="flyList" :headerData="tableHeaders['flightAlloc']"
:order="true" :totalCount="total" :loading="loading" :limitSize="queryParams.limit"
:limitStart="queryParams.start" :page="curPage" :pageSizes="[20]" :height="tableHeight"
@currentChange="currentChange">
<template slot="optionColumn">
<el-table-column label="操作" prop="id" align="center">
<template slot-scope="scope">
<el-button type="text" size="mini" icon="el-icon-view" @click="handleClick(scope.row.id, 'detail')">查看
</el-button>
<el-button type="text" size="mini" icon="el-icon-edit" v-hasPermi="['allocation:alloc:update']"
@click="handleClick(scope.row.id, 'update')">修改</el-button>
<el-button type="text" size="mini" icon="el-icon-delete" style="color:#ff4949"
v-hasPermi="['allocation:alloc:delete']" @click="del(scope.row.id, scope.row.status)">删除</el-button>
<el-button type="text" size="mini" icon="el-icon-video-pause" v-hasPermi="['allocation:alloc:openClose']"
@click="changeStatus(scope.row.id, 3)" v-if="scope.row.status == '1'">停用</el-button>
<el-button type="text" size="mini" icon="el-icon-video-play" v-hasPermi="['allocation:alloc:openClose']"
@click="changeStatus(scope.row.id, 1)" v-else>启用</el-button>
</template>
</el-table-column>
</template>
</Tables>
</div>
</template>
......@@ -75,12 +63,12 @@ export default {
purposeOfFlightNo: "",
status: "1",
start: 0,
limit: 10,
limit: 20,
},
flyList: [],
curPage: 1,
limit: 10,
total: 0,
tableHeight: null,
loading: false,
};
},
......@@ -89,6 +77,9 @@ export default {
this.getList();
}
},
mounted() {
this.tableHeight = window.innerHeight - this.$refs.flightAllocForm.$el.offsetHeight - 200
},
activated() {
this.getList()
},
......@@ -97,7 +88,6 @@ export default {
},
methods: {
getList() {
this.queryParams.limit = this.limit;
if (this.curPage > 1) {
this.queryParams.start = (this.curPage - 1) * this.queryParams.limit;
} else {
......@@ -165,6 +155,12 @@ export default {
.catch(() => { });
});
},
//翻页
currentChange(val) {
this.curPage = val.page
this.queryParams.start = val.start;
this.getList();
}
},
computed: {
purposeOfFlightNo: {
......
......@@ -13,12 +13,12 @@
:disabled="nameDisabled"></el-input>
</el-form-item>
</el-col>
<el-col :span="12">
<!-- <el-col :span="12">
<el-form-item label="航班预审" prop="isNeedRequired">
<el-switch v-model="isNeedRequired" :active-value="1" :inactive-value="0">
</el-switch>
</el-form-item>
</el-col>
</el-col> -->
</el-row>
<el-form-item>
<el-row :gutter="20">
......@@ -39,13 +39,13 @@
<el-row :gutter="20">
<el-col :span="10">
<el-form-item label="URSA包含" prop="includeUrsa">
<el-input type="textarea" v-model.trim="form.includeUrsa" :rows="6" resize="none"
<el-input type="textarea" v-model="form.includeUrsa" :rows="6" resize="none"
placeholder="URSA之间用分号分隔,例:F2;F3;P_"></el-input>
</el-form-item>
</el-col>
<el-col :span="10">
<el-form-item label="URSA不包含" prop="notIncludeUrsa">
<el-input type="textarea" v-model.trim="form.notIncludeUrsa" :rows="6" resize="none"
<el-input type="textarea" v-model="form.notIncludeUrsa" :rows="6" resize="none"
placeholder="URSA之间用分号分隔,例:F2;F3;P_"></el-input>
</el-form-item>
</el-col>
......@@ -53,56 +53,20 @@
<el-form-item label="件数">
<el-col :span="3">
<el-input class="numberInput" v-model.trim="minNumOfPieces"></el-input>
<!-- <el-input-number
v-model="minNumOfPieces"
:precision="0"
:controls="false"
style="width: 100%"
></el-input-number> -->
</el-col>
<el-col style="text-align: center" :span="1">-</el-col>
<el-col :span="3">
<el-input class="numberInput" v-model.trim="maxNumOfPieces"></el-input>
<!-- <el-input-number
v-model="
form.maxNumOfPieces == 0
? (form.maxNumOfPieces = undefined)
: form.maxNumOfPieces
"
:precision="0"
:controls="false"
style="width: 100%"
></el-input-number> -->
</el-col>
</el-form-item>
<el-form-item label="重量">
<el-col :span="3">
<el-input class="numberInput" v-model.trim="minWeight"></el-input>
<!-- <el-input-number
v-model="
form.minWeight == 0
? (form.minWeight = undefined)
: form.minWeight
"
:precision="2"
:controls="false"
style="width: 100%"
></el-input-number> -->
</el-col>
<el-col :span="1" style="text-align: center"><span>Kg</span></el-col>
<el-col style="text-align: center" :span="1">-</el-col>
<el-col :span="3">
<el-input class="numberInput" v-model.trim="maxWeight"></el-input>
<!-- <el-input-number
v-model="
form.maxWeight == 0
? (form.maxWeight = undefined)
: form.maxWeight
"
:precision="2"
:controls="false"
style="width: 100%"
></el-input-number> -->
</el-col>
<el-col :span="1" style="text-align: center"><span>Kg</span></el-col>
</el-form-item>
......@@ -135,9 +99,10 @@
<el-checkbox-group v-model="form.serviceCode">
<el-row>
<el-col :span="2" v-for="item in serviceCode" :key="item.id">
<el-checkbox v-if="item.status === 1 || form.serviceCode.includes(item.englishName)"
:label="item.englishName" :name="item.englishName"
:disabled="form.serviceCode.includes(item.englishName) && item.status === 0">
<el-checkbox v-if="item.status === 1 || form.serviceCode.includes(item.chineseName)"
:label="item.chineseName" :name="item.chineseName"
:disabled="form.serviceCode.includes(item.chineseName) && item.status === 0">
<Tooltips :content="item.chineseName" :refName="item.code"></Tooltips>
</el-checkbox>
</el-col>
</el-row>
......@@ -149,9 +114,10 @@
<el-checkbox-group v-model="form.handlingCode">
<el-row>
<el-col :span="3" v-for="item in handlingCode" :key="item.id">
<el-checkbox v-if="item.status === 1 || form.handlingCode.includes(item.englishName)"
:label="item.englishName" :name="item.englishName"
:disabled="form.handlingCode.includes(item.englishName) && item.status === 0">
<el-checkbox v-if="item.status === 1 || form.handlingCode.includes(item.chineseName)"
:label="item.chineseName" :name="item.chineseName"
:disabled="form.handlingCode.includes(item.chineseName) && item.status === 0">
<Tooltips :content="item.chineseName" :refName="item.code"></Tooltips>
</el-checkbox>
</el-col>
</el-row>
......@@ -163,9 +129,10 @@
<el-checkbox-group v-model="form.subCategory">
<el-row>
<el-col :span="3" v-for="item in subCategory" :key="item.id">
<el-checkbox v-if="item.status === 1 || form.subCategory.includes(item.englishName)"
:label="item.englishName" :name="item.englishName"
:disabled="form.subCategory.includes(item.englishName) && item.status === 0">
<el-checkbox v-if="item.status === 1 || form.subCategory.includes(item.chineseName)"
:label="item.chineseName" :name="item.chineseName"
:disabled="form.subCategory.includes(item.chineseName) && item.status === 0">
<Tooltips :content="item.chineseName" :refName="item.code"></Tooltips>
</el-checkbox>
</el-col>
</el-row>
......@@ -174,7 +141,8 @@
</el-form-item>
</el-form>
<div style="marginLeft: 200px">
<el-button type="primary" size="small" v-if="$route.params.handle != 'detail'" @click="submit('form')"
<el-button type="primary" size="small"
v-if="$route.params.handle != 'detail' && $route.params.handle != 'DMdetail'" @click="submit('form')"
:loading="btnLoading">
<span v-if="$route.params.handle === 'add'">添加</span>
<span v-else>保存</span>
......@@ -244,7 +212,7 @@ export default {
this.dataId = this.$route.params.id;
this.handleName = this.$route.params.handle;
this.dictData();
if (this.handleName === "detail") {
if (this.handleName === "detail" || this.handleName === 'DMdetail') {
this.disable = true;
}
......@@ -254,7 +222,8 @@ export default {
if (
sessionStorage.getItem("flightInfo" + id) &&
this.$route.name == "FlightAllocConfigInfo" &&
this.handleName != "detail"
this.handleName != "detail" &&
this.handleName != "DMdetail"
) {
this.loading = false;
this.form = JSON.parse(
......@@ -359,12 +328,12 @@ export default {
},
methods: {
//排序
sorttodo(arr, englishName) {
sorttodo(arr, chineseName) {
var index = 1,
newArr = [],
length = arr.length;
for (var i = 0; i < length; i++) {
if (arr[i].englishName === englishName) {
if (arr[i].chineseName === chineseName) {
newArr[0] = arr[i];
} else {
newArr[index++] = arr[i];
......@@ -412,10 +381,6 @@ export default {
let notInclude = this.form.notIncludeUrsa.split(";");
let errorList = [];
notInclude.forEach((element) => {
// if (include.includes(element)) {
// this.msgWarning("URSA包含与URSA不包含中有相同项,不能设置")
// return
// }
if (element.indexOf("_") > 0) {
errorList.push(element);
} else {
......@@ -443,22 +408,22 @@ export default {
}
let service = []
this.serviceCode.forEach(item => {
if (item.status === 1 && this.form.serviceCode.includes(item.englishName)) {
service.push(item.englishName)
if (item.status === 1 && this.form.serviceCode.includes(item.chineseName)) {
service.push(item.chineseName)
}
})
this.form.serviceCode = service
let hand = []
this.handlingCode.forEach(item => {
if (item.status === 1 && this.form.handlingCode.includes(item.englishName)) {
hand.push(item.englishName)
if (item.status === 1 && this.form.handlingCode.includes(item.chineseName)) {
hand.push(item.chineseName)
}
})
this.form.handlingCode = hand
let sub = []
this.subCategory.forEach(item => {
if (item.status === 1 && this.form.subCategory.includes(item.englishName)) {
sub.push(item.englishName)
if (item.status === 1 && this.form.subCategory.includes(item.chineseName)) {
sub.push(item.chineseName)
}
})
......@@ -486,15 +451,19 @@ export default {
this.form.handlingCode = this.formHandlingCode;
this.form.subCategory = this.formSubCategory;
},
close() {
this.removes();
this.$store.state.tagsView.visitedViews.splice(
this.$store.state.tagsView.visitedViews.findIndex(
(item) => item.path === this.$route.path
),
1
);
this.$router.push({ name: "FlightAllocConfig" })
if (this.handleName === 'DMdetail') {
this.$router.push({ name: "DmLog" })
} else {
this.$router.push({ name: "FlightAllocConfig" })
}
},
removes() {
......@@ -515,10 +484,10 @@ export default {
this.cargoType = dict.cargoType;
this.cargoStatus = dict.cargoStatus;
this.serviceCode = this.dicSort(dict.serviceCode.sort((a, b) =>
a.englishName.localeCompare(b.englishName)
a.chineseName.localeCompare(b.chineseName)
));
this.handlingCode = this.dicSort(this.sorttodo(dict.handlingCode, "BLANK"));
this.subCategory = this.dicSort(dict.subCategory);
this.subCategory = this.dicSort(this.sorttodo(dict.subCategory, "Blank"));
});
},
......@@ -550,7 +519,7 @@ export default {
if (sessionStorage.getItem("flightInfo" + this.dataId) == "remove") {
sessionStorage.removeItem("flightInfo" + this.dataId);
} else {
if (this.handleName != "detail") {
if (this.handleName != "detail" && this.handleName != "DMdetail") {
this.form.isNeedRequired = this.isNeedRequired;
sessionStorage.setItem(
"flightInfo" + this.dataId,
......
......@@ -11,7 +11,8 @@
</el-select>
</el-form-item>
<el-form-item>
<el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">查询原航班配置</el-button>
<el-button type="primary" icon="el-icon-search" size="mini" :loading="loading" @click="handleQuery">查询原航班配置
</el-button>
</el-form-item>
<br />
<el-form-item label="日期" prop="flightDate">
......@@ -30,37 +31,28 @@
<el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button>
</el-form-item>
</el-form>
<el-table v-loading="loading" height="550" size="small" :data="sourceFlightRulesList" highlight-current-row border
stripe>
<el-table-column type="index" label="序号" align="center">
<template slot-scope="scope">{{ scope.$index + 1 }}</template>
</el-table-column>
<el-table-column label="原航班" align="center" prop="sourceFlightNo" />
<el-table-column label="配载航班排序" align="center" prop="flightRank" width="280" />
<el-table-column label="周期" align="center" prop="dayOfWeek" width="180" />
<el-table-column label="状态" align="center" prop="status" :formatter="statusFormat" />
<el-table-column label="开始时间" align="center" prop="startDate" width="100" />
<el-table-column label="结束时间" align="center" prop="endDate" width="100" />
<el-table-column label="最后修改人" align="center" prop="updateUserName" width="100" />
<el-table-column label="最后修改时间" align="center" prop="updateTime" width="100" />
<el-table-column label="操作" align="center" class-name="small-padding fixed-width" width="180">
<template slot-scope="scope">
<el-button size="mini" type="text" icon="el-icon-edit" v-hasPermi="['allocation:rand:update']"
@click="handleUpdate(scope.row)">修改</el-button>
<el-button size="mini" type="text" icon="el-icon-delete" style="color:#ff4949"
v-hasPermi="['allocation:rand:delete']" @click="handleDeleteorPlayorpause(scope.row, 0, '删除')">
删除</el-button>
<el-button size="mini" type="text" icon="el-icon-video-play" v-if="scope.row.status == '3'"
v-hasPermi="['allocation:rand:openClose']" @click="handleDeleteorPlayorpause(scope.row, 1, '启用')">启用
</el-button>
<el-button size="mini" type="text" icon="el-icon-video-pause" v-if="scope.row.status != '3'"
v-hasPermi="['allocation:rand:openClose']" @click="handleDeleteorPlayorpause(scope.row, 3, '停用')">停用
</el-button>
</template>
</el-table-column>
</el-table>
<pagination v-show="total > 0" :total="total" layout=" prev, pager, next, jumper, sizes,total"
:page.sync="queryParams.pageNum" :limit.sync="queryParams.limit" @pagination="findSourceFlightRules" />
<Tables ref="newTables" ductName="flightRand" :data="sourceFlightRulesList" :headerData="tableHeaders['flightRand']"
:order="true" :totalCount="total" :loading="loading" :limitSize="queryParams.limit"
:limitStart="queryParams.start" :page="queryParams.pageNum" :pageSizes="[20]" :height="tableHeight"
@currentChange="currentChange">
<template slot="optionColumn">
<el-table-column label="操作" align="center" class-name="small-padding fixed-width" width="180">
<template slot-scope="scope">
<el-button size="mini" type="text" icon="el-icon-edit" v-hasPermi="['allocation:rand:update']"
@click="handleUpdate(scope.row)">修改</el-button>
<el-button size="mini" type="text" icon="el-icon-delete" style="color:#ff4949"
v-hasPermi="['allocation:rand:delete']" @click="handleDeleteorPlayorpause(scope.row, 0, '删除')">
删除</el-button>
<el-button size="mini" type="text" icon="el-icon-video-play" v-if="scope.row.status == '3'"
v-hasPermi="['allocation:rand:openClose']" @click="handleDeleteorPlayorpause(scope.row, 1, '启用')">启用
</el-button>
<el-button size="mini" type="text" icon="el-icon-video-pause" v-if="scope.row.status != '3'"
v-hasPermi="['allocation:rand:openClose']" @click="handleDeleteorPlayorpause(scope.row, 3, '停用')">停用
</el-button>
</template>
</el-table-column>
</template>
</Tables>
<!-- 查看目的航班对话框 -->
<el-dialog title="实际配载航班" :visible.sync="openFlightDate" width="70%" :close-on-click-modal="false"
:show-close="false" :append-to-body="true">
......@@ -129,7 +121,11 @@
<el-col :span="24">
<el-form-item label="周期段">
<el-checkbox-group v-model="dayOfWeek">
<el-checkbox v-for="item in dayOfWeekList" :key="item" :label="item" :name="item"></el-checkbox>
<el-row :gutter="10">
<el-col :span="2" v-for="item in dayOfWeekList" :key="item">
<el-checkbox :label="item" :name="item"></el-checkbox>
</el-col>
</el-row>
</el-checkbox-group>
</el-form-item>
</el-col>
......@@ -188,6 +184,8 @@ export default {
title: "",
// 总条数
total: 0,
//table高度
tableHeight: null,
// 原航班规则数据
sourceFlightRulesList: [],
//目的航班数据
......@@ -247,6 +245,9 @@ export default {
this.findSourceFlightRules();
}
},
mounted() {
this.tableHeight = window.innerHeight - this.$refs.queryForm.$el.offsetHeight - 200
},
activated() {
this.findSourceFlightRules();
},
......@@ -420,17 +421,6 @@ export default {
this.findSourceFlightRules();
//this.reset();
},
// 状态字典翻译
statusFormat(row) {
if (row.status === "1") {
return "有效";
} else if (row.status === "0") {
return "执行中";
} else if (row.status === "3") {
return "停用";
}
return row.status;
},
/** 重置按钮操作 */
resetQuery() {
this.queryParams.sourceFlightNo = undefined;
......@@ -443,6 +433,12 @@ export default {
this.queryParams.start = 0;
this.findSourceFlightRules();
},
//翻页
currentChange(val) {
this.queryParams.start = val.start;
this.queryParams.pageNum = val.page;
this.findSourceFlightRules();
}
},
computed: {
sourceFlightNo: {
......
......@@ -18,28 +18,28 @@
</el-col>
<el-col :span="6">
<el-form-item label="航班号">
<el-input type="textarea" v-model="fltNo" clearable class="formItem" placeholder="AC001;AC002" rows="1">
<el-input type="textarea" v-model="fltNo" clearable class="formItem" placeholder="AC001;AC002" :rows="1">
</el-input>
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="运单号">
<el-input clearable type="textarea" v-model="queryParams.waybillNo" class="formItem"
placeholder="请输入运单号(回车间隔)" rows="1"></el-input>
<el-form-item label="站点">
<el-input type="textarea" v-model="siteName" class="formItem" placeholder="PVG;PEK" clearable :rows="1">
</el-input>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="6">
<el-form-item label="站点">
<el-input type="textarea" v-model="siteName" class="formItem" placeholder="PVG;PEK" clearable rows="1">
<el-form-item label="URSA">
<el-input clearable type="textarea" v-model="ursa" class="formItem" placeholder="S_;P_;E2" :rows="1">
</el-input>
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="URSA">
<el-input clearable type="textarea" v-model="ursa" class="formItem" placeholder="S_;P_;E2" rows="1">
</el-input>
<el-form-item label="运单号">
<el-input clearable type="textarea" v-model="queryParams.waybillNo" class="formItem"
placeholder="请输入运单号(回车间隔)" :rows="4"></el-input>
</el-form-item>
</el-col>
</el-row>
......
<template>
<div style="margin: 20px">
<el-form :inline="true" :model="form" class="demo-form-inline" size="small">
<el-form :inline="true" class="demo-form-inline" size="small">
<el-form-item>
<el-upload action="/caPreReviewImport/importFlight" name="file" :http-request="uploadExcel"
:on-remove="handleRemove" :limit="1" :on-exceed="handleExceed" :file-list="fileList" accept=".xlsx"
......@@ -15,7 +15,7 @@
<div style="font-size: 12px; font-weight: 700">
提示:<span style="color: #1890ff">以下为所提交的数据或出错信息</span>
</div>
<el-table ref="filterTable" :data="tableData" v-loading="loading" style="width: 100%; margin-top: 20px" size="small"
<el-table ref="filterTable" class="mt20" :data="tableData" v-loading="loading" style="width: 100%" size="small"
border>
<el-table-column label="行号" prop="line" width="50" align="center">
</el-table-column>
......@@ -49,18 +49,13 @@ export default {
return {
// 遮罩层
loading: false,
flightType: [],
form: {
type: "",
region: "",
},
fileList: [],
tableData: [],
};
},
methods: {
downloadTempleate() {
let fileName = "航班预审导入模板.xlsx";
let fileName = "航班预审回执导入模板.xlsx";
downLoadTemplate().then((res) => {
if (res) {
const blob = new Blob([res]);
......@@ -82,7 +77,7 @@ export default {
//上传excel
const file = option.file;
this.loading = true;
importcaPreReview(file, this.form.type).then((res) => {
importcaPreReview(file, '').then((res) => {
this.loading = false;
if (res.code != 200) {
if (res.code == 603) {
......
......@@ -23,7 +23,7 @@
<div style="font-size: 12px; font-weight: 700">
提示:<span style="color: #1890ff">以下为所提交的数据或出错信息</span>
</div>
<el-table ref="filterTable" :data="tableData" style="margin-top: 20px" size="small" border>
<el-table ref="filterTable" class="mt20" :data="tableData" size="small" border>
<el-table-column label="行号" prop="line" width="50" align="center">
</el-table-column>
<el-table-column label="错误信息" prop="errorMessage" width="200">
......
......@@ -47,7 +47,8 @@
</el-form-item>
</el-col>
</el-row>
<el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button>
<el-button type="primary" icon="el-icon-search" size="mini" :loading="loading" @click="handleQuery">搜索
</el-button>
<el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button>
<el-button type="primary" icon="el-icon-plus" size="mini" @click="handleAdd" v-hasPermi="['base:flightInfo:add']">
新增</el-button>
......@@ -70,7 +71,7 @@
@sortChange="sortChange" @sizeChange="sizeChange">
<template slot="optionColumn">
<el-table-column v-if="findAllFltDatList.length > 0" label="操作" align="center"
class-name="small-padding fixed-width" fixed="right">
class-name="small-padding fixed-width" :fixed="tableHeader.length > 10 ? 'right' : false">
<template slot-scope="scope">
<el-button size="mini" type="text" icon="el-icon-edit" @click="handleUpdate(scope.row)"
v-hasPermi="['base:flightInfo:update']">修改</el-button>
......@@ -109,7 +110,7 @@
</el-col>
<el-col :span="12">
<el-form-item label="航班路线" prop="route">
<el-input class="wid80" v-model="form.route" placeholder="请输入航班路线(XXX-XXX字母大写)" />
<el-input class="wid80" v-model="form.route" placeholder="请输入航班路线(XXX-XXX字母大写,多组用;分割)" />
</el-form-item>
</el-col>
</el-row>
......@@ -168,9 +169,17 @@
<el-row>
<el-col :span="12">
<el-form-item label="是否预审" prop="isNeedRequired">
<el-switch class="wid80" :disabled="true" v-model="form.isNeedRequired" :active-value="1"
<!-- <el-switch class="wid80" :disabled="true" v-model="form.isNeedRequired" :active-value="1"
:inactive-value="0" active-color="#13ce66">
</el-switch>
</el-switch> -->
<el-select class="wid80" v-model="form.isNeedRequired" placeholder="">
<el-option label="未设置" :value="2">
</el-option>
<el-option label="是" :value="1">
</el-option>
<el-option label="否" :value="0">
</el-option>
</el-select>
</el-form-item>
</el-col>
<el-col :span="12">
......@@ -268,7 +277,9 @@ export default {
fltNo: undefined, //航班号,要大写
},
//表单参数
form: {},
form: {
isNeedRequired: 2
},
//表单校验
rules: {
fltNo: [
......@@ -306,7 +317,7 @@ export default {
// trigger: "blur",
// },
// {
// pattern: /^([A-Z]{3,4})(\-[A-Z]{3,4})+$/,
// pattern: /^(([\~A-Z]{3,4})(\-[A-Z]{3,4})+)(;{1,1}(([\~A-Z]{3,4})(\-[A-Z]{3,4})+)){0,}$/,
// message: "请输入正确得航班线路"
// }
// ]
......@@ -486,15 +497,15 @@ export default {
//this.form.highLowPriceFlg = true;
}
//是否预审:根据已存在的相同航班号对应的最新值进行设置,如果无相同航班号,按照默认设置‘是否预审’ 为否,不可编辑;
if (
response.data != null &&
response.data.isNeedRequired != null &&
response.data.isNeedRequired != undefined
) {
this.form.isNeedRequired = response.data.isNeedRequired;
} else {
this.form.isNeedRequired = 0;
}
// if (
// response.data != null &&
// response.data.isNeedRequired != null &&
// response.data.isNeedRequired != undefined
// ) {
// this.form.isNeedRequired = response.data.isNeedRequired;
// } else {
// this.form.isNeedRequired = 0;
// }
//高/低价百分比:根据已存在的相同航班号对应的最新值进行设置,如果无相同航班号,按照默认设置‘高价百分比’60%,‘低价百分比’40%,不可编辑
if (
response.data != null &&
......@@ -789,7 +800,7 @@ export default {
},
//表单重置
reset() {
this.form = {};
this.form = { isNeedRequired: 2 };
this.resetForm("form");
},
//取消按钮
......@@ -896,6 +907,7 @@ export default {
//每页长度
sizeChange(val) {
this.queryParams.limitSize = val;
this.queryParams.pageNum = 1
this.findAllFltData();
},
setClose() {
......
......@@ -11,28 +11,17 @@
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="配载航班号">
<el-input type="textarea" v-model="cargoPlaneNo" class="formItem" placeholder="AC001;AC002" :rows="1"
clearable></el-input>
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="海关回执状态">
<el-select placeholder="不限" v-model="formData.customsReceiptStatusId" class="formItem" filterable multiple
clearable>
<el-select v-model="formData.customsReceiptStatusId" class="formItem" filterable multiple clearable
placeholder="不限">
<el-option v-for="item in findConditionData.cargoCustomsReturnStatus" :label="item.chineseName"
:value="item.id" :key="item.id">
<Tooltips :content="item.chineseName" :refName="item.code"></Tooltips>
</el-option>
</el-select>
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="运单号">
<el-input ref='userInfo' type="textarea" v-model="formData.waybillNo" class="formItem"
placeholder="请输入运单号(回车间隔)" :rows="1" :maxlength="12000" clearable></el-input>
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="申报类别">
<el-select placeholder="不限" v-model="formData.typeId" class="formItem" clearable>
<el-option v-for="item in findConditionData.cargoType" :label="item.chineseName" :value="item.id"
......@@ -43,22 +32,35 @@
</el-col>
<el-col :span="6">
<el-form-item label="服务类型">
<el-select placeholder="不限" v-model="formData.serviceTypeId" class="formItem" filterable clearable>
<el-select v-model="formData.serviceTypeId" class="formItem" filterable multiple clearable placeholder="不限">
<el-option v-for="item in findConditionData.cargoServiceType" :label="item.chineseName" :value="item.id"
:key="item.id">
<Tooltips :content="item.chineseName" :refName="item.code"></Tooltips>
</el-option>
</el-select>
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="运单号">
<el-input ref='userInfo' type="textarea" v-model="formData.waybillNo" class="formItem"
placeholder="请输入运单号(回车间隔)" :rows="4" :maxlength="12000" clearable></el-input>
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="配载航班号">
<el-input type="textarea" v-model="cargoPlaneNo" class="formItem" placeholder="AC001;AC002" :rows="4"
clearable></el-input>
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="URSA">
<el-input type="textarea" v-model="ursa" class="formItem" placeholder="S_;P_;E2" :rows="1" clearable>
<el-input type="textarea" v-model="ursa" class="formItem" placeholder="S_;P_;E2" :rows="4" clearable>
</el-input>
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="站点">
<el-input type="textarea" v-model="siteName" class="formItem" placeholder="PVG;PEK" :rows="1" clearable>
<el-input type="textarea" v-model="siteName" class="formItem" placeholder="PVG;PEK" :rows="4" clearable>
</el-input>
</el-form-item>
</el-col>
......@@ -130,7 +132,7 @@
</el-row>
</el-col>
</el-row>
<div style="paddingLeft: 10px; marginTop: 20px">
<div class="pl10 mt20">
<el-button type="primary" icon="el-icon-search" size="small" :loading="tableLoading" @click="select(0)">查询
</el-button>
<el-button v-hasPermi="['base:cargo:export']" :type="downLoadingTip.downloading ? 'warning' : 'primary'"
......@@ -143,7 +145,7 @@
}}</el-button>
<el-button type="primary" size="small" :disabled="selectTable.length == 0" v-hasPermi="['base:cargo:release']"
@click="release">释放舱位</el-button>
<span style="marginLeft: 20px; color: #ffba00">全部导出上限80000条数据</span>
<span class="ml20" style="color: #ffba00">全部导出上限80000条数据</span>
<el-progress v-if="progress != 0" class="progress" :stroke-width="12" :show-text="true" :percentage="progress"
:status="progress == 100 ? 'success' : 'warning'"></el-progress>
<div class="tips">
......@@ -151,7 +153,13 @@
<span>总件数:{{ allQty }}</span>
</div>
<div class="formShow">
<el-button class="mr20" icon="el-icon-search" size="mini" @click="formShow = !formShow" circle></el-button>
<el-tooltip :content="formShow ? '隐藏查询条件' : '显示查询条件'" placement="top">
<el-button class="mr20" icon="el-icon-search" size="mini" @click="formShow = !formShow" circle></el-button>
</el-tooltip>
<el-tooltip content="表格设置" placement="top">
<HeaderSetting tableName="cargo" class="mr20" style="float:right;line-height: 48px;"
@close="headerSetClose"></HeaderSetting>
</el-tooltip>
</div>
</div>
</el-form>
......@@ -212,7 +220,7 @@ export default {
limitStart: 1,
limitSize: 100,
}, //表单数据
tableHeader: this.tableHeaders['cargo'], //表头数据
tableHeader: [], //表头数据
releaseHeader: [
{
name: "提示信息",
......@@ -291,13 +299,18 @@ export default {
},
created() {
this.findCondition()
if (this.$store.getters.tableHeader) {
this.tableHeader = this.$store.getters.tableHeader['cargo']
} else {
this.tableHeader = this.tableHeaders['cargo']
}
},
activated() {
if (this.$store.state.tagsView.cachedViews.length > 0) {
this.findCondition()
this.$store.state.tagsView.cachedViews.forEach(item => {
if (item === 'QueryCargo') {
this.findCondition()
this.totalCount > 0 ? this.select() : ''
}
})
......@@ -331,7 +344,7 @@ export default {
this.$refs.cargoForm.resetFields();
},
// 查询条件
findCondition() {
async findCondition() {
findConditionData().then((res) => {
if (res.code == 200) {
this.findConditionData = res.data;
......@@ -341,7 +354,7 @@ export default {
});
},
//查询
select(val) {
async select(val) {
this.tableData = [];
this.allWeight = 0;
this.allQty = 0;
......@@ -563,6 +576,17 @@ export default {
}
}
},
//设置关闭
headerSetClose(val) {
if (val == 1) {
this.tableHeader = []
this.tableData = []
this.$nextTick(() => {
this.tableHeader = this.$store.getters.tableHeader['cargo']
this.select()
})
}
}
},
computed: {
fltNo: {
......
......@@ -15,8 +15,8 @@
</el-form-item>
<!-- <el-checkbox v-model="loginForm.rememberMe" style="margin:0px 0px 25px 0px;">记住密码</el-checkbox> -->
<el-form-item style="width:100%;marginTop:44px">
<el-button :loading="loading" size="medium" type="primary" style="width:100%;"
<el-form-item style="width: 100%; marginTop: 65px">
<el-button :loading="loading" size="medium" type="primary" style="width: 100%"
@click.native.prevent="handleLogin">
<span v-if="!loading">登 录</span>
<span v-else>登 录 中...</span>
......@@ -31,9 +31,6 @@
</template>
<script>
import { getCodeImg } from "@/api/login";
//import Cookies from "js-cookie";
import { encrypt, } from '@/utils/jsencrypt'
export default {
name: "Login",
......@@ -44,18 +41,18 @@ export default {
loginForm: {
username: "root",
password: "123",
rememberMe: false
rememberMe: false,
},
loginRules: {
username: [
{ required: true, trigger: "blur", message: "用户名不能为空" }
{ required: true, trigger: "blur", message: "用户名不能为空" },
],
password: [
{ required: true, trigger: "blur", message: "密码不能为空" }
]
{ required: true, trigger: "blur", message: "密码不能为空" },
],
},
loading: false,
redirect: undefined
redirect: undefined,
};
},
watch: {
......@@ -63,52 +60,59 @@ export default {
handler: function (route) {
this.redirect = route.query && route.query.redirect;
},
immediate: true
}
immediate: true,
},
},
created() {
this.getCookie();
},
methods: {
getCookie() {
const username = localStorage.getItem("username");
const password = localStorage.getItem("password");
const rememberMe = localStorage.getItem('rememberMe')
const rememberMe = localStorage.getItem("rememberMe");
this.loginForm = {
username: username === undefined ? this.loginForm.username : username,
password: password === undefined ? this.loginForm.password : password,
rememberMe: rememberMe === undefined ? false : Boolean(rememberMe)
rememberMe: rememberMe === undefined ? false : Boolean(rememberMe),
};
},
handleLogin() {
this.$refs.loginForm.validate(valid => {
this.$refs.loginForm.validate((valid) => {
if (valid) {
this.loading = true;
if (this.loginForm.rememberMe) {
localStorage.setItem("username", this.loginForm.username, { expires: 30 });
localStorage.setItem("password", this.loginForm.password, { expires: 30 });
localStorage.setItem('rememberMe', this.loginForm.rememberMe, { expires: 30 });
localStorage.setItem("username", this.loginForm.username, {
expires: 30,
});
localStorage.setItem("password", this.loginForm.password, {
expires: 30,
});
localStorage.setItem("rememberMe", this.loginForm.rememberMe, {
expires: 30,
});
} else {
localStorage.removeItem("username");
localStorage.removeItem("password");
localStorage.removeItem('rememberMe');
localStorage.removeItem("rememberMe");
}
this.$store.dispatch("Login", this.loginForm).then(res => {
this.loading = false;
if (res.code != 200) {
this.msgWarning(res.msg)
}
this.$router.push({ path: this.redirect || "/" }).catch(() => { });
}).catch(err => {
this.loading = false;
console.log(err)
});
this.$store
.dispatch("Login", this.loginForm)
.then(res => {
this.loading = false;
if (res.code != 200) {
this.msgWarning(res.msg)
}
this.$router.push({ path: this.redirect || "/" }).catch(() => { });
})
.catch(err => {
this.loading = false;
this.msgWarning(err)
});
}
});
}
}
},
},
};
</script>
......
......@@ -5,7 +5,7 @@ export default {
const { path } = params
this.$router.replace({ path: '/' + path, query })
},
render: function(h) {
render: function (h) {
return h() // avoid warning message
}
}
......
<template>
<div>
<el-dialog :title="title" :visible.sync="open" width="25%" :close-on-click-modal="false" :show-close="false"
append-to-body center>
<el-form ref="add" :model="newDictionary" label-width="auto" label-position="left" size="small"
:rules="rules" @submit.native.prevent>
<!-- 新增数据字典 -->
<div v-if="dictName != '虚拟航班'">
<el-form-item label="所属父级" v-if="newDictionary.serviceCodeKey">
<el-input type="text" v-model="newDictionary.serviceCodeKey" placeholder="用回车分隔" disabled>
</el-input>
</el-form-item>
<!-- 批量新增 -->
<el-form-item label="数据名称" v-if="status == 'allAdd' || status == 'childrenAdd'" prop="chineseName">
<el-input type="textarea" v-model="newDictionary.chineseName" :rows="7" maxlength="255"
show-word-limit placeholder="用回车分隔">
</el-input>
</el-form-item>
<div v-else>
<!-- 单条新增 -->
<el-form-item label="数据名称" prop="chineseName">
<el-input type="text" v-model.trim="newDictionary.chineseName" placeholder="请输入数据名称"
maxlength="50"></el-input>
</el-form-item>
<!-- <el-form-item label="字典CODE" prop="code" v-show="addDictionary.chineseName">
<el-input type="text" v-model.trim="newDictionary.code" placeholder="请输入字典CODE" disabled>
</el-input>
</el-form-item> -->
<el-form-item label="描述" prop="description">
<el-input type="textarea" v-model="newDictionary.description" :row="3" maxlength="125"
show-word-limit></el-input>
</el-form-item>
</div>
</div>
<!-- 新增虚拟航班 -->
<div v-else>
<el-form-item label="所属口岸" prop="portName">
<el-select v-model="newDictionary.portName" placeholder="选择口岸" disabled>
<el-option v-for="item in $store.state.user.portNames" :label="item" :value="item"
:key="item">
</el-option>
</el-select>
</el-form-item>
<el-form-item label="航班名称" v-if="status == 'allAdd'" prop="flightNo">
<el-input type="textarea" v-model="flightNo" :rows="7" maxlength="255" show-word-limit
placeholder="用;分隔,单条航班名长度25">
</el-input>
</el-form-item>
<el-form-item label="航班名称" prop="flightNo" v-else>
<el-input type="text" v-model="flightNo" placeholder="请输入数据名称" maxlength="25"></el-input>
</el-form-item>
</div>
</el-form>
<div slot="footer" class="dialog-footer">
<el-button type="primary" :loading="loading" @click="submit">确 定</el-button>
<el-button @click="close">取 消</el-button>
</div>
</el-dialog>
</div>
</template>
<script>
import { addDict, addDictBatch, addServiceCodeBatch, addFlight } from '@/api/system/dictionary.js'
export default {
props: {
open: {
type: Boolean,
default: false,
},
dictName: {
type: String,
default: ''
},
addDictionary: {
type: Object,
default: null
},
status: {
type: String,
default: null
}
},
data() {
return {
newDictionary: { flightNo: undefined, chineseName: undefined },
rules: {
chineseName: [
{
required: true,
message: "数据名称不能为空",
trigger: "blur",
}
],
flightNo: [
{
required: true,
message: "航班名称不能为空",
trigger: "blur",
},
]
},
title: '',
loading: false,
}
},
watch: {
open(val, oldVal) {
if (val) {
this.newDictionary = { flightNo: undefined, chineseName: undefined }
if (this.status == 'add') {
this.title = '新增'
} else if (this.status == 'allAdd') {
this.title = '批量新增'
} else if (this.status == 'childrenAdd') {
this.newDictionary = this.addDictionary
this.title = '新增子集'
}
// else if (this.status == 'update') {
// if (this.addDictionary.serviceCodeValue) {
// this.newDictionary = {
// chineseName: this.addDictionary.serviceCodeValue,
// fname: this.addDictionary.serviceCodeKey,
// code: this.addDictionary.serviceCodeValue,
// }
// } else {
// this.newDictionary = this.addDictionary
// }
// this.title = '修改'
// }
if (this.dictName == '虚拟航班') {
this.newDictionary.portName = this.$store.state.user.activePortName
}
}
},
},
methods: {
//确定
submit() {
this.$refs['add'].validate((val) => {
if (val) {
this.loading = true
this.newDictionary.dictCode = this.dictName
//新增字典
if (this.status == 'add') {
if (this.dictName === '虚拟航班') {
this.flightAdd()
} else {
addDict(this.newDictionary).then(res => {
this.loading = false
if (res.code === 200) {
this.msgSuccess(res.msg)
this.close()
} else {
this.msgWarning(res.msg)
}
}).catch(err => {
this.loading = false
console.log(err)
})
}
}
//批量新增
else if (this.status == 'allAdd') {
if (this.dictName === '虚拟航班') {
this.flightAdd()
} else {
let obj = {
nameList: [],
dictCode: this.dictName
}
this.newDictionary.chineseName.split("\n").forEach(item => {
if (item != null && item != undefined && item != '') {
obj.nameList.push(item)
}
})
addDictBatch(obj).then(res => {
this.loading = false
if (res.code === 200) {
this.msgSuccess(res.msg)
this.close()
} else {
this.msgWarning(res.msg)
}
}).catch(err => {
this.loading = false
console.log(err)
})
}
}
//新增子集
else if (this.status == 'childrenAdd') {
let arr = []
this.newDictionary.chineseName.split("\n").forEach(item => {
arr.push({
serviceCodeKey: this.newDictionary.serviceCodeKey,
serviceCodeValue: item
})
})
addServiceCodeBatch(arr).then(res => {
this.loading = false
if (res.code === 200) {
this.msgSuccess(res.msg)
this.close()
} else {
this.msgWarning(res.msg)
}
}).catch(err => {
this.loading = false
console.log(err)
})
}
}
})
},
//新增虚拟航班
flightAdd() {
let flightNo = []
flightNo = this.newDictionary.flightNo.toUpperCase().split(';')
addFlight(flightNo).then(res => {
this.loading = false
if (res.code === 200) {
this.msgSuccess(res.msg)
this.close()
} else {
this.msgWarning(res.msg)
}
}).catch(err => {
this.loading = false
console.log(err)
})
},
//关闭
close() {
this.newDictionary = { chineseName: null, code: null, remark: null }
this.clearValidate('add')
this.$emit('close', false)
},
//清除表单验证
clearValidate(formName) {
this.$refs[formName].clearValidate();
},
},
computed: {
chineseName: {
get: function () {
return this.newDictionary.chineseName
},
set: function (val) {
const reg = /^([a-zA-Z0-9]{0,25}(\n[a-zA-Z0-9]{0,25})*)$/
if (reg.test(val)) {
this.newDictionary.chineseName = val
}
},
},
flightNo: {
get: function () {
return this.newDictionary.flightNo
},
set: function (val) {
const reg = /^([a-zA-Z0-9]{0,25}(\;[a-zA-Z0-9]{0,25})*)$/
if (reg.test(val)) {
this.newDictionary.flightNo = val
}
},
}
}
}
</script>
<style>
</style>
\ No newline at end of file
<template>
<div style="padding:10px">
<el-card style="margin-bottom:10px">
<!-- cardHeader -->
<div slot="header" class="clearfix">
<span style="font-size:16px;font-weight:700">{{ (tableName == 'Site' ? '站点' : tableName ==
'虚拟航班' ? '虚拟航班' : tableName.replace(/( |^)[a-z]/g, L => L.toUpperCase())) + "表"
}}</span>
<div style="float: right; padding: 3px 0">
<span class="selectLabel mr10">切换字典表</span>
<el-select v-model="tableName" size="small" placeholder="不限" filterable @change="selectChange">
<el-option v-for="item in dictNameList" :label="item.chineseName" :value="item.code"
:key="item.id">
</el-option>
<el-option label="虚拟航班" value="虚拟航班"></el-option>
</el-select>
</div>
</div>
<!-- 查询条件 -->
<el-form ref="dictForm" label-width="auto" label-position="left" style="margin-bottom:10px"
@submit.native.prevent>
<el-row :gutter="10" v-if="tableName != 'serviceCode'">
<el-col :span="6">
<el-form-item label="航班名称" v-if="tableName === '虚拟航班'">
<el-input v-model="selectDict.flightNo" size="small" style="width:80%"
placeholder="请输入航班名称"></el-input>
</el-form-item>
<el-form-item label="数据名称" v-else>
<el-input v-model="selectDict.chineseName" size="small" style="width:80%"
placeholder="请输入数据名称"></el-input>
</el-form-item>
</el-col>
</el-row>
<div style="margin-bottom:10px">
<el-button type="primary" icon="el-icon-search" size="small" :loading="loading"
v-if="tableName != 'serviceCode'" @click="tableSelect(1)">查询</el-button>
<el-button type="primary" icon="el-icon-plus" size="small" @click="addDic({ status: 'add' })">
{{ tableName === 'serviceCode' ? '新增父级' : '新增' }}
</el-button>
<el-button type="primary" icon="el-icon-plus" size="small" @click="addDic({ status: 'allAdd' })">
{{ tableName === 'serviceCode' ? '批量新增父级' : '批量新增' }}
</el-button>
<el-button type="danger" icon="el-icon-delete" size="small" :disabled="nowSelect.length == 0"
@click="handleDelete">删除
</el-button>
</div>
</el-form>
<!-- 表格 -->
<Tables v-if="tableName != 'serviceCode' && tableName != '虚拟航班'" ductName="dictionary" :selection="true"
:selectFixed="false" :order='true' :height="tableHeight" :data="tableData" :headerData="tableHeader"
:page="selectDict.page" :pageSizes="[20]" :totalCount="total" :loading="loading"
@currentChange="currentChange" layout="total,prev, pager, next, jumper, ->"
@tableSelect="tableSelection" @tableSelectAll="tableSelectAll">
<template slot="optionColumn">
<el-table-column label="操作" align="center">
<template slot-scope="scope">
<!-- <el-button class="mr5" size="mini" type="text" icon="el-icon-edit"
@click="upDate({ status: 'update', data: scope.row })">修改
</el-button> -->
<el-button size="mini" type="text" style="color:#ff4949" icon="el-icon-delete"
@click="delDict(scope.row)">删除
</el-button>
</template>
</el-table-column>
</template>
</Tables>
<!-- 虚拟航班表 -->
<Tables v-if="tableName === '虚拟航班'" ductName="dictionary" :selection="true" :selectFixed="false"
:order='true' :height="tableHeight" :data="tableData" :headerData="flightHeader" :page="selectDict.page"
:pageSizes="[20]" :totalCount="total" :loading="loading" @currentChange="currentChange"
layout="total,prev, pager, next, jumper, ->" @tableSelect="tableSelection"
@tableSelectAll="tableSelectAll">
<template slot="optionColumn">
<el-table-column label="操作" align="center">
<template slot-scope="scope">
<!-- <el-button class="mr5" size="mini" type="text" icon="el-icon-edit"
@click="upDate({ status: 'update', data: scope.row })">修改
</el-button> -->
<el-button size="mini" type="text" style="color:#ff4949" icon="el-icon-delete"
@click="delDict(scope.row)">删除
</el-button>
</template>
</el-table-column>
</template>
</Tables>
<!-- serviceCode表格(树形结构) -->
<Tables v-show="tableName === 'serviceCode'" ductName="dictionary" :order='false' :height="tableHeight"
:data="tableData" :headerData="serviceCodeHeader" :pageSize="selectDict.page" :pageSizes="[20]"
:totalCount="total" :pagination="false" :loading="loading" @currentChange="currentChange">
<template v-slot:serviceCodeMapperList="scope">
<!-- 二级表格 -->
<el-card>
<Tables v-show="tableName === 'serviceCode'" ductName="dictionary" :selection="true"
:order='false' :selectFixed="false" height="auto" :data="scope.row.serviceCodeMapperList"
:headerData="childrenTableHeader" :pageSize="selectDict.page" :pageSizes="[20]"
:totalCount="total" :pagination="false" :loading="loading" @currentChange="currentChange"
@tableSelect="serviceCodeTableSelection" @tableSelectAll="serviceCodeTableSelectAll">
<template slot="optionColumn">
<el-table-column label="操作" align="center" width="300">
<template slot-scope="scope">
<!-- <el-button class="mr5" size="mini" type="text" icon="el-icon-edit"
@click="upDate({ status: 'update', data: props.row })">修改
</el-button> -->
<el-button size="mini" type="text" style="color:#ff4949" icon="el-icon-delete"
@click="delDict(scope.row)">
删除
</el-button>
</template>
</el-table-column>
</template>
</Tables>
</el-card>
</template>
<template slot="optionColumn">
<el-table-column label="操作" align="center" class-name="small-padding fixed-width">
<template slot-scope="scope">
<el-button class="mr5" v-if="scope.row.serviceCodeMapperList" size="mini" type="text"
icon="el-icon-plus"
@click="addDic({ status: 'childrenAdd', data: scope.row.chineseName })">新增子集
</el-button>
<!-- <el-button class="mr5" size="mini" type="text" icon="el-icon-edit"
@click="upDate({ status: 'update', data: scope.row })">修改
</el-button> -->
<el-button v-if="!scope.row.serviceCodeMapperList" size="mini" type="text"
style="color:#ff4949" icon="el-icon-delete" @click="delDict(scope.row)">删除
</el-button>
</template>
</el-table-column>
</template>
</Tables>
</el-card>
<!-- 新增修改 -->
<Dialog :dictName="tableName" :open="open" :addDictionary="addDictionary" :status="status" @close="close" />
</div>
</template>
<script>
import Dialog from './dialog.vue'
import { getDictNameList, getDictionaryList, getServiceCodeList, delServiceCodeCihild, delDict, flightType, delFlight } from '@/api/system/dictionary.js'
export default {
name: 'DictionaryConfig',
components: {
Dialog
},
data() {
return {
selectDict: {
dictCode: this.tableName,
chineseName: null,
page: 1,
size: 20
},//字典查询条件
tableData: [],
tableHeader: this.tableHeaders['dict'],//表头
flightHeader: [
{
columnChineseName: "航班号",
columnName: "flightNo",
columnWidth: "",
align: "center",
status: 1
}
],//虚拟航班表头
serviceCodeHeader: this.tableHeaders['dictServiceCode'],//serviceCode主表头
childrenTableHeader: this.tableHeaders['dictServiceCodeChildren'],//serviceCode子表头
dictNameList: [],//主表数据
addDictionary: {},//选择数据
nowSelect: [],
tableName: '',
tableHeight: null,
total: 0,
status: null,
loading: false,
open: false,
}
},
created() {
this.dictNameSelect()
},
activated() {
// if (this.$store.state.tagsView.cachedViews.length > 0) {
// this.tableSelect()
// }
},
mounted() {
this.tableHeight = window.innerHeight - this.$refs.dictForm.$el.offsetHeight - 270
},
watch: {
tableName(val, oldVal) {
this.tableName = val
this.selectDict = {
page: 1,
size: 20
}
this.tableSelect()
},
},
methods: {
//字典名称
dictNameSelect() {
getDictNameList().then(res => {
if (res.code === 200) {
this.dictNameList = res.data
this.tableName = this.dictNameList[0].code
} else {
this.msgWarning(res.msg)
}
}).catch(err => {
console.log(err)
this.msgWarning(err)
})
},
//搜索
tableSelect(val) {
this.nowSelect = []
if (val === 1) {
this.selectDict.page = 1
}
this.selectDict.dictCode = this.tableName
if (this.tableName === 'serviceCode') {
getServiceCodeList().then(res => {
if (res.code === 200) {
this.tableData = res.data
this.tableData.forEach(item => {
item.serviceCodeMapperList.map((val, i) => {
val.index = i
})
})
} else {
this.msgWarning(res.msg)
}
}).catch(err => {
console.log(err)
})
} else if (this.tableName === "虚拟航班") {
flightType(this.selectDict).then(res => {
if (res.code === 200) {
this.tableData = res.data.list
this.total = res.data.total
}
}).catch(err => {
console.log(err)
})
} else {
getDictionaryList(this.selectDict).then(res => {
if (res.code === 200) {
this.tableData = res.data.list
this.total = res.data.total
} else {
this.msgWarning(res.msg)
}
}).catch(err => {
console.log(err)
})
}
},
//新增
addDic(val) {
this.status = val.status
if (val.data) {
this.addDictionary = {
serviceCodeKey: val.data
}
}
this.open = true
},
//修改
// upDate(val) {
// console.log(val)
// this.status = val.status
// this.addDictionary = val.data
// this.open = true
// },
//删除按钮
delDict(val) {
if (this.tableName == 'serviceCode') {
this.serviceCodeCihildDel([val.id])
} else if (this.tableName === '虚拟航班') {
this.flightDel([val.id])
} else {
this.dicDel([val.id])
}
},
//批量删除按钮
handleDelete() {
let arr = []
this.nowSelect.forEach(item => {
arr.push(item.id)
})
if (this.tableName == 'serviceCode') {
this.serviceCodeCihildDel(arr)
} else if (this.tableName === '虚拟航班') {
this.flightDel(arr)
} else {
this.dicDel(arr)
}
},
//数据字典删除
dicDel(val) {
this.$confirm("删除字典数据可能会对航班配舱设置产生影响,需手动对航班配舱设置进行维护。是否要删除", "注意!", {
closeOnClickModal: false,
confirmButtonText: "确定删除",
cancelButtonText: "取消",
type: "warning",
}).then(() => {
delDict(val).then(res => {
if (res.code === 200) {
this.msgSuccess(res.msg)
} else {
this.msgWarning(res.msg)
}
this.tableSelect(1)
}).catch(err => {
console.log(err)
})
}).catch(() => { })
},
//serviceCode子字典删除
serviceCodeCihildDel(val) {
this.$confirm("删除子字典数据可能会对航班配舱设置产生影响,需手动对航班配舱设置进行维护。是否要删除", "注意!", {
closeOnClickModal: false,
confirmButtonText: "确定删除",
cancelButtonText: "取消",
type: "warning",
}).then(() => {
delServiceCodeCihild(val).then(res => {
if (res.code === 200) {
this.msgSuccess(res.msg)
} else {
this.msgWarning(res.msg)
}
this.tableSelect(1)
}).catch(err => {
console.log(err)
})
}).catch((() => { }))
},
//虚拟航班删除
flightDel(val) {
this.$confirm("是否要删除此虚拟航班记录!", "注意!", {
closeOnClickModal: false,
confirmButtonText: "确定删除",
cancelButtonText: "取消",
type: "warning",
}).then(() => {
delFlight(val).then(res => {
if (res.code === 200) {
this.msgSuccess(res.msg)
} else {
this.msgSuccess(res.msg)
}
this.tableSelect(1)
}).catch(err => {
console.log(err)
})
}).catch(() => { })
},
//切换字典表
selectChange(val) {
this.tableName = val
},
//关闭状态修改
close(val) {
this.open = val
this.addDictionary = {}
this.tableSelect()
},
//翻页
currentChange(val) {
this.selectDict.page = val.page;
this.tableSelect();
},
//多选
tableSelection(val) {
this.nowSelect = val.selection
},
serviceCodeTableSelection(val) {
this.nowSelect = val.selection
},
//全选
tableSelectAll(val) {
this.nowSelect = val
},
serviceCodeTableSelectAll(val) {
this.nowSelect = val
},
}
}
</script>
<style lang="scss" scoped>
.selectLabel {
font-size: 14px;
font-weight: 600;
}
</style>
\ No newline at end of file
<template>
<div class="menuDrawer">
<el-dialog
:title="drawerTitle"
width="50%"
:visible.sync="dialogVisible"
:close-on-click-modal="false"
:append-to-body="true"
>
<el-form
ref="userForm"
:model="menuForm"
:disabled="menuFormDisabled"
:rules="rules"
label-width="auto"
style="margin: 10px"
>
<el-row>
<el-col :span="12">
<el-form-item label="菜单名称" prop="">
<!-- <el-input
placeholder="请输入权限名"
:disabled="menuFormDisabled"
v-model="menuData.userName"
size="mini"
></el-input> -->
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="菜单路由" prop="">
<!-- <el-input
placeholder="请输入权限名"
:disabled="menuFormDisabled"
v-model="menuData.userName"
size="mini"
></el-input> -->
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="组件名称" prop="">
<!-- <el-input
placeholder="请输入权限名"
:disabled="menuFormDisabled"
v-model="menuData.userName"
size="mini"
></el-input> -->
</el-form-item>
</el-col>
<el-col :span="24">
<el-form-item label="菜单状态" prop="">
<el-switch
v-model="menuData.menuStatus"
active-color="#13ce66"
inactive-color="#ff4949"
:disabled="menuFormDisabled"
></el-switch>
</el-form-item>
</el-col>
<el-col :span="24">
<el-form-item label="图标选择" prop="">
<iconSelect @selected="selected"></iconSelect>
</el-form-item>
</el-col>
<el-col :span="24">
<el-form-item label="权限设置" prop="">
<el-col :span="6">
<el-radio label="页面" size="medium"></el-radio>
</el-col>
<el-col :span="6">
<el-radio label="按钮" size="medium"></el-radio>
</el-col>
<el-col :span="24">
<el-card shadow="never">
<el-input placeholder=""></el-input>
</el-card>
</el-col>
</el-form-item>
</el-col>
</el-row>
</el-form>
<div slot="footer">
<el-button @click="handleClose">取 消</el-button>
<el-button type="primary" @click="submit">确 定</el-button>
</div>
</el-dialog>
</div>
</template>
<script>
import iconSelect from "@/components/IconSelect";
export default {
components: {
iconSelect,
},
props: {
drawerTitle: {
type: String,
default: "",
},
menuFormDisabled: {
type: Boolean,
default: false,
},
dialogVisible: {
type: Boolean,
default: false,
},
menuData: {
type: Object,
default: null,
},
},
data() {
return {
menuForm: {},
rules:{}
};
},
updated() {
this.menuForm = this.menuData;
},
watch:{
dialogVisible(val,oldVal){
if(val){
this.menuForm = this.menuData;
}
}
},
methods: {
handleClose() {
this.$emit("handleClose", false);
},
selected(val) {
console.log(val);
},
submit() {},
},
};
</script>
<style>
</style>
\ No newline at end of file
......@@ -23,7 +23,6 @@
header-align="center" :width="item.width" :formatter="formatter">
</el-table-column>
</template>
<el-table-column header-align="center" align="center" label="操作" width="auto">
<template slot-scope="scope">
<!-- <el-button type="success" size="mini" @click="buttonClick(scope)">修改</el-button>
......@@ -39,55 +38,15 @@
</template>
</el-table-column>
</el-table>
<!-- <Tables
ref="newTable"
:data="data"
:headerData="tableHeader"
size="medium"
rowKey="id"
:defaultExpandAll="true"
height="auto"
@tableSelect="tableSelect"
@tableSelectAll="tableSelectAll"
@SelectChange="SelectChange"
>
<el-table-column
header-align="center"
align="center"
label="操作"
width="auto"
>
<template slot-scope="scope">
<el-button type="primary" size="mini" @click="menuStatus(scope)">{{
scope.menuStatus == 0 ? "停用" : "启用"
}}</el-button>
<el-button type="danger" size="mini" @click="removeMenu(scope)"
>删除菜单</el-button
>
</template>
</el-table-column>
</Tables> -->
<!-- <Drawer
:dialogVisible="drawer"
:drawerTitle="drawerTitle"
:menuFormDisabled="menuFormDisabled"
:menuData="menuData"
@handleClose="handleClose"
></Drawer> -->
</div>
</template>
<script>
import { getAllAuth, updateStatus } from "@/api/system/user.js";
import dictLabels from "@/assets/languages/dictLabels.js";
import Drawer from "./drawer.vue";
export default {
name: "MenuConfig",
components: {
Drawer,
},
data() {
return {
drawer: false,
......@@ -102,35 +61,30 @@ export default {
value: "title",
width: "",
align: "left",
sorTable: false,
},
{
name: "菜单类型",
value: "menuType",
width: "100",
align: "center",
sortable: false,
},
{
name: "权限标识",
value: "permissionKey",
width: "auto",
align: "left",
sortable: false,
},
{
name: "菜单状态",
value: "status",
width: "100",
align: "center",
sorTable: false,
},
{
name: "菜单路由",
value: "path",
width: "auto",
align: "left",
sorTable: false,
},
],
};
......@@ -153,19 +107,16 @@ export default {
this.drawerTitle = "新增菜单";
this.menuFormDisabled = false;
},
//关闭
handleClose(val) {
this.drawer = val;
},
buttonClick(row) {
this.menuData = row.row;
this.drawer = true;
this.drawerTitle = "查看/修改";
this.menuFormDisabled = true;
},
//表格数据
menuAll() {
this.loading = true;
......@@ -184,7 +135,6 @@ export default {
this.loading = false;
});
},
//菜单状态改变
statusUpdate(data) {
updateStatus(data)
......@@ -201,7 +151,6 @@ export default {
console.log(err);
});
},
//菜单开启关闭
menuStatus(row) {
this.$confirm(
......@@ -221,7 +170,6 @@ export default {
})
.catch(() => { });
},
//菜单删除
removeMenu(row) {
this.$confirm("是否要删除此菜单", "提示", {
......@@ -237,7 +185,6 @@ export default {
})
.catch(() => { });
},
formatter(row, column, cellValue, index) {
if (dictLabels["menu"][column.property]) {
if (dictLabels["menu"][column.property][cellValue]) {
......
<template>
<div style="margin:30px 20px 20px">
<el-form class="form-header" :model="pageOption" ref="queryForm" label-position="right" label-width="auto"
size="small">
<el-row>
<el-col :span="6">
<el-form-item label="航班号" prop="fltNo">
<el-input class="wid80" v-model="queryfltNo" placeholder="请输入航班号" maxlength="50" />
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="预审状态" prop="status">
<el-select class="wid80" v-model="pageOption.status" clearable placeholder="不限">
<el-option label="关闭" :value="0">
</el-option>
<el-option label="开启" :value="1">
</el-option>
</el-select>
</el-form-item>
</el-col>
</el-row>
</el-form>
<div class="mb20" ref="preReviewOptions" style="font-size: 12px; font-weight: 700">
<el-button type="primary" icon="el-icon-search" size="small" :loading="tableLoading" @click="preQuery(1)">搜 索
</el-button>
<el-button type="primary" icon="el-icon-plus" size="small" @click="dialogVisible = true">新增预审航班</el-button>
<el-button type="primary" size="small" icon="el-icon-check" :disabled="selectData.length == 0"
@click="preOption(1)">
预审开启</el-button>
<el-button type="primary" size="small" icon="el-icon-close" :disabled="selectData.length == 0"
@click="preOption(0)">
预审关闭</el-button>
<el-button type="danger" icon="el-icon-delete" size="small" :disabled="selectData.length == 0"
@click="preOption(2)">删 除
</el-button>
</div>
<Tables ref="preFlight" ductName="preFlight" :selection="true" :selectFixed="false" :order='true'
:height="tableHeight" :data="flightData" :headerData="tableHeaders" :page="pageOption.page" :pageSizes="[20]"
:totalCount="total" :loading="tableLoading" @currentChange="currentChange"
layout="total,prev, pager, next, jumper, ->" @tableSelect="tableSelection" @tableSelectAll="tableSelectAll">
</Tables>
<el-dialog title="新增预审航班" width="20%" :visible.sync="dialogVisible" :close-on-click-modal="false"
:show-close="false" :append-to-body="true">
<el-form ref="addForm" :model="newPre" label-width="auto" label-position="left" size="small" :rules="rules"
@submit.native.prevent>
<el-form-item label="航班号" prop="addFlitNo">
<el-input type="textarea" v-model="fltNo" :rows="7" maxlength="255" show-word-limit placeholder="请输入航班号,用;分隔">
</el-input>
</el-form-item>
</el-form>
<div slot="footer">
<el-button type="primary" :loading="loading" @click="submit">确 定</el-button>
<el-button @click="close">取 消</el-button>
</div>
</el-dialog>
</div>
</template>
<script>
import { getpreAudit, addPreFlight, updatePreStatus } from '@/api/system/preReview.js'
export default {
name: "PreReviewFlight",
data() {
return {
pageOption: {
fltNo: undefined,
page: 1,
size: 20
},//查询条件
tableHeaders: [
{
columnChineseName: "航班号",
columnName: "fltNo",
columnWidth: "",
status: 1
},
{
columnChineseName: "预审状态",
columnName: "status",
columnWidth: "",
status: 1
},
],//表头
flightData: [],//表格数据
selectData: [],//选中数据
newPre: {
addFlitNo: '',
},//新增航班
rules: {
fltNo: [
{
required: true,
message: "航班号不能为空",
trigger: "blur",
}
]
},//表单规则
dialogVisible: false,
total: 0,
tableHeight: null,
loading: false,
tableLoading: false,
};
},
created() {
this.preQuery(1)
},
activated() {
if (this.flightData.length > 0) {
this.preQuery()
}
},
mounted() {
this.tableHeight = window.innerHeight - this.$refs.preReviewOptions.offsetHeight - 300
},
methods: {
//搜索
preQuery(val) {
this.tableLoading = true
this.selectData = []
if (val === 1) {
this.pageOption.page = 1
}
getpreAudit(this.pageOption).then(res => {
this.tableLoading = false
if (res.code === 200) {
this.flightData = res.data.list
this.total = res.data.total
} else {
this.msgWarning(res.msg)
}
}).catch(err => {
this.tableLoading = false
console.log(err)
})
},
//保存
submit() {
this.$refs["addForm"].validate(val => {
if (val) {
this.loading = true
let fltList = []
this.newPre.addFlitNo.split(';').forEach(item => {
if (item != '') {
fltList.push(item)
}
})
addPreFlight(fltList).then(res => {
this.loading = false
if (res.code === 200) {
this.msgSuccess('添加成功')
this.close()
this.preQuery(1)
} else {
this.msgWarning(res.msg)
}
}).catch(err => {
this.loading = false
console.log(err)
})
}
})
},
//预审状态修改
preOption(val) {
this.$confirm(val === 2 ? '是否要删除?' : val === 0 ? '是否要关闭预审' : '是否要开启预审', '系统提示', {
closeOnClickModal: false,
confirmButtonText: '确定',
cancelButtonText: "取消",
type: 'warning'
}).then(() => {
let idList = []
this.selectData.forEach(item => {
idList.push(item.id)
})
updatePreStatus({ ids: idList, status: val }).then(res => {
if (res.code === 200) {
this.msgSuccess(val === 2 ? '删除成功' : val === 0 ? '关闭成功' : '开启成功')
this.preQuery(1)
} else {
this.msgWarning(res.msg)
}
}).catch(err => {
console.log(err)
})
}).catch()
},
//关闭弹窗
close() {
this.dialogVisible = false
this.newPre.addFlitNo = ''
},
//翻页
currentChange(val) {
this.pageOption.page = val.page
},
//多选
tableSelection(val) {
this.selectData = val.selection
},
//全选
tableSelectAll(val) {
this.selectData = val
},
},
computed: {
queryfltNo: {
get: function () {
return this.pageOption.fltNo;
},
set: function (val) {
this.pageOption.fltNo = this.upCase(val);
},
},
fltNo: {
get: function () {
return this.newPre.addFlitNo;
},
set: function (val) {
let reg = /^([0-9A-Za-z]{0,50}(\;[0-9a-zA-Z]{0,50})*)$/
if (reg.test(val)) {
this.newPre.addFlitNo = this.upCase(val);
}
},
}
}
};
</script>
<style rel="stylesheet/scss" lang="scss">
</style>
......@@ -2,7 +2,8 @@
<div class="roleDrawer">
<el-drawer :title="drawerTitle" :visible.sync="drawer" direction="rtl" size="40%" destroy-on-close
:close-on-click-modal="false" :wrapperClosable="false" :show-close="false">
<el-form ref="roleForm" :model="roleForm" label-width="auto" :rules="rules" size="mini" style="margin: 10px">
<el-form ref="roleForm" :model="roleForm" label-width="auto" :rules="rules" size="mini" style="margin: 10px"
@submit.native.prevent>
<el-row :gutter="10">
<el-col :span="12">
<el-form-item label="角色名:" prop="name">
......@@ -14,7 +15,7 @@
<el-col :span="24">
<el-form-item label="角色描述:" prop="remark">
<el-input v-model="roleForm.remark" type="textarea" placeholder="请输入角色描述" :disabled="roleFormDisabled"
v-if="!roleFormDisabled" clearable></el-input>
v-if="!roleFormDisabled" clearable maxlength="255" show-word-limit></el-input>
<div v-else>{{ roleData.remark }}</div>
</el-form-item>
</el-col>
......
<template>
<div class="roleConfig">
<el-form ref="selectionRoleForm" label-width="auto" style="margin: 20px">
<el-form ref="selectionRoleForm" label-width="auto" style="margin: 20px" @submit.native.prevent>
<el-row :gutter="50">
<el-col :span="6">
<el-form-item label="角色名称">
......
......@@ -2,7 +2,8 @@
<div class="userDrawer">
<el-drawer :title="drawerTitle" :visible.sync="drawer" direction="rtl" size="40%" :close-on-click-modal="false"
:wrapperClosable="false" :show-close="false">
<el-form ref="userForm" :model="userForm" label-width="auto" :rules="rules" style="margin: 10px">
<el-form ref="userForm" :model="userForm" label-width="auto" :rules="rules" style="margin: 10px"
@submit.native.prevent>
<el-row :gutter="10">
<el-col :span="12">
<el-form-item label="员工号:" prop="loginName">
......@@ -63,6 +64,7 @@
style="width: 100%" multiple clearable>
<el-option v-for="item in portNameList" :label="item.englishName" :value="item.englishName"
:key="item.id">
<Tooltips :content="item.englishName" :refName="item.code"></Tooltips>
</el-option>
</el-select>
</el-form-item>
......@@ -70,14 +72,21 @@
<el-col :span="24">
<el-form-item label="所属角色:" prop="roleIds">
<el-checkbox-group v-model="roleid" :disabled="userFormDisabled" @change="change">
<el-checkbox v-for="item in roleList" :label="item.id" :key="item.id">{{ item.name }}</el-checkbox>
<el-row>
<el-col :span="4" v-for="item in roleList" :key="item.id">
<el-checkbox :label="item.id">
{{ item.name }}
<Tooltips :content="item.englishName" :refName="item.code"></Tooltips>
</el-checkbox>
</el-col>
</el-row>
</el-checkbox-group>
</el-form-item>
</el-col>
<el-col :span="24">
<el-form-item label="备注:" prop="remark">
<el-input type="textarea" v-model="userForm.remark" placeholder="备注" :disabled="userFormDisabled"
v-if="!userFormDisabled" size="small" clearable></el-input>
v-if="!userFormDisabled" size="small" clearable maxlength="255" show-word-limit></el-input>
<div v-else>{{ userForm.remark }}</div>
</el-form-item>
</el-col>
......
<template>
<div>
<el-form ref="selectionUserForm" label-width="auto" style="margin: 20px">
<el-form ref="selectionUserForm" label-width="auto" style="margin: 20px" @submit.native.prevent>
<el-row :gutter="50">
<el-col :span="6">
<el-form-item label="用户姓名">
......@@ -211,7 +211,7 @@ export default {
.catch((err) => {
console.log(err);
})
.catch(() => {});
.catch(() => { });
},
//删除用户
removeUser(row) {
......@@ -233,7 +233,7 @@ export default {
.catch((err) => {
console.log(err);
})
.catch(() => {});
.catch(() => { });
},
handleClose(val) {
this.drawer = val;
......
<template>
<div>
<el-form ref="dmLogForm" class="form-header" :model="selectForm" label-width="auto" size="small" :rules="rules">
<el-row type="flex" style="flex-wrap: wrap !important">
<el-col :span="6">
<el-form-item label="ACCS航班号">
<el-input v-model.trim="fltNo" class="formItem" placeholder="请输入航班号" clearable></el-input>
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="创建日期" prop="createTime">
<el-date-picker v-model="selectForm.createTime" class="formItem" type="date" placeholder="选择日期"
:value-format="valueFormat" :clearable="false">
</el-date-picker>
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="运单号">
<el-input v-model="selectForm.awbNbr" class="formItem" placeholder="请输入运单号" clearable></el-input>
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="配舱结果">
<el-select v-model="selectForm.status" class="formItem" placeholder="不限" clearable>
<el-option label="0-未处理" value="0"></el-option>
<el-option label="1-已处理" value="1"></el-option>
<el-option label="2-无需处理" value="2"></el-option>
<el-option label="3-处理失败" value="3"></el-option>
<el-option label="4-校验不通过" value="4"></el-option>
<el-option label="5-数据不能被多次处理" value="5"></el-option>
<el-option label="9-处理中" value="9"></el-option>
</el-select>
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="航班日期">
<el-date-picker v-model="selectForm.fltDate" class="formItem" type="date" placeholder="选择日期"
:value-format="valueFormat" clearable>
</el-date-picker>
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="口岸代码">
<el-select v-model="selectForm.portName" class="formItem" placeholder="不限" clearable>
<el-option v-for="item in portList" :label="item.englishName" :value="item.englishName" :key="item.id">
</el-option>
</el-select>
</el-form-item>
</el-col>
</el-row>
<div style="display: flex">
<el-button type="primary" size="small" icon="el-icon-search" :loading="loading"
:disabled="!selectForm.createTime" @click="selectDMData(0)">查询</el-button>
<!-- <div class="tags">
<div>状态说明:</div> -->
<!-- <el-tooltip
class="tagTip"
effect="dark"
content="123"
placement="top"
>
<el-tag size="medium">未处理</el-tag>
</el-tooltip> -->
<!-- <el-tooltip
class="tagTip"
effect="dark"
content="123"
placement="top"
>
<el-tag size="medium" type="success">已处理</el-tag>
</el-tooltip> -->
<!-- <el-tooltip class="tagTip" effect="dark" placement="top">
<div slot="content">
1.判断配舱类型失败<br />2.数据初始化失败<br />3.配舱失败
</div>
<el-tag size="medium" type="danger">处理失败</el-tag>
</el-tooltip>
<el-tooltip class="tagTip" effect="dark" placement="top">
<div slot="content">
1.货物状态为OSPR、配舱航班ID不为空、是手动配舱,不做处理<br />
2.ACCS发送时间早于货物上一次得ACCS发送时间
</div>
<el-tag size="medium" type="warning">无需处理</el-tag>
</el-tooltip>
<el-tooltip class="tagTip" effect="dark" content="缺少必填得数据或数据超长" placement="top">
<el-tag size="medium" type="warning">校验不通过</el-tag>
</el-tooltip>
<el-tooltip class="tagTip" effect="dark" content="同一条数据只能处理一次" placement="top">
<el-tag size="medium" type="warning">数据不能被多次处理</el-tag>
</el-tooltip> -->
<!-- <el-tooltip
class="tagTip"
effect="dark"
content="123"
placement="top"
>
<el-tag size="medium">处理中</el-tag>
</el-tooltip> -->
<!-- </div> -->
</div>
</el-form>
<Tables ref="dmLogTables" ductName="logDmData" :data="data" :headerData="tableHeader" :height="tableHeight"
:page="selectForm.page" :pageSizes="[100]" :totalCount="total" :loading="loading" @currentChange="currentChange"
@sortChange="sortChange">
<template v-slot:status="scope">
<el-tag :type="
scope.row.status == 1
? 'success'
: scope.row.status == 2
? 'warning'
: scope.row.status == 3
? 'danger'
: scope.row.status == 4
? 'warning'
: scope.row.status == 5
? 'warning'
: ''
"><span>{{ statusData(scope.row.status) }}</span></el-tag>
</template>
</Tables>
</div>
</template>
<script>
import dictLabels from "../../../assets/languages/dictLabels.js";
import { portNameList } from "@/api/system/user.js";
import { getDmDataList } from "@/api/system/logConfig.js";
import { upCase } from "@/utils/FedEx";
export default {
name: "DmLog",
data() {
return {
selectForm: {
fltNo: undefined,
createTime: undefined,
page: 1,
size: 100,
},
data: [],
tableHeader: [
{
name: "配舱结果",
value: "status",
width: "120",
align: "center",
sorTable: true,
fixed: false,
disabled: true,
slot: true,
},
{
name: "处理结果",
value: "processResult",
width: "100",
align: "center",
sorTable: true,
fixed: false,
disabled: true,
},
{
name: "异常代码",
value: "exceptionCode",
width: "100",
align: "center",
sorTable: true,
fixed: false,
disabled: true,
},
{
name: "运单ID",
value: "accsId",
width: "100",
align: "center",
sorTable: true,
fixed: false,
disabled: true,
},
{
name: "运单号",
value: "awbNbr",
width: "100",
align: "center",
sorTable: true,
fixed: false,
disabled: true,
},
{
name: "口岸代码",
value: "routeDest",
width: "100",
align: "center",
sorTable: true,
fixed: false,
disabled: true,
},
{
name: "ACCS航班号",
value: "flightNbr",
width: "130",
align: "center",
sorTable: true,
fixed: false,
disabled: true,
},
{
name: "ACCS航班日期",
value: "flightDate",
width: "140",
align: "center",
sorTable: true,
fixed: false,
disabled: true,
},
{
name: "ACCS航线",
value: "flightRoute",
width: "120",
align: "center",
sorTable: true,
fixed: false,
disabled: true,
},
{
name: "ACCS Pool",
value: "accsPool",
width: "120",
align: "center",
sorTable: true,
fixed: false,
disabled: true,
},
{
name: "消息代码",
value: "messageCode",
width: "120",
align: "center",
sorTable: true,
fixed: false,
disabled: true,
},
{
name: "消息发送时间",
value: "sendTime",
width: "140",
align: "center",
sorTable: true,
fixed: false,
disabled: true,
},
{
name: "消息落地时间",
value: "createTime",
width: "140",
align: "center",
sorTable: true,
fixed: false,
disabled: true,
},
{
name: "总单号",
value: "mawb",
width: "100",
align: "center",
sorTable: true,
fixed: false,
disabled: true,
},
{
name: "运单类型",
value: "classification",
width: "100",
align: "center",
sorTable: true,
fixed: false,
disabled: true,
},
{
name: "报关方式",
value: "portName",
width: "100",
align: "center",
sorTable: true,
fixed: false,
disabled: true,
},
{
name: "总件数",
value: "totalPcs",
width: "100",
align: "center",
sorTable: true,
fixed: false,
disabled: true,
},
{
name: "总重量",
value: "weight",
width: "100",
align: "center",
sorTable: true,
fixed: false,
disabled: true,
},
{
name: "取件日期",
value: "pickUpDate",
width: "100",
align: "center",
sorTable: true,
fixed: false,
disabled: true,
},
{
name: "URSA",
value: "ursa",
width: "100",
align: "center",
sorTable: true,
fixed: false,
disabled: true,
},
{
name: "海关回执代码",
value: "ent",
width: "130",
align: "center",
sorTable: true,
fixed: false,
disabled: true,
},
{
name: "Handing Code",
value: "handlingCode",
width: "140",
align: "center",
sorTable: true,
fixed: false,
disabled: true,
},
{
name: "subCategory",
value: "subCategory",
width: "140",
align: "center",
sorTable: true,
fixed: false,
disabled: true,
},
{
name: "intercept Code",
value: "interceptCode",
width: "140",
align: "center",
sorTable: true,
fixed: false,
disabled: true,
},
{
name: "ACCS发送时间",
value: "accsSendTime",
width: "140",
align: "center",
sorTable: true,
fixed: false,
disabled: true,
},
{
name: "品名描述",
value: "description",
width: "100",
align: "center",
sorTable: true,
fixed: false,
disabled: true,
},
{
name: "PUPOrPUX",
value: "pupOrPux",
width: "120",
align: "center",
sorTable: true,
fixed: false,
disabled: true,
},
{
name: "始发地站点",
value: "originLocationCode",
width: "120",
align: "center",
sorTable: false,
fixed: false,
disabled: true,
},
{
name: "始发地城市名称",
value: "originCity",
width: "140",
align: "center",
sorTable: false,
fixed: false,
disabled: true,
},
{
name: "收件人国家代码",
value: "consigneeCountry",
width: "140",
align: "center",
sorTable: false,
fixed: false,
disabled: true,
},
{
name: "服务类型名称",
value: "serviceCode",
width: "130",
align: "center",
sorTable: true,
fixed: false,
disabled: true,
},
{
name: "货物ID",
value: "portName",
width: "100",
align: "center",
sorTable: true,
fixed: false,
disabled: true,
},
{
name: "是否RDE手动录入",
value: "manualRde",
width: "160",
align: "center",
sorTable: false,
fixed: false,
disabled: true,
},
{
name: "发件人账号",
value: "shipperAccount",
width: "120",
align: "center",
sorTable: false,
fixed: false,
disabled: true,
},
{
name: "发件公司中文名称",
value: "shipperCompany",
width: "150",
align: "center",
sorTable: true,
fixed: false,
disabled: true,
},
{
name: "修改时间",
value: "updateTime",
width: "100",
align: "center",
sorTable: true,
fixed: false,
disabled: true,
},
{
name: "消息发送程序ID",
value: "senderId",
width: "140",
align: "center",
sorTable: false,
fixed: false,
disabled: true,
},
{
name: "消息接收程序ID",
value: "receiverId",
width: "140",
align: "center",
sorTable: false,
fixed: false,
disabled: true,
},
],
portList: [],
rules: {
createTime: [
{
required: true,
message: "创建日期不能为空",
trigger: "blur",
},
],
},
total: 0,
tableHeight: null,
loading: false,
valueFormat: "yyyy-MM-dd",
};
},
created() {
this.nowDate();
portNameList().then((res) => {
if (res.code === 200) {
this.portList = res.data;
} else {
this.msgWarning("查询条件" + res.msg)
}
});
if (this.$store.state.tagsView.cachedViews.length == 0) {
this.selectDMData();
}
},
activated() {
this.selectDMData();
},
deactivated() {
this.data = [];
},
mounted() {
this.tableHeight =
window.innerHeight - this.$refs.dmLogForm.$el.offsetHeight - 150;
},
methods: {
//当前日期格式化
nowDate() {
let date = new Date();
this.selectForm.createTime = `${date.getFullYear()}-${(date.getMonth() + 1) > 9
? date.getMonth() + 1
: "0" + (date.getMonth() + 1)
}-${date.getDate() > 9 ? date.getDate() : '0' + date.getDate()
}`;
},
//数据查询
selectDMData(val) {
this.data = [];
this.loading = true;
if (val === 0) {
this.selectForm.page = 1;
}
if (this.selectForm.createTime) {
getDmDataList(this.selectForm).then((res) => {
this.loading = false;
if (res.code === 200) {
if (res.data.total === 0) {
this.msgWarning('未查询到数据')
} else {
this.data = res.data.list;
this.total = res.data.total;
}
} else {
this.msgWarning(res.msg)
}
});
} else {
this.loading = false;
this.msgWarning('创建日期不能为空')
}
},
//分页
currentChange(val) {
this.selectForm.page = val.page;
this.selectDMData();
},
//数据处理
statusData(val) {
if (dictLabels["logDmData"]["status"][val]) {
return dictLabels["logDmData"]["status"][val];
} else {
return val;
}
},
//排序
sortChange(val) {
let data = [];
let nullData = [];
this.data.forEach((item) => {
if (item[val.prop]) {
data.push(item);
} else {
nullData.push(item);
}
});
data = data.sort(this.$refs.dmLogTables.compare(val.prop, val.order));
if (val.order != "ascending") {
this.data = nullData.concat(data);
} else {
this.data = data.concat(nullData);
}
this.data.forEach((item, index = 0) => {
item.index = index;
});
},
},
computed: {
fltNo: {
get: function () {
return this.selectForm.fltNo;
},
set: function (val) {
this.selectForm.fltNo = upCase(val);
},
},
},
};
</script>
<style scoped>
.tags {
display: flex;
margin: 0 20px 0 auto;
color: black;
line-height: 32px;
}
.tagTip {
margin: 0 5px;
}
</style>
\ No newline at end of file